From a158b39c98b466aa8ed61de815b97081c5d864d4 Mon Sep 17 00:00:00 2001 From: Vikram Dixit K Date: Thu, 25 Sep 2014 02:14:15 +0000 Subject: [PATCH 001/339] Creation of branch 0.14 git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627445 13f79535-47bb-0310-9956-ffa450edef68 From 24442eb108d58cc334d6e05fcbc9bb693d6a4830 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Thu, 25 Sep 2014 16:53:55 +0000 Subject: [PATCH 002/339] HIVE-8201 Remove hardwiring to HiveInputFormat in acid qfile tests (Alan Gates, reviewed by Owen O'Malley) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627572 13f79535-47bb-0310-9956-ffa450edef68 --- ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java | 2 ++ .../java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java | 2 +- .../java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 1 + ql/src/test/queries/clientnegative/acid_overwrite.q | 1 - .../queries/clientnegative/authorization_delete_nodeletepriv.q | 1 - .../queries/clientnegative/authorization_update_noupdatepriv.q | 1 - ql/src/test/queries/clientnegative/update_no_such_table.q | 1 - ql/src/test/queries/clientnegative/update_partition_col.q | 1 - ql/src/test/queries/clientpositive/acid_vectorization.q | 1 - ql/src/test/queries/clientpositive/authorization_delete.q | 1 - .../queries/clientpositive/authorization_delete_own_table.q | 1 - ql/src/test/queries/clientpositive/authorization_update.q | 1 - .../queries/clientpositive/authorization_update_own_table.q | 1 - ql/src/test/queries/clientpositive/delete_all_non_partitioned.q | 1 - ql/src/test/queries/clientpositive/delete_all_partitioned.q | 1 - ql/src/test/queries/clientpositive/delete_orig_table.q | 1 - ql/src/test/queries/clientpositive/delete_tmp_table.q | 1 - ql/src/test/queries/clientpositive/delete_where_no_match.q | 1 - .../test/queries/clientpositive/delete_where_non_partitioned.q | 1 - ql/src/test/queries/clientpositive/delete_where_partitioned.q | 1 - ql/src/test/queries/clientpositive/delete_whole_partition.q | 1 - ql/src/test/queries/clientpositive/insert_orig_table.q | 1 - ql/src/test/queries/clientpositive/insert_update_delete.q | 1 - .../queries/clientpositive/insert_values_dynamic_partitioned.q | 1 - .../test/queries/clientpositive/insert_values_non_partitioned.q | 1 - ql/src/test/queries/clientpositive/insert_values_orig_table.q | 1 - ql/src/test/queries/clientpositive/insert_values_partitioned.q | 1 - ql/src/test/queries/clientpositive/insert_values_tmp_table.q | 1 - .../test/queries/clientpositive/update_after_multiple_inserts.q | 1 - ql/src/test/queries/clientpositive/update_all_non_partitioned.q | 1 - ql/src/test/queries/clientpositive/update_all_partitioned.q | 1 - ql/src/test/queries/clientpositive/update_all_types.q | 1 - ql/src/test/queries/clientpositive/update_orig_table.q | 1 - ql/src/test/queries/clientpositive/update_tmp_table.q | 1 - ql/src/test/queries/clientpositive/update_two_cols.q | 1 - ql/src/test/queries/clientpositive/update_where_no_match.q | 1 - .../test/queries/clientpositive/update_where_non_partitioned.q | 1 - ql/src/test/queries/clientpositive/update_where_partitioned.q | 1 - 38 files changed, 4 insertions(+), 36 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java index 65a795c340a0..928fd61afc24 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java @@ -40,6 +40,8 @@ * are used by the compactor and cleaner and thus must be format agnostic. */ public class AcidUtils { + // This key will be put in the conf file when planning an acid operation + public static final String CONF_ACID_KEY = "hive.doing.acid"; public static final String BASE_PREFIX = "base_"; public static final String DELTA_PREFIX = "delta_"; public static final PathFilter deltaFileFilter = new PathFilter() { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java index 0310fdf9f187..90077717de5e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java @@ -132,7 +132,7 @@ public class OrcInputFormat implements InputFormat, @Override public boolean shouldSkipCombine(Path path, Configuration conf) throws IOException { - return AcidUtils.isAcid(path, conf); + return (conf.get(AcidUtils.CONF_ACID_KEY) != null) || AcidUtils.isAcid(path, conf); } private static class OrcRecordReader diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index c4dacf9651bc..eac0cc60fed4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -6374,6 +6374,7 @@ private void checkAcidConstraints(QB qb, TableDesc tableDesc) throws SemanticExc LOG.info("Modifying config values for ACID write"); conf.setBoolVar(ConfVars.HIVEOPTREDUCEDEDUPLICATION, false); conf.setBoolVar(ConfVars.HIVE_HADOOP_SUPPORTS_SUBDIRECTORIES, true); + conf.set(AcidUtils.CONF_ACID_KEY, "true"); } /** diff --git a/ql/src/test/queries/clientnegative/acid_overwrite.q b/ql/src/test/queries/clientnegative/acid_overwrite.q index 9f6c1f846dee..5515fc41f17b 100644 --- a/ql/src/test/queries/clientnegative/acid_overwrite.q +++ b/ql/src/test/queries/clientnegative/acid_overwrite.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientnegative/authorization_delete_nodeletepriv.q b/ql/src/test/queries/clientnegative/authorization_delete_nodeletepriv.q index 090495a75d62..31a3297e04e1 100644 --- a/ql/src/test/queries/clientnegative/authorization_delete_nodeletepriv.q +++ b/ql/src/test/queries/clientnegative/authorization_delete_nodeletepriv.q @@ -5,7 +5,6 @@ set hive.security.authorization.enabled=true; set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; diff --git a/ql/src/test/queries/clientnegative/authorization_update_noupdatepriv.q b/ql/src/test/queries/clientnegative/authorization_update_noupdatepriv.q index 922beba510ff..5310dbe93060 100644 --- a/ql/src/test/queries/clientnegative/authorization_update_noupdatepriv.q +++ b/ql/src/test/queries/clientnegative/authorization_update_noupdatepriv.q @@ -5,7 +5,6 @@ set hive.security.authorization.enabled=true; set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; diff --git a/ql/src/test/queries/clientnegative/update_no_such_table.q b/ql/src/test/queries/clientnegative/update_no_such_table.q index 522c46da4258..07239cf9ba73 100644 --- a/ql/src/test/queries/clientnegative/update_no_such_table.q +++ b/ql/src/test/queries/clientnegative/update_no_such_table.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; diff --git a/ql/src/test/queries/clientnegative/update_partition_col.q b/ql/src/test/queries/clientnegative/update_partition_col.q index 918d312d7366..929cc5930dff 100644 --- a/ql/src/test/queries/clientnegative/update_partition_col.q +++ b/ql/src/test/queries/clientnegative/update_partition_col.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table foo(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/acid_vectorization.q b/ql/src/test/queries/clientpositive/acid_vectorization.q index 804144aec877..a1bf9719f506 100644 --- a/ql/src/test/queries/clientpositive/acid_vectorization.q +++ b/ql/src/test/queries/clientpositive/acid_vectorization.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; set hive.exec.dynamic.partition.mode=nonstrict; set hive.vectorized.execution.enabled=true; diff --git a/ql/src/test/queries/clientpositive/authorization_delete.q b/ql/src/test/queries/clientpositive/authorization_delete.q index ebd03153273e..973fb8e42d24 100644 --- a/ql/src/test/queries/clientpositive/authorization_delete.q +++ b/ql/src/test/queries/clientpositive/authorization_delete.q @@ -4,7 +4,6 @@ set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.Sessi set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; set user.name=user1; diff --git a/ql/src/test/queries/clientpositive/authorization_delete_own_table.q b/ql/src/test/queries/clientpositive/authorization_delete_own_table.q index 19dbbeb92e73..8b4c89e9a9cb 100644 --- a/ql/src/test/queries/clientpositive/authorization_delete_own_table.q +++ b/ql/src/test/queries/clientpositive/authorization_delete_own_table.q @@ -5,7 +5,6 @@ set hive.security.authorization.enabled=true; set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; diff --git a/ql/src/test/queries/clientpositive/authorization_update.q b/ql/src/test/queries/clientpositive/authorization_update.q index 18ceadbed3aa..fd9f67040983 100644 --- a/ql/src/test/queries/clientpositive/authorization_update.q +++ b/ql/src/test/queries/clientpositive/authorization_update.q @@ -4,7 +4,6 @@ set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.Sessi set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; set user.name=user1; diff --git a/ql/src/test/queries/clientpositive/authorization_update_own_table.q b/ql/src/test/queries/clientpositive/authorization_update_own_table.q index 46beb497fee3..489117b8dda6 100644 --- a/ql/src/test/queries/clientpositive/authorization_update_own_table.q +++ b/ql/src/test/queries/clientpositive/authorization_update_own_table.q @@ -5,7 +5,6 @@ set hive.security.authorization.enabled=true; set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; diff --git a/ql/src/test/queries/clientpositive/delete_all_non_partitioned.q b/ql/src/test/queries/clientpositive/delete_all_non_partitioned.q index 80a59912561d..f15391b5ab00 100644 --- a/ql/src/test/queries/clientpositive/delete_all_non_partitioned.q +++ b/ql/src/test/queries/clientpositive/delete_all_non_partitioned.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/delete_all_partitioned.q b/ql/src/test/queries/clientpositive/delete_all_partitioned.q index b848319b9d2d..9ae6a54cb8bb 100644 --- a/ql/src/test/queries/clientpositive/delete_all_partitioned.q +++ b/ql/src/test/queries/clientpositive/delete_all_partitioned.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/delete_orig_table.q b/ql/src/test/queries/clientpositive/delete_orig_table.q index e1759f69e9b5..d859eaeaccc4 100644 --- a/ql/src/test/queries/clientpositive/delete_orig_table.q +++ b/ql/src/test/queries/clientpositive/delete_orig_table.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/delete_orig_table; diff --git a/ql/src/test/queries/clientpositive/delete_tmp_table.q b/ql/src/test/queries/clientpositive/delete_tmp_table.q index 5563b3cb2eb2..6f5a73d1f81b 100644 --- a/ql/src/test/queries/clientpositive/delete_tmp_table.q +++ b/ql/src/test/queries/clientpositive/delete_tmp_table.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/delete_where_no_match.q b/ql/src/test/queries/clientpositive/delete_where_no_match.q index 8ebff457ad87..16a383903df7 100644 --- a/ql/src/test/queries/clientpositive/delete_where_no_match.q +++ b/ql/src/test/queries/clientpositive/delete_where_no_match.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/delete_where_non_partitioned.q b/ql/src/test/queries/clientpositive/delete_where_non_partitioned.q index b37ec80bf5cc..b703768822e4 100644 --- a/ql/src/test/queries/clientpositive/delete_where_non_partitioned.q +++ b/ql/src/test/queries/clientpositive/delete_where_non_partitioned.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/delete_where_partitioned.q b/ql/src/test/queries/clientpositive/delete_where_partitioned.q index cce89f4d514d..5959c3c9f41c 100644 --- a/ql/src/test/queries/clientpositive/delete_where_partitioned.q +++ b/ql/src/test/queries/clientpositive/delete_where_partitioned.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/delete_whole_partition.q b/ql/src/test/queries/clientpositive/delete_whole_partition.q index 2cb3e7472a42..14440903a720 100644 --- a/ql/src/test/queries/clientpositive/delete_whole_partition.q +++ b/ql/src/test/queries/clientpositive/delete_whole_partition.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/insert_orig_table.q b/ql/src/test/queries/clientpositive/insert_orig_table.q index 2c6df881b375..e1114d511599 100644 --- a/ql/src/test/queries/clientpositive/insert_orig_table.q +++ b/ql/src/test/queries/clientpositive/insert_orig_table.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_iot( diff --git a/ql/src/test/queries/clientpositive/insert_update_delete.q b/ql/src/test/queries/clientpositive/insert_update_delete.q index 34350df4c2e4..a3ef18137abb 100644 --- a/ql/src/test/queries/clientpositive/insert_update_delete.q +++ b/ql/src/test/queries/clientpositive/insert_update_delete.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/insert_values_dynamic_partitioned.q b/ql/src/test/queries/clientpositive/insert_values_dynamic_partitioned.q index bde2e71199bf..bea67a480a3c 100644 --- a/ql/src/test/queries/clientpositive/insert_values_dynamic_partitioned.q +++ b/ql/src/test/queries/clientpositive/insert_values_dynamic_partitioned.q @@ -1,7 +1,6 @@ set hive.exec.dynamic.partition.mode=nonstrict; set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table ivdp(i int, diff --git a/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q b/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q index 9d57f23a7024..f69100c939d0 100644 --- a/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q +++ b/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_ivnp(ti tinyint, diff --git a/ql/src/test/queries/clientpositive/insert_values_orig_table.q b/ql/src/test/queries/clientpositive/insert_values_orig_table.q index d3d68d28b8ec..703ed817a52d 100644 --- a/ql/src/test/queries/clientpositive/insert_values_orig_table.q +++ b/ql/src/test/queries/clientpositive/insert_values_orig_table.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_ivot( diff --git a/ql/src/test/queries/clientpositive/insert_values_partitioned.q b/ql/src/test/queries/clientpositive/insert_values_partitioned.q index 23d6d4c0abb5..70bd03b88814 100644 --- a/ql/src/test/queries/clientpositive/insert_values_partitioned.q +++ b/ql/src/test/queries/clientpositive/insert_values_partitioned.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_ivp(ti tinyint, diff --git a/ql/src/test/queries/clientpositive/insert_values_tmp_table.q b/ql/src/test/queries/clientpositive/insert_values_tmp_table.q index 1e5943fe0a6b..a7afa739df72 100644 --- a/ql/src/test/queries/clientpositive/insert_values_tmp_table.q +++ b/ql/src/test/queries/clientpositive/insert_values_tmp_table.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/update_after_multiple_inserts.q b/ql/src/test/queries/clientpositive/update_after_multiple_inserts.q index 04d2df56f6a8..b440cf33f2bc 100644 --- a/ql/src/test/queries/clientpositive/update_after_multiple_inserts.q +++ b/ql/src/test/queries/clientpositive/update_after_multiple_inserts.q @@ -1,7 +1,6 @@ set hive.exec.dynamic.partition.mode=nonstrict; set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_uami(i int, diff --git a/ql/src/test/queries/clientpositive/update_all_non_partitioned.q b/ql/src/test/queries/clientpositive/update_all_non_partitioned.q index 67d6ba90c228..7c427df4efdf 100644 --- a/ql/src/test/queries/clientpositive/update_all_non_partitioned.q +++ b/ql/src/test/queries/clientpositive/update_all_non_partitioned.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/update_all_partitioned.q b/ql/src/test/queries/clientpositive/update_all_partitioned.q index 0b6c767da89b..80d40c137408 100644 --- a/ql/src/test/queries/clientpositive/update_all_partitioned.q +++ b/ql/src/test/queries/clientpositive/update_all_partitioned.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/update_all_types.q b/ql/src/test/queries/clientpositive/update_all_types.q index 7f935a907bbf..8ed74f06121e 100644 --- a/ql/src/test/queries/clientpositive/update_all_types.q +++ b/ql/src/test/queries/clientpositive/update_all_types.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_uat(ti tinyint, diff --git a/ql/src/test/queries/clientpositive/update_orig_table.q b/ql/src/test/queries/clientpositive/update_orig_table.q index f09ad32d3436..61622d9645d9 100644 --- a/ql/src/test/queries/clientpositive/update_orig_table.q +++ b/ql/src/test/queries/clientpositive/update_orig_table.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/update_orig_table; diff --git a/ql/src/test/queries/clientpositive/update_tmp_table.q b/ql/src/test/queries/clientpositive/update_tmp_table.q index c863cd66bf66..5fbad2cf4b87 100644 --- a/ql/src/test/queries/clientpositive/update_tmp_table.q +++ b/ql/src/test/queries/clientpositive/update_tmp_table.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/update_two_cols.q b/ql/src/test/queries/clientpositive/update_two_cols.q index 3233d2f92c64..716df7dc5965 100644 --- a/ql/src/test/queries/clientpositive/update_two_cols.q +++ b/ql/src/test/queries/clientpositive/update_two_cols.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/update_where_no_match.q b/ql/src/test/queries/clientpositive/update_where_no_match.q index 00583c3a2457..d3252de1d319 100644 --- a/ql/src/test/queries/clientpositive/update_where_no_match.q +++ b/ql/src/test/queries/clientpositive/update_where_no_match.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/update_where_non_partitioned.q b/ql/src/test/queries/clientpositive/update_where_non_partitioned.q index 378cf9401b7f..e52d9e818dc2 100644 --- a/ql/src/test/queries/clientpositive/update_where_non_partitioned.q +++ b/ql/src/test/queries/clientpositive/update_where_non_partitioned.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; diff --git a/ql/src/test/queries/clientpositive/update_where_partitioned.q b/ql/src/test/queries/clientpositive/update_where_partitioned.q index c5b6d0450907..d84da5b85ea4 100644 --- a/ql/src/test/queries/clientpositive/update_where_partitioned.q +++ b/ql/src/test/queries/clientpositive/update_where_partitioned.q @@ -1,6 +1,5 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.enforce.bucketing=true; create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; From abb845210a778beed6586f0005f28e10ca4ec4f3 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 25 Sep 2014 19:58:35 +0000 Subject: [PATCH 003/339] HIVE-8082: generateErrorMessage doesn't handle null ast properly (Rahul Palamuttam via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627632 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index eac0cc60fed4..f174cc621f8a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -642,6 +642,10 @@ private List doPhase1GetDistinctFuncExprs( public static String generateErrorMessage(ASTNode ast, String message) { StringBuilder sb = new StringBuilder(); + if (ast == null) { + sb.append("The abstract syntax tree is null"); + return sb.toString(); + } sb.append(ast.getLine()); sb.append(":"); sb.append(ast.getCharPositionInLine()); From db28a1ef881b8b57abb9f0af387c8e4a1651c872 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 25 Sep 2014 19:59:02 +0000 Subject: [PATCH 004/339] HIVE-8188: ExprNodeGenericFuncEvaluator::_evaluate() loads class annotations in a tight loop (Gopal V via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627633 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/ExprNodeGenericFuncEvaluator.java | 13 ++++++----- .../hadoop/hive/ql/exec/GroupByOperator.java | 22 +++++++++++++------ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeGenericFuncEvaluator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeGenericFuncEvaluator.java index bb5f4f3ae444..97ee9760ac76 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeGenericFuncEvaluator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeGenericFuncEvaluator.java @@ -45,6 +45,7 @@ public class ExprNodeGenericFuncEvaluator extends ExprNodeEvaluator implements private static final Log LOG = LogFactory.getLog(GroupByOperator.class .getName()); + private static final boolean isTraceEnabled = LOG.isTraceEnabled(); private static final long serialVersionUID = 1L; private static final int NUMROWSESTIMATESIZE = 1000; @@ -101,6 +102,7 @@ public class GroupByOperator extends Operator implements transient ExprNodeEvaluator unionExprEval = null; transient GenericUDAFEvaluator[] aggregationEvaluators; + transient boolean[] estimableAggregationEvaluators; protected transient ArrayList objectInspectors; transient ArrayList fieldNames; @@ -557,11 +559,13 @@ private void estimateRowSize() throws HiveException { // Go over all the aggregation classes and and get the size of the fields of // fixed length. Keep track of the variable length // fields in these aggregation classes. + estimableAggregationEvaluators = new boolean[aggregationEvaluators.length]; for (int i = 0; i < aggregationEvaluators.length; i++) { fixedRowSize += javaObjectOverHead; AggregationBuffer agg = aggregationEvaluators[i].getNewAggregationBuffer(); if (GenericUDAFEvaluator.isEstimable(agg)) { + estimableAggregationEvaluators[i] = true; continue; } Field[] fArr = ObjectInspectorUtils.getDeclaredNonStaticFields(agg.getClass()); @@ -765,10 +769,12 @@ public void processOp(Object row, int tag) throws HiveException { flushHashTable(true); hashAggr = false; } else { - LOG.trace("Hash Aggr Enabled: #hash table = " + numRowsHashTbl - + " #total = " + numRowsInput + " reduction = " + 1.0 - * (numRowsHashTbl / numRowsInput) + " minReduction = " - + minReductionHashAggr); + if (isTraceEnabled) { + LOG.trace("Hash Aggr Enabled: #hash table = " + numRowsHashTbl + + " #total = " + numRowsInput + " reduction = " + 1.0 + * (numRowsHashTbl / numRowsInput) + " minReduction = " + + minReductionHashAggr); + } } } } @@ -952,7 +958,7 @@ private boolean shouldBeFlushed(KeyWrapper newKeys) { AggregationBuffer[] aggs = hashAggregations.get(newKeys); for (int i = 0; i < aggs.length; i++) { AggregationBuffer agg = aggs[i]; - if (GenericUDAFEvaluator.isEstimable(agg)) { + if (estimableAggregationEvaluators[i]) { totalVariableSize += ((GenericUDAFEvaluator.AbstractAggregationBuffer)agg).estimate(); continue; } @@ -966,8 +972,10 @@ private boolean shouldBeFlushed(KeyWrapper newKeys) { // Update the number of entries that can fit in the hash table numEntriesHashTable = (int) (maxHashTblMemory / (fixedRowSize + (totalVariableSize / numEntriesVarSize))); - LOG.trace("Hash Aggr: #hash table = " + numEntries - + " #max in hash table = " + numEntriesHashTable); + if (isTraceEnabled) { + LOG.trace("Hash Aggr: #hash table = " + numEntries + + " #max in hash table = " + numEntriesHashTable); + } } // flush if necessary From 401ee7adb08e4e143ce1e1fadd05919189b0e8d5 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 25 Sep 2014 20:09:23 +0000 Subject: [PATCH 005/339] HIVE-8178: OrcNewInputFormat::getSplits() calls OrcInputFormat.generateSplitsInfo twice (Gopal V via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627638 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/io/orc/OrcNewInputFormat.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcNewInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcNewInputFormat.java index ab3164edb737..b6ad0dceae4a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcNewInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcNewInputFormat.java @@ -118,13 +118,11 @@ public boolean nextKeyValue() throws IOException, InterruptedException { public List getSplits(JobContext jobContext) throws IOException, InterruptedException { perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.ORC_GET_SPLITS); - Configuration conf = - ShimLoader.getHadoopShims().getConfiguration(jobContext); List splits = OrcInputFormat.generateSplitsInfo(ShimLoader.getHadoopShims() .getConfiguration(jobContext)); - List result = new ArrayList(); - for(OrcSplit split: OrcInputFormat.generateSplitsInfo(conf)) { + List result = new ArrayList(splits.size()); + for(OrcSplit split: splits) { result.add(new OrcNewSplit(split)); } perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.ORC_GET_SPLITS); From aba7120434df0254b0e39ae8c0b39901a79f5abf Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Thu, 25 Sep 2014 23:31:39 +0000 Subject: [PATCH 006/339] HIVE-7107 : Fix HiveServer1 JDBC Driver spec compliancy issue (Lars Francke via Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627681 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java | 6 ++++++ jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveDriver.java | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java index fa8c43b4e4ac..1bd6f2a6b69e 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java @@ -1115,6 +1115,12 @@ public void testDriverProperties() throws SQLException { } + public void testInvalidUrl() throws SQLException { + HiveDriver driver = new HiveDriver(); + + assertNull(driver.connect("jdbc:hive2://localhost:1000", null)); + } + private static void assertDpi(DriverPropertyInfo dpi, String name, String value) { assertEquals("Invalid DriverPropertyInfo name", name, dpi.name); diff --git a/jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveDriver.java b/jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveDriver.java index 68c07887581c..68f1d1503317 100644 --- a/jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveDriver.java +++ b/jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveDriver.java @@ -102,8 +102,9 @@ public boolean acceptsURL(String url) throws SQLException { return Pattern.matches(URL_PREFIX + ".*", url); } + @Override public Connection connect(String url, Properties info) throws SQLException { - return new HiveConnection(url, info); + return acceptsURL(url) ? new HiveConnection(url, info) : null; } /** From cde2aa7cf4d2acd925f882f289f61950d0b23253 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 26 Sep 2014 01:45:47 +0000 Subject: [PATCH 007/339] HIVE-8259: Queries in tez fail with exception (Vikram Dixit K via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627694 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/exec/tez/TezProcessor.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezProcessor.java index 91c15edf7190..42c7d37aaab4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezProcessor.java @@ -148,6 +148,16 @@ protected void initializeAndRunProcessor(Map inputs, Throwable originalThrowable = null; try { // Outputs will be started later by the individual Processors. + TezCacheAccess cacheAccess = TezCacheAccess.createInstance(jobConf); + // Start the actual Inputs. After MRInput initialization. + for (Map.Entry inputEntry : inputs.entrySet()) { + if (!cacheAccess.isInputCached(inputEntry.getKey())) { + LOG.info("Input: " + inputEntry.getKey() + " is not cached"); + inputEntry.getValue().start(); + } else { + LOG.info("Input: " + inputEntry.getKey() + " is already cached. Skipping start"); + } + } MRTaskReporter mrReporter = new MRTaskReporter(getContext()); rproc.init(jobConf, getContext(), mrReporter, inputs, outputs); From 6139d6b6d3ae76266efe8b594d7ef1d38b8140d0 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Fri, 26 Sep 2014 19:20:12 +0000 Subject: [PATCH 008/339] HIVE-7615 : Beeline should have an option for user to see the query progress (Dong Chen via Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627865 13f79535-47bb-0310-9956-ffa450edef68 --- beeline/pom.xml | 11 +- .../org/apache/hive/beeline/Commands.java | 82 ++++++++++- .../hive/beeline/TestBeeLineWithArgs.java | 27 ++++ .../org/apache/hive/jdbc/TestJdbcDriver2.java | 78 ++++++++++ .../ClosedOrCancelledStatementException.java | 29 ++++ .../apache/hive/jdbc/HiveQueryResultSet.java | 33 ++++- .../org/apache/hive/jdbc/HiveStatement.java | 139 +++++++++++++++++- 7 files changed, 389 insertions(+), 10 deletions(-) create mode 100644 jdbc/src/java/org/apache/hive/jdbc/ClosedOrCancelledStatementException.java diff --git a/beeline/pom.xml b/beeline/pom.xml index 45fa02b514d0..9a1c5dc28d23 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -49,6 +49,11 @@ hive-shims ${project.version} + + org.apache.hive + hive-jdbc + ${project.version} + commons-cli @@ -86,12 +91,6 @@ ${super-csv.version} - - org.apache.hive - hive-jdbc - ${project.version} - test - org.apache.hive hive-exec diff --git a/beeline/src/java/org/apache/hive/beeline/Commands.java b/beeline/src/java/org/apache/hive/beeline/Commands.java index a92d69fdfdc7..1854fc7cb5b8 100644 --- a/beeline/src/java/org/apache/hive/beeline/Commands.java +++ b/beeline/src/java/org/apache/hive/beeline/Commands.java @@ -38,6 +38,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.sql.SQLWarning; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; @@ -47,10 +48,13 @@ import java.util.TreeSet; import org.apache.hadoop.hive.common.cli.ShellCmdExecutor; +import org.apache.hive.jdbc.HiveStatement; public class Commands { private final BeeLine beeLine; + private static final int DEFAULT_QUERY_PROGRESS_INTERVAL = 1000; + private static final int DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT = 10 * 1000; /** * @param beeLine @@ -758,6 +762,7 @@ private boolean execute(String line, boolean call) { try { Statement stmnt = null; boolean hasResults; + Thread logThread = null; try { long start = System.currentTimeMillis(); @@ -767,7 +772,15 @@ private boolean execute(String line, boolean call) { hasResults = ((CallableStatement) stmnt).execute(); } else { stmnt = beeLine.createStatement(); - hasResults = stmnt.execute(sql); + if (beeLine.getOpts().isSilent()) { + hasResults = stmnt.execute(sql); + } else { + logThread = new Thread(createLogRunnable(stmnt)); + logThread.setDaemon(true); + logThread.start(); + hasResults = stmnt.execute(sql); + logThread.interrupt(); + } } beeLine.showWarnings(); @@ -782,6 +795,11 @@ private boolean execute(String line, boolean call) { beeLine.info(beeLine.loc("rows-selected", count) + " " + beeLine.locElapsedTime(end - start)); } finally { + if (logThread != null) { + logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT); + showRemainingLogsIfAny(stmnt); + logThread = null; + } rs.close(); } } while (BeeLine.getMoreResults(stmnt)); @@ -792,6 +810,13 @@ private boolean execute(String line, boolean call) { + " " + beeLine.locElapsedTime(end - start)); } } finally { + if (logThread != null) { + if (!logThread.isInterrupted()) { + logThread.interrupt(); + } + logThread.join(DEFAULT_QUERY_PROGRESS_THREAD_TIMEOUT); + showRemainingLogsIfAny(stmnt); + } if (stmnt != null) { stmnt.close(); } @@ -803,6 +828,61 @@ private boolean execute(String line, boolean call) { return true; } + private Runnable createLogRunnable(Statement statement) { + if (statement instanceof HiveStatement) { + final HiveStatement hiveStatement = (HiveStatement) statement; + + Runnable runnable = new Runnable() { + @Override + public void run() { + while (hiveStatement.hasMoreLogs()) { + try { + // fetch the log periodically and output to beeline console + for (String log : hiveStatement.getQueryLog()) { + beeLine.info(log); + } + Thread.sleep(DEFAULT_QUERY_PROGRESS_INTERVAL); + } catch (SQLException e) { + beeLine.error(new SQLWarning(e)); + return; + } catch (InterruptedException e) { + beeLine.debug("Getting log thread is interrupted, since query is done!"); + return; + } + } + } + }; + return runnable; + } else { + beeLine.debug("The statement instance is not HiveStatement type: " + statement.getClass()); + return new Runnable() { + @Override + public void run() { + // do nothing. + } + }; + } + } + + private void showRemainingLogsIfAny(Statement statement) { + if (statement instanceof HiveStatement) { + HiveStatement hiveStatement = (HiveStatement) statement; + List logs; + do { + try { + logs = hiveStatement.getQueryLog(); + } catch (SQLException e) { + beeLine.error(new SQLWarning(e)); + return; + } + for (String log : logs) { + beeLine.info(log); + } + } while (logs.size() > 0); + } else { + beeLine.debug("The statement instance is not HiveStatement type: " + statement.getClass()); + } + } public boolean quit(String line) { beeLine.setExit(true); diff --git a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java index 1e66542cec53..6561743a4585 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java @@ -477,4 +477,31 @@ public void testEmbeddedBeelineConnection() throws Throwable{ final String EXPECTED_PATTERN = "embedded_table"; testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } + + /** + * Test Beeline could show the query progress for time-consuming query. + * @throws Throwable + */ + @Test + public void testQueryProgress() throws Throwable { + final String TEST_NAME = "testQueryProgress"; + final String SCRIPT_TEXT = "set hive.support.concurrency = false;\n" + + "select count(*) from " + tableName + ";\n"; + final String EXPECTED_PATTERN = "Parsing command"; + testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, getBaseArgs(JDBC_URL)); + } + + /** + * Test Beeline will hide the query progress when silent option is set. + * @throws Throwable + */ + @Test + public void testQueryProgressHidden() throws Throwable { + final String TEST_NAME = "testQueryProgress"; + final String SCRIPT_TEXT = "set hive.support.concurrency = false;\n" + + "!set silent true\n" + + "select count(*) from " + tableName + ";\n"; + final String EXPECTED_PATTERN = "Parsing command"; + testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, false, getBaseArgs(JDBC_URL)); + } } diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java index daf8e9ece79f..bfa8c4690727 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java @@ -2130,4 +2130,82 @@ public void testNonAsciiReturnValues() throws Exception { } stmt.close(); } + + /** + * Test getting query log method in Jdbc + * @throws Exception + */ + @Test + public void testGetQueryLog() throws Exception { + // Prepare + String[] expectedLogs = { + "Parsing command", + "Parse Completed", + "Starting Semantic Analysis", + "Semantic Analysis Completed", + "Starting command" + }; + String sql = "select count(*) from " + tableName; + + // Verify the fetched log (from the beginning of log file) + HiveStatement stmt = (HiveStatement)con.createStatement(); + assertNotNull("Statement is null", stmt); + stmt.executeQuery(sql); + List logs = stmt.getQueryLog(false, 10000); + stmt.close(); + verifyFetchedLog(logs, expectedLogs); + + // Verify the fetched log (incrementally) + final HiveStatement statement = (HiveStatement)con.createStatement(); + assertNotNull("Statement is null", statement); + statement.setFetchSize(10000); + final List incrementalLogs = new ArrayList(); + + Runnable logThread = new Runnable() { + @Override + public void run() { + while (statement.hasMoreLogs()) { + try { + incrementalLogs.addAll(statement.getQueryLog()); + Thread.sleep(500); + } catch (SQLException e) { + LOG.error("Failed getQueryLog. Error message: " + e.getMessage()); + fail("error in getting log thread"); + } catch (InterruptedException e) { + LOG.error("Getting log thread is interrupted. Error message: " + e.getMessage()); + fail("error in getting log thread"); + } + } + } + }; + + Thread thread = new Thread(logThread); + thread.setDaemon(true); + thread.start(); + statement.executeQuery(sql); + thread.interrupt(); + thread.join(10000); + // fetch remaining logs + List remainingLogs; + do { + remainingLogs = statement.getQueryLog(); + incrementalLogs.addAll(remainingLogs); + } while (remainingLogs.size() > 0); + statement.close(); + + verifyFetchedLog(incrementalLogs, expectedLogs); + } + + private void verifyFetchedLog(List logs, String[] expectedLogs) { + StringBuilder stringBuilder = new StringBuilder(); + + for (String log : logs) { + stringBuilder.append(log); + } + + String accumulatedLogs = stringBuilder.toString(); + for (String expectedLog : expectedLogs) { + assertTrue(accumulatedLogs.contains(expectedLog)); + } + } } diff --git a/jdbc/src/java/org/apache/hive/jdbc/ClosedOrCancelledStatementException.java b/jdbc/src/java/org/apache/hive/jdbc/ClosedOrCancelledStatementException.java new file mode 100644 index 000000000000..9880208b4f5f --- /dev/null +++ b/jdbc/src/java/org/apache/hive/jdbc/ClosedOrCancelledStatementException.java @@ -0,0 +1,29 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. See accompanying LICENSE file. + */ + +package org.apache.hive.jdbc; + +import java.sql.SQLException; + +public class ClosedOrCancelledStatementException extends SQLException{ + + private static final long serialVersionUID = 0; + + /** + * @param msg (exception message) + */ + public ClosedOrCancelledStatementException(String msg) { + super(msg); + } +} diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java index 86bc58025af0..a7dbc82e40c0 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.concurrent.locks.ReentrantLock; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -75,6 +76,7 @@ public class HiveQueryResultSet extends HiveBaseResultSet { private boolean fetchFirst = false; private final TProtocolVersion protocol; + private ReentrantLock transportLock; public static class Builder { @@ -98,6 +100,7 @@ public static class Builder { private int fetchSize = 50; private boolean emptyResultSet = false; private boolean isScrollable = false; + private ReentrantLock transportLock = null; public Builder(Statement statement) throws SQLException { this.statement = statement; @@ -166,6 +169,11 @@ public Builder setScrollable(boolean setScrollable) { return this; } + public Builder setTransportLock(ReentrantLock transportLock) { + this.transportLock = transportLock; + return this; + } + public HiveQueryResultSet build() throws SQLException { return new HiveQueryResultSet(this); } @@ -181,6 +189,7 @@ protected HiveQueryResultSet(Builder builder) throws SQLException { this.stmtHandle = builder.stmtHandle; this.sessHandle = builder.sessHandle; this.fetchSize = builder.fetchSize; + this.transportLock = builder.transportLock; columnNames = new ArrayList(); columnTypes = new ArrayList(); columnAttributes = new ArrayList(); @@ -239,7 +248,17 @@ private void retrieveSchema() throws SQLException { try { TGetResultSetMetadataReq metadataReq = new TGetResultSetMetadataReq(stmtHandle); // TODO need session handle - TGetResultSetMetadataResp metadataResp = client.GetResultSetMetadata(metadataReq); + TGetResultSetMetadataResp metadataResp; + if (transportLock == null) { + metadataResp = client.GetResultSetMetadata(metadataReq); + } else { + transportLock.lock(); + try { + metadataResp = client.GetResultSetMetadata(metadataReq); + } finally { + transportLock.unlock(); + } + } Utils.verifySuccess(metadataResp.getStatus()); StringBuilder namesSb = new StringBuilder(); @@ -326,7 +345,17 @@ public boolean next() throws SQLException { if (fetchedRows == null || !fetchedRowsItr.hasNext()) { TFetchResultsReq fetchReq = new TFetchResultsReq(stmtHandle, orientation, fetchSize); - TFetchResultsResp fetchResp = client.FetchResults(fetchReq); + TFetchResultsResp fetchResp; + if (transportLock == null) { + fetchResp = client.FetchResults(fetchReq); + } else { + transportLock.lock(); + try { + fetchResp = client.FetchResults(fetchReq); + } finally { + transportLock.unlock(); + } + } Utils.verifySuccessWithInfo(fetchResp.getStatus()); TRowSet results = fetchResp.getResults(); diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java b/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java index 2cbf58cfd7c4..d8e33d3ead71 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java @@ -23,10 +23,14 @@ import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.sql.SQLWarning; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.locks.ReentrantLock; +import org.apache.hive.service.cli.RowSet; +import org.apache.hive.service.cli.RowSetFactory; import org.apache.hive.service.cli.thrift.TCLIService; import org.apache.hive.service.cli.thrift.TCancelOperationReq; import org.apache.hive.service.cli.thrift.TCancelOperationResp; @@ -38,6 +42,9 @@ import org.apache.hive.service.cli.thrift.TGetOperationStatusResp; import org.apache.hive.service.cli.thrift.TOperationHandle; import org.apache.hive.service.cli.thrift.TSessionHandle; +import org.apache.hive.service.cli.thrift.TFetchResultsReq; +import org.apache.hive.service.cli.thrift.TFetchResultsResp; +import org.apache.hive.service.cli.thrift.TFetchOrientation; /** * HiveStatement. @@ -77,6 +84,27 @@ public class HiveStatement implements java.sql.Statement { */ private boolean isClosed = false; + /** + * Keep state so we can fail certain calls made after cancel(). + */ + private boolean isCancelled = false; + + /** + * Keep this state so we can know whether the query in this statement is closed. + */ + private boolean isQueryClosed = false; + + /** + * Keep this state so we can know whether the query logs are being generated in HS2. + */ + private boolean isLogBeingGenerated = true; + + /** + * Keep this state so we can know whether the statement is submitted to HS2 and start execution + * successfully. + */ + private boolean isExecuteStatementFailed = false; + // A fair reentrant lock private ReentrantLock transportLock = new ReentrantLock(true); @@ -113,6 +141,9 @@ public void addBatch(String sql) throws SQLException { @Override public void cancel() throws SQLException { checkConnection("cancel"); + if (isCancelled) { + return; + } transportLock.lock(); try { @@ -128,6 +159,7 @@ public void cancel() throws SQLException { } finally { transportLock.unlock(); } + isCancelled = true; } /* @@ -167,6 +199,8 @@ void closeClientOperation() throws SQLException { } finally { transportLock.unlock(); } + isQueryClosed = true; + isExecuteStatementFailed = false; stmtHandle = null; } @@ -202,6 +236,7 @@ public boolean execute(String sql) throws SQLException { checkConnection("execute"); closeClientOperation(); + initFlags(); TExecuteStatementReq execReq = new TExecuteStatementReq(sessHandle, sql); /** @@ -218,9 +253,12 @@ public boolean execute(String sql) throws SQLException { TExecuteStatementResp execResp = client.ExecuteStatement(execReq); Utils.verifySuccessWithInfo(execResp.getStatus()); stmtHandle = execResp.getOperationHandle(); + isExecuteStatementFailed = false; } catch (SQLException eS) { + isExecuteStatementFailed = true; throw eS; } catch (Exception ex) { + isExecuteStatementFailed = true; throw new SQLException(ex.toString(), "08S01", ex); } finally { transportLock.unlock(); @@ -266,11 +304,14 @@ public boolean execute(String sql) throws SQLException { } } } catch (SQLException e) { + isLogBeingGenerated = false; throw e; } catch (Exception e) { + isLogBeingGenerated = false; throw new SQLException(e.toString(), "08S01", e); } } + isLogBeingGenerated = false; // The query should be completed by now if (!stmtHandle.isHasResultSet()) { @@ -278,7 +319,7 @@ public boolean execute(String sql) throws SQLException { } resultSet = new HiveQueryResultSet.Builder(this).setClient(client).setSessionHandle(sessHandle) .setStmtHandle(stmtHandle).setMaxRows(maxRows).setFetchSize(fetchSize) - .setScrollable(isScrollableResultset) + .setScrollable(isScrollableResultset).setTransportLock(transportLock) .build(); return true; } @@ -289,6 +330,13 @@ private void checkConnection(String action) throws SQLException { } } + private void initFlags() { + isCancelled = false; + isQueryClosed = false; + isLogBeingGenerated = true; + isExecuteStatementFailed = false; + } + /* * (non-Javadoc) * @@ -713,4 +761,93 @@ public T unwrap(Class iface) throws SQLException { throw new SQLException("Cannot unwrap to " + iface); } + /** + * Check whether query execution might be producing more logs to be fetched. + * This method is a public API for usage outside of Hive, although it is not part of the + * interface java.sql.Statement. + * @return true if query execution might be producing more logs. It does not indicate if last + * log lines have been fetched by getQueryLog. + */ + public boolean hasMoreLogs() { + return isLogBeingGenerated; + } + + /** + * Get the execution logs of the given SQL statement. + * This method is a public API for usage outside of Hive, although it is not part of the + * interface java.sql.Statement. + * This method gets the incremental logs during SQL execution, and uses fetchSize holden by + * HiveStatement object. + * @return a list of logs. It can be empty if there are no new logs to be retrieved at that time. + * @throws SQLException + * @throws ClosedOrCancelledStatementException if statement has been cancelled or closed + */ + public List getQueryLog() throws SQLException, ClosedOrCancelledStatementException { + return getQueryLog(true, fetchSize); + } + + /** + * Get the execution logs of the given SQL statement. + * This method is a public API for usage outside of Hive, although it is not part of the + * interface java.sql.Statement. + * @param incremental indicate getting logs either incrementally or from the beginning, + * when it is true or false. + * @param fetchSize the number of lines to fetch + * @return a list of logs. It can be empty if there are no new logs to be retrieved at that time. + * @throws SQLException + * @throws ClosedOrCancelledStatementException if statement has been cancelled or closed + */ + public List getQueryLog(boolean incremental, int fetchSize) + throws SQLException, ClosedOrCancelledStatementException { + checkConnection("getQueryLog"); + if (isCancelled) { + throw new ClosedOrCancelledStatementException("Method getQueryLog() failed. The " + + "statement has been closed or cancelled."); + } + + List logs = new ArrayList(); + TFetchResultsResp tFetchResultsResp = null; + transportLock.lock(); + try { + if (stmtHandle != null) { + TFetchResultsReq tFetchResultsReq = new TFetchResultsReq(stmtHandle, + getFetchOrientation(incremental), fetchSize); + tFetchResultsReq.setFetchType((short)1); + tFetchResultsResp = client.FetchResults(tFetchResultsReq); + Utils.verifySuccessWithInfo(tFetchResultsResp.getStatus()); + } else { + if (isQueryClosed) { + throw new ClosedOrCancelledStatementException("Method getQueryLog() failed. The " + + "statement has been closed or cancelled."); + } + if (isExecuteStatementFailed) { + throw new SQLException("Method getQueryLog() failed. Because the stmtHandle in " + + "HiveStatement is null and the statement execution might fail."); + } else { + return logs; + } + } + } catch (SQLException e) { + throw e; + } catch (Exception e) { + throw new SQLException("Error when getting query log: " + e, e); + } finally { + transportLock.unlock(); + } + + RowSet rowSet = RowSetFactory.create(tFetchResultsResp.getResults(), + connection.getProtocol()); + for (Object[] row : rowSet) { + logs.add((String)row[0]); + } + return logs; + } + + private TFetchOrientation getFetchOrientation(boolean incremental) { + if (incremental) { + return TFetchOrientation.FETCH_NEXT; + } else { + return TFetchOrientation.FETCH_FIRST; + } + } } From 74523b9249ee828f817edcd1ce937652cd7dbdb1 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 26 Sep 2014 22:18:22 +0000 Subject: [PATCH 009/339] HIVE-8072: TesParse_union is failing on trunk (Navis via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627903 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/optimizer/GenMapRedUtils.java | 28 ++- .../hadoop/hive/ql/parse/TaskCompiler.java | 7 + .../apache/hadoop/hive/ql/plan/MapWork.java | 17 ++ .../hadoop/hive/ql/plan/PartitionDesc.java | 14 +- .../test/results/compiler/plan/input1.q.xml | 63 +----- .../test/results/compiler/plan/input2.q.xml | 63 +----- .../test/results/compiler/plan/input3.q.xml | 193 +----------------- .../test/results/compiler/plan/input6.q.xml | 63 +----- .../test/results/compiler/plan/input7.q.xml | 63 +----- .../test/results/compiler/plan/input9.q.xml | 63 +----- .../test/results/compiler/plan/sample2.q.xml | 63 +----- .../test/results/compiler/plan/sample3.q.xml | 63 +----- .../test/results/compiler/plan/sample4.q.xml | 63 +----- .../test/results/compiler/plan/sample5.q.xml | 63 +----- .../test/results/compiler/plan/sample6.q.xml | 63 +----- .../test/results/compiler/plan/sample7.q.xml | 63 +----- 16 files changed, 85 insertions(+), 867 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java index 2f36f044cbd8..583712b8b9e1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.optimizer; +import com.google.common.collect.Interner; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.Path; @@ -39,8 +40,6 @@ import org.apache.hadoop.hive.ql.exec.Operator; import org.apache.hadoop.hive.ql.exec.OperatorFactory; import org.apache.hadoop.hive.ql.exec.OperatorUtils; -import org.apache.hadoop.hive.ql.exec.OrcFileMergeOperator; -import org.apache.hadoop.hive.ql.exec.RCFileMergeOperator; import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator; import org.apache.hadoop.hive.ql.exec.RowSchema; import org.apache.hadoop.hive.ql.exec.SMBMapJoinOperator; @@ -99,7 +98,6 @@ import org.apache.hadoop.hive.ql.plan.TezWork; import org.apache.hadoop.hive.ql.stats.StatsFactory; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; -import org.apache.hadoop.mapred.FileInputFormat; import org.apache.hadoop.mapred.InputFormat; import java.io.Serializable; @@ -873,6 +871,30 @@ public static void setKeyAndValueDescForTaskTree(Task ta } } + public static void internTableDesc(Task task, Interner interner) { + + if (task instanceof ConditionalTask) { + for (Task tsk : ((ConditionalTask) task).getListTasks()) { + internTableDesc(tsk, interner); + } + } else if (task instanceof ExecDriver) { + MapredWork work = (MapredWork) task.getWork(); + work.getMapWork().internTable(interner); + } else if (task != null && (task.getWork() instanceof TezWork)) { + TezWork work = (TezWork)task.getWork(); + for (BaseWork w : work.getAllWorkUnsorted()) { + if (w instanceof MapWork) { + ((MapWork)w).internTable(interner); + } + } + } + if (task.getNumChild() > 0) { + for (Task childTask : task.getChildTasks()) { + internTableDesc(childTask, interner); + } + } + } + /** * create a new plan and return. * diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java index 0f714b57ef5e..23fbbe11198a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java @@ -26,6 +26,8 @@ import java.util.List; import java.util.Set; +import com.google.common.collect.Interner; +import com.google.common.collect.Interners; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.Path; @@ -278,6 +280,11 @@ public void compile(final ParseContext pCtx, final List interner = Interners.newStrongInterner(); + for (Task rootTask : rootTasks) { + GenMapRedUtils.internTableDesc(rootTask, interner); + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/MapWork.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/MapWork.java index ef234f2b28fd..a808fc97dbac 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/MapWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/MapWork.java @@ -30,6 +30,7 @@ import java.util.Map.Entry; import java.util.Set; +import com.google.common.collect.Interner; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.Path; @@ -198,6 +199,22 @@ public void deriveExplainAttributes() { } } + public void internTable(Interner interner) { + if (aliasToPartnInfo != null) { + for (PartitionDesc part : aliasToPartnInfo.values()) { + if (part == null) { + continue; + } + part.intern(interner); + } + } + if (pathToPartitionInfo != null) { + for (PartitionDesc part : pathToPartitionInfo.values()) { + part.intern(interner); + } + } + } + /** * @return the aliasToPartnInfo */ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/PartitionDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/PartitionDesc.java index 1149bdaba703..10c38d9a794f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/PartitionDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/PartitionDesc.java @@ -48,12 +48,10 @@ public class PartitionDesc implements Serializable, Cloneable { static { - TABLE_INTERNER = Interners.newWeakInterner(); STRING_INTERNER = Interners.newWeakInterner(); CLASS_INTERNER = Interners.newWeakInterner(); } - private static final Interner TABLE_INTERNER; private static final Interner STRING_INTERNER; private static final Interner> CLASS_INTERNER; @@ -73,12 +71,12 @@ public PartitionDesc() { } public PartitionDesc(final TableDesc table, final LinkedHashMap partSpec) { - setTableDesc(table); + this.tableDesc = table; this.partSpec = partSpec; } public PartitionDesc(final Partition part) throws HiveException { - setTableDesc(Utilities.getTableDesc(part.getTable())); + this.tableDesc = Utilities.getTableDesc(part.getTable()); setProperties(part.getMetadataFromPartitionSchema()); partSpec = part.getSpec(); setInputFileFormatClass(part.getInputFormatClass()); @@ -86,7 +84,7 @@ public PartitionDesc(final Partition part) throws HiveException { } public PartitionDesc(final Partition part,final TableDesc tblDesc) throws HiveException { - setTableDesc(tblDesc); + this.tableDesc = tblDesc; setProperties(part.getSchemaFromTableSchema(tblDesc.getProperties())); // each partition maintains a large properties partSpec = part.getSpec(); setOutputFileFormatClass(part.getInputFormatClass()); @@ -99,7 +97,7 @@ public TableDesc getTableDesc() { } public void setTableDesc(TableDesc tableDesc) { - this.tableDesc = TABLE_INTERNER.intern(tableDesc); + this.tableDesc = tableDesc; } @Explain(displayName = "partition values") @@ -266,4 +264,8 @@ public void deriveBaseFileName(String path) { baseFileName = path; } } + + public void intern(Interner interner) { + this.tableDesc = interner.intern(tableDesc); + } } diff --git a/ql/src/test/results/compiler/plan/input1.q.xml b/ql/src/test/results/compiler/plan/input1.q.xml index 239ebbc0e364..8b5d4fc786f9 100755 --- a/ql/src/test/results/compiler/plan/input1.q.xml +++ b/ql/src/test/results/compiler/plan/input1.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/input2.q.xml b/ql/src/test/results/compiler/plan/input2.q.xml index 7f84e156ba3c..f106d80e0ac6 100755 --- a/ql/src/test/results/compiler/plan/input2.q.xml +++ b/ql/src/test/results/compiler/plan/input2.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/input3.q.xml b/ql/src/test/results/compiler/plan/input3.q.xml index 35ad15556a98..0152d46f6880 100755 --- a/ql/src/test/results/compiler/plan/input3.q.xml +++ b/ql/src/test/results/compiler/plan/input3.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + @@ -881,7 +822,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -979,66 +920,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest2 - - - columns.types - string:string - - - serialization.ddl - struct dest2 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + @@ -1440,7 +1322,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -1547,70 +1429,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest3 - - - columns.types - string:string - - - serialization.ddl - struct dest3 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - partition_columns.types - string:string - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/input6.q.xml b/ql/src/test/results/compiler/plan/input6.q.xml index 185844b71926..5a459b68ed0a 100644 --- a/ql/src/test/results/compiler/plan/input6.q.xml +++ b/ql/src/test/results/compiler/plan/input6.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/input7.q.xml b/ql/src/test/results/compiler/plan/input7.q.xml index a1605850d295..676a72edcfe1 100644 --- a/ql/src/test/results/compiler/plan/input7.q.xml +++ b/ql/src/test/results/compiler/plan/input7.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/input9.q.xml b/ql/src/test/results/compiler/plan/input9.q.xml index 0d35af71ed15..3b0c93b85d71 100644 --- a/ql/src/test/results/compiler/plan/input9.q.xml +++ b/ql/src/test/results/compiler/plan/input9.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/sample2.q.xml b/ql/src/test/results/compiler/plan/sample2.q.xml index 9f8e5595031c..1b3a9483a77e 100644 --- a/ql/src/test/results/compiler/plan/sample2.q.xml +++ b/ql/src/test/results/compiler/plan/sample2.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/sample3.q.xml b/ql/src/test/results/compiler/plan/sample3.q.xml index ebba8a34d1b0..28e32081d3b2 100644 --- a/ql/src/test/results/compiler/plan/sample3.q.xml +++ b/ql/src/test/results/compiler/plan/sample3.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/sample4.q.xml b/ql/src/test/results/compiler/plan/sample4.q.xml index 9f8e5595031c..1b3a9483a77e 100644 --- a/ql/src/test/results/compiler/plan/sample4.q.xml +++ b/ql/src/test/results/compiler/plan/sample4.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/sample5.q.xml b/ql/src/test/results/compiler/plan/sample5.q.xml index e5eaa8d8e06e..3cfd796b0e8a 100644 --- a/ql/src/test/results/compiler/plan/sample5.q.xml +++ b/ql/src/test/results/compiler/plan/sample5.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/sample6.q.xml b/ql/src/test/results/compiler/plan/sample6.q.xml index 9931f416c47d..a4fee5d978b9 100644 --- a/ql/src/test/results/compiler/plan/sample6.q.xml +++ b/ql/src/test/results/compiler/plan/sample6.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + diff --git a/ql/src/test/results/compiler/plan/sample7.q.xml b/ql/src/test/results/compiler/plan/sample7.q.xml index 42eb9cd4f99a..a5fbe9d329df 100644 --- a/ql/src/test/results/compiler/plan/sample7.q.xml +++ b/ql/src/test/results/compiler/plan/sample7.q.xml @@ -334,7 +334,7 @@ - + org.apache.hadoop.mapred.TextInputFormat @@ -432,66 +432,7 @@ true - - - org.apache.hadoop.mapred.TextInputFormat - - - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - - - name - default.dest1 - - - columns.types - string:string - - - serialization.ddl - struct dest1 { string key, string value} - - - serialization.format - 1 - - - columns - key,value - - - columns.comments - defaultdefault - - - bucket_count - -1 - - - serialization.lib - org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - - - file.inputformat - org.apache.hadoop.mapred.TextInputFormat - - - file.outputformat - org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - - - location - #### A masked pattern was here #### - - - transient_lastDdlTime - #### A masked pattern was here #### - - - - + From dfc13993f5f6bd2b72a4fd97e4d16aa23647f224 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 26 Sep 2014 22:31:13 +0000 Subject: [PATCH 010/339] HIVE-8171: Tez and Vectorized Reduce doesn't create scratch columns (Matt McCline via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627905 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 2 + .../ql/exec/tez/ReduceRecordProcessor.java | 3 +- .../hive/ql/exec/tez/ReduceRecordSource.java | 15 +- .../ql/exec/vector/VectorizedRowBatchCtx.java | 14 ++ .../ql/optimizer/physical/Vectorizer.java | 134 ++++++++++---- .../clientpositive/vector_char_simple.q | 13 ++ .../clientpositive/vector_varchar_simple.q | 28 ++- .../tez/vector_char_simple.q.out | 106 +++++++++++ .../tez/vector_varchar_simple.q.out | 170 ++++++++++++++---- .../clientpositive/vector_char_simple.q.out | 95 ++++++++++ .../vector_varchar_simple.q.out | 159 ++++++++++++---- 11 files changed, 626 insertions(+), 113 deletions(-) diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 3ea6bb53cf2b..e5257988bcb1 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -154,11 +154,13 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ update_where_partitioned.q,\ update_two_cols.q,\ vector_cast_constant.q,\ + vector_char_simple.q,\ vector_data_types.q,\ vector_decimal_aggregate.q,\ vector_left_outer_join.q,\ vector_mapjoin_reduce.q,\ vector_string_concat.q,\ + vector_varchar_simple.q,\ vectorization_0.q,\ vectorization_12.q,\ vectorization_13.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java index 0ce371e854f1..941f97cf7630 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java @@ -100,7 +100,8 @@ void init(JobConf jconf, ProcessorContext processorContext, MRTaskReporter mrRep sources[tag] = new ReduceRecordSource(); sources[tag].init(jconf, reducer, redWork.getVectorMode(), keyTableDesc, valueTableDesc, - reader, tag == position, (byte) tag); + reader, tag == position, (byte) tag, + redWork.getScratchColumnVectorTypes()); ois[tag] = sources[tag].getObjectInspector(); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java index 1ca62da694ea..8a5443304490 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -28,6 +29,7 @@ import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.exec.vector.VectorizedBatchUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatchCtx; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriter; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriterFactory; import org.apache.hadoop.hive.ql.log.PerfLogger; @@ -85,6 +87,7 @@ public class ReduceRecordSource implements RecordSource { List row = new ArrayList(Utilities.reduceFieldNameList.size()); private DataOutputBuffer buffer; + private VectorizedRowBatchCtx batchContext; private VectorizedRowBatch batch; // number of columns pertaining to keys in a vectorized row batch @@ -110,7 +113,8 @@ public class ReduceRecordSource implements RecordSource { private final boolean grouped = true; void init(JobConf jconf, Operator reducer, boolean vectorized, TableDesc keyTableDesc, - TableDesc valueTableDesc, KeyValuesReader reader, boolean handleGroupKey, byte tag) + TableDesc valueTableDesc, KeyValuesReader reader, boolean handleGroupKey, byte tag, + Map> scratchColumnVectorTypes) throws Exception { ObjectInspector keyObjectInspector; @@ -149,9 +153,6 @@ void init(JobConf jconf, Operator reducer, boolean vectorized, TableDesc keyT /* vectorization only works with struct object inspectors */ valueStructInspectors = (StructObjectInspector) valueObjectInspector; - batch = VectorizedBatchUtil.constructVectorizedRowBatch(keyStructInspector, - valueStructInspectors); - final int totalColumns = keysColumnOffset + valueStructInspectors.getAllStructFieldRefs().size(); valueStringWriters = new ArrayList(totalColumns); @@ -178,6 +179,12 @@ void init(JobConf jconf, Operator reducer, boolean vectorized, TableDesc keyT ois.add(field.getFieldObjectInspector()); } rowObjectInspector = ObjectInspectorFactory.getStandardStructObjectInspector(colNames, ois); + + Map reduceShuffleScratchColumnTypeMap = + scratchColumnVectorTypes.get("_REDUCE_SHUFFLE_"); + batchContext = new VectorizedRowBatchCtx(); + batchContext.init(reduceShuffleScratchColumnTypeMap, (StructObjectInspector) rowObjectInspector); + batch = batchContext.createVectorizedRowBatch(); } else { ois.add(keyObjectInspector); ois.add(valueObjectInspector); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java index c77d002a57c0..21c757e0f996 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java @@ -139,6 +139,20 @@ public void init(Configuration hiveConf, String fileKey, } + /** + * Initializes the VectorizedRowBatch context based on an scratch column type map and + * object inspector. + * @param columnTypeMap + * @param rowOI + * Object inspector that shapes the column types + */ + public void init(Map columnTypeMap, + StructObjectInspector rowOI) { + this.columnTypeMap = columnTypeMap; + this.rowOI= rowOI; + this.rawRowOI = rowOI; + } + /** * Initializes VectorizedRowBatch context based on the * split and Hive configuration (Job conf with hive Plan). diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java index e77d41ae01c1..c832eec661bf 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java @@ -411,10 +411,12 @@ private boolean getOnlyStructObjectInspectors(ReduceWork reduceWork) throws Sema // Check value ObjectInspector. ObjectInspector valueObjectInspector = reduceWork.getValueObjectInspector(); - if (valueObjectInspector == null || !(valueObjectInspector instanceof StructObjectInspector)) { + if (valueObjectInspector == null || + !(valueObjectInspector instanceof StructObjectInspector)) { return false; } - StructObjectInspector valueStructObjectInspector = (StructObjectInspector)valueObjectInspector; + StructObjectInspector valueStructObjectInspector = + (StructObjectInspector)valueObjectInspector; valueColCount = valueStructObjectInspector.getAllStructFieldRefs().size(); } catch (Exception e) { throw new SemanticException(e); @@ -460,18 +462,20 @@ private void vectorizeReduceWork(ReduceWork reduceWork) throws SemanticException LOG.info("Vectorizing ReduceWork..."); reduceWork.setVectorMode(true); - // For some reason, the DefaultGraphWalker does not descend down from the reducer Operator as expected. - // We need to descend down, otherwise it breaks our algorithm that determines VectorizationContext... - // Do we use PreOrderWalker instead of DefaultGraphWalker. + // For some reason, the DefaultGraphWalker does not descend down from the reducer Operator as + // expected. We need to descend down, otherwise it breaks our algorithm that determines + // VectorizationContext... Do we use PreOrderWalker instead of DefaultGraphWalker. Map opRules = new LinkedHashMap(); - ReduceWorkVectorizationNodeProcessor vnp = new ReduceWorkVectorizationNodeProcessor(reduceWork, keyColCount, valueColCount); + ReduceWorkVectorizationNodeProcessor vnp = + new ReduceWorkVectorizationNodeProcessor(reduceWork, keyColCount, valueColCount); addReduceWorkRules(opRules, vnp); Dispatcher disp = new DefaultRuleDispatcher(vnp, opRules, null); GraphWalker ogw = new PreOrderWalker(disp); // iterator the reduce operator tree ArrayList topNodes = new ArrayList(); topNodes.add(reduceWork.getReducer()); - LOG.info("vectorizeReduceWork reducer Operator: " + reduceWork.getReducer().getName() + "..."); + LOG.info("vectorizeReduceWork reducer Operator: " + + reduceWork.getReducer().getName() + "..."); HashMap nodeOutput = new HashMap(); ogw.startWalking(topNodes, nodeOutput); @@ -550,7 +554,7 @@ class VectorizationNodeProcessor implements NodeProcessor { protected final Map scratchColumnContext = new HashMap(); - protected final Map, VectorizationContext> vContextsByTSOp = + protected final Map, VectorizationContext> vContextsByOp = new HashMap, VectorizationContext>(); protected final Set> opsDone = @@ -578,28 +582,30 @@ public Map> getScratchColumnMap() { return scratchColumnMap; } - public VectorizationContext walkStackToFindVectorizationContext(Stack stack, Operator op) - throws SemanticException { + public VectorizationContext walkStackToFindVectorizationContext(Stack stack, + Operator op) throws SemanticException { VectorizationContext vContext = null; if (stack.size() <= 1) { - throw new SemanticException(String.format("Expected operator stack for operator %s to have at least 2 operators", op.getName())); + throw new SemanticException( + String.format("Expected operator stack for operator %s to have at least 2 operators", + op.getName())); } // Walk down the stack of operators until we found one willing to give us a context. // At the bottom will be the root operator, guaranteed to have a context int i= stack.size()-2; while (vContext == null) { if (i < 0) { - throw new SemanticException(String.format("Did not find vectorization context for operator %s in operator stack", op.getName())); + return null; } Operator opParent = (Operator) stack.get(i); - vContext = vContextsByTSOp.get(opParent); + vContext = vContextsByOp.get(opParent); --i; } return vContext; } - public Operator doVectorize(Operator op, VectorizationContext vContext) - throws SemanticException { + public Operator doVectorize(Operator op, + VectorizationContext vContext) throws SemanticException { Operator vectorOp = op; try { if (!opsDone.contains(op)) { @@ -611,7 +617,7 @@ public Operator doVectorize(Operator stack, NodeProcessorCtx procCtx, // vContext.setFileKey(onefile); scratchColumnContext.put(onefile, vContext); + if (LOG.isDebugEnabled()) { + LOG.debug("Vectorized MapWork operator " + op.getName() + + " with vectorization context key=" + vContext.getFileKey() + + ", vectorTypes: " + vContext.getOutputColumnTypeMap().toString() + + ", columnMap: " + vContext.getColumnMap().toString()); + } break; } } } - vContextsByTSOp.put(op, vContext); + vContextsByOp.put(op, vContext); } else { vContext = walkStackToFindVectorizationContext(stack, op); + if (vContext == null) { + throw new SemanticException( + String.format("Did not find vectorization context for operator %s in operator stack", + op.getName())); + } } assert vContext != null; @@ -679,7 +696,22 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, return null; } - doVectorize(op, vContext); + Operator vectorOp = doVectorize(op, vContext); + + if (LOG.isDebugEnabled()) { + LOG.debug("Vectorized MapWork operator " + vectorOp.getName() + + " with vectorization context key=" + vContext.getFileKey() + + ", vectorTypes: " + vContext.getOutputColumnTypeMap().toString() + + ", columnMap: " + vContext.getColumnMap().toString()); + if (vectorOp instanceof VectorizationContextRegion) { + VectorizationContextRegion vcRegion = (VectorizationContextRegion) vectorOp; + VectorizationContext vOutContext = vcRegion.getOuputVectorizationContext(); + LOG.debug("Vectorized MapWork operator " + vectorOp.getName() + + " added new vectorization context key=" + vOutContext.getFileKey() + + ", vectorTypes: " + vOutContext.getOutputColumnTypeMap().toString() + + ", columnMap: " + vOutContext.getColumnMap().toString()); + } + } return null; } @@ -691,6 +723,8 @@ class ReduceWorkVectorizationNodeProcessor extends VectorizationNodeProcessor { private int keyColCount; private int valueColCount; private Map reduceColumnNameMap; + + private VectorizationContext reduceShuffleVectorizationContext; private Operator rootVectorOp; @@ -698,12 +732,14 @@ public Operator getRootVectorOp() { return rootVectorOp; } - public ReduceWorkVectorizationNodeProcessor(ReduceWork rWork, int keyColCount, int valueColCount) { + public ReduceWorkVectorizationNodeProcessor(ReduceWork rWork, int keyColCount, + int valueColCount) { this.rWork = rWork; reduceColumnNameMap = rWork.getReduceColumnNameMap(); this.keyColCount = keyColCount; this.valueColCount = valueColCount; rootVectorOp = null; + reduceShuffleVectorizationContext = null; } @Override @@ -711,7 +747,8 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, Object... nodeOutputs) throws SemanticException { Operator op = (Operator) nd; - LOG.info("ReduceWorkVectorizationNodeProcessor processing Operator: " + op.getName() + "..."); + LOG.info("ReduceWorkVectorizationNodeProcessor processing Operator: " + + op.getName() + "..."); VectorizationContext vContext = null; @@ -719,10 +756,24 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, if (op.getParentOperators().size() == 0) { vContext = getReduceVectorizationContext(reduceColumnNameMap); - vContextsByTSOp.put(op, vContext); + vContext.setFileKey("_REDUCE_SHUFFLE_"); + scratchColumnContext.put("_REDUCE_SHUFFLE_", vContext); + reduceShuffleVectorizationContext = vContext; saveRootVectorOp = true; + + if (LOG.isDebugEnabled()) { + LOG.debug("Vectorized ReduceWork reduce shuffle vectorization context key=" + + vContext.getFileKey() + + ", vectorTypes: " + vContext.getOutputColumnTypeMap().toString() + + ", columnMap: " + vContext.getColumnMap().toString()); + } } else { vContext = walkStackToFindVectorizationContext(stack, op); + if (vContext == null) { + // If we didn't find a context among the operators, assume the top -- reduce shuffle's + // vectorization context. + vContext = reduceShuffleVectorizationContext; + } } assert vContext != null; @@ -738,6 +789,21 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, } Operator vectorOp = doVectorize(op, vContext); + + if (LOG.isDebugEnabled()) { + LOG.debug("Vectorized ReduceWork operator " + vectorOp.getName() + + " with vectorization context key=" + vContext.getFileKey() + + ", vectorTypes: " + vContext.getOutputColumnTypeMap().toString() + + ", columnMap: " + vContext.getColumnMap().toString()); + if (vectorOp instanceof VectorizationContextRegion) { + VectorizationContextRegion vcRegion = (VectorizationContextRegion) vectorOp; + VectorizationContext vOutContext = vcRegion.getOuputVectorizationContext(); + LOG.debug("Vectorized ReduceWork operator " + vectorOp.getName() + + " added new vectorization context key=" + vOutContext.getFileKey() + + ", vectorTypes: " + vOutContext.getOutputColumnTypeMap().toString() + + ", columnMap: " + vOutContext.getColumnMap().toString()); + } + } if (vectorOp instanceof VectorGroupByOperator) { VectorGroupByOperator groupBy = (VectorGroupByOperator) vectorOp; VectorGroupByDesc vectorDesc = groupBy.getConf().getVectorDesc(); @@ -791,7 +857,6 @@ public PhysicalContext resolve(PhysicalContext pctx) throws SemanticException { boolean validateMapWorkOperator(Operator op, boolean isTez) { boolean ret = false; - LOG.info("Validating MapWork operator " + op.getType().name()); switch (op.getType()) { case MAPJOIN: if (op instanceof MapJoinOperator) { @@ -829,7 +894,6 @@ boolean validateMapWorkOperator(Operator op, boolean isT boolean validateReduceWorkOperator(Operator op) { boolean ret = false; - LOG.info("Validating ReduceWork operator " + op.getType().name()); switch (op.getType()) { case EXTRACT: ret = validateExtractOperator((ExtractOperator) op); @@ -843,12 +907,7 @@ boolean validateReduceWorkOperator(Operator op) { } break; case GROUPBY: - if (HiveConf.getBoolVar(physicalContext.getConf(), - HiveConf.ConfVars.HIVE_VECTORIZATION_REDUCE_GROUPBY_ENABLED)) { - ret = validateGroupByOperator((GroupByOperator) op, true, true); - } else { - ret = false; - } + ret = validateGroupByOperator((GroupByOperator) op, true, true); break; case FILTER: ret = validateFilterOperator((FilterOperator) op); @@ -1015,7 +1074,8 @@ private boolean validateExprNodeDesc(List descs) { return validateExprNodeDesc(descs, VectorExpressionDescriptor.Mode.PROJECTION); } - private boolean validateExprNodeDesc(List descs, VectorExpressionDescriptor.Mode mode) { + private boolean validateExprNodeDesc(List descs, + VectorExpressionDescriptor.Mode mode) { for (ExprNodeDesc d : descs) { boolean ret = validateExprNodeDesc(d, mode); if (!ret) { @@ -1080,11 +1140,11 @@ boolean validateExprNodeDesc(ExprNodeDesc desc, VectorExpressionDescriptor.Mode VectorizationContext vc = new ValidatorVectorizationContext(); if (vc.getVectorExpression(desc, mode) == null) { // TODO: this cannot happen - VectorizationContext throws in such cases. - LOG.debug("getVectorExpression returned null"); + LOG.info("getVectorExpression returned null"); return false; } } catch (Exception e) { - LOG.debug("Failed to vectorize", e); + LOG.info("Failed to vectorize", e); return false; } return true; @@ -1115,11 +1175,11 @@ private boolean validateAggregationDesc(AggregationDesc aggDesc, boolean isReduc VectorizationContext vc = new ValidatorVectorizationContext(); if (vc.getAggregatorExpression(aggDesc, isReduce) == null) { // TODO: this cannot happen - VectorizationContext throws in such cases. - LOG.debug("getAggregatorExpression returned null"); + LOG.info("getAggregatorExpression returned null"); return false; } } catch (Exception e) { - LOG.debug("Failed to vectorize", e); + LOG.info("Failed to vectorize", e); return false; } return true; @@ -1173,11 +1233,13 @@ private VectorizationContext getVectorizationContext(Operator op, return new VectorizationContext(cmap, columnCount); } - private VectorizationContext getReduceVectorizationContext(Map reduceColumnNameMap) { + private VectorizationContext getReduceVectorizationContext( + Map reduceColumnNameMap) { return new VectorizationContext(reduceColumnNameMap, reduceColumnNameMap.size()); } - private void fixupParentChildOperators(Operator op, Operator vectorOp) { + private void fixupParentChildOperators(Operator op, + Operator vectorOp) { if (op.getParentOperators() != null) { vectorOp.setParentOperators(op.getParentOperators()); for (Operator p : op.getParentOperators()) { diff --git a/ql/src/test/queries/clientpositive/vector_char_simple.q b/ql/src/test/queries/clientpositive/vector_char_simple.q index ec4663019b41..858fe1691589 100644 --- a/ql/src/test/queries/clientpositive/vector_char_simple.q +++ b/ql/src/test/queries/clientpositive/vector_char_simple.q @@ -41,3 +41,16 @@ order by key desc limit 5; drop table char_2; + + +-- Implicit conversion. Occurs in reduce-side under Tez. +create table char_3 ( + field char(12) +) stored as orc; + +explain +insert into table char_3 select cint from alltypesorc limit 10; + +insert into table char_3 select cint from alltypesorc limit 10; + +drop table char_3; diff --git a/ql/src/test/queries/clientpositive/vector_varchar_simple.q b/ql/src/test/queries/clientpositive/vector_varchar_simple.q index 68d6b093762f..1cd30ee00b13 100644 --- a/ql/src/test/queries/clientpositive/vector_varchar_simple.q +++ b/ql/src/test/queries/clientpositive/vector_varchar_simple.q @@ -1,12 +1,12 @@ SET hive.vectorized.execution.enabled=true; -drop table char_2; +drop table varchar_2; -create table char_2 ( +create table varchar_2 ( key varchar(10), value varchar(20) ) stored as orc; -insert overwrite table char_2 select * from src; +insert overwrite table varchar_2 select * from src; select key, value from src @@ -14,13 +14,13 @@ order by key asc limit 5; explain select key, value -from char_2 +from varchar_2 order by key asc limit 5; -- should match the query from src select key, value -from char_2 +from varchar_2 order by key asc limit 5; @@ -30,14 +30,26 @@ order by key desc limit 5; explain select key, value -from char_2 +from varchar_2 order by key desc limit 5; -- should match the query from src select key, value -from char_2 +from varchar_2 order by key desc limit 5; -drop table char_2; +drop table varchar_2; + +-- Implicit conversion. Occurs in reduce-side under Tez. +create table varchar_3 ( + field varchar(25) +) stored as orc; + +explain +insert into table varchar_3 select cint from alltypesorc limit 10; + +insert into table varchar_3 select cint from alltypesorc limit 10; + +drop table varchar_3; diff --git a/ql/src/test/results/clientpositive/tez/vector_char_simple.q.out b/ql/src/test/results/clientpositive/tez/vector_char_simple.q.out index bac33ec2d99a..fe651cad21ce 100644 --- a/ql/src/test/results/clientpositive/tez/vector_char_simple.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_char_simple.q.out @@ -234,3 +234,109 @@ POSTHOOK: query: drop table char_2 POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@char_2 POSTHOOK: Output: default@char_2 +PREHOOK: query: -- Implicit conversion. Occurs in reduce-side under Tez. +create table char_3 ( + field char(12) +) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@char_3 +POSTHOOK: query: -- Implicit conversion. Occurs in reduce-side under Tez. +create table char_3 ( + field char(12) +) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_3 +PREHOOK: query: explain +insert into table char_3 select cint from alltypesorc limit 10 +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert into table char_3 select cint from alltypesorc limit 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: int) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: CAST( _col0 AS CHAR(12) (type: char(12)) + outputColumnNames: _col0 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.char_3 + Execution mode: vectorized + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.char_3 + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: insert into table char_3 select cint from alltypesorc limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@char_3 +POSTHOOK: query: insert into table char_3 select cint from alltypesorc limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@char_3 +POSTHOOK: Lineage: char_3.field EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +PREHOOK: query: drop table char_3 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_3 +PREHOOK: Output: default@char_3 +POSTHOOK: query: drop table char_3 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_3 +POSTHOOK: Output: default@char_3 diff --git a/ql/src/test/results/clientpositive/tez/vector_varchar_simple.q.out b/ql/src/test/results/clientpositive/tez/vector_varchar_simple.q.out index f0974149434f..f3d9147f129c 100644 --- a/ql/src/test/results/clientpositive/tez/vector_varchar_simple.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_varchar_simple.q.out @@ -1,31 +1,31 @@ -PREHOOK: query: drop table char_2 +PREHOOK: query: drop table varchar_2 PREHOOK: type: DROPTABLE -POSTHOOK: query: drop table char_2 +POSTHOOK: query: drop table varchar_2 POSTHOOK: type: DROPTABLE -PREHOOK: query: create table char_2 ( +PREHOOK: query: create table varchar_2 ( key varchar(10), value varchar(20) ) stored as orc PREHOOK: type: CREATETABLE PREHOOK: Output: database:default -PREHOOK: Output: default@char_2 -POSTHOOK: query: create table char_2 ( +PREHOOK: Output: default@varchar_2 +POSTHOOK: query: create table varchar_2 ( key varchar(10), value varchar(20) ) stored as orc POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default -POSTHOOK: Output: default@char_2 -PREHOOK: query: insert overwrite table char_2 select * from src +POSTHOOK: Output: default@varchar_2 +PREHOOK: query: insert overwrite table varchar_2 select * from src PREHOOK: type: QUERY PREHOOK: Input: default@src -PREHOOK: Output: default@char_2 -POSTHOOK: query: insert overwrite table char_2 select * from src +PREHOOK: Output: default@varchar_2 +POSTHOOK: query: insert overwrite table varchar_2 select * from src POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: default@char_2 -POSTHOOK: Lineage: char_2.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] -POSTHOOK: Lineage: char_2.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Output: default@varchar_2 +POSTHOOK: Lineage: varchar_2.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: varchar_2.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] PREHOOK: query: select key, value from src order by key asc @@ -46,12 +46,12 @@ POSTHOOK: Input: default@src 10 val_10 100 val_100 PREHOOK: query: explain select key, value -from char_2 +from varchar_2 order by key asc limit 5 PREHOOK: type: QUERY POSTHOOK: query: explain select key, value -from char_2 +from varchar_2 order by key asc limit 5 POSTHOOK: type: QUERY @@ -69,7 +69,7 @@ STAGE PLANS: Map 1 Map Operator Tree: TableScan - alias: char_2 + alias: varchar_2 Statistics: Num rows: 500 Data size: 88000 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: varchar(10)), value (type: varchar(20)) @@ -107,19 +107,19 @@ STAGE PLANS: PREHOOK: query: -- should match the query from src select key, value -from char_2 +from varchar_2 order by key asc limit 5 PREHOOK: type: QUERY -PREHOOK: Input: default@char_2 +PREHOOK: Input: default@varchar_2 #### A masked pattern was here #### POSTHOOK: query: -- should match the query from src select key, value -from char_2 +from varchar_2 order by key asc limit 5 POSTHOOK: type: QUERY -POSTHOOK: Input: default@char_2 +POSTHOOK: Input: default@varchar_2 #### A masked pattern was here #### 0 val_0 0 val_0 @@ -146,12 +146,12 @@ POSTHOOK: Input: default@src 97 val_97 96 val_96 PREHOOK: query: explain select key, value -from char_2 +from varchar_2 order by key desc limit 5 PREHOOK: type: QUERY POSTHOOK: query: explain select key, value -from char_2 +from varchar_2 order by key desc limit 5 POSTHOOK: type: QUERY @@ -169,7 +169,7 @@ STAGE PLANS: Map 1 Map Operator Tree: TableScan - alias: char_2 + alias: varchar_2 Statistics: Num rows: 500 Data size: 88000 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: varchar(10)), value (type: varchar(20)) @@ -207,30 +207,136 @@ STAGE PLANS: PREHOOK: query: -- should match the query from src select key, value -from char_2 +from varchar_2 order by key desc limit 5 PREHOOK: type: QUERY -PREHOOK: Input: default@char_2 +PREHOOK: Input: default@varchar_2 #### A masked pattern was here #### POSTHOOK: query: -- should match the query from src select key, value -from char_2 +from varchar_2 order by key desc limit 5 POSTHOOK: type: QUERY -POSTHOOK: Input: default@char_2 +POSTHOOK: Input: default@varchar_2 #### A masked pattern was here #### 98 val_98 98 val_98 97 val_97 97 val_97 96 val_96 -PREHOOK: query: drop table char_2 +PREHOOK: query: drop table varchar_2 PREHOOK: type: DROPTABLE -PREHOOK: Input: default@char_2 -PREHOOK: Output: default@char_2 -POSTHOOK: query: drop table char_2 +PREHOOK: Input: default@varchar_2 +PREHOOK: Output: default@varchar_2 +POSTHOOK: query: drop table varchar_2 POSTHOOK: type: DROPTABLE -POSTHOOK: Input: default@char_2 -POSTHOOK: Output: default@char_2 +POSTHOOK: Input: default@varchar_2 +POSTHOOK: Output: default@varchar_2 +PREHOOK: query: -- Implicit conversion. Occurs in reduce-side under Tez. +create table varchar_3 ( + field varchar(25) +) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_3 +POSTHOOK: query: -- Implicit conversion. Occurs in reduce-side under Tez. +create table varchar_3 ( + field varchar(25) +) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_3 +PREHOOK: query: explain +insert into table varchar_3 select cint from alltypesorc limit 10 +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert into table varchar_3 select cint from alltypesorc limit 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: int) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: CAST( _col0 AS varchar(25)) (type: varchar(25)) + outputColumnNames: _col0 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.varchar_3 + Execution mode: vectorized + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.varchar_3 + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: insert into table varchar_3 select cint from alltypesorc limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@varchar_3 +POSTHOOK: query: insert into table varchar_3 select cint from alltypesorc limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@varchar_3 +POSTHOOK: Lineage: varchar_3.field EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +PREHOOK: query: drop table varchar_3 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_3 +PREHOOK: Output: default@varchar_3 +POSTHOOK: query: drop table varchar_3 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_3 +POSTHOOK: Output: default@varchar_3 diff --git a/ql/src/test/results/clientpositive/vector_char_simple.q.out b/ql/src/test/results/clientpositive/vector_char_simple.q.out index 72dc8aaa128f..fbe1b40b8c11 100644 --- a/ql/src/test/results/clientpositive/vector_char_simple.q.out +++ b/ql/src/test/results/clientpositive/vector_char_simple.q.out @@ -220,3 +220,98 @@ POSTHOOK: query: drop table char_2 POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@char_2 POSTHOOK: Output: default@char_2 +PREHOOK: query: -- Implicit conversion. Occurs in reduce-side under Tez. +create table char_3 ( + field char(12) +) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@char_3 +POSTHOOK: query: -- Implicit conversion. Occurs in reduce-side under Tez. +create table char_3 ( + field char(12) +) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_3 +PREHOOK: query: explain +insert into table char_3 select cint from alltypesorc limit 10 +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert into table char_3 select cint from alltypesorc limit 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: int) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: CAST( _col0 AS CHAR(12) (type: char(12)) + outputColumnNames: _col0 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.char_3 + + Stage: Stage-0 + Move Operator + tables: + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.char_3 + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: insert into table char_3 select cint from alltypesorc limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@char_3 +POSTHOOK: query: insert into table char_3 select cint from alltypesorc limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@char_3 +POSTHOOK: Lineage: char_3.field EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +PREHOOK: query: drop table char_3 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_3 +PREHOOK: Output: default@char_3 +POSTHOOK: query: drop table char_3 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_3 +POSTHOOK: Output: default@char_3 diff --git a/ql/src/test/results/clientpositive/vector_varchar_simple.q.out b/ql/src/test/results/clientpositive/vector_varchar_simple.q.out index 1c77c39b4616..1c774afceee5 100644 --- a/ql/src/test/results/clientpositive/vector_varchar_simple.q.out +++ b/ql/src/test/results/clientpositive/vector_varchar_simple.q.out @@ -1,31 +1,31 @@ -PREHOOK: query: drop table char_2 +PREHOOK: query: drop table varchar_2 PREHOOK: type: DROPTABLE -POSTHOOK: query: drop table char_2 +POSTHOOK: query: drop table varchar_2 POSTHOOK: type: DROPTABLE -PREHOOK: query: create table char_2 ( +PREHOOK: query: create table varchar_2 ( key varchar(10), value varchar(20) ) stored as orc PREHOOK: type: CREATETABLE PREHOOK: Output: database:default -PREHOOK: Output: default@char_2 -POSTHOOK: query: create table char_2 ( +PREHOOK: Output: default@varchar_2 +POSTHOOK: query: create table varchar_2 ( key varchar(10), value varchar(20) ) stored as orc POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default -POSTHOOK: Output: default@char_2 -PREHOOK: query: insert overwrite table char_2 select * from src +POSTHOOK: Output: default@varchar_2 +PREHOOK: query: insert overwrite table varchar_2 select * from src PREHOOK: type: QUERY PREHOOK: Input: default@src -PREHOOK: Output: default@char_2 -POSTHOOK: query: insert overwrite table char_2 select * from src +PREHOOK: Output: default@varchar_2 +POSTHOOK: query: insert overwrite table varchar_2 select * from src POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: default@char_2 -POSTHOOK: Lineage: char_2.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] -POSTHOOK: Lineage: char_2.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Output: default@varchar_2 +POSTHOOK: Lineage: varchar_2.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: varchar_2.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] PREHOOK: query: select key, value from src order by key asc @@ -46,12 +46,12 @@ POSTHOOK: Input: default@src 10 val_10 100 val_100 PREHOOK: query: explain select key, value -from char_2 +from varchar_2 order by key asc limit 5 PREHOOK: type: QUERY POSTHOOK: query: explain select key, value -from char_2 +from varchar_2 order by key asc limit 5 POSTHOOK: type: QUERY @@ -64,7 +64,7 @@ STAGE PLANS: Map Reduce Map Operator Tree: TableScan - alias: char_2 + alias: varchar_2 Statistics: Num rows: 500 Data size: 88000 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: varchar(10)), value (type: varchar(20)) @@ -100,19 +100,19 @@ STAGE PLANS: PREHOOK: query: -- should match the query from src select key, value -from char_2 +from varchar_2 order by key asc limit 5 PREHOOK: type: QUERY -PREHOOK: Input: default@char_2 +PREHOOK: Input: default@varchar_2 #### A masked pattern was here #### POSTHOOK: query: -- should match the query from src select key, value -from char_2 +from varchar_2 order by key asc limit 5 POSTHOOK: type: QUERY -POSTHOOK: Input: default@char_2 +POSTHOOK: Input: default@varchar_2 #### A masked pattern was here #### 0 val_0 0 val_0 @@ -139,12 +139,12 @@ POSTHOOK: Input: default@src 97 val_97 96 val_96 PREHOOK: query: explain select key, value -from char_2 +from varchar_2 order by key desc limit 5 PREHOOK: type: QUERY POSTHOOK: query: explain select key, value -from char_2 +from varchar_2 order by key desc limit 5 POSTHOOK: type: QUERY @@ -157,7 +157,7 @@ STAGE PLANS: Map Reduce Map Operator Tree: TableScan - alias: char_2 + alias: varchar_2 Statistics: Num rows: 500 Data size: 88000 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: varchar(10)), value (type: varchar(20)) @@ -193,30 +193,125 @@ STAGE PLANS: PREHOOK: query: -- should match the query from src select key, value -from char_2 +from varchar_2 order by key desc limit 5 PREHOOK: type: QUERY -PREHOOK: Input: default@char_2 +PREHOOK: Input: default@varchar_2 #### A masked pattern was here #### POSTHOOK: query: -- should match the query from src select key, value -from char_2 +from varchar_2 order by key desc limit 5 POSTHOOK: type: QUERY -POSTHOOK: Input: default@char_2 +POSTHOOK: Input: default@varchar_2 #### A masked pattern was here #### 98 val_98 98 val_98 97 val_97 97 val_97 96 val_96 -PREHOOK: query: drop table char_2 +PREHOOK: query: drop table varchar_2 PREHOOK: type: DROPTABLE -PREHOOK: Input: default@char_2 -PREHOOK: Output: default@char_2 -POSTHOOK: query: drop table char_2 +PREHOOK: Input: default@varchar_2 +PREHOOK: Output: default@varchar_2 +POSTHOOK: query: drop table varchar_2 POSTHOOK: type: DROPTABLE -POSTHOOK: Input: default@char_2 -POSTHOOK: Output: default@char_2 +POSTHOOK: Input: default@varchar_2 +POSTHOOK: Output: default@varchar_2 +PREHOOK: query: -- Implicit conversion. Occurs in reduce-side under Tez. +create table varchar_3 ( + field varchar(25) +) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_3 +POSTHOOK: query: -- Implicit conversion. Occurs in reduce-side under Tez. +create table varchar_3 ( + field varchar(25) +) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_3 +PREHOOK: query: explain +insert into table varchar_3 select cint from alltypesorc limit 10 +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert into table varchar_3 select cint from alltypesorc limit 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: int) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: CAST( _col0 AS varchar(25)) (type: varchar(25)) + outputColumnNames: _col0 + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 300 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.varchar_3 + + Stage: Stage-0 + Move Operator + tables: + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.varchar_3 + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: insert into table varchar_3 select cint from alltypesorc limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@varchar_3 +POSTHOOK: query: insert into table varchar_3 select cint from alltypesorc limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@varchar_3 +POSTHOOK: Lineage: varchar_3.field EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +PREHOOK: query: drop table varchar_3 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_3 +PREHOOK: Output: default@varchar_3 +POSTHOOK: query: drop table varchar_3 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_3 +POSTHOOK: Output: default@varchar_3 From 66dd76d8b7badb6cefd2d95dcd78743f16c6d67e Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Sat, 27 Sep 2014 00:24:53 +0000 Subject: [PATCH 011/339] HIVE-8114: Type resolution for udf arguments of Decimal Type results in error (Jason Dere, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627913 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/udf/UDFLog.java | 23 --- .../hadoop/hive/ql/udf/TestUDFMath.java | 8 - .../queries/clientpositive/decimal_udf2.q | 30 ++++ .../results/clientpositive/decimal_udf2.q.out | 148 ++++++++++++++++++ 4 files changed, 178 insertions(+), 31 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/decimal_udf2.q create mode 100644 ql/src/test/results/clientpositive/decimal_udf2.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java index cf25bfe710af..31e2878c5808 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java @@ -51,29 +51,6 @@ public DoubleWritable evaluate(DoubleWritable base, DoubleWritable a) { return log(base.get(), a.get()); } - /** - * Get the logarithm of the given decimal with the given base. - */ - public DoubleWritable evaluate(DoubleWritable base, HiveDecimalWritable writable) { - if (base == null || writable == null) { - return null; - } - double d = writable.getHiveDecimal().bigDecimalValue().doubleValue(); - return log(base.get(), d); - } - - /** - * Get the logarithm of input with the given decimal as the base. - */ - public DoubleWritable evaluate(HiveDecimalWritable base, DoubleWritable d) { - if (base == null || d == null) { - return null; - } - - double b = base.getHiveDecimal().bigDecimalValue().doubleValue(); - return log(b, d.get()); - } - /** * Get the logarithm of the given decimal input with the given decimal base. */ diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFMath.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFMath.java index 8cf04523ffaf..98da39723208 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFMath.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFMath.java @@ -98,14 +98,6 @@ public void testLog() throws HiveException { input = createDecimal("7.38905609893065"); DoubleWritable res = udf.evaluate(input); Assert.assertEquals(2.0, res.get(), 0.000001); - - DoubleWritable input = new DoubleWritable(9.0); - res = udf.evaluate(createDecimal("3.0"), input); - Assert.assertEquals(2.0, res.get(), 0.000001); - - DoubleWritable base = new DoubleWritable(3.0); - res = udf.evaluate(base, createDecimal("9.0")); - Assert.assertEquals(2.0, res.get(), 0.000001); res = udf.evaluate(createDecimal("3.0"), createDecimal("9.0")); Assert.assertEquals(2.0, res.get(), 0.000001); diff --git a/ql/src/test/queries/clientpositive/decimal_udf2.q b/ql/src/test/queries/clientpositive/decimal_udf2.q new file mode 100644 index 000000000000..d4f60849b5c1 --- /dev/null +++ b/ql/src/test/queries/clientpositive/decimal_udf2.q @@ -0,0 +1,30 @@ +DROP TABLE IF EXISTS DECIMAL_UDF2; + +CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2; + +EXPLAIN +SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10; + +SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10; + +EXPLAIN +SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10; + +SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10; + +DROP TABLE IF EXISTS DECIMAL_UDF2; diff --git a/ql/src/test/results/clientpositive/decimal_udf2.q.out b/ql/src/test/results/clientpositive/decimal_udf2.q.out new file mode 100644 index 000000000000..d8511d6135bf --- /dev/null +++ b/ql/src/test/results/clientpositive/decimal_udf2.q.out @@ -0,0 +1,148 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_UDF2 +POSTHOOK: query: CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_UDF2 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_udf2 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_udf2 +PREHOOK: query: EXPLAIN +SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf2 + Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key = 10) (type: boolean) + Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: acos(key) (type: double), asin(key) (type: double), atan(key) (type: double), cos(key) (type: double), sin(key) (type: double), tan(key) (type: double), radians(key) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 + Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +NaN NaN 1.4711276743037347 -0.8390715290764524 -0.5440211108893698 0.6483608274590866 0.17453292519943295 +PREHOOK: query: EXPLAIN +SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf2 + Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key = 10) (type: boolean) + Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: exp(key) (type: double), ln(key) (type: double), log(key) (type: double), log(key, key) (type: double), log(key, value) (type: double), log(value, key) (type: double), log10(key) (type: double), sqrt(key) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +22026.465794806718 2.302585092994046 2.302585092994046 1.0 1.0 1.0 1.0 3.1622776601683795 +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_udf2 +PREHOOK: Output: default@decimal_udf2 +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_udf2 +POSTHOOK: Output: default@decimal_udf2 From 472bed42dc40f29c3a0c9aa98d8e434d225d0f45 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Sat, 27 Sep 2014 00:39:46 +0000 Subject: [PATCH 012/339] HIVE-8203 ACID operations result in NPE when run through HS2 (Alan Gates, reviewed by Eugene Koifman) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1627915 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/metastore/TestHiveMetaStoreTxns.java | 15 ++++++++++++++ .../hive/metastore/HiveMetaStoreClient.java | 7 ++++++- .../hive/metastore/IMetaStoreClient.java | 9 +++++++++ .../hadoop/hive/metastore/txn/TxnHandler.java | 14 +++++++++++-- .../org/apache/hadoop/hive/ql/Driver.java | 20 +++++++++---------- .../hadoop/hive/ql/lockmgr/DbTxnManager.java | 2 +- .../hive/ql/txn/compactor/Initiator.java | 2 +- .../hadoop/hive/ql/txn/compactor/Worker.java | 2 +- 8 files changed, 54 insertions(+), 17 deletions(-) diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStoreTxns.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStoreTxns.java index 7b86b0c26b18..7f0a6b3b7dae 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStoreTxns.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStoreTxns.java @@ -75,6 +75,21 @@ public void testTxns() throws Exception { Assert.assertFalse(validTxns.isTxnCommitted(4)); } + @Test + public void testOpenTxnNotExcluded() throws Exception { + List tids = client.openTxns("me", 3).getTxn_ids(); + Assert.assertEquals(1L, (long) tids.get(0)); + Assert.assertEquals(2L, (long) tids.get(1)); + Assert.assertEquals(3L, (long) tids.get(2)); + client.rollbackTxn(1); + client.commitTxn(2); + ValidTxnList validTxns = client.getValidTxns(3); + Assert.assertFalse(validTxns.isTxnCommitted(1)); + Assert.assertTrue(validTxns.isTxnCommitted(2)); + Assert.assertTrue(validTxns.isTxnCommitted(3)); + Assert.assertFalse(validTxns.isTxnCommitted(4)); + } + @Test public void testTxnRange() throws Exception { ValidTxnList validTxns = client.getValidTxns(); diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java index 800008194123..94c22450e417 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -1689,7 +1689,12 @@ public void cancelDelegationToken(String tokenStrForm) throws MetaException, TEx @Override public ValidTxnList getValidTxns() throws TException { - return TxnHandler.createValidTxnList(client.get_open_txns()); + return TxnHandler.createValidTxnList(client.get_open_txns(), 0); + } + + @Override + public ValidTxnList getValidTxns(long currentTxn) throws TException { + return TxnHandler.createValidTxnList(client.get_open_txns(), currentTxn); } @Override diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java b/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java index 98739f3871a9..066ab68443fd 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java @@ -1085,6 +1085,15 @@ List getFunctions(String dbName, String pattern) */ ValidTxnList getValidTxns() throws TException; + /** + * Get a structure that details valid transactions. + * @param currentTxn The current transaction of the caller. This will be removed from the + * exceptions list so that the caller sees records from his own transaction. + * @return list of valid transactions + * @throws TException + */ + ValidTxnList getValidTxns(long currentTxn) throws TException; + /** * Initiate a transaction. * @param user User who is opening this transaction. This is the Hive user, diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java index b71bb41e9fc4..6f44169af90e 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java @@ -233,12 +233,22 @@ public GetOpenTxnsResponse getOpenTxns() throws MetaException { } } - public static ValidTxnList createValidTxnList(GetOpenTxnsResponse txns) { + /** + * Transform a {@link org.apache.hadoop.hive.metastore.api.GetOpenTxnsResponse} to a + * {@link org.apache.hadoop.hive.common.ValidTxnList}. + * @param txns txn list from the metastore + * @param currentTxn Current transaction that the user has open. If this is greater than 0 it + * will be removed from the exceptions list so that the user sees his own + * transaction as valid. + * @return a valid txn list. + */ + public static ValidTxnList createValidTxnList(GetOpenTxnsResponse txns, long currentTxn) { long highWater = txns.getTxn_high_water_mark(); Set open = txns.getOpen_txns(); - long[] exceptions = new long[open.size()]; + long[] exceptions = new long[open.size() - (currentTxn > 0 ? 1 : 0)]; int i = 0; for(long txn: open) { + if (currentTxn > 0 && currentTxn == txn) continue; exceptions[i++] = txn; } return new ValidTxnListImpl(exceptions, highWater); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java index 5e4659015f5a..4826abcc4fce 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java @@ -390,6 +390,9 @@ public int compile(String command, boolean resetTaskIds) { tree = ParseUtils.findRootNonNullToken(tree); perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.PARSE); + // Initialize the transaction manager. This must be done before analyze is called + SessionState.get().initTxnMgr(conf); + perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.ANALYZE); BaseSemanticAnalyzer sem = SemanticAnalyzerFactory.get(conf, tree); List saHooks = @@ -889,9 +892,12 @@ private int recordValidTxns() { /** * Acquire read and write locks needed by the statement. The list of objects to be locked are - * obtained from he inputs and outputs populated by the compiler. The lock acuisition scheme is + * obtained from the inputs and outputs populated by the compiler. The lock acuisition scheme is * pretty simple. If all the locks cannot be obtained, error out. Deadlock is avoided by making * sure that the locks are lexicographically sorted. + * + * This method also records the list of valid transactions. This must be done after any + * transactions have been opened and locks acquired. **/ private int acquireLocksAndOpenTxn() { PerfLogger perfLogger = PerfLogger.getPerfLogger(); @@ -931,7 +937,7 @@ private int acquireLocksAndOpenTxn() { txnMgr.acquireLocks(plan, ctx, userFromUGI); - return 0; + return recordValidTxns(); } catch (LockException e) { errorMessage = "FAILED: Error in acquiring locks: " + e.getMessage(); SQLState = ErrorMsg.findSQLState(e.getMessage()); @@ -1108,11 +1114,6 @@ private CommandProcessorResponse runInternal(String command, boolean alreadyComp SessionState ss = SessionState.get(); try { ckLock = checkConcurrency(); - try { - ss.initTxnMgr(conf); - } catch (LockException e) { - throw new SemanticException(e.getMessage(), e); - } } catch (SemanticException e) { errorMessage = "FAILED: Error in semantic analysis: " + e.getMessage(); SQLState = ErrorMsg.findSQLState(e.getMessage()); @@ -1121,11 +1122,8 @@ private CommandProcessorResponse runInternal(String command, boolean alreadyComp + org.apache.hadoop.util.StringUtils.stringifyException(e)); return createProcessorResponse(10); } - int ret = recordValidTxns(); - if (ret != 0) { - return createProcessorResponse(ret); - } + int ret; if (!alreadyCompiled) { ret = compileInternal(command); if (ret != 0) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java b/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java index 8f7c759d9cff..46b441a13d6d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java @@ -286,7 +286,7 @@ public void heartbeat() throws LockException { public ValidTxnList getValidTxns() throws LockException { init(); try { - return client.getValidTxns(); + return client.getValidTxns(txnId); } catch (TException e) { throw new LockException(ErrorMsg.METASTORE_COMMUNICATION_FAILED.getMsg(), e); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Initiator.java b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Initiator.java index 4b0009fa0eb0..c1d0fe11c709 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Initiator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Initiator.java @@ -76,7 +76,7 @@ public void run() { // don't doom the entire thread. try { ShowCompactResponse currentCompactions = txnHandler.showCompact(new ShowCompactRequest()); - ValidTxnList txns = TxnHandler.createValidTxnList(txnHandler.getOpenTxns()); + ValidTxnList txns = TxnHandler.createValidTxnList(txnHandler.getOpenTxns(), 0); Set potentials = txnHandler.findPotentialCompactions(abortedThreshold); LOG.debug("Found " + potentials.size() + " potential compactions, " + "checking to see if we should compact any of them"); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Worker.java b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Worker.java index 347bf65d199a..249fece426f0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Worker.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Worker.java @@ -120,7 +120,7 @@ public void run() { final boolean isMajor = ci.isMajorCompaction(); final ValidTxnList txns = - TxnHandler.createValidTxnList(txnHandler.getOpenTxns()); + TxnHandler.createValidTxnList(txnHandler.getOpenTxns(), 0); final StringBuffer jobName = new StringBuffer(name); jobName.append("-compactor-"); jobName.append(ci.getFullPartitionName()); From f2845f50c0191ba7f1869bc40e77d6bce577d3aa Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Sun, 28 Sep 2014 06:16:21 +0000 Subject: [PATCH 013/339] HIVE-8162: Dynamic sort optimization propagates additional columns even in the absence of order by (Prasanth J reviewed by Vikram Dixit) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628045 13f79535-47bb-0310-9956-ffa450edef68 --- .../SortedDynPartitionOptimizer.java | 3 +- .../dynpart_sort_opt_vectorization.q | 7 + .../dynpart_sort_optimization.q | 7 + .../dynpart_sort_opt_vectorization.q.out | 248 +++++++++++++++++ .../dynpart_sort_optimization.q.out | 245 +++++++++++++++++ .../infer_bucket_sort_dyn_part.q.out | 12 +- .../tez/dynpart_sort_opt_vectorization.q.out | 260 ++++++++++++++++++ .../tez/dynpart_sort_optimization.q.out | 255 +++++++++++++++++ 8 files changed, 1030 insertions(+), 7 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java index cbb59ae8b948..e3313e9f4318 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java @@ -395,7 +395,8 @@ public ReduceSinkDesc getReduceSinkDesc(List partitionPositions, // should honor the ordering of records provided by ORDER BY in SELECT statement ReduceSinkOperator parentRSOp = OperatorUtils.findSingleOperatorUpstream(parent, ReduceSinkOperator.class); - if (parentRSOp != null) { + boolean isOrderBy = parseCtx.getQB().getParseInfo().getDestToOrderBy().size() > 0; + if (parentRSOp != null && isOrderBy) { String parentRSOpOrder = parentRSOp.getConf().getOrder(); if (parentRSOpOrder != null && !parentRSOpOrder.isEmpty() && sortPositions.isEmpty()) { newKeyCols.addAll(parentRSOp.getConf().getKeyCols()); diff --git a/ql/src/test/queries/clientpositive/dynpart_sort_opt_vectorization.q b/ql/src/test/queries/clientpositive/dynpart_sort_opt_vectorization.q index ce5a5b718819..78816ae94cd9 100644 --- a/ql/src/test/queries/clientpositive/dynpart_sort_opt_vectorization.q +++ b/ql/src/test/queries/clientpositive/dynpart_sort_opt_vectorization.q @@ -108,6 +108,13 @@ set hive.optimize.sort.dynamic.partition=false; explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 order by i; set hive.optimize.sort.dynamic.partition=true; explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 order by i; +explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from (select * from over1k_orc order by i limit 10) tmp where t is null or t=27; + +set hive.optimize.sort.dynamic.partition=false; +explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 group by si,i,b,f,t; +set hive.optimize.sort.dynamic.partition=true; +-- tests for HIVE-8162, only partition column 't' should be in last RS operator +explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 group by si,i,b,f,t; set hive.optimize.sort.dynamic.partition=false; insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 order by i; diff --git a/ql/src/test/queries/clientpositive/dynpart_sort_optimization.q b/ql/src/test/queries/clientpositive/dynpart_sort_optimization.q index 8c3c68f83ae6..e4595838d58c 100644 --- a/ql/src/test/queries/clientpositive/dynpart_sort_optimization.q +++ b/ql/src/test/queries/clientpositive/dynpart_sort_optimization.q @@ -102,6 +102,13 @@ set hive.optimize.sort.dynamic.partition=false; explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 order by i; set hive.optimize.sort.dynamic.partition=true; explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 order by i; +explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from (select * from over1k order by i limit 10) tmp where t is null or t=27; + +set hive.optimize.sort.dynamic.partition=false; +explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 group by si,i,b,f,t; +set hive.optimize.sort.dynamic.partition=true; +-- tests for HIVE-8162, only partition column 't' should be in last RS operator +explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 group by si,i,b,f,t; set hive.optimize.sort.dynamic.partition=false; insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 order by i; diff --git a/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out b/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out index 04cf0001a9aa..09a57efe2fa6 100644 --- a/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out +++ b/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out @@ -1408,6 +1408,254 @@ STAGE PLANS: Stage: Stage-3 Stats-Aggr Operator +PREHOOK: query: explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from (select * from over1k_orc order by i limit 10) tmp where t is null or t=27 +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from (select * from over1k_orc order by i limit 10) tmp where t is null or t=27 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: over1k_orc + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: t (type: tinyint), si (type: smallint), i (type: int), b (type: bigint), f (type: float) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col2 (type: int) + sort order: + + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col3 (type: bigint), _col4 (type: float) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: tinyint), VALUE._col1 (type: smallint), KEY.reducesinkkey0 (type: int), VALUE._col2 (type: bigint), VALUE._col3 (type: float) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (_col0 is null or (_col0 = 27)) (type: boolean) + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: smallint), _col2 (type: int), _col3 (type: bigint), _col4 (type: float), _col0 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col4 (type: tinyint) + sort order: + + Map-reduce partition columns: _col4 (type: tinyint) + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Reduce Operator Tree: + Extract + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 group by si,i,b,f,t +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 group by si,i,b,f,t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: over1k_orc + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (t is null or (t = 27)) (type: boolean) + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + outputColumnNames: si, i, b, f, t + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + sort order: +++++ + Map-reduce partition columns: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: smallint), KEY._col1 (type: int), KEY._col2 (type: bigint), KEY._col3 (type: float), KEY._col4 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: -- tests for HIVE-8162, only partition column 't' should be in last RS operator +explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 group by si,i,b,f,t +PREHOOK: type: QUERY +POSTHOOK: query: -- tests for HIVE-8162, only partition column 't' should be in last RS operator +explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 group by si,i,b,f,t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: over1k_orc + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (t is null or (t = 27)) (type: boolean) + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + outputColumnNames: si, i, b, f, t + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + sort order: +++++ + Map-reduce partition columns: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: smallint), KEY._col1 (type: int), KEY._col2 (type: bigint), KEY._col3 (type: float), KEY._col4 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col4 (type: tinyint) + sort order: + + Map-reduce partition columns: _col4 (type: tinyint) + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Reduce Operator Tree: + Extract + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-3 + Stats-Aggr Operator + PREHOOK: query: insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 order by i PREHOOK: type: QUERY PREHOOK: Input: default@over1k_orc diff --git a/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out b/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out index 941aa9efd104..549169f68b3e 100644 --- a/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out +++ b/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out @@ -1311,6 +1311,251 @@ STAGE PLANS: Stage: Stage-3 Stats-Aggr Operator +PREHOOK: query: explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from (select * from over1k order by i limit 10) tmp where t is null or t=27 +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from (select * from over1k order by i limit 10) tmp where t is null or t=27 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: over1k + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: t (type: tinyint), si (type: smallint), i (type: int), b (type: bigint), f (type: float) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col2 (type: int) + sort order: + + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col3 (type: bigint), _col4 (type: float) + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: tinyint), VALUE._col1 (type: smallint), KEY.reducesinkkey0 (type: int), VALUE._col2 (type: bigint), VALUE._col3 (type: float) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (_col0 is null or (_col0 = 27)) (type: boolean) + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: smallint), _col2 (type: int), _col3 (type: bigint), _col4 (type: float), _col0 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col4 (type: tinyint) + sort order: + + Map-reduce partition columns: _col4 (type: tinyint) + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Reduce Operator Tree: + Extract + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 group by si,i,b,f,t +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 group by si,i,b,f,t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: over1k + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (t is null or (t = 27)) (type: boolean) + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + outputColumnNames: si, i, b, f, t + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + sort order: +++++ + Map-reduce partition columns: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: smallint), KEY._col1 (type: int), KEY._col2 (type: bigint), KEY._col3 (type: float), KEY._col4 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: -- tests for HIVE-8162, only partition column 't' should be in last RS operator +explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 group by si,i,b,f,t +PREHOOK: type: QUERY +POSTHOOK: query: -- tests for HIVE-8162, only partition column 't' should be in last RS operator +explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 group by si,i,b,f,t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: over1k + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (t is null or (t = 27)) (type: boolean) + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + outputColumnNames: si, i, b, f, t + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + sort order: +++++ + Map-reduce partition columns: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: smallint), KEY._col1 (type: int), KEY._col2 (type: bigint), KEY._col3 (type: float), KEY._col4 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col4 (type: tinyint) + sort order: + + Map-reduce partition columns: _col4 (type: tinyint) + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Reduce Operator Tree: + Extract + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-3 + Stats-Aggr Operator + PREHOOK: query: insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 order by i PREHOOK: type: QUERY PREHOOK: Input: default@over1k diff --git a/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out b/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out index 1a6dae8e0329..2b1ec58615c5 100644 --- a/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out +++ b/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out @@ -231,7 +231,7 @@ Partition Parameters: numFiles 1 numRows 0 rawDataSize 0 - totalSize 1342 + totalSize 1381 #### A masked pattern was here #### # Storage Information @@ -302,7 +302,7 @@ Partition Parameters: numFiles 1 numRows 0 rawDataSize 0 - totalSize 719 + totalSize 722 #### A masked pattern was here #### # Storage Information @@ -344,7 +344,7 @@ Partition Parameters: numFiles 1 numRows 0 rawDataSize 0 - totalSize 722 + totalSize 741 #### A masked pattern was here #### # Storage Information @@ -523,8 +523,8 @@ STAGE PLANS: Map Operator Tree: TableScan Reduce Output Operator - key expressions: _col2 (type: string), _col0 (type: string) - sort order: ++ + key expressions: _col2 (type: string) + sort order: + Map-reduce partition columns: _col2 (type: string) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) @@ -681,7 +681,7 @@ Partition Parameters: numFiles 1 numRows 0 rawDataSize 0 - totalSize 1341 + totalSize 1346 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out index 53dfb2caee84..b43f0c97c766 100644 --- a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out @@ -1463,6 +1463,266 @@ STAGE PLANS: Stage: Stage-3 Stats-Aggr Operator +PREHOOK: query: explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from (select * from over1k_orc order by i limit 10) tmp where t is null or t=27 +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from (select * from over1k_orc order by i limit 10) tmp where t is null or t=27 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: over1k_orc + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: t (type: tinyint), si (type: smallint), i (type: int), b (type: bigint), f (type: float) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col2 (type: int) + sort order: + + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col3 (type: bigint), _col4 (type: float) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: tinyint), VALUE._col1 (type: smallint), KEY.reducesinkkey0 (type: int), VALUE._col2 (type: bigint), VALUE._col3 (type: float) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (_col0 is null or (_col0 = 27)) (type: boolean) + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: smallint), _col2 (type: int), _col3 (type: bigint), _col4 (type: float), _col0 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col4 (type: tinyint) + sort order: + + Map-reduce partition columns: _col4 (type: tinyint) + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Execution mode: vectorized + Reducer 3 + Reduce Operator Tree: + Extract + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 2960 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 group by si,i,b,f,t +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 group by si,i,b,f,t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: over1k_orc + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (t is null or (t = 27)) (type: boolean) + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + outputColumnNames: si, i, b, f, t + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + sort order: +++++ + Map-reduce partition columns: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: smallint), KEY._col1 (type: int), KEY._col2 (type: bigint), KEY._col3 (type: float), KEY._col4 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: -- tests for HIVE-8162, only partition column 't' should be in last RS operator +explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 group by si,i,b,f,t +PREHOOK: type: QUERY +POSTHOOK: query: -- tests for HIVE-8162, only partition column 't' should be in last RS operator +explain insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 group by si,i,b,f,t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: over1k_orc + Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (t is null or (t = 27)) (type: boolean) + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + outputColumnNames: si, i, b, f, t + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + sort order: +++++ + Map-reduce partition columns: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: smallint), KEY._col1 (type: int), KEY._col2 (type: bigint), KEY._col3 (type: float), KEY._col4 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col4 (type: tinyint) + sort order: + + Map-reduce partition columns: _col4 (type: tinyint) + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Execution mode: vectorized + Reducer 3 + Reduce Operator Tree: + Extract + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 524 Data size: 155436 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2_orc + + Stage: Stage-3 + Stats-Aggr Operator + PREHOOK: query: insert overwrite table over1k_part2_orc partition(ds="foo",t) select si,i,b,f,t from over1k_orc where t is null or t=27 order by i PREHOOK: type: QUERY PREHOOK: Input: default@over1k_orc diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out index e2f86731381a..5ff3e49a4e22 100644 --- a/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out @@ -1381,6 +1381,261 @@ STAGE PLANS: Stage: Stage-3 Stats-Aggr Operator +PREHOOK: query: explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from (select * from over1k order by i limit 10) tmp where t is null or t=27 +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from (select * from over1k order by i limit 10) tmp where t is null or t=27 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: over1k + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: t (type: tinyint), si (type: smallint), i (type: int), b (type: bigint), f (type: float) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col2 (type: int) + sort order: + + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: tinyint), _col1 (type: smallint), _col3 (type: bigint), _col4 (type: float) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: tinyint), VALUE._col1 (type: smallint), KEY.reducesinkkey0 (type: int), VALUE._col2 (type: bigint), VALUE._col3 (type: float) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (_col0 is null or (_col0 = 27)) (type: boolean) + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: smallint), _col2 (type: int), _col3 (type: bigint), _col4 (type: float), _col0 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col4 (type: tinyint) + sort order: + + Map-reduce partition columns: _col4 (type: tinyint) + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Reducer 3 + Reduce Operator Tree: + Extract + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 240 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 group by si,i,b,f,t +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 group by si,i,b,f,t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: over1k + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (t is null or (t = 27)) (type: boolean) + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + outputColumnNames: si, i, b, f, t + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + sort order: +++++ + Map-reduce partition columns: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: smallint), KEY._col1 (type: int), KEY._col2 (type: bigint), KEY._col3 (type: float), KEY._col4 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: -- tests for HIVE-8162, only partition column 't' should be in last RS operator +explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 group by si,i,b,f,t +PREHOOK: type: QUERY +POSTHOOK: query: -- tests for HIVE-8162, only partition column 't' should be in last RS operator +explain insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 group by si,i,b,f,t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: over1k + Statistics: Num rows: 4443 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (t is null or (t = 27)) (type: boolean) + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + outputColumnNames: si, i, b, f, t + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: si (type: smallint), i (type: int), b (type: bigint), f (type: float), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + sort order: +++++ + Map-reduce partition columns: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: smallint), KEY._col1 (type: int), KEY._col2 (type: bigint), KEY._col3 (type: float), KEY._col4 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col4 (type: tinyint) + sort order: + + Map-reduce partition columns: _col4 (type: tinyint) + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + Reducer 3 + Reduce Operator Tree: + Extract + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2221 Data size: 53305 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ds foo + t + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part2 + + Stage: Stage-3 + Stats-Aggr Operator + PREHOOK: query: insert overwrite table over1k_part2 partition(ds="foo",t) select si,i,b,f,t from over1k where t is null or t=27 order by i PREHOOK: type: QUERY PREHOOK: Input: default@over1k From dcdd8f75602cb32be6083f10c169e8a2fb9588b0 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Sun, 28 Sep 2014 08:49:47 +0000 Subject: [PATCH 014/339] HIVE-8246: HiveServer2 in http-kerberos mode is restrictive on client usernames (Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628053 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/service/auth/HttpAuthUtils.java | 2 +- .../service/cli/thrift/ThriftHttpServlet.java | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java b/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java index 82093fad06ac..07e8c9a4627d 100644 --- a/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java +++ b/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java @@ -62,7 +62,7 @@ public static String getKerberosServiceTicket(String principal, String host, Str String serverPrincipal = getServerPrincipal(principal, host); // Uses the Ticket Granting Ticket in the UserGroupInformation return clientUGI.doAs( - new HttpKerberosClientAction(serverPrincipal, clientUGI.getShortUserName(), serverHttpUrl)); + new HttpKerberosClientAction(serverPrincipal, clientUGI.getUserName(), serverHttpUrl)); } /** diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java index 99ef8bc531d3..312d05e32aa0 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java @@ -32,6 +32,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.security.authentication.util.KerberosName; import org.apache.hive.service.auth.AuthenticationProviderFactory; import org.apache.hive.service.auth.AuthenticationProviderFactory.AuthMethods; import org.apache.hive.service.auth.HiveAuthFactory; @@ -219,7 +220,7 @@ public String run() throws HttpAuthenticationException { "provided by the client."); } else { - return getPrincipalWithoutRealm(gssContext.getSrcName().toString()); + return getPrincipalWithoutRealmAndHost(gssContext.getSrcName().toString()); } } catch (GSSException e) { @@ -237,8 +238,19 @@ public String run() throws HttpAuthenticationException { } private String getPrincipalWithoutRealm(String fullPrincipal) { - String names[] = fullPrincipal.split("[@]"); - return names[0]; + KerberosName fullKerberosName = new KerberosName(fullPrincipal); + String serviceName = fullKerberosName.getServiceName(); + String hostName = fullKerberosName.getHostName(); + String principalWithoutRealm = serviceName; + if (hostName != null) { + principalWithoutRealm = serviceName + "/" + hostName; + } + return principalWithoutRealm; + } + + private String getPrincipalWithoutRealmAndHost(String fullPrincipal) { + KerberosName fullKerberosName = new KerberosName(fullPrincipal); + return fullKerberosName.getServiceName(); } } From 1bd746cb3242f4919ebdbce8a7d2e544ee82444f Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Sun, 28 Sep 2014 17:44:01 +0000 Subject: [PATCH 015/339] HIVE-8277 : IP address string in HS2, metastore have a "/" prefix (Thejas Nair, reviewed by Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628091 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/metastore/TestRemoteHiveMetaStoreIpAddress.java | 3 +++ .../hive/jdbc/authorization/TestHS2AuthzContext.java | 3 ++- .../hadoop/hive/metastore/TSetIpAddressProcessor.java | 2 +- .../apache/hadoop/hive/metastore/IpAddressListener.java | 9 ++------- .../apache/hive/service/auth/TSetIpAddressProcessor.java | 2 +- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestRemoteHiveMetaStoreIpAddress.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestRemoteHiveMetaStoreIpAddress.java index 7600e997f9db..63eea2710a2a 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestRemoteHiveMetaStoreIpAddress.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestRemoteHiveMetaStoreIpAddress.java @@ -21,6 +21,7 @@ import junit.framework.TestCase; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.util.StringUtils; @@ -49,6 +50,8 @@ protected void setUp() throws Exception { int port = MetaStoreUtils.findFreePort(); System.out.println("Starting MetaStore Server on port " + port); + System.setProperty(ConfVars.METASTORE_EVENT_LISTENERS.varname, + IpAddressListener.class.getName()); MetaStoreUtils.startMetaStore(port, ShimLoader.getHadoopThriftAuthBridge()); isServerStarted = true; diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestHS2AuthzContext.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestHS2AuthzContext.java index d03dba4f9b88..0bb3c0a5eac1 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestHS2AuthzContext.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestHS2AuthzContext.java @@ -120,9 +120,10 @@ private void verifyContextContents(final String cmd, String ctxCmd) throws SQLEx HiveAuthzContext context = contextCapturer.getValue(); assertEquals("Command ", ctxCmd, context.getCommandString()); - assertTrue("ip address pattern check", context.getIpAddress().contains(".")); + assertTrue("ip address pattern check", context.getIpAddress().matches("[.:a-fA-F0-9]+")); // ip address size check - check for something better than non zero assertTrue("ip address size check", context.getIpAddress().length() > 7); + } private Connection getConnection(String userName) throws SQLException { diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/TSetIpAddressProcessor.java b/metastore/src/java/org/apache/hadoop/hive/metastore/TSetIpAddressProcessor.java index cfab73a6f0d9..4a56bfaddcbd 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/TSetIpAddressProcessor.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/TSetIpAddressProcessor.java @@ -57,6 +57,6 @@ protected void setIpAddress(final TProtocol in) { } protected void setIpAddress(final Socket inSocket) { - HMSHandler.setIpAddress(inSocket.getInetAddress().toString()); + HMSHandler.setIpAddress(inSocket.getInetAddress().getHostAddress()); } } diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/IpAddressListener.java b/metastore/src/test/org/apache/hadoop/hive/metastore/IpAddressListener.java index ed0f71331534..d8ec2814aaed 100644 --- a/metastore/src/test/org/apache/hadoop/hive/metastore/IpAddressListener.java +++ b/metastore/src/test/org/apache/hadoop/hive/metastore/IpAddressListener.java @@ -47,15 +47,10 @@ public IpAddressListener(Configuration config) { super(config); } - private String getIpFromInetAddress(String addr) { - return addr.substring(addr.indexOf('/') + 1); - } - private void checkIpAddress() { try { - String localhostIp = InetAddress.getByName(LOCAL_HOST).toString(); - Assert.assertEquals(getIpFromInetAddress(localhostIp), - getIpFromInetAddress(HMSHandler.getIpAddress())); + String localhostIp = InetAddress.getByName(LOCAL_HOST).getHostAddress(); + Assert.assertEquals(localhostIp, HMSHandler.getIpAddress()); } catch (UnknownHostException e) { Assert.assertTrue("InetAddress.getLocalHost threw an exception: " + e.getMessage(), false); } diff --git a/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java b/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java index 19722f2f785c..0149dcf392de 100644 --- a/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java +++ b/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java @@ -75,7 +75,7 @@ protected void setIpAddress(final TProtocol in) { if (tSocket == null) { LOGGER.warn("Unknown Transport, cannot determine ipAddress"); } else { - THREAD_LOCAL_IP_ADDRESS.set(tSocket.getSocket().getInetAddress().toString()); + THREAD_LOCAL_IP_ADDRESS.set(tSocket.getSocket().getInetAddress().getHostAddress()); } } From b215bc61b9ca41b33482722ac6a7291ef618660b Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Mon, 29 Sep 2014 04:41:46 +0000 Subject: [PATCH 016/339] HIVE-8279 : sql std auth - additional test cases (Thejas Nair, reviewed by Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628115 13f79535-47bb-0310-9956-ffa450edef68 --- .../authorization_not_owner_drop_tab2.q | 14 ++++ .../authorization_show_columns.q | 13 ++++ .../authorization_grant_option_role.q | 28 +++++++ .../authorization_not_owner_drop_tab2.q.out | 29 +++++++ .../authorization_show_columns.q.out | 23 ++++++ .../authorization_grant_option_role.q.out | 78 +++++++++++++++++++ 6 files changed, 185 insertions(+) create mode 100644 ql/src/test/queries/clientnegative/authorization_not_owner_drop_tab2.q create mode 100644 ql/src/test/queries/clientnegative/authorization_show_columns.q create mode 100644 ql/src/test/queries/clientpositive/authorization_grant_option_role.q create mode 100644 ql/src/test/results/clientnegative/authorization_not_owner_drop_tab2.q.out create mode 100644 ql/src/test/results/clientnegative/authorization_show_columns.q.out create mode 100644 ql/src/test/results/clientpositive/authorization_grant_option_role.q.out diff --git a/ql/src/test/queries/clientnegative/authorization_not_owner_drop_tab2.q b/ql/src/test/queries/clientnegative/authorization_not_owner_drop_tab2.q new file mode 100644 index 000000000000..c4ef868c2e95 --- /dev/null +++ b/ql/src/test/queries/clientnegative/authorization_not_owner_drop_tab2.q @@ -0,0 +1,14 @@ +set hive.test.authz.sstd.hs2.mode=true; +set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest; +set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateConfigUserAuthenticator; +set hive.security.authorization.enabled=true; +set user.name=user1; + +create database db1; +use db1; +-- check if create table fails as different user. use db.table sytax +create table t1(i int); +use default; + +set user.name=user2; +drop table db1.t1; diff --git a/ql/src/test/queries/clientnegative/authorization_show_columns.q b/ql/src/test/queries/clientnegative/authorization_show_columns.q new file mode 100644 index 000000000000..a6597af92df8 --- /dev/null +++ b/ql/src/test/queries/clientnegative/authorization_show_columns.q @@ -0,0 +1,13 @@ +set hive.test.authz.sstd.hs2.mode=true; +set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest; +set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateConfigUserAuthenticator; +set hive.security.authorization.enabled=true; + +create database db1; +use db1; +-- check query without select privilege fails +create table t1(i int); + +set user.name=user1; +show columns in t1; + diff --git a/ql/src/test/queries/clientpositive/authorization_grant_option_role.q b/ql/src/test/queries/clientpositive/authorization_grant_option_role.q new file mode 100644 index 000000000000..ea0b51b901c3 --- /dev/null +++ b/ql/src/test/queries/clientpositive/authorization_grant_option_role.q @@ -0,0 +1,28 @@ +set hive.test.authz.sstd.hs2.mode=true; +set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest; +set hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateConfigUserAuthenticator; + +set user.name=hive_admin_user; +set role admin; +create role r1; +grant role r1 to user r1user; + +set user.name=user1; +CREATE TABLE t1(i int); + +-- all privileges should have been set for user + +GRANT ALL ON t1 TO ROLE r1 WITH GRANT OPTION; + +set user.name=r1user; +-- check if user belong to role r1 can grant privileges to others +GRANT ALL ON t1 TO USER user3; + +set user.name=hive_admin_user; +set role admin; +-- check privileges on table +show grant on table t1; + +-- check if drop role removes privileges for that role +drop role r1; +show grant on table t1; diff --git a/ql/src/test/results/clientnegative/authorization_not_owner_drop_tab2.q.out b/ql/src/test/results/clientnegative/authorization_not_owner_drop_tab2.q.out new file mode 100644 index 000000000000..0308e095aeda --- /dev/null +++ b/ql/src/test/results/clientnegative/authorization_not_owner_drop_tab2.q.out @@ -0,0 +1,29 @@ +PREHOOK: query: create database db1 +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:db1 +POSTHOOK: query: create database db1 +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:db1 +PREHOOK: query: use db1 +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:db1 +POSTHOOK: query: use db1 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:db1 +PREHOOK: query: -- check if create table fails as different user. use db.table sytax +create table t1(i int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:db1 +PREHOOK: Output: db1@t1 +POSTHOOK: query: -- check if create table fails as different user. use db.table sytax +create table t1(i int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:db1 +POSTHOOK: Output: db1@t1 +PREHOOK: query: use default +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:default +POSTHOOK: query: use default +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:default +FAILED: HiveAccessControlException Permission denied: Principal [name=user2, type=USER] does not have following privileges for operation DROPTABLE [[OBJECT OWNERSHIP] on Object [type=TABLE_OR_VIEW, name=db1.t1]] diff --git a/ql/src/test/results/clientnegative/authorization_show_columns.q.out b/ql/src/test/results/clientnegative/authorization_show_columns.q.out new file mode 100644 index 000000000000..7dca55e1f093 --- /dev/null +++ b/ql/src/test/results/clientnegative/authorization_show_columns.q.out @@ -0,0 +1,23 @@ +PREHOOK: query: create database db1 +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:db1 +POSTHOOK: query: create database db1 +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:db1 +PREHOOK: query: use db1 +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:db1 +POSTHOOK: query: use db1 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:db1 +PREHOOK: query: -- check query without select privilege fails +create table t1(i int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:db1 +PREHOOK: Output: db1@t1 +POSTHOOK: query: -- check query without select privilege fails +create table t1(i int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:db1 +POSTHOOK: Output: db1@t1 +FAILED: HiveAccessControlException Permission denied: Principal [name=user1, type=USER] does not have following privileges for operation SHOWCOLUMNS [[SELECT] on Object [type=TABLE_OR_VIEW, name=db1.t1]] diff --git a/ql/src/test/results/clientpositive/authorization_grant_option_role.q.out b/ql/src/test/results/clientpositive/authorization_grant_option_role.q.out new file mode 100644 index 000000000000..745a8aeebc8e --- /dev/null +++ b/ql/src/test/results/clientpositive/authorization_grant_option_role.q.out @@ -0,0 +1,78 @@ +PREHOOK: query: set role admin +PREHOOK: type: SHOW_ROLES +POSTHOOK: query: set role admin +POSTHOOK: type: SHOW_ROLES +PREHOOK: query: create role r1 +PREHOOK: type: CREATEROLE +POSTHOOK: query: create role r1 +POSTHOOK: type: CREATEROLE +PREHOOK: query: grant role r1 to user r1user +PREHOOK: type: GRANT_ROLE +POSTHOOK: query: grant role r1 to user r1user +POSTHOOK: type: GRANT_ROLE +PREHOOK: query: CREATE TABLE t1(i int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@t1 +POSTHOOK: query: CREATE TABLE t1(i int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@t1 +PREHOOK: query: -- all privileges should have been set for user + +GRANT ALL ON t1 TO ROLE r1 WITH GRANT OPTION +PREHOOK: type: GRANT_PRIVILEGE +PREHOOK: Output: default@t1 +POSTHOOK: query: -- all privileges should have been set for user + +GRANT ALL ON t1 TO ROLE r1 WITH GRANT OPTION +POSTHOOK: type: GRANT_PRIVILEGE +POSTHOOK: Output: default@t1 +PREHOOK: query: -- check if user belong to role r1 can grant privileges to others +GRANT ALL ON t1 TO USER user3 +PREHOOK: type: GRANT_PRIVILEGE +PREHOOK: Output: default@t1 +POSTHOOK: query: -- check if user belong to role r1 can grant privileges to others +GRANT ALL ON t1 TO USER user3 +POSTHOOK: type: GRANT_PRIVILEGE +POSTHOOK: Output: default@t1 +PREHOOK: query: set role admin +PREHOOK: type: SHOW_ROLES +POSTHOOK: query: set role admin +POSTHOOK: type: SHOW_ROLES +PREHOOK: query: -- check privileges on table +show grant on table t1 +PREHOOK: type: SHOW_GRANT +POSTHOOK: query: -- check privileges on table +show grant on table t1 +POSTHOOK: type: SHOW_GRANT +default t1 r1 ROLE DELETE true -1 user1 +default t1 r1 ROLE INSERT true -1 user1 +default t1 r1 ROLE SELECT true -1 user1 +default t1 r1 ROLE UPDATE true -1 user1 +default t1 user1 USER DELETE true -1 hive_admin_user +default t1 user1 USER INSERT true -1 hive_admin_user +default t1 user1 USER SELECT true -1 hive_admin_user +default t1 user1 USER UPDATE true -1 hive_admin_user +default t1 user3 USER DELETE false -1 r1user +default t1 user3 USER INSERT false -1 r1user +default t1 user3 USER SELECT false -1 r1user +default t1 user3 USER UPDATE false -1 r1user +PREHOOK: query: -- check if drop role removes privileges for that role +drop role r1 +PREHOOK: type: DROPROLE +POSTHOOK: query: -- check if drop role removes privileges for that role +drop role r1 +POSTHOOK: type: DROPROLE +PREHOOK: query: show grant on table t1 +PREHOOK: type: SHOW_GRANT +POSTHOOK: query: show grant on table t1 +POSTHOOK: type: SHOW_GRANT +default t1 user1 USER DELETE true -1 hive_admin_user +default t1 user1 USER INSERT true -1 hive_admin_user +default t1 user1 USER SELECT true -1 hive_admin_user +default t1 user1 USER UPDATE true -1 hive_admin_user +default t1 user3 USER DELETE false -1 r1user +default t1 user3 USER INSERT false -1 r1user +default t1 user3 USER SELECT false -1 r1user +default t1 user3 USER UPDATE false -1 r1user From 26e9b4795ffa252cb70089970373e86185606edd Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Mon, 29 Sep 2014 05:51:32 +0000 Subject: [PATCH 017/339] HIVE-7156: Group-By operator stat-annotation only uses distinct approx to generate rollups (Prasanth J reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628120 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 7 - data/files/location.txt | 20 + .../hadoop/hive/ql/exec/GroupByOperator.java | 37 +- .../hadoop/hive/ql/exec/tez/DagUtils.java | 2 +- .../annotation/StatsRulesProcFactory.java | 404 ++++++++++++--- .../hadoop/hive/ql/stats/StatsUtils.java | 8 +- .../clientpositive/annotate_stats_groupby.q | 95 +++- .../clientpositive/annotate_stats_groupby2.q | 64 +++ .../annotate_stats_groupby.q.out | 335 ++++++++---- .../annotate_stats_groupby2.q.out | 485 ++++++++++++++++++ .../clientpositive/binarysortable_1.q.out | Bin 4306 -> 4298 bytes .../results/clientpositive/combine2.q.out | 4 +- .../clientpositive/groupby_cube1.q.out | 36 +- .../groupby_grouping_sets2.q.out | 16 +- .../groupby_grouping_sets3.q.out | 12 +- .../groupby_grouping_sets5.q.out | 8 +- .../clientpositive/groupby_rollup1.q.out | 36 +- .../clientpositive/groupby_sort_11.q.out | 4 +- .../clientpositive/groupby_sort_6.q.out | Bin 19131 -> 19123 bytes .../limit_partition_metadataonly.q.out | 4 +- .../tez/dynamic_partition_pruning.q.out | 58 +-- .../results/clientpositive/tez/union7.q.out | 6 +- ...vectorized_dynamic_partition_pruning.q.out | 58 +-- .../results/clientpositive/udf_explode.q.out | Bin 28581 -> 28537 bytes .../results/clientpositive/udtf_explode.q.out | Bin 30441 -> 30441 bytes .../test/results/clientpositive/union11.q.out | 12 +- .../test/results/clientpositive/union14.q.out | 14 +- .../test/results/clientpositive/union15.q.out | 18 +- .../test/results/clientpositive/union17.q.out | 20 +- .../test/results/clientpositive/union19.q.out | 14 +- .../test/results/clientpositive/union21.q.out | 26 +- .../test/results/clientpositive/union5.q.out | 8 +- .../test/results/clientpositive/union7.q.out | 14 +- .../clientpositive/union_remove_1.q.out | 8 +- .../clientpositive/union_remove_10.q.out | 4 +- .../clientpositive/union_remove_13.q.out | 4 +- .../clientpositive/union_remove_15.q.out | 8 +- .../clientpositive/union_remove_16.q.out | 8 +- .../clientpositive/union_remove_18.q.out | 8 +- .../clientpositive/union_remove_19.q.out | 16 +- .../clientpositive/union_remove_2.q.out | 4 +- .../clientpositive/union_remove_20.q.out | 8 +- .../clientpositive/union_remove_21.q.out | 8 +- .../clientpositive/union_remove_22.q.out | 16 +- .../clientpositive/union_remove_23.q.out | 4 +- .../clientpositive/union_remove_24.q.out | 8 +- .../clientpositive/union_remove_25.q.out | 8 +- .../clientpositive/union_remove_4.q.out | 8 +- .../clientpositive/union_remove_5.q.out | 4 +- .../clientpositive/union_remove_6.q.out | 8 +- .../clientpositive/union_remove_7.q.out | 8 +- .../clientpositive/union_remove_8.q.out | 4 +- .../clientpositive/union_remove_9.q.out | 4 +- 53 files changed, 1470 insertions(+), 503 deletions(-) create mode 100644 data/files/location.txt create mode 100644 ql/src/test/queries/clientpositive/annotate_stats_groupby2.q create mode 100644 ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 01e1d0169693..0aee53010504 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1189,13 +1189,6 @@ public static enum ConfVars { "Average row size is computed from average column size of all columns in the row. In the absence\n" + "of column statistics and for variable length complex columns like map, the average number of\n" + "entries/values can be specified using this config."), - // to accurately compute statistics for GROUPBY map side parallelism needs to be known - HIVE_STATS_MAP_SIDE_PARALLELISM("hive.stats.map.parallelism", 1, - "Hive/Tez optimizer estimates the data size flowing through each of the operators.\n" + - "For GROUPBY operator, to accurately compute the data size map-side parallelism needs to\n" + - "be known. By default, this value is set to 1 since optimizer is not aware of the number of\n" + - "mappers during compile-time. This Hive config can be used to specify the number of mappers\n" + - "to be used for data size computation of GROUPBY operator."), // statistics annotation fetches stats for each partition, which can be expensive. turning // this off will result in basic sizes being fetched from namenode instead HIVE_STATS_FETCH_PARTITION_STATS("hive.stats.fetch.partition.stats", true, diff --git a/data/files/location.txt b/data/files/location.txt new file mode 100644 index 000000000000..b733f9fb80c3 --- /dev/null +++ b/data/files/location.txt @@ -0,0 +1,20 @@ +CAUSA100 +CAUSA100 +CAUSA100 +CAUSA100 +CAUSA100 +CAUSA100 +CAUSA100 +ILUSA100 +ILUSA100 +ILUSA100 +ILUSA100 +ILUSA100 +ILUSA100 +ILUSA100 +ILUSA100 +ILUSA100 +ILUSA100 +ILUSA100 +ILUSA100 +ILUSA100 diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java index 4eb95477c835..62b640249bfa 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java @@ -18,22 +18,7 @@ package org.apache.hadoop.hive.ql.exec; -import java.io.Serializable; -import java.lang.management.ManagementFactory; -import java.lang.management.MemoryMXBean; -import java.lang.reflect.Field; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - import javolution.util.FastBitSet; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; @@ -69,6 +54,20 @@ import org.apache.hadoop.io.BytesWritable; import org.apache.hadoop.io.Text; +import java.io.Serializable; +import java.lang.management.ManagementFactory; +import java.lang.management.MemoryMXBean; +import java.lang.reflect.Field; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + /** * GroupBy operator implementation. */ @@ -444,10 +443,10 @@ private void computeMaxEntriesHashAggr(Configuration hconf) throws HiveException estimateRowSize(); } - private static final int javaObjectOverHead = 64; - private static final int javaHashEntryOverHead = 64; - private static final int javaSizePrimitiveType = 16; - private static final int javaSizeUnknownType = 256; + public static final int javaObjectOverHead = 64; + public static final int javaHashEntryOverHead = 64; + public static final int javaSizePrimitiveType = 16; + public static final int javaSizeUnknownType = 256; /** * The size of the element at position 'pos' is returned, if possible. If the diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java index 0670de7ec2cd..0a0418e75876 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java @@ -427,7 +427,7 @@ private Map createPartitionerConf(String partitionerClassName, * from yarn. Falls back to Map-reduce's map size if tez * container size isn't set. */ - private Resource getContainerResource(Configuration conf) { + public static Resource getContainerResource(Configuration conf) { int memory = HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCONTAINERSIZE) > 0 ? HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCONTAINERSIZE) : conf.getInt(MRJobConfig.MAP_MEMORY_MB, MRJobConfig.DEFAULT_MAP_MEMORY_MB); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java index 13d1f88bd673..ab7eee8bddff 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java @@ -18,8 +18,14 @@ package org.apache.hadoop.hive.ql.optimizer.stats.annotation; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import java.lang.reflect.Field; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Stack; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; @@ -31,10 +37,12 @@ import org.apache.hadoop.hive.ql.exec.GroupByOperator; import org.apache.hadoop.hive.ql.exec.LimitOperator; import org.apache.hadoop.hive.ql.exec.Operator; +import org.apache.hadoop.hive.ql.exec.OperatorUtils; import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator; import org.apache.hadoop.hive.ql.exec.RowSchema; import org.apache.hadoop.hive.ql.exec.SelectOperator; import org.apache.hadoop.hive.ql.exec.TableScanOperator; +import org.apache.hadoop.hive.ql.exec.tez.DagUtils; import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.lib.NodeProcessor; import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx; @@ -48,10 +56,12 @@ import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc; import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc; +import org.apache.hadoop.hive.ql.plan.GroupByDesc; import org.apache.hadoop.hive.ql.plan.JoinDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.Statistics; import org.apache.hadoop.hive.ql.stats.StatsUtils; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator; import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqual; @@ -66,17 +76,15 @@ import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNull; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPOr; import org.apache.hadoop.hive.serde.serdeConstants; +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Stack; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; public class StatsRulesProcFactory { private static final Log LOG = LogFactory.getLog(StatsRulesProcFactory.class.getName()); + private static final boolean isDebugEnabled = LOG.isDebugEnabled(); /** * Collect basic statistics like number of rows, data size and column level statistics from the @@ -103,9 +111,9 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, Statistics stats = StatsUtils.collectStatistics(aspCtx.getConf(), partList, table, tsop); tsop.setStatistics(stats.clone()); - if (LOG.isDebugEnabled()) { - LOG.debug("[0] STATS-" + tsop.toString() + " (" + table.getTableName() - + "): " + stats.extendedToString()); + if (isDebugEnabled) { + LOG.debug("[0] STATS-" + tsop.toString() + " (" + table.getTableName() + "): " + + stats.extendedToString()); } } catch (CloneNotSupportedException e) { throw new SemanticException(ErrorMsg.STATISTICS_CLONING_FAILED.getMsg()); @@ -167,14 +175,14 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, stats.setDataSize(setMaxIfInvalid(dataSize)); sop.setStatistics(stats); - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("[0] STATS-" + sop.toString() + ": " + stats.extendedToString()); } } else { if (parentStats != null) { sop.setStatistics(parentStats.clone()); - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("[1] STATS-" + sop.toString() + ": " + parentStats.extendedToString()); } } @@ -264,7 +272,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, updateStats(st, newNumRows, true, fop); } - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("[0] STATS-" + fop.toString() + ": " + st.extendedToString()); } } else { @@ -274,7 +282,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, updateStats(st, newNumRows, false, fop); } - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("[1] STATS-" + fop.toString() + ": " + st.extendedToString()); } } @@ -576,52 +584,103 @@ public static class GroupByStatsRule extends DefaultStatsRule implements NodePro @Override public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, Object... nodeOutputs) throws SemanticException { + GroupByOperator gop = (GroupByOperator) nd; Operator parent = gop.getParentOperators().get(0); Statistics parentStats = parent.getStatistics(); + + // parent stats are not populated yet + if (parentStats == null) { + return null; + } + AnnotateStatsProcCtx aspCtx = (AnnotateStatsProcCtx) procCtx; HiveConf conf = aspCtx.getConf(); - int mapSideParallelism = - HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVE_STATS_MAP_SIDE_PARALLELISM); + long maxSplitSize = HiveConf.getLongVar(conf, HiveConf.ConfVars.MAPREDMAXSPLITSIZE); List aggDesc = gop.getConf().getAggregators(); Map colExprMap = gop.getColumnExprMap(); RowSchema rs = gop.getSchema(); Statistics stats = null; + List colStats = StatsUtils.getColStatisticsFromExprMap(conf, parentStats, + colExprMap, rs); + long cardinality; + long parallelism = 1L; boolean mapSide = false; - int multiplier = mapSideParallelism; - long newNumRows; - long newDataSize; + boolean mapSideHashAgg = false; + long inputSize = 1L; + boolean containsGroupingSet = gop.getConf().isGroupingSetsPresent(); + long sizeOfGroupingSet = + containsGroupingSet ? gop.getConf().getListGroupingSets().size() : 1L; + + // There are different cases for Group By depending on map/reduce side, hash aggregation, + // grouping sets and column stats. If we don't have column stats, we just assume hash + // aggregation is disabled. Following are the possible cases and rule for cardinality + // estimation + + // MAP SIDE: + // Case 1: NO column stats, NO hash aggregation, NO grouping sets — numRows + // Case 2: NO column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet + // Case 3: column stats, hash aggregation, NO grouping sets — Min(numRows / 2, ndvProduct * parallelism) + // Case 4: column stats, hash aggregation, grouping sets — Min((numRows * sizeOfGroupingSet) / 2, ndvProduct * parallelism * sizeOfGroupingSet) + // Case 5: column stats, NO hash aggregation, NO grouping sets — numRows + // Case 6: column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet + + // REDUCE SIDE: + // Case 7: NO column stats — numRows / 2 + // Case 8: column stats, grouping sets — Min(numRows, ndvProduct * sizeOfGroupingSet) + // Case 9: column stats, NO grouping sets - Min(numRows, ndvProduct) - // map side if (gop.getChildOperators().get(0) instanceof ReduceSinkOperator || gop.getChildOperators().get(0) instanceof AppMasterEventOperator) { - mapSide = true; - - // map-side grouping set present. if grouping set is present then - // multiply the number of rows by number of elements in grouping set - if (gop.getConf().isGroupingSetsPresent()) { - multiplier *= gop.getConf().getListGroupingSets().size(); + mapSide = true; + + // consider approximate map side parallelism to be table data size + // divided by max split size + TableScanOperator top = OperatorUtils.findSingleOperatorUpstream(gop, + TableScanOperator.class); + // if top is null then there are multiple parents (RS as well), hence + // lets use parent statistics to get data size. Also maxSplitSize should + // be updated to bytes per reducer (1GB default) + if (top == null) { + inputSize = parentStats.getDataSize(); + maxSplitSize = HiveConf.getLongVar(conf, HiveConf.ConfVars.BYTESPERREDUCER); + } else { + inputSize = top.getConf().getStatistics().getDataSize(); } + parallelism = (int) Math.ceil((double) inputSize / maxSplitSize); + } + + if (isDebugEnabled) { + LOG.debug("STATS-" + gop.toString() + ": inputSize: " + inputSize + " maxSplitSize: " + + maxSplitSize + " parallelism: " + parallelism + " containsGroupingSet: " + + containsGroupingSet + " sizeOfGroupingSet: " + sizeOfGroupingSet); } try { + // satisfying precondition means column statistics is available if (satisfyPrecondition(parentStats)) { - stats = parentStats.clone(); - List colStats = - StatsUtils.getColStatisticsFromExprMap(conf, parentStats, colExprMap, rs); + // check if map side aggregation is possible or not based on column stats + mapSideHashAgg = checkMapSideAggregation(gop, colStats, conf); + + if (isDebugEnabled) { + LOG.debug("STATS-" + gop.toString() + " mapSideHashAgg: " + mapSideHashAgg); + } + + stats = parentStats.clone(); stats.setColumnStats(colStats); - long dvProd = 1; + long ndvProduct = 1; + final long parentNumRows = stats.getNumRows(); // compute product of distinct values of grouping columns for (ColStatistics cs : colStats) { if (cs != null) { - long dv = cs.getCountDistint(); + long ndv = cs.getCountDistint(); if (cs.getNumNulls() > 0) { - dv += 1; + ndv += 1; } - dvProd *= dv; + ndvProduct *= ndv; } else { if (parentStats.getColumnStatsState().equals(Statistics.State.COMPLETE)) { // the column must be an aggregate column inserted by GBY. We @@ -632,65 +691,130 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // partial column statistics on grouping attributes case. // if column statistics on grouping attribute is missing, then // assume worst case. - // GBY rule will emit half the number of rows if dvProd is 0 - dvProd = 0; + // GBY rule will emit half the number of rows if ndvProduct is 0 + ndvProduct = 0; } break; } } - // map side + // if ndvProduct is 0 then column stats state must be partial and we are missing + // column stats for a group by column + if (ndvProduct == 0) { + ndvProduct = parentNumRows / 2; + + if (isDebugEnabled) { + LOG.debug("STATS-" + gop.toString() + ": ndvProduct became 0 as some column does not" + + " have stats. ndvProduct changed to: " + ndvProduct); + } + } + if (mapSide) { + // MAP SIDE - // since we do not know if hash-aggregation will be enabled or disabled - // at runtime we will assume that map-side group by does not do any - // reduction.hence no group by rule will be applied - - // map-side grouping set present. if grouping set is present then - // multiply the number of rows by number of elements in grouping set - if (gop.getConf().isGroupingSetsPresent()) { - newNumRows = setMaxIfInvalid(multiplier * stats.getNumRows()); - newDataSize = setMaxIfInvalid(multiplier * stats.getDataSize()); - stats.setNumRows(newNumRows); - stats.setDataSize(newDataSize); - for (ColStatistics cs : colStats) { - if (cs != null) { - long oldNumNulls = cs.getNumNulls(); - long newNumNulls = multiplier * oldNumNulls; - cs.setNumNulls(newNumNulls); + if (mapSideHashAgg) { + if (containsGroupingSet) { + // Case 4: column stats, hash aggregation, grouping sets + cardinality = Math.min((parentNumRows * sizeOfGroupingSet) / 2, + ndvProduct * parallelism * sizeOfGroupingSet); + + if (isDebugEnabled) { + LOG.debug("[Case 4] STATS-" + gop.toString() + ": cardinality: " + cardinality); + } + } else { + // Case 3: column stats, hash aggregation, NO grouping sets + cardinality = Math.min(parentNumRows / 2, ndvProduct * parallelism); + + if (isDebugEnabled) { + LOG.debug("[Case 3] STATS-" + gop.toString() + ": cardinality: " + cardinality); } } } else { + if (containsGroupingSet) { + // Case 6: column stats, NO hash aggregation, grouping sets + cardinality = parentNumRows * sizeOfGroupingSet; - // map side no grouping set - newNumRows = stats.getNumRows() * multiplier; - updateStats(stats, newNumRows, true, gop); + if (isDebugEnabled) { + LOG.debug("[Case 6] STATS-" + gop.toString() + ": cardinality: " + cardinality); + } + } else { + // Case 5: column stats, NO hash aggregation, NO grouping sets + cardinality = parentNumRows; + + if (isDebugEnabled) { + LOG.debug("[Case 5] STATS-" + gop.toString() + ": cardinality: " + cardinality); + } + } } } else { + // REDUCE SIDE + + // in reduce side GBY, we don't know if the grouping set was present or not. so get it + // from map side GBY + GroupByOperator mGop = OperatorUtils.findSingleOperatorUpstream(parent, GroupByOperator.class); + if (mGop != null) { + containsGroupingSet = mGop.getConf().isGroupingSetsPresent(); + sizeOfGroupingSet = mGop.getConf().getListGroupingSets().size(); + } + + if (containsGroupingSet) { + // Case 8: column stats, grouping sets + cardinality = Math.min(parentNumRows, ndvProduct * sizeOfGroupingSet); + + if (isDebugEnabled) { + LOG.debug("[Case 8] STATS-" + gop.toString() + ": cardinality: " + cardinality); + } + } else { + // Case 9: column stats, NO grouping sets + cardinality = Math.min(parentNumRows, ndvProduct); - // reduce side - newNumRows = applyGBYRule(stats.getNumRows(), dvProd); - updateStats(stats, newNumRows, true, gop); + if (isDebugEnabled) { + LOG.debug("[Case 9] STATS-" + gop.toString() + ": cardinality: " + cardinality); + } + } } + + // update stats, but don't update NDV as it will not change + updateStats(stats, cardinality, true, gop, false); } else { + + // NO COLUMN STATS if (parentStats != null) { stats = parentStats.clone(); + final long parentNumRows = stats.getNumRows(); - // worst case, in the absence of column statistics assume half the rows are emitted + // if we don't have column stats, we just assume hash aggregation is disabled if (mapSide) { + // MAP SIDE + + if (containsGroupingSet) { + // Case 2: NO column stats, NO hash aggregation, grouping sets + cardinality = parentNumRows * sizeOfGroupingSet; + + if (isDebugEnabled) { + LOG.debug("[Case 2] STATS-" + gop.toString() + ": cardinality: " + cardinality); + } + } else { + // Case 1: NO column stats, NO hash aggregation, NO grouping sets + cardinality = parentNumRows; - // map side - newNumRows = multiplier * stats.getNumRows(); - newDataSize = multiplier * stats.getDataSize(); - stats.setNumRows(newNumRows); - stats.setDataSize(newDataSize); + if (isDebugEnabled) { + LOG.debug("[Case 1] STATS-" + gop.toString() + ": cardinality: " + cardinality); + } + } } else { + // REDUCE SIDE + + // Case 7: NO column stats + cardinality = parentNumRows / 2; - // reduce side - newNumRows = parentStats.getNumRows() / 2; - updateStats(stats, newNumRows, false, gop); + if (isDebugEnabled) { + LOG.debug("[Case 7] STATS-" + gop.toString() + ": cardinality: " + cardinality); + } } + + updateStats(stats, cardinality, false, gop); } } @@ -738,7 +862,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, gop.setStatistics(stats); - if (LOG.isDebugEnabled() && stats != null) { + if (isDebugEnabled && stats != null) { LOG.debug("[0] STATS-" + gop.toString() + ": " + stats.extendedToString()); } } catch (CloneNotSupportedException e) { @@ -747,6 +871,107 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, return null; } + /** + * This method does not take into account many configs used at runtime to + * disable hash aggregation like HIVEMAPAGGRHASHMINREDUCTION. This method + * roughly estimates the number of rows and size of each row to see if it + * can fit in hashtable for aggregation. + * @param gop - group by operator + * @param colStats - column stats for key columns + * @param conf - hive conf + * @return + */ + private boolean checkMapSideAggregation(GroupByOperator gop, + List colStats, HiveConf conf) { + + List aggDesc = gop.getConf().getAggregators(); + GroupByDesc desc = gop.getConf(); + GroupByDesc.Mode mode = desc.getMode(); + + if (mode.equals(GroupByDesc.Mode.HASH)) { + float hashAggMem = conf.getFloatVar( + HiveConf.ConfVars.HIVEMAPAGGRHASHMEMORY); + float hashAggMaxThreshold = conf.getFloatVar( + HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD); + + // get memory for container. May be use mapreduce.map.java.opts instead? + long totalMemory = + DagUtils.getContainerResource(conf).getMemory() * 1000L * 1000L; + long maxMemHashAgg = Math + .round(totalMemory * hashAggMem * hashAggMaxThreshold); + + // estimated number of rows will be product of NDVs + long numEstimatedRows = 1; + + // estimate size of key from column statistics + long avgKeySize = 0; + for (ColStatistics cs : colStats) { + if (cs != null) { + numEstimatedRows *= cs.getCountDistint(); + avgKeySize += Math.ceil(cs.getAvgColLen()); + } + } + + // average value size will be sum of all sizes of aggregation buffers + long avgValSize = 0; + // go over all aggregation buffers and see they implement estimable + // interface if so they aggregate the size of the aggregation buffer + GenericUDAFEvaluator[] aggregationEvaluators; + aggregationEvaluators = new GenericUDAFEvaluator[aggDesc.size()]; + + // get aggregation evaluators + for (int i = 0; i < aggregationEvaluators.length; i++) { + AggregationDesc agg = aggDesc.get(i); + aggregationEvaluators[i] = agg.getGenericUDAFEvaluator(); + } + + // estimate size of aggregation buffer + for (int i = 0; i < aggregationEvaluators.length; i++) { + + // each evaluator has constant java object overhead + avgValSize += gop.javaObjectOverHead; + GenericUDAFEvaluator.AggregationBuffer agg = null; + try { + agg = aggregationEvaluators[i].getNewAggregationBuffer(); + } catch (HiveException e) { + // in case of exception assume unknown type (256 bytes) + avgValSize += gop.javaSizeUnknownType; + } + + // aggregate size from aggregation buffers + if (agg != null) { + if (GenericUDAFEvaluator.isEstimable(agg)) { + avgValSize += ((GenericUDAFEvaluator.AbstractAggregationBuffer) agg) + .estimate(); + } else { + // if the aggregation buffer is not estimable then get all the + // declared fields and compute the sizes from field types + Field[] fArr = ObjectInspectorUtils + .getDeclaredNonStaticFields(agg.getClass()); + for (Field f : fArr) { + long avgSize = StatsUtils + .getAvgColLenOfFixedLengthTypes(f.getType().getName()); + avgValSize += avgSize == 0 ? gop.javaSizeUnknownType : avgSize; + } + } + } + } + + // total size of each hash entry + long hashEntrySize = gop.javaHashEntryOverHead + avgKeySize + avgValSize; + + // estimated hash table size + long estHashTableSize = numEstimatedRows * hashEntrySize; + + if (estHashTableSize < maxMemHashAgg) { + return true; + } + } + + // worst-case, hash aggregation disabled + return false; + } + private long applyGBYRule(long numRows, long dvProd) { long newNumRows = numRows; @@ -967,7 +1192,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, outInTabAlias); jop.setStatistics(stats); - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("[0] STATS-" + jop.toString() + ": " + stats.extendedToString()); } } else { @@ -1001,7 +1226,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, wcStats.setDataSize(setMaxIfInvalid(newDataSize)); jop.setStatistics(wcStats); - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("[1] STATS-" + jop.toString() + ": " + wcStats.extendedToString()); } } @@ -1195,7 +1420,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, } lop.setStatistics(stats); - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("[0] STATS-" + lop.toString() + ": " + stats.extendedToString()); } } else { @@ -1213,7 +1438,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, } lop.setStatistics(wcStats); - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("[1] STATS-" + lop.toString() + ": " + wcStats.extendedToString()); } } @@ -1281,7 +1506,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, outStats.setColumnStats(colStats); } rop.setStatistics(outStats); - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("[0] STATS-" + rop.toString() + ": " + outStats.extendedToString()); } } catch (CloneNotSupportedException e) { @@ -1322,7 +1547,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, stats.addToColumnStats(parentStats.getColumnStats()); op.getConf().setStatistics(stats); - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("[0] STATS-" + op.toString() + ": " + stats.extendedToString()); } } @@ -1378,6 +1603,7 @@ public static NodeProcessor getDefaultRule() { return new DefaultStatsRule(); } + /** * Update the basic statistics of the statistics object based on the row number * @param stats @@ -1389,6 +1615,12 @@ public static NodeProcessor getDefaultRule() { */ static void updateStats(Statistics stats, long newNumRows, boolean useColStats, Operator op) { + updateStats(stats, newNumRows, useColStats, op, true); + } + + static void updateStats(Statistics stats, long newNumRows, + boolean useColStats, Operator op, + boolean updateNDV) { if (newNumRows <= 0) { LOG.info("STATS-" + op.toString() + ": Overflow in number of rows." @@ -1406,17 +1638,19 @@ static void updateStats(Statistics stats, long newNumRows, long oldNumNulls = cs.getNumNulls(); long oldDV = cs.getCountDistint(); long newNumNulls = Math.round(ratio * oldNumNulls); - long newDV = oldDV; - - // if ratio is greater than 1, then number of rows increases. This can happen - // when some operators like GROUPBY duplicates the input rows in which case - // number of distincts should not change. Update the distinct count only when - // the output number of rows is less than input number of rows. - if (ratio <= 1.0) { - newDV = (long) Math.ceil(ratio * oldDV); - } cs.setNumNulls(newNumNulls); - cs.setCountDistint(newDV); + if (updateNDV) { + long newDV = oldDV; + + // if ratio is greater than 1, then number of rows increases. This can happen + // when some operators like GROUPBY duplicates the input rows in which case + // number of distincts should not change. Update the distinct count only when + // the output number of rows is less than input number of rows. + if (ratio <= 1.0) { + newDV = (long) Math.ceil(ratio * oldDV); + } + cs.setCountDistint(newDV); + } } stats.setColumnStats(colStats); long newDataSize = StatsUtils.getDataSizeFromColumnStats(newNumRows, colStats); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java index ce944bcfd3d2..2b3ce4c21cfe 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java @@ -767,7 +767,8 @@ public static long getAvgColLenOfFixedLengthTypes(String colType) { || colType.equalsIgnoreCase(serdeConstants.FLOAT_TYPE_NAME)) { return JavaDataModel.get().primitive1(); } else if (colType.equalsIgnoreCase(serdeConstants.DOUBLE_TYPE_NAME) - || colType.equalsIgnoreCase(serdeConstants.BIGINT_TYPE_NAME)) { + || colType.equalsIgnoreCase(serdeConstants.BIGINT_TYPE_NAME) + || colType.equalsIgnoreCase("long")) { return JavaDataModel.get().primitive2(); } else if (colType.equalsIgnoreCase(serdeConstants.TIMESTAMP_TYPE_NAME)) { return JavaDataModel.get().lengthOfTimestamp(); @@ -796,7 +797,8 @@ public static long getSizeOfPrimitiveTypeArraysFromType(String colType, int leng return JavaDataModel.get().lengthForIntArrayOfSize(length); } else if (colType.equalsIgnoreCase(serdeConstants.DOUBLE_TYPE_NAME)) { return JavaDataModel.get().lengthForDoubleArrayOfSize(length); - } else if (colType.equalsIgnoreCase(serdeConstants.BIGINT_TYPE_NAME)) { + } else if (colType.equalsIgnoreCase(serdeConstants.BIGINT_TYPE_NAME) + || colType.equalsIgnoreCase("long")) { return JavaDataModel.get().lengthForLongArrayOfSize(length); } else if (colType.equalsIgnoreCase(serdeConstants.BINARY_TYPE_NAME)) { return JavaDataModel.get().lengthForByteArrayOfSize(length); @@ -892,7 +894,7 @@ public static List getColStatisticsFromExprMap(HiveConf conf, Statistics parentStats, Map colExprMap, RowSchema rowSchema) { List cs = Lists.newArrayList(); - if (colExprMap != null) { + if (colExprMap != null && rowSchema != null) { for (ColumnInfo ci : rowSchema.getSignature()) { String outColName = ci.getInternalName(); outColName = StatsUtils.stripPrefixFromColumnName(outColName); diff --git a/ql/src/test/queries/clientpositive/annotate_stats_groupby.q b/ql/src/test/queries/clientpositive/annotate_stats_groupby.q index 1c0829d85374..854e4016a00d 100644 --- a/ql/src/test/queries/clientpositive/annotate_stats_groupby.q +++ b/ql/src/test/queries/clientpositive/annotate_stats_groupby.q @@ -1,4 +1,25 @@ set hive.stats.fetch.column.stats=true; +set hive.map.aggr.hash.percentmemory=0.0f; + +-- hash aggregation is disabled + +-- There are different cases for Group By depending on map/reduce side, hash aggregation, +-- grouping sets and column stats. If we don't have column stats, we just assume hash +-- aggregation is disabled. Following are the possible cases and rule for cardinality +-- estimation + +-- MAP SIDE: +-- Case 1: NO column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 2: NO column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet +-- Case 3: column stats, hash aggregation, NO grouping sets — Min(numRows / 2, ndvProduct * parallelism) +-- Case 4: column stats, hash aggregation, grouping sets — Min((numRows * sizeOfGroupingSet) / 2, ndvProduct * parallelism * sizeOfGroupingSet) +-- Case 5: column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 6: column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet + +-- REDUCE SIDE: +-- Case 7: NO column stats — numRows / 2 +-- Case 8: column stats, grouping sets — Min(numRows, ndvProduct * sizeOfGroupingSet) +-- Case 9: column stats, NO grouping sets - Min(numRows, ndvProduct) create table if not exists loc_staging ( state string, @@ -29,71 +50,91 @@ from ( select state as a, locid as b, count(*) as c ) sq1 group by a,c; -analyze table loc_orc compute statistics for columns state,locid,zip,year; +analyze table loc_orc compute statistics for columns state,locid,year; --- only one distinct value in year column + 1 NULL value --- map-side GBY: numRows: 8 (map-side will not do any reduction) --- reduce-side GBY: numRows: 2 +-- Case 5: column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 9: column stats, NO grouping sets - caridnality = 2 explain select year from loc_orc group by year; --- map-side GBY: numRows: 8 --- reduce-side GBY: numRows: 4 +-- Case 5: column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 9: column stats, NO grouping sets - caridnality = 8 explain select state,locid from loc_orc group by state,locid; --- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +-- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 32 +-- Case 8: column stats, grouping sets - cardinality = 32 explain select state,locid from loc_orc group by state,locid with cube; --- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +-- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 24 +-- Case 8: column stats, grouping sets - cardinality = 24 explain select state,locid from loc_orc group by state,locid with rollup; --- map-side GBY numRows: 8 reduce-side GBY numRows: 4 +-- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 8 +-- Case 8: column stats, grouping sets - cardinality = 8 explain select state,locid from loc_orc group by state,locid grouping sets((state)); --- map-side GBY numRows: 16 reduce-side GBY numRows: 8 +-- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 16 +-- Case 8: column stats, grouping sets - cardinality = 16 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid)); --- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +-- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 24 +-- Case 8: column stats, grouping sets - cardinality = 24 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid),()); --- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +-- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 32 +-- Case 8: column stats, grouping sets - cardinality = 32 explain select state,locid from loc_orc group by state,locid grouping sets((state,locid),(state),(locid),()); -set hive.stats.map.parallelism=10; +set hive.map.aggr.hash.percentmemory=0.5f; +set mapred.max.split.size=80; +-- map-side parallelism will be 10 --- map-side GBY: numRows: 80 (map-side will not do any reduction) --- reduce-side GBY: numRows: 2 Reason: numDistinct of year is 2. numRows = min(80/2, 2) +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 4 +-- Case 9: column stats, NO grouping sets - caridnality = 2 explain select year from loc_orc group by year; --- map-side GBY numRows: 320 reduce-side GBY numRows: 42 Reason: numDistinct of state and locid are 6,7 resp. numRows = min(320/2, 6*7) +-- Case 4: column stats, hash aggregation, grouping sets - cardinality = 16 +-- Case 8: column stats, grouping sets - cardinality = 16 explain select state,locid from loc_orc group by state,locid with cube; +-- ndvProduct becomes 0 as zip does not have column stats +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 4 +-- Case 9: column stats, NO grouping sets - caridnality = 2 +explain select state,zip from loc_orc group by state,zip; + +set mapred.max.split.size=1000; set hive.stats.fetch.column.stats=false; -set hive.stats.map.parallelism=1; --- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +-- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 32 +-- Case 7: NO column stats - cardinality = 16 explain select state,locid from loc_orc group by state,locid with cube; --- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +-- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 24 +-- Case 7: NO column stats - cardinality = 12 explain select state,locid from loc_orc group by state,locid with rollup; --- map-side GBY numRows: 8 reduce-side GBY numRows: 4 +-- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 7: NO column stats - cardinality = 4 explain select state,locid from loc_orc group by state,locid grouping sets((state)); --- map-side GBY numRows: 16 reduce-side GBY numRows: 8 +-- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 16 +-- Case 7: NO column stats - cardinality = 8 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid)); --- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +-- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 24 +-- Case 7: NO column stats - cardinality = 12 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid),()); --- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +-- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 32 +-- Case 7: NO column stats - cardinality = 16 explain select state,locid from loc_orc group by state,locid grouping sets((state,locid),(state),(locid),()); -set hive.stats.map.parallelism=10; +set mapred.max.split.size=80; --- map-side GBY: numRows: 80 (map-side will not do any reduction) --- reduce-side GBY: numRows: 2 Reason: numDistinct of year is 2. numRows = min(80/2, 2) +-- Case 1: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 7: NO column stats - cardinality = 4 explain select year from loc_orc group by year; --- map-side GBY numRows: 320 reduce-side GBY numRows: 42 Reason: numDistinct of state and locid are 6,7 resp. numRows = min(320/2, 6*7) +-- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 32 +-- Case 7: NO column stats - cardinality = 16 explain select state,locid from loc_orc group by state,locid with cube; diff --git a/ql/src/test/queries/clientpositive/annotate_stats_groupby2.q b/ql/src/test/queries/clientpositive/annotate_stats_groupby2.q new file mode 100644 index 000000000000..6e6557738b49 --- /dev/null +++ b/ql/src/test/queries/clientpositive/annotate_stats_groupby2.q @@ -0,0 +1,64 @@ +drop table location; + +-- There are different cases for Group By depending on map/reduce side, hash aggregation, +-- grouping sets and column stats. If we don't have column stats, we just assume hash +-- aggregation is disabled. Following are the possible cases and rule for cardinality +-- estimation + +-- MAP SIDE: +-- Case 1: NO column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 2: NO column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet +-- Case 3: column stats, hash aggregation, NO grouping sets — Min(numRows / 2, ndvProduct * parallelism) +-- Case 4: column stats, hash aggregation, grouping sets — Min((numRows * sizeOfGroupingSet) / 2, ndvProduct * parallelism * sizeOfGroupingSet) +-- Case 5: column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 6: column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet + +-- REDUCE SIDE: +-- Case 7: NO column stats — numRows / 2 +-- Case 8: column stats, grouping sets — Min(numRows, ndvProduct * sizeOfGroupingSet) +-- Case 9: column stats, NO grouping sets - Min(numRows, ndvProduct) + +create table location (state string, country string, votes bigint); +load data local inpath "../../data/files/location.txt" overwrite into table location; + +analyze table location compute statistics; +analyze table location compute statistics for columns state, country; + +set mapred.max.split.size=50; +set hive.map.aggr.hash.percentmemory=0.5f; +set hive.stats.fetch.column.stats=false; + +-- Case 1: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 20 +-- Case 7: NO column stats - cardinality = 10 +explain select state, country from location group by state, country; + +-- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 80 +-- Case 7: NO column stats - cardinality = 40 +explain select state, country from location group by state, country with cube; + +set hive.stats.fetch.column.stats=true; +-- parallelism = 4 + +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 8 +-- Case 9: column stats, NO grouping sets - caridnality = 2 +explain select state, country from location group by state, country; + +-- column stats for votes is missing, so ndvProduct becomes 0 and will be set to numRows / 2 +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 10 +-- Case 9: column stats, NO grouping sets - caridnality = 5 +explain select state, votes from location group by state, votes; + +-- Case 4: column stats, hash aggregation, grouping sets - cardinality = 32 +-- Case 8: column stats, grouping sets - cardinality = 8 +explain select state, country from location group by state, country with cube; + +set hive.map.aggr.hash.percentmemory=0.0f; +-- Case 5: column stats, NO hash aggregation, NO grouping sets - cardinality = 20 +-- Case 9: column stats, NO grouping sets - caridnality = 2 +explain select state, country from location group by state, country; + +-- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 80 +-- Case 8: column stats, grouping sets - cardinality = 8 +explain select state, country from location group by state, country with cube; + +drop table location; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out b/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out index 871c4217fff8..1459b44d1c9e 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out @@ -1,4 +1,24 @@ -PREHOOK: query: create table if not exists loc_staging ( +PREHOOK: query: -- hash aggregation is disabled + +-- There are different cases for Group By depending on map/reduce side, hash aggregation, +-- grouping sets and column stats. If we don't have column stats, we just assume hash +-- aggregation is disabled. Following are the possible cases and rule for cardinality +-- estimation + +-- MAP SIDE: +-- Case 1: NO column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 2: NO column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet +-- Case 3: column stats, hash aggregation, NO grouping sets — Min(numRows / 2, ndvProduct * parallelism) +-- Case 4: column stats, hash aggregation, grouping sets — Min((numRows * sizeOfGroupingSet) / 2, ndvProduct * parallelism * sizeOfGroupingSet) +-- Case 5: column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 6: column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet + +-- REDUCE SIDE: +-- Case 7: NO column stats — numRows / 2 +-- Case 8: column stats, grouping sets — Min(numRows, ndvProduct * sizeOfGroupingSet) +-- Case 9: column stats, NO grouping sets - Min(numRows, ndvProduct) + +create table if not exists loc_staging ( state string, locid int, zip bigint, @@ -7,7 +27,27 @@ PREHOOK: query: create table if not exists loc_staging ( PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@loc_staging -POSTHOOK: query: create table if not exists loc_staging ( +POSTHOOK: query: -- hash aggregation is disabled + +-- There are different cases for Group By depending on map/reduce side, hash aggregation, +-- grouping sets and column stats. If we don't have column stats, we just assume hash +-- aggregation is disabled. Following are the possible cases and rule for cardinality +-- estimation + +-- MAP SIDE: +-- Case 1: NO column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 2: NO column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet +-- Case 3: column stats, hash aggregation, NO grouping sets — Min(numRows / 2, ndvProduct * parallelism) +-- Case 4: column stats, hash aggregation, grouping sets — Min((numRows * sizeOfGroupingSet) / 2, ndvProduct * parallelism * sizeOfGroupingSet) +-- Case 5: column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 6: column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet + +-- REDUCE SIDE: +-- Case 7: NO column stats — numRows / 2 +-- Case 8: column stats, grouping sets — Min(numRows, ndvProduct * sizeOfGroupingSet) +-- Case 9: column stats, NO grouping sets - Min(numRows, ndvProduct) + +create table if not exists loc_staging ( state string, locid int, zip bigint, @@ -190,22 +230,20 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: analyze table loc_orc compute statistics for columns state,locid,zip,year +PREHOOK: query: analyze table loc_orc compute statistics for columns state,locid,year PREHOOK: type: QUERY PREHOOK: Input: default@loc_orc #### A masked pattern was here #### -POSTHOOK: query: analyze table loc_orc compute statistics for columns state,locid,zip,year +POSTHOOK: query: analyze table loc_orc compute statistics for columns state,locid,year POSTHOOK: type: QUERY POSTHOOK: Input: default@loc_orc #### A masked pattern was here #### -PREHOOK: query: -- only one distinct value in year column + 1 NULL value --- map-side GBY: numRows: 8 (map-side will not do any reduction) --- reduce-side GBY: numRows: 2 +PREHOOK: query: -- Case 5: column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 9: column stats, NO grouping sets - caridnality = 2 explain select year from loc_orc group by year PREHOOK: type: QUERY -POSTHOOK: query: -- only one distinct value in year column + 1 NULL value --- map-side GBY: numRows: 8 (map-side will not do any reduction) --- reduce-side GBY: numRows: 2 +POSTHOOK: query: -- Case 5: column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 9: column stats, NO grouping sets - caridnality = 2 explain select year from loc_orc group by year POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -257,12 +295,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY: numRows: 8 --- reduce-side GBY: numRows: 4 +PREHOOK: query: -- Case 5: column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 9: column stats, NO grouping sets - caridnality = 8 explain select state,locid from loc_orc group by state,locid PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY: numRows: 8 --- reduce-side GBY: numRows: 4 +POSTHOOK: query: -- Case 5: column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 9: column stats, NO grouping sets - caridnality = 8 explain select state,locid from loc_orc group by state,locid POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -295,14 +333,14 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: int) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 4 Data size: 360 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 4 Data size: 360 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 4 Data size: 360 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -314,10 +352,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +PREHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 32 +-- Case 8: column stats, grouping sets - cardinality = 32 explain select state,locid from loc_orc group by state,locid with cube PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +POSTHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 32 +-- Case 8: column stats, grouping sets - cardinality = 32 explain select state,locid from loc_orc group by state,locid with cube POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -339,25 +379,25 @@ STAGE PLANS: keys: state (type: string), locid (type: int), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 32 Data size: 5600 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: string) - Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 32 Data size: 5600 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: int), KEY._col2 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 32 Data size: 5600 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 16 Data size: 1440 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 32 Data size: 2880 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 16 Data size: 1440 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 32 Data size: 2880 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -369,10 +409,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +PREHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 24 +-- Case 8: column stats, grouping sets - cardinality = 24 explain select state,locid from loc_orc group by state,locid with rollup PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +POSTHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 24 +-- Case 8: column stats, grouping sets - cardinality = 24 explain select state,locid from loc_orc group by state,locid with rollup POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -394,25 +436,25 @@ STAGE PLANS: keys: state (type: string), locid (type: int), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 24 Data size: 4200 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: string) - Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 24 Data size: 4200 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: int), KEY._col2 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 24 Data size: 4200 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 12 Data size: 1080 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 24 Data size: 2160 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 12 Data size: 1080 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 24 Data size: 2160 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -424,10 +466,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 8 reduce-side GBY numRows: 4 +PREHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 8 +-- Case 8: column stats, grouping sets - cardinality = 8 explain select state,locid from loc_orc group by state,locid grouping sets((state)) PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 8 reduce-side GBY numRows: 4 +POSTHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 8 +-- Case 8: column stats, grouping sets - cardinality = 8 explain select state,locid from loc_orc group by state,locid grouping sets((state)) POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -449,25 +493,25 @@ STAGE PLANS: keys: state (type: string), locid (type: int), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 8 Data size: 1400 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: string) - Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 8 Data size: 1400 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: int), KEY._col2 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 4 Data size: 700 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 8 Data size: 1400 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 4 Data size: 360 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 4 Data size: 360 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -479,10 +523,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 16 reduce-side GBY numRows: 8 +PREHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 16 +-- Case 8: column stats, grouping sets - cardinality = 16 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid)) PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 16 reduce-side GBY numRows: 8 +POSTHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 16 +-- Case 8: column stats, grouping sets - cardinality = 16 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid)) POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -504,25 +550,25 @@ STAGE PLANS: keys: state (type: string), locid (type: int), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: string) - Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: int), KEY._col2 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 8 Data size: 1400 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 16 Data size: 1440 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 16 Data size: 1440 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -534,10 +580,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +PREHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 24 +-- Case 8: column stats, grouping sets - cardinality = 24 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid),()) PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +POSTHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 24 +-- Case 8: column stats, grouping sets - cardinality = 24 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid),()) POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -559,25 +607,25 @@ STAGE PLANS: keys: state (type: string), locid (type: int), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 24 Data size: 4200 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: string) - Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 24 Data size: 4200 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: int), KEY._col2 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 24 Data size: 4200 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 12 Data size: 1080 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 24 Data size: 2160 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 12 Data size: 1080 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 24 Data size: 2160 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -589,10 +637,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +PREHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 32 +-- Case 8: column stats, grouping sets - cardinality = 32 explain select state,locid from loc_orc group by state,locid grouping sets((state,locid),(state),(locid),()) PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +POSTHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 32 +-- Case 8: column stats, grouping sets - cardinality = 32 explain select state,locid from loc_orc group by state,locid grouping sets((state,locid),(state),(locid),()) POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -614,25 +664,25 @@ STAGE PLANS: keys: state (type: string), locid (type: int), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 32 Data size: 5600 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: string) - Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 32 Data size: 5600 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: int), KEY._col2 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 32 Data size: 5600 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 16 Data size: 1440 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 32 Data size: 2880 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 16 Data size: 1440 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 32 Data size: 2880 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -644,12 +694,16 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY: numRows: 80 (map-side will not do any reduction) --- reduce-side GBY: numRows: 2 Reason: numDistinct of year is 2. numRows = min(80/2, 2) +PREHOOK: query: -- map-side parallelism will be 10 + +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 4 +-- Case 9: column stats, NO grouping sets - caridnality = 2 explain select year from loc_orc group by year PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY: numRows: 80 (map-side will not do any reduction) --- reduce-side GBY: numRows: 2 Reason: numDistinct of year is 2. numRows = min(80/2, 2) +POSTHOOK: query: -- map-side parallelism will be 10 + +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 4 +-- Case 9: column stats, NO grouping sets - caridnality = 2 explain select year from loc_orc group by year POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -671,25 +725,25 @@ STAGE PLANS: keys: year (type: int) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 80 Data size: 280 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 4 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 80 Data size: 280 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 4 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: int) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -701,10 +755,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 320 reduce-side GBY numRows: 42 Reason: numDistinct of state and locid are 6,7 resp. numRows = min(320/2, 6*7) +PREHOOK: query: -- Case 4: column stats, hash aggregation, grouping sets - cardinality = 16 +-- Case 8: column stats, grouping sets - cardinality = 16 explain select state,locid from loc_orc group by state,locid with cube PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 320 reduce-side GBY numRows: 42 Reason: numDistinct of state and locid are 6,7 resp. numRows = min(320/2, 6*7) +POSTHOOK: query: -- Case 4: column stats, hash aggregation, grouping sets - cardinality = 16 +-- Case 8: column stats, grouping sets - cardinality = 16 explain select state,locid from loc_orc group by state,locid with cube POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -726,25 +782,25 @@ STAGE PLANS: keys: state (type: string), locid (type: int), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 320 Data size: 31840 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: string) - Statistics: Num rows: 320 Data size: 31840 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: int), KEY._col2 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 35 Data size: 6125 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 35 Data size: 3150 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 16 Data size: 1440 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 35 Data size: 3150 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 16 Data size: 1440 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -756,10 +812,71 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +PREHOOK: query: -- ndvProduct becomes 0 as zip does not have column stats +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 4 +-- Case 9: column stats, NO grouping sets - caridnality = 2 +explain select state,zip from loc_orc group by state,zip +PREHOOK: type: QUERY +POSTHOOK: query: -- ndvProduct becomes 0 as zip does not have column stats +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 4 +-- Case 9: column stats, NO grouping sets - caridnality = 2 +explain select state,zip from loc_orc group by state,zip +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: loc_orc + Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: PARTIAL + Select Operator + expressions: state (type: string), zip (type: bigint) + outputColumnNames: state, zip + Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: PARTIAL + Group By Operator + keys: state (type: string), zip (type: bigint) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 344 Basic stats: COMPLETE Column stats: PARTIAL + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: bigint) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: bigint) + Statistics: Num rows: 4 Data size: 344 Basic stats: COMPLETE Column stats: PARTIAL + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: bigint) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 172 Basic stats: COMPLETE Column stats: PARTIAL + Select Operator + expressions: _col0 (type: string), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 172 Basic stats: COMPLETE Column stats: PARTIAL + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 172 Basic stats: COMPLETE Column stats: PARTIAL + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 32 +-- Case 7: NO column stats - cardinality = 16 explain select state,locid from loc_orc group by state,locid with cube PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +POSTHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 32 +-- Case 7: NO column stats - cardinality = 16 explain select state,locid from loc_orc group by state,locid with cube POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -811,10 +928,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +PREHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 24 +-- Case 7: NO column stats - cardinality = 12 explain select state,locid from loc_orc group by state,locid with rollup PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +POSTHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 24 +-- Case 7: NO column stats - cardinality = 12 explain select state,locid from loc_orc group by state,locid with rollup POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -866,10 +985,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 8 reduce-side GBY numRows: 4 +PREHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 7: NO column stats - cardinality = 4 explain select state,locid from loc_orc group by state,locid grouping sets((state)) PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 8 reduce-side GBY numRows: 4 +POSTHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 7: NO column stats - cardinality = 4 explain select state,locid from loc_orc group by state,locid grouping sets((state)) POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -921,10 +1042,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 16 reduce-side GBY numRows: 8 +PREHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 16 +-- Case 7: NO column stats - cardinality = 8 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid)) PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 16 reduce-side GBY numRows: 8 +POSTHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 16 +-- Case 7: NO column stats - cardinality = 8 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid)) POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -976,10 +1099,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +PREHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 24 +-- Case 7: NO column stats - cardinality = 12 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid),()) PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 24 reduce-side GBY numRows: 12 +POSTHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 24 +-- Case 7: NO column stats - cardinality = 12 explain select state,locid from loc_orc group by state,locid grouping sets((state),(locid),()) POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -1031,10 +1156,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +PREHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 32 +-- Case 7: NO column stats - cardinality = 16 explain select state,locid from loc_orc group by state,locid grouping sets((state,locid),(state),(locid),()) PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 32 reduce-side GBY numRows: 16 +POSTHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 32 +-- Case 7: NO column stats - cardinality = 16 explain select state,locid from loc_orc group by state,locid grouping sets((state,locid),(state),(locid),()) POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -1086,12 +1213,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY: numRows: 80 (map-side will not do any reduction) --- reduce-side GBY: numRows: 2 Reason: numDistinct of year is 2. numRows = min(80/2, 2) +PREHOOK: query: -- Case 1: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 7: NO column stats - cardinality = 4 explain select year from loc_orc group by year PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY: numRows: 80 (map-side will not do any reduction) --- reduce-side GBY: numRows: 2 Reason: numDistinct of year is 2. numRows = min(80/2, 2) +POSTHOOK: query: -- Case 1: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 8 +-- Case 7: NO column stats - cardinality = 4 explain select year from loc_orc group by year POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -1113,25 +1240,25 @@ STAGE PLANS: keys: year (type: int) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 80 Data size: 7960 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 80 Data size: 7960 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: int) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 40 Data size: 3980 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 398 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 40 Data size: 3980 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 398 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 40 Data size: 3980 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 398 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -1143,10 +1270,12 @@ STAGE PLANS: Processor Tree: ListSink -PREHOOK: query: -- map-side GBY numRows: 320 reduce-side GBY numRows: 42 Reason: numDistinct of state and locid are 6,7 resp. numRows = min(320/2, 6*7) +PREHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 32 +-- Case 7: NO column stats - cardinality = 16 explain select state,locid from loc_orc group by state,locid with cube PREHOOK: type: QUERY -POSTHOOK: query: -- map-side GBY numRows: 320 reduce-side GBY numRows: 42 Reason: numDistinct of state and locid are 6,7 resp. numRows = min(320/2, 6*7) +POSTHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 32 +-- Case 7: NO column stats - cardinality = 16 explain select state,locid from loc_orc group by state,locid with cube POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -1168,25 +1297,25 @@ STAGE PLANS: keys: state (type: string), locid (type: int), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 320 Data size: 31840 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: string) - Statistics: Num rows: 320 Data size: 31840 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: int), KEY._col2 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 160 Data size: 15920 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 160 Data size: 15920 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 160 Data size: 15920 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out b/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out new file mode 100644 index 000000000000..f991191e9c09 --- /dev/null +++ b/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out @@ -0,0 +1,485 @@ +PREHOOK: query: drop table location +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table location +POSTHOOK: type: DROPTABLE +PREHOOK: query: -- There are different cases for Group By depending on map/reduce side, hash aggregation, +-- grouping sets and column stats. If we don't have column stats, we just assume hash +-- aggregation is disabled. Following are the possible cases and rule for cardinality +-- estimation + +-- MAP SIDE: +-- Case 1: NO column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 2: NO column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet +-- Case 3: column stats, hash aggregation, NO grouping sets — Min(numRows / 2, ndvProduct * parallelism) +-- Case 4: column stats, hash aggregation, grouping sets — Min((numRows * sizeOfGroupingSet) / 2, ndvProduct * parallelism * sizeOfGroupingSet) +-- Case 5: column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 6: column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet + +-- REDUCE SIDE: +-- Case 7: NO column stats — numRows / 2 +-- Case 8: column stats, grouping sets — Min(numRows, ndvProduct * sizeOfGroupingSet) +-- Case 9: column stats, NO grouping sets - Min(numRows, ndvProduct) + +create table location (state string, country string, votes bigint) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@location +POSTHOOK: query: -- There are different cases for Group By depending on map/reduce side, hash aggregation, +-- grouping sets and column stats. If we don't have column stats, we just assume hash +-- aggregation is disabled. Following are the possible cases and rule for cardinality +-- estimation + +-- MAP SIDE: +-- Case 1: NO column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 2: NO column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet +-- Case 3: column stats, hash aggregation, NO grouping sets — Min(numRows / 2, ndvProduct * parallelism) +-- Case 4: column stats, hash aggregation, grouping sets — Min((numRows * sizeOfGroupingSet) / 2, ndvProduct * parallelism * sizeOfGroupingSet) +-- Case 5: column stats, NO hash aggregation, NO grouping sets — numRows +-- Case 6: column stats, NO hash aggregation, grouping sets — numRows * sizeOfGroupingSet + +-- REDUCE SIDE: +-- Case 7: NO column stats — numRows / 2 +-- Case 8: column stats, grouping sets — Min(numRows, ndvProduct * sizeOfGroupingSet) +-- Case 9: column stats, NO grouping sets - Min(numRows, ndvProduct) + +create table location (state string, country string, votes bigint) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@location +PREHOOK: query: load data local inpath "../../data/files/location.txt" overwrite into table location +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@location +POSTHOOK: query: load data local inpath "../../data/files/location.txt" overwrite into table location +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@location +PREHOOK: query: analyze table location compute statistics +PREHOOK: type: QUERY +PREHOOK: Input: default@location +PREHOOK: Output: default@location +POSTHOOK: query: analyze table location compute statistics +POSTHOOK: type: QUERY +POSTHOOK: Input: default@location +POSTHOOK: Output: default@location +PREHOOK: query: analyze table location compute statistics for columns state, country +PREHOOK: type: QUERY +PREHOOK: Input: default@location +#### A masked pattern was here #### +POSTHOOK: query: analyze table location compute statistics for columns state, country +POSTHOOK: type: QUERY +POSTHOOK: Input: default@location +#### A masked pattern was here #### +PREHOOK: query: -- Case 1: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 20 +-- Case 7: NO column stats - cardinality = 10 +explain select state, country from location group by state, country +PREHOOK: type: QUERY +POSTHOOK: query: -- Case 1: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 20 +-- Case 7: NO column stats - cardinality = 10 +explain select state, country from location group by state, country +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: location + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: state (type: string), country (type: string) + outputColumnNames: state, country + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: state (type: string), country (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string) + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 80 +-- Case 7: NO column stats - cardinality = 40 +explain select state, country from location group by state, country with cube +PREHOOK: type: QUERY +POSTHOOK: query: -- Case 2: NO column stats, NO hash aggregation, NO grouping sets - cardinality = 80 +-- Case 7: NO column stats - cardinality = 40 +explain select state, country from location group by state, country with cube +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: location + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: state (type: string), country (type: string) + outputColumnNames: state, country + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: state (type: string), country (type: string), '0' (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 80 Data size: 800 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + sort order: +++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) + Statistics: Num rows: 80 Data size: 800 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 40 Data size: 400 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 40 Data size: 400 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 40 Data size: 400 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: -- parallelism = 4 + +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 8 +-- Case 9: column stats, NO grouping sets - caridnality = 2 +explain select state, country from location group by state, country +PREHOOK: type: QUERY +POSTHOOK: query: -- parallelism = 4 + +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 8 +-- Case 9: column stats, NO grouping sets - caridnality = 2 +explain select state, country from location group by state, country +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: location + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: state (type: string), country (type: string) + outputColumnNames: state, country + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE + Group By Operator + keys: state (type: string), country (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 8 Data size: 1384 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string) + Statistics: Num rows: 8 Data size: 1384 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 346 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 346 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 346 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: -- column stats for votes is missing, so ndvProduct becomes 0 and will be set to numRows / 2 +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 10 +-- Case 9: column stats, NO grouping sets - caridnality = 5 +explain select state, votes from location group by state, votes +PREHOOK: type: QUERY +POSTHOOK: query: -- column stats for votes is missing, so ndvProduct becomes 0 and will be set to numRows / 2 +-- Case 3: column stats, hash aggregation, NO grouping sets - cardinality = 10 +-- Case 9: column stats, NO grouping sets - caridnality = 5 +explain select state, votes from location group by state, votes +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: location + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: PARTIAL + Select Operator + expressions: state (type: string), votes (type: bigint) + outputColumnNames: state, votes + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: PARTIAL + Group By Operator + keys: state (type: string), votes (type: bigint) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 10 Data size: 860 Basic stats: COMPLETE Column stats: PARTIAL + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: bigint) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: bigint) + Statistics: Num rows: 10 Data size: 860 Basic stats: COMPLETE Column stats: PARTIAL + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: bigint) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: PARTIAL + Select Operator + expressions: _col0 (type: string), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: PARTIAL + File Output Operator + compressed: false + Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: PARTIAL + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: -- Case 4: column stats, hash aggregation, grouping sets - cardinality = 32 +-- Case 8: column stats, grouping sets - cardinality = 8 +explain select state, country from location group by state, country with cube +PREHOOK: type: QUERY +POSTHOOK: query: -- Case 4: column stats, hash aggregation, grouping sets - cardinality = 32 +-- Case 8: column stats, grouping sets - cardinality = 8 +explain select state, country from location group by state, country with cube +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: location + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: state (type: string), country (type: string) + outputColumnNames: state, country + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE + Group By Operator + keys: state (type: string), country (type: string), '0' (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 32 Data size: 8256 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + sort order: +++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) + Statistics: Num rows: 32 Data size: 8256 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 8 Data size: 2064 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 8 Data size: 1384 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 8 Data size: 1384 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: -- Case 5: column stats, NO hash aggregation, NO grouping sets - cardinality = 20 +-- Case 9: column stats, NO grouping sets - caridnality = 2 +explain select state, country from location group by state, country +PREHOOK: type: QUERY +POSTHOOK: query: -- Case 5: column stats, NO hash aggregation, NO grouping sets - cardinality = 20 +-- Case 9: column stats, NO grouping sets - caridnality = 2 +explain select state, country from location group by state, country +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: location + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: state (type: string), country (type: string) + outputColumnNames: state, country + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE + Group By Operator + keys: state (type: string), country (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 20 Data size: 3460 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string) + Statistics: Num rows: 20 Data size: 3460 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 346 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 346 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 346 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 80 +-- Case 8: column stats, grouping sets - cardinality = 8 +explain select state, country from location group by state, country with cube +PREHOOK: type: QUERY +POSTHOOK: query: -- Case 6: column stats, NO hash aggregation, grouping sets - cardinality = 80 +-- Case 8: column stats, grouping sets - cardinality = 8 +explain select state, country from location group by state, country with cube +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: location + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: state (type: string), country (type: string) + outputColumnNames: state, country + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE + Group By Operator + keys: state (type: string), country (type: string), '0' (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 80 Data size: 20640 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + sort order: +++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) + Statistics: Num rows: 80 Data size: 20640 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 8 Data size: 2064 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 8 Data size: 1384 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 8 Data size: 1384 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: drop table location +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@location +PREHOOK: Output: default@location +POSTHOOK: query: drop table location +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@location +POSTHOOK: Output: default@location diff --git a/ql/src/test/results/clientpositive/binarysortable_1.q.out b/ql/src/test/results/clientpositive/binarysortable_1.q.out index 7ff3fd4069b8a8516f44ec6721b9d756cd504e0d..e486466e6c8d14e98ac6bbde126421574154d64e 100644 GIT binary patch delta 24 dcmcblcuH{t7suoS+{Tj~Io^Wk&8eKZ>;QS@2_XOg delta 28 gcmX@5cu8>s7surHY?hPlIbMTl2VR!V$(-rz0HsC>SpWb4 diff --git a/ql/src/test/results/clientpositive/combine2.q.out b/ql/src/test/results/clientpositive/combine2.q.out index 77a884663e5e..43b2498ab9bf 100644 --- a/ql/src/test/results/clientpositive/combine2.q.out +++ b/ql/src/test/results/clientpositive/combine2.q.out @@ -662,12 +662,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 2000 Data size: 384000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2000 Data size: 384000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator diff --git a/ql/src/test/results/clientpositive/groupby_cube1.q.out b/ql/src/test/results/clientpositive/groupby_cube1.q.out index 0f840d627656..7b5d70ae8ffc 100644 --- a/ql/src/test/results/clientpositive/groupby_cube1.q.out +++ b/ql/src/test/results/clientpositive/groupby_cube1.q.out @@ -44,12 +44,12 @@ STAGE PLANS: keys: key (type: string), val (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -128,12 +128,12 @@ STAGE PLANS: keys: key (type: string), '0' (type: string), val (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Operator Tree: Group By Operator aggregations: count(DISTINCT KEY._col2:0._col0) @@ -200,12 +200,12 @@ STAGE PLANS: keys: key (type: string), val (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: rand() (type: double) - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -213,7 +213,7 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) mode: partials outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -229,7 +229,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -308,12 +308,12 @@ STAGE PLANS: keys: key (type: string), '0' (type: string), val (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Operator Tree: Group By Operator aggregations: count(DISTINCT KEY._col2:0._col0) @@ -405,12 +405,12 @@ STAGE PLANS: keys: key (type: string), val (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: rand() (type: double) - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Select Operator expressions: key (type: string), val (type: string) @@ -421,7 +421,7 @@ STAGE PLANS: keys: key (type: string), val (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -434,7 +434,7 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) mode: partials outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -450,7 +450,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -493,7 +493,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: rand() (type: double) - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -501,7 +501,7 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) mode: partials outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -517,7 +517,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 120 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out index 75aaddc0bdbc..7c88a67e377f 100644 --- a/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out +++ b/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out @@ -43,12 +43,12 @@ STAGE PLANS: keys: a (type: string), b (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Group By Operator @@ -56,7 +56,7 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string), '0' (type: string) mode: partials outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 144 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -72,7 +72,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Statistics: Num rows: 0 Data size: 144 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -149,12 +149,12 @@ STAGE PLANS: keys: a (type: string), b (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col2 (type: double) Reduce Operator Tree: Group By Operator @@ -162,7 +162,7 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string), '0' (type: string) mode: partials outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 144 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -178,7 +178,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Statistics: Num rows: 0 Data size: 144 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: double) Reduce Operator Tree: Group By Operator diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out index a1842c12c0c6..6ae6e551eb76 100644 --- a/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out +++ b/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out @@ -62,12 +62,12 @@ STAGE PLANS: keys: a (type: string), b (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3, _col4 - Statistics: Num rows: 0 Data size: 288 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Statistics: Num rows: 0 Data size: 288 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: struct), _col4 (type: bigint) Reduce Operator Tree: Group By Operator @@ -149,12 +149,12 @@ STAGE PLANS: keys: a (type: string), b (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 72 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 72 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col2 (type: struct), _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -162,7 +162,7 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string), '0' (type: string) mode: partials outputColumnNames: _col0, _col1, _col2, _col3, _col4 - Statistics: Num rows: 0 Data size: 288 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -178,7 +178,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Statistics: Num rows: 0 Data size: 288 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: struct), _col4 (type: bigint) Reduce Operator Tree: Group By Operator diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out index ce229d38fbd4..cf1515c129d7 100644 --- a/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out +++ b/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out @@ -49,12 +49,12 @@ STAGE PLANS: keys: a (type: string), b (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Group By Operator @@ -172,12 +172,12 @@ STAGE PLANS: keys: a (type: string), b (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Group By Operator diff --git a/ql/src/test/results/clientpositive/groupby_rollup1.q.out b/ql/src/test/results/clientpositive/groupby_rollup1.q.out index 827b081a7ab3..bc77aeaf2a56 100644 --- a/ql/src/test/results/clientpositive/groupby_rollup1.q.out +++ b/ql/src/test/results/clientpositive/groupby_rollup1.q.out @@ -44,12 +44,12 @@ STAGE PLANS: keys: key (type: string), val (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -122,12 +122,12 @@ STAGE PLANS: keys: key (type: string), '0' (type: string), val (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Operator Tree: Group By Operator aggregations: count(DISTINCT KEY._col2:0._col0) @@ -194,12 +194,12 @@ STAGE PLANS: keys: key (type: string), val (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: rand() (type: double) - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -207,7 +207,7 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) mode: partials outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -223,7 +223,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -296,12 +296,12 @@ STAGE PLANS: keys: key (type: string), '0' (type: string), val (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Operator Tree: Group By Operator aggregations: count(DISTINCT KEY._col2:0._col0) @@ -393,12 +393,12 @@ STAGE PLANS: keys: key (type: string), val (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: rand() (type: double) - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Select Operator expressions: key (type: string), val (type: string) @@ -409,7 +409,7 @@ STAGE PLANS: keys: key (type: string), val (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -422,7 +422,7 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) mode: partials outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -438,7 +438,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -481,7 +481,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: rand() (type: double) - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator @@ -489,7 +489,7 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) mode: partials outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false table: @@ -505,7 +505,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col3 (type: bigint) Reduce Operator Tree: Group By Operator diff --git a/ql/src/test/results/clientpositive/groupby_sort_11.q.out b/ql/src/test/results/clientpositive/groupby_sort_11.q.out index 311815ab99f8..0f809bcab6ab 100644 --- a/ql/src/test/results/clientpositive/groupby_sort_11.q.out +++ b/ql/src/test/results/clientpositive/groupby_sort_11.q.out @@ -396,11 +396,11 @@ STAGE PLANS: keys: 1 (type: int) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 10 Data size: 120 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: int) sort order: + - Statistics: Num rows: 10 Data size: 120 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Group By Operator aggregations: count(DISTINCT KEY._col0:0._col0) diff --git a/ql/src/test/results/clientpositive/groupby_sort_6.q.out b/ql/src/test/results/clientpositive/groupby_sort_6.q.out index cd1f979f15656dc10803fed305bae5f794796b10..67dee4648551c1cf8c908200b758c208070fb2c6 100644 GIT binary patch delta 29 icmdlzm2vY_#trigCnwk%PrhdO7EJRgv28NmEe-&{!VBmC delta 30 jcmdlym2vk}#trigC(qG0pM1&iEtuw0V%z+~Xty{3)q4#< diff --git a/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out b/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out index 3ffe3be742d2..96f4835664a6 100644 --- a/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out +++ b/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out @@ -552,12 +552,12 @@ STAGE PLANS: keys: hr (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string) diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out index b0d6d9c6a30b..4caebd557857 100644 --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out @@ -65,12 +65,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reducer 2 Reduce Operator Tree: Group By Operator @@ -1910,12 +1910,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE Reducer 2 Reduce Operator Tree: Merge Join Operator @@ -2931,9 +2931,9 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE Select Operator - Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE Group By Operator aggregations: count() mode: hash @@ -3129,35 +3129,35 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col2 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col2 (type: string) outputColumnNames: _col2 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE Group By Operator keys: _col2 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Reducer 5 Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -3292,12 +3292,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Map 8 Map Operator Tree: TableScan @@ -3312,12 +3312,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reducer 11 Reduce Operator Tree: Group By Operator @@ -3419,14 +3419,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col0 - Statistics: Num rows: 4000 Data size: 336000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 168000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 4000 Data size: 336000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 168000 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 4000 Data size: 336000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 168000 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -4366,12 +4366,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE Reducer 3 Reduce Operator Tree: Group By Operator @@ -5016,21 +5016,21 @@ STAGE PLANS: outputColumnNames: _col2 input vertices: 1 Union 3 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col2 (type: string) outputColumnNames: _col2 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE Group By Operator keys: _col2 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Map 6 Map Operator Tree: TableScan @@ -5089,14 +5089,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/tez/union7.q.out b/ql/src/test/results/clientpositive/tez/union7.q.out index 43f678e5f40a..2971029c2544 100644 --- a/ql/src/test/results/clientpositive/tez/union7.q.out +++ b/ql/src/test/results/clientpositive/tez/union7.q.out @@ -92,14 +92,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 1300 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 6 Data size: 600 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 1300 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 6 Data size: 600 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 13 Data size: 1300 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 6 Data size: 600 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out index 40fc5a574744..b3b66256a4af 100644 --- a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out +++ b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out @@ -65,12 +65,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reducer 2 Reduce Operator Tree: Group By Operator @@ -1930,12 +1930,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE Reducer 2 Reduce Operator Tree: Merge Join Operator @@ -2965,9 +2965,9 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE Select Operator - Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE Group By Operator aggregations: count() mode: hash @@ -3164,35 +3164,35 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col2 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col2 (type: string) outputColumnNames: _col2 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE Group By Operator keys: _col2 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Reducer 5 Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -3328,12 +3328,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Map 8 Map Operator Tree: TableScan @@ -3348,12 +3348,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE Reducer 11 Reduce Operator Tree: Group By Operator @@ -3455,14 +3455,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col0 - Statistics: Num rows: 4000 Data size: 336000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 168000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 4000 Data size: 336000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 168000 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 4000 Data size: 336000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 168000 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -4413,12 +4413,12 @@ STAGE PLANS: keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE Reducer 3 Reduce Operator Tree: Group By Operator @@ -5074,21 +5074,21 @@ STAGE PLANS: outputColumnNames: _col2 input vertices: 1 Union 3 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col2 (type: string) outputColumnNames: _col2 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE Group By Operator keys: _col2 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Map 6 Map Operator Tree: TableScan @@ -5147,14 +5147,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/udf_explode.q.out b/ql/src/test/results/clientpositive/udf_explode.q.out index e07a987813e11f8a0d8535b2b2a2bbb0495f0780..301b1b717aca9d3e7788721a8bd333a6aafc4a9f 100644 GIT binary patch delta 329 zcmZ2_pYi8C#to{4u-V-?~!`BAhP znoU-)u$b%{=Q-J5D-4UA)#UH&%9G_d6eiD%ufrm*H<^pmXmY-_*ida;$>s<{cqkxZJu2i#v#R=VW`G8=I>WwfF#J C5^FjD delta 281 zcmex)k8$aJ#to*bqJWY{(bE5vaM7?~O< zxFnV&Dimi{rCKR~^jS|{9UwDV)}ME>O|Zh`jyU7V3*>kwzmpQfrr37!1FeJDBn&s- r)4rgFVkOJwe?h{GC_-$TlSAqWxWdo~-GtJULEFVe+obI+&pTWKT|`$;-1o pPX1uPKUsi>ZSsEu!Oc|`8}(r-KxTMO-knhl6TofG=H*#VJOC87FvS1> delta 199 zcmaF)mht6V#tkf{{DulHi6w~&#hF#9Rtkn@lNFsTCVQLC$0BYuS<_j0a-5dJ Date: Mon, 29 Sep 2014 16:50:36 +0000 Subject: [PATCH 018/339] HIVE-8245 : Collect table read entities at same time as view read entities (Ashutosh Chauhan via Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628218 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/optimizer/GenMapRedUtils.java | 9 ++++----- .../hadoop/hive/ql/parse/SemanticAnalyzer.java | 6 +++++- .../clientnegative/limit_partition_stats.q.out | 2 ++ .../clientpositive/alter_merge_stats_orc.q.out | 8 ++++++++ .../clientpositive/authorization_explain.q.out | 2 +- .../clientpositive/explain_dependency.q.out | 6 +++--- ql/src/test/results/clientpositive/limit0.q.out | 6 ++++++ .../results/clientpositive/limit_pushdown.q.out | 2 ++ .../clientpositive/metadata_only_queries.q.out | 8 ++++++++ .../metadata_only_queries_with_filters.q.out | 6 ++++++ .../results/clientpositive/orc_analyze.q.out | 8 ++++++++ .../test/results/clientpositive/orc_merge5.q.out | 8 ++++++++ .../test/results/clientpositive/orc_merge6.q.out | 16 ++++++++++++++++ .../test/results/clientpositive/orc_merge7.q.out | 16 ++++++++++++++++ .../clientpositive/orc_merge_incompat1.q.out | 4 ++++ .../clientpositive/orc_merge_incompat2.q.out | 8 ++++++++ .../clientpositive/ql_rewrite_gbtoidx.q.out | 6 ++++++ .../clientpositive/query_properties.q.out | 11 +++++++++++ .../results/clientpositive/stats_only_null.q.out | 4 ++++ .../tez/alter_merge_stats_orc.q.out | 8 ++++++++ .../clientpositive/tez/limit_pushdown.q.out | 2 ++ .../tez/metadata_only_queries.q.out | 8 ++++++++ .../results/clientpositive/tez/orc_analyze.q.out | 8 ++++++++ .../results/clientpositive/tez/orc_merge5.q.out | 8 ++++++++ .../results/clientpositive/tez/orc_merge6.q.out | 16 ++++++++++++++++ .../results/clientpositive/tez/orc_merge7.q.out | 16 ++++++++++++++++ .../clientpositive/tez/orc_merge_incompat1.q.out | 4 ++++ .../clientpositive/tez/orc_merge_incompat2.q.out | 8 ++++++++ .../clientpositive/vectorization_limit.q.out | 2 ++ 29 files changed, 206 insertions(+), 10 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java index 583712b8b9e1..6e679b605523 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java @@ -576,8 +576,6 @@ public static void setMapWork(MapWork plan, ParseContext parseCtx, Set> mvTasks, HiveConf hco // There are separate configuration parameters to control whether to // merge for a map-only job // or for a map-reduce job - if (currTask.getWork() instanceof MapredWork) { + if (currTask.getWork() instanceof MapredWork) { ReduceWork reduceWork = ((MapredWork) currTask.getWork()).getReduceWork(); boolean mergeMapOnly = hconf.getBoolVar(ConfVars.HIVEMERGEMAPFILES) && reduceWork == null; @@ -1810,7 +1808,7 @@ public static List getPartitionColumns(QBParseInfo parseInfo) { return Collections.emptyList(); } - public static List getInputPathsForPartialScan(QBParseInfo parseInfo, StringBuffer aggregationKey) + public static List getInputPathsForPartialScan(QBParseInfo parseInfo, StringBuffer aggregationKey) throws SemanticException { List inputPaths = new ArrayList(); switch (parseInfo.getTableSpec().specType) { @@ -1847,6 +1845,7 @@ public static Set findAliases(final MapWork work, Operator startOp) { public static Set> findTopOps(Operator startOp, final Class clazz) { final Set> operators = new LinkedHashSet>(); OperatorUtils.iterateParents(startOp, new NodeUtils.Function>() { + @Override public void apply(Operator argument) { if (argument.getNumParent() == 0 && (clazz == null || clazz.isInstance(argument))) { operators.add(argument); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index f174cc621f8a..2272c25310eb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -1628,6 +1628,10 @@ public void getMetaData(QB qb, ReadEntity parentInput) throws SemanticException qb.getParseInfo().addTableSpec(alias, ts); } + + ReadEntity parentViewInfo = PlanUtils.getParentViewInfo(getAliasId(alias, qb), viewAliasToInput); + PlanUtils.addInput(inputs, + new ReadEntity(tab, parentViewInfo, parentViewInfo == null)); } LOG.info("Get metadata for subqueries"); @@ -2432,7 +2436,7 @@ private Operator genHavingPlan(String dest, QB qb, Operator input, output = putOpInsertMap(output, inputRR); return output; } - + private Operator genPlanForSubQueryPredicate( QB qbSQ, ISubQueryJoinInfo subQueryPredicate) throws SemanticException { diff --git a/ql/src/test/results/clientnegative/limit_partition_stats.q.out b/ql/src/test/results/clientnegative/limit_partition_stats.q.out index 5a5fe1fa2713..6ecf5b7e05a4 100644 --- a/ql/src/test/results/clientnegative/limit_partition_stats.q.out +++ b/ql/src/test/results/clientnegative/limit_partition_stats.q.out @@ -43,9 +43,11 @@ STAGE PLANS: PREHOOK: query: select count(*) from part PREHOOK: type: QUERY +PREHOOK: Input: default@part #### A masked pattern was here #### POSTHOOK: query: select count(*) from part POSTHOOK: type: QUERY +POSTHOOK: Input: default@part #### A masked pattern was here #### 2000 PREHOOK: query: explain select count(*) from part diff --git a/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out b/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out index eae45b229290..f3b3e91f4eb8 100644 --- a/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out +++ b/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out @@ -65,9 +65,11 @@ value string #### A masked pattern was here #### PREHOOK: query: analyze table src_orc_merge_test_stat compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@src_orc_merge_test_stat PREHOOK: Output: default@src_orc_merge_test_stat POSTHOOK: query: analyze table src_orc_merge_test_stat compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_orc_merge_test_stat POSTHOOK: Output: default@src_orc_merge_test_stat PREHOOK: query: desc formatted src_orc_merge_test_stat PREHOOK: type: DESCTABLE @@ -115,9 +117,11 @@ POSTHOOK: Input: default@src_orc_merge_test_stat POSTHOOK: Output: default@src_orc_merge_test_stat PREHOOK: query: analyze table src_orc_merge_test_stat compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@src_orc_merge_test_stat PREHOOK: Output: default@src_orc_merge_test_stat POSTHOOK: query: analyze table src_orc_merge_test_stat compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_orc_merge_test_stat POSTHOOK: Output: default@src_orc_merge_test_stat PREHOOK: query: desc formatted src_orc_merge_test_stat PREHOOK: type: DESCTABLE @@ -260,10 +264,12 @@ Storage Desc Params: serialization.format 1 PREHOOK: query: analyze table src_orc_merge_test_part_stat partition(ds='2011') compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@src_orc_merge_test_part_stat PREHOOK: Output: default@src_orc_merge_test_part_stat PREHOOK: Output: default@src_orc_merge_test_part_stat@ds=2011 POSTHOOK: query: analyze table src_orc_merge_test_part_stat partition(ds='2011') compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_orc_merge_test_part_stat POSTHOOK: Output: default@src_orc_merge_test_part_stat POSTHOOK: Output: default@src_orc_merge_test_part_stat@ds=2011 PREHOOK: query: desc formatted src_orc_merge_test_part_stat partition (ds='2011') @@ -317,10 +323,12 @@ POSTHOOK: Input: default@src_orc_merge_test_part_stat POSTHOOK: Output: default@src_orc_merge_test_part_stat@ds=2011 PREHOOK: query: analyze table src_orc_merge_test_part_stat partition(ds='2011') compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@src_orc_merge_test_part_stat PREHOOK: Output: default@src_orc_merge_test_part_stat PREHOOK: Output: default@src_orc_merge_test_part_stat@ds=2011 POSTHOOK: query: analyze table src_orc_merge_test_part_stat partition(ds='2011') compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_orc_merge_test_part_stat POSTHOOK: Output: default@src_orc_merge_test_part_stat POSTHOOK: Output: default@src_orc_merge_test_part_stat@ds=2011 PREHOOK: query: desc formatted src_orc_merge_test_part_stat partition (ds='2011') diff --git a/ql/src/test/results/clientpositive/authorization_explain.q.out b/ql/src/test/results/clientpositive/authorization_explain.q.out index e5e605bce35d..ba7302169556 100644 --- a/ql/src/test/results/clientpositive/authorization_explain.q.out +++ b/ql/src/test/results/clientpositive/authorization_explain.q.out @@ -5,11 +5,11 @@ POSTHOOK: query: explain authorization select * from src join srcpart POSTHOOK: type: QUERY INPUTS: default@srcpart + default@src default@srcpart@ds=2008-04-08/hr=11 default@srcpart@ds=2008-04-08/hr=12 default@srcpart@ds=2008-04-09/hr=11 default@srcpart@ds=2008-04-09/hr=12 - default@src OUTPUTS: #### A masked pattern was here #### CURRENT_USER: diff --git a/ql/src/test/results/clientpositive/explain_dependency.q.out b/ql/src/test/results/clientpositive/explain_dependency.q.out index cb98d54cc9d6..b9a8ed87a814 100644 --- a/ql/src/test/results/clientpositive/explain_dependency.q.out +++ b/ql/src/test/results/clientpositive/explain_dependency.q.out @@ -88,7 +88,7 @@ POSTHOOK: query: EXPLAIN DEPENDENCY SELECT key, value FROM src UNION ALL SELECT key, value FROM srcpart WHERE ds IS NOT NULL ) S1 POSTHOOK: type: QUERY -{"input_partitions":[{"partitionName":"default@srcpart@ds=2008-04-08/hr=11"},{"partitionName":"default@srcpart@ds=2008-04-08/hr=12"},{"partitionName":"default@srcpart@ds=2008-04-09/hr=11"},{"partitionName":"default@srcpart@ds=2008-04-09/hr=12"}],"input_tables":[{"tablename":"default@srcpart","tabletype":"MANAGED_TABLE"},{"tablename":"default@src","tabletype":"MANAGED_TABLE"}]} +{"input_partitions":[{"partitionName":"default@srcpart@ds=2008-04-08/hr=11"},{"partitionName":"default@srcpart@ds=2008-04-08/hr=12"},{"partitionName":"default@srcpart@ds=2008-04-09/hr=11"},{"partitionName":"default@srcpart@ds=2008-04-09/hr=12"}],"input_tables":[{"tablename":"default@src","tabletype":"MANAGED_TABLE"},{"tablename":"default@srcpart","tabletype":"MANAGED_TABLE"}]} PREHOOK: query: EXPLAIN DEPENDENCY SELECT S1.key, S2.value FROM src S1 JOIN srcpart S2 ON S1.key = S2.key WHERE ds IS NOT NULL PREHOOK: type: QUERY @@ -112,12 +112,12 @@ PREHOOK: query: EXPLAIN DEPENDENCY SELECT * FROM V3 PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN DEPENDENCY SELECT * FROM V3 POSTHOOK: type: QUERY -{"input_partitions":[{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-08/hr=11"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-08/hr=12"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-09/hr=11"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-09/hr=12"}],"input_tables":[{"tablename":"default@v3","tabletype":"VIRTUAL_VIEW"},{"tablename":"default@v2","tabletype":"VIRTUAL_VIEW","tableParents":"[default@v3]"},{"tablename":"default@src","tabletype":"MANAGED_TABLE","tableParents":"[default@v3]"},{"tablename":"default@srcpart","tabletype":"MANAGED_TABLE","tableParents":"[default@v2]"}]} +{"input_partitions":[{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-08/hr=11"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-08/hr=12"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-09/hr=11"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-09/hr=12"}],"input_tables":[{"tablename":"default@v3","tabletype":"VIRTUAL_VIEW"},{"tablename":"default@src","tabletype":"MANAGED_TABLE","tableParents":"[default@v3]"},{"tablename":"default@v2","tabletype":"VIRTUAL_VIEW","tableParents":"[default@v3]"},{"tablename":"default@srcpart","tabletype":"MANAGED_TABLE","tableParents":"[default@v2]"}]} PREHOOK: query: EXPLAIN DEPENDENCY SELECT * FROM V4 PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN DEPENDENCY SELECT * FROM V4 POSTHOOK: type: QUERY -{"input_partitions":[{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-08/hr=11"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-08/hr=12"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-09/hr=11"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-09/hr=12"}],"input_tables":[{"tablename":"default@v4","tabletype":"VIRTUAL_VIEW"},{"tablename":"default@v2","tabletype":"VIRTUAL_VIEW","tableParents":"[default@v4]"},{"tablename":"default@v1","tabletype":"VIRTUAL_VIEW","tableParents":"[default@v4]"},{"tablename":"default@src","tabletype":"MANAGED_TABLE","tableParents":"[default@v4, default@v1]"},{"tablename":"default@srcpart","tabletype":"MANAGED_TABLE","tableParents":"[default@v2]"}]} +{"input_partitions":[{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-08/hr=11"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-08/hr=12"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-09/hr=11"},{"partitionParents":"[default@v2]","partitionName":"default@srcpart@ds=2008-04-09/hr=12"}],"input_tables":[{"tablename":"default@v4","tabletype":"VIRTUAL_VIEW"},{"tablename":"default@v2","tabletype":"VIRTUAL_VIEW","tableParents":"[default@v4]"},{"tablename":"default@src","tabletype":"MANAGED_TABLE","tableParents":"[default@v4, default@v1]"},{"tablename":"default@v1","tabletype":"VIRTUAL_VIEW","tableParents":"[default@v4]"},{"tablename":"default@srcpart","tabletype":"MANAGED_TABLE","tableParents":"[default@v2]"}]} PREHOOK: query: -- The table should show up in the explain dependency even if none -- of the partitions are selected. CREATE VIEW V5 as SELECT * FROM srcpart where ds = '10' diff --git a/ql/src/test/results/clientpositive/limit0.q.out b/ql/src/test/results/clientpositive/limit0.q.out index d0473749c2c9..3f08bddf4f07 100644 --- a/ql/src/test/results/clientpositive/limit0.q.out +++ b/ql/src/test/results/clientpositive/limit0.q.out @@ -42,19 +42,25 @@ STAGE PLANS: PREHOOK: query: select * from src where key = '238' limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: select * from src where key = '238' limit 0 POSTHOOK: type: QUERY +POSTHOOK: Input: default@src #### A masked pattern was here #### PREHOOK: query: select src.key, count(src.value) from src group by src.key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: select src.key, count(src.value) from src group by src.key limit 0 POSTHOOK: type: QUERY +POSTHOOK: Input: default@src #### A masked pattern was here #### PREHOOK: query: select * from ( select key from src limit 3) sq1 limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: select * from ( select key from src limit 3) sq1 limit 0 POSTHOOK: type: QUERY +POSTHOOK: Input: default@src #### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/limit_pushdown.q.out b/ql/src/test/results/clientpositive/limit_pushdown.q.out index a5a009050d7b..4abef8cde1c9 100644 --- a/ql/src/test/results/clientpositive/limit_pushdown.q.out +++ b/ql/src/test/results/clientpositive/limit_pushdown.q.out @@ -631,9 +631,11 @@ STAGE PLANS: PREHOOK: query: select key,value from src order by key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: select key,value from src order by key limit 0 POSTHOOK: type: QUERY +POSTHOOK: Input: default@src #### A masked pattern was here #### PREHOOK: query: -- 2MR (applied to last RS) explain diff --git a/ql/src/test/results/clientpositive/metadata_only_queries.q.out b/ql/src/test/results/clientpositive/metadata_only_queries.q.out index e273570a85ea..f5b9bd899453 100644 --- a/ql/src/test/results/clientpositive/metadata_only_queries.q.out +++ b/ql/src/test/results/clientpositive/metadata_only_queries.q.out @@ -340,9 +340,11 @@ STAGE PLANS: PREHOOK: query: select count(*), sum(1), sum(0.2), count(1), count(s), count(bo), count(bin), count(si) from stats_tbl PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl #### A masked pattern was here #### POSTHOOK: query: select count(*), sum(1), sum(0.2), count(1), count(s), count(bo), count(bin), count(si) from stats_tbl POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl #### A masked pattern was here #### 9999 9999 1999.8 9999 9999 9999 9999 9999 PREHOOK: query: explain @@ -363,9 +365,11 @@ STAGE PLANS: PREHOOK: query: select min(i), max(i), min(b), max(b), min(f), max(f), min(d), max(d) from stats_tbl PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl #### A masked pattern was here #### POSTHOOK: query: select min(i), max(i), min(b), max(b), min(f), max(f), min(d), max(d) from stats_tbl POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl #### A masked pattern was here #### 65536 65791 4294967296 4294967551 0.009999999776482582 99.9800033569336 0.01 50.0 PREHOOK: query: explain @@ -386,9 +390,11 @@ STAGE PLANS: PREHOOK: query: select count(*), sum(1), sum(0.2), count(1), count(s), count(bo), count(bin), count(si) from stats_tbl_part PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### POSTHOOK: query: select count(*), sum(1), sum(0.2), count(1), count(s), count(bo), count(bin), count(si) from stats_tbl_part POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### 9489 9489 1897.8 9489 9489 9489 9489 9489 PREHOOK: query: explain @@ -409,9 +415,11 @@ STAGE PLANS: PREHOOK: query: select min(i), max(i), min(b), max(b), min(f), max(f), min(d), max(d) from stats_tbl_part PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### POSTHOOK: query: select min(i), max(i), min(b), max(b), min(f), max(f), min(d), max(d) from stats_tbl_part POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### 65536 65791 4294967296 4294967551 0.009999999776482582 99.9800033569336 0.01 50.0 PREHOOK: query: explain select count(ts) from stats_tbl_part diff --git a/ql/src/test/results/clientpositive/metadata_only_queries_with_filters.q.out b/ql/src/test/results/clientpositive/metadata_only_queries_with_filters.q.out index 664e0656b411..5be958fe403e 100644 --- a/ql/src/test/results/clientpositive/metadata_only_queries_with_filters.q.out +++ b/ql/src/test/results/clientpositive/metadata_only_queries_with_filters.q.out @@ -160,9 +160,11 @@ STAGE PLANS: PREHOOK: query: select count(*), count(1), sum(1), count(s), count(bo), count(bin), count(si), max(i), min(b), max(f), min(d) from stats_tbl_part where dt = 2010 PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### POSTHOOK: query: select count(*), count(1), sum(1), count(s), count(bo), count(bin), count(si), max(i), min(b), max(f), min(d) from stats_tbl_part where dt = 2010 POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### 2322 2322 2322 2322 2322 2322 2322 65791 4294967296 99.9800033569336 0.03 PREHOOK: query: explain @@ -183,16 +185,20 @@ STAGE PLANS: PREHOOK: query: select count(*), count(1), sum(1), sum(2), count(s), count(bo), count(bin), count(si), max(i), min(b), max(f), min(d) from stats_tbl_part where dt > 2010 PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### POSTHOOK: query: select count(*), count(1), sum(1), sum(2), count(s), count(bo), count(bin), count(si), max(i), min(b), max(f), min(d) from stats_tbl_part where dt > 2010 POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### 2219 2219 2219 4438 2219 2219 2219 2219 65791 4294967296 99.95999908447266 0.04 PREHOOK: query: select count(*) from stats_tbl_part PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### POSTHOOK: query: select count(*) from stats_tbl_part POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### 4541 PREHOOK: query: select count(*)/2 from stats_tbl_part diff --git a/ql/src/test/results/clientpositive/orc_analyze.q.out b/ql/src/test/results/clientpositive/orc_analyze.q.out index 07e46e9d258e..af79e265f281 100644 --- a/ql/src/test/results/clientpositive/orc_analyze.q.out +++ b/ql/src/test/results/clientpositive/orc_analyze.q.out @@ -73,9 +73,11 @@ POSTHOOK: Lineage: orc_create_people.start_date SIMPLE [(orc_create_people_stagi POSTHOOK: Lineage: orc_create_people.state SIMPLE [(orc_create_people_staging)orc_create_people_staging.FieldSchema(name:state, type:string, comment:null), ] PREHOOK: query: analyze table orc_create_people compute statistics partialscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_create_people PREHOOK: Output: default@orc_create_people POSTHOOK: query: analyze table orc_create_people compute statistics partialscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_create_people POSTHOOK: Output: default@orc_create_people PREHOOK: query: desc formatted orc_create_people PREHOOK: type: DESCTABLE @@ -269,11 +271,13 @@ POSTHOOK: Lineage: orc_create_people PARTITION(state=Or).salary SIMPLE [(orc_cre POSTHOOK: Lineage: orc_create_people PARTITION(state=Or).start_date SIMPLE [(orc_create_people_staging)orc_create_people_staging.FieldSchema(name:start_date, type:timestamp, comment:null), ] PREHOOK: query: analyze table orc_create_people partition(state) compute statistics partialscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_create_people PREHOOK: Output: default@orc_create_people PREHOOK: Output: default@orc_create_people@state=Ca PREHOOK: Output: default@orc_create_people@state=Or POSTHOOK: query: analyze table orc_create_people partition(state) compute statistics partialscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_create_people POSTHOOK: Output: default@orc_create_people POSTHOOK: Output: default@orc_create_people@state=Ca POSTHOOK: Output: default@orc_create_people@state=Or @@ -581,11 +585,13 @@ POSTHOOK: Lineage: orc_create_people PARTITION(state=Or).salary SIMPLE [(orc_cre POSTHOOK: Lineage: orc_create_people PARTITION(state=Or).start_date SIMPLE [(orc_create_people_staging)orc_create_people_staging.FieldSchema(name:start_date, type:timestamp, comment:null), ] PREHOOK: query: analyze table orc_create_people partition(state) compute statistics partialscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_create_people PREHOOK: Output: default@orc_create_people PREHOOK: Output: default@orc_create_people@state=Ca PREHOOK: Output: default@orc_create_people@state=Or POSTHOOK: query: analyze table orc_create_people partition(state) compute statistics partialscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_create_people POSTHOOK: Output: default@orc_create_people POSTHOOK: Output: default@orc_create_people@state=Ca POSTHOOK: Output: default@orc_create_people@state=Or @@ -942,12 +948,14 @@ POSTHOOK: Input: default@orc_create_people POSTHOOK: Output: default@orc_create_people PREHOOK: query: analyze table orc_create_people partition(state) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_create_people PREHOOK: Output: default@orc_create_people PREHOOK: Output: default@orc_create_people@state=Ca PREHOOK: Output: default@orc_create_people@state=OH PREHOOK: Output: default@orc_create_people@state=Or POSTHOOK: query: analyze table orc_create_people partition(state) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_create_people POSTHOOK: Output: default@orc_create_people POSTHOOK: Output: default@orc_create_people@state=Ca POSTHOOK: Output: default@orc_create_people@state=OH diff --git a/ql/src/test/results/clientpositive/orc_merge5.q.out b/ql/src/test/results/clientpositive/orc_merge5.q.out index 2ac33429a74b..840dbf23d46f 100644 --- a/ql/src/test/results/clientpositive/orc_merge5.q.out +++ b/ql/src/test/results/clientpositive/orc_merge5.q.out @@ -90,10 +90,12 @@ POSTHOOK: Lineage: orc_merge5b.userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema PREHOOK: query: -- 3 files total analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: -- 3 files total analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE @@ -243,10 +245,12 @@ POSTHOOK: Lineage: orc_merge5b.userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema PREHOOK: query: -- 1 file after merging analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: -- 1 file after merging analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE @@ -313,9 +317,11 @@ POSTHOOK: Lineage: orc_merge5b.ts SIMPLE [(orc_merge5)orc_merge5.FieldSchema(nam POSTHOOK: Lineage: orc_merge5b.userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema(name:userid, type:bigint, comment:null), ] PREHOOK: query: analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE @@ -403,10 +409,12 @@ POSTHOOK: Output: default@orc_merge5b PREHOOK: query: -- 1 file after merging analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: -- 1 file after merging analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE diff --git a/ql/src/test/results/clientpositive/orc_merge6.q.out b/ql/src/test/results/clientpositive/orc_merge6.q.out index 05deb57f8d8e..5f5132072871 100644 --- a/ql/src/test/results/clientpositive/orc_merge6.q.out +++ b/ql/src/test/results/clientpositive/orc_merge6.q.out @@ -108,19 +108,23 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(year=2001,hour=24).userid SIMPLE [(orc_ PREHOOK: query: -- 3 files total analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2000/hour=24 POSTHOOK: query: -- 3 files total analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2000/hour=24 PREHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2001/hour=24 POSTHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) @@ -353,19 +357,23 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(year=2001,hour=24).userid SIMPLE [(orc_ PREHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2000/hour=24 POSTHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2000/hour=24 PREHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2001/hour=24 POSTHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) @@ -512,18 +520,22 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(year=2001,hour=24).ts SIMPLE [(orc_merg POSTHOOK: Lineage: orc_merge5a PARTITION(year=2001,hour=24).userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema(name:userid, type:bigint, comment:null), ] PREHOOK: query: analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2000/hour=24 POSTHOOK: query: analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2000/hour=24 PREHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2001/hour=24 POSTHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) @@ -689,19 +701,23 @@ POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 PREHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2000/hour=24 POSTHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2000/hour=24 PREHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2001/hour=24 POSTHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) diff --git a/ql/src/test/results/clientpositive/orc_merge7.q.out b/ql/src/test/results/clientpositive/orc_merge7.q.out index d3427362a58a..2f506cb95211 100644 --- a/ql/src/test/results/clientpositive/orc_merge7.q.out +++ b/ql/src/test/results/clientpositive/orc_merge7.q.out @@ -141,19 +141,23 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).userid SIMPLE [(orc_merge5)orc PREHOOK: query: -- 3 files total analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: -- 3 files total analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) @@ -418,19 +422,23 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).userid SIMPLE [(orc_merge5)orc PREHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) @@ -614,18 +622,22 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).ts SIMPLE [(orc_merge5)orc_mer POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema(name:userid, type:bigint, comment:null), ] PREHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) @@ -791,19 +803,23 @@ POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) diff --git a/ql/src/test/results/clientpositive/orc_merge_incompat1.q.out b/ql/src/test/results/clientpositive/orc_merge_incompat1.q.out index e6ef838e493c..cc81ead978f5 100644 --- a/ql/src/test/results/clientpositive/orc_merge_incompat1.q.out +++ b/ql/src/test/results/clientpositive/orc_merge_incompat1.q.out @@ -141,10 +141,12 @@ POSTHOOK: Lineage: orc_merge5b.userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema PREHOOK: query: -- 5 files total analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: -- 5 files total analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE @@ -219,10 +221,12 @@ POSTHOOK: Output: default@orc_merge5b PREHOOK: query: -- 3 file after merging - all 0.12 format files will be merged and 0.11 files will be left behind analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: -- 3 file after merging - all 0.12 format files will be merged and 0.11 files will be left behind analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE diff --git a/ql/src/test/results/clientpositive/orc_merge_incompat2.q.out b/ql/src/test/results/clientpositive/orc_merge_incompat2.q.out index e28d8b39ac09..c944eb6e3d7d 100644 --- a/ql/src/test/results/clientpositive/orc_merge_incompat2.q.out +++ b/ql/src/test/results/clientpositive/orc_merge_incompat2.q.out @@ -200,18 +200,22 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).ts SIMPLE [(orc_merge5)orc_mer POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema(name:userid, type:bigint, comment:null), ] PREHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) @@ -385,18 +389,22 @@ POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) diff --git a/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out b/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out index 0e7c4afb12d6..f7da06c1ce2a 100644 --- a/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out +++ b/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out @@ -306,6 +306,7 @@ group by l_shipdate order by l_shipdate PREHOOK: type: QUERY PREHOOK: Input: default@default__lineitem_lineitem_lshipdate_idx__ +PREHOOK: Input: default@lineitem #### A masked pattern was here #### POSTHOOK: query: select l_shipdate, count(l_shipdate) from lineitem @@ -313,6 +314,7 @@ group by l_shipdate order by l_shipdate POSTHOOK: type: QUERY POSTHOOK: Input: default@default__lineitem_lineitem_lshipdate_idx__ +POSTHOOK: Input: default@lineitem #### A masked pattern was here #### 1992-04-27 1 1992-07-02 1 @@ -654,6 +656,7 @@ group by year(l_shipdate), month(l_shipdate) order by year, month PREHOOK: type: QUERY PREHOOK: Input: default@default__lineitem_lineitem_lshipdate_idx__ +PREHOOK: Input: default@lineitem #### A masked pattern was here #### POSTHOOK: query: select year(l_shipdate) as year, month(l_shipdate) as month, @@ -663,6 +666,7 @@ group by year(l_shipdate), month(l_shipdate) order by year, month POSTHOOK: type: QUERY POSTHOOK: Input: default@default__lineitem_lineitem_lshipdate_idx__ +POSTHOOK: Input: default@lineitem #### A masked pattern was here #### 1992 4 1 1992 7 3 @@ -2628,10 +2632,12 @@ STAGE PLANS: PREHOOK: query: select key, count(key) from tbl group by key order by key PREHOOK: type: QUERY PREHOOK: Input: default@default__tbl_tbl_key_idx__ +PREHOOK: Input: default@tbl #### A masked pattern was here #### POSTHOOK: query: select key, count(key) from tbl group by key order by key POSTHOOK: type: QUERY POSTHOOK: Input: default@default__tbl_tbl_key_idx__ +POSTHOOK: Input: default@tbl #### A masked pattern was here #### 1 1 2 3 diff --git a/ql/src/test/results/clientpositive/query_properties.q.out b/ql/src/test/results/clientpositive/query_properties.q.out index 47f8d8c55978..5684f0d6d0bc 100644 --- a/ql/src/test/results/clientpositive/query_properties.q.out +++ b/ql/src/test/results/clientpositive/query_properties.q.out @@ -1,5 +1,6 @@ PREHOOK: query: select * from src a join src b on a.key = b.key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: true Has Group By: false @@ -11,6 +12,7 @@ Has Distribute By: false Has Cluster By: false PREHOOK: query: select * from src group by src.key, src.value limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: false Has Group By: true @@ -22,6 +24,7 @@ Has Distribute By: false Has Cluster By: false PREHOOK: query: select * from src order by src.key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: false Has Group By: false @@ -33,6 +36,7 @@ Has Distribute By: false Has Cluster By: false PREHOOK: query: select * from src sort by src.key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: false Has Group By: false @@ -44,6 +48,7 @@ Has Distribute By: false Has Cluster By: false PREHOOK: query: select a.key, sum(b.value) from src a join src b on a.key = b.key group by a.key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: true Has Group By: true @@ -55,6 +60,7 @@ Has Distribute By: false Has Cluster By: false PREHOOK: query: select transform(*) using 'cat' from src limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: false Has Group By: false @@ -66,6 +72,7 @@ Has Distribute By: false Has Cluster By: false PREHOOK: query: select * from src distribute by src.key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: false Has Group By: false @@ -77,6 +84,7 @@ Has Distribute By: true Has Cluster By: false PREHOOK: query: select * from src cluster by src.key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: false Has Group By: false @@ -88,6 +96,7 @@ Has Distribute By: false Has Cluster By: true PREHOOK: query: select key, sum(value) from (select a.key as key, b.value as value from src a join src b on a.key = b.key) c group by key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: true Has Group By: true @@ -99,6 +108,7 @@ Has Distribute By: false Has Cluster By: false PREHOOK: query: select * from src a join src b on a.key = b.key order by a.key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: true Has Group By: false @@ -110,6 +120,7 @@ Has Distribute By: false Has Cluster By: false PREHOOK: query: select * from src a join src b on a.key = b.key distribute by a.key sort by a.key, b.value limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### Has Join: true Has Group By: false diff --git a/ql/src/test/results/clientpositive/stats_only_null.q.out b/ql/src/test/results/clientpositive/stats_only_null.q.out index c4728c90f07e..4549b7908915 100644 --- a/ql/src/test/results/clientpositive/stats_only_null.q.out +++ b/ql/src/test/results/clientpositive/stats_only_null.q.out @@ -322,16 +322,20 @@ STAGE PLANS: PREHOOK: query: select count(*), count(a), count(b), count(c), count(d) from stats_null PREHOOK: type: QUERY +PREHOOK: Input: default@stats_null #### A masked pattern was here #### POSTHOOK: query: select count(*), count(a), count(b), count(c), count(d) from stats_null POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_null #### A masked pattern was here #### 10 8 8 10 10 PREHOOK: query: select count(*), count(a), count(b), count(c), count(d) from stats_null_part PREHOOK: type: QUERY +PREHOOK: Input: default@stats_null_part #### A masked pattern was here #### POSTHOOK: query: select count(*), count(a), count(b), count(c), count(d) from stats_null_part POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_null_part #### A masked pattern was here #### 10 8 8 10 10 PREHOOK: query: drop table stats_null_part diff --git a/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out b/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out index eae45b229290..f3b3e91f4eb8 100644 --- a/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out +++ b/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out @@ -65,9 +65,11 @@ value string #### A masked pattern was here #### PREHOOK: query: analyze table src_orc_merge_test_stat compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@src_orc_merge_test_stat PREHOOK: Output: default@src_orc_merge_test_stat POSTHOOK: query: analyze table src_orc_merge_test_stat compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_orc_merge_test_stat POSTHOOK: Output: default@src_orc_merge_test_stat PREHOOK: query: desc formatted src_orc_merge_test_stat PREHOOK: type: DESCTABLE @@ -115,9 +117,11 @@ POSTHOOK: Input: default@src_orc_merge_test_stat POSTHOOK: Output: default@src_orc_merge_test_stat PREHOOK: query: analyze table src_orc_merge_test_stat compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@src_orc_merge_test_stat PREHOOK: Output: default@src_orc_merge_test_stat POSTHOOK: query: analyze table src_orc_merge_test_stat compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_orc_merge_test_stat POSTHOOK: Output: default@src_orc_merge_test_stat PREHOOK: query: desc formatted src_orc_merge_test_stat PREHOOK: type: DESCTABLE @@ -260,10 +264,12 @@ Storage Desc Params: serialization.format 1 PREHOOK: query: analyze table src_orc_merge_test_part_stat partition(ds='2011') compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@src_orc_merge_test_part_stat PREHOOK: Output: default@src_orc_merge_test_part_stat PREHOOK: Output: default@src_orc_merge_test_part_stat@ds=2011 POSTHOOK: query: analyze table src_orc_merge_test_part_stat partition(ds='2011') compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_orc_merge_test_part_stat POSTHOOK: Output: default@src_orc_merge_test_part_stat POSTHOOK: Output: default@src_orc_merge_test_part_stat@ds=2011 PREHOOK: query: desc formatted src_orc_merge_test_part_stat partition (ds='2011') @@ -317,10 +323,12 @@ POSTHOOK: Input: default@src_orc_merge_test_part_stat POSTHOOK: Output: default@src_orc_merge_test_part_stat@ds=2011 PREHOOK: query: analyze table src_orc_merge_test_part_stat partition(ds='2011') compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@src_orc_merge_test_part_stat PREHOOK: Output: default@src_orc_merge_test_part_stat PREHOOK: Output: default@src_orc_merge_test_part_stat@ds=2011 POSTHOOK: query: analyze table src_orc_merge_test_part_stat partition(ds='2011') compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_orc_merge_test_part_stat POSTHOOK: Output: default@src_orc_merge_test_part_stat POSTHOOK: Output: default@src_orc_merge_test_part_stat@ds=2011 PREHOOK: query: desc formatted src_orc_merge_test_part_stat partition (ds='2011') diff --git a/ql/src/test/results/clientpositive/tez/limit_pushdown.q.out b/ql/src/test/results/clientpositive/tez/limit_pushdown.q.out index 23df5ec42d80..c765ab7ad391 100644 --- a/ql/src/test/results/clientpositive/tez/limit_pushdown.q.out +++ b/ql/src/test/results/clientpositive/tez/limit_pushdown.q.out @@ -673,9 +673,11 @@ STAGE PLANS: PREHOOK: query: select key,value from src order by key limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: select key,value from src order by key limit 0 POSTHOOK: type: QUERY +POSTHOOK: Input: default@src #### A masked pattern was here #### PREHOOK: query: -- 2MR (applied to last RS) explain diff --git a/ql/src/test/results/clientpositive/tez/metadata_only_queries.q.out b/ql/src/test/results/clientpositive/tez/metadata_only_queries.q.out index 7942ce76bea0..31c77bc77fb8 100644 --- a/ql/src/test/results/clientpositive/tez/metadata_only_queries.q.out +++ b/ql/src/test/results/clientpositive/tez/metadata_only_queries.q.out @@ -352,9 +352,11 @@ STAGE PLANS: PREHOOK: query: select count(*), sum(1), sum(0.2), count(1), count(s), count(bo), count(bin), count(si) from stats_tbl PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl #### A masked pattern was here #### POSTHOOK: query: select count(*), sum(1), sum(0.2), count(1), count(s), count(bo), count(bin), count(si) from stats_tbl POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl #### A masked pattern was here #### 9999 9999 1999.8 9999 9999 9999 9999 9999 PREHOOK: query: explain @@ -375,9 +377,11 @@ STAGE PLANS: PREHOOK: query: select min(i), max(i), min(b), max(b), min(f), max(f), min(d), max(d) from stats_tbl PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl #### A masked pattern was here #### POSTHOOK: query: select min(i), max(i), min(b), max(b), min(f), max(f), min(d), max(d) from stats_tbl POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl #### A masked pattern was here #### 65536 65791 4294967296 4294967551 0.009999999776482582 99.9800033569336 0.01 50.0 PREHOOK: query: explain @@ -398,9 +402,11 @@ STAGE PLANS: PREHOOK: query: select count(*), sum(1), sum(0.2), count(1), count(s), count(bo), count(bin), count(si) from stats_tbl_part PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### POSTHOOK: query: select count(*), sum(1), sum(0.2), count(1), count(s), count(bo), count(bin), count(si) from stats_tbl_part POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### 9489 9489 1897.8 9489 9489 9489 9489 9489 PREHOOK: query: explain @@ -421,9 +427,11 @@ STAGE PLANS: PREHOOK: query: select min(i), max(i), min(b), max(b), min(f), max(f), min(d), max(d) from stats_tbl_part PREHOOK: type: QUERY +PREHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### POSTHOOK: query: select min(i), max(i), min(b), max(b), min(f), max(f), min(d), max(d) from stats_tbl_part POSTHOOK: type: QUERY +POSTHOOK: Input: default@stats_tbl_part #### A masked pattern was here #### 65536 65791 4294967296 4294967551 0.009999999776482582 99.9800033569336 0.01 50.0 PREHOOK: query: explain select count(ts) from stats_tbl_part diff --git a/ql/src/test/results/clientpositive/tez/orc_analyze.q.out b/ql/src/test/results/clientpositive/tez/orc_analyze.q.out index 07e46e9d258e..af79e265f281 100644 --- a/ql/src/test/results/clientpositive/tez/orc_analyze.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_analyze.q.out @@ -73,9 +73,11 @@ POSTHOOK: Lineage: orc_create_people.start_date SIMPLE [(orc_create_people_stagi POSTHOOK: Lineage: orc_create_people.state SIMPLE [(orc_create_people_staging)orc_create_people_staging.FieldSchema(name:state, type:string, comment:null), ] PREHOOK: query: analyze table orc_create_people compute statistics partialscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_create_people PREHOOK: Output: default@orc_create_people POSTHOOK: query: analyze table orc_create_people compute statistics partialscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_create_people POSTHOOK: Output: default@orc_create_people PREHOOK: query: desc formatted orc_create_people PREHOOK: type: DESCTABLE @@ -269,11 +271,13 @@ POSTHOOK: Lineage: orc_create_people PARTITION(state=Or).salary SIMPLE [(orc_cre POSTHOOK: Lineage: orc_create_people PARTITION(state=Or).start_date SIMPLE [(orc_create_people_staging)orc_create_people_staging.FieldSchema(name:start_date, type:timestamp, comment:null), ] PREHOOK: query: analyze table orc_create_people partition(state) compute statistics partialscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_create_people PREHOOK: Output: default@orc_create_people PREHOOK: Output: default@orc_create_people@state=Ca PREHOOK: Output: default@orc_create_people@state=Or POSTHOOK: query: analyze table orc_create_people partition(state) compute statistics partialscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_create_people POSTHOOK: Output: default@orc_create_people POSTHOOK: Output: default@orc_create_people@state=Ca POSTHOOK: Output: default@orc_create_people@state=Or @@ -581,11 +585,13 @@ POSTHOOK: Lineage: orc_create_people PARTITION(state=Or).salary SIMPLE [(orc_cre POSTHOOK: Lineage: orc_create_people PARTITION(state=Or).start_date SIMPLE [(orc_create_people_staging)orc_create_people_staging.FieldSchema(name:start_date, type:timestamp, comment:null), ] PREHOOK: query: analyze table orc_create_people partition(state) compute statistics partialscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_create_people PREHOOK: Output: default@orc_create_people PREHOOK: Output: default@orc_create_people@state=Ca PREHOOK: Output: default@orc_create_people@state=Or POSTHOOK: query: analyze table orc_create_people partition(state) compute statistics partialscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_create_people POSTHOOK: Output: default@orc_create_people POSTHOOK: Output: default@orc_create_people@state=Ca POSTHOOK: Output: default@orc_create_people@state=Or @@ -942,12 +948,14 @@ POSTHOOK: Input: default@orc_create_people POSTHOOK: Output: default@orc_create_people PREHOOK: query: analyze table orc_create_people partition(state) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_create_people PREHOOK: Output: default@orc_create_people PREHOOK: Output: default@orc_create_people@state=Ca PREHOOK: Output: default@orc_create_people@state=OH PREHOOK: Output: default@orc_create_people@state=Or POSTHOOK: query: analyze table orc_create_people partition(state) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_create_people POSTHOOK: Output: default@orc_create_people POSTHOOK: Output: default@orc_create_people@state=Ca POSTHOOK: Output: default@orc_create_people@state=OH diff --git a/ql/src/test/results/clientpositive/tez/orc_merge5.q.out b/ql/src/test/results/clientpositive/tez/orc_merge5.q.out index b40a37d265d1..fdd4c771dab4 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge5.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge5.q.out @@ -97,10 +97,12 @@ POSTHOOK: Lineage: orc_merge5b.userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema PREHOOK: query: -- 3 files total analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: -- 3 files total analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE @@ -265,10 +267,12 @@ POSTHOOK: Lineage: orc_merge5b.userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema PREHOOK: query: -- 1 file after merging analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: -- 1 file after merging analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE @@ -335,9 +339,11 @@ POSTHOOK: Lineage: orc_merge5b.ts SIMPLE [(orc_merge5)orc_merge5.FieldSchema(nam POSTHOOK: Lineage: orc_merge5b.userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema(name:userid, type:bigint, comment:null), ] PREHOOK: query: analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE @@ -425,10 +431,12 @@ POSTHOOK: Output: default@orc_merge5b PREHOOK: query: -- 1 file after merging analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: -- 1 file after merging analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE diff --git a/ql/src/test/results/clientpositive/tez/orc_merge6.q.out b/ql/src/test/results/clientpositive/tez/orc_merge6.q.out index 0441fa4c8fdf..b9057f51f5e6 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge6.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge6.q.out @@ -115,19 +115,23 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(year=2001,hour=24).userid SIMPLE [(orc_ PREHOOK: query: -- 3 files total analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2000/hour=24 POSTHOOK: query: -- 3 files total analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2000/hour=24 PREHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2001/hour=24 POSTHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) @@ -375,19 +379,23 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(year=2001,hour=24).userid SIMPLE [(orc_ PREHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2000/hour=24 POSTHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2000/hour=24 PREHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2001/hour=24 POSTHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) @@ -534,18 +542,22 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(year=2001,hour=24).ts SIMPLE [(orc_merg POSTHOOK: Lineage: orc_merge5a PARTITION(year=2001,hour=24).userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema(name:userid, type:bigint, comment:null), ] PREHOOK: query: analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2000/hour=24 POSTHOOK: query: analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2000/hour=24 PREHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2001/hour=24 POSTHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) @@ -711,19 +723,23 @@ POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 PREHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2000/hour=24 POSTHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2000/hour=24 PREHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@year=2001/hour=24 POSTHOOK: query: analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) diff --git a/ql/src/test/results/clientpositive/tez/orc_merge7.q.out b/ql/src/test/results/clientpositive/tez/orc_merge7.q.out index c6809a16f5fa..454b120b0eaf 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge7.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge7.q.out @@ -148,19 +148,23 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).userid SIMPLE [(orc_merge5)orc PREHOOK: query: -- 3 files total analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: -- 3 files total analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) @@ -440,19 +444,23 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).userid SIMPLE [(orc_merge5)orc PREHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) @@ -636,18 +644,22 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).ts SIMPLE [(orc_merge5)orc_mer POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema(name:userid, type:bigint, comment:null), ] PREHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) @@ -813,19 +825,23 @@ POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: -- 1 file after merging analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) diff --git a/ql/src/test/results/clientpositive/tez/orc_merge_incompat1.q.out b/ql/src/test/results/clientpositive/tez/orc_merge_incompat1.q.out index 90f7f2416f97..33b5fcdf36b1 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge_incompat1.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge_incompat1.q.out @@ -148,10 +148,12 @@ POSTHOOK: Lineage: orc_merge5b.userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema PREHOOK: query: -- 5 files total analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: -- 5 files total analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE @@ -226,10 +228,12 @@ POSTHOOK: Output: default@orc_merge5b PREHOOK: query: -- 3 file after merging - all 0.12 format files will be merged and 0.11 files will be left behind analyze table orc_merge5b compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5b PREHOOK: Output: default@orc_merge5b POSTHOOK: query: -- 3 file after merging - all 0.12 format files will be merged and 0.11 files will be left behind analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b PREHOOK: query: desc formatted orc_merge5b PREHOOK: type: DESCTABLE diff --git a/ql/src/test/results/clientpositive/tez/orc_merge_incompat2.q.out b/ql/src/test/results/clientpositive/tez/orc_merge_incompat2.q.out index 30c6ab8b915c..963ac36646d6 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge_incompat2.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge_incompat2.q.out @@ -207,18 +207,22 @@ POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).ts SIMPLE [(orc_merge5)orc_mer POSTHOOK: Lineage: orc_merge5a PARTITION(st=80.0).userid SIMPLE [(orc_merge5)orc_merge5.FieldSchema(name:userid, type:bigint, comment:null), ] PREHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) @@ -392,18 +396,22 @@ POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=80.0 POSTHOOK: query: analyze table orc_merge5a partition(st=80.0) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=80.0 PREHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan PREHOOK: type: QUERY +PREHOOK: Input: default@orc_merge5a PREHOOK: Output: default@orc_merge5a PREHOOK: Output: default@orc_merge5a@st=0.8 POSTHOOK: query: analyze table orc_merge5a partition(st=0.8) compute statistics noscan POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) diff --git a/ql/src/test/results/clientpositive/vectorization_limit.q.out b/ql/src/test/results/clientpositive/vectorization_limit.q.out index d67d55918a47..5a31b9e09603 100644 --- a/ql/src/test/results/clientpositive/vectorization_limit.q.out +++ b/ql/src/test/results/clientpositive/vectorization_limit.q.out @@ -433,9 +433,11 @@ STAGE PLANS: PREHOOK: query: select ctinyint,cdouble from alltypesorc order by ctinyint limit 0 PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### POSTHOOK: query: select ctinyint,cdouble from alltypesorc order by ctinyint limit 0 POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### PREHOOK: query: -- 2MR (applied to last RS) explain From b418fff30b0e58f4ff5b51258c166b4bb99be2dc Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Mon, 29 Sep 2014 17:00:04 +0000 Subject: [PATCH 019/339] HIVE-8191 Update and delete on tables with non Acid output formats gives runtime error (Alan Gates reviewed by Eugene Koifman) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628220 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/ErrorMsg.java | 2 + .../hive/ql/parse/SemanticAnalyzer.java | 11 +++++- .../clientnegative/delete_non_acid_table.q | 12 ++++++ .../clientnegative/update_non_acid_table.q | 12 ++++++ .../delete_non_acid_table.q.out | 37 +++++++++++++++++++ .../update_non_acid_table.q.out | 37 +++++++++++++++++++ 6 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 ql/src/test/queries/clientnegative/delete_non_acid_table.q create mode 100644 ql/src/test/queries/clientnegative/update_non_acid_table.q create mode 100644 ql/src/test/results/clientnegative/delete_non_acid_table.q.out create mode 100644 ql/src/test/results/clientnegative/update_non_acid_table.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java index 463e8fb88774..eb9f4e3c071d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java @@ -417,6 +417,8 @@ public enum ErrorMsg { "that implements AcidOutputFormat while transaction manager that supports ACID is in use"), VALUES_TABLE_CONSTRUCTOR_NOT_SUPPORTED(10296, "Values clause with table constructor not yet supported"), + ACID_OP_ON_NONACID_TABLE(10297, "Attempt to do update or delete on table {0} that does not use " + + "an AcidOutputFormat", true), //========================== 20000 range starts here ========================// SCRIPT_INIT_ERROR(20000, "Unable to initialize custom script."), diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 2272c25310eb..38ebb787fcdf 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -1545,11 +1545,20 @@ public void getMetaData(QB qb, ReadEntity parentInput) throws SemanticException } // Disallow INSERT INTO on bucketized tables + boolean isAcid = isAcidTable(tab); if (qb.getParseInfo().isInsertIntoTable(tab.getDbName(), tab.getTableName()) && - tab.getNumBuckets() > 0 && !isAcidTable(tab)) { + tab.getNumBuckets() > 0 && !isAcid) { throw new SemanticException(ErrorMsg.INSERT_INTO_BUCKETIZED_TABLE. getMsg("Table: " + tab_name)); } + // Disallow update and delete on non-acid tables + if ((updating() || deleting()) && !isAcid) { + // isAcidTable above also checks for whether we are using an acid compliant + // transaction manager. But that has already been caught in + // UpdateDeleteSemanticAnalyzer, so if we are updating or deleting and getting nonAcid + // here, it means the table itself doesn't support it. + throw new SemanticException(ErrorMsg.ACID_OP_ON_NONACID_TABLE, tab_name); + } // We check offline of the table, as if people only select from an // non-existing partition of an offline table, the partition won't diff --git a/ql/src/test/queries/clientnegative/delete_non_acid_table.q b/ql/src/test/queries/clientnegative/delete_non_acid_table.q new file mode 100644 index 000000000000..6ae82ffacee4 --- /dev/null +++ b/ql/src/test/queries/clientnegative/delete_non_acid_table.q @@ -0,0 +1,12 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.enforce.bucketing=true; + +create table not_an_acid_table2(a int, b varchar(128)); + +insert into table not_an_acid_table2 select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10; + +select a,b from not_an_acid_table2 order by a; + +delete from not_an_acid_table2 where b = '0ruyd6Y50JpdGRf6HqD'; diff --git a/ql/src/test/queries/clientnegative/update_non_acid_table.q b/ql/src/test/queries/clientnegative/update_non_acid_table.q new file mode 100644 index 000000000000..dd0b01e65ec8 --- /dev/null +++ b/ql/src/test/queries/clientnegative/update_non_acid_table.q @@ -0,0 +1,12 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.enforce.bucketing=true; + +create table not_an_acid_table(a int, b varchar(128)); + +insert into table not_an_acid_table select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10; + +select a,b from not_an_acid_table order by a; + +update not_an_acid_table set b = 'fred' where b = '0ruyd6Y50JpdGRf6HqD'; diff --git a/ql/src/test/results/clientnegative/delete_non_acid_table.q.out b/ql/src/test/results/clientnegative/delete_non_acid_table.q.out new file mode 100644 index 000000000000..c1e54a848f24 --- /dev/null +++ b/ql/src/test/results/clientnegative/delete_non_acid_table.q.out @@ -0,0 +1,37 @@ +PREHOOK: query: create table not_an_acid_table2(a int, b varchar(128)) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@not_an_acid_table2 +POSTHOOK: query: create table not_an_acid_table2(a int, b varchar(128)) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@not_an_acid_table2 +PREHOOK: query: insert into table not_an_acid_table2 select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@not_an_acid_table2 +POSTHOOK: query: insert into table not_an_acid_table2 select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@not_an_acid_table2 +POSTHOOK: Lineage: not_an_acid_table2.a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: not_an_acid_table2.b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: select a,b from not_an_acid_table2 order by a +PREHOOK: type: QUERY +PREHOOK: Input: default@not_an_acid_table2 +#### A masked pattern was here #### +POSTHOOK: query: select a,b from not_an_acid_table2 order by a +POSTHOOK: type: QUERY +POSTHOOK: Input: default@not_an_acid_table2 +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa +-1073051226 A34p7oRr2WvUJNf +-1072910839 0iqrc5 +-1072081801 dPkN74F7 +-1072076362 2uLyD28144vklju213J1mr +-1071480828 aw724t8c5558x2xneC624 +-1071363017 Anj0oF +-1070883071 0ruyd6Y50JpdGRf6HqD +-1070551679 iUR3Q +-1069736047 k17Am8uPHWk02cEf1jet +FAILED: SemanticException [Error 10297]: Attempt to do update or delete on table default.not_an_acid_table2 that does not use an AcidOutputFormat diff --git a/ql/src/test/results/clientnegative/update_non_acid_table.q.out b/ql/src/test/results/clientnegative/update_non_acid_table.q.out new file mode 100644 index 000000000000..4bf61db0cbc2 --- /dev/null +++ b/ql/src/test/results/clientnegative/update_non_acid_table.q.out @@ -0,0 +1,37 @@ +PREHOOK: query: create table not_an_acid_table(a int, b varchar(128)) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@not_an_acid_table +POSTHOOK: query: create table not_an_acid_table(a int, b varchar(128)) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@not_an_acid_table +PREHOOK: query: insert into table not_an_acid_table select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@not_an_acid_table +POSTHOOK: query: insert into table not_an_acid_table select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@not_an_acid_table +POSTHOOK: Lineage: not_an_acid_table.a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: not_an_acid_table.b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: select a,b from not_an_acid_table order by a +PREHOOK: type: QUERY +PREHOOK: Input: default@not_an_acid_table +#### A masked pattern was here #### +POSTHOOK: query: select a,b from not_an_acid_table order by a +POSTHOOK: type: QUERY +POSTHOOK: Input: default@not_an_acid_table +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa +-1073051226 A34p7oRr2WvUJNf +-1072910839 0iqrc5 +-1072081801 dPkN74F7 +-1072076362 2uLyD28144vklju213J1mr +-1071480828 aw724t8c5558x2xneC624 +-1071363017 Anj0oF +-1070883071 0ruyd6Y50JpdGRf6HqD +-1070551679 iUR3Q +-1069736047 k17Am8uPHWk02cEf1jet +FAILED: SemanticException [Error 10297]: Attempt to do update or delete on table default.not_an_acid_table that does not use an AcidOutputFormat From e4b103f7e93c5acb7ac8c2bc588bed40d2086043 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 29 Sep 2014 17:37:14 +0000 Subject: [PATCH 020/339] HIVE-8228 : CBO: fix couple of issues with partition pruning (Harish Butani via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628230 13f79535-47bb-0310-9956-ffa450edef68 --- .../optiq/rules/PartitionPruner.java | 10 +++++ .../hive/ql/parse/SemanticAnalyzer.java | 5 +++ .../clientpositive/tez/cbo_correctness.q.out | 40 +++++++++---------- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/PartitionPruner.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/PartitionPruner.java index d9d94f616156..a218ecad0214 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/PartitionPruner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/PartitionPruner.java @@ -24,7 +24,10 @@ import java.util.Set; import org.apache.hadoop.hive.metastore.api.FieldSchema; +import org.apache.hadoop.hive.ql.exec.FunctionRegistry; import org.apache.hadoop.hive.ql.optimizer.optiq.RelOptHiveTable; +import org.apache.hadoop.hive.ql.optimizer.optiq.translator.SqlFunctionConverter; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; import org.eigenbase.relopt.RelOptCluster; import org.eigenbase.reltype.RelDataType; import org.eigenbase.reltype.RelDataTypeField; @@ -104,6 +107,13 @@ public RexNode visitCall(RexCall call) { List args = new LinkedList(); boolean argsPruned = false; + GenericUDF hiveUDF = SqlFunctionConverter.getHiveUDF(call.getOperator(), + call.getType()); + if (hiveUDF != null && + !FunctionRegistry.isDeterministic(hiveUDF)) { + return null; + } + for (RexNode operand : call.operands) { RexNode n = operand.accept(this); if (n != null) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 38ebb787fcdf..c2ed55c3982f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -12309,6 +12309,11 @@ public RelNode applyPreCBOTransforms(RelNode basePlan, RelMetadataProvider mdPro HiveSortRel.HIVE_SORT_REL_FACTORY, HiveAggregateRel.HIVE_AGGR_REL_FACTORY, HiveUnionRel.UNION_REL_FACTORY); basePlan = fieldTrimmer.trim(basePlan); + basePlan = hepPlan(basePlan, true, mdProvider, + new PushFilterPastProjectRule(FilterRelBase.class, + HiveFilterRel.DEFAULT_FILTER_FACTORY, HiveProjectRel.class, + HiveProjectRel.DEFAULT_PROJECT_FACTORY)); + return basePlan; } diff --git a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out index 5920612790d9..dabc8884e24d 100644 --- a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out @@ -16734,26 +16734,6 @@ POSTHOOK: Input: default@t1@dt=2014 POSTHOOK: Input: default@t2 POSTHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 false 2014 -1 1 1 1.0 false 2014 -null null NULL NULL NULL 2014 -null null NULL NULL NULL 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 @@ -16774,6 +16754,26 @@ null null NULL NULL NULL 2014 2 2 2 2.0 true 2014 null null NULL NULL NULL 2014 null null NULL NULL NULL 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 false 2014 +1 1 1 1.0 false 2014 +null null NULL NULL NULL 2014 +null null NULL NULL NULL 2014 PREHOOK: query: select key from (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r2 where key >=0 order by key PREHOOK: type: QUERY PREHOOK: Input: default@t1 From 6f388208ad7c145b85e338b581cff791a4f1264f Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 29 Sep 2014 17:39:55 +0000 Subject: [PATCH 021/339] HIVE-8223 : CBO Trunk Merge: partition_wise_fileformat2 select result depends on ordering (Sergey Shelukhin via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628231 13f79535-47bb-0310-9956-ffa450edef68 --- .../queries/clientpositive/partition_wise_fileformat2.q | 2 +- .../clientpositive/partition_wise_fileformat2.q.out | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ql/src/test/queries/clientpositive/partition_wise_fileformat2.q b/ql/src/test/queries/clientpositive/partition_wise_fileformat2.q index 5501a653a30a..de51cddd0d84 100644 --- a/ql/src/test/queries/clientpositive/partition_wise_fileformat2.q +++ b/ql/src/test/queries/clientpositive/partition_wise_fileformat2.q @@ -1,4 +1,4 @@ - +-- SORT_BEFORE_DIFF create table partition_test_partitioned(key string, value string) partitioned by (dt string); diff --git a/ql/src/test/results/clientpositive/partition_wise_fileformat2.q.out b/ql/src/test/results/clientpositive/partition_wise_fileformat2.q.out index 1854843ba869..b9cdde1936ba 100644 --- a/ql/src/test/results/clientpositive/partition_wise_fileformat2.q.out +++ b/ql/src/test/results/clientpositive/partition_wise_fileformat2.q.out @@ -1,8 +1,12 @@ -PREHOOK: query: create table partition_test_partitioned(key string, value string) partitioned by (dt string) +PREHOOK: query: -- SORT_BEFORE_DIFF + +create table partition_test_partitioned(key string, value string) partitioned by (dt string) PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@partition_test_partitioned -POSTHOOK: query: create table partition_test_partitioned(key string, value string) partitioned by (dt string) +POSTHOOK: query: -- SORT_BEFORE_DIFF + +create table partition_test_partitioned(key string, value string) partitioned by (dt string) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@partition_test_partitioned From 66c3854d989eca5e9975b80617dd74573e2a3a6b Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 29 Sep 2014 17:42:02 +0000 Subject: [PATCH 022/339] HIVE-8199 : CBO Trunk Merge: quote2 test fails due to incorrect literal translation (Sergey Shelukhin via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628233 13f79535-47bb-0310-9956-ffa450edef68 --- .../optiq/translator/ASTBuilder.java | 6 +- .../hive/ql/parse/BaseSemanticAnalyzer.java | 55 ++++++++++++++++++- ql/src/test/queries/clientpositive/quote2.q | 2 + .../test/results/clientpositive/quote2.q.out | 14 +++-- 4 files changed, 68 insertions(+), 9 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java index 6da456dd672f..98723a37f8ed 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java @@ -25,6 +25,7 @@ import org.apache.hadoop.hive.ql.optimizer.optiq.RelOptHiveTable; import org.apache.hadoop.hive.ql.parse.ASTNode; +import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer; import org.apache.hadoop.hive.ql.parse.HiveParser; import org.apache.hadoop.hive.ql.parse.ParseDriver; import org.eigenbase.rel.JoinRelType; @@ -174,8 +175,9 @@ static ASTNode literal(RexLiteral literal) { case VARCHAR: case CHAR: val = literal.getValue3(); + String escapedVal = BaseSemanticAnalyzer.escapeSQLString(String.valueOf(val)); type = HiveParser.StringLiteral; - val = "'" + String.valueOf(val) + "'"; + val = "'" + escapedVal + "'"; break; case BOOLEAN: val = literal.getValue3(); @@ -231,4 +233,4 @@ ASTBuilder add(ASTNode n) { } return this; } -} \ No newline at end of file +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java index 672f0c48aa29..14a0252bd4d3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java @@ -406,7 +406,6 @@ public static void readProps( @SuppressWarnings("nls") public static String unescapeSQLString(String b) { - Character enclosure = null; // Some of the strings can be passed in as unicode. For example, the @@ -487,7 +486,7 @@ public static String unescapeSQLString(String b) { case '\\': sb.append("\\"); break; - // The following 2 lines are exactly what MySQL does + // The following 2 lines are exactly what MySQL does TODO: why do we do this? case '%': sb.append("\\%"); break; @@ -505,6 +504,58 @@ public static String unescapeSQLString(String b) { return sb.toString(); } + /** + * Escapes the string for AST; doesn't enclose it in quotes, however. + */ + public static String escapeSQLString(String b) { + // There's usually nothing to escape so we will be optimistic. + String result = b; + for (int i = 0; i < result.length(); ++i) { + char currentChar = result.charAt(i); + if (currentChar == '\\' && ((i + 1) < result.length())) { + // TODO: do we need to handle the "this is what MySQL does" here? + char nextChar = result.charAt(i + 1); + if (nextChar == '%' || nextChar == '_') { + ++i; + continue; + } + } + switch (currentChar) { + case '\0': result = spliceString(result, i, "\\0"); ++i; break; + case '\'': result = spliceString(result, i, "\\'"); ++i; break; + case '\"': result = spliceString(result, i, "\\\""); ++i; break; + case '\b': result = spliceString(result, i, "\\b"); ++i; break; + case '\n': result = spliceString(result, i, "\\n"); ++i; break; + case '\r': result = spliceString(result, i, "\\r"); ++i; break; + case '\t': result = spliceString(result, i, "\\t"); ++i; break; + case '\\': result = spliceString(result, i, "\\\\"); ++i; break; + case '\u001A': result = spliceString(result, i, "\\Z"); ++i; break; + default: { + if (currentChar < ' ') { + String hex = Integer.toHexString(currentChar); + String unicode = "\\u"; + for (int j = 4; j > hex.length(); --j) { + unicode += '0'; + } + unicode += hex; + result = spliceString(result, i, unicode); + i += (unicode.length() - 1); + } + break; // if not a control character, do nothing + } + } + } + return result; + } + + private static String spliceString(String str, int i, String replacement) { + return spliceString(str, i, 1, replacement); + } + + private static String spliceString(String str, int i, int length, String replacement) { + return str.substring(0, i) + replacement + str.substring(i + length); + } + public HashSet getInputs() { return inputs; } diff --git a/ql/src/test/queries/clientpositive/quote2.q b/ql/src/test/queries/clientpositive/quote2.q index c93902ab3e39..17cbfcab122a 100644 --- a/ql/src/test/queries/clientpositive/quote2.q +++ b/ql/src/test/queries/clientpositive/quote2.q @@ -10,6 +10,7 @@ SELECT 'abc\\\\\'', "abc\\\\\"", 'abc\\\\\\', "abc\\\\\\", 'abc""""\\', "abc''''\\", + 'mysql_%\\_\%', 'mysql\\\_\\\\\%', "awk '{print NR\"\\t\"$0}'", 'tab\ttab', "tab\ttab" FROM src @@ -24,6 +25,7 @@ SELECT 'abc\\\\\'', "abc\\\\\"", 'abc\\\\\\', "abc\\\\\\", 'abc""""\\', "abc''''\\", + 'mysql_%\\_\%', 'mysql\\\_\\\\\%', "awk '{print NR\"\\t\"$0}'", 'tab\ttab', "tab\ttab" FROM src diff --git a/ql/src/test/results/clientpositive/quote2.q.out b/ql/src/test/results/clientpositive/quote2.q.out index 129e090ffd55..086960ac6e7e 100644 --- a/ql/src/test/results/clientpositive/quote2.q.out +++ b/ql/src/test/results/clientpositive/quote2.q.out @@ -8,6 +8,7 @@ SELECT 'abc\\\\\'', "abc\\\\\"", 'abc\\\\\\', "abc\\\\\\", 'abc""""\\', "abc''''\\", + 'mysql_%\\_\%', 'mysql\\\_\\\\\%', "awk '{print NR\"\\t\"$0}'", 'tab\ttab', "tab\ttab" FROM src @@ -23,6 +24,7 @@ SELECT 'abc\\\\\'', "abc\\\\\"", 'abc\\\\\\', "abc\\\\\\", 'abc""""\\', "abc''''\\", + 'mysql_%\\_\%', 'mysql\\\_\\\\\%', "awk '{print NR\"\\t\"$0}'", 'tab\ttab', "tab\ttab" FROM src @@ -40,12 +42,12 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: 'abc' (type: string), 'abc' (type: string), 'abc'' (type: string), 'abc"' (type: string), 'abc\' (type: string), 'abc\' (type: string), 'abc\'' (type: string), 'abc\"' (type: string), 'abc\\' (type: string), 'abc\\' (type: string), 'abc\\'' (type: string), 'abc\\"' (type: string), 'abc\\\' (type: string), 'abc\\\' (type: string), 'abc""""\' (type: string), 'abc''''\' (type: string), 'awk '{print NR"\t"$0}'' (type: string), 'tab tab' (type: string), 'tab tab' (type: string) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18 - Statistics: Num rows: 500 Data size: 857000 Basic stats: COMPLETE Column stats: COMPLETE + expressions: 'abc' (type: string), 'abc' (type: string), 'abc'' (type: string), 'abc"' (type: string), 'abc\' (type: string), 'abc\' (type: string), 'abc\'' (type: string), 'abc\"' (type: string), 'abc\\' (type: string), 'abc\\' (type: string), 'abc\\'' (type: string), 'abc\\"' (type: string), 'abc\\\' (type: string), 'abc\\\' (type: string), 'abc""""\' (type: string), 'abc''''\' (type: string), 'mysql_%\_\%' (type: string), 'mysql\\_\\\%' (type: string), 'awk '{print NR"\t"$0}'' (type: string), 'tab tab' (type: string), 'tab tab' (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20 + Statistics: Num rows: 500 Data size: 952500 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 1 - Statistics: Num rows: 1 Data size: 1714 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 1905 Basic stats: COMPLETE Column stats: COMPLETE ListSink PREHOOK: query: SELECT @@ -57,6 +59,7 @@ PREHOOK: query: SELECT 'abc\\\\\'', "abc\\\\\"", 'abc\\\\\\', "abc\\\\\\", 'abc""""\\', "abc''''\\", + 'mysql_%\\_\%', 'mysql\\\_\\\\\%', "awk '{print NR\"\\t\"$0}'", 'tab\ttab', "tab\ttab" FROM src @@ -73,6 +76,7 @@ POSTHOOK: query: SELECT 'abc\\\\\'', "abc\\\\\"", 'abc\\\\\\', "abc\\\\\\", 'abc""""\\', "abc''''\\", + 'mysql_%\\_\%', 'mysql\\\_\\\\\%', "awk '{print NR\"\\t\"$0}'", 'tab\ttab', "tab\ttab" FROM src @@ -80,4 +84,4 @@ LIMIT 1 POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -abc abc abc' abc" abc\ abc\ abc\' abc\" abc\\ abc\\ abc\\' abc\\" abc\\\ abc\\\ abc""""\ abc''''\ awk '{print NR"\t"$0}' tab tab tab tab +abc abc abc' abc" abc\ abc\ abc\' abc\" abc\\ abc\\ abc\\' abc\\" abc\\\ abc\\\ abc""""\ abc''''\ mysql_%\_\% mysql\\_\\\% awk '{print NR"\t"$0}' tab tab tab tab From 9273e5ecacf9c7648ade6695101119cc28f38351 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 29 Sep 2014 17:45:49 +0000 Subject: [PATCH 023/339] HIVE-8111 : CBO trunk merge: duplicated casts for arithmetic expressions in Hive and CBO (Sergey Shelukhin via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628234 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/FunctionRegistry.java | 10 +--- .../optiq/translator/RexNodeConverter.java | 37 +++++++++---- .../ql/udf/generic/GenericUDFBaseNumeric.java | 15 +++++ .../test/queries/clientpositive/decimal_udf.q | 3 + .../results/clientpositive/decimal_udf.q.out | 55 +++++++++++++++++++ .../serde2/typeinfo/HiveDecimalUtils.java | 22 ++++++++ 6 files changed, 123 insertions(+), 19 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java index f17b93dbeb45..d047b25e3842 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java @@ -869,15 +869,7 @@ public static TypeInfo getTypeInfoForPrimitiveCategory( TypeInfoUtils.getCharacterLengthForType(b)); return TypeInfoFactory.getVarcharTypeInfo(maxLength); case DECIMAL: - int prec1 = HiveDecimalUtils.getPrecisionForType(a); - int prec2 = HiveDecimalUtils.getPrecisionForType(b); - int scale1 = HiveDecimalUtils.getScaleForType(a); - int scale2 = HiveDecimalUtils.getScaleForType(b); - int intPart = Math.max(prec1 - scale1, prec2 - scale2); - int decPart = Math.max(scale1, scale2); - int prec = Math.min(intPart + decPart, HiveDecimal.MAX_PRECISION); - int scale = Math.min(decPart, HiveDecimal.MAX_PRECISION - intPart); - return TypeInfoFactory.getDecimalTypeInfo(prec, scale); + return HiveDecimalUtils.getDecimalTypeForPrimitiveCategories(a, b); default: // Type doesn't require any qualifiers. return TypeInfoFactory.getPrimitiveTypeInfo( diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java index 56e210dc2aa9..ec85603191ef 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java @@ -146,39 +146,56 @@ private RexNode convert(final ExprNodeFieldDesc fieldDesc) throws SemanticExcept private RexNode convert(final ExprNodeGenericFuncDesc func) throws SemanticException { ExprNodeDesc tmpExprNode; RexNode tmpRN; - TypeInfo tgtDT = null; List childRexNodeLst = new LinkedList(); Builder argTypeBldr = ImmutableList. builder(); - // TODO: 1) Expand to other functions as needed 2) What about types other - // than primitive. - if (func.getGenericUDF() instanceof GenericUDFBaseNumeric) { + // TODO: 1) Expand to other functions as needed 2) What about types other than primitive. + TypeInfo tgtDT = null; + GenericUDF tgtUdf = func.getGenericUDF(); + boolean isNumeric = tgtUdf instanceof GenericUDFBaseNumeric, + isCompare = !isNumeric && tgtUdf instanceof GenericUDFBaseCompare; + if (isNumeric) { tgtDT = func.getTypeInfo(); - } else if (func.getGenericUDF() instanceof GenericUDFBaseCompare) { - if (func.getChildren().size() == 2) { - tgtDT = FunctionRegistry.getCommonClassForComparison(func.getChildren().get(0) + + assert func.getChildren().size() == 2; + // TODO: checking 2 children is useless, compare already does that. + } else if (isCompare && (func.getChildren().size() == 2)) { + tgtDT = FunctionRegistry.getCommonClassForComparison(func.getChildren().get(0) .getTypeInfo(), func.getChildren().get(1).getTypeInfo()); - } } + for (ExprNodeDesc childExpr : func.getChildren()) { tmpExprNode = childExpr; if (tgtDT != null && TypeInfoUtils.isConversionRequiredForComparison(tgtDT, childExpr.getTypeInfo())) { - tmpExprNode = ParseUtils.createConversionCast(childExpr, (PrimitiveTypeInfo) tgtDT); + if (isCompare) { + // For compare, we will convert requisite children + tmpExprNode = ParseUtils.createConversionCast(childExpr, (PrimitiveTypeInfo) tgtDT); + } else if (isNumeric) { + // For numeric, we'll do minimum necessary cast - if we cast to the type + // of expression, bad things will happen. + GenericUDFBaseNumeric numericUdf = (GenericUDFBaseNumeric)tgtUdf; + PrimitiveTypeInfo minArgType = numericUdf.deriveMinArgumentCast(childExpr, tgtDT); + tmpExprNode = ParseUtils.createConversionCast(childExpr, minArgType); + } else { + throw new AssertionError("Unexpected " + tgtDT + " - not a numeric op or compare"); + } + } argTypeBldr.add(TypeConverter.convert(tmpExprNode.getTypeInfo(), m_cluster.getTypeFactory())); tmpRN = convert(tmpExprNode); childRexNodeLst.add(tmpRN); } - // This is an explicit cast + // See if this is an explicit cast. RexNode expr = null; RelDataType retType = null; expr = handleExplicitCast(func, childRexNodeLst); if (expr == null) { + // This is not a cast; process the function. retType = TypeConverter.convert(func.getTypeInfo(), m_cluster.getTypeFactory()); SqlOperator optiqOp = SqlFunctionConverter.getOptiqOperator(func.getFuncText(), func.getGenericUDF(), argTypeBldr.build(), retType); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java index 6131d3dee378..8399f26ef4a0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java @@ -29,6 +29,7 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; @@ -44,6 +45,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils.PrimitiveGrouping; import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.HiveDecimalUtils; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; @@ -318,4 +320,17 @@ public boolean isAnsiSqlArithmetic() { public void setAnsiSqlArithmetic(boolean ansiSqlArithmetic) { this.ansiSqlArithmetic = ansiSqlArithmetic; } + + public PrimitiveTypeInfo deriveMinArgumentCast( + ExprNodeDesc childExpr, TypeInfo targetType) { + assert targetType instanceof PrimitiveTypeInfo : "Not a primitive type" + targetType; + PrimitiveTypeInfo pti = (PrimitiveTypeInfo)targetType; + // We only do the minimum cast for decimals. Other types are assumed safe; fix if needed. + // We also don't do anything for non-primitive children (maybe we should assert). + if ((pti.getPrimitiveCategory() != PrimitiveCategory.DECIMAL) + || (!(childExpr.getTypeInfo() instanceof PrimitiveTypeInfo))) return pti; + PrimitiveTypeInfo childTi = (PrimitiveTypeInfo)childExpr.getTypeInfo(); + // If the child is also decimal, no cast is needed (we hope - can target type be narrower?). + return HiveDecimalUtils.getDecimalTypeForPrimitiveCategory(childTi); + } } diff --git a/ql/src/test/queries/clientpositive/decimal_udf.q b/ql/src/test/queries/clientpositive/decimal_udf.q index 591c2105f146..f9940d9230c0 100644 --- a/ql/src/test/queries/clientpositive/decimal_udf.q +++ b/ql/src/test/queries/clientpositive/decimal_udf.q @@ -39,6 +39,9 @@ SELECT key - '1.0' FROM DECIMAL_UDF; EXPLAIN SELECT key * key FROM DECIMAL_UDF; SELECT key * key FROM DECIMAL_UDF; +EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0; +SELECT key, value FROM DECIMAL_UDF where key * value > 0; + EXPLAIN SELECT key * value FROM DECIMAL_UDF; SELECT key * value FROM DECIMAL_UDF; diff --git a/ql/src/test/results/clientpositive/decimal_udf.q.out b/ql/src/test/results/clientpositive/decimal_udf.q.out index c5c203149d2d..8fda14cd2ded 100644 --- a/ql/src/test/results/clientpositive/decimal_udf.q.out +++ b/ql/src/test/results/clientpositive/decimal_udf.q.out @@ -633,6 +633,61 @@ NULL 1.00000000000000000000 NULL NULL +PREHOOK: query: EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key * value) > 0) (type: boolean) + Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)), value (type: int) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE + ListSink + +PREHOOK: query: SELECT key, value FROM DECIMAL_UDF where key * value > 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key, value FROM DECIMAL_UDF where key * value > 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +100 100 +10 10 +1 1 +200 200 +20 20 +2 2 +1.0 1 +2 2 +3.14 3 +-1.12 -1 +-1.12 -1 +-1.122 -11 +1.12 1 +1.122 1 +124.00 124 +125.2 125 +-1255.49 -1255 +3.14 3 +3.14 3 +3.140 4 +1.0000000000 1 +-1234567890.1234567890 -1234567890 +1234567890.1234567800 1234567890 PREHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/HiveDecimalUtils.java b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/HiveDecimalUtils.java index cc754916ecde..aa9e37adbd4e 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/HiveDecimalUtils.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/HiveDecimalUtils.java @@ -22,6 +22,7 @@ import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory; public class HiveDecimalUtils { @@ -134,4 +135,25 @@ public static int getScaleForType(PrimitiveTypeInfo typeInfo) { } } + public static TypeInfo getDecimalTypeForPrimitiveCategories( + PrimitiveTypeInfo a, PrimitiveTypeInfo b) { + int prec1 = HiveDecimalUtils.getPrecisionForType(a); + int prec2 = HiveDecimalUtils.getPrecisionForType(b); + int scale1 = HiveDecimalUtils.getScaleForType(a); + int scale2 = HiveDecimalUtils.getScaleForType(b); + int intPart = Math.max(prec1 - scale1, prec2 - scale2); + int decPart = Math.max(scale1, scale2); + int prec = Math.min(intPart + decPart, HiveDecimal.MAX_PRECISION); + int scale = Math.min(decPart, HiveDecimal.MAX_PRECISION - intPart); + return TypeInfoFactory.getDecimalTypeInfo(prec, scale); + } + + public static DecimalTypeInfo getDecimalTypeForPrimitiveCategory(PrimitiveTypeInfo a) { + if (a instanceof DecimalTypeInfo) return (DecimalTypeInfo)a; + int prec = HiveDecimalUtils.getPrecisionForType(a); + int scale = HiveDecimalUtils.getScaleForType(a); + prec = Math.min(prec, HiveDecimal.MAX_PRECISION); + scale = Math.min(scale, HiveDecimal.MAX_PRECISION - (prec - scale)); + return TypeInfoFactory.getDecimalTypeInfo(prec, scale); + } } From 2d2126cd047423c6ddc9e5316689a640c67b2581 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Mon, 29 Sep 2014 18:19:53 +0000 Subject: [PATCH 024/339] HIVE-7971: Support alter table change/replace/add columns for existing partitions (Jason Dere, reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628242 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/exec/DDLTask.java | 80 +-- .../hive/ql/parse/DDLSemanticAnalyzer.java | 19 +- .../apache/hadoop/hive/ql/parse/HiveParser.g | 4 +- .../hadoop/hive/ql/plan/AlterTableDesc.java | 7 +- .../alter_partition_change_col_dup_col.q | 4 + .../alter_partition_change_col_nonexist.q | 5 + .../alter_partition_change_col.q | 57 ++ .../alter_partition_change_col_dup_col.q.out | 21 + .../alter_partition_change_col_nonexist.q.out | 21 + .../alter_partition_change_col.q.out | 574 ++++++++++++++++++ 10 files changed, 726 insertions(+), 66 deletions(-) create mode 100644 ql/src/test/queries/clientnegative/alter_partition_change_col_dup_col.q create mode 100644 ql/src/test/queries/clientnegative/alter_partition_change_col_nonexist.q create mode 100644 ql/src/test/queries/clientpositive/alter_partition_change_col.q create mode 100644 ql/src/test/results/clientnegative/alter_partition_change_col_dup_col.q.out create mode 100644 ql/src/test/results/clientnegative/alter_partition_change_col_nonexist.q.out create mode 100644 ql/src/test/results/clientpositive/alter_partition_change_col.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index b5e3ff05e75d..dc00d6643650 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -3275,19 +3275,21 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { } Table oldTbl = tbl.copy(); + List oldCols = (part == null ? tbl.getCols() : part.getCols()); + StorageDescriptor sd = (part == null ? tbl.getTTable().getSd() : part.getTPartition().getSd()); if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.RENAME) { tbl.setDbName(Utilities.getDatabaseName(alterTbl.getNewName())); tbl.setTableName(Utilities.getTableName(alterTbl.getNewName())); } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDCOLS) { List newCols = alterTbl.getNewCols(); - List oldCols = tbl.getCols(); - if (tbl.getSerializationLib().equals( + String serializationLib = sd.getSerdeInfo().getSerializationLib(); + if (serializationLib.equals( "org.apache.hadoop.hive.serde.thrift.columnsetSerDe")) { console .printInfo("Replacing columns for columnsetSerDe and changing to LazySimpleSerDe"); - tbl.setSerializationLib(LazySimpleSerDe.class.getName()); - tbl.getTTable().getSd().setCols(newCols); + sd.getSerdeInfo().setSerializationLib(LazySimpleSerDe.class.getName()); + sd.setCols(newCols); } else { // make sure the columns does not already exist Iterator iterNewCols = newCols.iterator(); @@ -3303,10 +3305,9 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { } oldCols.add(newCol); } - tbl.getTTable().getSd().setCols(oldCols); + sd.setCols(oldCols); } } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.RENAMECOLUMN) { - List oldCols = tbl.getCols(); List newCols = new ArrayList(); Iterator iterOldCols = oldCols.iterator(); String oldName = alterTbl.getOldColName(); @@ -3367,24 +3368,24 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { newCols.add(position, column); } - tbl.getTTable().getSd().setCols(newCols); - + sd.setCols(newCols); } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.REPLACECOLS) { // change SerDe to LazySimpleSerDe if it is columnsetSerDe - if (tbl.getSerializationLib().equals( + String serializationLib = sd.getSerdeInfo().getSerializationLib(); + if (serializationLib.equals( "org.apache.hadoop.hive.serde.thrift.columnsetSerDe")) { console .printInfo("Replacing columns for columnsetSerDe and changing to LazySimpleSerDe"); - tbl.setSerializationLib(LazySimpleSerDe.class.getName()); - } else if (!tbl.getSerializationLib().equals( + sd.getSerdeInfo().setSerializationLib(LazySimpleSerDe.class.getName()); + } else if (!serializationLib.equals( MetadataTypedColumnsetSerDe.class.getName()) - && !tbl.getSerializationLib().equals(LazySimpleSerDe.class.getName()) - && !tbl.getSerializationLib().equals(ColumnarSerDe.class.getName()) - && !tbl.getSerializationLib().equals(DynamicSerDe.class.getName()) - && !tbl.getSerializationLib().equals(ParquetHiveSerDe.class.getName())) { + && !serializationLib.equals(LazySimpleSerDe.class.getName()) + && !serializationLib.equals(ColumnarSerDe.class.getName()) + && !serializationLib.equals(DynamicSerDe.class.getName()) + && !serializationLib.equals(ParquetHiveSerDe.class.getName())) { throw new HiveException(ErrorMsg.CANNOT_REPLACE_COLUMNS, alterTbl.getOldName()); } - tbl.getTTable().getSd().setCols(alterTbl.getNewCols()); + sd.setCols(alterTbl.getNewCols()); } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDPROPS) { tbl.getTTable().getParameters().putAll(alterTbl.getProps()); } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.DROPPROPS) { @@ -3393,47 +3394,26 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { tbl.getTTable().getParameters().remove(keyItr.next()); } } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDSERDEPROPS) { - if (part != null) { - part.getTPartition().getSd().getSerdeInfo().getParameters().putAll( - alterTbl.getProps()); - } else { - tbl.getTTable().getSd().getSerdeInfo().getParameters().putAll( - alterTbl.getProps()); - } + sd.getSerdeInfo().getParameters().putAll(alterTbl.getProps()); } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDSERDE) { String serdeName = alterTbl.getSerdeName(); + sd.getSerdeInfo().setSerializationLib(serdeName); + if ((alterTbl.getProps() != null) && (alterTbl.getProps().size() > 0)) { + sd.getSerdeInfo().getParameters().putAll(alterTbl.getProps()); + } if (part != null) { - part.getTPartition().getSd().getSerdeInfo().setSerializationLib(serdeName); - if ((alterTbl.getProps() != null) && (alterTbl.getProps().size() > 0)) { - part.getTPartition().getSd().getSerdeInfo().getParameters().putAll( - alterTbl.getProps()); - } part.getTPartition().getSd().setCols(part.getTPartition().getSd().getCols()); } else { - tbl.setSerializationLib(alterTbl.getSerdeName()); - if ((alterTbl.getProps() != null) && (alterTbl.getProps().size() > 0)) { - tbl.getTTable().getSd().getSerdeInfo().getParameters().putAll( - alterTbl.getProps()); - } if (!Table.hasMetastoreBasedSchema(conf, serdeName)) { tbl.setFields(Hive.getFieldsFromDeserializer(tbl.getTableName(), tbl. getDeserializer())); } } } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDFILEFORMAT) { - if(part != null) { - part.getTPartition().getSd().setInputFormat(alterTbl.getInputFormat()); - part.getTPartition().getSd().setOutputFormat(alterTbl.getOutputFormat()); - if (alterTbl.getSerdeName() != null) { - part.getTPartition().getSd().getSerdeInfo().setSerializationLib( - alterTbl.getSerdeName()); - } - } else { - tbl.getTTable().getSd().setInputFormat(alterTbl.getInputFormat()); - tbl.getTTable().getSd().setOutputFormat(alterTbl.getOutputFormat()); - if (alterTbl.getSerdeName() != null) { - tbl.setSerializationLib(alterTbl.getSerdeName()); - } + sd.setInputFormat(alterTbl.getInputFormat()); + sd.setOutputFormat(alterTbl.getOutputFormat()); + if (alterTbl.getSerdeName() != null) { + sd.getSerdeInfo().setSerializationLib(alterTbl.getSerdeName()); } } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ALTERPROTECTMODE) { boolean protectModeEnable = alterTbl.isProtectModeEnable(); @@ -3463,8 +3443,6 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { .getColumnNamesFromSortCols(alterTbl.getSortColumns())); } - StorageDescriptor sd = part == null ? tbl.getTTable().getSd() : part.getTPartition().getSd(); - if (alterTbl.isTurnOffSorting()) { sd.setSortCols(new ArrayList()); } else if (alterTbl.getNumberBuckets() == -1) { @@ -3485,11 +3463,7 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { || locUri.getScheme().trim().equals("")) { throw new HiveException(ErrorMsg.BAD_LOCATION_VALUE, newLocation); } - if (part != null) { - part.setLocation(newLocation); - } else { - tbl.setDataLocation(new Path(locUri)); - } + sd.setLocation(newLocation); } catch (URISyntaxException e) { throw new HiveException(e); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index eb20be33bec8..4eba95015fdf 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -267,11 +267,11 @@ public void analyzeInternal(ASTNode input) throws SemanticException { } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_UNARCHIVE) { analyzeAlterTableArchive(qualified, ast, true); } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_ADDCOLS) { - analyzeAlterTableModifyCols(qualified, ast, AlterTableTypes.ADDCOLS); + analyzeAlterTableModifyCols(qualified, ast, partSpec, AlterTableTypes.ADDCOLS); } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_REPLACECOLS) { - analyzeAlterTableModifyCols(qualified, ast, AlterTableTypes.REPLACECOLS); + analyzeAlterTableModifyCols(qualified, ast, partSpec, AlterTableTypes.REPLACECOLS); } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_RENAMECOL) { - analyzeAlterTableRenameCol(qualified, ast); + analyzeAlterTableRenameCol(qualified, ast, partSpec); } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_ADDPARTS) { analyzeAlterTableAddParts(qualified, ast, false); } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_DROPPARTS) { @@ -2481,7 +2481,8 @@ private void analyzeAlterTableRename(String[] source, ASTNode ast, boolean expec alterTblDesc), conf)); } - private void analyzeAlterTableRenameCol(String[] qualified, ASTNode ast) throws SemanticException { + private void analyzeAlterTableRenameCol(String[] qualified, ASTNode ast, + HashMap partSpec) throws SemanticException { String newComment = null; String newType = null; newType = getTypeStringFromAST((ASTNode) ast.getChild(2)); @@ -2522,10 +2523,10 @@ private void analyzeAlterTableRenameCol(String[] qualified, ASTNode ast) throws } String tblName = getDotName(qualified); - AlterTableDesc alterTblDesc = new AlterTableDesc(tblName, + AlterTableDesc alterTblDesc = new AlterTableDesc(tblName, partSpec, unescapeIdentifier(oldColName), unescapeIdentifier(newColName), newType, newComment, first, flagCol); - addInputsOutputsAlterTable(tblName, null, alterTblDesc); + addInputsOutputsAlterTable(tblName, partSpec, alterTblDesc); rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc), conf)); @@ -2569,14 +2570,14 @@ private void analyzeAlterTableBucketNum(ASTNode ast, String tblName, } private void analyzeAlterTableModifyCols(String[] qualified, ASTNode ast, - AlterTableTypes alterType) throws SemanticException { + HashMap partSpec, AlterTableTypes alterType) throws SemanticException { String tblName = getDotName(qualified); List newCols = getColumns((ASTNode) ast.getChild(0)); - AlterTableDesc alterTblDesc = new AlterTableDesc(tblName, newCols, + AlterTableDesc alterTblDesc = new AlterTableDesc(tblName, partSpec, newCols, alterType); - addInputsOutputsAlterTable(tblName, null, alterTblDesc); + addInputsOutputsAlterTable(tblName, partSpec, alterTblDesc); rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc), conf)); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g index 37832bea3ff6..ef6d6f70234c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -946,8 +946,6 @@ alterTableStatementSuffix @init { pushMsg("alter table statement", state); } @after { popMsg(state); } : alterStatementSuffixRename[true] - | alterStatementSuffixAddCol - | alterStatementSuffixRenameCol | alterStatementSuffixUpdateStatsCol | alterStatementSuffixDropPartitions[true] | alterStatementSuffixAddPartitions[true] @@ -975,6 +973,8 @@ alterTblPartitionStatementSuffix | alterStatementSuffixClusterbySortby | alterStatementSuffixCompact | alterStatementSuffixUpdateStatsCol + | alterStatementSuffixRenameCol + | alterStatementSuffixAddCol ; alterStatementPartitionKeyType diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java index 851731935010..298bbca7379f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java @@ -110,10 +110,12 @@ public AlterTableDesc() { * @param newComment * @param newType */ - public AlterTableDesc(String tblName, String oldColName, String newColName, + public AlterTableDesc(String tblName, HashMap partSpec, + String oldColName, String newColName, String newType, String newComment, boolean first, String afterCol) { super(); oldName = tblName; + this.partSpec = partSpec; this.oldColName = oldColName; this.newColName = newColName; newColType = newType; @@ -142,11 +144,12 @@ public AlterTableDesc(String oldName, String newName, boolean expectView) { * @param newCols * new columns to be added */ - public AlterTableDesc(String name, List newCols, + public AlterTableDesc(String name, HashMap partSpec, List newCols, AlterTableTypes alterType) { op = alterType; oldName = name; this.newCols = new ArrayList(newCols); + this.partSpec = partSpec; } /** diff --git a/ql/src/test/queries/clientnegative/alter_partition_change_col_dup_col.q b/ql/src/test/queries/clientnegative/alter_partition_change_col_dup_col.q new file mode 100644 index 000000000000..8f5a8840c47c --- /dev/null +++ b/ql/src/test/queries/clientnegative/alter_partition_change_col_dup_col.q @@ -0,0 +1,4 @@ +create table alter_partition_change_col_dup_col (c1 string, c2 decimal(10,0)) partitioned by (p1 string); +alter table alter_partition_change_col_dup_col add partition (p1='abc'); +-- should fail because of duplicate name c1 +alter table alter_partition_change_col_dup_col change c2 c1 decimal(14,4); diff --git a/ql/src/test/queries/clientnegative/alter_partition_change_col_nonexist.q b/ql/src/test/queries/clientnegative/alter_partition_change_col_nonexist.q new file mode 100644 index 000000000000..97348d9cd66a --- /dev/null +++ b/ql/src/test/queries/clientnegative/alter_partition_change_col_nonexist.q @@ -0,0 +1,5 @@ +create table alter_partition_change_col_nonexist (c1 string, c2 decimal(10,0)) partitioned by (p1 string); +alter table alter_partition_change_col_nonexist add partition (p1='abc'); +-- should fail because of nonexistent column c3 +alter table alter_partition_change_col_nonexist change c3 c4 decimal(14,4); + diff --git a/ql/src/test/queries/clientpositive/alter_partition_change_col.q b/ql/src/test/queries/clientpositive/alter_partition_change_col.q new file mode 100644 index 000000000000..64aafd104cc7 --- /dev/null +++ b/ql/src/test/queries/clientpositive/alter_partition_change_col.q @@ -0,0 +1,57 @@ +SET hive.exec.dynamic.partition = true; +SET hive.exec.dynamic.partition.mode = nonstrict; + +create table alter_partition_change_col0 (c1 string, c2 string); +load data local inpath '../../data/files/dec.txt' overwrite into table alter_partition_change_col0; + +create table alter_partition_change_col1 (c1 string, c2 string) partitioned by (p1 string); + +insert overwrite table alter_partition_change_col1 partition (p1) + select c1, c2, 'abc' from alter_partition_change_col0 + union all + select c1, c2, null from alter_partition_change_col0; + +show partitions alter_partition_change_col1; +select * from alter_partition_change_col1; + +-- Change c2 to decimal(10,0) +alter table alter_partition_change_col1 change c2 c2 decimal(10,0); +alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(10,0); +alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(10,0); +select * from alter_partition_change_col1; + +-- Change the column type at the table level. Table-level describe shows the new type, but the existing partition does not. +alter table alter_partition_change_col1 change c2 c2 decimal(14,4); +describe alter_partition_change_col1; +describe alter_partition_change_col1 partition (p1='abc'); +select * from alter_partition_change_col1; + +-- now change the column type of the existing partition +alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(14,4); +describe alter_partition_change_col1 partition (p1='abc'); +select * from alter_partition_change_col1; + +-- change column for default partition value +alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(14,4); +describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__'); +select * from alter_partition_change_col1; + +-- Try out replace columns +alter table alter_partition_change_col1 partition (p1='abc') replace columns (c1 string); +describe alter_partition_change_col1; +describe alter_partition_change_col1 partition (p1='abc'); +select * from alter_partition_change_col1; +alter table alter_partition_change_col1 replace columns (c1 string); +describe alter_partition_change_col1; +select * from alter_partition_change_col1; + +-- Try add columns +alter table alter_partition_change_col1 add columns (c2 decimal(14,4)); +describe alter_partition_change_col1; +describe alter_partition_change_col1 partition (p1='abc'); +select * from alter_partition_change_col1; + +alter table alter_partition_change_col1 partition (p1='abc') add columns (c2 decimal(14,4)); +describe alter_partition_change_col1 partition (p1='abc'); +select * from alter_partition_change_col1; + diff --git a/ql/src/test/results/clientnegative/alter_partition_change_col_dup_col.q.out b/ql/src/test/results/clientnegative/alter_partition_change_col_dup_col.q.out new file mode 100644 index 000000000000..d2c252fdbe76 --- /dev/null +++ b/ql/src/test/results/clientnegative/alter_partition_change_col_dup_col.q.out @@ -0,0 +1,21 @@ +PREHOOK: query: create table alter_partition_change_col_dup_col (c1 string, c2 decimal(10,0)) partitioned by (p1 string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alter_partition_change_col_dup_col +POSTHOOK: query: create table alter_partition_change_col_dup_col (c1 string, c2 decimal(10,0)) partitioned by (p1 string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alter_partition_change_col_dup_col +PREHOOK: query: alter table alter_partition_change_col_dup_col add partition (p1='abc') +PREHOOK: type: ALTERTABLE_ADDPARTS +PREHOOK: Output: default@alter_partition_change_col_dup_col +POSTHOOK: query: alter table alter_partition_change_col_dup_col add partition (p1='abc') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Output: default@alter_partition_change_col_dup_col +POSTHOOK: Output: default@alter_partition_change_col_dup_col@p1=abc +PREHOOK: query: -- should fail because of duplicate name c1 +alter table alter_partition_change_col_dup_col change c2 c1 decimal(14,4) +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter_partition_change_col_dup_col +PREHOOK: Output: default@alter_partition_change_col_dup_col +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Duplicate column name: c1 diff --git a/ql/src/test/results/clientnegative/alter_partition_change_col_nonexist.q.out b/ql/src/test/results/clientnegative/alter_partition_change_col_nonexist.q.out new file mode 100644 index 000000000000..8e4422eda809 --- /dev/null +++ b/ql/src/test/results/clientnegative/alter_partition_change_col_nonexist.q.out @@ -0,0 +1,21 @@ +PREHOOK: query: create table alter_partition_change_col_nonexist (c1 string, c2 decimal(10,0)) partitioned by (p1 string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alter_partition_change_col_nonexist +POSTHOOK: query: create table alter_partition_change_col_nonexist (c1 string, c2 decimal(10,0)) partitioned by (p1 string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alter_partition_change_col_nonexist +PREHOOK: query: alter table alter_partition_change_col_nonexist add partition (p1='abc') +PREHOOK: type: ALTERTABLE_ADDPARTS +PREHOOK: Output: default@alter_partition_change_col_nonexist +POSTHOOK: query: alter table alter_partition_change_col_nonexist add partition (p1='abc') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Output: default@alter_partition_change_col_nonexist +POSTHOOK: Output: default@alter_partition_change_col_nonexist@p1=abc +PREHOOK: query: -- should fail because of nonexistent column c3 +alter table alter_partition_change_col_nonexist change c3 c4 decimal(14,4) +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter_partition_change_col_nonexist +PREHOOK: Output: default@alter_partition_change_col_nonexist +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Invalid column reference c3 diff --git a/ql/src/test/results/clientpositive/alter_partition_change_col.q.out b/ql/src/test/results/clientpositive/alter_partition_change_col.q.out new file mode 100644 index 000000000000..e48464c5b424 --- /dev/null +++ b/ql/src/test/results/clientpositive/alter_partition_change_col.q.out @@ -0,0 +1,574 @@ +PREHOOK: query: create table alter_partition_change_col0 (c1 string, c2 string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alter_partition_change_col0 +POSTHOOK: query: create table alter_partition_change_col0 (c1 string, c2 string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alter_partition_change_col0 +PREHOOK: query: load data local inpath '../../data/files/dec.txt' overwrite into table alter_partition_change_col0 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@alter_partition_change_col0 +POSTHOOK: query: load data local inpath '../../data/files/dec.txt' overwrite into table alter_partition_change_col0 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@alter_partition_change_col0 +PREHOOK: query: create table alter_partition_change_col1 (c1 string, c2 string) partitioned by (p1 string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alter_partition_change_col1 +POSTHOOK: query: create table alter_partition_change_col1 (c1 string, c2 string) partitioned by (p1 string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alter_partition_change_col1 +PREHOOK: query: insert overwrite table alter_partition_change_col1 partition (p1) + select c1, c2, 'abc' from alter_partition_change_col0 + union all + select c1, c2, null from alter_partition_change_col0 +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col0 +PREHOOK: Output: default@alter_partition_change_col1 +POSTHOOK: query: insert overwrite table alter_partition_change_col1 partition (p1) + select c1, c2, 'abc' from alter_partition_change_col0 + union all + select c1, c2, null from alter_partition_change_col0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col0 +POSTHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc +POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=__HIVE_DEFAULT_PARTITION__).c1 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), ] +POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=__HIVE_DEFAULT_PARTITION__).c2 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), ] +POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=abc).c1 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), ] +POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=abc).c2 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), ] +PREHOOK: query: show partitions alter_partition_change_col1 +PREHOOK: type: SHOWPARTITIONS +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: show partitions alter_partition_change_col1 +POSTHOOK: type: SHOWPARTITIONS +POSTHOOK: Input: default@alter_partition_change_col1 +p1=__HIVE_DEFAULT_PARTITION__ +p1=abc +PREHOOK: query: select * from alter_partition_change_col1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +Tom 234.79 __HIVE_DEFAULT_PARTITION__ +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 __HIVE_DEFAULT_PARTITION__ +Mary 4.329 __HIVE_DEFAULT_PARTITION__ +Beck 0.0 __HIVE_DEFAULT_PARTITION__ +Snow 55.71 __HIVE_DEFAULT_PARTITION__ +Mary 33.33 __HIVE_DEFAULT_PARTITION__ +Beck 77.341 __HIVE_DEFAULT_PARTITION__ +Beck 79.9 __HIVE_DEFAULT_PARTITION__ +Tom -12.25 __HIVE_DEFAULT_PARTITION__ +Beck 79.9 abc +Beck 0.0 abc +Tom 19.00 abc +Mary 33.33 abc +Tom -12.25 abc +Mary 4.329 abc +Snow 55.71 abc +Beck 77.341 abc +Tom 234.79 abc +Cluck 5.96 abc +PREHOOK: query: -- Change c2 to decimal(10,0) +alter table alter_partition_change_col1 change c2 c2 decimal(10,0) +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1 +POSTHOOK: query: -- Change c2 to decimal(10,0) +alter table alter_partition_change_col1 change c2 c2 decimal(10,0) +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Output: default@alter_partition_change_col1 +PREHOOK: query: alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(10,0) +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1@p1=abc +POSTHOOK: query: alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(10,0) +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc +PREHOOK: query: alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(10,0) +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: query: alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(10,0) +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: query: select * from alter_partition_change_col1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +Tom 235 __HIVE_DEFAULT_PARTITION__ +Cluck 6 __HIVE_DEFAULT_PARTITION__ +Tom 19 __HIVE_DEFAULT_PARTITION__ +Mary 4 __HIVE_DEFAULT_PARTITION__ +Beck 0 __HIVE_DEFAULT_PARTITION__ +Snow 56 __HIVE_DEFAULT_PARTITION__ +Mary 33 __HIVE_DEFAULT_PARTITION__ +Beck 77 __HIVE_DEFAULT_PARTITION__ +Beck 80 __HIVE_DEFAULT_PARTITION__ +Tom -12 __HIVE_DEFAULT_PARTITION__ +Beck 80 abc +Beck 0 abc +Tom 19 abc +Mary 33 abc +Tom -12 abc +Mary 4 abc +Snow 56 abc +Beck 77 abc +Tom 235 abc +Cluck 6 abc +PREHOOK: query: -- Change the column type at the table level. Table-level describe shows the new type, but the existing partition does not. +alter table alter_partition_change_col1 change c2 c2 decimal(14,4) +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1 +POSTHOOK: query: -- Change the column type at the table level. Table-level describe shows the new type, but the existing partition does not. +alter table alter_partition_change_col1 change c2 c2 decimal(14,4) +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Output: default@alter_partition_change_col1 +PREHOOK: query: describe alter_partition_change_col1 +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +c2 decimal(14,4) +p1 string + +# Partition Information +# col_name data_type comment + +p1 string +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +c2 decimal(10,0) +p1 string + +# Partition Information +# col_name data_type comment + +p1 string +PREHOOK: query: select * from alter_partition_change_col1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +Tom 235 __HIVE_DEFAULT_PARTITION__ +Cluck 6 __HIVE_DEFAULT_PARTITION__ +Tom 19 __HIVE_DEFAULT_PARTITION__ +Mary 4 __HIVE_DEFAULT_PARTITION__ +Beck 0 __HIVE_DEFAULT_PARTITION__ +Snow 56 __HIVE_DEFAULT_PARTITION__ +Mary 33 __HIVE_DEFAULT_PARTITION__ +Beck 77 __HIVE_DEFAULT_PARTITION__ +Beck 80 __HIVE_DEFAULT_PARTITION__ +Tom -12 __HIVE_DEFAULT_PARTITION__ +Beck 80 abc +Beck 0 abc +Tom 19 abc +Mary 33 abc +Tom -12 abc +Mary 4 abc +Snow 56 abc +Beck 77 abc +Tom 235 abc +Cluck 6 abc +PREHOOK: query: -- now change the column type of the existing partition +alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(14,4) +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1@p1=abc +POSTHOOK: query: -- now change the column type of the existing partition +alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(14,4) +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +c2 decimal(14,4) +p1 string + +# Partition Information +# col_name data_type comment + +p1 string +PREHOOK: query: select * from alter_partition_change_col1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +Tom 235 __HIVE_DEFAULT_PARTITION__ +Cluck 6 __HIVE_DEFAULT_PARTITION__ +Tom 19 __HIVE_DEFAULT_PARTITION__ +Mary 4 __HIVE_DEFAULT_PARTITION__ +Beck 0 __HIVE_DEFAULT_PARTITION__ +Snow 56 __HIVE_DEFAULT_PARTITION__ +Mary 33 __HIVE_DEFAULT_PARTITION__ +Beck 77 __HIVE_DEFAULT_PARTITION__ +Beck 80 __HIVE_DEFAULT_PARTITION__ +Tom -12 __HIVE_DEFAULT_PARTITION__ +Beck 79.9 abc +Beck 0.0 abc +Tom 19.00 abc +Mary 33.33 abc +Tom -12.25 abc +Mary 4.329 abc +Snow 55.71 abc +Beck 77.341 abc +Tom 234.79 abc +Cluck 5.96 abc +PREHOOK: query: -- change column for default partition value +alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(14,4) +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: query: -- change column for default partition value +alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(14,4) +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: query: describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +c2 decimal(14,4) +p1 string + +# Partition Information +# col_name data_type comment + +p1 string +PREHOOK: query: select * from alter_partition_change_col1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +Tom 234.79 __HIVE_DEFAULT_PARTITION__ +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 __HIVE_DEFAULT_PARTITION__ +Mary 4.329 __HIVE_DEFAULT_PARTITION__ +Beck 0.0 __HIVE_DEFAULT_PARTITION__ +Snow 55.71 __HIVE_DEFAULT_PARTITION__ +Mary 33.33 __HIVE_DEFAULT_PARTITION__ +Beck 77.341 __HIVE_DEFAULT_PARTITION__ +Beck 79.9 __HIVE_DEFAULT_PARTITION__ +Tom -12.25 __HIVE_DEFAULT_PARTITION__ +Beck 79.9 abc +Beck 0.0 abc +Tom 19.00 abc +Mary 33.33 abc +Tom -12.25 abc +Mary 4.329 abc +Snow 55.71 abc +Beck 77.341 abc +Tom 234.79 abc +Cluck 5.96 abc +PREHOOK: query: -- Try out replace columns +alter table alter_partition_change_col1 partition (p1='abc') replace columns (c1 string) +PREHOOK: type: ALTERTABLE_REPLACECOLS +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1@p1=abc +POSTHOOK: query: -- Try out replace columns +alter table alter_partition_change_col1 partition (p1='abc') replace columns (c1 string) +POSTHOOK: type: ALTERTABLE_REPLACECOLS +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc +PREHOOK: query: describe alter_partition_change_col1 +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +c2 decimal(14,4) +p1 string + +# Partition Information +# col_name data_type comment + +p1 string +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +p1 string + +# Partition Information +# col_name data_type comment + +p1 string +PREHOOK: query: select * from alter_partition_change_col1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +Tom 234.79 __HIVE_DEFAULT_PARTITION__ +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 __HIVE_DEFAULT_PARTITION__ +Mary 4.329 __HIVE_DEFAULT_PARTITION__ +Beck 0.0 __HIVE_DEFAULT_PARTITION__ +Snow 55.71 __HIVE_DEFAULT_PARTITION__ +Mary 33.33 __HIVE_DEFAULT_PARTITION__ +Beck 77.341 __HIVE_DEFAULT_PARTITION__ +Beck 79.9 __HIVE_DEFAULT_PARTITION__ +Tom -12.25 __HIVE_DEFAULT_PARTITION__ +Beck NULL abc +Beck NULL abc +Tom NULL abc +Mary NULL abc +Tom NULL abc +Mary NULL abc +Snow NULL abc +Beck NULL abc +Tom NULL abc +Cluck NULL abc +PREHOOK: query: alter table alter_partition_change_col1 replace columns (c1 string) +PREHOOK: type: ALTERTABLE_REPLACECOLS +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1 +POSTHOOK: query: alter table alter_partition_change_col1 replace columns (c1 string) +POSTHOOK: type: ALTERTABLE_REPLACECOLS +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Output: default@alter_partition_change_col1 +PREHOOK: query: describe alter_partition_change_col1 +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +p1 string + +# Partition Information +# col_name data_type comment + +p1 string +PREHOOK: query: select * from alter_partition_change_col1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +Tom __HIVE_DEFAULT_PARTITION__ +Cluck __HIVE_DEFAULT_PARTITION__ +Tom __HIVE_DEFAULT_PARTITION__ +Mary __HIVE_DEFAULT_PARTITION__ +Beck __HIVE_DEFAULT_PARTITION__ +Snow __HIVE_DEFAULT_PARTITION__ +Mary __HIVE_DEFAULT_PARTITION__ +Beck __HIVE_DEFAULT_PARTITION__ +Beck __HIVE_DEFAULT_PARTITION__ +Tom __HIVE_DEFAULT_PARTITION__ +Beck abc +Beck abc +Tom abc +Mary abc +Tom abc +Mary abc +Snow abc +Beck abc +Tom abc +Cluck abc +PREHOOK: query: -- Try add columns +alter table alter_partition_change_col1 add columns (c2 decimal(14,4)) +PREHOOK: type: ALTERTABLE_ADDCOLS +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1 +POSTHOOK: query: -- Try add columns +alter table alter_partition_change_col1 add columns (c2 decimal(14,4)) +POSTHOOK: type: ALTERTABLE_ADDCOLS +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Output: default@alter_partition_change_col1 +PREHOOK: query: describe alter_partition_change_col1 +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +c2 decimal(14,4) +p1 string + +# Partition Information +# col_name data_type comment + +p1 string +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +p1 string + +# Partition Information +# col_name data_type comment + +p1 string +PREHOOK: query: select * from alter_partition_change_col1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +Tom 234.79 __HIVE_DEFAULT_PARTITION__ +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 __HIVE_DEFAULT_PARTITION__ +Mary 4.329 __HIVE_DEFAULT_PARTITION__ +Beck 0.0 __HIVE_DEFAULT_PARTITION__ +Snow 55.71 __HIVE_DEFAULT_PARTITION__ +Mary 33.33 __HIVE_DEFAULT_PARTITION__ +Beck 77.341 __HIVE_DEFAULT_PARTITION__ +Beck 79.9 __HIVE_DEFAULT_PARTITION__ +Tom -12.25 __HIVE_DEFAULT_PARTITION__ +Beck NULL abc +Beck NULL abc +Tom NULL abc +Mary NULL abc +Tom NULL abc +Mary NULL abc +Snow NULL abc +Beck NULL abc +Tom NULL abc +Cluck NULL abc +PREHOOK: query: alter table alter_partition_change_col1 partition (p1='abc') add columns (c2 decimal(14,4)) +PREHOOK: type: ALTERTABLE_ADDCOLS +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1@p1=abc +POSTHOOK: query: alter table alter_partition_change_col1 partition (p1='abc') add columns (c2 decimal(14,4)) +POSTHOOK: type: ALTERTABLE_ADDCOLS +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +c2 decimal(14,4) +p1 string + +# Partition Information +# col_name data_type comment + +p1 string +PREHOOK: query: select * from alter_partition_change_col1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc +#### A masked pattern was here #### +Tom 234.79 __HIVE_DEFAULT_PARTITION__ +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 __HIVE_DEFAULT_PARTITION__ +Mary 4.329 __HIVE_DEFAULT_PARTITION__ +Beck 0.0 __HIVE_DEFAULT_PARTITION__ +Snow 55.71 __HIVE_DEFAULT_PARTITION__ +Mary 33.33 __HIVE_DEFAULT_PARTITION__ +Beck 77.341 __HIVE_DEFAULT_PARTITION__ +Beck 79.9 __HIVE_DEFAULT_PARTITION__ +Tom -12.25 __HIVE_DEFAULT_PARTITION__ +Beck 79.9 abc +Beck 0.0 abc +Tom 19.00 abc +Mary 33.33 abc +Tom -12.25 abc +Mary 4.329 abc +Snow 55.71 abc +Beck 77.341 abc +Tom 234.79 abc +Cluck 5.96 abc From b3ddd3e653aa0bddd9b40fc8ac49e4763bad71c5 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Mon, 29 Sep 2014 18:38:46 +0000 Subject: [PATCH 025/339] HIVE-8226: Vectorize dynamic partitioning in VectorFileSinkOperator (Matt McCline reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628251 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/vector/VectorExtractOperator.java | 53 ++++---- .../exec/vector/VectorFileSinkOperator.java | 120 +----------------- .../ql/optimizer/physical/Vectorizer.java | 5 - .../tez/dynpart_sort_opt_vectorization.q.out | 15 +++ 4 files changed, 43 insertions(+), 150 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractOperator.java index b573e3e5e4c5..1ddcbc6ca621 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractOperator.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hive.ql.exec.vector; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.apache.hadoop.conf.Configuration; @@ -45,7 +46,8 @@ public class VectorExtractOperator extends ExtractOperator { private int keyColCount; private int valueColCount; - private transient int [] projectedColumns = null; + private transient VectorizedRowBatch outputBatch; + private transient int remainingColCount; public VectorExtractOperator(VectorizationContext vContext, OperatorDesc conf) throws HiveException { @@ -57,26 +59,25 @@ public VectorExtractOperator() { super(); } - private StructObjectInspector makeStandardStructObjectInspector(StructObjectInspector structObjectInspector) { - List fields = structObjectInspector.getAllStructFieldRefs(); + @Override + protected void initializeOp(Configuration hconf) throws HiveException { + StructObjectInspector structInputObjInspector = (StructObjectInspector) inputObjInspectors[0]; + List fields = structInputObjInspector.getAllStructFieldRefs(); ArrayList ois = new ArrayList(); ArrayList colNames = new ArrayList(); - for (StructField field: fields) { - colNames.add(field.getFieldName()); + for (int i = keyColCount; i < fields.size(); i++) { + StructField field = fields.get(i); + String fieldName = field.getFieldName(); + + // Remove "VALUE." prefix. + int dotIndex = fieldName.indexOf("."); + colNames.add(fieldName.substring(dotIndex + 1)); ois.add(field.getFieldObjectInspector()); } - return ObjectInspectorFactory + outputObjInspector = ObjectInspectorFactory .getStandardStructObjectInspector(colNames, ois); - } - - @Override - protected void initializeOp(Configuration hconf) throws HiveException { - outputObjInspector = inputObjInspectors[0]; - LOG.info("VectorExtractOperator class of outputObjInspector is " + outputObjInspector.getClass().getName()); - projectedColumns = new int [valueColCount]; - for (int i = 0; i < valueColCount; i++) { - projectedColumns[i] = keyColCount + i; - } + remainingColCount = fields.size() - keyColCount; + outputBatch = new VectorizedRowBatch(remainingColCount); initializeChildren(hconf); } @@ -86,20 +87,16 @@ public void setKeyAndValueColCounts(int keyColCount, int valueColCount) { } @Override - // Evaluate vectorized batches of rows and forward them. + // Remove the key columns and forward the values (and scratch columns). public void processOp(Object row, int tag) throws HiveException { - VectorizedRowBatch vrg = (VectorizedRowBatch) row; + VectorizedRowBatch inputBatch = (VectorizedRowBatch) row; - // Project away the key columns... - int[] originalProjections = vrg.projectedColumns; - int originalProjectionSize = vrg.projectionSize; - vrg.projectionSize = valueColCount; - vrg.projectedColumns = this.projectedColumns; - - forward(vrg, outputObjInspector); + // Copy references to the input columns array starting after the keys... + for (int i = 0; i < remainingColCount; i++) { + outputBatch.cols[i] = inputBatch.cols[keyColCount + i]; + } + outputBatch.size = inputBatch.size; - // Revert the projected columns back, because vrg will be re-used. - vrg.projectionSize = originalProjectionSize; - vrg.projectedColumns = originalProjections; + forward(outputBatch, outputObjInspector); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java index e546dd10cc37..ea32f33a8d36 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java @@ -18,8 +18,6 @@ package org.apache.hadoop.hive.ql.exec.vector; -import java.io.IOException; - import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.ql.exec.FileSinkOperator; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriter; @@ -27,16 +25,7 @@ import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.plan.FileSinkDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; -import org.apache.hadoop.hive.common.StatsSetupConst; -import org.apache.hadoop.hive.serde2.SerDeException; -import org.apache.hadoop.hive.serde2.SerDeStats; -import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; -import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; -import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils.ObjectInspectorCopyOption; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; -import org.apache.hadoop.io.ObjectWritable; -import org.apache.hadoop.io.Text; -import org.apache.hadoop.io.Writable; /** * File Sink operator implementation. @@ -69,113 +58,10 @@ protected void initializeOp(Configuration hconf) throws HiveException { @Override public void processOp(Object data, int tag) throws HiveException { - VectorizedRowBatch vrg = (VectorizedRowBatch)data; - - Writable [] records = null; - boolean vectorizedSerde = false; - try { - if (serializer instanceof VectorizedSerde) { - recordValue = ((VectorizedSerde) serializer).serializeVector(vrg, - inputObjInspectors[0]); - records = (Writable[]) ((ObjectWritable) recordValue).get(); - vectorizedSerde = true; - } - } catch (SerDeException e1) { - throw new HiveException(e1); - } - for (int i = 0; i < vrg.size; i++) { - Writable row = null; - if (vectorizedSerde) { - row = records[i]; - } else { - if (vrg.valueWriters == null) { - vrg.setValueWriters(this.valueWriters); - } - try { - row = serializer.serialize(getRowObject(vrg, i), inputObjInspectors[0]); - } catch (SerDeException ex) { - throw new HiveException(ex); - } - } - /* Create list bucketing sub-directory only if stored-as-directories is on. */ - String lbDirName = null; - lbDirName = (lbCtx == null) ? null : generateListBucketingDirName(row); - - FSPaths fpaths; - - if (!bDynParts && !filesCreated) { - if (lbDirName != null) { - FSPaths fsp2 = lookupListBucketingPaths(lbDirName); - } else { - createBucketFiles(fsp); - } - } - - try { - updateProgress(); - - // if DP is enabled, get the final output writers and prepare the real output row - assert inputObjInspectors[0].getCategory() == ObjectInspector.Category.STRUCT : "input object inspector is not struct"; - - if (bDynParts) { - // copy the DP column values from the input row to dpVals - dpVals.clear(); - dpWritables.clear(); - ObjectInspectorUtils.partialCopyToStandardObject(dpWritables, row, dpStartCol, numDynParts, - (StructObjectInspector) inputObjInspectors[0], ObjectInspectorCopyOption.WRITABLE); - // get a set of RecordWriter based on the DP column values - // pass the null value along to the escaping process to determine what the dir should be - for (Object o : dpWritables) { - if (o == null || o.toString().length() == 0) { - dpVals.add(dpCtx.getDefaultPartitionName()); - } else { - dpVals.add(o.toString()); - } - } - fpaths = getDynOutPaths(dpVals, lbDirName); - - } else { - if (lbDirName != null) { - fpaths = lookupListBucketingPaths(lbDirName); - } else { - fpaths = fsp; - } - } - - rowOutWriters = fpaths.getOutWriters(); - // check if all record writers implement statistics. if atleast one RW - // doesn't implement stats interface we will fallback to conventional way - // of gathering stats - isCollectRWStats = areAllTrue(statsFromRecordWriter); - if (conf.isGatherStats() && !isCollectRWStats) { - if (statsCollectRawDataSize) { - SerDeStats stats = serializer.getSerDeStats(); - if (stats != null) { - fpaths.getStat().addToStat(StatsSetupConst.RAW_DATA_SIZE, stats.getRawDataSize()); - } - } - fpaths.getStat().addToStat(StatsSetupConst.ROW_COUNT, 1); - } - - - if (row_count != null) { - row_count.set(row_count.get() + 1); - } - - if (!multiFileSpray) { - rowOutWriters[0].write(row); - } else { - int keyHashCode = 0; - key.setHashCode(keyHashCode); - int bucketNum = prtner.getBucket(key, null, totalFiles); - int idx = bucketMap.get(bucketNum); - rowOutWriters[idx].write(row); - } - } catch (IOException e) { - throw new HiveException(e); - } + Object[] row = getRowObject(vrg, i); + super.processOp(row, tag); } } @@ -187,7 +73,7 @@ private Object[] getRowObject(VectorizedRowBatch vrg, int rowIndex) } for (int i = 0; i < vrg.projectionSize; i++) { ColumnVector vectorColumn = vrg.cols[vrg.projectedColumns[i]]; - singleRow[i] = vrg.valueWriters[i].writeValue(vectorColumn, batchIndex); + singleRow[i] = valueWriters[i].writeValue(vectorColumn, batchIndex); } return singleRow; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java index c832eec661bf..9cbec1f9191b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java @@ -1062,11 +1062,6 @@ private boolean validateExtractOperator(ExtractOperator op) { } private boolean validateFileSinkOperator(FileSinkOperator op) { - // HIVE-7557: For now, turn off dynamic partitioning to give more time to - // figure out how to make VectorFileSink work correctly with it... - if (op.getConf().getDynPartCtx() != null) { - return false; - } return true; } diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out index b43f0c97c766..bbe0250511e5 100644 --- a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out @@ -214,6 +214,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.over1k_part_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -300,6 +301,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.over1k_part_limit_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -368,6 +370,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.over1k_part_buck_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -435,6 +438,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.over1k_part_buck_sort_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -585,6 +589,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.over1k_part_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -671,6 +676,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.over1k_part_limit_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -739,6 +745,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.over1k_part_buck_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -806,6 +813,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.over1k_part_buck_sort_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -1362,6 +1370,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.over1k_part2_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -1443,6 +1452,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.over1k_part2_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -1531,6 +1541,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.over1k_part2_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -1610,6 +1621,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.over1k_part2_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -1703,6 +1715,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.over1k_part2_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -2097,6 +2110,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.over1k_part_buck_sort2_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection @@ -2164,6 +2178,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.over1k_part_buck_sort2_orc + Execution mode: vectorized Stage: Stage-2 Dependency Collection From 9261d80d4b95018ed208aaf98b7388a99ddebd7b Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Mon, 29 Sep 2014 19:23:56 +0000 Subject: [PATCH 026/339] HIVE-8281: NPE with dynamic partition pruning on Tez (Gunther Hagleitner, reviewed by Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628265 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/optimizer/ConvertJoinMapJoin.java | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java index 019ddafc21b8..7a3280c79097 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java @@ -32,6 +32,7 @@ import org.apache.hadoop.hive.ql.exec.AppMasterEventOperator; import org.apache.hadoop.hive.ql.exec.CommonMergeJoinOperator; import org.apache.hadoop.hive.ql.exec.DummyStoreOperator; +import org.apache.hadoop.hive.ql.exec.FileSinkOperator; import org.apache.hadoop.hive.ql.exec.GroupByOperator; import org.apache.hadoop.hive.ql.exec.JoinOperator; import org.apache.hadoop.hive.ql.exec.MapJoinOperator; @@ -619,15 +620,31 @@ public MapJoinOperator convertJoinMapJoin(JoinOperator joinOp, OptimizeTezProcCo return mapJoinOp; } - private boolean hasDynamicPartitionBroadcast(Operator op) { - if (op instanceof AppMasterEventOperator && op.getConf() instanceof DynamicPruningEventDesc) { - return true; - } - for (Operator c : op.getChildOperators()) { - if (hasDynamicPartitionBroadcast(c)) { - return true; + private boolean hasDynamicPartitionBroadcast(Operator parent) { + boolean hasDynamicPartitionPruning = false; + + for (Operator op: parent.getChildOperators()) { + while (op != null) { + if (op instanceof AppMasterEventOperator && op.getConf() instanceof DynamicPruningEventDesc) { + // found dynamic partition pruning operator + hasDynamicPartitionPruning = true; + break; + } + + if (op instanceof ReduceSinkOperator || op instanceof FileSinkOperator) { + // crossing reduce sink or file sink means the pruning isn't for this parent. + break; + } + + if (op.getChildOperators().size() != 1) { + // dynamic partition pruning pipeline doesn't have multiple children + break; + } + + op = op.getChildOperators().get(0); } } - return false; + + return hasDynamicPartitionPruning; } } From 9bbfe84a152d061da4ea629ee2aacc4df7d28484 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Mon, 29 Sep 2014 19:32:12 +0000 Subject: [PATCH 027/339] HIVE-8294: Dynamic partition pruning fails with IndexOutOfBoundsException (Gunther Hagleitner, reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628269 13f79535-47bb-0310-9956-ffa450edef68 --- .../dynamic_partition_pruning_2.q | 72 ++- .../tez/dynamic_partition_pruning_2.q.out | 611 +++++++++++++++++- 2 files changed, 654 insertions(+), 29 deletions(-) diff --git a/ql/src/test/queries/clientpositive/dynamic_partition_pruning_2.q b/ql/src/test/queries/clientpositive/dynamic_partition_pruning_2.q index 67c5249a8192..5a7f1135ff0b 100644 --- a/ql/src/test/queries/clientpositive/dynamic_partition_pruning_2.q +++ b/ql/src/test/queries/clientpositive/dynamic_partition_pruning_2.q @@ -19,6 +19,9 @@ load data local inpath '../../data/files/agg_01-p1.txt' into table agg_01 partit load data local inpath '../../data/files/agg_01-p2.txt' into table agg_01 partition (dim_shops_id=2); load data local inpath '../../data/files/agg_01-p3.txt' into table agg_01 partition (dim_shops_id=3); +analyze table dim_shops compute statistics; +analyze table agg_01 partition (dim_shops_id) compute statistics; + select * from dim_shops; select * from agg_01; @@ -40,6 +43,73 @@ d1.label in ('foo', 'bar') GROUP BY d1.label ORDER BY d1.label; +set hive.tez.dynamic.partition.pruning.max.event.size=1000000; +set hive.tez.dynamic.partition.pruning.max.data.size=1; + +EXPLAIN SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label; + +SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label; + +EXPLAIN SELECT d1.label +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id; + +SELECT d1.label +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id; + +EXPLAIN SELECT agg.amount +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and agg.dim_shops_id = 1; + +SELECT agg.amount +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and agg.dim_shops_id = 1; + +set hive.tez.dynamic.partition.pruning.max.event.size=1; +set hive.tez.dynamic.partition.pruning.max.data.size=1000000; + +EXPLAIN SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label; + +SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label; + +set hive.tez.dynamic.partition.pruning.max.event.size=100000; +set hive.tez.dynamic.partition.pruning.max.data.size=1000000; + EXPLAIN SELECT amount FROM agg_01, dim_shops WHERE dim_shops_id = id AND label = 'foo' UNION ALL @@ -47,4 +117,4 @@ SELECT amount FROM agg_01, dim_shops WHERE dim_shops_id = id AND label = 'bar'; SELECT amount FROM agg_01, dim_shops WHERE dim_shops_id = id AND label = 'foo' UNION ALL -SELECT amount FROM agg_01, dim_shops WHERE dim_shops_id = id AND label = 'bar'; \ No newline at end of file +SELECT amount FROM agg_01, dim_shops WHERE dim_shops_id = id AND label = 'bar'; diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out index cf56f074a1be..43d08e52bb9c 100644 --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out @@ -67,6 +67,34 @@ POSTHOOK: query: load data local inpath '../../data/files/agg_01-p3.txt' into ta POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@agg_01@dim_shops_id=3 +PREHOOK: query: analyze table dim_shops compute statistics +PREHOOK: type: QUERY +PREHOOK: Input: default@dim_shops +PREHOOK: Output: default@dim_shops +POSTHOOK: query: analyze table dim_shops compute statistics +POSTHOOK: type: QUERY +POSTHOOK: Input: default@dim_shops +POSTHOOK: Output: default@dim_shops +PREHOOK: query: analyze table agg_01 partition (dim_shops_id) compute statistics +PREHOOK: type: QUERY +PREHOOK: Input: default@agg_01 +PREHOOK: Input: default@agg_01@dim_shops_id=1 +PREHOOK: Input: default@agg_01@dim_shops_id=2 +PREHOOK: Input: default@agg_01@dim_shops_id=3 +PREHOOK: Output: default@agg_01 +PREHOOK: Output: default@agg_01@dim_shops_id=1 +PREHOOK: Output: default@agg_01@dim_shops_id=2 +PREHOOK: Output: default@agg_01@dim_shops_id=3 +POSTHOOK: query: analyze table agg_01 partition (dim_shops_id) compute statistics +POSTHOOK: type: QUERY +POSTHOOK: Input: default@agg_01 +POSTHOOK: Input: default@agg_01@dim_shops_id=1 +POSTHOOK: Input: default@agg_01@dim_shops_id=2 +POSTHOOK: Input: default@agg_01@dim_shops_id=3 +POSTHOOK: Output: default@agg_01 +POSTHOOK: Output: default@agg_01@dim_shops_id=1 +POSTHOOK: Output: default@agg_01@dim_shops_id=2 +POSTHOOK: Output: default@agg_01@dim_shops_id=3 PREHOOK: query: select * from dim_shops PREHOOK: type: QUERY PREHOOK: Input: default@dim_shops @@ -137,29 +165,29 @@ STAGE PLANS: TableScan alias: d1 filterExpr: (id is not null and (label) IN ('foo', 'bar')) (type: boolean) - Statistics: Num rows: 0 Data size: 18 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 3 Data size: 15 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (id is not null and (label) IN ('foo', 'bar')) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: id (type: int) sort order: + Map-reduce partition columns: id (type: int) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE value expressions: label (type: string) Select Operator expressions: id (type: int) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: int) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Dynamic Partitioning Event Operator Target Input: agg Partition key expr: dim_shops_id - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Target column: dim_shops_id Target Vertex: Map 2 Map 2 @@ -167,7 +195,7 @@ STAGE PLANS: TableScan alias: agg filterExpr: dim_shops_id is not null (type: boolean) - Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 9 Data size: 27 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -180,25 +208,552 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col5, _col6 input vertices: 1 Map 1 - Statistics: Num rows: 0 Data size: 39 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 9 Data size: 29 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((_col1 = _col5) and (_col6) IN ('foo', 'bar')) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col6 (type: string), _col0 (type: decimal(10,0)) outputColumnNames: _col6, _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(), sum(_col0) keys: _col6 (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint), _col2 (type: decimal(20,0)) + Reducer 3 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0), sum(VALUE._col1) + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: bigint), _col2 (type: decimal(20,0)) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint), _col2 (type: decimal(20,0)) + Reducer 4 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint), VALUE._col1 (type: decimal(20,0)) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label +PREHOOK: type: QUERY +PREHOOK: Input: default@agg_01 +PREHOOK: Input: default@agg_01@dim_shops_id=1 +PREHOOK: Input: default@agg_01@dim_shops_id=2 +PREHOOK: Input: default@agg_01@dim_shops_id=3 +PREHOOK: Input: default@dim_shops +#### A masked pattern was here #### +POSTHOOK: query: SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label +POSTHOOK: type: QUERY +POSTHOOK: Input: default@agg_01 +POSTHOOK: Input: default@agg_01@dim_shops_id=1 +POSTHOOK: Input: default@agg_01@dim_shops_id=2 +POSTHOOK: Input: default@agg_01@dim_shops_id=3 +POSTHOOK: Input: default@dim_shops +#### A masked pattern was here #### +bar 3 15 +foo 3 6 +PREHOOK: query: EXPLAIN SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 2 <- Map 1 (BROADCAST_EDGE) + Reducer 3 <- Map 2 (SIMPLE_EDGE) + Reducer 4 <- Reducer 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: d1 + filterExpr: (id is not null and (label) IN ('foo', 'bar')) (type: boolean) + Statistics: Num rows: 3 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (id is not null and (label) IN ('foo', 'bar')) (type: boolean) + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: id (type: int) + sort order: + + Map-reduce partition columns: id (type: int) + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + value expressions: label (type: string) + Map 2 + Map Operator Tree: + TableScan + alias: agg + filterExpr: dim_shops_id is not null (type: boolean) + Statistics: Num rows: 9 Data size: 27 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {amount} {dim_shops_id} + 1 {id} {label} + keys: + 0 dim_shops_id (type: int) + 1 id (type: int) + outputColumnNames: _col0, _col1, _col5, _col6 + input vertices: + 1 Map 1 + Statistics: Num rows: 9 Data size: 29 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((_col1 = _col5) and (_col6) IN ('foo', 'bar')) (type: boolean) + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col6 (type: string), _col0 (type: decimal(10,0)) + outputColumnNames: _col6, _col0 + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(), sum(_col0) + keys: _col6 (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint), _col2 (type: decimal(20,0)) + Reducer 3 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0), sum(VALUE._col1) + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: bigint), _col2 (type: decimal(20,0)) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint), _col2 (type: decimal(20,0)) + Reducer 4 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint), VALUE._col1 (type: decimal(20,0)) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label +PREHOOK: type: QUERY +PREHOOK: Input: default@agg_01 +PREHOOK: Input: default@agg_01@dim_shops_id=1 +PREHOOK: Input: default@agg_01@dim_shops_id=2 +PREHOOK: Input: default@agg_01@dim_shops_id=3 +PREHOOK: Input: default@dim_shops +#### A masked pattern was here #### +POSTHOOK: query: SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label +POSTHOOK: type: QUERY +POSTHOOK: Input: default@agg_01 +POSTHOOK: Input: default@agg_01@dim_shops_id=1 +POSTHOOK: Input: default@agg_01@dim_shops_id=2 +POSTHOOK: Input: default@agg_01@dim_shops_id=3 +POSTHOOK: Input: default@dim_shops +#### A masked pattern was here #### +bar 3 15 +foo 3 6 +PREHOOK: query: EXPLAIN SELECT d1.label +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT d1.label +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 2 <- Map 1 (BROADCAST_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: d1 + filterExpr: id is not null (type: boolean) + Statistics: Num rows: 3 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: id is not null (type: boolean) + Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: id (type: int) + sort order: + + Map-reduce partition columns: id (type: int) + Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE + value expressions: label (type: string) + Map 2 + Map Operator Tree: + TableScan + alias: agg + filterExpr: dim_shops_id is not null (type: boolean) + Statistics: Num rows: 9 Data size: 27 Basic stats: COMPLETE Column stats: COMPLETE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {dim_shops_id} + 1 {id} {label} + keys: + 0 dim_shops_id (type: int) + 1 id (type: int) + outputColumnNames: _col1, _col5, _col6 + input vertices: + 1 Map 1 + Statistics: Num rows: 9 Data size: 29 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (_col1 = _col5) (type: boolean) + Statistics: Num rows: 4 Data size: 12 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col6 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 4 Data size: 12 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 4 Data size: 12 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT d1.label +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +PREHOOK: type: QUERY +PREHOOK: Input: default@agg_01 +PREHOOK: Input: default@agg_01@dim_shops_id=1 +PREHOOK: Input: default@agg_01@dim_shops_id=2 +PREHOOK: Input: default@agg_01@dim_shops_id=3 +PREHOOK: Input: default@dim_shops +#### A masked pattern was here #### +POSTHOOK: query: SELECT d1.label +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +POSTHOOK: type: QUERY +POSTHOOK: Input: default@agg_01 +POSTHOOK: Input: default@agg_01@dim_shops_id=1 +POSTHOOK: Input: default@agg_01@dim_shops_id=2 +POSTHOOK: Input: default@agg_01@dim_shops_id=3 +POSTHOOK: Input: default@dim_shops +#### A masked pattern was here #### +foo +foo +foo +bar +bar +bar +baz +baz +baz +PREHOOK: query: EXPLAIN SELECT agg.amount +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and agg.dim_shops_id = 1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT agg.amount +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and agg.dim_shops_id = 1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 2 <- Map 1 (BROADCAST_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: d1 + filterExpr: (id is not null and (id = 1)) (type: boolean) + Statistics: Num rows: 3 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (id is not null and (id = 1)) (type: boolean) + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: 1 (type: int) + sort order: + + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Map 2 + Map Operator Tree: + TableScan + alias: agg + filterExpr: (dim_shops_id is not null and (dim_shops_id = 1)) (type: boolean) + Statistics: Num rows: 3 Data size: 9 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {amount} {dim_shops_id} + 1 + keys: + 0 dim_shops_id (type: int) + 1 1 (type: int) + outputColumnNames: _col0, _col1 + input vertices: + 1 Map 1 + Statistics: Num rows: 3 Data size: 9 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((_col1 = 1) and (_col1 = 1)) (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + File Output Operator + compressed: false Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT agg.amount +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and agg.dim_shops_id = 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@agg_01 +PREHOOK: Input: default@agg_01@dim_shops_id=1 +PREHOOK: Input: default@dim_shops +#### A masked pattern was here #### +POSTHOOK: query: SELECT agg.amount +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and agg.dim_shops_id = 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@agg_01 +POSTHOOK: Input: default@agg_01@dim_shops_id=1 +POSTHOOK: Input: default@dim_shops +#### A masked pattern was here #### +1 +2 +3 +PREHOOK: query: EXPLAIN SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT d1.label, count(*), sum(agg.amount) +FROM agg_01 agg, +dim_shops d1 +WHERE agg.dim_shops_id = d1.id +and +d1.label in ('foo', 'bar') +GROUP BY d1.label +ORDER BY d1.label +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 2 <- Map 1 (BROADCAST_EDGE) + Reducer 3 <- Map 2 (SIMPLE_EDGE) + Reducer 4 <- Reducer 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: d1 + filterExpr: (id is not null and (label) IN ('foo', 'bar')) (type: boolean) + Statistics: Num rows: 3 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (id is not null and (label) IN ('foo', 'bar')) (type: boolean) + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: id (type: int) + sort order: + + Map-reduce partition columns: id (type: int) + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + value expressions: label (type: string) + Select Operator + expressions: id (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: _col0 (type: int) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Dynamic Partitioning Event Operator + Target Input: agg + Partition key expr: dim_shops_id + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Target column: dim_shops_id + Target Vertex: Map 2 + Map 2 + Map Operator Tree: + TableScan + alias: agg + filterExpr: dim_shops_id is not null (type: boolean) + Statistics: Num rows: 9 Data size: 27 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {amount} {dim_shops_id} + 1 {id} {label} + keys: + 0 dim_shops_id (type: int) + 1 id (type: int) + outputColumnNames: _col0, _col1, _col5, _col6 + input vertices: + 1 Map 1 + Statistics: Num rows: 9 Data size: 29 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((_col1 = _col5) and (_col6) IN ('foo', 'bar')) (type: boolean) + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col6 (type: string), _col0 (type: decimal(10,0)) + outputColumnNames: _col6, _col0 + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(), sum(_col0) + keys: _col6 (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint), _col2 (type: decimal(20,0)) Reducer 3 Reduce Operator Tree: @@ -207,25 +762,25 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: bigint), _col2 (type: decimal(20,0)) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint), _col2 (type: decimal(20,0)) Reducer 4 Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint), VALUE._col1 (type: decimal(20,0)) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -296,28 +851,28 @@ STAGE PLANS: TableScan alias: dim_shops filterExpr: (id is not null and (label = 'bar')) (type: boolean) - Statistics: Num rows: 2 Data size: 18 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 15 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (id is not null and (label = 'bar')) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: id (type: int) sort order: + Map-reduce partition columns: id (type: int) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: id (type: int) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: int) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Dynamic Partitioning Event Operator Target Input: agg_01 Partition key expr: dim_shops_id - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Target column: dim_shops_id Target Vertex: Map 3 Map 2 @@ -325,28 +880,28 @@ STAGE PLANS: TableScan alias: dim_shops filterExpr: (id is not null and (label = 'foo')) (type: boolean) - Statistics: Num rows: 2 Data size: 18 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 15 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (id is not null and (label = 'foo')) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: id (type: int) sort order: + Map-reduce partition columns: id (type: int) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: id (type: int) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: int) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Dynamic Partitioning Event Operator Target Input: agg_01 Partition key expr: dim_shops_id - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Target column: dim_shops_id Target Vertex: Map 5 Map 3 From 6c2be583a1e2c5562acad9513f64aec9aebf4627 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Mon, 29 Sep 2014 19:54:31 +0000 Subject: [PATCH 028/339] HIVE-7389: Reduce number of metastore calls in MoveTask (when loading dynamic partitions) (Rajesh Balamohan via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628282 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/exec/MoveTask.java | 14 ++++-- .../apache/hadoop/hive/ql/metadata/Hive.java | 44 +++++++++++-------- 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java index 0d9c1a6c6a42..583b82b1be5b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java @@ -353,6 +353,7 @@ public int execute(DriverContext driverContext) { pushFeed(FeedType.DYNAMIC_PARTITIONS, dps); } + long startTime = System.currentTimeMillis(); // load the list of DP partitions and return the list of partition specs // TODO: In a follow-up to HIVE-1361, we should refactor loadDynamicPartitions // to use Utilities.getFullDPSpecs() to get the list of full partSpecs. @@ -360,7 +361,7 @@ public int execute(DriverContext driverContext) { // iterate over it and call loadPartition() here. // The reason we don't do inside HIVE-1361 is the latter is large and we // want to isolate any potential issue it may introduce. - ArrayList> dp = + Map, Partition> dp = db.loadDynamicPartitions( tbd.getSourcePath(), tbd.getTable().getTableName(), @@ -370,16 +371,19 @@ public int execute(DriverContext driverContext) { tbd.getHoldDDLTime(), isSkewedStoredAsDirs(tbd), work.getLoadTableWork().getWriteType() != AcidUtils.Operation.NOT_ACID); + console.printInfo("\t Time taken for load dynamic partitions : " + + (System.currentTimeMillis() - startTime)); if (dp.size() == 0 && conf.getBoolVar(HiveConf.ConfVars.HIVE_ERROR_ON_EMPTY_PARTITION)) { throw new HiveException("This query creates no partitions." + " To turn off this error, set hive.error.on.empty.partition=false."); } + startTime = System.currentTimeMillis(); // for each partition spec, get the partition // and put it to WriteEntity for post-exec hook - for (LinkedHashMap partSpec: dp) { - Partition partn = db.getPartition(table, partSpec, false); + for(Map.Entry, Partition> entry : dp.entrySet()) { + Partition partn = entry.getValue(); if (bucketCols != null || sortCols != null) { updatePartitionBucketSortColumns(table, partn, bucketCols, numBuckets, sortCols); @@ -412,8 +416,10 @@ public int execute(DriverContext driverContext) { table.getCols()); } - console.printInfo("\tLoading partition " + partSpec); + console.printInfo("\tLoading partition " + entry.getKey()); } + console.printInfo("\t Time taken for adding to write entity : " + + (System.currentTimeMillis() - startTime)); dc = null; // reset data container to prevent it being added again. } else { // static partitions List partVals = MetaStoreUtils.getPvals(table.getPartCols(), diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index 4941427deed5..a9efdf44f33a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -1237,6 +1237,15 @@ public Database getDatabaseCurrent() throws HiveException { return getDatabase(currentDb); } + public void loadPartition(Path loadPath, String tableName, + Map partSpec, boolean replace, boolean holdDDLTime, + boolean inheritTableSpecs, boolean isSkewedStoreAsSubdir, + boolean isSrcLocal, boolean isAcid) throws HiveException { + Table tbl = getTable(tableName); + loadPartition(loadPath, tbl, partSpec, replace, holdDDLTime, inheritTableSpecs, + isSkewedStoreAsSubdir, isSrcLocal, isAcid); + } + /** * Load a directory into a Hive Table Partition - Alters existing content of * the partition with the contents of loadPath. - If the partition does not @@ -1245,7 +1254,7 @@ public Database getDatabaseCurrent() throws HiveException { * * @param loadPath * Directory containing files to load into Table - * @param tableName + * @param tbl * name of table to be loaded. * @param partSpec * defines which partition needs to be loaded @@ -1258,12 +1267,12 @@ public Database getDatabaseCurrent() throws HiveException { * @param isSrcLocal * If the source directory is LOCAL */ - public void loadPartition(Path loadPath, String tableName, + public Partition loadPartition(Path loadPath, Table tbl, Map partSpec, boolean replace, boolean holdDDLTime, boolean inheritTableSpecs, boolean isSkewedStoreAsSubdir, boolean isSrcLocal, boolean isAcid) throws HiveException { - Table tbl = getTable(tableName); Path tblDataLocationPath = tbl.getDataLocation(); + Partition newTPart = null; try { /** * Move files before creating the partition since down stream processes @@ -1312,10 +1321,10 @@ public void loadPartition(Path loadPath, String tableName, Hive.copyFiles(conf, loadPath, newPartPath, fs, isSrcLocal, isAcid); } + boolean forceCreate = (!holdDDLTime) ? true : false; + newTPart = getPartition(tbl, partSpec, forceCreate, newPartPath.toString(), inheritTableSpecs); // recreate the partition if it existed before if (!holdDDLTime) { - Partition newTPart = getPartition(tbl, partSpec, true, newPartPath.toString(), - inheritTableSpecs); if (isSkewedStoreAsSubdir) { org.apache.hadoop.hive.metastore.api.Partition newCreatedTpart = newTPart.getTPartition(); SkewedInfo skewedInfo = newCreatedTpart.getSd().getSkewedInfo(); @@ -1325,9 +1334,9 @@ public void loadPartition(Path loadPath, String tableName, /* Add list bucketing location mappings. */ skewedInfo.setSkewedColValueLocationMaps(skewedColValueLocationMaps); newCreatedTpart.getSd().setSkewedInfo(skewedInfo); - alterPartition(tbl.getTableName(), new Partition(tbl, newCreatedTpart)); + alterPartition(tbl.getDbName(), tbl.getTableName(), new Partition(tbl, newCreatedTpart)); newTPart = getPartition(tbl, partSpec, true, newPartPath.toString(), inheritTableSpecs); - newCreatedTpart = newTPart.getTPartition(); + return new Partition(tbl, newCreatedTpart); } } } catch (IOException e) { @@ -1340,7 +1349,7 @@ public void loadPartition(Path loadPath, String tableName, LOG.error(StringUtils.stringifyException(e)); throw new HiveException(e); } - + return newTPart; } /** @@ -1436,18 +1445,18 @@ private Map, String> constructListBucketingLocationMap(Path newPart * @param replace * @param numDP number of dynamic partitions * @param holdDDLTime - * @return a list of strings with the dynamic partition paths + * @return partition map details (PartitionSpec and Partition) * @throws HiveException */ - public ArrayList> loadDynamicPartitions(Path loadPath, + public Map, Partition> loadDynamicPartitions(Path loadPath, String tableName, Map partSpec, boolean replace, int numDP, boolean holdDDLTime, boolean listBucketingEnabled, boolean isAcid) throws HiveException { Set validPartitions = new HashSet(); try { - ArrayList> fullPartSpecs = - new ArrayList>(); + Map, Partition> partitionsMap = new + LinkedHashMap, Partition>(); FileSystem fs = loadPath.getFileSystem(conf); FileStatus[] leafStatus = HiveStatsUtils.getFileStatusRecurse(loadPath, numDP+1, fs); @@ -1481,6 +1490,7 @@ public ArrayList> loadDynamicPartitions(Path loadP + " to at least " + validPartitions.size() + '.'); } + Table tbl = getTable(tableName); // for each dynamically created DP directory, construct a full partition spec // and load the partition based on that Iterator iter = validPartitions.iterator(); @@ -1493,14 +1503,12 @@ public ArrayList> loadDynamicPartitions(Path loadP // generate a full partition specification LinkedHashMap fullPartSpec = new LinkedHashMap(partSpec); Warehouse.makeSpecFromName(fullPartSpec, partPath); - fullPartSpecs.add(fullPartSpec); - - // finally load the partition -- move the file to the final table address - loadPartition(partPath, tableName, fullPartSpec, replace, holdDDLTime, true, - listBucketingEnabled, false, isAcid); + Partition newPartition = loadPartition(partPath, tbl, fullPartSpec, replace, + holdDDLTime, true, listBucketingEnabled, false, isAcid); + partitionsMap.put(fullPartSpec, newPartition); LOG.info("New loading path = " + partPath + " with partSpec " + fullPartSpec); } - return fullPartSpecs; + return partitionsMap; } catch (IOException e) { throw new HiveException(e); } From 5873aaa90cc4e4b5fa1f44f27b2d9903881e4275 Mon Sep 17 00:00:00 2001 From: Vikram Dixit K Date: Tue, 30 Sep 2014 01:40:36 +0000 Subject: [PATCH 029/339] HIVE-8257: Accumulo introduces old hadoop-client dependency (Josh Esler via Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628349 13f79535-47bb-0310-9956-ffa450edef68 --- accumulo-handler/pom.xml | 12 ++++++++++++ pom.xml | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/accumulo-handler/pom.xml b/accumulo-handler/pom.xml index c3efd0a6f823..b00fe88566e4 100644 --- a/accumulo-handler/pom.xml +++ b/accumulo-handler/pom.xml @@ -110,6 +110,12 @@ hadoop-1 + + org.apache.hadoop + hadoop-client + ${hadoop-20S.version} + true + org.apache.hadoop hadoop-core @@ -121,6 +127,12 @@ hadoop-2 + + org.apache.hadoop + hadoop-client + ${hadoop-23.version} + true + org.apache.hadoop hadoop-common diff --git a/pom.xml b/pom.xml index d95f60252bf3..157693d49262 100644 --- a/pom.xml +++ b/pom.xml @@ -967,6 +967,11 @@ hadoop-1 + + org.apache.hadoop + hadoop-client + ${hadoop-20S.version} + org.apache.hadoop hadoop-core @@ -1009,6 +1014,11 @@ hadoop-2 + + org.apache.hadoop + hadoop-client + ${hadoop-23.version} + org.apache.hadoop hadoop-common From 6e73e67e3c379007d1926efe8cc75f5b02f0b57a Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Tue, 30 Sep 2014 02:55:19 +0000 Subject: [PATCH 030/339] HIVE-8229: Add multithreaded tests for the Hive Writable data types (Jason Dere, reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628357 13f79535-47bb-0310-9956-ffa450edef68 --- common/pom.xml | 6 + .../hadoop/hive/common/type/TestHiveChar.java | 19 ++- .../hive/common/type/TestHiveDecimal.java | 29 +++- .../hive/common/type/TestHiveVarchar.java | 16 +- serde/pom.xml | 6 + .../hive/serde2/io/TestDateWritable.java | 138 ++++++++++++++++++ .../hive/serde2/io/TestHiveCharWritable.java | 29 +++- .../serde2/io/TestHiveDecimalWritable.java | 25 ++-- .../serde2/io/TestHiveVarcharWritable.java | 25 +++- .../hive/serde2/io/TestTimestampWritable.java | 53 ++++++- 10 files changed, 320 insertions(+), 26 deletions(-) create mode 100644 serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java diff --git a/common/pom.xml b/common/pom.xml index ad9f6c0f342a..01c74ba63286 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -71,6 +71,12 @@ ${ant.version} + + com.google.code.tempus-fugit + tempus-fugit + ${tempus-fugit.version} + test + junit junit diff --git a/common/src/test/org/apache/hadoop/hive/common/type/TestHiveChar.java b/common/src/test/org/apache/hadoop/hive/common/type/TestHiveChar.java index 63f039479b87..f3b47295905c 100644 --- a/common/src/test/org/apache/hadoop/hive/common/type/TestHiveChar.java +++ b/common/src/test/org/apache/hadoop/hive/common/type/TestHiveChar.java @@ -18,10 +18,19 @@ package org.apache.hadoop.hive.common.type; -import junit.framework.TestCase; +import com.google.code.tempusfugit.concurrency.annotations.*; +import com.google.code.tempusfugit.concurrency.*; +import org.junit.*; +import static org.junit.Assert.*; -public class TestHiveChar extends TestCase { +public class TestHiveChar { + @Rule public ConcurrentRule concurrentRule = new ConcurrentRule(); + @Rule public RepeatingRule repeatingRule = new RepeatingRule(); + + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testBasic() { HiveChar hc = new HiveChar("abc", 10); assertEquals("abc ", hc.toString()); @@ -47,6 +56,9 @@ public void testBasic() { assertEquals(3, hc.getCharacterLength()); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testStringLength() { HiveChar hc = new HiveChar(); @@ -60,6 +72,9 @@ public void testStringLength() { assertEquals("0123456789 ", hc.toString()); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testComparison() { HiveChar hc1 = new HiveChar(); HiveChar hc2 = new HiveChar(); diff --git a/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java b/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java index 46a73f2eba70..959989a14392 100644 --- a/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java +++ b/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java @@ -20,12 +20,19 @@ import java.math.BigDecimal; import java.math.BigInteger; -import org.junit.Assert; -import org.junit.Test; +import com.google.code.tempusfugit.concurrency.annotations.*; +import com.google.code.tempusfugit.concurrency.*; +import org.junit.*; +import static org.junit.Assert.*; public class TestHiveDecimal { + @Rule public ConcurrentRule concurrentRule = new ConcurrentRule(); + @Rule public RepeatingRule repeatingRule = new RepeatingRule(); + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testPrecisionScaleEnforcement() { String decStr = "1786135888657847525803324040144343378.09799306448796128931113691624"; HiveDecimal dec = HiveDecimal.create(decStr); @@ -82,6 +89,8 @@ public void testPrecisionScaleEnforcement() { } @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testMultiply() { HiveDecimal dec1 = HiveDecimal.create("0.00001786135888657847525803"); HiveDecimal dec2 = HiveDecimal.create("3.0000123456789"); @@ -105,6 +114,8 @@ public void testMultiply() { } @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testPow() { HiveDecimal dec = HiveDecimal.create("3.00001415926"); Assert.assertEquals(dec.pow(2), dec.multiply(dec)); @@ -118,6 +129,8 @@ public void testPow() { } @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testDivide() { HiveDecimal dec1 = HiveDecimal.create("3.14"); HiveDecimal dec2 = HiveDecimal.create("3"); @@ -133,6 +146,8 @@ public void testDivide() { } @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testPlus() { HiveDecimal dec1 = HiveDecimal.create("99999999999999999999999999999999999"); HiveDecimal dec2 = HiveDecimal.create("1"); @@ -145,6 +160,8 @@ public void testPlus() { @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testSubtract() { HiveDecimal dec1 = HiveDecimal.create("3.140"); HiveDecimal dec2 = HiveDecimal.create("1.00"); @@ -152,6 +169,8 @@ public void testSubtract() { } @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testPosMod() { HiveDecimal hd1 = HiveDecimal.create("-100.91"); HiveDecimal hd2 = HiveDecimal.create("9.8"); @@ -160,12 +179,16 @@ public void testPosMod() { } @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testHashCode() { Assert.assertEquals(HiveDecimal.create("9").hashCode(), HiveDecimal.create("9.00").hashCode()); Assert.assertEquals(HiveDecimal.create("0").hashCode(), HiveDecimal.create("0.00").hashCode()); } @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testException() { HiveDecimal dec = HiveDecimal.create("3.1415.926"); Assert.assertNull(dec); @@ -174,6 +197,8 @@ public void testException() { } @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testBinaryConversion() { testBinaryConversion("0.00"); testBinaryConversion("-12.25"); diff --git a/common/src/test/org/apache/hadoop/hive/common/type/TestHiveVarchar.java b/common/src/test/org/apache/hadoop/hive/common/type/TestHiveVarchar.java index f8da48da9706..309d0427da3f 100644 --- a/common/src/test/org/apache/hadoop/hive/common/type/TestHiveVarchar.java +++ b/common/src/test/org/apache/hadoop/hive/common/type/TestHiveVarchar.java @@ -17,7 +17,6 @@ */ package org.apache.hadoop.hive.common.type; -import junit.framework.TestCase; import org.apache.hadoop.hive.common.type.HiveVarchar; import org.apache.hadoop.hive.common.LogUtils; @@ -28,8 +27,15 @@ import java.io.InputStreamReader; import java.util.Random; +import com.google.code.tempusfugit.concurrency.annotations.*; +import com.google.code.tempusfugit.concurrency.*; +import org.junit.*; +import static org.junit.Assert.*; + +public class TestHiveVarchar { + @Rule public ConcurrentRule concurrentRule = new ConcurrentRule(); + @Rule public RepeatingRule repeatingRule = new RepeatingRule(); -public class TestHiveVarchar extends TestCase { public TestHiveVarchar() { super(); } @@ -65,6 +71,9 @@ public static int getRandomCodePoint(int excludeChar) { } } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testStringLength() throws Exception { int strLen = 20; int[] lengths = { 15, 20, 25 }; @@ -124,6 +133,9 @@ public void testStringLength() throws Exception { assertEquals(5, vc1.getCharacterLength()); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testComparison() throws Exception { HiveVarchar hc1 = new HiveVarchar("abcd", 20); HiveVarchar hc2 = new HiveVarchar("abcd", 20); diff --git a/serde/pom.xml b/serde/pom.xml index 9f327f00f115..b7bc4f04dce4 100644 --- a/serde/pom.xml +++ b/serde/pom.xml @@ -77,6 +77,12 @@ + + com.google.code.tempus-fugit + tempus-fugit + ${tempus-fugit.version} + test + junit junit diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java new file mode 100644 index 000000000000..75de0a632723 --- /dev/null +++ b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java @@ -0,0 +1,138 @@ +package org.apache.hadoop.hive.serde2.io; + +import com.google.code.tempusfugit.concurrency.annotations.*; +import com.google.code.tempusfugit.concurrency.*; +import org.junit.*; + +import static org.junit.Assert.*; +import java.io.*; +import java.sql.Date; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; + +public class TestDateWritable { + + @Rule public ConcurrentRule concurrentRule = new ConcurrentRule(); + @Rule public RepeatingRule repeatingRule = new RepeatingRule(); + + @Test + @Concurrent(count=4) + @Repeating(repetition=100) + public void testConstructor() { + Date date = Date.valueOf(getRandomDateString()); + DateWritable dw1 = new DateWritable(date); + DateWritable dw2 = new DateWritable(dw1); + DateWritable dw3 = new DateWritable(dw1.getDays()); + + assertEquals(dw1, dw1); + assertEquals(dw1, dw2); + assertEquals(dw2, dw3); + assertEquals(date, dw1.get()); + assertEquals(date, dw2.get()); + assertEquals(date, dw3.get()); + } + + @Test + @Concurrent(count=4) + @Repeating(repetition=100) + public void testComparison() { + // Get 2 different dates + Date date1 = Date.valueOf(getRandomDateString()); + Date date2 = Date.valueOf(getRandomDateString()); + while (date1.equals(date2)) { + date2 = Date.valueOf(getRandomDateString()); + } + + DateWritable dw1 = new DateWritable(date1); + DateWritable dw2 = new DateWritable(date2); + DateWritable dw3 = new DateWritable(date1); + + assertTrue("Dates should be equal", dw1.equals(dw1)); + assertTrue("Dates should be equal", dw1.equals(dw3)); + assertTrue("Dates should be equal", dw3.equals(dw1)); + assertEquals("Dates should be equal", 0, dw1.compareTo(dw1)); + assertEquals("Dates should be equal", 0, dw1.compareTo(dw3)); + assertEquals("Dates should be equal", 0, dw3.compareTo(dw1)); + + assertFalse("Dates not should be equal", dw1.equals(dw2)); + assertFalse("Dates not should be equal", dw2.equals(dw1)); + assertTrue("Dates not should be equal", 0 != dw1.compareTo(dw2)); + assertTrue("Dates not should be equal", 0 != dw2.compareTo(dw1)); + } + + @Test + @Concurrent(count=4) + @Repeating(repetition=100) + public void testGettersSetters() { + Date date1 = Date.valueOf(getRandomDateString()); + Date date2 = Date.valueOf(getRandomDateString()); + Date date3 = Date.valueOf(getRandomDateString()); + DateWritable dw1 = new DateWritable(date1); + DateWritable dw2 = new DateWritable(date2); + DateWritable dw3 = new DateWritable(date3); + DateWritable dw4 = new DateWritable(); + + // Getters + assertEquals(date1, dw1.get()); + assertEquals(date1.getTime() / 1000, dw1.getTimeInSeconds()); + + dw4.set(Date.valueOf("1970-01-02")); + assertEquals(1, dw4.getDays()); + dw4.set(Date.valueOf("1971-01-01")); + assertEquals(365, dw4.getDays()); + + // Setters + dw4.set(dw1.getDays()); + assertEquals(dw1, dw4); + + dw4.set(dw2.get()); + assertEquals(dw2, dw4); + + dw4.set(dw3); + assertEquals(dw3, dw4); + } + + @Test + @Concurrent(count=4) + @Repeating(repetition=100) + public void testWritableMethods() throws Throwable { + DateWritable dw1 = new DateWritable(Date.valueOf(getRandomDateString())); + DateWritable dw2 = new DateWritable(); + ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); + DataOutput out = new DataOutputStream(byteStream); + + dw1.write(out); + dw2.readFields(new DataInputStream(new ByteArrayInputStream(byteStream.toByteArray()))); + + assertEquals("Dates should be equal", dw1, dw2); + } + + @Test + @Concurrent(count=4) + @Repeating(repetition=100) + public void testDateValueOf() { + // Just making sure Date.valueOf() works ok + String dateStr = getRandomDateString(); + Date date = Date.valueOf(dateStr); + assertEquals(dateStr, date.toString()); + } + + private static String[] dateStrings = new String[365]; + + @BeforeClass + public static void setupDateStrings() { + DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + Date initialDate = Date.valueOf("2014-01-01"); + Calendar cal = Calendar.getInstance(); + cal.setTime(initialDate); + for (int idx = 0; idx < 365; ++idx) { + dateStrings[idx] = format.format(cal.getTime()); + cal.add(1, Calendar.DAY_OF_YEAR); + } + } + + private static String getRandomDateString() { + return dateStrings[(int) (Math.random() * 365)]; + } +} diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveCharWritable.java b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveCharWritable.java index c8bb31109a41..ee4292dd2fd0 100644 --- a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveCharWritable.java +++ b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveCharWritable.java @@ -18,10 +18,20 @@ package org.apache.hadoop.hive.serde2.io; -import junit.framework.TestCase; +import com.google.code.tempusfugit.concurrency.annotations.*; +import com.google.code.tempusfugit.concurrency.*; +import org.junit.*; + +import static org.junit.Assert.*; import org.apache.hadoop.hive.common.type.HiveChar; -public class TestHiveCharWritable extends TestCase { +public class TestHiveCharWritable { + @Rule public ConcurrentRule concurrentRule = new ConcurrentRule(); + @Rule public RepeatingRule repeatingRule = new RepeatingRule(); + + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testConstructor() throws Exception { HiveCharWritable hcw1 = new HiveCharWritable(new HiveChar("abc", 5)); assertEquals("abc ", hcw1.toString()); @@ -30,6 +40,9 @@ public void testConstructor() throws Exception { assertEquals("abc ", hcw2.toString()); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testSet() throws Exception { HiveCharWritable hcw1 = new HiveCharWritable(); @@ -70,18 +83,27 @@ public void testSet() throws Exception { assertEquals("ab", hcw1.getTextValue().toString()); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testGetHiveChar() throws Exception { HiveCharWritable hcw = new HiveCharWritable(); hcw.set("abcd", 10); assertEquals("abcd ", hcw.getHiveChar().toString()); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testGetCharacterLength() throws Exception { HiveCharWritable hcw = new HiveCharWritable(); hcw.set("abcd", 10); assertEquals(4, hcw.getCharacterLength()); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testEnforceMaxLength() { HiveCharWritable hcw1 = new HiveCharWritable(); hcw1.set("abcdefghij", 10); @@ -92,6 +114,9 @@ public void testEnforceMaxLength() { assertEquals("abcde", hcw1.toString()); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testComparison() throws Exception { HiveCharWritable hcw1 = new HiveCharWritable(); HiveCharWritable hcw2 = new HiveCharWritable(); diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveDecimalWritable.java b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveDecimalWritable.java index 849646b33a28..3b12514e061c 100644 --- a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveDecimalWritable.java +++ b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveDecimalWritable.java @@ -18,7 +18,10 @@ package org.apache.hadoop.hive.serde2.io; -import junit.framework.Assert; +import com.google.code.tempusfugit.concurrency.annotations.*; +import com.google.code.tempusfugit.concurrency.*; +import org.junit.*; +import static org.junit.Assert.*; import java.math.BigDecimal; import java.math.BigInteger; @@ -29,8 +32,6 @@ import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hive.common.util.Decimal128FastBuffer; -import org.junit.Before; -import org.junit.Test; /** * Unit tests for tsting the fast allocation-free conversion @@ -38,14 +39,15 @@ */ public class TestHiveDecimalWritable { - private Decimal128FastBuffer scratch; + @Rule public ConcurrentRule concurrentRule = new ConcurrentRule(); + @Rule public RepeatingRule repeatingRule = new RepeatingRule(); @Before public void setUp() throws Exception { - scratch = new Decimal128FastBuffer(); } private void doTestFastStreamForHiveDecimal(String valueString) { + Decimal128FastBuffer scratch = new Decimal128FastBuffer(); BigDecimal value = new BigDecimal(valueString); Decimal128 dec = new Decimal128(); dec.update(value); @@ -61,21 +63,23 @@ private void doTestFastStreamForHiveDecimal(String valueString) { BigDecimal readValue = hd.bigDecimalValue(); - Assert.assertEquals(value, readValue); + assertEquals(value, readValue); // Now test fastUpdate from the same serialized HiveDecimal Decimal128 decRead = new Decimal128().fastUpdateFromInternalStorage( witness.getInternalStorage(), (short) witness.getScale()); - Assert.assertEquals(dec, decRead); + assertEquals(dec, decRead); // Test fastUpdate from it's own (not fully compacted) serialized output Decimal128 decReadSelf = new Decimal128().fastUpdateFromInternalStorage( hdw.getInternalStorage(), (short) hdw.getScale()); - Assert.assertEquals(dec, decReadSelf); + assertEquals(dec, decReadSelf); } @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testFastStreamForHiveDecimal() { doTestFastStreamForHiveDecimal("0"); @@ -217,7 +221,10 @@ void doTestDecimalWithBoundsCheck(Decimal128 value) { } @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testHive6594() { + Decimal128FastBuffer scratch = new Decimal128FastBuffer(); String[] vs = new String[] { "-4033.445769230769", "6984454.211097692"}; @@ -236,7 +243,7 @@ public void testHive6594() { BigDecimal readValue = hd.bigDecimalValue(); - Assert.assertEquals(d.toBigDecimal().stripTrailingZeros(), + assertEquals(d.toBigDecimal().stripTrailingZeros(), readValue.stripTrailingZeros()); } } diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveVarcharWritable.java b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveVarcharWritable.java index 74e72288fc06..32d0da79cedf 100644 --- a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveVarcharWritable.java +++ b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestHiveVarcharWritable.java @@ -17,11 +17,21 @@ */ package org.apache.hadoop.hive.serde2.io; -import junit.framework.TestCase; +import com.google.code.tempusfugit.concurrency.annotations.*; +import com.google.code.tempusfugit.concurrency.*; +import org.junit.*; +import static org.junit.Assert.*; + import org.apache.hadoop.hive.common.type.HiveVarchar; import java.io.*; -public class TestHiveVarcharWritable extends TestCase { +public class TestHiveVarcharWritable { + @Rule public ConcurrentRule concurrentRule = new ConcurrentRule(); + @Rule public RepeatingRule repeatingRule = new RepeatingRule(); + + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testStringLength() throws Exception { HiveVarcharWritable vc1 = new HiveVarcharWritable(new HiveVarchar("0123456789", 10)); assertEquals(10, vc1.getCharacterLength()); @@ -54,6 +64,9 @@ public void testStringLength() throws Exception { assertEquals(6, vc1.getCharacterLength()); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testEnforceLength() throws Exception { HiveVarcharWritable vc1 = new HiveVarcharWritable(new HiveVarchar("0123456789", 10)); assertEquals(10, vc1.getCharacterLength()); @@ -66,8 +79,11 @@ public void testEnforceLength() throws Exception { vc1.enforceMaxLength(8); assertEquals(8, vc1.getCharacterLength()); -} + } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testComparison() throws Exception { HiveVarcharWritable hc1 = new HiveVarcharWritable(new HiveVarchar("abcd", 20)); HiveVarcharWritable hc2 = new HiveVarcharWritable(new HiveVarchar("abcd", 20)); @@ -101,6 +117,9 @@ public void testComparison() throws Exception { assertFalse(0 == hc2.compareTo(hc1)); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testStringValue() throws Exception { HiveVarcharWritable vc1 = new HiveVarcharWritable(new HiveVarchar("abcde", 20)); assertEquals("abcde", vc1.toString()); diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampWritable.java b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampWritable.java index 0e7b41811ed0..5fee0197d4b3 100644 --- a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampWritable.java +++ b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampWritable.java @@ -17,6 +17,9 @@ */ package org.apache.hadoop.hive.serde2.io; +import com.google.code.tempusfugit.concurrency.annotations.*; +import com.google.code.tempusfugit.concurrency.*; + import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; @@ -32,15 +35,25 @@ import java.util.Random; import java.util.TimeZone; -import junit.framework.TestCase; +import org.junit.*; +import static org.junit.Assert.*; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.io.Writable; import org.apache.hadoop.io.WritableUtils; -public class TestTimestampWritable extends TestCase { +public class TestTimestampWritable { + + @Rule public ConcurrentRule concurrentRule = new ConcurrentRule(); + @Rule public RepeatingRule repeatingRule = new RepeatingRule(); - private static DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + private static ThreadLocal DATE_FORMAT = + new ThreadLocal() { + @Override + protected synchronized DateFormat initialValue() { + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + } + }; private static final int HAS_DECIMAL_MASK = 0x80000000; @@ -64,14 +77,14 @@ private static long getSeconds(Timestamp ts) { private static long parseToMillis(String s) { try { - return DATE_FORMAT.parse(s).getTime(); + return DATE_FORMAT.get().parse(s).getTime(); } catch (ParseException ex) { throw new RuntimeException(ex); } } - @Override - protected void setUp() { + @Before + public void setUp() { TimeZone.setDefault(TimeZone.getTimeZone("UTC")); } @@ -252,6 +265,9 @@ private static TimestampWritable fromIntAndVInts(int i, long... vints) throws IO return tsw; } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testReverseNanos() { assertEquals(0, reverseNanos(0)); assertEquals(120000000, reverseNanos(21)); @@ -265,6 +281,8 @@ public void testReverseNanos() { * Test serializing and deserializing timestamps that can be represented by a number of seconds * from 0 to 2147483647 since the UNIX epoch. */ + @Test + @Concurrent(count=4) public void testTimestampsWithinPositiveIntRange() throws IOException { Random rand = new Random(294722773L); for (int i = 0; i < 10000; ++i) { @@ -281,6 +299,8 @@ private static long randomMillis(long minMillis, long maxMillis, Random rand) { * Test timestamps that don't necessarily fit between 1970 and 2038. This depends on HIVE-4525 * being fixed. */ + @Test + @Concurrent(count=4) public void testTimestampsOutsidePositiveIntRange() throws IOException { Random rand = new Random(789149717L); for (int i = 0; i < 10000; ++i) { @@ -289,6 +309,8 @@ public void testTimestampsOutsidePositiveIntRange() throws IOException { } } + @Test + @Concurrent(count=4) public void testTimestampsInFullRange() throws IOException { Random rand = new Random(2904974913L); for (int i = 0; i < 10000; ++i) { @@ -296,6 +318,8 @@ public void testTimestampsInFullRange() throws IOException { } } + @Test + @Concurrent(count=4) public void testToFromDouble() { Random rand = new Random(294729777L); for (int nanosPrecision = 0; nanosPrecision <= 4; ++nanosPrecision) { @@ -326,6 +350,8 @@ private static HiveDecimal timestampToDecimal(Timestamp ts) { return HiveDecimal.create(d); } + @Test + @Concurrent(count=4) public void testDecimalToTimestampRandomly() { Random rand = new Random(294729777L); for (int i = 0; i < 10000; ++i) { @@ -336,6 +362,9 @@ public void testDecimalToTimestampRandomly() { } } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testDecimalToTimestampCornerCases() { Timestamp ts = new Timestamp(parseToMillis("1969-03-04 05:44:33")); assertEquals(0, ts.getTime() % 1000); @@ -347,6 +376,9 @@ public void testDecimalToTimestampCornerCases() { } } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testSerializationFormatDirectly() throws IOException { assertEquals("1970-01-01 00:00:00", fromIntAndVInts(0).toString()); assertEquals("1970-01-01 00:00:01", fromIntAndVInts(1).toString()); @@ -374,6 +406,9 @@ public void testSerializationFormatDirectly() throws IOException { -3210 - 1, seconds >> 31).toString()); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testMaxSize() { // This many bytes are necessary to store the reversed nanoseconds. assertEquals(5, WritableUtils.getVIntSize(999999999)); @@ -396,6 +431,9 @@ public void testMaxSize() { // Therefore, the maximum total size of a serialized timestamp is 4 + 5 + 4 = 13. } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testMillisToSeconds() { assertEquals(0, TimestampWritable.millisToSeconds(0)); assertEquals(-1, TimestampWritable.millisToSeconds(-1)); @@ -427,6 +465,9 @@ private static int normalizeComparisonResult(int result) { return result < 0 ? -1 : (result > 0 ? 1 : 0); } + @Test + @Concurrent(count=4) + @Repeating(repetition=100) public void testBinarySortable() { Random rand = new Random(5972977L); List tswList = new ArrayList(); From eab58a86febc8070d4117e6a28ba90964ca3ff80 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Tue, 30 Sep 2014 16:26:39 +0000 Subject: [PATCH 031/339] HIVE-8270 : JDBC uber jar is missing some classes required in secure setup. (Vaibhav Gumashta via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628482 13f79535-47bb-0310-9956-ffa450edef68 --- jdbc/pom.xml | 60 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 45 insertions(+), 15 deletions(-) diff --git a/jdbc/pom.xml b/jdbc/pom.xml index 253b840d54f8..215dc86df622 100644 --- a/jdbc/pom.xml +++ b/jdbc/pom.xml @@ -41,8 +41,14 @@ org.apache.hive - hive-metastore + hive-service ${project.version} + + + org.apache.hive + hive-exec + + org.apache.hive @@ -51,12 +57,12 @@ org.apache.hive - hive-service + hive-metastore ${project.version} org.apache.hive - hive-exec + hive-shims ${project.version} @@ -135,8 +141,39 @@ true true ${hive.jdbc.driver.classifier} + + + org.apache.hive.shims:hive-shims-common + + org/apache/hadoop/hive/shims/* + org/apache/hadoop/hive/thrift/* + + + + org.apache.hive.shims:hive-shims-common-secure + + org/apache/hadoop/hive/thrift/* + org/apache/hadoop/hive/thrift/client/* + + + + org.apache.hive.shims:hive-shims-0.23 + + org/apache/hadoop/hive/thrift/* + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + org.apache.commons:commons-compress org.apache.hadoop:* org.apache.hive:hive-ant org.apache.ant:* @@ -150,23 +187,16 @@ org.tukaani:* org.iq80.snappy:* org.apache.velocity:* + net.sf.jpam:* + org.apache.avro:* + net.sf.opencsv:* + org.antlr:* - - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - + - From 8c4103028c0a0a8a05af4e8c0b7baa09975e56a4 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Tue, 30 Sep 2014 16:28:40 +0000 Subject: [PATCH 032/339] HIVE-8298 : Incorrect results for n-way join when join expressions are not in same order across joins (Ashutosh Chauhan via Gunther Hagleitner, Harish Butani) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628483 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/parse/SemanticAnalyzer.java | 2 +- .../join_merge_multi_expressions.q | 3 + .../join_merge_multi_expressions.q.out | 121 ++++++++++++++++++ 3 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 ql/src/test/queries/clientpositive/join_merge_multi_expressions.q create mode 100644 ql/src/test/results/clientpositive/join_merge_multi_expressions.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index c2ed55c3982f..117f7b36195a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -8028,7 +8028,7 @@ private void mergeJoins(QB qb, QBJoinTree node, QBJoinTree target, int pos, int[ List nodeConds = node.getExpressions().get(i + 1); ArrayList reordereNodeConds = new ArrayList(); for(int k=0; k < tgtToNodeExprMap.length; k++) { - reordereNodeConds.add(nodeConds.get(k)); + reordereNodeConds.add(nodeConds.get(tgtToNodeExprMap[k])); } expr.add(reordereNodeConds); } diff --git a/ql/src/test/queries/clientpositive/join_merge_multi_expressions.q b/ql/src/test/queries/clientpositive/join_merge_multi_expressions.q new file mode 100644 index 000000000000..dcab3130d794 --- /dev/null +++ b/ql/src/test/queries/clientpositive/join_merge_multi_expressions.q @@ -0,0 +1,3 @@ +explain +select count(*) from srcpart a join srcpart b on a.key = b.key and a.hr = b.hr join srcpart c on a.hr = c.hr and a.key = c.key; +select count(*) from srcpart a join srcpart b on a.key = b.key and a.hr = b.hr join srcpart c on a.hr = c.hr and a.key = c.key; diff --git a/ql/src/test/results/clientpositive/join_merge_multi_expressions.q.out b/ql/src/test/results/clientpositive/join_merge_multi_expressions.q.out new file mode 100644 index 000000000000..b3f1e09e006c --- /dev/null +++ b/ql/src/test/results/clientpositive/join_merge_multi_expressions.q.out @@ -0,0 +1,121 @@ +PREHOOK: query: explain +select count(*) from srcpart a join srcpart b on a.key = b.key and a.hr = b.hr join srcpart c on a.hr = c.hr and a.key = c.key +PREHOOK: type: QUERY +POSTHOOK: query: explain +select count(*) from srcpart a join srcpart b on a.key = b.key and a.hr = b.hr join srcpart c on a.hr = c.hr and a.key = c.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string), hr (type: string) + sort order: ++ + Map-reduce partition columns: key (type: string), hr (type: string) + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + TableScan + alias: c + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string), hr (type: string) + sort order: ++ + Map-reduce partition columns: key (type: string), hr (type: string) + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + TableScan + alias: a + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string), hr (type: string) + sort order: ++ + Map-reduce partition columns: key (type: string), hr (type: string) + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + condition expressions: + 0 + 1 + 2 + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE + Select Operator + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: bigint) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select count(*) from srcpart a join srcpart b on a.key = b.key and a.hr = b.hr join srcpart c on a.hr = c.hr and a.key = c.key +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from srcpart a join srcpart b on a.key = b.key and a.hr = b.hr join srcpart c on a.hr = c.hr and a.key = c.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +#### A masked pattern was here #### +42464 From 4717a178df0087ab68533a2fc6ada96dca3f1dda Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Tue, 30 Sep 2014 18:05:06 +0000 Subject: [PATCH 033/339] HIVE-8196: Joining on partition columns with fetch column stats enabled results it very small CE which negatively affects query performance (Prasanth J reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628504 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/optimizer/optiq/RelOptHiveTable.java | 23 +- .../hadoop/hive/ql/stats/StatsUtils.java | 117 +++-- .../clientpositive/annotate_stats_part.q | 3 + .../limit_partition_stats.q.out | 14 +- .../alter_partition_coltype.q.out | Bin 46757 -> 46673 bytes .../clientpositive/annotate_stats_part.q.out | 69 ++- .../auto_sortmerge_join_12.q.out | 2 +- .../results/clientpositive/combine2.q.out | 28 +- .../dynpart_sort_opt_vectorization.q.out | 28 +- .../clientpositive/groupby_sort_11.q.out | 14 +- .../test/results/clientpositive/input24.q.out | 14 +- .../limit_partition_metadataonly.q.out | 18 +- .../list_bucket_query_multiskew_3.q.out | 14 +- .../clientpositive/metadataonly1.q.out | Bin 81891 -> 81645 bytes .../results/clientpositive/nullgroup3.q.out | 56 +-- .../clientpositive/ppd_constant_where.q.out | 14 +- .../results/clientpositive/regex_col.q.out | 12 +- .../test/results/clientpositive/stats10.q.out | 2 +- .../test/results/clientpositive/stats12.q.out | Bin 17447 -> 17443 bytes .../test/results/clientpositive/stats13.q.out | Bin 16951 -> 16947 bytes .../test/results/clientpositive/stats2.q.out | 2 +- .../test/results/clientpositive/stats7.q.out | 2 +- .../test/results/clientpositive/stats8.q.out | 10 +- .../tez/auto_sortmerge_join_12.q.out | 4 +- .../tez/dynamic_partition_pruning.q.out | 467 +++++++++--------- .../tez/dynamic_partition_pruning_2.q.out | 2 +- .../tez/dynpart_sort_opt_vectorization.q.out | 28 +- .../clientpositive/tez/metadataonly1.q.out | Bin 87693 -> 87441 bytes ...vectorized_dynamic_partition_pruning.q.out | 467 +++++++++--------- .../results/clientpositive/union_view.q.out | 114 ++--- 30 files changed, 801 insertions(+), 723 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/RelOptHiveTable.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/RelOptHiveTable.java index e699c871e301..080d27fa873f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/RelOptHiveTable.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/RelOptHiveTable.java @@ -257,19 +257,20 @@ private void updateColStats(Set projIndxLst) { } colNamesFailedStats.clear(); } else { - Statistics stats = StatsUtils.collectStatistics(hiveConf, partitionList, - hiveTblMetadata, hiveNonPartitionCols, nonPartColNamesThatRqrStats, true, true); - rowCount = stats.getNumRows(); - hiveColStats = new ArrayList(); - for (String c : nonPartColNamesThatRqrStats) { - ColStatistics cs = stats.getColumnStatisticsFromColName(c); - if (cs != null) { - hiveColStats.add(cs); - } else { - colNamesFailedStats.add(c); + Statistics stats = StatsUtils.collectStatistics(hiveConf, partitionList, + hiveTblMetadata, hiveNonPartitionCols, nonPartColNamesThatRqrStats, + nonPartColNamesThatRqrStats, true, true); + rowCount = stats.getNumRows(); + hiveColStats = new ArrayList(); + for (String c : nonPartColNamesThatRqrStats) { + ColStatistics cs = stats.getColumnStatisticsFromColName(c); + if (cs != null) { + hiveColStats.add(cs); + } else { + colNamesFailedStats.add(c); + } } } - } } catch (HiveException e) { String logMsg = "Collecting stats failed."; LOG.error(logMsg); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java index 2b3ce4c21cfe..5143fbe99bb4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java @@ -18,8 +18,15 @@ package org.apache.hadoop.hive.ql.stats; -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.FileSystem; @@ -80,14 +87,8 @@ import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableTimestampObjectInspector; import org.apache.hadoop.io.BytesWritable; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; public class StatsUtils { @@ -113,24 +114,28 @@ public static Statistics collectStatistics(HiveConf conf, PrunedPartitionList pa // column level statistics are required only for the columns that are needed List schema = tableScanOperator.getSchema().getSignature(); List neededColumns = tableScanOperator.getNeededColumns(); + List referencedColumns = tableScanOperator.getReferencedColumns(); - return collectStatistics(conf, partList, table, schema, neededColumns); + return collectStatistics(conf, partList, table, schema, neededColumns, referencedColumns); } private static Statistics collectStatistics(HiveConf conf, PrunedPartitionList partList, - Table table, List schema, List neededColumns) throws HiveException { + Table table, List schema, List neededColumns, + List referencedColumns) throws HiveException { boolean fetchColStats = HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_STATS_FETCH_COLUMN_STATS); boolean fetchPartStats = HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_STATS_FETCH_PARTITION_STATS); - return collectStatistics(conf, partList, table, schema, neededColumns, fetchColStats, fetchPartStats); + return collectStatistics(conf, partList, table, schema, neededColumns, referencedColumns, + fetchColStats, fetchPartStats); } public static Statistics collectStatistics(HiveConf conf, PrunedPartitionList partList, Table table, List schema, List neededColumns, - boolean fetchColStats, boolean fetchPartStats) throws HiveException { + List referencedColumns, boolean fetchColStats, boolean fetchPartStats) + throws HiveException { Statistics stats = new Statistics(); @@ -223,7 +228,6 @@ public static Statistics collectStatistics(HiveConf conf, PrunedPartitionList pa stats.getBasicStatsState().equals(State.COMPLETE)) { stats.setBasicStatsState(State.PARTIAL); } - boolean haveFullStats = fetchColStats; if (fetchColStats) { List partNames = new ArrayList(partList.getNotDeniedPartns().size()); for (Partition part : partList.getNotDeniedPartns()) { @@ -231,37 +235,84 @@ public static Statistics collectStatistics(HiveConf conf, PrunedPartitionList pa } Map colToTabAlias = new HashMap(); neededColumns = processNeededColumns(schema, neededColumns, colToTabAlias); - AggrStats aggrStats = Hive.get().getAggrColStatsFor(table.getDbName(), table.getTableName(), neededColumns, partNames); + AggrStats aggrStats = Hive.get().getAggrColStatsFor(table.getDbName(), table.getTableName(), + neededColumns, partNames); if (null == aggrStats) { - haveFullStats = false; + // There are some partitions with no state (or we didn't fetch any state). + // Update the stats with empty list to reflect that in the + // state/initialize structures. + List emptyStats = Lists.newArrayList(); + + // add partition column stats + addParitionColumnStats(neededColumns, referencedColumns, schema, table, partList, + emptyStats); + + stats.addToColumnStats(emptyStats); + stats.updateColumnStatsState(deriveStatType(emptyStats, referencedColumns)); } else { List colStats = aggrStats.getColStats(); if (colStats.size() != neededColumns.size()) { - LOG.debug("Column stats requested for : " + neededColumns.size() + " columns. Able to retrieve" - + " for " + colStats.size() + " columns"); + LOG.debug("Column stats requested for : " + neededColumns.size() + " columns. Able to" + + " retrieve for " + colStats.size() + " columns"); } - List columnStats = convertColStats(colStats, table.getTableName(), colToTabAlias); + List columnStats = convertColStats(colStats, table.getTableName(), + colToTabAlias); + + addParitionColumnStats(neededColumns, referencedColumns, schema, table, partList, + columnStats); + stats.addToColumnStats(columnStats); - State colState = deriveStatType(columnStats, neededColumns); + State colState = deriveStatType(columnStats, referencedColumns); if (aggrStats.getPartsFound() != partNames.size() && colState != State.NONE) { - LOG.debug("Column stats requested for : " + partNames.size() +" partitions. " - + "Able to retrieve for " + aggrStats.getPartsFound() + " partitions"); + LOG.debug("Column stats requested for : " + partNames.size() + " partitions. " + + "Able to retrieve for " + aggrStats.getPartsFound() + " partitions"); colState = State.PARTIAL; } stats.setColumnStatsState(colState); } } - // There are some partitions with no state (or we didn't fetch any state). - // Update the stats with empty list to reflect that in the state/initialize structures. - if (!haveFullStats) { - List emptyStats = Lists.newArrayList(); - stats.addToColumnStats(emptyStats); - stats.updateColumnStatsState(deriveStatType(emptyStats, neededColumns)); - } } return stats; } + private static void addParitionColumnStats(List neededColumns, + List referencedColumns, List schema, Table table, + PrunedPartitionList partList, List colStats) + throws HiveException { + + // extra columns is difference between referenced columns vs needed + // columns. The difference could be partition columns. + List extraCols = Lists.newArrayList(referencedColumns); + if (referencedColumns.size() > neededColumns.size()) { + extraCols.removeAll(neededColumns); + for (String col : extraCols) { + for (ColumnInfo ci : schema) { + // conditions for being partition column + if (col.equals(ci.getInternalName()) && ci.getIsVirtualCol() && + !ci.isHiddenVirtualCol()) { + // currently metastore does not store column stats for + // partition column, so we calculate the NDV from pruned + // partition list + ColStatistics partCS = new ColStatistics(table.getTableName(), + ci.getInternalName(), ci.getType().getTypeName()); + long numPartitions = getNDVPartitionColumn(partList.getPartitions(), + ci.getInternalName()); + partCS.setCountDistint(numPartitions); + colStats.add(partCS); + } + } + } + } + } + + public static int getNDVPartitionColumn(Set partitions, String partColName) { + Set distinctVals = new HashSet(partitions.size()); + for (Partition partition : partitions) { + distinctVals.add(partition.getSpec().get(partColName)); + } + return distinctVals.size(); + } + private static void setUnknownRcDsToAverage( List rowCounts, List dataSizes, int avgRowSize) { if (LOG.isDebugEnabled()) { @@ -1060,10 +1111,8 @@ public static long getTotalSize(Table table) { /** * Get basic stats of table - * @param dbName - * - database name - * @param tabName - * - table name + * @param table + * - table * @param statType * - type of stats * @return value of stats diff --git a/ql/src/test/queries/clientpositive/annotate_stats_part.q b/ql/src/test/queries/clientpositive/annotate_stats_part.q index f25776ad4c5f..fcfe566a99d0 100644 --- a/ql/src/test/queries/clientpositive/annotate_stats_part.q +++ b/ql/src/test/queries/clientpositive/annotate_stats_part.q @@ -65,6 +65,9 @@ explain select zip from loc_orc; -- basicStatState: COMPLETE colStatState: PARTIAL explain select state from loc_orc; +-- basicStatState: COMPLETE colStatState: COMPLETE +explain select year from loc_orc; + -- column statistics for __HIVE_DEFAULT_PARTITION__ is not supported yet. Hence colStatState reports PARTIAL -- basicStatState: COMPLETE colStatState: PARTIAL explain select state,locid from loc_orc; diff --git a/ql/src/test/results/clientnegative/limit_partition_stats.q.out b/ql/src/test/results/clientnegative/limit_partition_stats.q.out index 6ecf5b7e05a4..b41235806974 100644 --- a/ql/src/test/results/clientnegative/limit_partition_stats.q.out +++ b/ql/src/test/results/clientnegative/limit_partition_stats.q.out @@ -64,31 +64,31 @@ STAGE PLANS: Map Operator Tree: TableScan alias: part - Statistics: Num rows: 2000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 4000 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 2000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 4000 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/alter_partition_coltype.q.out b/ql/src/test/results/clientpositive/alter_partition_coltype.q.out index fa943ba54e41536fda23305f34e502f90203680f..8fa65cb53d3f7c3b970772ab22f2b20ca2280e13 100644 GIT binary patch delta 279 zcmZ4bmg(XfrVR!nlVfZ6Cx-`yPL8d0pZq=WI+%Y}bUK(`qs_5-fwd^(<`p4TOq=sUYPMUf00b|Y0AG|`?z*_K|3wH2R4iXI4NSU_TH#s600Qu2zHvj+t delta 303 zcmcckhH2?rrVR!n?9Tqa0Y0uFllcP^C;t*QgY(adJcY9-1}%oMHz!zYGHy-?sbbpv zPqKgyCOo-N;|PqsnLmz+5zcXN_h;VRqq~wDCIYl+I-HH$7C|n!B0OfF;e@Lq&RDSH XpK`!;;W68vdGeLyX`6p0MFax??0;m0 diff --git a/ql/src/test/results/clientpositive/annotate_stats_part.q.out b/ql/src/test/results/clientpositive/annotate_stats_part.q.out index 61a36626df1c..d2e9ed1ddcdd 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_part.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_part.q.out @@ -56,11 +56,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: PARTIAL ListSink PREHOOK: query: insert overwrite table loc_orc partition(year) select * from loc_staging @@ -98,11 +98,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 5 Data size: 722 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 5 Data size: 722 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- partition level analyze statistics for specific parition @@ -135,11 +135,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 2 Data size: 323 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 323 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 2 Data size: 323 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 323 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- basicStatState: PARTIAL colStatState: NONE @@ -158,11 +158,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 9 Data size: 722 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 9 Data size: 722 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: NONE @@ -181,11 +181,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- partition level analyze statistics for all partitions @@ -222,11 +222,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: NONE @@ -245,11 +245,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: NONE @@ -268,11 +268,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- both partitions will be pruned @@ -293,14 +293,14 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: PARTIAL Filter Operator predicate: ((year = '2001') and (year = '__HIVE_DEFAULT_PARTITION__')) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), '__HIVE_DEFAULT_PARTITION__' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: PARTIAL ListSink PREHOOK: query: -- partition level partial column statistics @@ -361,6 +361,29 @@ STAGE PLANS: Statistics: Num rows: 8 Data size: 688 Basic stats: COMPLETE Column stats: PARTIAL ListSink +PREHOOK: query: -- basicStatState: COMPLETE colStatState: COMPLETE +explain select year from loc_orc +PREHOOK: type: QUERY +POSTHOOK: query: -- basicStatState: COMPLETE colStatState: COMPLETE +explain select year from loc_orc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: loc_orc + Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: year (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 8 Data size: 1472 Basic stats: COMPLETE Column stats: COMPLETE + ListSink + PREHOOK: query: -- column statistics for __HIVE_DEFAULT_PARTITION__ is not supported yet. Hence colStatState reports PARTIAL -- basicStatState: COMPLETE colStatState: PARTIAL explain select state,locid from loc_orc @@ -512,7 +535,7 @@ STAGE PLANS: Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (locid > 0) (type: boolean) - Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: locid (type: int), year (type: string) outputColumnNames: _col0, _col1 @@ -548,14 +571,14 @@ STAGE PLANS: Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (locid > 0) (type: boolean) - Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: locid (type: int), year (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/auto_sortmerge_join_12.q.out b/ql/src/test/results/clientpositive/auto_sortmerge_join_12.q.out index eaf6c154188e..3c30a315d902 100644 --- a/ql/src/test/results/clientpositive/auto_sortmerge_join_12.q.out +++ b/ql/src/test/results/clientpositive/auto_sortmerge_join_12.q.out @@ -407,7 +407,7 @@ STAGE PLANS: d TableScan alias: d - Statistics: Num rows: 0 Data size: 170 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 170 Basic stats: PARTIAL Column stats: NONE GatherStats: false HashTable Sink Operator condition expressions: diff --git a/ql/src/test/results/clientpositive/combine2.q.out b/ql/src/test/results/clientpositive/combine2.q.out index 43b2498ab9bf..9da953c1a400 100644 --- a/ql/src/test/results/clientpositive/combine2.q.out +++ b/ql/src/test/results/clientpositive/combine2.q.out @@ -185,18 +185,18 @@ STAGE PLANS: Map Operator Tree: TableScan alias: combine2 - Statistics: Num rows: 12 Data size: 14 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 12 Data size: 14 Basic stats: COMPLETE Column stats: NONE GatherStats: false Select Operator - Statistics: Num rows: 12 Data size: 14 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 12 Data size: 14 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE tag: -1 value expressions: _col0 (type: bigint) auto parallelism: false @@ -578,17 +578,17 @@ STAGE PLANS: aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false GlobalTableId: 0 #### A masked pattern was here #### NumFilesPerFileSink: 1 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE #### A masked pattern was here #### table: input format: org.apache.hadoop.mapred.TextInputFormat @@ -652,22 +652,22 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: ds (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -675,14 +675,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out b/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out index 09a57efe2fa6..f2c42ae77e45 100644 --- a/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out +++ b/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out @@ -2265,31 +2265,31 @@ STAGE PLANS: Map Operator Tree: TableScan alias: over1k_part_buck_sort2_orc - Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -2483,31 +2483,31 @@ STAGE PLANS: Map Operator Tree: TableScan alias: over1k_part_buck_sort2_orc - Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/groupby_sort_11.q.out b/ql/src/test/results/clientpositive/groupby_sort_11.q.out index 0f809bcab6ab..a17585233907 100644 --- a/ql/src/test/results/clientpositive/groupby_sort_11.q.out +++ b/ql/src/test/results/clientpositive/groupby_sort_11.q.out @@ -388,32 +388,32 @@ STAGE PLANS: Map Operator Tree: TableScan alias: t1 - Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(DISTINCT 1) keys: 1 (type: int) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + - Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Group By Operator aggregations: count(DISTINCT KEY._col0:0._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/input24.q.out b/ql/src/test/results/clientpositive/input24.q.out index 4e20be66f456..75689b388e5a 100644 --- a/ql/src/test/results/clientpositive/input24.q.out +++ b/ql/src/test/results/clientpositive/input24.q.out @@ -29,31 +29,31 @@ STAGE PLANS: Map Operator Tree: TableScan alias: x - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Group By Operator aggregations: count(1) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out b/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out index 96f4835664a6..354d440997cf 100644 --- a/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out +++ b/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out @@ -12,11 +12,11 @@ STAGE PLANS: Processor Tree: TableScan alias: srcpart - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: select ds from srcpart where hr=11 and ds='2008-04-08' @@ -543,34 +543,34 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: hr (type: string) outputColumnNames: hr - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: hr (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out b/ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out index b8fe43075bed..0e4741791a4d 100644 --- a/ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out +++ b/ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out @@ -424,18 +424,18 @@ STAGE PLANS: Map Operator Tree: TableScan alias: fact_daily - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE GatherStats: false Select Operator - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE tag: -1 value expressions: _col0 (type: bigint) auto parallelism: false @@ -496,17 +496,17 @@ STAGE PLANS: aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false GlobalTableId: 0 #### A masked pattern was here #### NumFilesPerFileSink: 1 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE #### A masked pattern was here #### table: input format: org.apache.hadoop.mapred.TextInputFormat diff --git a/ql/src/test/results/clientpositive/metadataonly1.q.out b/ql/src/test/results/clientpositive/metadataonly1.q.out index b90cb982485593903cde214f27f390df5e9bc1d1..a7dc080b5f1c33b212e302ce85203a4f4632bc13 100644 GIT binary patch delta 1055 zcmaF-pXKdemJKIaCf7IePd>ZdcCx^H-pLQ7@_~H8$#V_PPtIpm1F~5+C-*rpPQI@r zzWIXtFUHCF|J^p*a~%e06Plc#B{$hXWeZr#fBqX_`u!2z$qi~elcTK7p+*Q!_V;6( zq%Jl2wY9?J3t3{56*yQX_q|HkEdBZ(+h%>q5JsRz(%g_aIo{L;=oXR5{ahxS7bwIq zV{wnsy6lK%z)bV1xQ0| z+I+$DFi0hZVQjm3e`pOq&>a5BeyIn+w)D)=p6s7C1;pN**K`FOwUZ0{**3?wSTk-` z$;t%91~3J*u}@x^y%@*_IU!{7zvl{*{j7N=Cma=+t|7oEH(4Mz6{c|W#N6Y0P?d7i z3wRk%gJu5nBVu6f+-G31_eX-JKQL$HpZ=Dg@hDgXoHkM>|6jnjIeJ07I8Y3f6fT10 z<{BKFT<}~U$OeUqEaUe1R*Z+4CNG%5I$7cIjOlwh8C5s??JI#t2d3S8N5C<^`TY@o zh`-=TQGB!4F%H7kc{6QZ^XN0&1~QZT=Dt@OA<;l|PTQRS|12-i=in58=`m2UCL&N- dr^g8~3Qo^5WqdUG`~uVMK%S8*!7z4V1psjU#Pk3F delta 1294 zcmaF+m*w$)mJKIa*q!}-1AJUVCiC|=P3B{5hVugq?o2LVQ|ExnyH4I{V7!^XkB@P3 zz%I7U4YGkulecrJOt)uYl-yjv)rK(WVz%z&fI~Ku9aJjdhFzHBFj-b$8JxfI#S(@lGkNa3`RIWLiaM|9`GSnB zlM|M+O@D2|C_UM4x%A}uTOFs{3o@F5M7KA{Gu~p`?6>?HKg>F4USJ2>Fa<6aU~qo& z{A_)M6~HK-%-{EV`$|j3!%Wlb?HE}%zu#lX3fF+wBhC% zM>)jdra;m?@lNq(+WhX}XF^F1e-y)Wquvi|V8T~H4;bPLi4vyG|Nf=$!hM4lCKSi3 X*z^Vy#z)(Maha|Pw}jLnb72Jl%bn7u diff --git a/ql/src/test/results/clientpositive/nullgroup3.q.out b/ql/src/test/results/clientpositive/nullgroup3.q.out index 81252e4f1480..54657a83a752 100644 --- a/ql/src/test/results/clientpositive/nullgroup3.q.out +++ b/ql/src/test/results/clientpositive/nullgroup3.q.out @@ -40,31 +40,31 @@ STAGE PLANS: Map Operator Tree: TableScan alias: tstparttbl - Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: NONE Select Operator - Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: NONE Group By Operator aggregations: count(1) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -131,31 +131,31 @@ STAGE PLANS: Map Operator Tree: TableScan alias: tstparttbl2 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Group By Operator aggregations: count(1) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -230,31 +230,31 @@ STAGE PLANS: Map Operator Tree: TableScan alias: tstparttbl - Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: NONE Select Operator - Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 5812 Basic stats: PARTIAL Column stats: NONE Group By Operator aggregations: count(1) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -329,31 +329,31 @@ STAGE PLANS: Map Operator Tree: TableScan alias: tstparttbl2 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Group By Operator aggregations: count(1) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/ppd_constant_where.q.out b/ql/src/test/results/clientpositive/ppd_constant_where.q.out index 419c5f7e676a..7b6d1a26d354 100644 --- a/ql/src/test/results/clientpositive/ppd_constant_where.q.out +++ b/ql/src/test/results/clientpositive/ppd_constant_where.q.out @@ -16,31 +16,31 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/regex_col.q.out b/ql/src/test/results/clientpositive/regex_col.q.out index 746a5090b792..c42ba6604773 100644 --- a/ql/src/test/results/clientpositive/regex_col.q.out +++ b/ql/src/test/results/clientpositive/regex_col.q.out @@ -37,11 +37,11 @@ STAGE PLANS: Processor Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string), hr (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 2000 Data size: 736000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: EXPLAIN @@ -60,11 +60,11 @@ STAGE PLANS: Processor Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string), hr (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 2000 Data size: 736000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: EXPLAIN @@ -297,11 +297,11 @@ STAGE PLANS: Processor Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: EXPLAIN diff --git a/ql/src/test/results/clientpositive/stats10.q.out b/ql/src/test/results/clientpositive/stats10.q.out index f5bdba1303be..804e1b8a3a1e 100644 --- a/ql/src/test/results/clientpositive/stats10.q.out +++ b/ql/src/test/results/clientpositive/stats10.q.out @@ -373,7 +373,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: bucket3_1 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Stage: Stage-1 Stats-Aggr Operator diff --git a/ql/src/test/results/clientpositive/stats12.q.out b/ql/src/test/results/clientpositive/stats12.q.out index 2588380febd9a5f51f1bc2ac878130a80e7cd582..e888518a7cddef44084a824bf0cba8567f0c265f 100644 GIT binary patch delta 18 ZcmZ49!MM1Caf2E!v!B1;W?kN2W&k~621@_{ delta 27 jcmZ47!MMDGaf2E!hqJ$LfRAg4>*TXM;+q|LADICFfZGW@ diff --git a/ql/src/test/results/clientpositive/stats13.q.out b/ql/src/test/results/clientpositive/stats13.q.out index f72e3108357ef96c584acc9d74eea3809a956dbe..94f954150aa5c31ed6eec030a3c71bfafc024404 100644 GIT binary patch delta 18 Zcmdnq!nnDGaf3B4v!B1;W+&dSCICPs28I9t delta 22 dcmdno!nnPKaf3B4yR*M Alias: diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out index 4caebd557857..c5effa0e88e2 100644 --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out @@ -56,35 +56,35 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col0 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 1000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -207,12 +207,12 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -327,12 +327,12 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -449,12 +449,12 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE value expressions: hr (type: string) Map 5 Map Operator Tree: @@ -621,12 +621,12 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: (ds is not null and hr is not null) (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE value expressions: hr (type: string) Map 5 Map Operator Tree: @@ -772,12 +772,12 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string), hr (type: string) sort order: ++ Map-reduce partition columns: ds (type: string), hr (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -907,12 +907,12 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: (ds is not null and hr is not null) (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string), hr (type: string) sort order: ++ Map-reduce partition columns: ds (type: string), hr (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -1025,12 +1025,12 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -1145,12 +1145,12 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -1261,15 +1261,15 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: UDFToDouble(hr) is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: UDFToDouble(hr) is not null (type: boolean) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: UDFToDouble(hr) (type: double) sort order: + Map-reduce partition columns: UDFToDouble(hr) (type: double) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -1307,9 +1307,9 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -1384,15 +1384,15 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: (hr * 2) is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (hr * 2) is not null (type: boolean) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: (hr * 2) (type: double) sort order: + Map-reduce partition columns: (hr * 2) (type: double) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -1430,9 +1430,9 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -1507,15 +1507,15 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: UDFToDouble(hr) is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: UDFToDouble(hr) is not null (type: boolean) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: UDFToDouble(hr) (type: double) sort order: + Map-reduce partition columns: UDFToDouble(hr) (type: double) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -1538,9 +1538,9 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -1615,15 +1615,15 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: (hr * 2) is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (hr * 2) is not null (type: boolean) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: (hr * 2) (type: double) sort order: + Map-reduce partition columns: (hr * 2) (type: double) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -1646,9 +1646,9 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -1736,15 +1736,15 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: UDFToString((hr * 2)) is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: UDFToString((hr * 2)) is not null (type: boolean) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: UDFToString((hr * 2)) (type: string) sort order: + Map-reduce partition columns: UDFToString((hr * 2)) (type: string) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -1782,9 +1782,9 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -1875,25 +1875,25 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Dynamic Partitioning Event Operator Target Input: srcpart Partition key expr: ds - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Target column: ds Target Vertex: Map 4 Map 4 @@ -1901,21 +1901,21 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: (ds is not null and (ds = '2008-04-08')) (type: boolean) - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Merge Join Operator @@ -1924,17 +1924,17 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reducer 3 Reduce Operator Tree: @@ -1942,14 +1942,14 @@ STAGE PLANS: aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -1960,16 +1960,16 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Stage: Stage-0 Fetch Operator @@ -2030,10 +2030,10 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE value expressions: ds (type: string), hr (type: string) Map 4 Map Operator Tree: @@ -2139,12 +2139,12 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string), hr (type: string) sort order: ++ Map-reduce partition columns: ds (type: string), hr (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -2279,12 +2279,12 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -2365,12 +2365,12 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -2467,12 +2467,12 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -2559,12 +2559,12 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: (hr = 11) (type: boolean) - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE value expressions: hr (type: string) Map 5 Map Operator Tree: @@ -2846,48 +2846,48 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: min(ds) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Map 6 Map Operator Tree: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 7 Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: max(ds) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Reducer 2 Reduce Operator Tree: @@ -2931,17 +2931,17 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reducer 5 Reduce Operator Tree: @@ -2949,14 +2949,14 @@ STAGE PLANS: aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -3043,48 +3043,48 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: min(ds) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Map 6 Map Operator Tree: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 7 Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: max(ds) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Reducer 2 Reduce Operator Tree: @@ -3129,35 +3129,35 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col2 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col2 (type: string) outputColumnNames: _col2 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col2 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Reducer 5 Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -3246,78 +3246,78 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: min(ds) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Map 10 Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: max(ds) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Map 5 Map Operator Tree: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 8 Map Operator Tree: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: ds (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1000 Data size: 184000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reducer 11 Reduce Operator Tree: Group By Operator @@ -3419,14 +3419,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 168000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 168000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 2000 Data size: 168000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -3511,7 +3511,7 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -3645,7 +3645,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -3821,7 +3821,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -3967,7 +3967,7 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -4074,10 +4074,10 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: UDFToDouble(hr) is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: UDFToDouble(hr) is not null (type: boolean) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -4089,9 +4089,9 @@ STAGE PLANS: 1 UDFToDouble(UDFToInteger((hr / 2))) (type: double) input vertices: 1 Map 3 - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -4195,10 +4195,10 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: (hr * 2) is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (hr * 2) is not null (type: boolean) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -4210,9 +4210,9 @@ STAGE PLANS: 1 hr (type: double) input vertices: 1 Map 3 - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -4322,8 +4322,9 @@ STAGE PLANS: Stage: Stage-1 Tez Edges: - Reducer 3 <- Map 1 (BROADCAST_EDGE), Map 2 (SIMPLE_EDGE) - Reducer 4 <- Reducer 3 (SIMPLE_EDGE) + Map 1 <- Reducer 4 (BROADCAST_EDGE) + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 4 <- Map 3 (SIMPLE_EDGE) #### A masked pattern was here #### Vertices: Map 1 @@ -4331,58 +4332,7 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE - Reduce Output Operator - key expressions: ds (type: string) - sort order: + - Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE - Select Operator - expressions: ds (type: string) - outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE - Group By Operator - keys: _col0 (type: string) - mode: hash - outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE - Dynamic Partitioning Event Operator - Target Input: srcpart - Partition key expr: ds - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE - Target column: ds - Target Vertex: Map 2 - Map 2 - Map Operator Tree: - TableScan - alias: srcpart - filterExpr: (ds is not null and (ds = '2008-04-08')) (type: boolean) - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: COMPLETE - Select Operator - expressions: ds (type: string) - outputColumnNames: ds - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: COMPLETE - Group By Operator - keys: ds (type: string) - mode: hash - outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE - Reduce Output Operator - key expressions: _col0 (type: string) - sort order: + - Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE - Reducer 3 - Reduce Operator Tree: - Group By Operator - keys: KEY._col0 (type: string) - mode: mergepartial - outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE - Select Operator - expressions: _col0 (type: string) - outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 92000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -4393,37 +4343,88 @@ STAGE PLANS: 0 ds (type: string) 1 _col0 (type: string) input vertices: - 0 Map 1 - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + 1 Reducer 4 + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) - Reducer 4 + Map 3 + Map Operator Tree: + TableScan + alias: srcpart + filterExpr: (ds is not null and (ds = '2008-04-08')) (type: boolean) + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ds (type: string) + outputColumnNames: ds + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ds (type: string) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Reducer 2 Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 4 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: _col0 (type: string) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Dynamic Partitioning Event Operator + Target Input: srcpart + Partition key expr: ds + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Target column: ds + Target Vertex: Map 1 Stage: Stage-0 Fetch Operator @@ -4483,7 +4484,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Left Outer Join0 to 1 @@ -4567,12 +4568,12 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 2 Map Operator Tree: TableScan @@ -4652,12 +4653,12 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: ds (type: string) sort order: + Map-reduce partition columns: ds (type: string) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan @@ -4743,7 +4744,7 @@ STAGE PLANS: TableScan alias: srcpart filterExpr: (hr = 11) (type: boolean) - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -4984,26 +4985,26 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: min(ds) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Map 4 Map Operator Tree: TableScan alias: srcpart filterExpr: ds is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Left Semi Join 0 to 1 @@ -5016,38 +5017,38 @@ STAGE PLANS: outputColumnNames: _col2 input vertices: 1 Union 3 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col2 (type: string) outputColumnNames: _col2 - Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col2 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE Map 6 Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ds (type: string) outputColumnNames: ds - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: max(ds) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Reducer 2 Reduce Operator Tree: @@ -5089,14 +5090,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -5220,10 +5221,10 @@ STAGE PLANS: TableScan alias: srcpart_orc filterExpr: UDFToDouble(hr) is not null (type: boolean) - Statistics: Num rows: 2000 Data size: 188000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 188000 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: UDFToDouble(hr) is not null (type: boolean) - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 94000 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -5235,9 +5236,9 @@ STAGE PLANS: 1 ds (type: string), UDFToDouble(hr) (type: double) input vertices: 1 Map 3 - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 103400 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 1100 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 1100 Data size: 103400 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out index 43d08e52bb9c..ef1109598973 100644 --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out @@ -491,7 +491,7 @@ STAGE PLANS: TableScan alias: agg filterExpr: dim_shops_id is not null (type: boolean) - Statistics: Num rows: 9 Data size: 27 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 9 Data size: 27 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out index bbe0250511e5..ed42e670d436 100644 --- a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out @@ -2370,17 +2370,17 @@ STAGE PLANS: Map Operator Tree: TableScan alias: over1k_part_buck_sort2_orc - Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reducer 2 Reduce Operator Tree: @@ -2388,14 +2388,14 @@ STAGE PLANS: aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -2593,17 +2593,17 @@ STAGE PLANS: Map Operator Tree: TableScan alias: over1k_part_buck_sort2_orc - Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 19 Data size: 493 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: bigint) Reducer 2 Reduce Operator Tree: @@ -2611,14 +2611,14 @@ STAGE PLANS: aggregations: count(VALUE._col0) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + 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: COMPLETE + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/tez/metadataonly1.q.out b/ql/src/test/results/clientpositive/tez/metadataonly1.q.out index 359884a9c24f599da766b0370c84281c54f8529a..cd038c8b04e8edf9c582019cd8622cffaebed759 100644 GIT binary patch delta 1123 zcmb_bT}YEr80IX${M<6;bon!Db8DJxHjC7W3ua!Y^bON%S+Nn+l=M_w8GyHyLOx=CksNK{=}OGDu0S%?b1bl>wjP3sn!S+3BIbE&)6t7Y zQi0)8GhGN03w{{tVcQ>O>xLIa>g8qQM}AhLud@~VOfwu?Fm!BCBebA9(~d;wEV5|_ z^Sft6+`cUHrfnI<8$73scODbIGZ^k@Le@~iJkGWqnC(8ULdRY4>dAgdd^!Ju=U`FqiCADucZbvTS zR|}RGxR{41d(wZI%!E!dY>iF+PhTmO_ zqet|JO_kESBB_Gjy^CePS@I@q!#DE=opP;_d?{6Q+91Y1#6~9FMneIzlg>McfqDXD yosI-Z5q7&p#3~LV{8&)yGOxdFIs3InOx>b(mH9_W?xK$ec4vRz03X+o$#?dJPQJj}0p|-&_&xc3tQrSY-gWZFf0mp7$!}(! z{DE6#^8{{9gjPq5|1fQv1!GwlVVud0i`*y2$K}KM7vt7Wp77m%^1688>Fbpkl{YUC zk>!NT66pd54!8~^izf@l`b<7x!asSQ<`cMl5} zbQ#;^B*)Egd2q-$<-z$Ez^x4e$dV_Ik9~eQ97h1`*-XmQe{mi=jO=H4PtQTIcii-Um?pl8!iA# zj|~g|!NfK Date: Tue, 30 Sep 2014 18:34:55 +0000 Subject: [PATCH 034/339] HIVE-7857: Hive query fails after Tez session times out (Vikram Dixit K, reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628511 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/tez/TezJobMonitor.java | 2 +- .../hive/ql/exec/tez/TezSessionPoolManager.java | 14 +++++++------- .../apache/hadoop/hive/ql/exec/tez/TezTask.java | 2 +- .../hadoop/hive/ql/session/SessionState.java | 2 +- .../hive/ql/exec/tez/TestTezSessionPool.java | 4 ++-- .../hadoop/hive/ql/exec/tez/TestTezTask.java | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java index ec71c7204a32..48c6b6add0cb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java @@ -78,7 +78,7 @@ public void run() { try { for (TezSessionState s: TezSessionState.getOpenSessions()) { System.err.println("Shutting down tez session."); - TezSessionPoolManager.getInstance().close(s); + TezSessionPoolManager.getInstance().close(s, false); } } catch (Exception e) { // ignore diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java index 7487253c4c73..a4fd36d029d0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java @@ -168,10 +168,10 @@ public void returnSession(TezSessionState tezSessionState) // session in the SessionState } - public void close(TezSessionState tezSessionState) throws Exception { + public void close(TezSessionState tezSessionState, boolean keepTmpDir) throws Exception { LOG.info("Closing tez session default? " + tezSessionState.isDefault()); if (!tezSessionState.isDefault()) { - tezSessionState.close(false); + tezSessionState.close(keepTmpDir); } } @@ -262,24 +262,24 @@ public TezSessionState getSession(TezSessionState session, HiveConf conf, } if (session != null) { - close(session); + close(session, false); } return getSession(conf, doOpen, forceCreate); } - public void closeAndOpen(TezSessionState sessionState, HiveConf conf) + public void closeAndOpen(TezSessionState sessionState, HiveConf conf, boolean keepTmpDir) throws Exception { - closeAndOpen(sessionState, conf, null); + closeAndOpen(sessionState, conf, null, keepTmpDir); } public void closeAndOpen(TezSessionState sessionState, HiveConf conf, - String[] additionalFiles) throws Exception { + String[] additionalFiles, boolean keepTmpDir) throws Exception { HiveConf sessionConf = sessionState.getConf(); if (sessionConf != null && sessionConf.get("tez.queue.name") != null) { conf.set("tez.queue.name", sessionConf.get("tez.queue.name")); } - close(sessionState); + close(sessionState, keepTmpDir); sessionState.open(conf, additionalFiles); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java index 232ff2bba4c0..93e0fac4e0eb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java @@ -370,7 +370,7 @@ DAGClient submit(JobConf conf, DAG dag, Path scratchDir, console.printInfo("Tez session was closed. Reopening..."); // close the old one, but keep the tmp files around - TezSessionPoolManager.getInstance().closeAndOpen(sessionState, this.conf, inputOutputJars); + TezSessionPoolManager.getInstance().closeAndOpen(sessionState, this.conf, inputOutputJars, true); console.printInfo("Session re-established."); dagClient = sessionState.getSession().submitDAG(dag); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index eca41264b094..af633cbdfe16 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -1245,7 +1245,7 @@ public void close() throws IOException { try { if (tezSessionState != null) { - TezSessionPoolManager.getInstance().close(tezSessionState); + TezSessionPoolManager.getInstance().close(tezSessionState, false); } } catch (Exception e) { LOG.info("Error closing tez session", e); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionPool.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionPool.java index c522687c7c90..c6ac55743604 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionPool.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionPool.java @@ -165,7 +165,7 @@ public void testCloseAndOpenDefault() throws Exception { TezSessionState session = Mockito.mock(TezSessionState.class); Mockito.when(session.isDefault()).thenReturn(false); - poolManager.closeAndOpen(session, conf); + poolManager.closeAndOpen(session, conf, false); Mockito.verify(session).close(false); Mockito.verify(session).open(conf, null); @@ -178,7 +178,7 @@ public void testCloseAndOpenWithResources() throws Exception { Mockito.when(session.isDefault()).thenReturn(false); String[] extraResources = new String[] { "file:///tmp/foo.jar" }; - poolManager.closeAndOpen(session, conf, extraResources); + poolManager.closeAndOpen(session, conf, extraResources, false); Mockito.verify(session).close(false); Mockito.verify(session).open(conf, extraResources); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezTask.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezTask.java index 08c9e16a14ab..d004a2795b7e 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezTask.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezTask.java @@ -214,7 +214,7 @@ public void testSubmit() throws Exception { new String[0], Collections. emptyMap()); // validate close/reopen verify(sessionState, times(1)).open(any(HiveConf.class), any(String[].class)); - verify(sessionState, times(1)).close(eq(false)); // now uses pool after HIVE-7043 + verify(sessionState, times(1)).close(eq(true)); // now uses pool after HIVE-7043 verify(session, times(2)).submitDAG(any(DAG.class)); } From 25331713e4cc67eda4664e8e2b574fec99e0fe62 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Tue, 30 Sep 2014 22:10:19 +0000 Subject: [PATCH 035/339] HIVE-8221 : authorize additional metadata read operations in metastore storage based authorization (Thejas Nair, reviewed by Sushanth Sowmyan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628563 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 2 + .../listener/NotificationListener.java | 2 +- .../metastore/TestMetaStoreEventListener.java | 54 +++--- .../StorageBasedMetastoreTestBase.java | 134 +++++++++++++++ .../TestAuthorizationPreEventListener.java | 45 +++-- .../TestMetastoreAuthorizationProvider.java | 8 + ...estMultiAuthorizationPreEventListener.java | 1 + ...orageBasedMetastoreAuthorizationDrops.java | 156 +++--------------- ...geBasedMetastoreAuthorizationProvider.java | 7 + ...orageBasedMetastoreAuthorizationReads.java | 122 ++++++++++++++ .../hadoop/hive/metastore/HiveMetaStore.java | 152 ++++++++++++----- .../hive/metastore/HiveMetaStoreClient.java | 5 +- .../metastore/events/PreEventContext.java | 2 + .../events/PreReadDatabaseEvent.java | 42 +++++ .../metastore/events/PreReadTableEvent.java | 43 +++++ .../AuthorizationPreEventListener.java | 51 +++++- .../HiveAuthorizationProviderBase.java | 2 +- 17 files changed, 591 insertions(+), 237 deletions(-) create mode 100644 itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/StorageBasedMetastoreTestBase.java create mode 100644 itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationReads.java create mode 100644 metastore/src/java/org/apache/hadoop/hive/metastore/events/PreReadDatabaseEvent.java create mode 100644 metastore/src/java/org/apache/hadoop/hive/metastore/events/PreReadTableEvent.java diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 0aee53010504..b0cb98be1638 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1370,6 +1370,8 @@ public static enum ConfVars { "authorization manager class name to be used in the metastore for authorization.\n" + "The user defined authorization class should implement interface \n" + "org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider. "), + HIVE_METASTORE_AUTHORIZATION_AUTH_READS("hive.security.metastore.authorization.auth.reads", true, + "If this is true, metastore authorizer authorizes read actions on database, table"), HIVE_METASTORE_AUTHENTICATOR_MANAGER("hive.security.metastore.authenticator.manager", "org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator", "authenticator manager class name to be used in the metastore for authentication. \n" + diff --git a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java index 664248d42dcc..a72c6b58bac3 100644 --- a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java +++ b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java @@ -214,7 +214,7 @@ public void onCreateTable(CreateTableEvent tableEvent) throws MetaException { HiveConf conf = handler.getHiveConf(); Table newTbl; try { - newTbl = handler.get_table(tbl.getDbName(), tbl.getTableName()) + newTbl = handler.get_table_core(tbl.getDbName(), tbl.getTableName()) .deepCopy(); newTbl.getParameters().put( HCatConstants.HCAT_MSGBUS_TOPIC_NAME, diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java index 3e4c34a5e8c5..3b5f65f31eeb 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java @@ -193,43 +193,39 @@ public void testListener() throws Exception { driver.run("create database " + dbName); listSize++; + PreCreateDatabaseEvent preDbEvent = (PreCreateDatabaseEvent)(preNotifyList.get(preNotifyList.size() - 1)); Database db = msc.getDatabase(dbName); assertEquals(listSize, notifyList.size()); - assertEquals(listSize, preNotifyList.size()); + assertEquals(listSize + 1, preNotifyList.size()); + validateCreateDb(db, preDbEvent.getDatabase()); CreateDatabaseEvent dbEvent = (CreateDatabaseEvent)(notifyList.get(listSize - 1)); assert dbEvent.getStatus(); validateCreateDb(db, dbEvent.getDatabase()); - PreCreateDatabaseEvent preDbEvent = (PreCreateDatabaseEvent)(preNotifyList.get(listSize - 1)); - validateCreateDb(db, preDbEvent.getDatabase()); driver.run("use " + dbName); driver.run(String.format("create table %s (a string) partitioned by (b string)", tblName)); + PreCreateTableEvent preTblEvent = (PreCreateTableEvent)(preNotifyList.get(preNotifyList.size() - 1)); listSize++; Table tbl = msc.getTable(dbName, tblName); + validateCreateTable(tbl, preTblEvent.getTable()); assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); CreateTableEvent tblEvent = (CreateTableEvent)(notifyList.get(listSize - 1)); assert tblEvent.getStatus(); validateCreateTable(tbl, tblEvent.getTable()); - PreCreateTableEvent preTblEvent = (PreCreateTableEvent)(preNotifyList.get(listSize - 1)); - validateCreateTable(tbl, preTblEvent.getTable()); - driver.run("alter table tmptbl add partition (b='2011')"); listSize++; - Partition part = msc.getPartition("hive2038", "tmptbl", "b=2011"); assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); + PreAddPartitionEvent prePartEvent = (PreAddPartitionEvent)(preNotifyList.get(preNotifyList.size() - 1)); AddPartitionEvent partEvent = (AddPartitionEvent)(notifyList.get(listSize-1)); assert partEvent.getStatus(); + Partition part = msc.getPartition("hive2038", "tmptbl", "b=2011"); validateAddPartition(part, partEvent.getPartitions().get(0)); validateTableInAddPartition(tbl, partEvent.getTable()); - - PreAddPartitionEvent prePartEvent = (PreAddPartitionEvent)(preNotifyList.get(listSize-1)); validateAddPartition(part, prePartEvent.getPartitions().get(0)); // Test adding multiple partitions in a single partition-set, atomically. @@ -254,7 +250,8 @@ public void testListener() throws Exception { driver.run(String.format("alter table %s touch partition (%s)", tblName, "b='2011'")); listSize++; assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); + PreAlterPartitionEvent preAlterPartEvent = + (PreAlterPartitionEvent)preNotifyList.get(preNotifyList.size() - 1); //the partition did not change, // so the new partition should be similar to the original partition @@ -266,40 +263,39 @@ public void testListener() throws Exception { alterPartEvent.getOldPartition().getTableName(), alterPartEvent.getOldPartition().getValues(), alterPartEvent.getNewPartition()); - PreAlterPartitionEvent preAlterPartEvent = - (PreAlterPartitionEvent)preNotifyList.get(listSize - 1); + validateAlterPartition(origP, origP, preAlterPartEvent.getDbName(), preAlterPartEvent.getTableName(), preAlterPartEvent.getNewPartition().getValues(), preAlterPartEvent.getNewPartition()); List part_vals = new ArrayList(); part_vals.add("c=2012"); + int preEventListSize; + preEventListSize = preNotifyList.size() + 1; Partition newPart = msc.appendPartition(dbName, tblName, part_vals); listSize++; assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); + assertEquals(preNotifyList.size(), preEventListSize); AddPartitionEvent appendPartEvent = (AddPartitionEvent)(notifyList.get(listSize-1)); validateAddPartition(newPart, appendPartEvent.getPartitions().get(0)); PreAddPartitionEvent preAppendPartEvent = - (PreAddPartitionEvent)(preNotifyList.get(listSize-1)); + (PreAddPartitionEvent)(preNotifyList.get(preNotifyList.size() - 1)); validateAddPartition(newPart, preAppendPartEvent.getPartitions().get(0)); driver.run(String.format("alter table %s rename to %s", tblName, renamed)); listSize++; assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); + PreAlterTableEvent preAlterTableE = (PreAlterTableEvent) preNotifyList.get(preNotifyList.size() - 1); Table renamedTable = msc.getTable(dbName, renamed); AlterTableEvent alterTableE = (AlterTableEvent) notifyList.get(listSize-1); assert alterTableE.getStatus(); validateAlterTable(tbl, renamedTable, alterTableE.getOldTable(), alterTableE.getNewTable()); - - PreAlterTableEvent preAlterTableE = (PreAlterTableEvent) preNotifyList.get(listSize-1); validateAlterTable(tbl, renamedTable, preAlterTableE.getOldTable(), preAlterTableE.getNewTable()); @@ -307,20 +303,17 @@ public void testListener() throws Exception { driver.run(String.format("alter table %s rename to %s", renamed, tblName)); listSize++; assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); driver.run(String.format("alter table %s ADD COLUMNS (c int)", tblName)); listSize++; assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); + preAlterTableE = (PreAlterTableEvent) preNotifyList.get(preNotifyList.size() - 1); Table altTable = msc.getTable(dbName, tblName); alterTableE = (AlterTableEvent) notifyList.get(listSize-1); assert alterTableE.getStatus(); validateAlterTableColumns(tbl, altTable, alterTableE.getOldTable(), alterTableE.getNewTable()); - - preAlterTableE = (PreAlterTableEvent) preNotifyList.get(listSize-1); validateAlterTableColumns(tbl, altTable, preAlterTableE.getOldTable(), preAlterTableE.getNewTable()); @@ -329,7 +322,6 @@ public void testListener() throws Exception { msc.markPartitionForEvent("hive2038", "tmptbl", kvs, PartitionEventType.LOAD_DONE); listSize++; assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); LoadPartitionDoneEvent partMarkEvent = (LoadPartitionDoneEvent)notifyList.get(listSize - 1); assert partMarkEvent.getStatus(); @@ -337,46 +329,42 @@ public void testListener() throws Exception { partMarkEvent.getPartitionName()); PreLoadPartitionDoneEvent prePartMarkEvent = - (PreLoadPartitionDoneEvent)preNotifyList.get(listSize - 1); + (PreLoadPartitionDoneEvent)preNotifyList.get(preNotifyList.size() - 1); validateLoadPartitionDone("tmptbl", kvs, prePartMarkEvent.getTableName(), prePartMarkEvent.getPartitionName()); driver.run(String.format("alter table %s drop partition (b='2011')", tblName)); listSize++; assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); + PreDropPartitionEvent preDropPart = (PreDropPartitionEvent) preNotifyList.get(preNotifyList + .size() - 1); DropPartitionEvent dropPart = (DropPartitionEvent)notifyList.get(listSize - 1); assert dropPart.getStatus(); validateDropPartition(part, dropPart.getPartition()); validateTableInDropPartition(tbl, dropPart.getTable()); - PreDropPartitionEvent preDropPart = (PreDropPartitionEvent)preNotifyList.get(listSize - 1); validateDropPartition(part, preDropPart.getPartition()); validateTableInDropPartition(tbl, preDropPart.getTable()); driver.run("drop table " + tblName); listSize++; assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); + PreDropTableEvent preDropTbl = (PreDropTableEvent)preNotifyList.get(preNotifyList.size() - 1); DropTableEvent dropTbl = (DropTableEvent)notifyList.get(listSize-1); assert dropTbl.getStatus(); validateDropTable(tbl, dropTbl.getTable()); - - PreDropTableEvent preDropTbl = (PreDropTableEvent)preNotifyList.get(listSize-1); validateDropTable(tbl, preDropTbl.getTable()); driver.run("drop database " + dbName); listSize++; assertEquals(notifyList.size(), listSize); - assertEquals(preNotifyList.size(), listSize); + PreDropDatabaseEvent preDropDB = (PreDropDatabaseEvent)preNotifyList.get(preNotifyList.size() - 1); DropDatabaseEvent dropDB = (DropDatabaseEvent)notifyList.get(listSize-1); assert dropDB.getStatus(); validateDropDb(db, dropDB.getDatabase()); - - PreDropDatabaseEvent preDropDB = (PreDropDatabaseEvent)preNotifyList.get(listSize-1); validateDropDb(db, preDropDB.getDatabase()); SetProcessor.setVariable("metaconf:hive.metastore.try.direct.sql", "false"); diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/StorageBasedMetastoreTestBase.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/StorageBasedMetastoreTestBase.java new file mode 100644 index 000000000000..b59d2e100ee0 --- /dev/null +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/StorageBasedMetastoreTestBase.java @@ -0,0 +1,134 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.security; + +import java.net.URI; +import java.util.ArrayList; +import java.util.List; + +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.fs.permission.FsPermission; +import org.apache.hadoop.hive.cli.CliSessionState; +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; +import org.apache.hadoop.hive.metastore.MetaStoreUtils; +import org.apache.hadoop.hive.metastore.api.Database; +import org.apache.hadoop.hive.ql.Driver; +import org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener; +import org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider; +import org.apache.hadoop.hive.ql.session.SessionState; +import org.apache.hadoop.hive.shims.ShimLoader; +import org.apache.hadoop.security.UserGroupInformation; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; + +/** + * Base class for some storage based authorization test classes + */ +public class StorageBasedMetastoreTestBase { + protected HiveConf clientHiveConf; + protected HiveMetaStoreClient msc; + protected Driver driver; + protected UserGroupInformation ugi; + private static int objNum = 0; + + protected String getAuthorizationProvider(){ + return StorageBasedAuthorizationProvider.class.getName(); + } + + protected HiveConf createHiveConf() throws Exception { + return new HiveConf(this.getClass()); + } + + @Before + public void setUp() throws Exception { + + int port = MetaStoreUtils.findFreePort(); + + // Turn on metastore-side authorization + System.setProperty(HiveConf.ConfVars.METASTORE_PRE_EVENT_LISTENERS.varname, + AuthorizationPreEventListener.class.getName()); + System.setProperty(HiveConf.ConfVars.HIVE_METASTORE_AUTHORIZATION_MANAGER.varname, + getAuthorizationProvider()); + System.setProperty(HiveConf.ConfVars.HIVE_METASTORE_AUTHENTICATOR_MANAGER.varname, + InjectableDummyAuthenticator.class.getName()); + + MetaStoreUtils.startMetaStore(port, ShimLoader.getHadoopThriftAuthBridge()); + + clientHiveConf = createHiveConf(); + + // Turn off client-side authorization + clientHiveConf.setBoolVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED,false); + + clientHiveConf.setVar(HiveConf.ConfVars.METASTOREURIS, "thrift://localhost:" + port); + clientHiveConf.setIntVar(HiveConf.ConfVars.METASTORETHRIFTCONNECTIONRETRIES, 3); + clientHiveConf.set(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY.varname, "false"); + + clientHiveConf.set(HiveConf.ConfVars.PREEXECHOOKS.varname, ""); + clientHiveConf.set(HiveConf.ConfVars.POSTEXECHOOKS.varname, ""); + + ugi = ShimLoader.getHadoopShims().getUGIForConf(clientHiveConf); + + SessionState.start(new CliSessionState(clientHiveConf)); + msc = new HiveMetaStoreClient(clientHiveConf, null); + driver = new Driver(clientHiveConf); + + setupFakeUser(); + InjectableDummyAuthenticator.injectMode(false); + } + + protected void setupFakeUser() { + String fakeUser = "mal"; + List fakeGroupNames = new ArrayList(); + fakeGroupNames.add("groupygroup"); + + InjectableDummyAuthenticator.injectUserName(fakeUser); + InjectableDummyAuthenticator.injectGroupNames(fakeGroupNames); + } + + protected String setupUser() { + return ugi.getUserName(); + } + + protected String getTestTableName() { + return this.getClass().getSimpleName() + "tab" + ++objNum; + } + + protected String getTestDbName() { + return this.getClass().getSimpleName() + "db" + ++objNum; + } + + @After + public void tearDown() throws Exception { + InjectableDummyAuthenticator.injectMode(false); + } + + protected void setPermissions(String locn, String permissions) throws Exception { + FileSystem fs = FileSystem.get(new URI(locn), clientHiveConf); + fs.setPermission(new Path(locn), FsPermission.valueOf(permissions)); + } + + protected void validateCreateDb(Database expectedDb, String dbName) { + Assert.assertEquals(expectedDb.getName().toLowerCase(), dbName.toLowerCase()); + } + + +} diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestAuthorizationPreEventListener.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestAuthorizationPreEventListener.java index fff1ed2a4ca5..b8f5dd13ceee 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestAuthorizationPreEventListener.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestAuthorizationPreEventListener.java @@ -171,41 +171,36 @@ public void testListener() throws Exception { driver.run("create database " + dbName); listSize++; - Database db = msc.getDatabase(dbName); - Database dbFromEvent = (Database)assertAndExtractSingleObjectFromEvent(listSize, authCalls, DummyHiveMetastoreAuthorizationProvider.AuthCallContextType.DB); + Database db = msc.getDatabase(dbName); validateCreateDb(db,dbFromEvent); driver.run("use " + dbName); driver.run(String.format("create table %s (a string) partitioned by (b string)", tblName)); - listSize++; - Table tbl = msc.getTable(dbName, tblName); + listSize = authCalls.size(); Table tblFromEvent = ( (org.apache.hadoop.hive.ql.metadata.Table) assertAndExtractSingleObjectFromEvent(listSize, authCalls, DummyHiveMetastoreAuthorizationProvider.AuthCallContextType.TABLE)) .getTTable(); + Table tbl = msc.getTable(dbName, tblName); validateCreateTable(tbl, tblFromEvent); driver.run("alter table tmptbl add partition (b='2011')"); - listSize++; - Partition part = msc.getPartition("hive3705", "tmptbl", "b=2011"); + listSize = authCalls.size(); Partition ptnFromEvent = ( (org.apache.hadoop.hive.ql.metadata.Partition) assertAndExtractSingleObjectFromEvent(listSize, authCalls, DummyHiveMetastoreAuthorizationProvider.AuthCallContextType.PARTITION)) .getTPartition(); + Partition part = msc.getPartition("hive3705", "tmptbl", "b=2011"); validateAddPartition(part,ptnFromEvent); driver.run(String.format("alter table %s touch partition (%s)", tblName, "b='2011'")); - listSize++; - - //the partition did not change, - // so the new partition should be similar to the original partition - Partition modifiedP = msc.getPartition(dbName, tblName, "b=2011"); + listSize = authCalls.size(); Partition ptnFromEventAfterAlter = ( (org.apache.hadoop.hive.ql.metadata.Partition) @@ -213,6 +208,9 @@ public void testListener() throws Exception { DummyHiveMetastoreAuthorizationProvider.AuthCallContextType.PARTITION)) .getTPartition(); + //the partition did not change, + // so the new partition should be similar to the original partition + Partition modifiedP = msc.getPartition(dbName, tblName, "b=2011"); validateAlterPartition(part, modifiedP, ptnFromEventAfterAlter.getDbName(), ptnFromEventAfterAlter.getTableName(), ptnFromEventAfterAlter.getValues(), ptnFromEventAfterAlter); @@ -220,8 +218,9 @@ public void testListener() throws Exception { List part_vals = new ArrayList(); part_vals.add("c=2012"); - Partition newPart = msc.appendPartition(dbName, tblName, part_vals); + listSize = authCalls.size(); + Partition newPart = msc.appendPartition(dbName, tblName, part_vals); listSize++; Partition newPtnFromEvent = ( @@ -233,25 +232,23 @@ public void testListener() throws Exception { driver.run(String.format("alter table %s rename to %s", tblName, renamed)); - listSize++; + listSize = authCalls.size(); - Table renamedTable = msc.getTable(dbName, renamed); Table renamedTableFromEvent = ( (org.apache.hadoop.hive.ql.metadata.Table) assertAndExtractSingleObjectFromEvent(listSize, authCalls, DummyHiveMetastoreAuthorizationProvider.AuthCallContextType.TABLE)) .getTTable(); + Table renamedTable = msc.getTable(dbName, renamed); validateAlterTable(tbl, renamedTable, renamedTableFromEvent, renamedTable); assertFalse(tbl.getTableName().equals(renamedTable.getTableName())); //change the table name back driver.run(String.format("alter table %s rename to %s", renamed, tblName)); - listSize++; - driver.run(String.format("alter table %s drop partition (b='2011')", tblName)); - listSize++; + listSize = authCalls.size(); Partition ptnFromDropPartition = ( (org.apache.hadoop.hive.ql.metadata.Partition) @@ -262,7 +259,7 @@ public void testListener() throws Exception { validateDropPartition(modifiedP, ptnFromDropPartition); driver.run("drop table " + tblName); - listSize++; + listSize = authCalls.size(); Table tableFromDropTableEvent = ( (org.apache.hadoop.hive.ql.metadata.Table) assertAndExtractSingleObjectFromEvent(listSize, authCalls, @@ -290,16 +287,16 @@ public void testListener() throws Exception { } tCustom.setTableName(tbl.getTableName() + "_custom"); + listSize = authCalls.size(); msc.createTable(tCustom); listSize++; - Table customCreatedTable = msc.getTable(tCustom.getDbName(), tCustom.getTableName()); Table customCreatedTableFromEvent = ( (org.apache.hadoop.hive.ql.metadata.Table) assertAndExtractSingleObjectFromEvent(listSize, authCalls, DummyHiveMetastoreAuthorizationProvider.AuthCallContextType.TABLE)) .getTTable(); - + Table customCreatedTable = msc.getTable(tCustom.getDbName(), tCustom.getTableName()); validateCreateTable(tCustom,customCreatedTable); validateCreateTable(tCustom,customCreatedTableFromEvent); @@ -316,8 +313,10 @@ public void testListener() throws Exception { assertEquals(tCustom.getSd().getSerdeInfo().getSerializationLib(), customCreatedTableFromEvent.getSd().getSerdeInfo().getSerializationLib()); - msc.dropTable(tCustom.getDbName(),tCustom.getTableName()); - listSize++; + listSize = authCalls.size(); + msc.dropTable(tCustom.getDbName(), tCustom.getTableName()); + listSize += 2; + Table table2FromDropTableEvent = ( (org.apache.hadoop.hive.ql.metadata.Table) assertAndExtractSingleObjectFromEvent(listSize, authCalls, @@ -327,7 +326,7 @@ public void testListener() throws Exception { validateDropTable(tCustom, table2FromDropTableEvent); driver.run("drop database " + dbName); - listSize++; + listSize = authCalls.size(); Database dbFromDropDatabaseEvent = (Database)assertAndExtractSingleObjectFromEvent(listSize, authCalls, DummyHiveMetastoreAuthorizationProvider.AuthCallContextType.DB); diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestMetastoreAuthorizationProvider.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestMetastoreAuthorizationProvider.java index c869469187c1..3bde2fc25b74 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestMetastoreAuthorizationProvider.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestMetastoreAuthorizationProvider.java @@ -89,6 +89,7 @@ protected void setUp() throws Exception { AuthorizationPreEventListener.class.getName()); System.setProperty(HiveConf.ConfVars.HIVE_METASTORE_AUTHORIZATION_MANAGER.varname, getAuthorizationProvider()); + setupMetaStoreReadAuthorization(); System.setProperty(HiveConf.ConfVars.HIVE_METASTORE_AUTHENTICATOR_MANAGER.varname, InjectableDummyAuthenticator.class.getName()); System.setProperty(HiveConf.ConfVars.HIVE_AUTHORIZATION_TABLE_OWNER_GRANTS.varname, ""); @@ -115,6 +116,13 @@ protected void setUp() throws Exception { driver = new Driver(clientHiveConf); } + protected void setupMetaStoreReadAuthorization() { + // read authorization does not work with default/legacy authorization mode + // It is a chicken and egg problem granting select privilege to database, as the + // grant statement would invoke get_database which needs select privilege + System.setProperty(HiveConf.ConfVars.HIVE_METASTORE_AUTHORIZATION_AUTH_READS.varname, "false"); + } + @Override protected void tearDown() throws Exception { super.tearDown(); diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestMultiAuthorizationPreEventListener.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestMultiAuthorizationPreEventListener.java index d98f599a8318..299812fb5863 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestMultiAuthorizationPreEventListener.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestMultiAuthorizationPreEventListener.java @@ -88,6 +88,7 @@ public void testMultipleAuthorizationListners() throws Exception { // verify that the actual action also went through Database db = msc.getDatabase(dbName); + listSize += 2; // 1 read database auth calls for each authorization provider Database dbFromEvent = (Database)assertAndExtractSingleObjectFromEvent(listSize, authCalls, DummyHiveMetastoreAuthorizationProvider.AuthCallContextType.DB); validateCreateDb(db,dbFromEvent); diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationDrops.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationDrops.java index 6cf8565a3753..dfaa080f3587 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationDrops.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationDrops.java @@ -18,88 +18,19 @@ package org.apache.hadoop.hive.ql.security; -import java.net.URI; -import java.util.ArrayList; -import java.util.List; - -import junit.framework.TestCase; - -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.Path; -import org.apache.hadoop.fs.permission.FsPermission; -import org.apache.hadoop.hive.cli.CliSessionState; -import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; -import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; -import org.apache.hadoop.hive.metastore.MetaStoreUtils; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.Table; -import org.apache.hadoop.hive.ql.Driver; import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; -import org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener; -import org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider; -import org.apache.hadoop.hive.ql.session.SessionState; -import org.apache.hadoop.hive.shims.ShimLoader; -import org.apache.hadoop.security.UserGroupInformation; +import org.junit.Assert; +import org.junit.Test; /** * Test cases focusing on drop table permission checks */ -public class TestStorageBasedMetastoreAuthorizationDrops extends TestCase{ - protected HiveConf clientHiveConf; - protected HiveMetaStoreClient msc; - protected Driver driver; - protected UserGroupInformation ugi; - private static int objNum = 0; - - protected String getAuthorizationProvider(){ - return StorageBasedAuthorizationProvider.class.getName(); - } - - protected HiveConf createHiveConf() throws Exception { - return new HiveConf(this.getClass()); - } - - @Override - protected void setUp() throws Exception { - - super.setUp(); - - int port = MetaStoreUtils.findFreePort(); - - // Turn on metastore-side authorization - System.setProperty(HiveConf.ConfVars.METASTORE_PRE_EVENT_LISTENERS.varname, - AuthorizationPreEventListener.class.getName()); - System.setProperty(HiveConf.ConfVars.HIVE_METASTORE_AUTHORIZATION_MANAGER.varname, - getAuthorizationProvider()); - System.setProperty(HiveConf.ConfVars.HIVE_METASTORE_AUTHENTICATOR_MANAGER.varname, - InjectableDummyAuthenticator.class.getName()); - - MetaStoreUtils.startMetaStore(port, ShimLoader.getHadoopThriftAuthBridge()); - - clientHiveConf = createHiveConf(); - - // Turn off client-side authorization - clientHiveConf.setBoolVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED,false); - - clientHiveConf.setVar(HiveConf.ConfVars.METASTOREURIS, "thrift://localhost:" + port); - clientHiveConf.setIntVar(HiveConf.ConfVars.METASTORETHRIFTCONNECTIONRETRIES, 3); - clientHiveConf.set(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY.varname, "false"); - - clientHiveConf.set(HiveConf.ConfVars.PREEXECHOOKS.varname, ""); - clientHiveConf.set(HiveConf.ConfVars.POSTEXECHOOKS.varname, ""); - - ugi = ShimLoader.getHadoopShims().getUGIForConf(clientHiveConf); - - SessionState.start(new CliSessionState(clientHiveConf)); - msc = new HiveMetaStoreClient(clientHiveConf, null); - driver = new Driver(clientHiveConf); - - setupFakeUser(); - InjectableDummyAuthenticator.injectMode(false); - } - +public class TestStorageBasedMetastoreAuthorizationDrops extends StorageBasedMetastoreTestBase { + @Test public void testDropDatabase() throws Exception { dropDatabaseByOtherUser("-rwxrwxrwx", 0); dropDatabaseByOtherUser("-rwxrwxrwt", 1); @@ -111,12 +42,12 @@ public void testDropDatabase() throws Exception { * @param expectedRet - expected return code for drop by other user * @throws Exception */ - private void dropDatabaseByOtherUser(String perm, int expectedRet) throws Exception { + public void dropDatabaseByOtherUser(String perm, int expectedRet) throws Exception { String dbName = getTestDbName(); setPermissions(clientHiveConf.getVar(ConfVars.METASTOREWAREHOUSE), perm); CommandProcessorResponse resp = driver.run("create database " + dbName); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); Database db = msc.getDatabase(dbName); validateCreateDb(db, dbName); @@ -124,10 +55,11 @@ private void dropDatabaseByOtherUser(String perm, int expectedRet) throws Except resp = driver.run("drop database " + dbName); - assertEquals(expectedRet, resp.getResponseCode()); + Assert.assertEquals(expectedRet, resp.getResponseCode()); } + @Test public void testDropTable() throws Exception { dropTableByOtherUser("-rwxrwxrwx", 0); dropTableByOtherUser("-rwxrwxrwt", 1); @@ -138,13 +70,13 @@ public void testDropTable() throws Exception { * @param expectedRet expected return code on drop table * @throws Exception */ - private void dropTableByOtherUser(String perm, int expectedRet) throws Exception { + public void dropTableByOtherUser(String perm, int expectedRet) throws Exception { String dbName = getTestDbName(); String tblName = getTestTableName(); setPermissions(clientHiveConf.getVar(ConfVars.METASTOREWAREHOUSE), "-rwxrwxrwx"); CommandProcessorResponse resp = driver.run("create database " + dbName); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); Database db = msc.getDatabase(dbName); validateCreateDb(db, dbName); @@ -152,18 +84,19 @@ private void dropTableByOtherUser(String perm, int expectedRet) throws Exception String dbDotTable = dbName + "." + tblName; resp = driver.run("create table " + dbDotTable + "(i int)"); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); InjectableDummyAuthenticator.injectMode(true); resp = driver.run("drop table " + dbDotTable); - assertEquals(expectedRet, resp.getResponseCode()); + Assert.assertEquals(expectedRet, resp.getResponseCode()); } /** * Drop view should not be blocked by SBA. View will not have any location to drop. * @throws Exception */ + @Test public void testDropView() throws Exception { String dbName = getTestDbName(); String tblName = getTestTableName(); @@ -171,7 +104,7 @@ public void testDropView() throws Exception { setPermissions(clientHiveConf.getVar(ConfVars.METASTOREWAREHOUSE), "-rwxrwxrwx"); CommandProcessorResponse resp = driver.run("create database " + dbName); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); Database db = msc.getDatabase(dbName); validateCreateDb(db, dbName); @@ -179,20 +112,20 @@ public void testDropView() throws Exception { String dbDotTable = dbName + "." + tblName; resp = driver.run("create table " + dbDotTable + "(i int)"); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); String dbDotView = dbName + "." + viewName; resp = driver.run("create view " + dbDotView + " as select * from " + dbDotTable); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); resp = driver.run("drop view " + dbDotView); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); resp = driver.run("drop table " + dbDotTable); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); } - + @Test public void testDropPartition() throws Exception { dropPartitionByOtherUser("-rwxrwxrwx", 0); dropPartitionByOtherUser("-rwxrwxrwt", 1); @@ -203,70 +136,29 @@ public void testDropPartition() throws Exception { * @param expectedRet expected return code * @throws Exception */ - private void dropPartitionByOtherUser(String perm, int expectedRet) throws Exception { + public void dropPartitionByOtherUser(String perm, int expectedRet) throws Exception { String dbName = getTestDbName(); String tblName = getTestTableName(); setPermissions(clientHiveConf.getVar(ConfVars.METASTOREWAREHOUSE), "-rwxrwxrwx"); CommandProcessorResponse resp = driver.run("create database " + dbName); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); Database db = msc.getDatabase(dbName); validateCreateDb(db, dbName); setPermissions(db.getLocationUri(), "-rwxrwxrwx"); String dbDotTable = dbName + "." + tblName; resp = driver.run("create table " + dbDotTable + "(i int) partitioned by (b string)"); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); Table tab = msc.getTable(dbName, tblName); setPermissions(tab.getSd().getLocation(), perm); resp = driver.run("alter table " + dbDotTable + " add partition (b='2011')"); - assertEquals(0, resp.getResponseCode()); + Assert.assertEquals(0, resp.getResponseCode()); InjectableDummyAuthenticator.injectMode(true); resp = driver.run("alter table " + dbDotTable + " drop partition (b='2011')"); - assertEquals(expectedRet, resp.getResponseCode()); - } - - private void setupFakeUser() { - String fakeUser = "mal"; - List fakeGroupNames = new ArrayList(); - fakeGroupNames.add("groupygroup"); - - InjectableDummyAuthenticator.injectUserName(fakeUser); - InjectableDummyAuthenticator.injectGroupNames(fakeGroupNames); - } - - private String setupUser() { - return ugi.getUserName(); - } - - private String getTestTableName() { - return this.getClass().getSimpleName() + "tab" + ++objNum; + Assert.assertEquals(expectedRet, resp.getResponseCode()); } - private String getTestDbName() { - return this.getClass().getSimpleName() + "db" + ++objNum; - } - - @Override - protected void tearDown() throws Exception { - super.tearDown(); - InjectableDummyAuthenticator.injectMode(false); - } - - protected void setPermissions(String locn, String permissions) throws Exception { - FileSystem fs = FileSystem.get(new URI(locn), clientHiveConf); - fs.setPermission(new Path(locn), FsPermission.valueOf(permissions)); - } - - private void validateCreateDb(Database expectedDb, String dbName) { - assertEquals(expectedDb.getName().toLowerCase(), dbName.toLowerCase()); - } - - private void validateCreateTable(Table expectedTable, String tblName, String dbName) { - assertNotNull(expectedTable); - assertEquals(expectedTable.getTableName().toLowerCase(),tblName.toLowerCase()); - assertEquals(expectedTable.getDbName().toLowerCase(),dbName.toLowerCase()); - } } diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProvider.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProvider.java index dc08271bfe05..78ff780fb8b9 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProvider.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProvider.java @@ -23,6 +23,7 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.permission.FsPermission; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.MetaException; import org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider; @@ -102,4 +103,10 @@ protected String getTestTableName(){ return super.getTestTableName() + "_SBAP"; } + @Override + protected void setupMetaStoreReadAuthorization() { + // enable read authorization in metastore + System.setProperty(HiveConf.ConfVars.HIVE_METASTORE_AUTHORIZATION_AUTH_READS.varname, "true"); + } + } diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationReads.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationReads.java new file mode 100644 index 000000000000..6f45a5994ed5 --- /dev/null +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationReads.java @@ -0,0 +1,122 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.security; + +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; +import org.apache.hadoop.hive.metastore.api.Database; +import org.apache.hadoop.hive.metastore.api.Table; +import org.apache.hadoop.hive.ql.CommandNeedRetryException; +import org.apache.hadoop.hive.ql.Driver; +import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; +import org.junit.Assert; +import org.junit.Test; + +/** + * Test cases focusing on drop table permission checks + */ +public class TestStorageBasedMetastoreAuthorizationReads extends StorageBasedMetastoreTestBase { + + @Test + public void testReadTableSuccess() throws Exception { + readTableByOtherUser("-rwxrwxrwx", true); + } + + @Test + public void testReadTableFailure() throws Exception { + readTableByOtherUser("-rwxrwx---", false); + } + + /** + * @param perm dir permission for table dir + * @param isSuccess if command was successful + * @throws Exception + */ + private void readTableByOtherUser(String perm, boolean isSuccess) throws Exception { + String dbName = getTestDbName(); + String tblName = getTestTableName(); + setPermissions(clientHiveConf.getVar(ConfVars.METASTOREWAREHOUSE), "-rwxrwxrwx"); + + CommandProcessorResponse resp = driver.run("create database " + dbName); + Assert.assertEquals(0, resp.getResponseCode()); + Database db = msc.getDatabase(dbName); + validateCreateDb(db, dbName); + + setPermissions(db.getLocationUri(), "-rwxrwxrwx"); + + String dbDotTable = dbName + "." + tblName; + resp = driver.run("create table " + dbDotTable + "(i int) partitioned by (date string)"); + Assert.assertEquals(0, resp.getResponseCode()); + Table tab = msc.getTable(dbName, tblName); + setPermissions(tab.getSd().getLocation(), perm); + + InjectableDummyAuthenticator.injectMode(true); + + testCmd(driver, "DESCRIBE " + dbDotTable, isSuccess); + testCmd(driver, "DESCRIBE EXTENDED " + dbDotTable, isSuccess); + testCmd(driver, "SHOW PARTITIONS " + dbDotTable, isSuccess); + testCmd(driver, "SHOW COLUMNS IN " + tblName + " IN " + dbName, isSuccess); + testCmd(driver, "use " + dbName, true); + testCmd(driver, "SHOW TABLE EXTENDED LIKE " + tblName, isSuccess); + + } + + @Test + public void testReadDbSuccess() throws Exception { + readDbByOtherUser("-rwxrwxrwx", true); + } + + @Test + public void testReadDbFailure() throws Exception { + readDbByOtherUser("-rwxrwx---", false); + } + + + /** + * @param perm dir permission for database dir + * @param isSuccess if command was successful + * @throws Exception + */ + private void readDbByOtherUser(String perm, boolean isSuccess) throws Exception { + String dbName = getTestDbName(); + setPermissions(clientHiveConf.getVar(ConfVars.METASTOREWAREHOUSE), perm); + + CommandProcessorResponse resp = driver.run("create database " + dbName); + Assert.assertEquals(0, resp.getResponseCode()); + Database db = msc.getDatabase(dbName); + validateCreateDb(db, dbName); + setPermissions(db.getLocationUri(), perm); + + InjectableDummyAuthenticator.injectMode(true); + + testCmd(driver, "DESCRIBE DATABASE " + dbName, isSuccess); + testCmd(driver, "DESCRIBE DATABASE EXTENDED " + dbName, isSuccess); + testCmd(driver, "SHOW TABLES IN " + dbName, isSuccess); + driver.run("use " + dbName); + testCmd(driver, "SHOW TABLES ", isSuccess); + + } + + private void testCmd(Driver driver, String cmd, boolean isSuccess) + throws CommandNeedRetryException { + CommandProcessorResponse resp = driver.run(cmd); + Assert.assertEquals(isSuccess, resp.getResponseCode() == 0); + } + + +} diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index 5b5102c48e0d..47eca29d57ae 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -48,9 +48,6 @@ import java.util.concurrent.locks.ReentrantLock; import java.util.regex.Pattern; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableListMultimap; -import com.google.common.collect.Multimaps; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -171,6 +168,8 @@ import org.apache.hadoop.hive.metastore.events.PreDropTableEvent; import org.apache.hadoop.hive.metastore.events.PreEventContext; import org.apache.hadoop.hive.metastore.events.PreLoadPartitionDoneEvent; +import org.apache.hadoop.hive.metastore.events.PreReadDatabaseEvent; +import org.apache.hadoop.hive.metastore.events.PreReadTableEvent; import org.apache.hadoop.hive.metastore.model.MDBPrivilege; import org.apache.hadoop.hive.metastore.model.MGlobalPrivilege; import org.apache.hadoop.hive.metastore.model.MPartitionColumnPrivilege; @@ -203,7 +202,10 @@ import com.facebook.fb303.FacebookBase; import com.facebook.fb303.fb_status; import com.google.common.base.Splitter; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.Lists; +import com.google.common.collect.Multimaps; /** * TODO:pc remove application logic to a separate interface. @@ -803,7 +805,7 @@ public void create_database(final Database db) Exception ex = null; try { try { - if (null != get_database(db.getName())) { + if (null != get_database_core(db.getName())) { throw new AlreadyExistsException("Database " + db.getName() + " already exists"); } } catch (NoSuchObjectException e) { @@ -829,25 +831,45 @@ public void create_database(final Database db) } @Override - public Database get_database(final String name) throws NoSuchObjectException, - MetaException { + public Database get_database(final String name) throws NoSuchObjectException, MetaException { startFunction("get_database", ": " + name); Database db = null; Exception ex = null; try { - db = getMS().getDatabase(name); + db = get_database_core(name); + firePreEvent(new PreReadDatabaseEvent(db, this)); } catch (MetaException e) { ex = e; throw e; } catch (NoSuchObjectException e) { ex = e; throw e; + } finally { + endFunction("get_database", db != null, ex); + } + return db; + } + + /** + * Equivalent to get_database, but does not write to audit logs, or fire pre-event listners. + * Meant to be used for internal hive classes that don't use the thrift interface. + * @param name + * @return + * @throws NoSuchObjectException + * @throws MetaException + */ + public Database get_database_core(final String name) throws NoSuchObjectException, + MetaException { + Database db = null; + try { + db = getMS().getDatabase(name); + } catch (MetaException e) { + throw e; + } catch (NoSuchObjectException e) { + throw e; } catch (Exception e) { - ex = e; assert (e instanceof RuntimeException); throw (RuntimeException) e; - } finally { - endFunction("get_database", db != null, ex); } return db; } @@ -1373,7 +1395,7 @@ private void drop_table_core(final RawStore ms, final String dbname, final Strin try { ms.openTransaction(); // drop any partitions - tbl = get_table(dbname, name); + tbl = get_table_core(dbname, name); if (tbl == null) { throw new NoSuchObjectException(name + " doesn't exist"); } @@ -1624,6 +1646,34 @@ public Table get_table(final String dbname, final String name) throws MetaExcept Table t = null; startTableFunction("get_table", dbname, name); Exception ex = null; + try { + t = get_table_core(dbname, name); + firePreEvent(new PreReadTableEvent(t, this)); + } catch (MetaException e) { + ex = e; + throw e; + } catch (NoSuchObjectException e) { + ex = e; + throw e; + } finally { + endFunction("get_table", t != null, ex, name); + } + return t; + } + + /** + * Equivalent of get_table, but does not log audits and fire pre-event listener. + * Meant to be used for calls made by other hive classes, that are not using the + * thrift interface. + * @param dbname + * @param name + * @return Table object + * @throws MetaException + * @throws NoSuchObjectException + */ + public Table get_table_core(final String dbname, final String name) throws MetaException, + NoSuchObjectException { + Table t; try { t = getMS().getTable(dbname, name); if (t == null) { @@ -1631,7 +1681,6 @@ public Table get_table(final String dbname, final String name) throws MetaExcept + " table not found"); } } catch (Exception e) { - ex = e; if (e instanceof MetaException) { throw (MetaException) e; } else if (e instanceof NoSuchObjectException) { @@ -1639,8 +1688,6 @@ public Table get_table(final String dbname, final String name) throws MetaExcept } else { throw newMetaException(e); } - } finally { - endFunction("get_table", t != null, ex, name); } return t; } @@ -2418,7 +2465,7 @@ private boolean drop_partition_common(RawStore ms, String db_name, String tbl_na try { ms.openTransaction(); part = ms.getPartition(db_name, tbl_name, part_vals); - tbl = get_table(db_name, tbl_name); + tbl = get_table_core(db_name, tbl_name); firePreEvent(new PreDropPartitionEvent(tbl, part, deleteData, this)); if (part == null) { @@ -2512,7 +2559,7 @@ public DropPartitionsResult drop_partitions_req( try { // We need Partition-s for firing events and for result; DN needs MPartition-s to drop. // Great... Maybe we could bypass fetching MPartitions by issuing direct SQL deletes. - tbl = get_table(dbName, tblName); + tbl = get_table_core(dbName, tblName); int minCount = 0; RequestPartsSpec spec = request.getParts(); List partNames = null; @@ -2671,6 +2718,7 @@ public Partition get_partition(final String db_name, final String tbl_name, Partition ret = null; Exception ex = null; try { + fireReadTablePreEvent(db_name, tbl_name); ret = getMS().getPartition(db_name, tbl_name, part_vals); } catch (Exception e) { ex = e; @@ -2687,6 +2735,28 @@ public Partition get_partition(final String db_name, final String tbl_name, return ret; } + /** + * Fire a pre-event for read table operation, if there are any + * pre-event listeners registered + * + * @param db_name + * @param tbl_name + * @throws MetaException + * @throws NoSuchObjectException + */ + private void fireReadTablePreEvent(String dbName, String tblName) throws MetaException, NoSuchObjectException { + if(preListeners.size() > 0) { + // do this only if there is a pre event listener registered (avoid unnecessary + // metastore api call) + Table t = getMS().getTable(dbName, tblName); + if (t == null) { + throw new NoSuchObjectException(dbName + "." + tblName + + " table not found"); + } + firePreEvent(new PreReadTableEvent(t, this)); + } + } + @Override public Partition get_partition_with_auth(final String db_name, final String tbl_name, final List part_vals, @@ -2694,7 +2764,7 @@ public Partition get_partition_with_auth(final String db_name, throws MetaException, NoSuchObjectException, TException { startPartitionFunction("get_partition_with_auth", db_name, tbl_name, part_vals); - + fireReadTablePreEvent(db_name, tbl_name); Partition ret = null; Exception ex = null; try { @@ -2716,7 +2786,7 @@ public Partition get_partition_with_auth(final String db_name, public List get_partitions(final String db_name, final String tbl_name, final short max_parts) throws NoSuchObjectException, MetaException { startTableFunction("get_partitions", db_name, tbl_name); - + fireReadTablePreEvent(db_name, tbl_name); List ret = null; Exception ex = null; try { @@ -2773,7 +2843,7 @@ public List get_partitions_pspec(final String db_name, final Stri List partitionSpecs = null; try { - Table table = get_table(dbName, tableName); + Table table = get_table_core(dbName, tableName); List partitions = get_partitions(dbName, tableName, (short) max_parts); if (is_partition_spec_grouping_enabled(table)) { @@ -2797,7 +2867,7 @@ public List get_partitions_pspec(final String db_name, final Stri private static class StorageDescriptorKey { - private StorageDescriptor sd; + private final StorageDescriptor sd; StorageDescriptorKey(StorageDescriptor sd) { this.sd = sd; } @@ -2919,9 +2989,9 @@ private static boolean is_partition_spec_grouping_enabled(Table table) { @Override public List get_partition_names(final String db_name, final String tbl_name, - final short max_parts) throws MetaException { + final short max_parts) throws MetaException, NoSuchObjectException { startTableFunction("get_partition_names", db_name, tbl_name); - + fireReadTablePreEvent(db_name, tbl_name); List ret = null; Exception ex = null; try { @@ -3038,14 +3108,7 @@ public void alter_partitions(final String db_name, final String tbl_name, Exception ex = null; try { for (Partition tmpPart : new_parts) { - try { - for (MetaStorePreEventListener listener : preListeners) { - listener.onEvent( - new PreAlterPartitionEvent(db_name, tbl_name, null, tmpPart, this)); - } - } catch (NoSuchObjectException e) { - throw new MetaException(e.getMessage()); - } + firePreEvent(new PreAlterPartitionEvent(db_name, tbl_name, null, tmpPart, this)); } oldParts = alterHandler.alterPartitions(getMS(), wh, db_name, tbl_name, new_parts); @@ -3150,7 +3213,7 @@ public void alter_table_with_environment_context(final String dbname, boolean success = false; Exception ex = null; try { - Table oldt = get_table(dbname, name); + Table oldt = get_table_core(dbname, name); firePreEvent(new PreAlterTableEvent(oldt, newTable, this)); alterHandler.alterTable(getMS(), wh, dbname, name, newTable); success = true; @@ -3234,7 +3297,7 @@ public List get_fields(String db, String tableName) Exception ex = null; try { try { - tbl = get_table(db, base_table_name); + tbl = get_table_core(db, base_table_name); } catch (NoSuchObjectException e) { throw new UnknownTableException(e.getMessage()); } @@ -3294,7 +3357,7 @@ public List get_schema(String db, String tableName) Table tbl; try { - tbl = get_table(db, base_table_name); + tbl = get_table_core(db, base_table_name); } catch (NoSuchObjectException e) { throw new UnknownTableException(e.getMessage()); } @@ -3413,6 +3476,7 @@ private List getPartValsFromName(RawStore ms, String dbName, String tblN private Partition get_partition_by_name_core(final RawStore ms, final String db_name, final String tbl_name, final String part_name) throws MetaException, NoSuchObjectException, TException { + fireReadTablePreEvent(db_name, tbl_name); List partVals = null; try { partVals = getPartValsFromName(ms, db_name, tbl_name, part_name); @@ -3434,7 +3498,6 @@ public Partition get_partition_by_name(final String db_name, final String tbl_na startFunction("get_partition_by_name", ": db=" + db_name + " tbl=" + tbl_name + " part=" + part_name); - Partition ret = null; Exception ex = null; try { @@ -3564,6 +3627,7 @@ public List get_partitions_ps_with_auth(final String db_name, final List groupNames) throws MetaException, TException, NoSuchObjectException { startPartitionFunction("get_partitions_ps_with_auth", db_name, tbl_name, part_vals); + fireReadTablePreEvent(db_name, tbl_name); List ret = null; Exception ex = null; try { @@ -3586,6 +3650,7 @@ public List get_partition_names_ps(final String db_name, final String tbl_name, final List part_vals, final short max_parts) throws MetaException, TException, NoSuchObjectException { startPartitionFunction("get_partitions_names_ps", db_name, tbl_name, part_vals); + fireReadTablePreEvent(db_name, tbl_name); List ret = null; Exception ex = null; try { @@ -3754,7 +3819,7 @@ private boolean drop_index_by_name_core(final RawStore ms, String idxTblName = index.getIndexTableName(); if (idxTblName != null) { String[] qualified = MetaStoreUtils.getQualifiedName(index.getDbName(), idxTblName); - Table tbl = get_table(qualified[0], qualified[1]); + Table tbl = get_table_core(qualified[0], qualified[1]); if (tbl.getSd() == null) { throw new MetaException("Table metadata is corrupted"); } @@ -4056,7 +4121,7 @@ public boolean update_partition_column_statistics(ColumnStatistics colStats) } finally { endFunction("write_partition_column_statistics: ", ret != false, null, tableName); } - } + } @Override public boolean delete_partition_column_statistics(String dbName, String tableName, @@ -4111,7 +4176,7 @@ public List get_partitions_by_filter(final String dbName, final String tblName, final String filter, final short maxParts) throws MetaException, NoSuchObjectException, TException { startTableFunction("get_partitions_by_filter", dbName, tblName); - + fireReadTablePreEvent(dbName, tblName); List ret = null; Exception ex = null; try { @@ -4134,7 +4199,7 @@ public List get_part_specs_by_filter(final String dbName, List partitionSpecs = null; try { - Table table = get_table(dbName, tblName); + Table table = get_table_core(dbName, tblName); List partitions = get_partitions_by_filter(dbName, tblName, filter, (short) maxParts); if (is_partition_spec_grouping_enabled(table)) { @@ -4161,6 +4226,7 @@ public PartitionsByExprResult get_partitions_by_expr( PartitionsByExprRequest req) throws TException { String dbName = req.getDbName(), tblName = req.getTblName(); startTableFunction("get_partitions_by_expr", dbName, tblName); + fireReadTablePreEvent(dbName, tblName); PartitionsByExprResult ret = null; Exception ex = null; try { @@ -4197,7 +4263,7 @@ public List get_partitions_by_names(final String dbName, throws MetaException, NoSuchObjectException, TException { startTableFunction("get_partitions_by_names", dbName, tblName); - + fireReadTablePreEvent(dbName, tblName); List ret = null; Exception ex = null; try { @@ -4242,7 +4308,7 @@ private String getPartName(HiveObjectRef hiveObject) throws MetaException { List partValue = hiveObject.getPartValues(); if (partValue != null && partValue.size() > 0) { try { - Table table = get_table(hiveObject.getDbName(), hiveObject + Table table = get_table_core(hiveObject.getDbName(), hiveObject .getObjectName()); partName = Warehouse .makePartName(table.getPartitionKeys(), partValue); @@ -4686,7 +4752,7 @@ private List list_partition_column_privileges( if (dbName == null) { return getMS().listPrincipalPartitionColumnGrantsAll(principalName, principalType); } - Table tbl = get_table(dbName, tableName); + Table tbl = get_table_core(dbName, tableName); String partName = Warehouse.makePartName(tbl.getPartitionKeys(), partValues); if (principalName == null) { return getMS().listPartitionColumnGrantsAll(dbName, tableName, partName, columnName); @@ -4764,7 +4830,7 @@ private List list_partition_privileges( if (dbName == null) { return getMS().listPrincipalPartitionGrantsAll(principalName, principalType); } - Table tbl = get_table(dbName, tableName); + Table tbl = get_table_core(dbName, tableName); String partName = Warehouse.makePartName(tbl.getPartitionKeys(), partValues); if (principalName == null) { return getMS().listPartitionGrantsAll(dbName, tableName, partName); @@ -5422,7 +5488,7 @@ public boolean set_aggr_stats_for(SetPartitionsStatsRequest request) } } - + public static IHMSHandler newHMSHandler(String name, HiveConf hiveConf) throws MetaException { return newHMSHandler(name, hiveConf, false); } diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java index 94c22450e417..c25f13e1df36 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -28,7 +28,6 @@ import java.lang.reflect.Proxy; import java.net.InetAddress; import java.net.URI; -import java.net.URISyntaxException; import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -98,7 +97,6 @@ import org.apache.hadoop.hive.metastore.api.OpenTxnsResponse; import org.apache.hadoop.hive.metastore.api.Partition; import org.apache.hadoop.hive.metastore.api.PartitionEventType; -import org.apache.hadoop.hive.metastore.api.PartitionSpec; import org.apache.hadoop.hive.metastore.api.PartitionsByExprRequest; import org.apache.hadoop.hive.metastore.api.PartitionsByExprResult; import org.apache.hadoop.hive.metastore.api.PartitionsStatsRequest; @@ -122,7 +120,6 @@ import org.apache.hadoop.hive.metastore.api.UnknownPartitionException; import org.apache.hadoop.hive.metastore.api.UnknownTableException; import org.apache.hadoop.hive.metastore.api.UnlockRequest; -import org.apache.hadoop.hive.metastore.partition.spec.CompositePartitionSpecProxy; import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy; import org.apache.hadoop.hive.metastore.txn.TxnHandler; import org.apache.hadoop.hive.shims.HadoopShims; @@ -779,6 +776,7 @@ public void dropTable(String dbname, String name, boolean deleteData, * data from warehouse * @see #dropTable(String, String, boolean, boolean, EnvironmentContext) */ + @Override public void dropTable(String dbname, String name, boolean deleteData, boolean ignoreUnknownTab, boolean ifPurge) throws MetaException, TException, NoSuchObjectException, UnsupportedOperationException { @@ -1313,6 +1311,7 @@ public boolean updatePartitionColumnStatistics(ColumnStatistics statsObj) } /** {@inheritDoc} */ + @Override public boolean setPartitionColumnStatistics(SetPartitionsStatsRequest request) throws NoSuchObjectException, InvalidObjectException, MetaException, TException, InvalidInputException{ diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/events/PreEventContext.java b/metastore/src/java/org/apache/hadoop/hive/metastore/events/PreEventContext.java index 449948546f7d..dbc3247ea060 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/events/PreEventContext.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/events/PreEventContext.java @@ -38,6 +38,8 @@ public static enum PreEventType { DROP_DATABASE, LOAD_PARTITION_DONE, AUTHORIZATION_API_CALL, + READ_TABLE, + READ_DATABASE } private final PreEventType eventType; diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/events/PreReadDatabaseEvent.java b/metastore/src/java/org/apache/hadoop/hive/metastore/events/PreReadDatabaseEvent.java new file mode 100644 index 000000000000..d415620da581 --- /dev/null +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/events/PreReadDatabaseEvent.java @@ -0,0 +1,42 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.metastore.events; + +import org.apache.hadoop.hive.metastore.HiveMetaStore.HMSHandler; +import org.apache.hadoop.hive.metastore.api.Database; + +/** + * Database read event + */ +public class PreReadDatabaseEvent extends PreEventContext { + private final Database db; + + public PreReadDatabaseEvent(Database db, HMSHandler handler) { + super(PreEventType.READ_DATABASE, handler); + this.db = db; + } + + /** + * @return the db + */ + public Database getDatabase() { + return db; + } + +} diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/events/PreReadTableEvent.java b/metastore/src/java/org/apache/hadoop/hive/metastore/events/PreReadTableEvent.java new file mode 100644 index 000000000000..b93da6782565 --- /dev/null +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/events/PreReadTableEvent.java @@ -0,0 +1,43 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.metastore.events; + +import org.apache.hadoop.hive.metastore.HiveMetaStore.HMSHandler; +import org.apache.hadoop.hive.metastore.api.Table; + +/** + * Table read event + */ +public class PreReadTableEvent extends PreEventContext { + + private final Table table; + + public PreReadTableEvent(Table table, HMSHandler handler) { + super(PreEventType.READ_TABLE, handler); + this.table = table; + } + + /** + * @return the table + */ + public Table getTable() { + return table; + } + +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationPreEventListener.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationPreEventListener.java index 930285e78ab0..fc9d0bdcef60 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationPreEventListener.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationPreEventListener.java @@ -23,7 +23,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.common.classification.InterfaceAudience.Private; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.metastore.MetaStorePreEventListener; import org.apache.hadoop.hive.metastore.MetaStoreUtils; import org.apache.hadoop.hive.metastore.TableType; @@ -40,6 +42,8 @@ import org.apache.hadoop.hive.metastore.events.PreDropPartitionEvent; import org.apache.hadoop.hive.metastore.events.PreDropTableEvent; import org.apache.hadoop.hive.metastore.events.PreEventContext; +import org.apache.hadoop.hive.metastore.events.PreReadDatabaseEvent; +import org.apache.hadoop.hive.metastore.events.PreReadTableEvent; import org.apache.hadoop.hive.ql.metadata.AuthorizationException; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.HiveUtils; @@ -54,6 +58,7 @@ * metastore PreEventContexts, such as the adding/dropping and altering * of databases, tables and partitions. */ +@Private public class AuthorizationPreEventListener extends MetaStorePreEventListener { public static final Log LOG = LogFactory.getLog( @@ -136,6 +141,12 @@ public void onEvent(PreEventContext context) throws MetaException, NoSuchObjectE case ALTER_TABLE: authorizeAlterTable((PreAlterTableEvent)context); break; + case READ_TABLE: + authorizeReadTable((PreReadTableEvent)context); + break; + case READ_DATABASE: + authorizeReadDatabase((PreReadDatabaseEvent)context); + break; case ADD_PARTITION: authorizeAddPartition((PreAddPartitionEvent)context); break; @@ -162,6 +173,44 @@ public void onEvent(PreEventContext context) throws MetaException, NoSuchObjectE } + private void authorizeReadTable(PreReadTableEvent context) throws InvalidOperationException, + MetaException { + if (!isReadAuthzEnabled()) { + return; + } + try { + org.apache.hadoop.hive.ql.metadata.Table wrappedTable = new TableWrapper(context.getTable()); + for (HiveMetastoreAuthorizationProvider authorizer : tAuthorizers.get()) { + authorizer.authorize(wrappedTable, new Privilege[] { Privilege.SELECT }, null); + } + } catch (AuthorizationException e) { + throw invalidOperationException(e); + } catch (HiveException e) { + throw metaException(e); + } + } + + private void authorizeReadDatabase(PreReadDatabaseEvent context) + throws InvalidOperationException, MetaException { + if (!isReadAuthzEnabled()) { + return; + } + try { + for (HiveMetastoreAuthorizationProvider authorizer : tAuthorizers.get()) { + authorizer.authorize(new Database(context.getDatabase()), + new Privilege[] { Privilege.SELECT }, null); + } + } catch (AuthorizationException e) { + throw invalidOperationException(e); + } catch (HiveException e) { + throw metaException(e); + } + } + + private boolean isReadAuthzEnabled() { + return tConfig.get().getBoolean(ConfVars.HIVE_METASTORE_AUTHORIZATION_AUTH_READS.varname, true); + } + private void authorizeAuthorizationAPICall() throws InvalidOperationException, MetaException { for (HiveMetastoreAuthorizationProvider authorizer : tAuthorizers.get()) { try { @@ -358,7 +407,7 @@ public PartitionWrapper(org.apache.hadoop.hive.ql.metadata.Table table, public PartitionWrapper(org.apache.hadoop.hive.metastore.api.Partition mapiPart, PreEventContext context) throws HiveException, NoSuchObjectException, MetaException { org.apache.hadoop.hive.metastore.api.Partition wrapperApiPart = mapiPart.deepCopy(); - org.apache.hadoop.hive.metastore.api.Table t = context.getHandler().get_table( + org.apache.hadoop.hive.metastore.api.Table t = context.getHandler().get_table_core( mapiPart.getDbName(), mapiPart.getTableName()); if (wrapperApiPart.getSd() == null){ // In the cases of create partition, by the time this event fires, the partition diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/HiveAuthorizationProviderBase.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/HiveAuthorizationProviderBase.java index 18a1b25a2b91..25c25dabaebe 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/HiveAuthorizationProviderBase.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/HiveAuthorizationProviderBase.java @@ -85,7 +85,7 @@ public Database getDatabase(String dbName) throws HiveException { return hiveClient.getDatabase(dbName); } else { try { - return handler.get_database(dbName); + return handler.get_database_core(dbName); } catch (NoSuchObjectException e) { throw new HiveException(e); } catch (MetaException e) { From a9c8be96d70693741f0777a15094fb96b7e7e9df Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Tue, 30 Sep 2014 22:18:14 +0000 Subject: [PATCH 036/339] HIVE-8287 : Metadata action errors don't have information about cause (Thejas Nair, reviewed by Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628567 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/test/e2e/templeton/tests/doas.conf | 4 +- .../test/e2e/templeton/tests/hcatperms.conf | 11 ++-- .../apache/hadoop/hive/ql/metadata/Hive.java | 50 +++++++++---------- .../hive/ql/parse/BaseSemanticAnalyzer.java | 8 ++- .../ql/parse/ColumnStatsSemanticAnalyzer.java | 5 +- .../hive/ql/parse/DDLSemanticAnalyzer.java | 18 ++++--- .../hive/ql/parse/SemanticAnalyzer.java | 13 +++-- .../parse/UpdateDeleteSemanticAnalyzer.java | 27 ++++++---- .../authorization_sba_drop_table.q | 9 ++++ .../authorization_uri_create_table1.q | 2 +- .../alter_partition_with_whitelist.q.out | 2 +- .../alter_rename_partition_failure2.q.out | 2 +- .../authorization_sba_drop_table.q.out | 16 ++++++ ...isallow_incompatible_type_change_on1.q.out | 3 +- ...isallow_incompatible_type_change_on2.q.out | 3 +- .../clientnegative/temp_table_rename.q.out | 2 +- 16 files changed, 116 insertions(+), 59 deletions(-) create mode 100644 ql/src/test/queries/clientnegative/authorization_sba_drop_table.q create mode 100644 ql/src/test/results/clientnegative/authorization_sba_drop_table.q.out diff --git a/hcatalog/src/test/e2e/templeton/tests/doas.conf b/hcatalog/src/test/e2e/templeton/tests/doas.conf index 284168b3f389..5d67968585e3 100644 --- a/hcatalog/src/test/e2e/templeton/tests/doas.conf +++ b/hcatalog/src/test/e2e/templeton/tests/doas.conf @@ -109,7 +109,7 @@ $cfg = 'method' => 'GET', 'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/:UNAME:_doastab2/partition?user.name=:UNAME:&doAs=:DOAS:', 'status_code' => 500, - 'json_field_substr_match' => {'error' => 'FAILED: AuthorizationException java\.security\.AccessControlException: action READ not permitted on path .* for user :DOAS:'}, + 'json_field_substr_match' => {'error' => 'java\.security\.AccessControlException: Permission denied: user=:DOAS:, access=READ'}, }, { @@ -118,7 +118,7 @@ $cfg = 'method' => 'DELETE', 'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/default/table/:UNAME:_doastab2?user.name=:UNAME:&doAs=:DOAS:', 'status_code' => 500, - 'json_field_substr_match' => {'error' => 'java\.security\.AccessControlException: action WRITE not permitted on path .* for user :DOAS:'}, + 'json_field_substr_match' => {'error' => 'java\.security\.AccessControlException: Permission denied: user=:DOAS:, access=READ'}, }, { #descbe the table.... diff --git a/hcatalog/src/test/e2e/templeton/tests/hcatperms.conf b/hcatalog/src/test/e2e/templeton/tests/hcatperms.conf index 9b6d71f765a4..0c0913e01a15 100644 --- a/hcatalog/src/test/e2e/templeton/tests/hcatperms.conf +++ b/hcatalog/src/test/e2e/templeton/tests/hcatperms.conf @@ -372,6 +372,13 @@ $cfg = #check if group user is able to create table 'num' => 12, 'setup' => [ + { + 'method' => 'DELETE', + 'format_header' => 'Content-Type: application/json', + 'url' => ':TEMPLETON_URL:/templeton/v1/ddl/database/hcatperms_:TNUM:/table/permstable_:TNUM:', + 'user_name' => ':UNAME_GROUP:', + 'status_code' => 200, + }, { 'method' => 'DELETE', 'format_header' => 'Content-Type: application/json', @@ -677,9 +684,7 @@ $cfg = 'format_header' => 'Content-Type: application/json', 'user_name' => ':UNAME_OTHER:', 'status_code' => 500, - 'json_field_substr_match' => {'error' => 'FAILED: AuthorizationException .*\.security\.AccessControlException: action READ not permitted on path .* for user :UNAME_OTHER:'}, - - + 'json_field_substr_match' => {'error' => 'AccessControlException: Permission denied: user=:UNAME_OTHER:, access=READ'}, }, diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index a9efdf44f33a..501a1bd6795a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -109,8 +109,8 @@ import org.apache.hadoop.hive.shims.HadoopShims; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.mapred.InputFormat; -import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.util.StringUtils; import org.apache.thrift.TException; import com.google.common.collect.Sets; @@ -427,9 +427,9 @@ public void alterTable(String tblName, Table newTbl) newTbl.checkValidity(); getMSC().alter_table(names[0], names[1], newTbl.getTTable()); } catch (MetaException e) { - throw new HiveException("Unable to alter table.", e); + throw new HiveException("Unable to alter table. " + e.getMessage(), e); } catch (TException e) { - throw new HiveException("Unable to alter table.", e); + throw new HiveException("Unable to alter table. " + e.getMessage(), e); } } @@ -455,9 +455,9 @@ public void alterIndex(String dbName, String baseTblName, String idxName, Index try { getMSC().alter_index(dbName, baseTblName, idxName, newIdx); } catch (MetaException e) { - throw new HiveException("Unable to alter index.", e); + throw new HiveException("Unable to alter index. " + e.getMessage(), e); } catch (TException e) { - throw new HiveException("Unable to alter index.", e); + throw new HiveException("Unable to alter index. " + e.getMessage(), e); } } @@ -502,9 +502,9 @@ public void alterPartition(String dbName, String tblName, Partition newPart) getMSC().alter_partition(dbName, tblName, newPart.getTPartition()); } catch (MetaException e) { - throw new HiveException("Unable to alter partition.", e); + throw new HiveException("Unable to alter partition. " + e.getMessage(), e); } catch (TException e) { - throw new HiveException("Unable to alter partition.", e); + throw new HiveException("Unable to alter partition. " + e.getMessage(), e); } } @@ -534,9 +534,9 @@ public void alterPartitions(String tblName, List newParts) } getMSC().alter_partitions(names[0], names[1], newTParts); } catch (MetaException e) { - throw new HiveException("Unable to alter partition.", e); + throw new HiveException("Unable to alter partition. " + e.getMessage(), e); } catch (TException e) { - throw new HiveException("Unable to alter partition.", e); + throw new HiveException("Unable to alter partition. " + e.getMessage(), e); } } /** @@ -578,11 +578,11 @@ public void renamePartition(Table tbl, Map oldPartSpec, Partitio newPart.getTPartition()); } catch (InvalidOperationException e){ - throw new HiveException("Unable to rename partition.", e); + throw new HiveException("Unable to rename partition. " + e.getMessage(), e); } catch (MetaException e) { - throw new HiveException("Unable to rename partition.", e); + throw new HiveException("Unable to rename partition. " + e.getMessage(), e); } catch (TException e) { - throw new HiveException("Unable to rename partition.", e); + throw new HiveException("Unable to rename partition. " + e.getMessage(), e); } } @@ -591,11 +591,11 @@ public void alterDatabase(String dbName, Database db) try { getMSC().alterDatabase(dbName, db); } catch (MetaException e) { - throw new HiveException("Unable to alter database " + dbName, e); + throw new HiveException("Unable to alter database " + dbName + ". " + e.getMessage(), e); } catch (NoSuchObjectException e) { throw new HiveException("Database " + dbName + " does not exists.", e); } catch (TException e) { - throw new HiveException("Unable to alter database " + dbName, e); + throw new HiveException("Unable to alter database " + dbName + ". " + e.getMessage(), e); } } /** @@ -870,9 +870,9 @@ public boolean dropIndex(String db_name, String tbl_name, String index_name, boo try { return getMSC().dropIndex(db_name, tbl_name, index_name, deleteData); } catch (NoSuchObjectException e) { - throw new HiveException("Partition or table doesn't exist.", e); + throw new HiveException("Partition or table doesn't exist. " + e.getMessage(), e); } catch (Exception e) { - throw new HiveException("Unknown error. Please check logs.", e); + throw new HiveException(e.getMessage(), e); } } @@ -1041,7 +1041,7 @@ public Table getTable(final String dbName, final String tableName, } return null; } catch (Exception e) { - throw new HiveException("Unable to fetch table " + tableName, e); + throw new HiveException("Unable to fetch table " + tableName + ". " + e.getMessage(), e); } // For non-views, we need to do some extra fixes @@ -1763,7 +1763,7 @@ public boolean dropPartition(String db_name, String tbl_name, } catch (NoSuchObjectException e) { throw new HiveException("Partition or table doesn't exist.", e); } catch (Exception e) { - throw new HiveException("Unknown error. Please check logs.", e); + throw new HiveException(e.getMessage(), e); } } @@ -1792,7 +1792,7 @@ public List dropPartitions(String dbName, String tblName, } catch (NoSuchObjectException e) { throw new HiveException("Partition or table doesn't exist.", e); } catch (Exception e) { - throw new HiveException("Unknown error. Please check logs.", e); + throw new HiveException(e.getMessage(), e); } } @@ -2285,7 +2285,7 @@ public boolean accept(Path p) { result.add(srcToDest); } } catch (IOException e) { - throw new HiveException("checkPaths: filesystem error in check phase", e); + throw new HiveException("checkPaths: filesystem error in check phase. " + e.getMessage(), e); } return result; } @@ -2352,7 +2352,7 @@ public static boolean renameFile(HiveConf conf, Path srcf, Path destf, try { ShimLoader.getHadoopShims().setFullFileStatus(conf, destStatus, fs, destf); } catch (IOException e) { - LOG.warn("Error setting permission of file " + destf + ": "+ StringUtils.stringifyException(e)); + LOG.warn("Error setting permission of file " + destf + ": "+ e.getMessage(), e); } } return success; @@ -2391,7 +2391,7 @@ static protected void copyFiles(HiveConf conf, Path srcf, Path destf, srcs = srcFs.globStatus(srcf); } catch (IOException e) { LOG.error(StringUtils.stringifyException(e)); - throw new HiveException("addFiles: filesystem error in check phase", e); + throw new HiveException("addFiles: filesystem error in check phase. " + e.getMessage(), e); } if (srcs == null) { LOG.info("No sources specified to move: " + srcf); @@ -2417,7 +2417,7 @@ static protected void copyFiles(HiveConf conf, Path srcf, Path destf, } } } catch (IOException e) { - throw new HiveException("copyFiles: error while moving files!!!", e); + throw new HiveException("copyFiles: error while moving files!!! " + e.getMessage(), e); } } } @@ -2489,7 +2489,7 @@ private static void moveAcidFiles(FileSystem fs, FileStatus[] stats, Path dst) fs.rename(bucketSrc, bucketDest); } } catch (IOException e) { - throw new HiveException("Error moving acid files", e); + throw new HiveException("Error moving acid files " + e.getMessage(), e); } } } @@ -2721,7 +2721,7 @@ public boolean updatePartitionColumnStatistics(ColumnStatistics statsObj) throws throw new HiveException(e); } } - + public boolean setPartitionColumnStatistics(SetPartitionsStatsRequest request) throws HiveException { try { return getMSC().setPartitionColumnStatistics(request); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java index 14a0252bd4d3..37cbf7f7523b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java @@ -1285,7 +1285,7 @@ protected Database getDatabase(String dbName, boolean throwException) throws Sem try { database = db.getDatabase(dbName); } catch (Exception e) { - throw new SemanticException(ErrorMsg.DATABASE_NOT_EXISTS.getMsg(dbName), e); + throw new SemanticException(e.getMessage(), e); } if (database == null && throwException) { throw new SemanticException(ErrorMsg.DATABASE_NOT_EXISTS.getMsg(dbName)); @@ -1315,9 +1315,13 @@ protected Table getTable(String database, String tblName, boolean throwException try { tab = database == null ? db.getTable(tblName, false) : db.getTable(database, tblName, false); - } catch (Exception e) { + } + catch (InvalidTableException e) { throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tblName), e); } + catch (Exception e) { + throw new SemanticException(e.getMessage(), e); + } if (tab == null && throwException) { throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tblName)); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java index 8e85c935d20d..73348d89ee72 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java @@ -33,6 +33,7 @@ import org.apache.hadoop.hive.ql.ErrorMsg; import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.ql.metadata.InvalidTableException; import org.apache.hadoop.hive.ql.metadata.Table; /** @@ -95,8 +96,10 @@ private Table getTable(ASTNode tree) throws SemanticException { String tableName = getUnescapedName((ASTNode) tree.getChild(0).getChild(0)); try { return db.getTable(tableName); + } catch (InvalidTableException e) { + throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tableName), e); } catch (HiveException e) { - throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tableName)); + throw new SemanticException(e.getMessage(), e); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index 4eba95015fdf..4e58ad8df421 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -79,6 +79,7 @@ import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.HiveUtils; +import org.apache.hadoop.hive.ql.metadata.InvalidTableException; import org.apache.hadoop.hive.ql.metadata.Partition; import org.apache.hadoop.hive.ql.metadata.Table; import org.apache.hadoop.hive.ql.parse.authorization.AuthorizationParseUtils; @@ -1718,7 +1719,8 @@ static public String getFullyQualifiedName(ASTNode ast) { // assume the first component of DOT delimited name is tableName // get the attemptTableName - static public String getAttemptTableName(Hive db, String qualifiedName, boolean isColumn) { + static public String getAttemptTableName(Hive db, String qualifiedName, boolean isColumn) + throws SemanticException { // check whether the name starts with table // DESCRIBE table // DESCRIBE table.column @@ -1739,11 +1741,13 @@ static public String getAttemptTableName(Hive db, String qualifiedName, boolean return tableName; } } - } catch (HiveException e) { + } catch (InvalidTableException e) { // assume the first DOT delimited component is tableName // OK if it is not // do nothing when having exception return null; + } catch (HiveException e) { + throw new SemanticException(e.getMessage(), e); } return null; } @@ -1824,7 +1828,7 @@ static public String getColPath( ASTNode parentAst, ASTNode ast, String tableName, - Map partSpec) { + Map partSpec) throws SemanticException { // if parent has two children // it could be DESCRIBE table key @@ -1880,11 +1884,13 @@ static public Map getPartitionSpec(Hive db, ASTNode ast, String Table tab = null; try { tab = db.getTable(tableName); - } catch (HiveException e) { - // if table not valid - // throw semantic exception + } + catch (InvalidTableException e) { throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tableName), e); } + catch (HiveException e) { + throw new SemanticException(e.getMessage(), e); + } if (partSpec != null) { Partition part = null; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 117f7b36195a..48b598be7dbf 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -110,6 +110,7 @@ import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.HiveUtils; +import org.apache.hadoop.hive.ql.metadata.InvalidTableException; import org.apache.hadoop.hive.ql.metadata.Partition; import org.apache.hadoop.hive.ql.metadata.Table; import org.apache.hadoop.hive.ql.metadata.VirtualColumn; @@ -11054,9 +11055,13 @@ private void validateAnalyzeNoscan(ASTNode tree) throws SemanticException { Table tbl; try { tbl = db.getTable(tableName); - } catch (HiveException e) { - throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tableName)); + } catch (InvalidTableException e) { + throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tableName), e); + } + catch (HiveException e) { + throw new SemanticException(e.getMessage(), e); } + /* noscan uses hdfs apis to retrieve such information from Namenode. */ /* But that will be specific to hdfs. Through storagehandler mechanism, */ /* storage of table could be on any storage system: hbase, cassandra etc. */ @@ -11079,8 +11084,10 @@ private void validateAnalyzePartialscan(ASTNode tree) throws SemanticException { Table tbl; try { tbl = db.getTable(tableName); + } catch (InvalidTableException e) { + throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tableName), e); } catch (HiveException e) { - throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tableName)); + throw new SemanticException(e.getMessage(), e); } /* partialscan uses hdfs apis to retrieve such information from Namenode. */ /* But that will be specific to hdfs. Through storagehandler mechanism, */ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java index 9bc4e7696c92..14ee3f0ae01f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java @@ -17,6 +17,13 @@ */ package org.apache.hadoop.hive.ql.parse; +import java.io.IOException; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.Context; @@ -27,19 +34,12 @@ import org.apache.hadoop.hive.ql.io.AcidUtils; import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.ql.metadata.InvalidTableException; import org.apache.hadoop.hive.ql.metadata.Table; import org.apache.hadoop.hive.ql.metadata.VirtualColumn; import org.apache.hadoop.hive.ql.session.SessionState; -import java.io.IOException; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - - /** * A subclass of the {@link org.apache.hadoop.hive.ql.parse.SemanticAnalyzer} that just handles * update and delete statements. It works by rewriting the updates and deletes into insert @@ -128,11 +128,16 @@ private void reparseAndSuperAnalyze(ASTNode tree) throws SemanticException { Table mTable; try { mTable = db.getTable(tableName[0], tableName[1]); + } catch (InvalidTableException e) { + LOG.error("Failed to find table " + getDotName(tableName) + " got exception " + + e.getMessage()); + throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(getDotName(tableName)), e); } catch (HiveException e) { - LOG.error("Failed to find table " + getDotName(tableName) + " got exception " + - e.getMessage()); - throw new SemanticException(ErrorMsg.INVALID_TABLE, getDotName(tableName)); + LOG.error("Failed to find table " + getDotName(tableName) + " got exception " + + e.getMessage()); + throw new SemanticException(e.getMessage(), e); } + List partCols = mTable.getPartCols(); rewrittenQueryStr.append("insert into table "); diff --git a/ql/src/test/queries/clientnegative/authorization_sba_drop_table.q b/ql/src/test/queries/clientnegative/authorization_sba_drop_table.q new file mode 100644 index 000000000000..6fac02513ac7 --- /dev/null +++ b/ql/src/test/queries/clientnegative/authorization_sba_drop_table.q @@ -0,0 +1,9 @@ +set hive.metastore.pre.event.listeners=org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener; +set hive.security.metastore.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider; + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/a_sba_droptab1; + +create table t1(i int) location '${system:test.tmp.dir}/a_sba_droptab1'; +dfs -chmod 555 ${system:test.tmp.dir}/a_sba_droptab1; +-- Attempt to drop table without having write permissions on table dir should result in error +drop table t1; diff --git a/ql/src/test/queries/clientnegative/authorization_uri_create_table1.q b/ql/src/test/queries/clientnegative/authorization_uri_create_table1.q index fb50a7dac0c2..307c4f66eca8 100644 --- a/ql/src/test/queries/clientnegative/authorization_uri_create_table1.q +++ b/ql/src/test/queries/clientnegative/authorization_uri_create_table1.q @@ -7,6 +7,6 @@ dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/a_uri_crtab1; dfs -touchz ${system:test.tmp.dir}/a_uri_crtab1/1.txt; dfs -chmod 555 ${system:test.tmp.dir}/a_uri_crtab1/1.txt; -create table t1(i int) location '${system:test.tmp.dir}/a_uri_crtab_ext'; +create table t1(i int) location '${system:test.tmp.dir}/a_uri_crtab1'; -- Attempt to create table with dir that does not have write permission should fail diff --git a/ql/src/test/results/clientnegative/alter_partition_with_whitelist.q.out b/ql/src/test/results/clientnegative/alter_partition_with_whitelist.q.out index 33eab1278d53..197cd1df8016 100644 --- a/ql/src/test/results/clientnegative/alter_partition_with_whitelist.q.out +++ b/ql/src/test/results/clientnegative/alter_partition_with_whitelist.q.out @@ -27,4 +27,4 @@ PREHOOK: query: ALTER TABLE part_whitelist_test PARTITION (ds='1') rename to par PREHOOK: type: ALTERTABLE_RENAMEPART PREHOOK: Input: default@part_whitelist_test PREHOOK: Output: default@part_whitelist_test@ds=1 -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to rename partition. +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to rename partition. Partition value '1,2,3' contains a character not matched by whitelist pattern '[\\x20-\\x7E&&[^,]]*'. (configure with hive.metastore.partition.name.whitelist.pattern) diff --git a/ql/src/test/results/clientnegative/alter_rename_partition_failure2.q.out b/ql/src/test/results/clientnegative/alter_rename_partition_failure2.q.out index 635df4ec0d59..acb66acd435a 100644 --- a/ql/src/test/results/clientnegative/alter_rename_partition_failure2.q.out +++ b/ql/src/test/results/clientnegative/alter_rename_partition_failure2.q.out @@ -35,4 +35,4 @@ PREHOOK: query: alter table alter_rename_partition partition (pCol1='old_part1:' PREHOOK: type: ALTERTABLE_RENAMEPART PREHOOK: Input: default@alter_rename_partition PREHOOK: Output: default@alter_rename_partition@pcol1=old_part1%3A/pcol2=old_part2%3A -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to rename partition. +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to rename partition. Partition already exists:default.alter_rename_partition.[old_part1:, old_part2:] diff --git a/ql/src/test/results/clientnegative/authorization_sba_drop_table.q.out b/ql/src/test/results/clientnegative/authorization_sba_drop_table.q.out new file mode 100644 index 000000000000..39cf42efbe74 --- /dev/null +++ b/ql/src/test/results/clientnegative/authorization_sba_drop_table.q.out @@ -0,0 +1,16 @@ +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +#### A masked pattern was here #### +PREHOOK: Output: database:default +PREHOOK: Output: default@t1 +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +#### A masked pattern was here #### +POSTHOOK: Output: database:default +POSTHOOK: Output: default@t1 +PREHOOK: query: -- Attempt to drop table without having write permissions on table dir should result in error +drop table t1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@t1 +PREHOOK: Output: default@t1 +#### A masked pattern was here #### diff --git a/ql/src/test/results/clientnegative/disallow_incompatible_type_change_on1.q.out b/ql/src/test/results/clientnegative/disallow_incompatible_type_change_on1.q.out index 8fee4e192143..96600eb48738 100644 --- a/ql/src/test/results/clientnegative/disallow_incompatible_type_change_on1.q.out +++ b/ql/src/test/results/clientnegative/disallow_incompatible_type_change_on1.q.out @@ -107,4 +107,5 @@ ALTER TABLE test_table123 REPLACE COLUMNS (a INT, b STRING) PREHOOK: type: ALTERTABLE_REPLACECOLS PREHOOK: Input: default@test_table123 PREHOOK: Output: default@test_table123 -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. The following columns have types incompatible with the existing columns in their respective positions : +b diff --git a/ql/src/test/results/clientnegative/disallow_incompatible_type_change_on2.q.out b/ql/src/test/results/clientnegative/disallow_incompatible_type_change_on2.q.out index c32efa6ddcf2..6291feb9310c 100644 --- a/ql/src/test/results/clientnegative/disallow_incompatible_type_change_on2.q.out +++ b/ql/src/test/results/clientnegative/disallow_incompatible_type_change_on2.q.out @@ -40,4 +40,5 @@ PREHOOK: query: ALTER TABLE test_table123 CHANGE COLUMN b b MAP PREHOOK: type: ALTERTABLE_RENAMECOL PREHOOK: Input: default@test_table123 PREHOOK: Output: default@test_table123 -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. The following columns have types incompatible with the existing columns in their respective positions : +b diff --git a/ql/src/test/results/clientnegative/temp_table_rename.q.out b/ql/src/test/results/clientnegative/temp_table_rename.q.out index 7622a2528e98..0956ababf367 100644 --- a/ql/src/test/results/clientnegative/temp_table_rename.q.out +++ b/ql/src/test/results/clientnegative/temp_table_rename.q.out @@ -18,4 +18,4 @@ PREHOOK: query: alter table tmp2 rename to tmp1 PREHOOK: type: ALTERTABLE_RENAME PREHOOK: Input: default@tmp2 PREHOOK: Output: default@tmp2 -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. Cannot rename temporary table to tmp1 - temporary table already exists with the same name From 99f6226482f8df79a37b4efae1827e8e70bbb903 Mon Sep 17 00:00:00 2001 From: Sushanth Sowmyan Date: Wed, 1 Oct 2014 00:14:10 +0000 Subject: [PATCH 037/339] HIVE-7891 : Table-creation fails through HCatClient for Oracle-based metastore (Mithun Radhakrishnan via Sushanth Sowmyan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628581 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/org/apache/hive/hcatalog/api/HCatTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatTable.java b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatTable.java index 2e2987dc3afb..c08942cb1e7e 100644 --- a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatTable.java +++ b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatTable.java @@ -168,7 +168,7 @@ Table toHiveTable() throws HCatException { newTable.setTableType(TableType.MANAGED_TABLE.toString()); } - if (this.comment != null) { + if (StringUtils.isNotBlank(this.comment)) { newTable.putToParameters("comment", comment); } From aa12e76b4d853fa9e4fae6ae4dd148ae145efbd9 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 1 Oct 2014 05:28:37 +0000 Subject: [PATCH 038/339] HIVE-8263 : CBO : TPC-DS Q64 is item is joined last with store_sales while it should be first as it is the most selective (Harish Butani via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628602 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/optimizer/optiq/stats/HiveRelMdRowCount.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java index d87c808a6187..949eb192b63e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java @@ -222,10 +222,8 @@ public static PKFKRelationInfo analyzeJoinForPKFK(JoinRelBase joinRel) { return null; } - double leftRowCount = RelMetadataQuery.getRowCount(left) - * RelMetadataQuery.getSelectivity(left, leftPred); - double rightRowCount = RelMetadataQuery.getRowCount(right) - * RelMetadataQuery.getSelectivity(right, rightPred); + double leftRowCount = RelMetadataQuery.getRowCount(left); + double rightRowCount = RelMetadataQuery.getRowCount(right); if (leftIsKey && rightIsKey) { if (rightRowCount < leftRowCount) { @@ -275,7 +273,7 @@ public static PKFKRelationInfo analyzeJoinForPKFK(JoinRelBase joinRel) { PKSideInfo pkInfo = new PKSideInfo(leftRowCount, leftNDV, joinRel.getJoinType().generatesNullsOnRight() ? 1.0 : - RelMetadataQuery.getSelectivity(left, leftPred)); + isPKSideSimpleTree ? RelMetadataQuery.getSelectivity(left, leftPred) : 1.0); return new PKFKRelationInfo(1, fkInfo, pkInfo, ndvScalingFactor, isPKSideSimpleTree); } @@ -286,7 +284,7 @@ public static PKFKRelationInfo analyzeJoinForPKFK(JoinRelBase joinRel) { PKSideInfo pkInfo = new PKSideInfo(rightRowCount, rightNDV, joinRel.getJoinType().generatesNullsOnLeft() ? 1.0 : - RelMetadataQuery.getSelectivity(right, rightPred)); + isPKSideSimpleTree ? RelMetadataQuery.getSelectivity(right, rightPred) : 1.0); return new PKFKRelationInfo(1, fkInfo, pkInfo, ndvScalingFactor, isPKSideSimpleTree); } From 6638b4539c1bb964f27b0e5035d2897459efbfe6 Mon Sep 17 00:00:00 2001 From: Sushanth Sowmyan Date: Wed, 1 Oct 2014 09:44:12 +0000 Subject: [PATCH 039/339] HIVE-7420 : Parameterize tests for HCatalog Pig interfaces for testing against all storage formats (David Chen via Sushanth Sowmyan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628661 13f79535-47bb-0310-9956-ffa450edef68 --- hcatalog/hcatalog-pig-adapter/pom.xml | 7 + .../hive/hcatalog/pig/TestHCatLoader.java | 98 ++++-- .../pig/TestHCatLoaderComplexSchema.java | 68 ++-- .../hive/hcatalog/pig/TestHCatStorer.java | 291 ++++++++++++------ .../hcatalog/pig/TestHCatStorerMulti.java | 48 ++- .../hive/hcatalog/pig/TestOrcHCatLoader.java | 29 -- .../pig/TestOrcHCatLoaderComplexSchema.java | 28 -- .../hive/hcatalog/pig/TestOrcHCatStorer.java | 32 -- .../hcatalog/pig/TestOrcHCatStorerMulti.java | 28 -- .../apache/hive/hcatalog/pig/TestUtil.java | 76 +++++ .../hadoop/hive/ql/io/StorageFormats.java | 20 +- 11 files changed, 462 insertions(+), 263 deletions(-) delete mode 100644 hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatLoader.java delete mode 100644 hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatLoaderComplexSchema.java delete mode 100644 hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatStorer.java delete mode 100644 hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatStorerMulti.java create mode 100644 hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestUtil.java diff --git a/hcatalog/hcatalog-pig-adapter/pom.xml b/hcatalog/hcatalog-pig-adapter/pom.xml index 4d2ca519d413..7589efb35935 100644 --- a/hcatalog/hcatalog-pig-adapter/pom.xml +++ b/hcatalog/hcatalog-pig-adapter/pom.xml @@ -53,6 +53,13 @@ tests test + + org.apache.hive + hive-exec + ${project.version} + test-jar + test + diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java index ee3e75066082..965773c729cd 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java @@ -28,10 +28,12 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.Set; import org.apache.commons.io.FileUtils; @@ -42,6 +44,8 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.CommandNeedRetryException; import org.apache.hadoop.hive.ql.Driver; +import org.apache.hadoop.hive.ql.io.IOConstants; +import org.apache.hadoop.hive.ql.io.StorageFormats; import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.serde2.ColumnProjectionUtils; @@ -69,12 +73,16 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static org.junit.Assert.*; +import static org.junit.Assume.assumeTrue; +@RunWith(Parameterized.class) public class TestHCatLoader { private static final Logger LOG = LoggerFactory.getLogger(TestHCatLoader.class); private static final String TEST_DATA_DIR = HCatUtil.makePathASafeFileName(System.getProperty("java.io.tmpdir") + @@ -91,9 +99,30 @@ public class TestHCatLoader { private Driver driver; private Map> basicInputData; - protected String storageFormat() { - return "RCFILE tblproperties('hcat.isd'='org.apache.hive.hcatalog.rcfile.RCFileInputDriver'," + - "'hcat.osd'='org.apache.hive.hcatalog.rcfile.RCFileOutputDriver')"; + private static final Map> DISABLED_STORAGE_FORMATS = + new HashMap>() {{ + put(IOConstants.AVRO, new HashSet() {{ + add("testReadDataBasic"); + add("testReadPartitionedBasic"); + add("testProjectionsBasic"); + add("testSchemaLoadPrimitiveTypes"); + }}); + put(IOConstants.PARQUETFILE, new HashSet() {{ + add("testReadDataBasic"); + add("testReadPartitionedBasic"); + add("testProjectionsBasic"); + }}); + }}; + + private String storageFormat; + + @Parameterized.Parameters + public static Collection generateParameters() { + return StorageFormats.names(); + } + + public TestHCatLoader(String storageFormat) { + this.storageFormat = storageFormat; } private void dropTable(String tablename) throws IOException, CommandNeedRetryException { @@ -105,7 +134,7 @@ static void dropTable(String tablename, Driver driver) throws IOException, Comma } private void createTable(String tablename, String schema, String partitionedBy) throws IOException, CommandNeedRetryException { - createTable(tablename, schema, partitionedBy, driver, storageFormat()); + createTable(tablename, schema, partitionedBy, driver, storageFormat); } static void createTable(String tablename, String schema, String partitionedBy, Driver driver, String storageFormat) @@ -209,17 +238,18 @@ public void setup() throws Exception { server.registerQuery("D = load '" + COMPLEX_FILE_NAME + "' as (name:chararray, studentid:int, contact:tuple(phno:chararray,email:chararray), currently_registered_courses:bag{innertup:tuple(course:chararray)}, current_grades:map[ ] , phnos :bag{innertup:tuple(phno:chararray,type:chararray)});", ++i); server.registerQuery("store D into '" + COMPLEX_TABLE + "' using org.apache.hive.hcatalog.pig.HCatStorer();", ++i); server.executeBatch(); - } @After public void tearDown() throws Exception { try { - dropTable(BASIC_TABLE); - dropTable(COMPLEX_TABLE); - dropTable(PARTITIONED_TABLE); - dropTable(SPECIFIC_SIZE_TABLE); - dropTable(AllTypesTable.ALL_PRIMITIVE_TYPES_TABLE); + if (driver != null) { + dropTable(BASIC_TABLE); + dropTable(COMPLEX_TABLE); + dropTable(PARTITIONED_TABLE); + dropTable(SPECIFIC_SIZE_TABLE); + dropTable(AllTypesTable.ALL_PRIMITIVE_TYPES_TABLE); + } } finally { FileUtils.deleteDirectory(new File(TEST_DATA_DIR)); } @@ -227,6 +257,7 @@ public void tearDown() throws Exception { @Test public void testSchemaLoadBasic() throws IOException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); PigServer server = new PigServer(ExecType.LOCAL); @@ -241,23 +272,28 @@ public void testSchemaLoadBasic() throws IOException { assertTrue(Xfields.get(1).type == DataType.CHARARRAY); } + /** * Test that we properly translate data types in Hive/HCat table schema into Pig schema */ @Test public void testSchemaLoadPrimitiveTypes() throws IOException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); AllTypesTable.testSchemaLoadPrimitiveTypes(); } + /** * Test that value from Hive table are read properly in Pig */ @Test public void testReadDataPrimitiveTypes() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); AllTypesTable.testReadDataPrimitiveTypes(); } @Test public void testReadDataBasic() throws IOException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); PigServer server = new PigServer(ExecType.LOCAL); server.registerQuery("X = load '" + BASIC_TABLE + "' using org.apache.hive.hcatalog.pig.HCatLoader();"); @@ -279,6 +315,7 @@ public void testReadDataBasic() throws IOException { @Test public void testSchemaLoadComplex() throws IOException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); PigServer server = new PigServer(ExecType.LOCAL); @@ -337,6 +374,7 @@ public void testSchemaLoadComplex() throws IOException { @Test public void testReadPartitionedBasic() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); PigServer server = new PigServer(ExecType.LOCAL); driver.run("select * from " + PARTITIONED_TABLE); @@ -404,6 +442,7 @@ public void testReadPartitionedBasic() throws IOException, CommandNeedRetryExcep @Test public void testProjectionsBasic() throws IOException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); PigServer server = new PigServer(ExecType.LOCAL); @@ -453,6 +492,7 @@ public void testProjectionsBasic() throws IOException { @Test public void testColumnarStorePushdown() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); String PIGOUTPUT_DIR = TEST_DATA_DIR+ "/colpushdownop"; String PIG_FILE = "test.pig"; String expectedCols = "0,1"; @@ -486,6 +526,7 @@ public void testColumnarStorePushdown() throws Exception { @Test public void testGetInputBytes() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); File file = new File(TEST_WAREHOUSE_DIR + "/" + SPECIFIC_SIZE_TABLE + "/part-m-00000"); file.deleteOnExit(); RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw"); @@ -501,6 +542,7 @@ public void testGetInputBytes() throws Exception { @Test public void testConvertBooleanToInt() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); String tbl = "test_convert_boolean_to_int"; String inputFileName = TEST_DATA_DIR + "/testConvertBooleanToInt/data.txt"; File inputDataDir = new File(inputFileName).getParentFile(); @@ -608,22 +650,26 @@ private static void testReadDataPrimitiveTypes() throws Exception { Tuple t = XIter.next(); assertEquals(HCatFieldSchema.Type.numPrimitiveTypes(), t.size()); int colPos = 0; - for(Object referenceData : primitiveRows[numTuplesRead]) { - if(referenceData == null) { - assertTrue("rowNum=" + numTuplesRead + " colNum=" + colPos + " Reference data is null; actual " + - t.get(colPos), t.get(colPos) == null); - } - else if(referenceData instanceof java.util.Date) { - assertTrue("rowNum=" + numTuplesRead + " colNum=" + colPos + " Reference data=" + ((java.util.Date)referenceData).getTime() + " actual=" + - ((DateTime)t.get(colPos)).getMillis() + "; types=(" + referenceData.getClass() + "," + t.get(colPos).getClass() + ")", + for (Object referenceData : primitiveRows[numTuplesRead]) { + if (referenceData == null) { + assertTrue("rowNum=" + numTuplesRead + " colNum=" + colPos + + " Reference data is null; actual " + + t.get(colPos), t.get(colPos) == null); + } else if (referenceData instanceof java.util.Date) { + // Note that here we ignore nanos part of Hive Timestamp since nanos are dropped when + // reading Hive from Pig by design. + assertTrue("rowNum=" + numTuplesRead + " colNum=" + colPos + + " Reference data=" + ((java.util.Date)referenceData).getTime() + + " actual=" + ((DateTime)t.get(colPos)).getMillis() + + "; types=(" + referenceData.getClass() + "," + t.get(colPos).getClass() + ")", ((java.util.Date)referenceData).getTime()== ((DateTime)t.get(colPos)).getMillis()); - //note that here we ignore nanos part of Hive Timestamp since nanos are dropped when reading Hive from Pig by design - } - else { - assertTrue("rowNum=" + numTuplesRead + " colNum=" + colPos + " Reference data=" + referenceData + " actual=" + - t.get(colPos) + "; types=(" + referenceData.getClass() + "," + t.get(colPos).getClass() + ")", + } else { + // Doing String comps here as value objects in Hive in Pig are different so equals() + // doesn't work. + assertTrue("rowNum=" + numTuplesRead + " colNum=" + colPos + + " Reference data=" + referenceData + " actual=" + t.get(colPos) + + "; types=(" + referenceData.getClass() + "," + t.get(colPos).getClass() + ") ", referenceData.toString().equals(t.get(colPos).toString())); - //doing String comps here as value objects in Hive in Pig are different so equals() doesn't work } colPos++; } @@ -633,10 +679,10 @@ else if(referenceData instanceof java.util.Date) { } private static void setupAllTypesTable(Driver driver) throws Exception { String[] primitiveData = new String[primitiveRows.length]; - for(int i = 0; i < primitiveRows.length; i++) { + for (int i = 0; i < primitiveRows.length; i++) { Object[] rowData = primitiveRows[i]; StringBuilder row = new StringBuilder(); - for(Object cell : rowData) { + for (Object cell : rowData) { row.append(row.length() == 0 ? "" : "\t").append(cell == null ? null : cell); } primitiveData[i] = row.toString(); diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java index 40ec5976da72..447f39fade0b 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java @@ -18,19 +18,25 @@ */ package org.apache.hive.hcatalog.pig; +import com.google.common.collect.ImmutableSet; + import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; - -import junit.framework.Assert; +import java.util.Map; +import java.util.Set; import org.apache.hadoop.hive.cli.CliSessionState; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.CommandNeedRetryException; import org.apache.hadoop.hive.ql.Driver; +import org.apache.hadoop.hive.ql.io.IOConstants; +import org.apache.hadoop.hive.ql.io.StorageFormats; import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; import org.apache.hadoop.hive.ql.session.SessionState; @@ -46,12 +52,20 @@ import org.apache.pig.impl.logicalLayer.schema.Schema; import org.apache.pig.impl.logicalLayer.schema.Schema.FieldSchema; +import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assume.assumeTrue; + +@RunWith(Parameterized.class) public class TestHCatLoaderComplexSchema { //private static MiniCluster cluster = MiniCluster.buildCluster(); @@ -59,13 +73,33 @@ public class TestHCatLoaderComplexSchema { //private static Properties props; private static final Logger LOG = LoggerFactory.getLogger(TestHCatLoaderComplexSchema.class); - private void dropTable(String tablename) throws IOException, CommandNeedRetryException { - driver.run("drop table " + tablename); + private static final Map> DISABLED_STORAGE_FORMATS = + new HashMap>() {{ + put(IOConstants.AVRO, new HashSet() {{ + add("testSyntheticComplexSchema"); + add("testTupleInBagInTupleInBag"); + add("testMapWithComplexData"); + }}); + put(IOConstants.PARQUETFILE, new HashSet() {{ + add("testSyntheticComplexSchema"); + add("testTupleInBagInTupleInBag"); + add("testMapWithComplexData"); + }}); + }}; + + private String storageFormat; + + @Parameterized.Parameters + public static Collection generateParameters() { + return StorageFormats.names(); + } + + public TestHCatLoaderComplexSchema(String storageFormat) { + this.storageFormat = storageFormat; } - protected String storageFormat() { - return "RCFILE tblproperties('hcat.isd'='org.apache.hive.hcatalog.rcfile.RCFileInputDriver'," + - "'hcat.osd'='org.apache.hive.hcatalog.rcfile.RCFileOutputDriver')"; + private void dropTable(String tablename) throws IOException, CommandNeedRetryException { + driver.run("drop table " + tablename); } private void createTable(String tablename, String schema, String partitionedBy) throws IOException, CommandNeedRetryException { @@ -74,7 +108,7 @@ private void createTable(String tablename, String schema, String partitionedBy) if ((partitionedBy != null) && (!partitionedBy.trim().isEmpty())) { createTable = createTable + "partitioned by (" + partitionedBy + ") "; } - createTable = createTable + "stored as " + storageFormat(); + createTable = createTable + "stored as " + storageFormat; LOG.info("Creating table:\n {}", createTable); CommandProcessorResponse result = driver.run(createTable); int retCode = result.getResponseCode(); @@ -89,7 +123,6 @@ private void createTable(String tablename, String schema) throws IOException, Co @BeforeClass public static void setUpBeforeClass() throws Exception { - HiveConf hiveConf = new HiveConf(TestHCatLoaderComplexSchema.class); hiveConf.set(HiveConf.ConfVars.PREEXECHOOKS.varname, ""); hiveConf.set(HiveConf.ConfVars.POSTEXECHOOKS.varname, ""); @@ -98,7 +131,6 @@ public static void setUpBeforeClass() throws Exception { SessionState.start(new CliSessionState(hiveConf)); //props = new Properties(); //props.setProperty("fs.default.name", cluster.getProperties().getProperty("fs.default.name")); - } private static final TupleFactory tf = TupleFactory.getInstance(); @@ -118,6 +150,7 @@ private DataBag b(Tuple... objects) { */ @Test public void testSyntheticComplexSchema() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); String pigSchema = "a: " + "(" + @@ -186,7 +219,6 @@ public void testSyntheticComplexSchema() throws Exception { verifyWriteRead("testSyntheticComplexSchema", pigSchema, tableSchema, data, false); verifyWriteRead("testSyntheticComplexSchema2", pigSchema, tableSchema2, data, true); verifyWriteRead("testSyntheticComplexSchema2", pigSchema, tableSchema2, data, false); - } private void verifyWriteRead(String tablename, String pigSchema, String tableSchema, List data, boolean provideSchemaToStorer) @@ -219,7 +251,7 @@ private void verifyWriteRead(String tablename, String pigSchema, String tableSch } Schema dumpedXSchema = server.dumpSchema("X"); - Assert.assertEquals( + assertEquals( "expected " + dumpedASchema + " but was " + dumpedXSchema + " (ignoring field names)", "", compareIgnoreFiledNames(dumpedASchema, dumpedXSchema)); @@ -230,14 +262,14 @@ private void verifyWriteRead(String tablename, String pigSchema, String tableSch } private void compareTuples(Tuple t1, Tuple t2) throws ExecException { - Assert.assertEquals("Tuple Sizes don't match", t1.size(), t2.size()); + assertEquals("Tuple Sizes don't match", t1.size(), t2.size()); for (int i = 0; i < t1.size(); i++) { Object f1 = t1.get(i); Object f2 = t2.get(i); - Assert.assertNotNull("left", f1); - Assert.assertNotNull("right", f2); + assertNotNull("left", f1); + assertNotNull("right", f2); String msg = "right: " + f1 + ", left: " + f2; - Assert.assertEquals(msg, noOrder(f1.toString()), noOrder(f2.toString())); + assertEquals(msg, noOrder(f1.toString()), noOrder(f2.toString())); } } @@ -278,6 +310,7 @@ private String compareIgnoreFiledNames(Schema expected, Schema got) throws Front */ @Test public void testTupleInBagInTupleInBag() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); String pigSchema = "a: { b : ( c: { d: (i : long) } ) }"; String tableSchema = "a array< array< bigint > >"; @@ -297,11 +330,11 @@ public void testTupleInBagInTupleInBag() throws Exception { verifyWriteRead("TupleInBagInTupleInBag3", pigSchema, tableSchema2, data, true); verifyWriteRead("TupleInBagInTupleInBag4", pigSchema, tableSchema2, data, false); - } @Test public void testMapWithComplexData() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); String pigSchema = "a: long, b: map[]"; String tableSchema = "a bigint, b map>"; @@ -320,6 +353,5 @@ public void testMapWithComplexData() throws Exception { } verifyWriteRead("testMapWithComplexData", pigSchema, tableSchema, data, true); verifyWriteRead("testMapWithComplexData2", pigSchema, tableSchema, data, false); - } } diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java index 763af9fab176..a380f619493c 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java @@ -18,18 +18,27 @@ */ package org.apache.hive.hcatalog.pig; +import com.google.common.collect.ImmutableSet; + import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Properties; +import java.util.Set; import org.apache.hadoop.hive.ql.CommandNeedRetryException; +import org.apache.hadoop.hive.ql.io.IOConstants; +import org.apache.hadoop.hive.ql.io.StorageFormats; import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; import org.apache.hive.hcatalog.HcatTestUtils; @@ -47,20 +56,92 @@ import org.joda.time.DateTime; import org.joda.time.DateTimeZone; -import org.junit.Assert; +import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.junit.Assert.*; +import static org.junit.Assume.assumeTrue; + +@RunWith(Parameterized.class) public class TestHCatStorer extends HCatBaseTest { private static final Logger LOG = LoggerFactory.getLogger(TestHCatStorer.class); private static final String INPUT_FILE_NAME = TEST_DATA_DIR + "/input.data"; + private static final Map> DISABLED_STORAGE_FORMATS = + new HashMap>() {{ + put(IOConstants.AVRO, new HashSet() {{ + add("testBagNStruct"); + add("testDateCharTypes"); + add("testDynamicPartitioningMultiPartColsInDataNoSpec"); + add("testDynamicPartitioningMultiPartColsInDataPartialSpec"); + add("testMultiPartColsInData"); + add("testPartColsInData"); + add("testStoreFuncAllSimpleTypes"); + add("testStoreFuncSimple"); + add("testStoreInPartiitonedTbl"); + add("testStoreMultiTables"); + add("testStoreWithNoCtorArgs"); + add("testStoreWithNoSchema"); + add("testWriteChar"); + add("testWriteDate"); + add("testWriteDate2"); + add("testWriteDate3"); + add("testWriteDecimal"); + add("testWriteDecimalX"); + add("testWriteDecimalXY"); + add("testWriteSmallint"); + add("testWriteTimestamp"); + add("testWriteTinyint"); + add("testWriteVarchar"); + }}); + put(IOConstants.PARQUETFILE, new HashSet() {{ + add("testBagNStruct"); + add("testDateCharTypes"); + add("testDynamicPartitioningMultiPartColsInDataNoSpec"); + add("testDynamicPartitioningMultiPartColsInDataPartialSpec"); + add("testMultiPartColsInData"); + add("testPartColsInData"); + add("testStoreFuncAllSimpleTypes"); + add("testStoreFuncSimple"); + add("testStoreInPartiitonedTbl"); + add("testStoreMultiTables"); + add("testStoreWithNoCtorArgs"); + add("testStoreWithNoSchema"); + add("testWriteChar"); + add("testWriteDate"); + add("testWriteDate2"); + add("testWriteDate3"); + add("testWriteDecimal"); + add("testWriteDecimalX"); + add("testWriteDecimalXY"); + add("testWriteSmallint"); + add("testWriteTimestamp"); + add("testWriteTinyint"); + add("testWriteVarchar"); + }}); + }}; + + private String storageFormat; + + @Parameterized.Parameters + public static Collection generateParameters() { + return StorageFormats.names(); + } + + public TestHCatStorer(String storageFormat) { + this.storageFormat = storageFormat; + } + //Start: tests that check values from Pig that are out of range for target column @Test public void testWriteTinyint() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); pigValueRangeTest("junitTypeTest1", "tinyint", "int", null, Integer.toString(1), Integer.toString(1)); pigValueRangeTestOverflow("junitTypeTest1", "tinyint", "int", null, Integer.toString(300)); pigValueRangeTestOverflow("junitTypeTest2", "tinyint", "int", HCatBaseStorer.OOR_VALUE_OPT_VALUES.Null, @@ -71,6 +152,7 @@ public void testWriteTinyint() throws Exception { @Test public void testWriteSmallint() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); pigValueRangeTest("junitTypeTest1", "smallint", "int", null, Integer.toString(Short.MIN_VALUE), Integer.toString(Short.MIN_VALUE)); pigValueRangeTestOverflow("junitTypeTest2", "smallint", "int", HCatBaseStorer.OOR_VALUE_OPT_VALUES.Null, @@ -81,6 +163,7 @@ public void testWriteSmallint() throws Exception { @Test public void testWriteChar() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); pigValueRangeTest("junitTypeTest1", "char(5)", "chararray", null, "xxx", "xxx "); pigValueRangeTestOverflow("junitTypeTest1", "char(5)", "chararray", null, "too_long"); pigValueRangeTestOverflow("junitTypeTest2", "char(5)", "chararray", HCatBaseStorer.OOR_VALUE_OPT_VALUES.Null, @@ -91,6 +174,7 @@ public void testWriteChar() throws Exception { @Test public void testWriteVarchar() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); pigValueRangeTest("junitTypeTest1", "varchar(5)", "chararray", null, "xxx", "xxx"); pigValueRangeTestOverflow("junitTypeTest1", "varchar(5)", "chararray", null, "too_long"); pigValueRangeTestOverflow("junitTypeTest2", "varchar(5)", "chararray", HCatBaseStorer.OOR_VALUE_OPT_VALUES.Null, @@ -101,6 +185,7 @@ public void testWriteVarchar() throws Exception { @Test public void testWriteDecimalXY() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); pigValueRangeTest("junitTypeTest1", "decimal(5,2)", "bigdecimal", null, BigDecimal.valueOf(1.2).toString(), BigDecimal.valueOf(1.2).toString()); pigValueRangeTestOverflow("junitTypeTest1", "decimal(5,2)", "bigdecimal", null, BigDecimal.valueOf(12345.12).toString()); @@ -112,6 +197,7 @@ public void testWriteDecimalXY() throws Exception { @Test public void testWriteDecimalX() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); //interestingly decimal(2) means decimal(2,0) pigValueRangeTest("junitTypeTest1", "decimal(2)", "bigdecimal", null, BigDecimal.valueOf(12).toString(), BigDecimal.valueOf(12).toString()); @@ -123,6 +209,7 @@ public void testWriteDecimalX() throws Exception { @Test public void testWriteDecimal() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); //decimal means decimal(10,0) pigValueRangeTest("junitTypeTest1", "decimal", "bigdecimal", null, BigDecimal.valueOf(1234567890).toString(), BigDecimal.valueOf(1234567890).toString()); @@ -137,8 +224,10 @@ public void testWriteDecimal() throws Exception { * include time to make sure it's 0 */ private static final String FORMAT_4_DATE = "yyyy-MM-dd HH:mm:ss"; + @Test public void testWriteDate() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); DateTime d = new DateTime(1991,10,11,0,0); pigValueRangeTest("junitTypeTest1", "date", "datetime", null, d.toString(), d.toString(FORMAT_4_DATE), FORMAT_4_DATE); @@ -157,6 +246,7 @@ public void testWriteDate() throws Exception { @Test public void testWriteDate3() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); DateTime d = new DateTime(1991,10,11,23,10,DateTimeZone.forOffsetHours(-11)); FrontendException fe = null; //expect to fail since the time component is not 0 @@ -170,6 +260,7 @@ public void testWriteDate3() throws Exception { @Test public void testWriteDate2() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); DateTime d = new DateTime(1991,11,12,0,0, DateTimeZone.forID("US/Eastern")); pigValueRangeTest("junitTypeTest1", "date", "datetime", null, d.toString(), d.toString(FORMAT_4_DATE), FORMAT_4_DATE); @@ -193,6 +284,7 @@ public void testWriteDate2() throws Exception { */ @Test public void testWriteTimestamp() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); DateTime d = new DateTime(1991,10,11,14,23,30, 10);//uses default TZ pigValueRangeTest("junitTypeTest1", "timestamp", "datetime", null, d.toString(), d.toDateTime(DateTimeZone.getDefault()).toString()); @@ -228,13 +320,6 @@ private void pigValueRangeTest(String tblName, String hiveType, String pigType, pigValueRangeTest(tblName, hiveType, pigType, goal, inputValue, expectedValue, null); } - /** - * this should be overridden in subclass to test with different file formats - */ - String getStorageFormat() { - return "RCFILE"; - } - /** * This is used to test how Pig values of various data types which are out of range for Hive target * column are handled. Currently the options are to raise an error or write NULL. @@ -258,7 +343,7 @@ private void pigValueRangeTest(String tblName, String hiveType, String pigType, throws Exception { TestHCatLoader.dropTable(tblName, driver); final String field = "f1"; - TestHCatLoader.createTable(tblName, field + " " + hiveType, null, driver, getStorageFormat()); + TestHCatLoader.createTable(tblName, field + " " + hiveType, null, driver, storageFormat); HcatTestUtils.createTestDataFile(INPUT_FILE_NAME, new String[] {inputValue}); LOG.debug("File=" + INPUT_FILE_NAME); dumpFile(INPUT_FILE_NAME); @@ -287,11 +372,11 @@ private void pigValueRangeTest(String tblName, String hiveType, String pigType, //do nothing, fall through and verify the data break; case Throw: - Assert.assertTrue("Expected a FrontendException", fe != null); - Assert.assertEquals("Expected a different FrontendException.", fe.getMessage(), "Unable to store alias A"); + assertTrue("Expected a FrontendException", fe != null); + assertEquals("Expected a different FrontendException.", fe.getMessage(), "Unable to store alias A"); return;//this test is done default: - Assert.assertFalse("Unexpected goal: " + goal, 1 == 1); + assertFalse("Unexpected goal: " + goal, 1 == 1); } } logAndRegister(server, "B = load '" + tblName + "' using " + HCatLoader.class.getName() + "();", queryNumber); @@ -310,17 +395,17 @@ private void pigValueRangeTest(String tblName, String hiveType, String pigType, Tuple t = itr.next(); if("date".equals(hiveType)) { DateTime dateTime = (DateTime)t.get(0); - Assert.assertTrue(format != null); - Assert.assertEquals("Comparing Pig to Raw data for table " + tblName, expectedValue, dateTime== null ? null : dateTime.toString(format)); + assertTrue(format != null); + assertEquals("Comparing Pig to Raw data for table " + tblName, expectedValue, dateTime== null ? null : dateTime.toString(format)); } else { - Assert.assertEquals("Comparing Pig to Raw data for table " + tblName, expectedValue, t.isNull(0) ? null : t.get(0).toString()); + assertEquals("Comparing Pig to Raw data for table " + tblName, expectedValue, t.isNull(0) ? null : t.get(0).toString()); } //see comment at "Dumping rows via SQL..." for why this doesn't work - //Assert.assertEquals("Comparing Pig to Hive", t.get(0), l.get(0)); + //assertEquals("Comparing Pig to Hive", t.get(0), l.get(0)); numRowsRead++; } - Assert.assertEquals("Expected " + 1 + " rows; got " + numRowsRead + " file=" + INPUT_FILE_NAME + "; table " + + assertEquals("Expected " + 1 + " rows; got " + numRowsRead + " file=" + INPUT_FILE_NAME + "; table " + tblName, 1, numRowsRead); /* Misc notes: Unfortunately Timestamp.toString() adjusts the value for local TZ and 't' is a String @@ -334,10 +419,11 @@ private void pigValueRangeTest(String tblName, String hiveType, String pigType, */ @Test public void testDateCharTypes() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); final String tblName = "junit_date_char"; TestHCatLoader.dropTable(tblName, driver); TestHCatLoader.createTable(tblName, - "id int, char5 char(5), varchar10 varchar(10), dec52 decimal(5,2)", null, driver, getStorageFormat()); + "id int, char5 char(5), varchar10 varchar(10), dec52 decimal(5,2)", null, driver, storageFormat); int NUM_ROWS = 5; String[] rows = new String[NUM_ROWS]; for(int i = 0; i < NUM_ROWS; i++) { @@ -376,12 +462,12 @@ public void testDateCharTypes() throws Exception { rowFromPig.append(t.get(i)).append("\t"); } rowFromPig.setLength(rowFromPig.length() - 1); - Assert.assertEquals("Comparing Pig to Raw data", rows[numRowsRead], rowFromPig.toString()); + assertEquals("Comparing Pig to Raw data", rows[numRowsRead], rowFromPig.toString()); //see comment at "Dumping rows via SQL..." for why this doesn't work (for all types) - //Assert.assertEquals("Comparing Pig to Hive", rowFromPig.toString(), l.get(numRowsRead)); + //assertEquals("Comparing Pig to Hive", rowFromPig.toString(), l.get(numRowsRead)); numRowsRead++; } - Assert.assertEquals("Expected " + NUM_ROWS + " rows; got " + numRowsRead + " file=" + INPUT_FILE_NAME, NUM_ROWS, numRowsRead); + assertEquals("Expected " + NUM_ROWS + " rows; got " + numRowsRead + " file=" + INPUT_FILE_NAME, NUM_ROWS, numRowsRead); } static void dumpFile(String fileName) throws Exception { @@ -397,9 +483,10 @@ static void dumpFile(String fileName) throws Exception { @Test public void testPartColsInData() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table junit_unparted"); - String createTable = "create table junit_unparted(a int) partitioned by (b string) stored as " + getStorageFormat(); + String createTable = "create table junit_unparted(a int) partitioned by (b string) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -420,22 +507,23 @@ public void testPartColsInData() throws IOException, CommandNeedRetryException { while (itr.hasNext()) { Tuple t = itr.next(); - Assert.assertEquals(2, t.size()); - Assert.assertEquals(t.get(0), i); - Assert.assertEquals(t.get(1), "1"); + assertEquals(2, t.size()); + assertEquals(t.get(0), i); + assertEquals(t.get(1), "1"); i++; } - Assert.assertFalse(itr.hasNext()); - Assert.assertEquals(LOOP_SIZE, i); + assertFalse(itr.hasNext()); + assertEquals(LOOP_SIZE, i); } @Test public void testMultiPartColsInData() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table employee"); String createTable = "CREATE TABLE employee (emp_id INT, emp_name STRING, emp_start_date STRING , emp_gender STRING ) " + - " PARTITIONED BY (emp_country STRING , emp_state STRING ) STORED AS " + getStorageFormat(); + " PARTITIONED BY (emp_country STRING , emp_state STRING ) STORED AS " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { @@ -464,20 +552,21 @@ public void testMultiPartColsInData() throws IOException, CommandNeedRetryExcept driver.run("select * from employee"); ArrayList results = new ArrayList(); driver.getResults(results); - Assert.assertEquals(4, results.size()); + assertEquals(4, results.size()); Collections.sort(results); - Assert.assertEquals(inputData[0], results.get(0)); - Assert.assertEquals(inputData[1], results.get(1)); - Assert.assertEquals(inputData[2], results.get(2)); - Assert.assertEquals(inputData[3], results.get(3)); + assertEquals(inputData[0], results.get(0)); + assertEquals(inputData[1], results.get(1)); + assertEquals(inputData[2], results.get(2)); + assertEquals(inputData[3], results.get(3)); driver.run("drop table employee"); } @Test public void testStoreInPartiitonedTbl() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table junit_unparted"); - String createTable = "create table junit_unparted(a int) partitioned by (b string) stored as " + getStorageFormat(); + String createTable = "create table junit_unparted(a int) partitioned by (b string) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -498,20 +587,21 @@ public void testStoreInPartiitonedTbl() throws IOException, CommandNeedRetryExce while (itr.hasNext()) { Tuple t = itr.next(); - Assert.assertEquals(2, t.size()); - Assert.assertEquals(t.get(0), i); - Assert.assertEquals(t.get(1), "1"); + assertEquals(2, t.size()); + assertEquals(t.get(0), i); + assertEquals(t.get(1), "1"); i++; } - Assert.assertFalse(itr.hasNext()); - Assert.assertEquals(11, i); + assertFalse(itr.hasNext()); + assertEquals(11, i); } @Test public void testNoAlias() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table junit_parted"); - String createTable = "create table junit_parted(a int, b string) partitioned by (ds string) stored as " + getStorageFormat(); + String createTable = "create table junit_parted(a int, b string) partitioned by (ds string) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -526,12 +616,12 @@ public void testNoAlias() throws IOException, CommandNeedRetryException { server.executeBatch(); } catch (PigException fe) { PigException pe = LogUtils.getPigException(fe); - Assert.assertTrue(pe instanceof FrontendException); - Assert.assertEquals(PigHCatUtil.PIG_EXCEPTION_CODE, pe.getErrorCode()); - Assert.assertTrue(pe.getMessage().contains("Column name for a field is not specified. Please provide the full schema as an argument to HCatStorer.")); + assertTrue(pe instanceof FrontendException); + assertEquals(PigHCatUtil.PIG_EXCEPTION_CODE, pe.getErrorCode()); + assertTrue(pe.getMessage().contains("Column name for a field is not specified. Please provide the full schema as an argument to HCatStorer.")); errCaught = true; } - Assert.assertTrue(errCaught); + assertTrue(errCaught); errCaught = false; try { server.setBatchOn(); @@ -541,20 +631,21 @@ public void testNoAlias() throws IOException, CommandNeedRetryException { server.executeBatch(); } catch (PigException fe) { PigException pe = LogUtils.getPigException(fe); - Assert.assertTrue(pe instanceof FrontendException); - Assert.assertEquals(PigHCatUtil.PIG_EXCEPTION_CODE, pe.getErrorCode()); - Assert.assertTrue(pe.getMessage().contains("Column names should all be in lowercase. Invalid name found: B")); + assertTrue(pe instanceof FrontendException); + assertEquals(PigHCatUtil.PIG_EXCEPTION_CODE, pe.getErrorCode()); + assertTrue(pe.getMessage().contains("Column names should all be in lowercase. Invalid name found: B")); errCaught = true; } driver.run("drop table junit_parted"); - Assert.assertTrue(errCaught); + assertTrue(errCaught); } @Test public void testStoreMultiTables() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table junit_unparted"); - String createTable = "create table junit_unparted(a int, b string) stored as " + getStorageFormat(); + String createTable = "create table junit_unparted(a int, b string) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -598,18 +689,19 @@ public void testStoreMultiTables() throws IOException, CommandNeedRetryException Iterator itr = res.iterator(); for (int i = 0; i < LOOP_SIZE * LOOP_SIZE; i++) { - Assert.assertEquals(input[i], itr.next()); + assertEquals(input[i], itr.next()); } - Assert.assertFalse(itr.hasNext()); + assertFalse(itr.hasNext()); } @Test public void testStoreWithNoSchema() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table junit_unparted"); - String createTable = "create table junit_unparted(a int, b string) stored as " + getStorageFormat(); + String createTable = "create table junit_unparted(a int, b string) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -637,18 +729,19 @@ public void testStoreWithNoSchema() throws IOException, CommandNeedRetryExceptio driver.run("drop table junit_unparted"); Iterator itr = res.iterator(); for (int i = 0; i < LOOP_SIZE * LOOP_SIZE; i++) { - Assert.assertEquals(input[i], itr.next()); + assertEquals(input[i], itr.next()); } - Assert.assertFalse(itr.hasNext()); + assertFalse(itr.hasNext()); } @Test public void testStoreWithNoCtorArgs() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table junit_unparted"); - String createTable = "create table junit_unparted(a int, b string) stored as " + getStorageFormat(); + String createTable = "create table junit_unparted(a int, b string) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -676,18 +769,19 @@ public void testStoreWithNoCtorArgs() throws IOException, CommandNeedRetryExcept driver.run("drop table junit_unparted"); Iterator itr = res.iterator(); for (int i = 0; i < LOOP_SIZE * LOOP_SIZE; i++) { - Assert.assertEquals(input[i], itr.next()); + assertEquals(input[i], itr.next()); } - Assert.assertFalse(itr.hasNext()); + assertFalse(itr.hasNext()); } @Test public void testEmptyStore() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table junit_unparted"); - String createTable = "create table junit_unparted(a int, b string) stored as " + getStorageFormat(); + String createTable = "create table junit_unparted(a int, b string) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -715,15 +809,16 @@ public void testEmptyStore() throws IOException, CommandNeedRetryException { driver.getResults(res); driver.run("drop table junit_unparted"); Iterator itr = res.iterator(); - Assert.assertFalse(itr.hasNext()); + assertFalse(itr.hasNext()); } @Test public void testBagNStruct() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table junit_unparted"); String createTable = "create table junit_unparted(b string,a struct, arr_of_struct array, " + - "arr_of_struct2 array>, arr_of_struct3 array>) stored as " + getStorageFormat(); + "arr_of_struct2 array>, arr_of_struct3 array>) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -746,17 +841,18 @@ public void testBagNStruct() throws IOException, CommandNeedRetryException { driver.getResults(res); driver.run("drop table junit_unparted"); Iterator itr = res.iterator(); - Assert.assertEquals("zookeeper\t{\"a1\":2}\t[\"pig\"]\t[{\"s1\":\"pnuts\",\"s2\":\"hdfs\"}]\t[{\"s3\":\"hadoop\"},{\"s3\":\"hcat\"}]", itr.next()); - Assert.assertEquals("chubby\t{\"a1\":2}\t[\"sawzall\"]\t[{\"s1\":\"bigtable\",\"s2\":\"gfs\"}]\t[{\"s3\":\"mapreduce\"},{\"s3\":\"hcat\"}]", itr.next()); - Assert.assertFalse(itr.hasNext()); + assertEquals("zookeeper\t{\"a1\":2}\t[\"pig\"]\t[{\"s1\":\"pnuts\",\"s2\":\"hdfs\"}]\t[{\"s3\":\"hadoop\"},{\"s3\":\"hcat\"}]", itr.next()); + assertEquals("chubby\t{\"a1\":2}\t[\"sawzall\"]\t[{\"s1\":\"bigtable\",\"s2\":\"gfs\"}]\t[{\"s3\":\"mapreduce\"},{\"s3\":\"hcat\"}]", itr.next()); + assertFalse(itr.hasNext()); } @Test public void testStoreFuncAllSimpleTypes() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table junit_unparted"); - String createTable = "create table junit_unparted(a int, b float, c double, d bigint, e string, h boolean, f binary, g binary) stored as " + getStorageFormat(); + String createTable = "create table junit_unparted(a int, b float, c double, d bigint, e string, h boolean, f binary, g binary) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -783,10 +879,10 @@ public void testStoreFuncAllSimpleTypes() throws IOException, CommandNeedRetryEx Iterator itr = res.iterator(); String next = itr.next(); - Assert.assertEquals("0\tNULL\tNULL\tNULL\tNULL\tNULL\tNULL\tNULL", next ); - Assert.assertEquals("NULL\t4.2\t2.2\t4\tlets hcat\ttrue\tbinary-data\tNULL", itr.next()); - Assert.assertEquals("3\t6.2999997\t3.3000000000000003\t6\tlets hcat\tfalse\tbinary-data\tNULL", itr.next()); - Assert.assertFalse(itr.hasNext()); + assertEquals("0\tNULL\tNULL\tNULL\tNULL\tNULL\tNULL\tNULL", next ); + assertEquals("NULL\t4.2\t2.2\t4\tlets hcat\ttrue\tbinary-data\tNULL", itr.next()); + assertEquals("3\t6.2999997\t3.3000000000000003\t6\tlets hcat\tfalse\tbinary-data\tNULL", itr.next()); + assertFalse(itr.hasNext()); server.registerQuery("B = load 'junit_unparted' using " + HCatLoader.class.getName() + ";"); Iterator iter = server.openIterator("B"); @@ -797,21 +893,22 @@ public void testStoreFuncAllSimpleTypes() throws IOException, CommandNeedRetryEx if (t.get(6) == null) { num5nulls++; } else { - Assert.assertTrue(t.get(6) instanceof DataByteArray); + assertTrue(t.get(6) instanceof DataByteArray); } - Assert.assertNull(t.get(7)); + assertNull(t.get(7)); count++; } - Assert.assertEquals(3, count); - Assert.assertEquals(1, num5nulls); + assertEquals(3, count); + assertEquals(1, num5nulls); driver.run("drop table junit_unparted"); } @Test public void testStoreFuncSimple() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table junit_unparted"); - String createTable = "create table junit_unparted(a int, b string) stored as " + getStorageFormat(); + String createTable = "create table junit_unparted(a int, b string) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -841,19 +938,20 @@ public void testStoreFuncSimple() throws IOException, CommandNeedRetryException for (int i = 1; i <= LOOP_SIZE; i++) { String si = i + ""; for (int j = 1; j <= LOOP_SIZE; j++) { - Assert.assertEquals(si + "\t" + j, itr.next()); + assertEquals(si + "\t" + j, itr.next()); } } - Assert.assertFalse(itr.hasNext()); + assertFalse(itr.hasNext()); } @Test public void testDynamicPartitioningMultiPartColsInDataPartialSpec() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table if exists employee"); String createTable = "CREATE TABLE employee (emp_id INT, emp_name STRING, emp_start_date STRING , emp_gender STRING ) " + - " PARTITIONED BY (emp_country STRING , emp_state STRING ) STORED AS " + getStorageFormat(); + " PARTITIONED BY (emp_country STRING , emp_state STRING ) STORED AS " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { @@ -876,21 +974,22 @@ public void testDynamicPartitioningMultiPartColsInDataPartialSpec() throws IOExc driver.run("select * from employee"); ArrayList results = new ArrayList(); driver.getResults(results); - Assert.assertEquals(4, results.size()); + assertEquals(4, results.size()); Collections.sort(results); - Assert.assertEquals(inputData[0], results.get(0)); - Assert.assertEquals(inputData[1], results.get(1)); - Assert.assertEquals(inputData[2], results.get(2)); - Assert.assertEquals(inputData[3], results.get(3)); + assertEquals(inputData[0], results.get(0)); + assertEquals(inputData[1], results.get(1)); + assertEquals(inputData[2], results.get(2)); + assertEquals(inputData[3], results.get(3)); driver.run("drop table employee"); } @Test public void testDynamicPartitioningMultiPartColsInDataNoSpec() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table if exists employee"); String createTable = "CREATE TABLE employee (emp_id INT, emp_name STRING, emp_start_date STRING , emp_gender STRING ) " + - " PARTITIONED BY (emp_country STRING , emp_state STRING ) STORED AS " + getStorageFormat(); + " PARTITIONED BY (emp_country STRING , emp_state STRING ) STORED AS " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { @@ -913,21 +1012,22 @@ public void testDynamicPartitioningMultiPartColsInDataNoSpec() throws IOExceptio driver.run("select * from employee"); ArrayList results = new ArrayList(); driver.getResults(results); - Assert.assertEquals(4, results.size()); + assertEquals(4, results.size()); Collections.sort(results); - Assert.assertEquals(inputData[0], results.get(0)); - Assert.assertEquals(inputData[1], results.get(1)); - Assert.assertEquals(inputData[2], results.get(2)); - Assert.assertEquals(inputData[3], results.get(3)); + assertEquals(inputData[0], results.get(0)); + assertEquals(inputData[1], results.get(1)); + assertEquals(inputData[2], results.get(2)); + assertEquals(inputData[3], results.get(3)); driver.run("drop table employee"); } @Test public void testDynamicPartitioningMultiPartColsNoDataInDataNoSpec() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table if exists employee"); String createTable = "CREATE TABLE employee (emp_id INT, emp_name STRING, emp_start_date STRING , emp_gender STRING ) " + - " PARTITIONED BY (emp_country STRING , emp_state STRING ) STORED AS " + getStorageFormat(); + " PARTITIONED BY (emp_country STRING , emp_state STRING ) STORED AS " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { @@ -947,15 +1047,16 @@ public void testDynamicPartitioningMultiPartColsNoDataInDataNoSpec() throws IOEx driver.run("select * from employee"); ArrayList results = new ArrayList(); driver.getResults(results); - Assert.assertEquals(0, results.size()); + assertEquals(0, results.size()); driver.run("drop table employee"); } + @Test - public void testPartitionPublish() - throws IOException, CommandNeedRetryException { + public void testPartitionPublish() throws IOException, CommandNeedRetryException { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); driver.run("drop table ptn_fail"); - String createTable = "create table ptn_fail(a int, c string) partitioned by (b string) stored as " + getStorageFormat(); + String createTable = "create table ptn_fail(a int, c string) partitioned by (b string) stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table."); @@ -987,11 +1088,11 @@ public void testPartitionPublish() ArrayList res = new ArrayList(); driver.getResults(res); - Assert.assertEquals(0, res.size()); + assertEquals(0, res.size()); // Make sure the partitions directory is not in hdfs. - Assert.assertTrue((new File(TEST_WAREHOUSE_DIR + "/ptn_fail")).exists()); - Assert.assertFalse((new File(TEST_WAREHOUSE_DIR + "/ptn_fail/b=math")) + assertTrue((new File(TEST_WAREHOUSE_DIR + "/ptn_fail")).exists()); + assertFalse((new File(TEST_WAREHOUSE_DIR + "/ptn_fail/b=math")) .exists()); } diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorerMulti.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorerMulti.java index 9679d3c02520..0c3ec8bd93f2 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorerMulti.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorerMulti.java @@ -18,18 +18,25 @@ */ package org.apache.hive.hcatalog.pig; +import com.google.common.collect.ImmutableSet; + import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import org.apache.hadoop.fs.FileUtil; import org.apache.hadoop.hive.cli.CliSessionState; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.CommandNeedRetryException; import org.apache.hadoop.hive.ql.Driver; +import org.apache.hadoop.hive.ql.io.IOConstants; +import org.apache.hadoop.hive.ql.io.StorageFormats; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hive.hcatalog.common.HCatUtil; @@ -41,13 +48,17 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import static org.junit.Assert.assertEquals; +import static org.junit.Assume.assumeTrue; +@RunWith(Parameterized.class) public class TestHCatStorerMulti { public static final String TEST_DATA_DIR = HCatUtil.makePathASafeFileName( - System.getProperty("user.dir") + "/build/test/data/" + - TestHCatStorerMulti.class.getCanonicalName() + "-" + System.currentTimeMillis()); + System.getProperty("user.dir") + "/build/test/data/" + + TestHCatStorerMulti.class.getCanonicalName() + "-" + System.currentTimeMillis()); private static final String TEST_WAREHOUSE_DIR = TEST_DATA_DIR + "/warehouse"; private static final String INPUT_FILE_NAME = TEST_DATA_DIR + "/input.data"; @@ -57,9 +68,29 @@ public class TestHCatStorerMulti { private static Map> basicInputData; - protected String storageFormat() { - return "RCFILE tblproperties('hcat.isd'='org.apache.hive.hcatalog.rcfile.RCFileInputDriver'," + - "'hcat.osd'='org.apache.hive.hcatalog.rcfile.RCFileOutputDriver')"; + private static final Map> DISABLED_STORAGE_FORMATS = + new HashMap>() {{ + put(IOConstants.AVRO, new HashSet() {{ + add("testStoreBasicTable"); + add("testStorePartitionedTable"); + add("testStoreTableMulti"); + }}); + put(IOConstants.PARQUETFILE, new HashSet() {{ + add("testStoreBasicTable"); + add("testStorePartitionedTable"); + add("testStoreTableMulti"); + }}); + }}; + + private String storageFormat; + + @Parameterized.Parameters + public static Collection generateParameters() { + return StorageFormats.names(); + } + + public TestHCatStorerMulti(String storageFormat) { + this.storageFormat = storageFormat; } private void dropTable(String tablename) throws IOException, CommandNeedRetryException { @@ -72,7 +103,7 @@ private void createTable(String tablename, String schema, String partitionedBy) if ((partitionedBy != null) && (!partitionedBy.trim().isEmpty())) { createTable = createTable + "partitioned by (" + partitionedBy + ") "; } - createTable = createTable + "stored as " + storageFormat(); + createTable = createTable + "stored as " + storageFormat; int retCode = driver.run(createTable).getResponseCode(); if (retCode != 0) { throw new IOException("Failed to create table. [" + createTable + "], return code from hive driver : [" + retCode + "]"); @@ -85,6 +116,8 @@ private void createTable(String tablename, String schema) throws IOException, Co @Before public void setUp() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); + if (driver == null) { HiveConf hiveConf = new HiveConf(this.getClass()); hiveConf.set(HiveConf.ConfVars.PREEXECHOOKS.varname, ""); @@ -105,6 +138,7 @@ public void tearDown() throws Exception { @Test public void testStoreBasicTable() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); createTable(BASIC_TABLE, "a int, b string"); populateBasicFile(); @@ -124,6 +158,7 @@ public void testStoreBasicTable() throws Exception { @Test public void testStorePartitionedTable() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); createTable(PARTITIONED_TABLE, "a int, b string", "bkt string"); populateBasicFile(); @@ -147,6 +182,7 @@ public void testStorePartitionedTable() throws Exception { @Test public void testStoreTableMulti() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); createTable(BASIC_TABLE, "a int, b string"); createTable(PARTITIONED_TABLE, "a int, b string", "bkt string"); diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatLoader.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatLoader.java deleted file mode 100644 index 82eb0d72b4f8..000000000000 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatLoader.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.hive.hcatalog.pig; - -public class TestOrcHCatLoader extends TestHCatLoader { - - @Override - protected String storageFormat() { - return "orc"; - } - -} - diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatLoaderComplexSchema.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatLoaderComplexSchema.java deleted file mode 100644 index 053877112892..000000000000 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatLoaderComplexSchema.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.hive.hcatalog.pig; - -public class TestOrcHCatLoaderComplexSchema extends TestHCatLoaderComplexSchema { - - @Override - protected String storageFormat() { - return "orc"; - } - -} diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatStorer.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatStorer.java deleted file mode 100644 index 65769b41c921..000000000000 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatStorer.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.hive.hcatalog.pig; - -import java.io.IOException; - -import org.apache.hadoop.hive.ql.CommandNeedRetryException; - -import org.junit.Ignore; -import org.junit.Test; - -public class TestOrcHCatStorer extends TestHCatStorer { - @Override String getStorageFormat() { - return "ORC"; - } -} diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatStorerMulti.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatStorerMulti.java deleted file mode 100644 index 77c79791cf15..000000000000 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestOrcHCatStorerMulti.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.hive.hcatalog.pig; - -public class TestOrcHCatStorerMulti extends TestHCatStorerMulti { - - @Override - protected String storageFormat() { - return "orc"; - } -} - diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestUtil.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestUtil.java new file mode 100644 index 000000000000..8a652f0bb932 --- /dev/null +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestUtil.java @@ -0,0 +1,76 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.hive.hcatalog.pig; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.junit.Test; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; + +/** + * Test utilities for selectively disabling specific test methods for given storage formats. + */ +public class TestUtil { + private static final Map> SAMPLE_DISABLED_TESTS_MAP = + new HashMap>() {{ + put("test", new HashSet() {{ + add("testShouldSkip"); + }}); + }}; + + /** + * Determine whether the caller test method is in a set of disabled test methods for a given + * storage format. + * + * @param storageFormat The name of the storage format used in a STORED AS clause. + * @param disabledTestsMap Map of storage format name to set of test method names that indicate + * which test methods should not run against the given storage format. + * @return True if the caller test method should be skipped for the given storage format. + */ + public static boolean shouldSkip(String storageFormat, Map> disabledTestsMap) { + final StackTraceElement[] elements = Thread.currentThread().getStackTrace(); + // The "bottom" of the call stack is at the front of the array. The elements are as follows: + // [0] getStackTrace() + // [1] shouldSkip() + // [2] caller test method + String methodName = elements[2].getMethodName(); + if (!disabledTestsMap.containsKey(storageFormat)) { + return false; + } + + Set disabledMethods = disabledTestsMap.get(storageFormat); + return disabledMethods.contains(methodName); + } + + @Test + public void testShouldSkip() { + assertTrue(TestUtil.shouldSkip("test", SAMPLE_DISABLED_TESTS_MAP)); + } + + @Test + public void testShouldNotSkip() { + assertFalse(TestUtil.shouldSkip("test", SAMPLE_DISABLED_TESTS_MAP)); + assertFalse(TestUtil.shouldSkip("foo", SAMPLE_DISABLED_TESTS_MAP)); + } +} diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/StorageFormats.java b/ql/src/test/org/apache/hadoop/hive/ql/io/StorageFormats.java index 19fdeb5ed3db..298ac2648e17 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/StorageFormats.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/StorageFormats.java @@ -90,7 +90,9 @@ protected static Object[] createTestArguments(String name, String serdeClass, * includes both native Hive storage formats as well as those enumerated in the * ADDITIONAL_STORAGE_FORMATS table. * - * @return List of storage format as paramters. + * @return List of storage format as a Collection of Object arrays, each containing (in order): + * Storage format name, SerDe class name, InputFormat class name, OutputFormat class name. + * This list is used as the parameters to JUnit parameterized tests. */ public static Collection asParameters() { List parameters = new ArrayList(); @@ -130,5 +132,21 @@ public static Collection asParameters() { return parameters; } + + /** + * Returns a list of the names of storage formats. + * + * @return List of names of storage formats. + */ + public static Collection names() { + List names = new ArrayList(); + for (StorageFormatDescriptor descriptor : ServiceLoader.load(StorageFormatDescriptor.class)) { + String[] formatNames = new String[descriptor.getNames().size()]; + formatNames = descriptor.getNames().toArray(formatNames); + String[] params = { formatNames[0] }; + names.add(params); + } + return names; + } } From 4a4ed4a0ab18b797f677c5a34b818736a3a73639 Mon Sep 17 00:00:00 2001 From: Sushanth Sowmyan Date: Wed, 1 Oct 2014 09:47:38 +0000 Subject: [PATCH 040/339] HIVE-8248 : TestHCatLoader.testReadDataPrimitiveTypes() occasionally fails (Jason Dere via Sushanth Sowmyan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628663 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hive/hcatalog/pig/TestHCatLoader.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java index 965773c729cd..5eabba151b6b 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java @@ -642,7 +642,11 @@ private static void testSchemaLoadPrimitiveTypes() throws IOException { * Test that value from Hive table are read properly in Pig */ private static void testReadDataPrimitiveTypes() throws Exception { - PigServer server = new PigServer(ExecType.LOCAL); + // testConvertBooleanToInt() sets HCatConstants.HCAT_DATA_CONVERT_BOOLEAN_TO_INTEGER=true, and + // might be the last one to call HCatContext.INSTANCE.setConf(). Make sure setting is false. + Properties properties = new Properties(); + properties.setProperty(HCatConstants.HCAT_DATA_CONVERT_BOOLEAN_TO_INTEGER, "false"); + PigServer server = new PigServer(ExecType.LOCAL, properties); server.registerQuery("X = load '" + ALL_PRIMITIVE_TYPES_TABLE + "' using " + HCatLoader.class.getName() + "();"); Iterator XIter = server.openIterator("X"); int numTuplesRead = 0; From 6e06bfb5c4ccfc3d232d6d38f48253bfabfa68c3 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 1 Oct 2014 16:08:09 +0000 Subject: [PATCH 041/339] HIVE-8309 : CBO: Fix OB by removing constraining DT, Use external names for col Aliases, Remove unnecessary Selects, Make DT Name counter query specific (John Pullokkaran via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628750 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/optimizer/optiq/HiveOptiqUtil.java | 41 ++++ .../optiq/reloperators/HiveProjectRel.java | 1 - .../optiq/reloperators/HiveSortRel.java | 25 ++- .../optiq/translator/ASTConverter.java | 158 ++++++++------ ...ector.java => PlanModifierForASTConv.java} | 90 +++++--- .../hive/ql/parse/SemanticAnalyzer.java | 197 +++++++++++++----- .../clientpositive/tez/cbo_correctness.q.out | 40 ++-- 7 files changed, 391 insertions(+), 161 deletions(-) rename ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/{DerivedTableInjector.java => PlanModifierForASTConv.java} (72%) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java index ebab2cfd1dab..7c2b0cd0204f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java @@ -27,9 +27,11 @@ import java.util.Map.Entry; import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveJoinRel; +import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveProjectRel; import org.apache.hadoop.hive.ql.parse.ASTNode; import org.eigenbase.rel.RelFactories.ProjectFactory; import org.eigenbase.rel.RelNode; +import org.eigenbase.rel.SortRel; import org.eigenbase.relopt.RelOptUtil; import org.eigenbase.relopt.RelOptUtil.InputReferencedVisitor; import org.eigenbase.reltype.RelDataTypeField; @@ -485,4 +487,43 @@ private static JoinLeafPredicateInfo constructJoinLeafPredicateInfo(HiveJoinRel return jlpi; } } + + public static boolean limitRelNode(RelNode rel) { + if ((rel instanceof SortRel) && ((SortRel) rel).getCollation().getFieldCollations().isEmpty()) + return true; + + return false; + } + + public static boolean orderRelNode(RelNode rel) { + if ((rel instanceof SortRel) && !((SortRel) rel).getCollation().getFieldCollations().isEmpty()) + return true; + + return false; + } + + /** + * Get top level select starting from root. Assumption here is root can only + * be SortRel & ProjectRel. Also the top project should be at most 2 levels + * below Sortrel; i.e SortRel(Limit)-SortRel(OB)-Select + * + * @param rootRel + * @return + */ + public static Pair getTopLevelSelect(final RelNode rootRel) { + RelNode tmpRel = rootRel; + RelNode parentOforiginalProjRel = rootRel; + HiveProjectRel originalProjRel = null; + + while (tmpRel != null) { + if (tmpRel instanceof HiveProjectRel) { + originalProjRel = (HiveProjectRel) tmpRel; + break; + } + parentOforiginalProjRel = tmpRel; + tmpRel = tmpRel.getInput(0); + } + + return (new Pair(parentOforiginalProjRel, originalProjRel)); + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveProjectRel.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveProjectRel.java index c643aa46c484..7b434ea58451 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveProjectRel.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveProjectRel.java @@ -34,7 +34,6 @@ import org.eigenbase.relopt.RelOptCluster; import org.eigenbase.relopt.RelOptCost; import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelOptRule; import org.eigenbase.relopt.RelTraitSet; import org.eigenbase.reltype.RelDataType; import org.eigenbase.reltype.RelDataTypeField; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveSortRel.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveSortRel.java index 82db7b1de7a3..f85363d50c1c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveSortRel.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveSortRel.java @@ -17,6 +17,8 @@ */ package org.apache.hadoop.hive.ql.optimizer.optiq.reloperators; +import java.util.Map; + import org.apache.hadoop.hive.ql.optimizer.optiq.TraitsUtil; import org.eigenbase.rel.RelCollation; import org.eigenbase.rel.RelFactories; @@ -26,10 +28,21 @@ import org.eigenbase.relopt.RelTraitSet; import org.eigenbase.rex.RexNode; +import com.google.common.collect.ImmutableMap; + public class HiveSortRel extends SortRel implements HiveRel { public static final HiveSortRelFactory HIVE_SORT_REL_FACTORY = new HiveSortRelFactory(); + // NOTE: this is to work around Hive Optiq Limitations w.r.t OB. + // 1. Optiq can not accept expressions in OB; instead it needs to be expressed + // as VC in input Select. + // 2. Hive can not preserve ordering through select boundaries. + // 3. This map is used for outermost OB to migrate the VC corresponding OB + // expressions from input select. + // 4. This is used by ASTConverter after we are done with Optiq Planning + private ImmutableMap mapOfInputRefToRexCall; + public HiveSortRel(RelOptCluster cluster, RelTraitSet traitSet, RelNode child, RelCollation collation, RexNode offset, RexNode fetch) { super(cluster, TraitsUtil.getSortTraitSet(cluster, traitSet, collation), child, collation, @@ -49,6 +62,14 @@ public RexNode getFetchExpr() { return fetch; } + public void setInputRefToCallMap(ImmutableMap refToCall) { + this.mapOfInputRefToRexCall = refToCall; + } + + public Map getInputRefToCallMap() { + return this.mapOfInputRefToRexCall; + } + @Override public void implement(Implementor implementor) { } @@ -56,8 +77,8 @@ public void implement(Implementor implementor) { private static class HiveSortRelFactory implements RelFactories.SortFactory { @Override - public RelNode createSort(RelTraitSet traits, RelNode child, - RelCollation collation, RexNode offset, RexNode fetch) { + public RelNode createSort(RelTraitSet traits, RelNode child, RelCollation collation, + RexNode offset, RexNode fetch) { return new HiveSortRel(child.getCluster(), traits, child, collation, offset, fetch); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java index a9eab4c8303a..f5a704fb5549 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java @@ -21,7 +21,7 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import java.util.concurrent.atomic.AtomicLong; +import java.util.Map; import net.hydromatic.optiq.util.BitSets; @@ -64,39 +64,34 @@ public class ASTConverter { - RelNode root; - HiveAST hiveAST; - RelNode from; - FilterRelBase where; - AggregateRelBase groupBy; - FilterRelBase having; - ProjectRelBase select; - SortRel order; + private RelNode root; + private HiveAST hiveAST; + private RelNode from; + private FilterRelBase where; + private AggregateRelBase groupBy; + private FilterRelBase having; + private ProjectRelBase select; + private SortRel order; + private SortRel limit; - Schema schema; + private Schema schema; - ASTConverter(RelNode root) { + private long derivedTableCount; + + ASTConverter(RelNode root, long dtCounterInitVal) { this.root = root; hiveAST = new HiveAST(); + this.derivedTableCount = dtCounterInitVal; } public static ASTNode convert(final RelNode relNode, List resultSchema) throws OptiqSemanticException { - SortRel sortrel = null; - RelNode root = DerivedTableInjector.convertOpTree(relNode, resultSchema); - - if (root instanceof SortRel) { - sortrel = (SortRel) root; - root = sortrel.getChild(); - if (!(root instanceof ProjectRelBase)) - throw new RuntimeException("Child of root sort node is not a project"); - } - - ASTConverter c = new ASTConverter(root); - return c.convert(sortrel); + RelNode root = PlanModifierForASTConv.convertOpTree(relNode, resultSchema); + ASTConverter c = new ASTConverter(root, 0); + return c.convert(); } - public ASTNode convert(SortRel sortrel) { + private ASTNode convert() { /* * 1. Walk RelNode Graph; note from, where, gBy.. nodes. */ @@ -167,35 +162,67 @@ public ASTNode convert(SortRel sortrel) { * to its src/from. Hence the need to pass in sortRel for each block from * its parent. */ - if (sortrel != null) { - HiveSortRel hiveSort = (HiveSortRel) sortrel; + convertOBToASTNode((HiveSortRel) order); + + // 8. Limit + convertLimitToASTNode((HiveSortRel) limit); + + return hiveAST.getAST(); + } + + private void convertLimitToASTNode(HiveSortRel limit) { + if (limit != null) { + HiveSortRel hiveLimit = (HiveSortRel) limit; + RexNode limitExpr = hiveLimit.getFetchExpr(); + if (limitExpr != null) { + Object val = ((RexLiteral) limitExpr).getValue2(); + hiveAST.limit = ASTBuilder.limit(val); + } + } + } + + private void convertOBToASTNode(HiveSortRel order) { + if (order != null) { + HiveSortRel hiveSort = (HiveSortRel) order; if (!hiveSort.getCollation().getFieldCollations().isEmpty()) { + // 1 Add order by token ASTNode orderAst = ASTBuilder.createAST(HiveParser.TOK_ORDERBY, "TOK_ORDERBY"); - schema = new Schema((HiveSortRel) sortrel); + + schema = new Schema((HiveSortRel) hiveSort); + Map obRefToCallMap = hiveSort.getInputRefToCallMap(); + RexNode obExpr; + ASTNode astCol; for (RelFieldCollation c : hiveSort.getCollation().getFieldCollations()) { - ColumnInfo cI = schema.get(c.getFieldIndex()); - /* - * The RowResolver setup for Select drops Table associations. So setup - * ASTNode on unqualified name. - */ - ASTNode astCol = ASTBuilder.unqualifiedName(cI.column); - ASTNode astNode = c.getDirection() == RelFieldCollation.Direction.ASCENDING ? ASTBuilder + + // 2 Add Direction token + ASTNode directionAST = c.getDirection() == RelFieldCollation.Direction.ASCENDING ? ASTBuilder .createAST(HiveParser.TOK_TABSORTCOLNAMEASC, "TOK_TABSORTCOLNAMEASC") : ASTBuilder .createAST(HiveParser.TOK_TABSORTCOLNAMEDESC, "TOK_TABSORTCOLNAMEDESC"); - astNode.addChild(astCol); - orderAst.addChild(astNode); + + // 3 Convert OB expr (OB Expr is usually an input ref except for top + // level OB; top level OB will have RexCall kept in a map.) + obExpr = null; + if (obRefToCallMap != null) + obExpr = obRefToCallMap.get(c.getFieldIndex()); + + if (obExpr != null) { + astCol = obExpr.accept(new RexVisitor(schema)); + } else { + ColumnInfo cI = schema.get(c.getFieldIndex()); + /* + * The RowResolver setup for Select drops Table associations. So + * setup ASTNode on unqualified name. + */ + astCol = ASTBuilder.unqualifiedName(cI.column); + } + + // 4 buildup the ob expr AST + directionAST.addChild(astCol); + orderAst.addChild(directionAST); } hiveAST.order = orderAst; } - RexNode limitExpr = hiveSort.getFetchExpr(); - if (limitExpr != null) { - Object val = ((RexLiteral) limitExpr).getValue2(); - hiveAST.limit = ASTBuilder.limit(val); - } - } - - return hiveAST.getAST(); } private Schema getRowSchema(String tblAlias) { @@ -224,20 +251,20 @@ private QueryBlockInfo convertSource(RelNode r) { RelNode leftInput = ((UnionRelBase) r).getInput(0); RelNode rightInput = ((UnionRelBase) r).getInput(1); - ASTConverter leftConv = new ASTConverter(leftInput); - ASTConverter rightConv = new ASTConverter(rightInput); - ASTNode leftAST = leftConv.convert((SortRel) null); - ASTNode rightAST = rightConv.convert((SortRel) null); + ASTConverter leftConv = new ASTConverter(leftInput, this.derivedTableCount); + ASTConverter rightConv = new ASTConverter(rightInput, this.derivedTableCount); + ASTNode leftAST = leftConv.convert(); + ASTNode rightAST = rightConv.convert(); ASTNode unionAST = getUnionAllAST(leftAST, rightAST); - String sqAlias = ASTConverter.nextAlias(); + String sqAlias = nextAlias(); ast = ASTBuilder.subQuery(unionAST, sqAlias); s = new Schema((UnionRelBase) r, sqAlias); } else { - ASTConverter src = new ASTConverter(r); - ASTNode srcAST = src.convert(order); - String sqAlias = ASTConverter.nextAlias(); + ASTConverter src = new ASTConverter(r, this.derivedTableCount); + ASTNode srcAST = src.convert(); + String sqAlias = nextAlias(); s = src.getRowSchema(sqAlias); ast = ASTBuilder.subQuery(srcAST, sqAlias); } @@ -279,7 +306,15 @@ public void visit(RelNode node, int ordinal, RelNode parent) { } else if (node instanceof AggregateRelBase) { ASTConverter.this.groupBy = (AggregateRelBase) node; } else if (node instanceof SortRel) { - ASTConverter.this.order = (SortRel) node; + if (ASTConverter.this.select != null) { + ASTConverter.this.from = node; + } else { + SortRel hiveSortRel = (SortRel) node; + if (hiveSortRel.getCollation().getFieldCollations().isEmpty()) + ASTConverter.this.limit = hiveSortRel; + else + ASTConverter.this.order = hiveSortRel; + } } /* * once the source node is reached; stop traversal for this QB @@ -312,7 +347,12 @@ public ASTNode visitInputRef(RexInputRef inputRef) { if (cI.agg != null) { return (ASTNode) ParseDriver.adaptor.dupTree(cI.agg); } - return ASTBuilder.qualifiedName(cI.table, cI.column); + + if (cI.table == null || cI.table.isEmpty()) + return ASTBuilder.unqualifiedName(cI.column); + else + return ASTBuilder.qualifiedName(cI.table, cI.column); + } @Override @@ -480,7 +520,7 @@ static class Schema extends ArrayList { private static final long serialVersionUID = 1L; Schema(TableAccessRelBase scan) { - String tabName = ((RelOptHiveTable)scan.getTable()).getTableAlias(); + String tabName = ((RelOptHiveTable) scan.getTable()).getTableAlias(); for (RelDataTypeField field : scan.getRowType().getFieldList()) { add(new ColumnInfo(tabName, field.getName())); } @@ -571,12 +611,12 @@ static class ColumnInfo { } } - static String nextAlias() { - return String.format("$hdt$_%d", derivedTableCounter.getAndIncrement()); + private String nextAlias() { + String tabAlias = String.format("$hdt$_%d", derivedTableCount); + derivedTableCount++; + return tabAlias; } - private static AtomicLong derivedTableCounter = new AtomicLong(0); - static class HiveAST { ASTNode from; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/DerivedTableInjector.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java similarity index 72% rename from ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/DerivedTableInjector.java rename to ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java index a6551740ed1e..3d90ae7ef0b2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/DerivedTableInjector.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java @@ -18,7 +18,9 @@ package org.apache.hadoop.hive.ql.optimizer.optiq.translator; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.optimizer.optiq.HiveOptiqUtil; @@ -32,21 +34,24 @@ import org.eigenbase.rel.JoinRelBase; import org.eigenbase.rel.OneRowRelBase; import org.eigenbase.rel.ProjectRelBase; +import org.eigenbase.rel.RelCollationImpl; import org.eigenbase.rel.RelNode; import org.eigenbase.rel.SetOpRel; import org.eigenbase.rel.SingleRel; import org.eigenbase.rel.SortRel; -import org.eigenbase.rel.TableAccessRelBase; -import org.eigenbase.rel.TableFunctionRelBase; -import org.eigenbase.rel.ValuesRelBase; import org.eigenbase.rel.rules.MultiJoinRel; import org.eigenbase.relopt.hep.HepRelVertex; import org.eigenbase.relopt.volcano.RelSubset; +import org.eigenbase.reltype.RelDataType; import org.eigenbase.rex.RexNode; +import org.eigenbase.util.Pair; -public class DerivedTableInjector { +import com.google.common.collect.ImmutableMap; - public static RelNode convertOpTree(RelNode rel, List resultSchema) throws OptiqSemanticException { +public class PlanModifierForASTConv { + + public static RelNode convertOpTree(RelNode rel, List resultSchema) + throws OptiqSemanticException { RelNode newTopNode = rel; if (!(newTopNode instanceof ProjectRelBase) && !(newTopNode instanceof SortRel)) { @@ -54,7 +59,11 @@ public static RelNode convertOpTree(RelNode rel, List resultSchema) } convertOpTree(newTopNode, (RelNode) null); - newTopNode = renameTopLevelSelectInResultSchema(newTopNode, resultSchema); + + Pair topSelparentPair = HiveOptiqUtil.getTopLevelSelect(newTopNode); + fixTopOBSchema(newTopNode, topSelparentPair, resultSchema); + topSelparentPair = HiveOptiqUtil.getTopLevelSelect(newTopNode); + newTopNode = renameTopLevelSelectInResultSchema(newTopNode, topSelparentPair, resultSchema); return newTopNode; } @@ -113,36 +122,68 @@ private static void convertOpTree(RelNode rel, RelNode parent) { } } - private static RelNode renameTopLevelSelectInResultSchema(final RelNode rootRel, - List resultSchema) throws OptiqSemanticException { - RelNode tmpRel = rootRel; - RelNode parentOforiginalProjRel = rootRel; - HiveProjectRel originalProjRel = null; - - while (tmpRel != null) { - if (tmpRel instanceof HiveProjectRel) { - originalProjRel = (HiveProjectRel) tmpRel; - break; + private static void fixTopOBSchema(final RelNode rootRel, + Pair topSelparentPair, List resultSchema) + throws OptiqSemanticException { + if (topSelparentPair.getKey() instanceof SortRel + && HiveOptiqUtil.orderRelNode(topSelparentPair.getKey())) { + HiveSortRel obRel = (HiveSortRel) topSelparentPair.getKey(); + ProjectRelBase obChild = (ProjectRelBase) topSelparentPair.getValue(); + + if (obChild.getRowType().getFieldCount() > resultSchema.size()) { + RelDataType rt = obChild.getRowType(); + Set collationInputRefs = new HashSet(RelCollationImpl.ordinals(obRel + .getCollation())); + ImmutableMap.Builder inputRefToCallMapBldr = ImmutableMap.builder(); + for (int i = resultSchema.size(); i < rt.getFieldCount(); i++) { + if (collationInputRefs.contains(i)) { + inputRefToCallMapBldr.put(i, obChild.getChildExps().get(i)); + } + } + + ImmutableMap inputRefToCallMap = inputRefToCallMapBldr.build(); + if ((obChild.getRowType().getFieldCount() - inputRefToCallMap.size()) == resultSchema + .size()) { + HiveProjectRel replacementProjectRel = HiveProjectRel.create(obChild.getChild(), obChild + .getChildExps().subList(0, resultSchema.size()), obChild.getRowType().getFieldNames() + .subList(0, resultSchema.size())); + obRel.replaceInput(0, replacementProjectRel); + obRel.setInputRefToCallMap(inputRefToCallMap); + } else { + throw new OptiqSemanticException( + "Result Schema didn't match Optiq Optimized Op Tree Schema"); + } } - parentOforiginalProjRel = tmpRel; - tmpRel = tmpRel.getInput(0); } + } + + private static RelNode renameTopLevelSelectInResultSchema(final RelNode rootRel, + Pair topSelparentPair, List resultSchema) + throws OptiqSemanticException { + RelNode parentOforiginalProjRel = topSelparentPair.getKey(); + HiveProjectRel originalProjRel = (HiveProjectRel) topSelparentPair.getValue(); // Assumption: top portion of tree could only be // (limit)?(OB)?(ProjectRelBase).... List rootChildExps = originalProjRel.getChildExps(); if (resultSchema.size() != rootChildExps.size()) { // this is a bug in Hive where for queries like select key,value,value - // convertRowSchemaToResultSetSchema() only returns schema containing key,value - // Underlying issue is much deeper because it seems like RowResolver itself doesnt have + // convertRowSchemaToResultSetSchema() only returns schema containing + // key,value + // Underlying issue is much deeper because it seems like RowResolver + // itself doesnt have // those mappings. see limit_pushdown.q & limit_pushdown_negative.q // Till Hive issue is fixed, disable CBO for such queries. throw new OptiqSemanticException("Result Schema didn't match Optiq Optimized Op Tree Schema"); } List newSelAliases = new ArrayList(); + String colAlias; for (int i = 0; i < rootChildExps.size(); i++) { - newSelAliases.add(resultSchema.get(i).getName()); + colAlias = resultSchema.get(i).getName(); + if (colAlias.startsWith("_")) + colAlias = colAlias.substring(1); + newSelAliases.add(colAlias); } HiveProjectRel replacementProjectRel = HiveProjectRel.create(originalProjRel.getChild(), @@ -231,9 +272,9 @@ private static boolean validGBParent(RelNode gbNode, RelNode parent) { private static boolean validSortParent(RelNode sortNode, RelNode parent) { boolean validParent = true; - if (parent != null && !(parent instanceof ProjectRelBase)) { + if (parent != null && !(parent instanceof ProjectRelBase) + && !((parent instanceof SortRel) || HiveOptiqUtil.orderRelNode(parent))) validParent = false; - } return validParent; } @@ -242,7 +283,8 @@ private static boolean validSortChild(HiveSortRel sortNode) { boolean validChild = true; RelNode child = sortNode.getChild(); - if (!(child instanceof ProjectRelBase)) { + if (!(HiveOptiqUtil.limitRelNode(sortNode) && HiveOptiqUtil.orderRelNode(child)) + && !(child instanceof ProjectRelBase)) { validChild = false; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 48b598be7dbf..06f235c2c1e8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -37,6 +37,7 @@ import java.util.TreeSet; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; @@ -12195,12 +12196,12 @@ private boolean canHandleQuery(QB qbToChk, boolean topLevelQB) { } private class OptiqBasedPlanner implements Frameworks.PlannerAction { - RelOptCluster cluster; - RelOptSchema relOptSchema; - SemanticException semanticException; - Map partitionCache; - AtomicInteger noColsMissingStats = new AtomicInteger(0); - List topLevelFieldSchema; + private RelOptCluster cluster; + private RelOptSchema relOptSchema; + private SemanticException semanticException; + private Map partitionCache; + private AtomicInteger noColsMissingStats = new AtomicInteger(0); + List topLevelFieldSchema; // TODO: Do we need to keep track of RR, ColNameToPosMap for every op or // just last one. @@ -12245,7 +12246,7 @@ public RelNode apply(RelOptCluster cluster, RelOptSchema relOptSchema, SchemaPlu this.relOptSchema = relOptSchema; try { - optiqGenPlan = genLogicalPlan(qb); + optiqGenPlan = genLogicalPlan(qb, true); topLevelFieldSchema = convertRowSchemaToResultSetSchema(relToHiveRR.get(optiqGenPlan), HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_RESULTSET_USE_UNIQUE_COLUMN_NAMES)); } catch (SemanticException e) { @@ -12862,7 +12863,7 @@ private RelNode genFilterRelNode(QB qb, ASTNode searchCond, RelNode srcRel, Phase1Ctx ctx_1 = initPhase1Ctx(); doPhase1(subQuery.getSubQueryAST(), qbSQ, ctx_1); getMetaData(qbSQ); - RelNode subQueryRelNode = genLogicalPlan(qbSQ); + RelNode subQueryRelNode = genLogicalPlan(qbSQ, false); aliasToRel.put(subQuery.getAlias(), subQueryRelNode); RowResolver sqRR = relToHiveRR.get(subQueryRelNode); @@ -12890,7 +12891,7 @@ private RelNode genFilterRelNode(QB qb, ASTNode searchCond, RelNode srcRel, ctx_1 = initPhase1Ctx(); doPhase1(notInCheck.getSubQueryAST(), qbSQ_nic, ctx_1); getMetaData(qbSQ_nic); - RelNode subQueryNICRelNode = genLogicalPlan(qbSQ_nic); + RelNode subQueryNICRelNode = genLogicalPlan(qbSQ_nic, false); aliasToRel.put(notInCheck.getAlias(), subQueryNICRelNode); srcRel = genJoinRelNode(srcRel, subQueryNICRelNode, // set explicitly to inner until we figure out SemiJoin use @@ -13298,8 +13299,22 @@ private RelNode genGBLogicalPlan(QB qb, RelNode srcRel) throws SemanticException return gbRel; } - private RelNode genOBLogicalPlan(QB qb, RelNode srcRel) throws SemanticException { - RelNode relToRet = null; + /** + * Generate OB RelNode and input Select RelNode that should be used to + * introduce top constraining Project. If Input select RelNode is not + * present then don't introduce top constraining select. + * + * @param qb + * @param srcRel + * @param outermostOB + * @return Pair Key- OB RelNode, Value - Input Select for + * top constraining Select + * @throws SemanticException + */ + private Pair genOBLogicalPlan(QB qb, RelNode srcRel, boolean outermostOB) + throws SemanticException { + RelNode sortRel = null; + RelNode originalOBChild = null; QBParseInfo qbp = getQBParseInfo(qb); String dest = qbp.getClauseNames().iterator().next(); @@ -13366,7 +13381,8 @@ private RelNode genOBLogicalPlan(QB qb, RelNode srcRel) throws SemanticException fieldCollations.add(new RelFieldCollation(fieldIndex, order)); } - // 3. Add Child Project Rel if needed + // 3. Add Child Project Rel if needed, Generate Output RR, input Sel Rel + // for top constraining Sel RelNode obInputRel = srcRel; if (!newVCLst.isEmpty()) { List originalInputRefs = Lists.transform(srcRel.getRowType().getFieldList(), @@ -13376,53 +13392,46 @@ public RexNode apply(RelDataTypeField input) { return new RexInputRef(input.getIndex(), input.getType()); } }); + RowResolver obSyntheticProjectRR = new RowResolver(); + RowResolver.add(obSyntheticProjectRR, inputRR, 0); + int vcolPos = inputRR.getRowSchema().getSignature().size(); + for (Pair astTypePair : vcASTTypePairs) { + obSyntheticProjectRR.putExpression(astTypePair.getKey(), new ColumnInfo( + getColumnInternalName(vcolPos), astTypePair.getValue(), null, false)); + vcolPos++; + } + obInputRel = genSelectRelNode(CompositeList.of(originalInputRefs, newVCLst), + obSyntheticProjectRR, srcRel); + + if (outermostOB) { + RowResolver.add(outputRR, inputRR, 0); - obInputRel = HiveProjectRel.create(srcRel, CompositeList.of(originalInputRefs, newVCLst), - null); + } else { + RowResolver.add(outputRR, obSyntheticProjectRR, 0); + originalOBChild = srcRel; + } + } else { + RowResolver.add(outputRR, inputRR, 0); } // 4. Construct SortRel RelTraitSet traitSet = cluster.traitSetOf(HiveRel.CONVENTION); RelCollation canonizedCollation = traitSet.canonize(RelCollationImpl.of(fieldCollations)); - // TODO: Is it better to introduce a - // project on top to restrict VC from showing up in sortRel type - RelNode sortRel = new HiveSortRel(cluster, traitSet, obInputRel, canonizedCollation, - null, null); - - // 5. Construct OB Parent Rel If needed - // Construct a parent Project if OB has virtual columns(vc) otherwise - // vc would show up in the result - // TODO: If OB is part of sub query & Parent Query select is not of the - // type "select */.*..." then parent project is not needed - relToRet = sortRel; - if (!newVCLst.isEmpty()) { - List obParentRelProjs = Lists.transform(srcRel.getRowType().getFieldList(), - new Function() { - @Override - public RexNode apply(RelDataTypeField input) { - return new RexInputRef(input.getIndex(), input.getType()); - } - }); + sortRel = new HiveSortRel(cluster, traitSet, obInputRel, canonizedCollation, null, null); - relToRet = HiveProjectRel.create(sortRel, obParentRelProjs, null); - } - - // 6. Construct output RR - RowResolver.add(outputRR, inputRR, 0); - - // 7. Update the maps + // 5. Update the maps // NOTE: Output RR for SortRel is considered same as its input; we may // end up not using VC that is present in sort rel. Also note that // rowtype of sortrel is the type of it child; if child happens to be // synthetic project that we introduced then that projectrel would // contain the vc. ImmutableMap hiveColNameOptiqPosMap = buildHiveToOptiqColumnMap(outputRR, - relToRet); - relToHiveRR.put(relToRet, outputRR); - relToHiveColNameOptiqPosMap.put(relToRet, hiveColNameOptiqPosMap); + sortRel); + relToHiveRR.put(sortRel, outputRR); + relToHiveColNameOptiqPosMap.put(sortRel, hiveColNameOptiqPosMap); } - return relToRet; + return (new Pair(sortRel, originalOBChild)); } private RelNode genLimitLogicalPlan(QB qb, RelNode srcRel) throws SemanticException { @@ -13649,6 +13658,53 @@ private RelNode genSelectForWindowing(QB qb, RelNode srcRel) throws SemanticExce private RelNode genSelectRelNode(List optiqColLst, RowResolver out_rwsch, RelNode srcRel) throws OptiqSemanticException { // 1. Build Column Names + Set colNamesSet = new HashSet(); + List cInfoLst = out_rwsch.getRowSchema().getSignature(); + ArrayList columnNames = new ArrayList(); + String[] qualifiedColNames; + String tmpColAlias; + for (int i = 0; i < optiqColLst.size(); i++) { + ColumnInfo cInfo = cInfoLst.get(i); + qualifiedColNames = out_rwsch.reverseLookup(cInfo.getInternalName()); + /* + if (qualifiedColNames[0] != null && !qualifiedColNames[0].isEmpty()) + tmpColAlias = qualifiedColNames[0] + "." + qualifiedColNames[1]; + else + */ + tmpColAlias = qualifiedColNames[1]; + + // Prepend column names with '_o_' if it starts with '_c' + /* + * Hive treats names that start with '_c' as internalNames; so change + * the names so we don't run into this issue when converting back to + * Hive AST. + */ + if (tmpColAlias.startsWith("_c")) + tmpColAlias = "_o_" + tmpColAlias; + int suffix = 1; + while (colNamesSet.contains(tmpColAlias)) { + tmpColAlias = qualifiedColNames[1] + suffix; + suffix++; + } + + colNamesSet.add(tmpColAlias); + columnNames.add(tmpColAlias); + } + + // 3 Build Optiq Rel Node for project using converted projections & col + // names + HiveRel selRel = HiveProjectRel.create(srcRel, optiqColLst, columnNames); + + // 4. Keep track of colname-to-posmap && RR for new select + this.relToHiveColNameOptiqPosMap.put(selRel, buildHiveToOptiqColumnMap(out_rwsch, selRel)); + this.relToHiveRR.put(selRel, out_rwsch); + + return selRel; + } + + private RelNode genSelectRelNode(List optiqColLst, RowResolver out_rwsch, + RelNode srcRel, boolean removethismethod) throws OptiqSemanticException { + // 1. Build Column Names // TODO: Should this be external names ArrayList columnNames = new ArrayList(); for (int i = 0; i < optiqColLst.size(); i++) { @@ -13858,7 +13914,7 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { private RelNode genLogicalPlan(QBExpr qbexpr) throws SemanticException { if (qbexpr.getOpcode() == QBExpr.Opcode.NULLOP) { - return genLogicalPlan(qbexpr.getQB()); + return genLogicalPlan(qbexpr.getQB(), false); } if (qbexpr.getOpcode() == QBExpr.Opcode.UNION) { RelNode qbexpr1Ops = genLogicalPlan(qbexpr.getQBExpr1()); @@ -13870,7 +13926,7 @@ private RelNode genLogicalPlan(QBExpr qbexpr) throws SemanticException { return null; } - private RelNode genLogicalPlan(QB qb) throws SemanticException { + private RelNode genLogicalPlan(QB qb, boolean outerMostQB) throws SemanticException { RelNode srcRel = null; RelNode filterRel = null; RelNode gbRel = null; @@ -13907,15 +13963,16 @@ private RelNode genLogicalPlan(QB qb) throws SemanticException { } if (aliasToRel.isEmpty()) { - //// This may happen for queries like select 1; (no source table) + // // This may happen for queries like select 1; (no source table) // We can do following which is same, as what Hive does. // With this, we will be able to generate Optiq plan. - // qb.getMetaData().setSrcForAlias(DUMMY_TABLE, getDummyTable()); - // RelNode op = genTableLogicalPlan(DUMMY_TABLE, qb); - // qb.addAlias(DUMMY_TABLE); - // qb.setTabAlias(DUMMY_TABLE, DUMMY_TABLE); - // aliasToRel.put(DUMMY_TABLE, op); - // However, Hive trips later while trying to get Metadata for this dummy table + // qb.getMetaData().setSrcForAlias(DUMMY_TABLE, getDummyTable()); + // RelNode op = genTableLogicalPlan(DUMMY_TABLE, qb); + // qb.addAlias(DUMMY_TABLE); + // qb.setTabAlias(DUMMY_TABLE, DUMMY_TABLE); + // aliasToRel.put(DUMMY_TABLE, op); + // However, Hive trips later while trying to get Metadata for this dummy + // table // So, for now lets just disable this. Anyway there is nothing much to // optimize in such cases. throw new OptiqSemanticException("Unsupported"); @@ -13946,14 +14003,44 @@ private RelNode genLogicalPlan(QB qb) throws SemanticException { srcRel = (selectRel == null) ? srcRel : selectRel; // 6. Build Rel for OB Clause - obRel = genOBLogicalPlan(qb, srcRel); + Pair obTopProjPair = genOBLogicalPlan(qb, srcRel, outerMostQB); + obRel = obTopProjPair.getKey(); + RelNode topConstrainingProjArgsRel = obTopProjPair.getValue(); srcRel = (obRel == null) ? srcRel : obRel; // 7. Build Rel for Limit Clause limitRel = genLimitLogicalPlan(qb, srcRel); srcRel = (limitRel == null) ? srcRel : limitRel; - // 8. Incase this QB corresponds to subquery then modify its RR to point + // 8. Introduce top constraining select if needed. + // NOTES: + // 1. Optiq can not take an expr in OB; hence it needs to be added as VC + // in the input select; In such cases we need to introduce a select on top + // to ensure VC is not visible beyond Limit, OB. + // 2. Hive can not preserve order across select. In subqueries OB is used + // to get a deterministic set of tuples from following limit. Hence we + // introduce the constraining select above Limit (if present) instead of + // OB. + // 3. The top level OB will not introduce constraining select due to Hive + // limitation(#2) stated above. The RR for OB will not include VC. Thus + // Result Schema will not include exprs used by top OB. During AST Conv, + // in the PlanModifierForASTConv we would modify the top level OB to + // migrate exprs from input sel to SortRel (Note that Optiq doesn't + // support this; but since we are done with Optiq at this point its OK). + if (topConstrainingProjArgsRel != null) { + List originalInputRefs = Lists.transform(topConstrainingProjArgsRel.getRowType() + .getFieldList(), new Function() { + @Override + public RexNode apply(RelDataTypeField input) { + return new RexInputRef(input.getIndex(), input.getType()); + } + }); + RowResolver topConstrainingProjRR = new RowResolver(); + RowResolver.add(topConstrainingProjRR, this.relToHiveRR.get(topConstrainingProjArgsRel), 0); + srcRel = genSelectRelNode(originalInputRefs, topConstrainingProjRR, srcRel); + } + + // 9. Incase this QB corresponds to subquery then modify its RR to point // to subquery alias // TODO: cleanup this if (qb.getParseInfo().getAlias() != null) { diff --git a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out index dabc8884e24d..5920612790d9 100644 --- a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out @@ -16734,26 +16734,6 @@ POSTHOOK: Input: default@t1@dt=2014 POSTHOOK: Input: default@t2 POSTHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 false 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 false 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -null null NULL NULL NULL 2014 -null null NULL NULL NULL 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 @@ -16773,6 +16753,26 @@ null null NULL NULL NULL 2014 1 1 1 1.0 false 2014 1 1 1 1.0 false 2014 null null NULL NULL NULL 2014 +null null NULL NULL NULL 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 false 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 false 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +null null NULL NULL NULL 2014 null null NULL NULL NULL 2014 PREHOOK: query: select key from (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r2 where key >=0 order by key PREHOOK: type: QUERY From 2e494f4823ba486baa1a209f9d9053fb68f56161 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 1 Oct 2014 16:11:10 +0000 Subject: [PATCH 042/339] HIVE-8250 : Truncating table doesnt invalidate stats (Ashutosh Chauhan via Prashanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628751 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/metastore/MetaStoreUtils.java | 6 +++--- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java | 2 +- .../alter_numbuckets_partitioned_table_h23.q.out | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java index c95473c968d3..25c180d24721 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java @@ -258,7 +258,7 @@ public static boolean requireCalStats(Configuration hiveConf, Partition oldPart, if (oldPart.getParameters().containsKey(stat)) { Long oldStat = Long.parseLong(oldPart.getParameters().get(stat)); Long newStat = Long.parseLong(newPart.getParameters().get(stat)); - if (oldStat != newStat) { + if (!oldStat.equals(newStat)) { return true; } } @@ -993,7 +993,7 @@ public static Properties getSchema( partString = partString.concat(partStringSep); partString = partString.concat(partKey.getName()); partTypesString = partTypesString.concat(partTypesStringSep); - partTypesString = partTypesString.concat(partKey.getType()); + partTypesString = partTypesString.concat(partKey.getType()); if (partStringSep.length() == 0) { partStringSep = "/"; partTypesStringSep = ":"; @@ -1007,7 +1007,7 @@ public static Properties getSchema( schema .setProperty( org.apache.hadoop.hive.metastore.api.hive_metastoreConstants.META_TABLE_PARTITION_COLUMN_TYPES, - partTypesString); + partTypesString); } if (parameters != null) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index dc00d6643650..d5374bc8eaed 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -4207,7 +4207,7 @@ private boolean needToUpdateStats(Map props) { String statVal = props.get(stat); if (statVal != null && Long.parseLong(statVal) > 0) { statsPresent = true; - props.put(statVal, "0"); + props.put(stat, "0"); props.put(StatsSetupConst.COLUMN_STATS_ACCURATE, "false"); } } diff --git a/ql/src/test/results/clientpositive/alter_numbuckets_partitioned_table_h23.q.out b/ql/src/test/results/clientpositive/alter_numbuckets_partitioned_table_h23.q.out index 5047b23479da..de3cae68f931 100644 --- a/ql/src/test/results/clientpositive/alter_numbuckets_partitioned_table_h23.q.out +++ b/ql/src/test/results/clientpositive/alter_numbuckets_partitioned_table_h23.q.out @@ -358,11 +358,11 @@ Table: tst1 Protect Mode: None #### A masked pattern was here #### Partition Parameters: - COLUMN_STATS_ACCURATE false + COLUMN_STATS_ACCURATE true #### A masked pattern was here #### numFiles 12 - numRows -1 - rawDataSize -1 + numRows 500 + rawDataSize 5312 totalSize 5812 #### A masked pattern was here #### From ae75afc57c9df87f72a29cf67f4c990306048664 Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Wed, 1 Oct 2014 16:49:38 +0000 Subject: [PATCH 043/339] HIVE-8236: VectorHashKeyWrapper allocates too many zero sized arrays (Gopal V, reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628769 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/vector/VectorHashKeyWrapper.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java index c7e044eafd34..1c366df4a036 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java @@ -36,6 +36,12 @@ */ public class VectorHashKeyWrapper extends KeyWrapper { + private static final int[] EMPTY_INT_ARRAY = new int[0]; + private static final long[] EMPTY_LONG_ARRAY = new long[0]; + private static final double[] EMPTY_DOUBLE_ARRAY = new double[0]; + private static final byte[][] EMPTY_BYTES_ARRAY = new byte[0][]; + private static final Decimal128[] EMPTY_DECIMAL_ARRAY = new Decimal128[0]; + private long[] longValues; private double[] doubleValues; @@ -50,15 +56,21 @@ public class VectorHashKeyWrapper extends KeyWrapper { public VectorHashKeyWrapper(int longValuesCount, int doubleValuesCount, int byteValuesCount, int decimalValuesCount) { - longValues = new long[longValuesCount]; - doubleValues = new double[doubleValuesCount]; - decimalValues = new Decimal128[decimalValuesCount]; + longValues = longValuesCount > 0 ? new long[longValuesCount] : EMPTY_LONG_ARRAY; + doubleValues = doubleValuesCount > 0 ? new double[doubleValuesCount] : EMPTY_DOUBLE_ARRAY; + decimalValues = decimalValuesCount > 0 ? new Decimal128[decimalValuesCount] : EMPTY_DECIMAL_ARRAY; for(int i = 0; i < decimalValuesCount; ++i) { decimalValues[i] = new Decimal128(); } - byteValues = new byte[byteValuesCount][]; - byteStarts = new int[byteValuesCount]; - byteLengths = new int[byteValuesCount]; + if (byteValuesCount > 0) { + byteValues = new byte[byteValuesCount][]; + byteStarts = new int[byteValuesCount]; + byteLengths = new int[byteValuesCount]; + } else { + byteValues = EMPTY_BYTES_ARRAY; + byteStarts = EMPTY_INT_ARRAY; + byteLengths = EMPTY_INT_ARRAY; + } isNull = new boolean[longValuesCount + doubleValuesCount + byteValuesCount + decimalValuesCount]; hashcode = 0; } From e726e679fe5cbf88816a4d6566874124146ee145 Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Wed, 1 Oct 2014 17:01:07 +0000 Subject: [PATCH 044/339] HIVE-8271: Relocate jackson within hive-exec.jar for hadoop-2.4 compat (Gopal V, reviewed by Vikram Dixit) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628776 13f79535-47bb-0310-9956-ffa450edef68 --- ql/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ql/pom.xml b/ql/pom.xml index 3507411652e1..1c26d19082d2 100644 --- a/ql/pom.xml +++ b/ql/pom.xml @@ -638,6 +638,10 @@ com.esotericsoftware org.apache.hive.com.esotericsoftware + + org.codehaus.jackson + org.apache.hive.org.codehaus.jackson + From 4e44390d18e5c531b6fff9027c8ab2bbe2a1704f Mon Sep 17 00:00:00 2001 From: Szehon Ho Date: Wed, 1 Oct 2014 19:00:06 +0000 Subject: [PATCH 045/339] HIVE-8314 : Restore thrift string interning of HIVE-7975 (Chao via Szehon) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628810 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/metastore/api/FieldSchema.java | 18 +++++------ .../hadoop/hive/metastore/api/Partition.java | 20 ++++++------- .../hadoop/hive/metastore/api/SerDeInfo.java | 20 ++++++------- .../hive/metastore/api/StorageDescriptor.java | 30 +++++++++---------- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FieldSchema.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FieldSchema.java index a99381013daf..c84fa29ef634 100644 --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FieldSchema.java +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FieldSchema.java @@ -135,9 +135,9 @@ public FieldSchema( String comment) { this(); - this.name = name; - this.type = type; - this.comment = comment; + this.name = org.apache.hive.common.util.HiveStringUtils.intern(name); + this.type = org.apache.hive.common.util.HiveStringUtils.intern(type); + this.comment = org.apache.hive.common.util.HiveStringUtils.intern(comment); } /** @@ -145,13 +145,13 @@ public FieldSchema( */ public FieldSchema(FieldSchema other) { if (other.isSetName()) { - this.name = other.name; + this.name = org.apache.hive.common.util.HiveStringUtils.intern(other.name); } if (other.isSetType()) { - this.type = other.type; + this.type = org.apache.hive.common.util.HiveStringUtils.intern(other.type); } if (other.isSetComment()) { - this.comment = other.comment; + this.comment = org.apache.hive.common.util.HiveStringUtils.intern(other.comment); } } @@ -171,7 +171,7 @@ public String getName() { } public void setName(String name) { - this.name = name; + this.name = org.apache.hive.common.util.HiveStringUtils.intern(name); } public void unsetName() { @@ -194,7 +194,7 @@ public String getType() { } public void setType(String type) { - this.type = type; + this.type = org.apache.hive.common.util.HiveStringUtils.intern(type); } public void unsetType() { @@ -217,7 +217,7 @@ public String getComment() { } public void setComment(String comment) { - this.comment = comment; + this.comment = org.apache.hive.common.util.HiveStringUtils.intern(comment); } public void unsetComment() { diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java index 312807ed4e58..242d54d222a3 100644 --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java @@ -182,14 +182,14 @@ public Partition( { this(); this.values = values; - this.dbName = dbName; - this.tableName = tableName; + this.dbName = org.apache.hive.common.util.HiveStringUtils.intern(dbName); + this.tableName = org.apache.hive.common.util.HiveStringUtils.intern(tableName); this.createTime = createTime; setCreateTimeIsSet(true); this.lastAccessTime = lastAccessTime; setLastAccessTimeIsSet(true); this.sd = sd; - this.parameters = parameters; + this.parameters = org.apache.hive.common.util.HiveStringUtils.intern(parameters); } /** @@ -205,10 +205,10 @@ public Partition(Partition other) { this.values = __this__values; } if (other.isSetDbName()) { - this.dbName = other.dbName; + this.dbName = org.apache.hive.common.util.HiveStringUtils.intern(other.dbName); } if (other.isSetTableName()) { - this.tableName = other.tableName; + this.tableName = org.apache.hive.common.util.HiveStringUtils.intern(other.tableName); } this.createTime = other.createTime; this.lastAccessTime = other.lastAccessTime; @@ -222,9 +222,9 @@ public Partition(Partition other) { String other_element_key = other_element.getKey(); String other_element_value = other_element.getValue(); - String __this__parameters_copy_key = other_element_key; + String __this__parameters_copy_key = org.apache.hive.common.util.HiveStringUtils.intern(other_element_key); - String __this__parameters_copy_value = other_element_value; + String __this__parameters_copy_value = org.apache.hive.common.util.HiveStringUtils.intern(other_element_value); __this__parameters.put(__this__parameters_copy_key, __this__parameters_copy_value); } @@ -296,7 +296,7 @@ public String getDbName() { } public void setDbName(String dbName) { - this.dbName = dbName; + this.dbName = org.apache.hive.common.util.HiveStringUtils.intern(dbName); } public void unsetDbName() { @@ -319,7 +319,7 @@ public String getTableName() { } public void setTableName(String tableName) { - this.tableName = tableName; + this.tableName = org.apache.hive.common.util.HiveStringUtils.intern(tableName); } public void unsetTableName() { @@ -420,7 +420,7 @@ public Map getParameters() { } public void setParameters(Map parameters) { - this.parameters = parameters; + this.parameters = org.apache.hive.common.util.HiveStringUtils.intern(parameters); } public void unsetParameters() { diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java index 24d65bb5d925..2466d8fba844 100644 --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java @@ -137,9 +137,9 @@ public SerDeInfo( Map parameters) { this(); - this.name = name; - this.serializationLib = serializationLib; - this.parameters = parameters; + this.name = org.apache.hive.common.util.HiveStringUtils.intern(name); + this.serializationLib = org.apache.hive.common.util.HiveStringUtils.intern(serializationLib); + this.parameters = org.apache.hive.common.util.HiveStringUtils.intern(parameters); } /** @@ -147,10 +147,10 @@ public SerDeInfo( */ public SerDeInfo(SerDeInfo other) { if (other.isSetName()) { - this.name = other.name; + this.name = org.apache.hive.common.util.HiveStringUtils.intern(other.name); } if (other.isSetSerializationLib()) { - this.serializationLib = other.serializationLib; + this.serializationLib = org.apache.hive.common.util.HiveStringUtils.intern(other.serializationLib); } if (other.isSetParameters()) { Map __this__parameters = new HashMap(); @@ -159,9 +159,9 @@ public SerDeInfo(SerDeInfo other) { String other_element_key = other_element.getKey(); String other_element_value = other_element.getValue(); - String __this__parameters_copy_key = other_element_key; + String __this__parameters_copy_key = org.apache.hive.common.util.HiveStringUtils.intern(other_element_key); - String __this__parameters_copy_value = other_element_value; + String __this__parameters_copy_value = org.apache.hive.common.util.HiveStringUtils.intern(other_element_value); __this__parameters.put(__this__parameters_copy_key, __this__parameters_copy_value); } @@ -185,7 +185,7 @@ public String getName() { } public void setName(String name) { - this.name = name; + this.name = org.apache.hive.common.util.HiveStringUtils.intern(name); } public void unsetName() { @@ -208,7 +208,7 @@ public String getSerializationLib() { } public void setSerializationLib(String serializationLib) { - this.serializationLib = serializationLib; + this.serializationLib = org.apache.hive.common.util.HiveStringUtils.intern(serializationLib); } public void unsetSerializationLib() { @@ -242,7 +242,7 @@ public Map getParameters() { } public void setParameters(Map parameters) { - this.parameters = parameters; + this.parameters = org.apache.hive.common.util.HiveStringUtils.intern(parameters); } public void unsetParameters() { diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java index d0b9843be876..b91cc1c28f69 100644 --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java @@ -216,17 +216,17 @@ public StorageDescriptor( { this(); this.cols = cols; - this.location = location; - this.inputFormat = inputFormat; - this.outputFormat = outputFormat; + this.location = org.apache.hive.common.util.HiveStringUtils.intern(location); + this.inputFormat = org.apache.hive.common.util.HiveStringUtils.intern(inputFormat); + this.outputFormat = org.apache.hive.common.util.HiveStringUtils.intern(outputFormat); this.compressed = compressed; setCompressedIsSet(true); this.numBuckets = numBuckets; setNumBucketsIsSet(true); this.serdeInfo = serdeInfo; - this.bucketCols = bucketCols; + this.bucketCols = org.apache.hive.common.util.HiveStringUtils.intern(bucketCols); this.sortCols = sortCols; - this.parameters = parameters; + this.parameters = org.apache.hive.common.util.HiveStringUtils.intern(parameters); } /** @@ -242,13 +242,13 @@ public StorageDescriptor(StorageDescriptor other) { this.cols = __this__cols; } if (other.isSetLocation()) { - this.location = other.location; + this.location = org.apache.hive.common.util.HiveStringUtils.intern(other.location); } if (other.isSetInputFormat()) { - this.inputFormat = other.inputFormat; + this.inputFormat = org.apache.hive.common.util.HiveStringUtils.intern(other.inputFormat); } if (other.isSetOutputFormat()) { - this.outputFormat = other.outputFormat; + this.outputFormat = org.apache.hive.common.util.HiveStringUtils.intern(other.outputFormat); } this.compressed = other.compressed; this.numBuckets = other.numBuckets; @@ -276,9 +276,9 @@ public StorageDescriptor(StorageDescriptor other) { String other_element_key = other_element.getKey(); String other_element_value = other_element.getValue(); - String __this__parameters_copy_key = other_element_key; + String __this__parameters_copy_key = org.apache.hive.common.util.HiveStringUtils.intern(other_element_key); - String __this__parameters_copy_value = other_element_value; + String __this__parameters_copy_value = org.apache.hive.common.util.HiveStringUtils.intern(other_element_value); __this__parameters.put(__this__parameters_copy_key, __this__parameters_copy_value); } @@ -356,7 +356,7 @@ public String getLocation() { } public void setLocation(String location) { - this.location = location; + this.location = org.apache.hive.common.util.HiveStringUtils.intern(location); } public void unsetLocation() { @@ -379,7 +379,7 @@ public String getInputFormat() { } public void setInputFormat(String inputFormat) { - this.inputFormat = inputFormat; + this.inputFormat = org.apache.hive.common.util.HiveStringUtils.intern(inputFormat); } public void unsetInputFormat() { @@ -402,7 +402,7 @@ public String getOutputFormat() { } public void setOutputFormat(String outputFormat) { - this.outputFormat = outputFormat; + this.outputFormat = org.apache.hive.common.util.HiveStringUtils.intern(outputFormat); } public void unsetOutputFormat() { @@ -507,7 +507,7 @@ public List getBucketCols() { } public void setBucketCols(List bucketCols) { - this.bucketCols = bucketCols; + this.bucketCols = org.apache.hive.common.util.HiveStringUtils.intern(bucketCols); } public void unsetBucketCols() { @@ -579,7 +579,7 @@ public Map getParameters() { } public void setParameters(Map parameters) { - this.parameters = parameters; + this.parameters = org.apache.hive.common.util.HiveStringUtils.intern(parameters); } public void unsetParameters() { From f5dda5813bdbd60938ed585441db5975275bf7f5 Mon Sep 17 00:00:00 2001 From: Szehon Ho Date: Wed, 1 Oct 2014 19:21:11 +0000 Subject: [PATCH 046/339] HIVE-8265: Build failure on hadoop-1 (Navis and Szehon, reviewed by Vikram Dixit) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628815 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/tez/CustomPartitionVertex.java | 2 - .../hadoop/hive/ql/metadata/TestHive.java | 60 +++++++++++++++---- .../hadoop/hive/shims/Hadoop20Shims.java | 10 ++++ .../hadoop/hive/shims/Hadoop20SShims.java | 12 +++- .../hadoop/hive/shims/Hadoop23Shims.java | 12 ++++ .../apache/hadoop/hive/shims/HadoopShims.java | 10 ++++ 6 files changed, 90 insertions(+), 16 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java index d78cf0c46f57..848be263bd78 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java @@ -33,8 +33,6 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.ql.plan.TezWork.VertexType; import org.apache.hadoop.hive.shims.ShimLoader; -import org.apache.hadoop.io.DataInputBuffer; -import org.apache.hadoop.io.DataInputByteBuffer; import org.apache.hadoop.io.DataOutputBuffer; import org.apache.hadoop.io.serializer.SerializationFactory; import org.apache.hadoop.mapred.FileSplit; diff --git a/ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHive.java b/ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHive.java index 9fc99fc9d2f4..153908cc5337 100755 --- a/ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHive.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/metadata/TestHive.java @@ -18,8 +18,6 @@ package org.apache.hadoop.hive.ql.metadata; -import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.FS_TRASH_CHECKPOINT_INTERVAL_KEY; -import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.FS_TRASH_INTERVAL_KEY; import static org.apache.hadoop.hive.metastore.MetaStoreUtils.DEFAULT_DATABASE_NAME; import java.util.ArrayList; @@ -28,13 +26,13 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; import junit.framework.TestCase; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; -import org.apache.hadoop.fs.TrashPolicy; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.metastore.MetaStoreUtils; @@ -51,6 +49,7 @@ import org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe; import org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer; import org.apache.hadoop.hive.serde2.thrift.test.Complex; +import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.mapred.SequenceFileInputFormat; import org.apache.hadoop.mapred.SequenceFileOutputFormat; import org.apache.hadoop.mapred.TextInputFormat; @@ -70,8 +69,8 @@ protected void setUp() throws Exception { super.setUp(); hiveConf = new HiveConf(this.getClass()); // enable trash so it can be tested - hiveConf.setFloat(FS_TRASH_CHECKPOINT_INTERVAL_KEY, 30); - hiveConf.setFloat(FS_TRASH_INTERVAL_KEY, 30); + hiveConf.setFloat("fs.trash.checkpoint.interval", 30); // FS_TRASH_CHECKPOINT_INTERVAL_KEY (hadoop-2) + hiveConf.setFloat("fs.trash.interval", 30); // FS_TRASH_INTERVAL_KEY (hadoop-2) SessionState.start(hiveConf); try { hm = Hive.get(hiveConf); @@ -89,8 +88,8 @@ protected void tearDown() throws Exception { try { super.tearDown(); // disable trash - hiveConf.setFloat(FS_TRASH_CHECKPOINT_INTERVAL_KEY, 30); - hiveConf.setFloat(FS_TRASH_INTERVAL_KEY, 30); + hiveConf.setFloat("fs.trash.checkpoint.interval", 30); // FS_TRASH_CHECKPOINT_INTERVAL_KEY (hadoop-2) + hiveConf.setFloat("fs.trash.interval", 30); // FS_TRASH_INTERVAL_KEY (hadoop-2) Hive.closeCurrent(); } catch (Exception e) { System.err.println(StringUtils.stringifyException(e)); @@ -355,6 +354,9 @@ public void testGetAndDropTables() throws Throwable { } public void testDropTableTrash() throws Throwable { + if (!ShimLoader.getHadoopShims().supportTrashFeature()) { + return; // it's hadoop-1 + } try { String dbName = "db_for_testdroptable"; hm.dropDatabase(dbName, true, true, true); @@ -379,12 +381,9 @@ public void testDropTableTrash() throws Throwable { FileSystem fs = path1.getFileSystem(hiveConf); assertTrue(fs.exists(path1)); // drop table and check that trash works - TrashPolicy tp = TrashPolicy.getInstance(hiveConf, fs, fs.getHomeDirectory()); - assertNotNull("TrashPolicy instance should not be null", tp); - assertTrue("TrashPolicy is not enabled for filesystem: " + fs.getUri(), tp.isEnabled()); - Path trashDir = tp.getCurrentTrashDir(); + Path trashDir = ShimLoader.getHadoopShims().getCurrentTrashPath(hiveConf, fs); assertNotNull("trash directory should not be null", trashDir); - Path trash1 = Path.mergePaths(trashDir, path1); + Path trash1 = mergePaths(trashDir, path1); Path pathglob = trash1.suffix("*");; FileStatus before[] = fs.globStatus(pathglob); hm.dropTable(dbName, ts.get(0)); @@ -399,7 +398,7 @@ public void testDropTableTrash() throws Throwable { assertEquals(ts.get(1), table2.getTableName()); Path path2 = table2.getPath(); assertTrue(fs.exists(path2)); - Path trash2 = Path.mergePaths(trashDir, path2); + Path trash2 = mergePaths(trashDir, path2); System.out.println("trashDir2 is " + trash2); pathglob = trash2.suffix("*"); before = fs.globStatus(pathglob); @@ -621,4 +620,39 @@ public void testHiveRefreshOnConfChange() throws Throwable{ newHiveObj = Hive.get(newHconf); assertTrue(prevHiveObj != newHiveObj); } + + // shamelessly copied from Path in hadoop-2 + private static final String SEPARATOR = "/"; + private static final char SEPARATOR_CHAR = '/'; + + private static final String CUR_DIR = "."; + + private static final boolean WINDOWS + = System.getProperty("os.name").startsWith("Windows"); + + private static final Pattern hasDriveLetterSpecifier = + Pattern.compile("^/?[a-zA-Z]:"); + + private static Path mergePaths(Path path1, Path path2) { + String path2Str = path2.toUri().getPath(); + path2Str = path2Str.substring(startPositionWithoutWindowsDrive(path2Str)); + // Add path components explicitly, because simply concatenating two path + // string is not safe, for example: + // "/" + "/foo" yields "//foo", which will be parsed as authority in Path + return new Path(path1.toUri().getScheme(), + path1.toUri().getAuthority(), + path1.toUri().getPath() + path2Str); + } + + private static int startPositionWithoutWindowsDrive(String path) { + if (hasWindowsDrive(path)) { + return path.charAt(0) == SEPARATOR_CHAR ? 3 : 2; + } else { + return 0; + } + } + + private static boolean hasWindowsDrive(String path) { + return (WINDOWS && hasDriveLetterSpecifier.matcher(path).find()); + } } diff --git a/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java b/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java index 9592bc40d8e0..a353a463ce41 100644 --- a/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java +++ b/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java @@ -918,4 +918,14 @@ public boolean supportStickyBit() { public boolean hasStickyBit(FsPermission permission) { return false; // not supported } + + @Override + public boolean supportTrashFeature() { + return false; + } + + @Override + public Path getCurrentTrashPath(Configuration conf, FileSystem fs) { + return null; + } } diff --git a/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java b/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java index bbb3f4edfa62..030cb754e404 100644 --- a/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java +++ b/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java @@ -534,6 +534,16 @@ public boolean supportStickyBit() { @Override public boolean hasStickyBit(FsPermission permission) { - return false; // not supported + return false; + } + + @Override + public boolean supportTrashFeature() { + return false; + } + + @Override + public Path getCurrentTrashPath(Configuration conf, FileSystem fs) { + return null; } } diff --git a/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java b/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java index afeb0730a528..073110835cf0 100644 --- a/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java +++ b/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java @@ -46,6 +46,7 @@ import org.apache.hadoop.fs.ProxyFileSystem; import org.apache.hadoop.fs.RemoteIterator; import org.apache.hadoop.fs.Trash; +import org.apache.hadoop.fs.TrashPolicy; import org.apache.hadoop.fs.permission.AclEntry; import org.apache.hadoop.fs.permission.AclEntryScope; import org.apache.hadoop.fs.permission.AclEntryType; @@ -835,4 +836,15 @@ public boolean supportStickyBit() { public boolean hasStickyBit(FsPermission permission) { return permission.getStickyBit(); } + + @Override + public boolean supportTrashFeature() { + return true; + } + + @Override + public Path getCurrentTrashPath(Configuration conf, FileSystem fs) { + TrashPolicy tp = TrashPolicy.getInstance(conf, fs, fs.getHomeDirectory()); + return tp.getCurrentTrashDir(); + } } diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java index 282437cddae5..4fcaa1eb6d4b 100644 --- a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java +++ b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java @@ -721,4 +721,14 @@ public void checkFileAccess(FileSystem fs, FileStatus status, FsAction action) * @return sticky bit */ boolean hasStickyBit(FsPermission permission); + + /** + * @return True if the current hadoop supports trash feature. + */ + boolean supportTrashFeature(); + + /** + * @return Path to HDFS trash, if current hadoop supports trash feature. Null otherwise. + */ + Path getCurrentTrashPath(Configuration conf, FileSystem fs); } From 09e065019f0792dcb135bcfba2f3ea410b3e0065 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Wed, 1 Oct 2014 19:56:26 +0000 Subject: [PATCH 047/339] HIVE-8299: HiveServer2 in http-kerberos & doAs=true is failing with org.apache.hadoop.security.AccessControlException (Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628822 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/service/auth/HiveAuthFactory.java | 16 ++-- .../hive/service/auth/HttpAuthUtils.java | 33 +------- .../auth/HttpCLIServiceUGIProcessor.java | 79 ------------------- .../service/auth/TSetIpAddressProcessor.java | 3 +- .../service/cli/session/SessionManager.java | 17 ++++ .../service/cli/thrift/ThriftCLIService.java | 10 +++ .../cli/thrift/ThriftHttpCLIService.java | 4 +- 7 files changed, 40 insertions(+), 122 deletions(-) delete mode 100644 service/src/java/org/apache/hive/service/auth/HttpCLIServiceUGIProcessor.java diff --git a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index a0f7667edd39..dd0d7bdf15bb 100644 --- a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -136,15 +136,17 @@ public TTransportFactory getAuthTransFactory() throws LoginException { return transportFactory; } + /** + * Returns the thrift processor factory for HiveServer2 running in binary mode + * @param service + * @return + * @throws LoginException + */ public TProcessorFactory getAuthProcFactory(ThriftCLIService service) throws LoginException { - if ("http".equalsIgnoreCase(transportMode)) { - return HttpAuthUtils.getAuthProcFactory(service); + if (authTypeStr.equalsIgnoreCase(AuthTypes.KERBEROS.getAuthName())) { + return KerberosSaslHelper.getKerberosProcessorFactory(saslServer, service); } else { - if (authTypeStr.equalsIgnoreCase(AuthTypes.KERBEROS.getAuthName())) { - return KerberosSaslHelper.getKerberosProcessorFactory(saslServer, service); - } else { - return PlainSaslHelper.getPlainProcessorFactory(service); - } + return PlainSaslHelper.getPlainProcessorFactory(service); } } diff --git a/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java b/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java index 07e8c9a4627d..10b6c7947634 100644 --- a/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java +++ b/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java @@ -22,17 +22,10 @@ import java.security.PrivilegedExceptionAction; import org.apache.commons.codec.binary.Base64; -import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.security.UserGroupInformation; -import org.apache.hive.service.cli.thrift.TCLIService; -import org.apache.hive.service.cli.thrift.TCLIService.Iface; -import org.apache.hive.service.cli.thrift.ThriftCLIService; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.HttpContext; -import org.apache.thrift.TProcessor; -import org.apache.thrift.TProcessorFactory; -import org.apache.thrift.transport.TTransport; import org.ietf.jgss.GSSContext; import org.ietf.jgss.GSSCredential; import org.ietf.jgss.GSSManager; @@ -48,11 +41,7 @@ public final class HttpAuthUtils { public static final String AUTHORIZATION = "Authorization"; public static final String BASIC = "Basic"; public static final String NEGOTIATE = "Negotiate"; - - public static TProcessorFactory getAuthProcFactory(ThriftCLIService service) { - return new HttpCLIServiceProcessorFactory(service); - } - + /** * @return Stringified Base64 encoded kerberosAuthHeader on success */ @@ -87,26 +76,6 @@ private HttpAuthUtils() { throw new UnsupportedOperationException("Can't initialize class"); } - public static class HttpCLIServiceProcessorFactory extends TProcessorFactory { - - private final ThriftCLIService service; - private final HiveConf hiveConf; - private final boolean isDoAsEnabled; - - public HttpCLIServiceProcessorFactory(ThriftCLIService service) { - super(null); - this.service = service; - hiveConf = service.getHiveConf(); - isDoAsEnabled = hiveConf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS); - } - - @Override - public TProcessor getProcessor(TTransport trans) { - TProcessor baseProcessor = new TCLIService.Processor(service); - return isDoAsEnabled ? new HttpCLIServiceUGIProcessor(baseProcessor) : baseProcessor; - } - } - public static class HttpKerberosClientAction implements PrivilegedExceptionAction { public static final String HTTP_RESPONSE = "HTTP_RESPONSE"; diff --git a/service/src/java/org/apache/hive/service/auth/HttpCLIServiceUGIProcessor.java b/service/src/java/org/apache/hive/service/auth/HttpCLIServiceUGIProcessor.java deleted file mode 100644 index 245d793f4704..000000000000 --- a/service/src/java/org/apache/hive/service/auth/HttpCLIServiceUGIProcessor.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.hive.service.auth; - -import java.io.IOException; -import java.security.PrivilegedExceptionAction; -import java.util.ArrayList; - -import org.apache.hadoop.hive.shims.HadoopShims; -import org.apache.hadoop.hive.shims.ShimLoader; -import org.apache.hadoop.security.UserGroupInformation; -import org.apache.hive.service.cli.session.SessionManager; -import org.apache.thrift.TException; -import org.apache.thrift.TProcessor; -import org.apache.thrift.protocol.TProtocol; - -/** - * Wraps the underlying Thrift processor's process call, - * to assume the client user's UGI/Subject for the doAs calls. - * Gets the client's username from a ThreadLocal in SessionManager which is - * set in the ThriftHttpServlet, and constructs a client UGI object from that. - */ -public class HttpCLIServiceUGIProcessor implements TProcessor { - - private final TProcessor underlyingProcessor; - private final HadoopShims shim; - - public HttpCLIServiceUGIProcessor(TProcessor underlyingProcessor) { - this.underlyingProcessor = underlyingProcessor; - shim = ShimLoader.getHadoopShims(); - } - - @Override - public boolean process(final TProtocol in, final TProtocol out) throws TException { - /* - * Build the client UGI from ThreadLocal username [SessionManager.getUserName()]. - * The ThreadLocal username is set in the ThriftHttpServlet. - */ - try { - UserGroupInformation clientUgi = - shim.createRemoteUser(SessionManager.getUserName(), new ArrayList()); - return shim.doAs(clientUgi, new PrivilegedExceptionAction() { - @Override - public Boolean run() { - try { - return underlyingProcessor.process(in, out); - } catch (TException te) { - throw new RuntimeException(te); - } - } - }); - } catch (RuntimeException rte) { - if (rte.getCause() instanceof TException) { - throw (TException) rte.getCause(); - } - throw rte; - } catch (InterruptedException ie) { - throw new RuntimeException(ie); // unexpected! - } catch (IOException ioe) { - throw new RuntimeException(ioe); // unexpected! - } - } -} diff --git a/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java b/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java index 0149dcf392de..645e3e2bbd4e 100644 --- a/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java +++ b/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java @@ -18,7 +18,6 @@ package org.apache.hive.service.auth; -import org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Processor; import org.apache.hive.service.cli.thrift.TCLIService; import org.apache.hive.service.cli.thrift.TCLIService.Iface; import org.apache.thrift.TException; @@ -43,7 +42,7 @@ */ public class TSetIpAddressProcessor extends TCLIService.Processor { - private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName()); + private static final Logger LOGGER = LoggerFactory.getLogger(TSetIpAddressProcessor.class.getName()); public TSetIpAddressProcessor(Iface iface) { super(iface); diff --git a/service/src/java/org/apache/hive/service/cli/session/SessionManager.java b/service/src/java/org/apache/hive/service/cli/session/SessionManager.java index 4654acc5bdf6..ecc9b96865f1 100644 --- a/service/src/java/org/apache/hive/service/cli/session/SessionManager.java +++ b/service/src/java/org/apache/hive/service/cli/session/SessionManager.java @@ -229,6 +229,23 @@ public SessionHandle openSession(TProtocolVersion protocol, String username, Str return openSession(protocol, username, password, ipAddress, sessionConf, false, null); } + /** + * Opens a new session and creates a session handle. + * The username passed to this method is the effective username. + * If withImpersonation is true (==doAs true) we wrap all the calls in HiveSession + * within a UGI.doAs, where UGI corresponds to the effective user. + * @see org.apache.hive.service.cli.thrift.ThriftCLIService#getUserName() + * + * @param protocol + * @param username + * @param password + * @param ipAddress + * @param sessionConf + * @param withImpersonation + * @param delegationToken + * @return + * @throws HiveSQLException + */ public SessionHandle openSession(TProtocolVersion protocol, String username, String password, String ipAddress, Map sessionConf, boolean withImpersonation, String delegationToken) throws HiveSQLException { diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java index c4b273cbb476..4a1e004d0526 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java @@ -262,6 +262,16 @@ private String getIpAddress() { return clientIpAddress; } + /** + * Returns the effective username. + * 1. If hive.server2.allow.user.substitution = false: the username of the connecting user + * 2. If hive.server2.allow.user.substitution = true: the username of the end user, + * that the connecting user is trying to proxy for. + * This includes a check whether the connecting user is allowed to proxy for the end user. + * @param req + * @return + * @throws HiveSQLException + */ private String getUserName(TOpenSessionReq req) throws HiveSQLException { String userName = null; // Kerberos diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java index 795115ec4e2c..cfa7284da666 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java @@ -31,6 +31,7 @@ import org.apache.hive.service.auth.HiveAuthFactory; import org.apache.hive.service.auth.HiveAuthFactory.AuthTypes; import org.apache.hive.service.cli.CLIService; +import org.apache.hive.service.cli.thrift.TCLIService.Iface; import org.apache.hive.service.server.ThreadFactoryWithGarbageCleanup; import org.apache.thrift.TProcessor; import org.apache.thrift.TProcessorFactory; @@ -102,8 +103,7 @@ public void run() { // Thrift configs hiveAuthFactory = new HiveAuthFactory(hiveConf); - TProcessorFactory processorFactory = hiveAuthFactory.getAuthProcFactory(this); - TProcessor processor = processorFactory.getProcessor(null); + TProcessor processor = new TCLIService.Processor(this); TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); // Set during the init phase of HiveServer2 if auth mode is kerberos // UGI for the hive/_HOST (kerberos) principal From 266dce63723f5dfa521898033d89d89261969951 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Wed, 1 Oct 2014 21:19:52 +0000 Subject: [PATCH 048/339] HIVE-8290 With DbTxnManager configured, all ORC tables forced to be transactional (Alan Gates, reviewed by Eugene Koifman) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628838 13f79535-47bb-0310-9956-ffa450edef68 --- .../TestHiveAuthorizerCheckInvocation.java | 2 +- .../org/apache/hadoop/hive/ql/ErrorMsg.java | 4 +- .../apache/hadoop/hive/ql/metadata/Hive.java | 24 +++++++++ .../apache/hadoop/hive/ql/metadata/Table.java | 4 ++ .../hadoop/hive/ql/parse/QBMetaData.java | 8 +++ .../hive/ql/parse/SemanticAnalyzer.java | 50 +++++++++++++------ .../TestUpdateDeleteSemanticAnalyzer.java | 7 ++- .../queries/clientnegative/acid_overwrite.q | 2 +- .../authorization_delete_nodeletepriv.q | 2 +- .../authorization_update_noupdatepriv.q | 2 +- .../clientnegative/delete_not_bucketed.q | 7 +++ .../queries/clientnegative/delete_sorted.q | 7 +++ .../queries/clientnegative/insert_sorted.q | 7 +++ .../clientnegative/insert_values_sorted.q | 7 +++ .../clientnegative/update_not_bucketed.q | 7 +++ .../clientnegative/update_partition_col.q | 2 +- .../queries/clientnegative/update_sorted.q | 7 +++ .../clientpositive/acid_vectorization.q | 2 +- .../clientpositive/authorization_delete.q | 2 +- .../authorization_delete_own_table.q | 2 +- .../clientpositive/authorization_update.q | 2 +- .../authorization_update_own_table.q | 2 +- .../delete_all_non_partitioned.q | 2 +- .../clientpositive/delete_all_partitioned.q | 2 +- .../clientpositive/delete_orig_table.q | 2 +- .../queries/clientpositive/delete_tmp_table.q | 2 +- .../clientpositive/delete_where_no_match.q | 2 +- .../delete_where_non_partitioned.q | 2 +- .../clientpositive/delete_where_partitioned.q | 2 +- .../clientpositive/delete_whole_partition.q | 2 +- .../insert_acid_dynamic_partition.q | 10 ++++ .../clientpositive/insert_acid_not_bucketed.q | 9 ++++ .../clientpositive/insert_orig_table.q | 2 +- .../clientpositive/insert_update_delete.q | 2 +- .../insert_values_acid_not_bucketed.q | 9 ++++ .../insert_values_dynamic_partitioned.q | 2 +- .../insert_values_non_partitioned.q | 2 +- .../clientpositive/insert_values_orig_table.q | 2 +- .../insert_values_partitioned.q | 2 +- .../clientpositive/insert_values_tmp_table.q | 2 +- .../update_after_multiple_inserts.q | 2 +- .../update_all_non_partitioned.q | 2 +- .../clientpositive/update_all_partitioned.q | 2 +- .../queries/clientpositive/update_all_types.q | 2 +- .../clientpositive/update_orig_table.q | 2 +- .../queries/clientpositive/update_tmp_table.q | 2 +- .../queries/clientpositive/update_two_cols.q | 2 +- .../clientpositive/update_where_no_match.q | 2 +- .../update_where_non_partitioned.q | 2 +- .../clientpositive/update_where_partitioned.q | 2 +- .../clientnegative/acid_overwrite.q.out | 4 +- .../authorization_delete_nodeletepriv.q.out | 4 +- .../authorization_update_noupdatepriv.q.out | 4 +- .../delete_non_acid_table.q.out | 2 +- .../clientnegative/delete_not_bucketed.q.out | 9 ++++ .../clientnegative/delete_sorted.q.out | 9 ++++ .../clientnegative/insert_sorted.q.out | 9 ++++ .../clientnegative/insert_values_sorted.q.out | 9 ++++ .../update_non_acid_table.q.out | 2 +- .../clientnegative/update_not_bucketed.q.out | 9 ++++ .../clientnegative/update_partition_col.q.out | 4 +- .../clientnegative/update_sorted.q.out | 9 ++++ .../clientpositive/acid_vectorization.q.out | 4 +- .../clientpositive/authorization_delete.q.out | 4 +- .../authorization_delete_own_table.q.out | 4 +- .../clientpositive/authorization_update.q.out | 4 +- .../authorization_update_own_table.q.out | 4 +- .../delete_all_non_partitioned.q.out | 4 +- .../delete_all_partitioned.q.out | 4 +- .../clientpositive/delete_tmp_table.q.out | 4 +- .../delete_where_no_match.q.out | 4 +- .../delete_where_non_partitioned.q.out | 4 +- .../delete_where_partitioned.q.out | 4 +- .../delete_whole_partition.q.out | 4 +- .../insert_acid_dynamic_partition.q.out | 48 ++++++++++++++++++ .../insert_acid_not_bucketed.q.out | 36 +++++++++++++ .../clientpositive/insert_orig_table.q.out | 4 +- .../clientpositive/insert_update_delete.q.out | 4 +- .../insert_values_acid_not_bucketed.q.out | 28 +++++++++++ .../insert_values_dynamic_partitioned.q.out | 4 +- .../insert_values_non_partitioned.q.out | 4 +- .../insert_values_orig_table.q.out | 4 +- .../insert_values_partitioned.q.out | 4 +- .../insert_values_tmp_table.q.out | 4 +- .../tez/delete_all_non_partitioned.q.out | 4 +- .../tez/delete_all_partitioned.q.out | 4 +- .../clientpositive/tez/delete_tmp_table.q.out | 4 +- .../tez/delete_where_no_match.q.out | 4 +- .../tez/delete_where_non_partitioned.q.out | 4 +- .../tez/delete_where_partitioned.q.out | 4 +- .../tez/delete_whole_partition.q.out | 4 +- .../tez/insert_acid_dynamic_partition.q.out | 48 ++++++++++++++++++ .../tez/insert_acid_not_bucketed.q.out | 36 +++++++++++++ .../tez/insert_orig_table.q.out | 4 +- .../tez/insert_update_delete.q.out | 4 +- .../tez/insert_values_acid_not_bucketed.q.out | 28 +++++++++++ .../insert_values_dynamic_partitioned.q.out | 4 +- .../tez/insert_values_non_partitioned.q.out | 4 +- .../tez/insert_values_orig_table.q.out | 4 +- .../tez/insert_values_partitioned.q.out | 4 +- .../tez/insert_values_tmp_table.q.out | 4 +- .../tez/update_after_multiple_inserts.q.out | 4 +- .../tez/update_all_non_partitioned.q.out | 4 +- .../tez/update_all_partitioned.q.out | 4 +- .../clientpositive/tez/update_all_types.q.out | 4 +- .../clientpositive/tez/update_tmp_table.q.out | 4 +- .../clientpositive/tez/update_two_cols.q.out | 4 +- .../tez/update_where_no_match.q.out | 4 +- .../tez/update_where_non_partitioned.q.out | 4 +- .../tez/update_where_partitioned.q.out | 4 +- .../update_after_multiple_inserts.q.out | 4 +- .../update_all_non_partitioned.q.out | 4 +- .../update_all_partitioned.q.out | 4 +- .../clientpositive/update_all_types.q.out | 4 +- .../clientpositive/update_tmp_table.q.out | 4 +- .../clientpositive/update_two_cols.q.out | 4 +- .../update_where_no_match.q.out | 4 +- .../update_where_non_partitioned.q.out | 4 +- .../update_where_partitioned.q.out | 4 +- 119 files changed, 574 insertions(+), 165 deletions(-) create mode 100644 ql/src/test/queries/clientnegative/delete_not_bucketed.q create mode 100644 ql/src/test/queries/clientnegative/delete_sorted.q create mode 100644 ql/src/test/queries/clientnegative/insert_sorted.q create mode 100644 ql/src/test/queries/clientnegative/insert_values_sorted.q create mode 100644 ql/src/test/queries/clientnegative/update_not_bucketed.q create mode 100644 ql/src/test/queries/clientnegative/update_sorted.q create mode 100644 ql/src/test/queries/clientpositive/insert_acid_dynamic_partition.q create mode 100644 ql/src/test/queries/clientpositive/insert_acid_not_bucketed.q create mode 100644 ql/src/test/queries/clientpositive/insert_values_acid_not_bucketed.q create mode 100644 ql/src/test/results/clientnegative/delete_not_bucketed.q.out create mode 100644 ql/src/test/results/clientnegative/delete_sorted.q.out create mode 100644 ql/src/test/results/clientnegative/insert_sorted.q.out create mode 100644 ql/src/test/results/clientnegative/insert_values_sorted.q.out create mode 100644 ql/src/test/results/clientnegative/update_not_bucketed.q.out create mode 100644 ql/src/test/results/clientnegative/update_sorted.q.out create mode 100644 ql/src/test/results/clientpositive/insert_acid_dynamic_partition.q.out create mode 100644 ql/src/test/results/clientpositive/insert_acid_not_bucketed.q.out create mode 100644 ql/src/test/results/clientpositive/insert_values_acid_not_bucketed.q.out create mode 100644 ql/src/test/results/clientpositive/tez/insert_acid_dynamic_partition.q.out create mode 100644 ql/src/test/results/clientpositive/tez/insert_acid_not_bucketed.q.out create mode 100644 ql/src/test/results/clientpositive/tez/insert_values_acid_not_bucketed.q.out diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerCheckInvocation.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerCheckInvocation.java index 3c99068a9d31..79cf58bf3476 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerCheckInvocation.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerCheckInvocation.java @@ -98,7 +98,7 @@ public static void beforeTest() throws Exception { runCmd("create database " + dbName); // Need a separate table for ACID testing since it has to be bucketed and it has to be Acid runCmd("create table " + acidTableName + " (i int, j int) clustered by (i) into 2 buckets " + - "stored as orc"); + "stored as orc TBLPROPERTIES ('transactional'='true')"); } private static void runCmd(String cmd) throws CommandNeedRetryException { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java index eb9f4e3c071d..31978fe3af29 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java @@ -418,7 +418,9 @@ public enum ErrorMsg { VALUES_TABLE_CONSTRUCTOR_NOT_SUPPORTED(10296, "Values clause with table constructor not yet supported"), ACID_OP_ON_NONACID_TABLE(10297, "Attempt to do update or delete on table {0} that does not use " + - "an AcidOutputFormat", true), + "an AcidOutputFormat or is not bucketed", true), + ACID_NO_SORTED_BUCKETS(10298, "ACID insert, update, delete not supported on tables that are " + + "sorted, table {0}", true), //========================== 20000 range starts here ========================// SCRIPT_INIT_ERROR(20000, "Unable to initialize custom script."), diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index 501a1bd6795a..0f7af9ac46aa 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -378,6 +378,27 @@ public void createTable(String tableName, List columns, List partCols, Class fileInputFormat, Class fileOutputFormat, int bucketCount, List bucketCols) throws HiveException { + createTable(tableName, columns, partCols, fileInputFormat, fileOutputFormat, bucketCount, + bucketCols, null); + } + + /** + * Create a table metadata and the directory for the table data + * @param tableName table name + * @param columns list of fields of the table + * @param partCols partition keys of the table + * @param fileInputFormat Class of the input format of the table data file + * @param fileOutputFormat Class of the output format of the table data file + * @param bucketCount number of buckets that each partition (or the table itself) should be + * divided into + * @param bucketCols Bucket columns + * @param parameters Parameters for the table + * @throws HiveException + */ + public void createTable(String tableName, List columns, List partCols, + Class fileInputFormat, + Class fileOutputFormat, int bucketCount, List bucketCols, + Map parameters) throws HiveException { if (columns == null) { throw new HiveException("columns not specified for table " + tableName); } @@ -402,6 +423,9 @@ public void createTable(String tableName, List columns, tbl.setSerializationLib(LazySimpleSerDe.class.getName()); tbl.setNumBuckets(bucketCount); tbl.setBucketCols(bucketCols); + if (parameters != null) { + tbl.setParamters(parameters); + } createTable(tbl); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java index c2e033cbd9e5..2bbedd3530f2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java @@ -385,6 +385,10 @@ public void setProperty(String name, String value) { tTable.getParameters().put(name, value); } + public void setParamters(Map params) { + tTable.setParameters(params); + } + public String getProperty(String name) { return tTable.getParameters().get(name); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/QBMetaData.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/QBMetaData.java index 66faf1db290e..0c973cef145d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/QBMetaData.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/QBMetaData.java @@ -104,10 +104,18 @@ public Table getDestTableForAlias(String alias) { return nameToDestTable.get(alias.toLowerCase()); } + public Map getNameToDestTable() { + return nameToDestTable; + } + public Partition getDestPartitionForAlias(String alias) { return nameToDestPartition.get(alias.toLowerCase()); } + public Map getNameToDestPartition() { + return nameToDestPartition; + } + public String getDestFileForAlias(String alias) { return nameToDestFile.get(alias.toLowerCase()); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 06f235c2c1e8..009e78c8b7e0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -41,6 +41,7 @@ import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import com.google.common.annotations.VisibleForTesting; import net.hydromatic.optiq.SchemaPlus; import net.hydromatic.optiq.tools.Frameworks; @@ -68,6 +69,7 @@ import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.MetaException; import org.apache.hadoop.hive.metastore.api.Order; +import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants; import org.apache.hadoop.hive.ql.ErrorMsg; import org.apache.hadoop.hive.ql.QueryProperties; import org.apache.hadoop.hive.ql.exec.AbstractMapJoinOperator; @@ -307,6 +309,9 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer { private static final String VALUES_TMP_TABLE_NAME_PREFIX = "Values__Tmp__Table__"; + @VisibleForTesting + static final String ACID_TABLE_PROPERTY = "transactional"; + private HashMap opToPartPruner; private HashMap opToPartList; private HashMap> topOps; @@ -5894,6 +5899,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) Integer dest_type = qbm.getDestTypeForAlias(dest); Table dest_tab = null; // destination table if any + boolean destTableIsAcid = false; // should the destination table be written to using ACID Partition dest_part = null;// destination partition if any Path queryTmpdir = null; // the intermediate destination directory Path dest_path = null; // the final destination directory @@ -5910,6 +5916,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) case QBMetaData.DEST_TABLE: { dest_tab = qbm.getDestTableForAlias(dest); + destTableIsAcid = isAcidTable(dest_tab); // Is the user trying to insert into a external tables if ((!conf.getBoolVar(HiveConf.ConfVars.HIVE_INSERT_INTO_EXTERNAL_TABLES)) && @@ -6005,9 +6012,10 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) // Create the work for moving the table // NOTE: specify Dynamic partitions in dest_tab for WriteEntity if (!isNonNativeTable) { - AcidUtils.Operation acidOp = getAcidType(table_desc.getOutputFileFormatClass()); - if (acidOp != AcidUtils.Operation.NOT_ACID) { - checkAcidConstraints(qb, table_desc); + AcidUtils.Operation acidOp = AcidUtils.Operation.NOT_ACID; + if (destTableIsAcid) { + acidOp = getAcidType(table_desc.getOutputFileFormatClass()); + checkAcidConstraints(qb, table_desc, dest_tab); } ltd = new LoadTableDesc(queryTmpdir,table_desc, dpCtx, acidOp); ltd.setReplace(!qb.getParseInfo().isInsertIntoTable(dest_tab.getDbName(), @@ -6065,6 +6073,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) dest_part = qbm.getDestPartitionForAlias(dest); dest_tab = dest_part.getTable(); + destTableIsAcid = isAcidTable(dest_tab); if ((!conf.getBoolVar(HiveConf.ConfVars.HIVE_INSERT_INTO_EXTERNAL_TABLES)) && dest_tab.getTableType().equals(TableType.EXTERNAL_TABLE)) { throw new SemanticException( @@ -6112,9 +6121,10 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) lbCtx = constructListBucketingCtx(dest_part.getSkewedColNames(), dest_part.getSkewedColValues(), dest_part.getSkewedColValueLocationMaps(), dest_part.isStoredAsSubDirectories(), conf); - AcidUtils.Operation acidOp = getAcidType(table_desc.getOutputFileFormatClass()); - if (acidOp != AcidUtils.Operation.NOT_ACID) { - checkAcidConstraints(qb, table_desc); + AcidUtils.Operation acidOp = AcidUtils.Operation.NOT_ACID; + if (destTableIsAcid) { + acidOp = getAcidType(table_desc.getOutputFileFormatClass()); + checkAcidConstraints(qb, table_desc, dest_tab); } ltd = new LoadTableDesc(queryTmpdir, table_desc, dest_part.getSpec(), acidOp); ltd.setReplace(!qb.getParseInfo().isInsertIntoTable(dest_tab.getDbName(), @@ -6269,9 +6279,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) ArrayList vecCol = new ArrayList(); if (updating() || deleting()) { - vecCol.add(new ColumnInfo(VirtualColumn.ROWID.getName(), - //TypeInfoUtils.getTypeInfoFromObjectInspector(VirtualColumn.ROWID.getObjectInspector()), - VirtualColumn.ROWID.getTypeInfo(), + vecCol.add(new ColumnInfo(VirtualColumn.ROWID.getName(), VirtualColumn.ROWID.getTypeInfo(), "", true)); } else { try { @@ -6300,8 +6308,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) conf.getBoolVar(HiveConf.ConfVars.HIVEENFORCESORTING)))); // If this table is working with ACID semantics, turn off merging - boolean acidTable = isAcidTable(dest_tab); - canBeMerged &= !acidTable; + canBeMerged &= !destTableIsAcid; FileSinkDesc fileSinkDesc = new FileSinkDesc( queryTmpdir, @@ -6317,7 +6324,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) // If this is an insert, update, or delete on an ACID table then mark that so the // FileSinkOperator knows how to properly write to it. - if (acidTable) { + if (destTableIsAcid) { AcidUtils.Operation wt = updating() ? AcidUtils.Operation.UPDATE : (deleting() ? AcidUtils.Operation.DELETE : AcidUtils.Operation.INSERT); fileSinkDesc.setWriteType(wt); @@ -6378,9 +6385,12 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) // * no insert overwrites // * no use of vectorization // * turns off reduce deduplication optimization, as that sometimes breaks acid + // * Check that the table is bucketed + // * Check that the table is not sorted // This method assumes you have already decided that this is an Acid write. Don't call it if // that isn't true. - private void checkAcidConstraints(QB qb, TableDesc tableDesc) throws SemanticException { + private void checkAcidConstraints(QB qb, TableDesc tableDesc, + Table table) throws SemanticException { String tableName = tableDesc.getTableName(); if (!qb.getParseInfo().isInsertIntoTable(tableName)) { LOG.debug("Couldn't find table " + tableName + " in insertIntoTable"); @@ -6394,6 +6404,16 @@ private void checkAcidConstraints(QB qb, TableDesc tableDesc) throws SemanticExc conf.setBoolVar(ConfVars.HIVEOPTREDUCEDEDUPLICATION, false); conf.setBoolVar(ConfVars.HIVE_HADOOP_SUPPORTS_SUBDIRECTORIES, true); conf.set(AcidUtils.CONF_ACID_KEY, "true"); + + if (table.getNumBuckets() < 1) { + throw new SemanticException(ErrorMsg.ACID_OP_ON_NONACID_TABLE, table.getTableName()); + } + if (table.getSortCols() != null && table.getSortCols().size() > 0) { + throw new SemanticException(ErrorMsg.ACID_NO_SORTED_BUCKETS, table.getTableName()); + } + + + } /** @@ -12129,9 +12149,9 @@ else return (ltd.getReplace() ? WriteEntity.WriteType.INSERT_OVERWRITE : // Even if the table is of Acid type, if we aren't working with an Acid compliant TxnManager // then return false. private boolean isAcidTable(Table tab) { - if (tab == null || tab.getOutputFormatClass() == null) return false; + if (tab == null) return false; if (!SessionState.get().getTxnMgr().supportsAcid()) return false; - return isAcidOutputFormat(tab.getOutputFormatClass()); + return tab.getProperty(ACID_TABLE_PROPERTY) != null; } private boolean isAcidOutputFormat(Class of) { diff --git a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestUpdateDeleteSemanticAnalyzer.java b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestUpdateDeleteSemanticAnalyzer.java index 301b531bb246..01e3635cb76c 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestUpdateDeleteSemanticAnalyzer.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestUpdateDeleteSemanticAnalyzer.java @@ -266,9 +266,12 @@ private ReturnInfo parseAndAnalyze(String query, String testName) // I have to create the tables here (rather than in setup()) because I need the Hive // connection, which is conviently created by the semantic analyzer. - db.createTable("T", Arrays.asList("a", "b"), null, OrcInputFormat.class, OrcOutputFormat.class); + Map params = new HashMap(1); + params.put(SemanticAnalyzer.ACID_TABLE_PROPERTY, "true"); + db.createTable("T", Arrays.asList("a", "b"), null, OrcInputFormat.class, + OrcOutputFormat.class, 2, Arrays.asList("a"), params); db.createTable("U", Arrays.asList("a", "b"), Arrays.asList("ds"), OrcInputFormat.class, - OrcOutputFormat.class); + OrcOutputFormat.class, 2, Arrays.asList("a"), params); Table u = db.getTable("U"); Map partVals = new HashMap(2); partVals.put("ds", "yesterday"); diff --git a/ql/src/test/queries/clientnegative/acid_overwrite.q b/ql/src/test/queries/clientnegative/acid_overwrite.q index 5515fc41f17b..2e57a3c3b8ea 100644 --- a/ql/src/test/queries/clientnegative/acid_overwrite.q +++ b/ql/src/test/queries/clientnegative/acid_overwrite.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; +create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_uanp select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint < 0 order by cint limit 10; insert overwrite table acid_uanp select cint, cast(cstring1 as varchar(128)) from alltypesorc; diff --git a/ql/src/test/queries/clientnegative/authorization_delete_nodeletepriv.q b/ql/src/test/queries/clientnegative/authorization_delete_nodeletepriv.q index 31a3297e04e1..f2de3066cf48 100644 --- a/ql/src/test/queries/clientnegative/authorization_delete_nodeletepriv.q +++ b/ql/src/test/queries/clientnegative/authorization_delete_nodeletepriv.q @@ -9,7 +9,7 @@ set hive.enforce.bucketing=true; -- check update without update priv -create table auth_nodel(i int) clustered by (i) into 2 buckets stored as orc;; +create table auth_nodel(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); set user.name=user1; delete from auth_nodel where i > 0; diff --git a/ql/src/test/queries/clientnegative/authorization_update_noupdatepriv.q b/ql/src/test/queries/clientnegative/authorization_update_noupdatepriv.q index 5310dbe93060..70655271fc4f 100644 --- a/ql/src/test/queries/clientnegative/authorization_update_noupdatepriv.q +++ b/ql/src/test/queries/clientnegative/authorization_update_noupdatepriv.q @@ -9,7 +9,7 @@ set hive.enforce.bucketing=true; -- check update without update priv -create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc;; +create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); set user.name=user1; update auth_noupd set i = 0 where i > 0; diff --git a/ql/src/test/queries/clientnegative/delete_not_bucketed.q b/ql/src/test/queries/clientnegative/delete_not_bucketed.q new file mode 100644 index 000000000000..80dffead7ec0 --- /dev/null +++ b/ql/src/test/queries/clientnegative/delete_not_bucketed.q @@ -0,0 +1,7 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; + +create table acid_notbucketed(a int, b varchar(128)) stored as orc TBLPROPERTIES ('transactional'='true'); + +delete from acid_notbucketed where a = 3; diff --git a/ql/src/test/queries/clientnegative/delete_sorted.q b/ql/src/test/queries/clientnegative/delete_sorted.q new file mode 100644 index 000000000000..fd8d579e9fc4 --- /dev/null +++ b/ql/src/test/queries/clientnegative/delete_sorted.q @@ -0,0 +1,7 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; + +create table acid_insertsort(a int, b varchar(128)) partitioned by (ds string) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); + +delete from acid_insertsort where a = 3; diff --git a/ql/src/test/queries/clientnegative/insert_sorted.q b/ql/src/test/queries/clientnegative/insert_sorted.q new file mode 100644 index 000000000000..18c942a1f618 --- /dev/null +++ b/ql/src/test/queries/clientnegative/insert_sorted.q @@ -0,0 +1,7 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; + +create table acid_insertsort(a int, b varchar(128)) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); + +insert into table acid_insertsort select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10; diff --git a/ql/src/test/queries/clientnegative/insert_values_sorted.q b/ql/src/test/queries/clientnegative/insert_values_sorted.q new file mode 100644 index 000000000000..260e2fb06686 --- /dev/null +++ b/ql/src/test/queries/clientnegative/insert_values_sorted.q @@ -0,0 +1,7 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; + +create table acid_insertsort(a int, b varchar(128)) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); + +insert into table acid_insertsort values (1, 'abc'),(2, 'def'); diff --git a/ql/src/test/queries/clientnegative/update_not_bucketed.q b/ql/src/test/queries/clientnegative/update_not_bucketed.q new file mode 100644 index 000000000000..8512fa714ca7 --- /dev/null +++ b/ql/src/test/queries/clientnegative/update_not_bucketed.q @@ -0,0 +1,7 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; + +create table acid_notbucketed(a int, b varchar(128)) partitioned by (ds string) stored as orc TBLPROPERTIES ('transactional'='true'); + +update acid_notbucketed set b = 'fred' where a = 3; diff --git a/ql/src/test/queries/clientnegative/update_partition_col.q b/ql/src/test/queries/clientnegative/update_partition_col.q index 929cc5930dff..e9c60ccb95d1 100644 --- a/ql/src/test/queries/clientnegative/update_partition_col.q +++ b/ql/src/test/queries/clientnegative/update_partition_col.q @@ -2,6 +2,6 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table foo(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; +create table foo(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); update foo set ds = 'fred'; diff --git a/ql/src/test/queries/clientnegative/update_sorted.q b/ql/src/test/queries/clientnegative/update_sorted.q new file mode 100644 index 000000000000..917c3b5619b6 --- /dev/null +++ b/ql/src/test/queries/clientnegative/update_sorted.q @@ -0,0 +1,7 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; + +create table acid_insertsort(a int, b varchar(128)) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); + +update acid_insertsort set b = 'fred' where b = 'bob'; diff --git a/ql/src/test/queries/clientpositive/acid_vectorization.q b/ql/src/test/queries/clientpositive/acid_vectorization.q index a1bf9719f506..3f386c97affc 100644 --- a/ql/src/test/queries/clientpositive/acid_vectorization.q +++ b/ql/src/test/queries/clientpositive/acid_vectorization.q @@ -4,7 +4,7 @@ set hive.enforce.bucketing=true; set hive.exec.dynamic.partition.mode=nonstrict; set hive.vectorized.execution.enabled=true; -CREATE TABLE acid_vectorized(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC; +CREATE TABLE acid_vectorized(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true'); insert into table acid_vectorized select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10; set hive.vectorized.execution.enabled=true; insert into table acid_vectorized values (1, 'bar'); diff --git a/ql/src/test/queries/clientpositive/authorization_delete.q b/ql/src/test/queries/clientpositive/authorization_delete.q index 973fb8e42d24..d96e6ab06a85 100644 --- a/ql/src/test/queries/clientpositive/authorization_delete.q +++ b/ql/src/test/queries/clientpositive/authorization_delete.q @@ -9,7 +9,7 @@ set hive.enforce.bucketing=true; set user.name=user1; -- current user has been set (comment line before the set cmd is resulting in parse error!!) -CREATE TABLE t_auth_del(i int) clustered by (i) into 2 buckets stored as orc; +CREATE TABLE t_auth_del(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); -- grant update privilege to another user GRANT DELETE ON t_auth_del TO USER userWIns; diff --git a/ql/src/test/queries/clientpositive/authorization_delete_own_table.q b/ql/src/test/queries/clientpositive/authorization_delete_own_table.q index 8b4c89e9a9cb..7abdc1259e3b 100644 --- a/ql/src/test/queries/clientpositive/authorization_delete_own_table.q +++ b/ql/src/test/queries/clientpositive/authorization_delete_own_table.q @@ -9,7 +9,7 @@ set hive.enforce.bucketing=true; set user.name=user1; -create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc;; +create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); delete from auth_noupd where i > 0; set user.name=hive_admin_user; diff --git a/ql/src/test/queries/clientpositive/authorization_update.q b/ql/src/test/queries/clientpositive/authorization_update.q index fd9f67040983..3601e67f25f9 100644 --- a/ql/src/test/queries/clientpositive/authorization_update.q +++ b/ql/src/test/queries/clientpositive/authorization_update.q @@ -9,7 +9,7 @@ set hive.enforce.bucketing=true; set user.name=user1; -- current user has been set (comment line before the set cmd is resulting in parse error!!) -CREATE TABLE t_auth_up(i int) clustered by (i) into 2 buckets stored as orc; +CREATE TABLE t_auth_up(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); CREATE TABLE t_select(i int); GRANT ALL ON TABLE t_select TO ROLE public; diff --git a/ql/src/test/queries/clientpositive/authorization_update_own_table.q b/ql/src/test/queries/clientpositive/authorization_update_own_table.q index 489117b8dda6..18a643cadaa5 100644 --- a/ql/src/test/queries/clientpositive/authorization_update_own_table.q +++ b/ql/src/test/queries/clientpositive/authorization_update_own_table.q @@ -9,7 +9,7 @@ set hive.enforce.bucketing=true; set user.name=user1; -create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc;; +create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); update auth_noupd set i = 0 where i > 0; set user.name=hive_admin_user; diff --git a/ql/src/test/queries/clientpositive/delete_all_non_partitioned.q b/ql/src/test/queries/clientpositive/delete_all_non_partitioned.q index f15391b5ab00..9110dccb4df5 100644 --- a/ql/src/test/queries/clientpositive/delete_all_non_partitioned.q +++ b/ql/src/test/queries/clientpositive/delete_all_non_partitioned.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; +create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_danp select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint < 0 order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/delete_all_partitioned.q b/ql/src/test/queries/clientpositive/delete_all_partitioned.q index 9ae6a54cb8bb..f082b6d82fc7 100644 --- a/ql/src/test/queries/clientpositive/delete_all_partitioned.q +++ b/ql/src/test/queries/clientpositive/delete_all_partitioned.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; +create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_dap partition (ds='today') select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null and cint < 0 order by cint limit 10; insert into table acid_dap partition (ds='tomorrow') select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null and cint > 1000 order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/delete_orig_table.q b/ql/src/test/queries/clientpositive/delete_orig_table.q index d859eaeaccc4..fd23f4b65e0d 100644 --- a/ql/src/test/queries/clientpositive/delete_orig_table.q +++ b/ql/src/test/queries/clientpositive/delete_orig_table.q @@ -17,7 +17,7 @@ create table acid_dot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc location '${system:test.tmp.dir}/delete_orig_table'; + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc location '${system:test.tmp.dir}/delete_orig_table' TBLPROPERTIES ('transactional'='true'); select count(*) from acid_dot; diff --git a/ql/src/test/queries/clientpositive/delete_tmp_table.q b/ql/src/test/queries/clientpositive/delete_tmp_table.q index 6f5a73d1f81b..eb6c09526c1b 100644 --- a/ql/src/test/queries/clientpositive/delete_tmp_table.q +++ b/ql/src/test/queries/clientpositive/delete_tmp_table.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; +create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_dtt select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/delete_where_no_match.q b/ql/src/test/queries/clientpositive/delete_where_no_match.q index 16a383903df7..8ed979d2ebd3 100644 --- a/ql/src/test/queries/clientpositive/delete_where_no_match.q +++ b/ql/src/test/queries/clientpositive/delete_where_no_match.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; +create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_dwnm select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/delete_where_non_partitioned.q b/ql/src/test/queries/clientpositive/delete_where_non_partitioned.q index b703768822e4..dac53757f7cf 100644 --- a/ql/src/test/queries/clientpositive/delete_where_non_partitioned.q +++ b/ql/src/test/queries/clientpositive/delete_where_non_partitioned.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; +create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_dwnp select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/delete_where_partitioned.q b/ql/src/test/queries/clientpositive/delete_where_partitioned.q index 5959c3c9f41c..f84f26a0edbc 100644 --- a/ql/src/test/queries/clientpositive/delete_where_partitioned.q +++ b/ql/src/test/queries/clientpositive/delete_where_partitioned.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; +create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_dwp partition (ds='today') select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null and cint < 0 order by cint limit 10; insert into table acid_dwp partition (ds='tomorrow') select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null and cint > -10000000 order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/delete_whole_partition.q b/ql/src/test/queries/clientpositive/delete_whole_partition.q index 14440903a720..8228a321cf57 100644 --- a/ql/src/test/queries/clientpositive/delete_whole_partition.q +++ b/ql/src/test/queries/clientpositive/delete_whole_partition.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; +create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_dwhp partition (ds='today') select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null and cint < 0 order by cint limit 10; insert into table acid_dwhp partition (ds='tomorrow') select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null and cint > -10000000 order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/insert_acid_dynamic_partition.q b/ql/src/test/queries/clientpositive/insert_acid_dynamic_partition.q new file mode 100644 index 000000000000..c5445896ee29 --- /dev/null +++ b/ql/src/test/queries/clientpositive/insert_acid_dynamic_partition.q @@ -0,0 +1,10 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table acid_dynamic(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); + +insert into table acid_dynamic partition (ds) select cint, cast(cstring1 as varchar(128)), cstring2 from alltypesorc where cint is not null and cint < 0 order by cint limit 5; + +select * from acid_dynamic order by a,b; diff --git a/ql/src/test/queries/clientpositive/insert_acid_not_bucketed.q b/ql/src/test/queries/clientpositive/insert_acid_not_bucketed.q new file mode 100644 index 000000000000..a29b1e7f726e --- /dev/null +++ b/ql/src/test/queries/clientpositive/insert_acid_not_bucketed.q @@ -0,0 +1,9 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; + +create table acid_notbucketed(a int, b varchar(128)) stored as orc; + +insert into table acid_notbucketed select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10; + +select * from acid_notbucketed; diff --git a/ql/src/test/queries/clientpositive/insert_orig_table.q b/ql/src/test/queries/clientpositive/insert_orig_table.q index e1114d511599..c38bd5a5ca57 100644 --- a/ql/src/test/queries/clientpositive/insert_orig_table.q +++ b/ql/src/test/queries/clientpositive/insert_orig_table.q @@ -14,7 +14,7 @@ create table acid_iot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc; + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc TBLPROPERTIES ('transactional'='true'); LOAD DATA LOCAL INPATH "../../data/files/alltypesorc" into table acid_iot; diff --git a/ql/src/test/queries/clientpositive/insert_update_delete.q b/ql/src/test/queries/clientpositive/insert_update_delete.q index a3ef18137abb..8dbb77c219a6 100644 --- a/ql/src/test/queries/clientpositive/insert_update_delete.q +++ b/ql/src/test/queries/clientpositive/insert_update_delete.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; +create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_iud select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint < 0 order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/insert_values_acid_not_bucketed.q b/ql/src/test/queries/clientpositive/insert_values_acid_not_bucketed.q new file mode 100644 index 000000000000..fc0cb1048ad9 --- /dev/null +++ b/ql/src/test/queries/clientpositive/insert_values_acid_not_bucketed.q @@ -0,0 +1,9 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; + +create table acid_notbucketed(a int, b varchar(128)) stored as orc; + +insert into table acid_notbucketed values (1, 'abc'), (2, 'def'); + +select * from acid_notbucketed; diff --git a/ql/src/test/queries/clientpositive/insert_values_dynamic_partitioned.q b/ql/src/test/queries/clientpositive/insert_values_dynamic_partitioned.q index bea67a480a3c..71e0e73f1f95 100644 --- a/ql/src/test/queries/clientpositive/insert_values_dynamic_partitioned.q +++ b/ql/src/test/queries/clientpositive/insert_values_dynamic_partitioned.q @@ -5,7 +5,7 @@ set hive.enforce.bucketing=true; create table ivdp(i int, de decimal(5,2), - vc varchar(128)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc; + vc varchar(128)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table ivdp partition (ds) values (1, 109.23, 'and everywhere that mary went', 'today'), diff --git a/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q b/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q index f69100c939d0..d0e7b0f68c5d 100644 --- a/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q +++ b/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q @@ -14,7 +14,7 @@ create table acid_ivnp(ti tinyint, b boolean, s string, vc varchar(128), - ch char(12)) clustered by (i) into 2 buckets stored as orc; + ch char(12)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_ivnp values (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 17:21:30.0', '2014-08-25', true, 'mary had a little lamb', 'ring around the rosie', 'red'), diff --git a/ql/src/test/queries/clientpositive/insert_values_orig_table.q b/ql/src/test/queries/clientpositive/insert_values_orig_table.q index 703ed817a52d..8fef5497670b 100644 --- a/ql/src/test/queries/clientpositive/insert_values_orig_table.q +++ b/ql/src/test/queries/clientpositive/insert_values_orig_table.q @@ -14,7 +14,7 @@ create table acid_ivot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc; + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc TBLPROPERTIES ('transactional'='true'); LOAD DATA LOCAL INPATH "../../data/files/alltypesorc" into table acid_ivot; diff --git a/ql/src/test/queries/clientpositive/insert_values_partitioned.q b/ql/src/test/queries/clientpositive/insert_values_partitioned.q index 70bd03b88814..c8223f75b937 100644 --- a/ql/src/test/queries/clientpositive/insert_values_partitioned.q +++ b/ql/src/test/queries/clientpositive/insert_values_partitioned.q @@ -13,7 +13,7 @@ create table acid_ivp(ti tinyint, dt date, s string, vc varchar(128), - ch char(12)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc; + ch char(12)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_ivp partition (ds='today') values (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 17:21:30.0', '2014-08-25', 'mary had a little lamb', 'ring around the rosie', 'red'), diff --git a/ql/src/test/queries/clientpositive/insert_values_tmp_table.q b/ql/src/test/queries/clientpositive/insert_values_tmp_table.q index a7afa739df72..4e4c39ef7318 100644 --- a/ql/src/test/queries/clientpositive/insert_values_tmp_table.q +++ b/ql/src/test/queries/clientpositive/insert_values_tmp_table.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc; +create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_ivtt values (1, 109.23, 'mary had a little lamb'), diff --git a/ql/src/test/queries/clientpositive/update_after_multiple_inserts.q b/ql/src/test/queries/clientpositive/update_after_multiple_inserts.q index b440cf33f2bc..6ef209fbe7db 100644 --- a/ql/src/test/queries/clientpositive/update_after_multiple_inserts.q +++ b/ql/src/test/queries/clientpositive/update_after_multiple_inserts.q @@ -5,7 +5,7 @@ set hive.enforce.bucketing=true; create table acid_uami(i int, de decimal(5,2), - vc varchar(128)) clustered by (i) into 2 buckets stored as orc; + vc varchar(128)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_uami values (1, 109.23, 'mary had a little lamb'), diff --git a/ql/src/test/queries/clientpositive/update_all_non_partitioned.q b/ql/src/test/queries/clientpositive/update_all_non_partitioned.q index 7c427df4efdf..3c018253021c 100644 --- a/ql/src/test/queries/clientpositive/update_all_non_partitioned.q +++ b/ql/src/test/queries/clientpositive/update_all_non_partitioned.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; +create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_uanp select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint < 0 order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/update_all_partitioned.q b/ql/src/test/queries/clientpositive/update_all_partitioned.q index 80d40c137408..b4079854d9d9 100644 --- a/ql/src/test/queries/clientpositive/update_all_partitioned.q +++ b/ql/src/test/queries/clientpositive/update_all_partitioned.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; +create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_uap partition (ds='today') select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null and cint < 0 order by cint limit 10; insert into table acid_uap partition (ds='tomorrow') select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null and cint > 10 order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/update_all_types.q b/ql/src/test/queries/clientpositive/update_all_types.q index 8ed74f06121e..14ffc59e0b26 100644 --- a/ql/src/test/queries/clientpositive/update_all_types.q +++ b/ql/src/test/queries/clientpositive/update_all_types.q @@ -14,7 +14,7 @@ create table acid_uat(ti tinyint, s string, vc varchar(128), ch char(36), - b boolean) clustered by (i) into 2 buckets stored as orc; + b boolean) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_uat select ctinyint, diff --git a/ql/src/test/queries/clientpositive/update_orig_table.q b/ql/src/test/queries/clientpositive/update_orig_table.q index 61622d9645d9..27b4a9507403 100644 --- a/ql/src/test/queries/clientpositive/update_orig_table.q +++ b/ql/src/test/queries/clientpositive/update_orig_table.q @@ -17,7 +17,7 @@ create table acid_uot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc location '${system:test.tmp.dir}/update_orig_table'; + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc location '${system:test.tmp.dir}/update_orig_table' TBLPROPERTIES ('transactional'='true'); update acid_uot set cstring1 = 'fred' where cint < -1070551679; diff --git a/ql/src/test/queries/clientpositive/update_tmp_table.q b/ql/src/test/queries/clientpositive/update_tmp_table.q index 5fbad2cf4b87..281357f37782 100644 --- a/ql/src/test/queries/clientpositive/update_tmp_table.q +++ b/ql/src/test/queries/clientpositive/update_tmp_table.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc; +create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_utt select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/update_two_cols.q b/ql/src/test/queries/clientpositive/update_two_cols.q index 716df7dc5965..b1972e565165 100644 --- a/ql/src/test/queries/clientpositive/update_two_cols.q +++ b/ql/src/test/queries/clientpositive/update_two_cols.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc; +create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_utc select cint, cast(cstring1 as varchar(128)), cfloat from alltypesorc where cint < 0 order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/update_where_no_match.q b/ql/src/test/queries/clientpositive/update_where_no_match.q index d3252de1d319..d5788620a15a 100644 --- a/ql/src/test/queries/clientpositive/update_where_no_match.q +++ b/ql/src/test/queries/clientpositive/update_where_no_match.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; +create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_wnm select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/update_where_non_partitioned.q b/ql/src/test/queries/clientpositive/update_where_non_partitioned.q index e52d9e818dc2..06c688ffc7f4 100644 --- a/ql/src/test/queries/clientpositive/update_where_non_partitioned.q +++ b/ql/src/test/queries/clientpositive/update_where_non_partitioned.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc; +create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_uwnp select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10; diff --git a/ql/src/test/queries/clientpositive/update_where_partitioned.q b/ql/src/test/queries/clientpositive/update_where_partitioned.q index d84da5b85ea4..858cebbb70f6 100644 --- a/ql/src/test/queries/clientpositive/update_where_partitioned.q +++ b/ql/src/test/queries/clientpositive/update_where_partitioned.q @@ -2,7 +2,7 @@ set hive.support.concurrency=true; set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; set hive.enforce.bucketing=true; -create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc; +create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); insert into table acid_uwp partition (ds='today') select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null and cint < 0 order by cint limit 10; insert into table acid_uwp partition (ds='tomorrow') select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null and cint > 100 order by cint limit 10; diff --git a/ql/src/test/results/clientnegative/acid_overwrite.q.out b/ql/src/test/results/clientnegative/acid_overwrite.q.out index f28e0a452d1f..0940106af0de 100644 --- a/ql/src/test/results/clientnegative/acid_overwrite.q.out +++ b/ql/src/test/results/clientnegative/acid_overwrite.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uanp -POSTHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uanp diff --git a/ql/src/test/results/clientnegative/authorization_delete_nodeletepriv.q.out b/ql/src/test/results/clientnegative/authorization_delete_nodeletepriv.q.out index 00fb3f79337e..2fc358a17209 100644 --- a/ql/src/test/results/clientnegative/authorization_delete_nodeletepriv.q.out +++ b/ql/src/test/results/clientnegative/authorization_delete_nodeletepriv.q.out @@ -1,10 +1,10 @@ PREHOOK: query: -- check update without update priv -create table auth_nodel(i int) clustered by (i) into 2 buckets stored as orc +create table auth_nodel(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@auth_nodel POSTHOOK: query: -- check update without update priv -create table auth_nodel(i int) clustered by (i) into 2 buckets stored as orc +create table auth_nodel(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@auth_nodel diff --git a/ql/src/test/results/clientnegative/authorization_update_noupdatepriv.q.out b/ql/src/test/results/clientnegative/authorization_update_noupdatepriv.q.out index e4b3c5e28a8c..c39c6d7b8bc8 100644 --- a/ql/src/test/results/clientnegative/authorization_update_noupdatepriv.q.out +++ b/ql/src/test/results/clientnegative/authorization_update_noupdatepriv.q.out @@ -1,10 +1,10 @@ PREHOOK: query: -- check update without update priv -create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc +create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@auth_noupd POSTHOOK: query: -- check update without update priv -create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc +create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@auth_noupd diff --git a/ql/src/test/results/clientnegative/delete_non_acid_table.q.out b/ql/src/test/results/clientnegative/delete_non_acid_table.q.out index c1e54a848f24..a9b884aaf8b0 100644 --- a/ql/src/test/results/clientnegative/delete_non_acid_table.q.out +++ b/ql/src/test/results/clientnegative/delete_non_acid_table.q.out @@ -34,4 +34,4 @@ POSTHOOK: Input: default@not_an_acid_table2 -1070883071 0ruyd6Y50JpdGRf6HqD -1070551679 iUR3Q -1069736047 k17Am8uPHWk02cEf1jet -FAILED: SemanticException [Error 10297]: Attempt to do update or delete on table default.not_an_acid_table2 that does not use an AcidOutputFormat +FAILED: SemanticException [Error 10297]: Attempt to do update or delete on table default.not_an_acid_table2 that does not use an AcidOutputFormat or is not bucketed diff --git a/ql/src/test/results/clientnegative/delete_not_bucketed.q.out b/ql/src/test/results/clientnegative/delete_not_bucketed.q.out new file mode 100644 index 000000000000..d0ba68029a49 --- /dev/null +++ b/ql/src/test/results/clientnegative/delete_not_bucketed.q.out @@ -0,0 +1,9 @@ +PREHOOK: query: create table acid_notbucketed(a int, b varchar(128)) stored as orc TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_notbucketed +POSTHOOK: query: create table acid_notbucketed(a int, b varchar(128)) stored as orc TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_notbucketed +FAILED: SemanticException [Error 10297]: Attempt to do update or delete on table acid_notbucketed that does not use an AcidOutputFormat or is not bucketed diff --git a/ql/src/test/results/clientnegative/delete_sorted.q.out b/ql/src/test/results/clientnegative/delete_sorted.q.out new file mode 100644 index 000000000000..0d248d0175cb --- /dev/null +++ b/ql/src/test/results/clientnegative/delete_sorted.q.out @@ -0,0 +1,9 @@ +PREHOOK: query: create table acid_insertsort(a int, b varchar(128)) partitioned by (ds string) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_insertsort +POSTHOOK: query: create table acid_insertsort(a int, b varchar(128)) partitioned by (ds string) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_insertsort +FAILED: SemanticException [Error 10298]: ACID insert, update, delete not supported on tables that are sorted, table acid_insertsort diff --git a/ql/src/test/results/clientnegative/insert_sorted.q.out b/ql/src/test/results/clientnegative/insert_sorted.q.out new file mode 100644 index 000000000000..50dd5ebbe1ff --- /dev/null +++ b/ql/src/test/results/clientnegative/insert_sorted.q.out @@ -0,0 +1,9 @@ +PREHOOK: query: create table acid_insertsort(a int, b varchar(128)) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_insertsort +POSTHOOK: query: create table acid_insertsort(a int, b varchar(128)) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_insertsort +FAILED: SemanticException [Error 10298]: ACID insert, update, delete not supported on tables that are sorted, table acid_insertsort diff --git a/ql/src/test/results/clientnegative/insert_values_sorted.q.out b/ql/src/test/results/clientnegative/insert_values_sorted.q.out new file mode 100644 index 000000000000..50dd5ebbe1ff --- /dev/null +++ b/ql/src/test/results/clientnegative/insert_values_sorted.q.out @@ -0,0 +1,9 @@ +PREHOOK: query: create table acid_insertsort(a int, b varchar(128)) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_insertsort +POSTHOOK: query: create table acid_insertsort(a int, b varchar(128)) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_insertsort +FAILED: SemanticException [Error 10298]: ACID insert, update, delete not supported on tables that are sorted, table acid_insertsort diff --git a/ql/src/test/results/clientnegative/update_non_acid_table.q.out b/ql/src/test/results/clientnegative/update_non_acid_table.q.out index 4bf61db0cbc2..381b0db4f47c 100644 --- a/ql/src/test/results/clientnegative/update_non_acid_table.q.out +++ b/ql/src/test/results/clientnegative/update_non_acid_table.q.out @@ -34,4 +34,4 @@ POSTHOOK: Input: default@not_an_acid_table -1070883071 0ruyd6Y50JpdGRf6HqD -1070551679 iUR3Q -1069736047 k17Am8uPHWk02cEf1jet -FAILED: SemanticException [Error 10297]: Attempt to do update or delete on table default.not_an_acid_table that does not use an AcidOutputFormat +FAILED: SemanticException [Error 10297]: Attempt to do update or delete on table default.not_an_acid_table that does not use an AcidOutputFormat or is not bucketed diff --git a/ql/src/test/results/clientnegative/update_not_bucketed.q.out b/ql/src/test/results/clientnegative/update_not_bucketed.q.out new file mode 100644 index 000000000000..8ebf41dc2ff5 --- /dev/null +++ b/ql/src/test/results/clientnegative/update_not_bucketed.q.out @@ -0,0 +1,9 @@ +PREHOOK: query: create table acid_notbucketed(a int, b varchar(128)) partitioned by (ds string) stored as orc TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_notbucketed +POSTHOOK: query: create table acid_notbucketed(a int, b varchar(128)) partitioned by (ds string) stored as orc TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_notbucketed +FAILED: SemanticException [Error 10297]: Attempt to do update or delete on table acid_notbucketed that does not use an AcidOutputFormat or is not bucketed diff --git a/ql/src/test/results/clientnegative/update_partition_col.q.out b/ql/src/test/results/clientnegative/update_partition_col.q.out index 003b53f38626..81c50140b737 100644 --- a/ql/src/test/results/clientnegative/update_partition_col.q.out +++ b/ql/src/test/results/clientnegative/update_partition_col.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table foo(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table foo(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@foo -POSTHOOK: query: create table foo(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table foo(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@foo diff --git a/ql/src/test/results/clientnegative/update_sorted.q.out b/ql/src/test/results/clientnegative/update_sorted.q.out new file mode 100644 index 000000000000..50dd5ebbe1ff --- /dev/null +++ b/ql/src/test/results/clientnegative/update_sorted.q.out @@ -0,0 +1,9 @@ +PREHOOK: query: create table acid_insertsort(a int, b varchar(128)) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_insertsort +POSTHOOK: query: create table acid_insertsort(a int, b varchar(128)) clustered by (a) sorted by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_insertsort +FAILED: SemanticException [Error 10298]: ACID insert, update, delete not supported on tables that are sorted, table acid_insertsort diff --git a/ql/src/test/results/clientpositive/acid_vectorization.q.out b/ql/src/test/results/clientpositive/acid_vectorization.q.out index 4a9d19f55291..18dada595a16 100644 --- a/ql/src/test/results/clientpositive/acid_vectorization.q.out +++ b/ql/src/test/results/clientpositive/acid_vectorization.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: CREATE TABLE acid_vectorized(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC +PREHOOK: query: CREATE TABLE acid_vectorized(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_vectorized -POSTHOOK: query: CREATE TABLE acid_vectorized(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC +POSTHOOK: query: CREATE TABLE acid_vectorized(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_vectorized diff --git a/ql/src/test/results/clientpositive/authorization_delete.q.out b/ql/src/test/results/clientpositive/authorization_delete.q.out index 9aa460042df4..260b9a4ef8d3 100644 --- a/ql/src/test/results/clientpositive/authorization_delete.q.out +++ b/ql/src/test/results/clientpositive/authorization_delete.q.out @@ -1,12 +1,12 @@ PREHOOK: query: -- current user has been set (comment line before the set cmd is resulting in parse error!!) -CREATE TABLE t_auth_del(i int) clustered by (i) into 2 buckets stored as orc +CREATE TABLE t_auth_del(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@t_auth_del POSTHOOK: query: -- current user has been set (comment line before the set cmd is resulting in parse error!!) -CREATE TABLE t_auth_del(i int) clustered by (i) into 2 buckets stored as orc +CREATE TABLE t_auth_del(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t_auth_del diff --git a/ql/src/test/results/clientpositive/authorization_delete_own_table.q.out b/ql/src/test/results/clientpositive/authorization_delete_own_table.q.out index 1e0f9c85a673..24833ed09cd8 100644 --- a/ql/src/test/results/clientpositive/authorization_delete_own_table.q.out +++ b/ql/src/test/results/clientpositive/authorization_delete_own_table.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc +PREHOOK: query: create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@auth_noupd -POSTHOOK: query: create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc +POSTHOOK: query: create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@auth_noupd diff --git a/ql/src/test/results/clientpositive/authorization_update.q.out b/ql/src/test/results/clientpositive/authorization_update.q.out index 019d363e2bf7..ef65b33135d0 100644 --- a/ql/src/test/results/clientpositive/authorization_update.q.out +++ b/ql/src/test/results/clientpositive/authorization_update.q.out @@ -1,12 +1,12 @@ PREHOOK: query: -- current user has been set (comment line before the set cmd is resulting in parse error!!) -CREATE TABLE t_auth_up(i int) clustered by (i) into 2 buckets stored as orc +CREATE TABLE t_auth_up(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@t_auth_up POSTHOOK: query: -- current user has been set (comment line before the set cmd is resulting in parse error!!) -CREATE TABLE t_auth_up(i int) clustered by (i) into 2 buckets stored as orc +CREATE TABLE t_auth_up(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@t_auth_up diff --git a/ql/src/test/results/clientpositive/authorization_update_own_table.q.out b/ql/src/test/results/clientpositive/authorization_update_own_table.q.out index cbf8f5757fa9..e4b5f0be0d1b 100644 --- a/ql/src/test/results/clientpositive/authorization_update_own_table.q.out +++ b/ql/src/test/results/clientpositive/authorization_update_own_table.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc +PREHOOK: query: create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@auth_noupd -POSTHOOK: query: create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc +POSTHOOK: query: create table auth_noupd(i int) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@auth_noupd diff --git a/ql/src/test/results/clientpositive/delete_all_non_partitioned.q.out b/ql/src/test/results/clientpositive/delete_all_non_partitioned.q.out index 0d428cab9894..38ce075ff84e 100644 --- a/ql/src/test/results/clientpositive/delete_all_non_partitioned.q.out +++ b/ql/src/test/results/clientpositive/delete_all_non_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_danp -POSTHOOK: query: create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_danp diff --git a/ql/src/test/results/clientpositive/delete_all_partitioned.q.out b/ql/src/test/results/clientpositive/delete_all_partitioned.q.out index 4486323105e7..90f8753687b2 100644 --- a/ql/src/test/results/clientpositive/delete_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/delete_all_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dap -POSTHOOK: query: create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dap diff --git a/ql/src/test/results/clientpositive/delete_tmp_table.q.out b/ql/src/test/results/clientpositive/delete_tmp_table.q.out index ca568b38ffaf..4dc73448f0c3 100644 --- a/ql/src/test/results/clientpositive/delete_tmp_table.q.out +++ b/ql/src/test/results/clientpositive/delete_tmp_table.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dtt -POSTHOOK: query: create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dtt diff --git a/ql/src/test/results/clientpositive/delete_where_no_match.q.out b/ql/src/test/results/clientpositive/delete_where_no_match.q.out index 1450ee6da44b..cb2adc60ba03 100644 --- a/ql/src/test/results/clientpositive/delete_where_no_match.q.out +++ b/ql/src/test/results/clientpositive/delete_where_no_match.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dwnm -POSTHOOK: query: create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dwnm diff --git a/ql/src/test/results/clientpositive/delete_where_non_partitioned.q.out b/ql/src/test/results/clientpositive/delete_where_non_partitioned.q.out index d465e8eed0ef..1bdb1e630c28 100644 --- a/ql/src/test/results/clientpositive/delete_where_non_partitioned.q.out +++ b/ql/src/test/results/clientpositive/delete_where_non_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dwnp -POSTHOOK: query: create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dwnp diff --git a/ql/src/test/results/clientpositive/delete_where_partitioned.q.out b/ql/src/test/results/clientpositive/delete_where_partitioned.q.out index 9f8581b4f8b0..fc2e369876ba 100644 --- a/ql/src/test/results/clientpositive/delete_where_partitioned.q.out +++ b/ql/src/test/results/clientpositive/delete_where_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dwp -POSTHOOK: query: create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dwp diff --git a/ql/src/test/results/clientpositive/delete_whole_partition.q.out b/ql/src/test/results/clientpositive/delete_whole_partition.q.out index a2408ebe43ed..043daf4d2ba4 100644 --- a/ql/src/test/results/clientpositive/delete_whole_partition.q.out +++ b/ql/src/test/results/clientpositive/delete_whole_partition.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dwhp -POSTHOOK: query: create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dwhp diff --git a/ql/src/test/results/clientpositive/insert_acid_dynamic_partition.q.out b/ql/src/test/results/clientpositive/insert_acid_dynamic_partition.q.out new file mode 100644 index 000000000000..07eedf3a361f --- /dev/null +++ b/ql/src/test/results/clientpositive/insert_acid_dynamic_partition.q.out @@ -0,0 +1,48 @@ +PREHOOK: query: create table acid_dynamic(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_dynamic +POSTHOOK: query: create table acid_dynamic(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_dynamic +PREHOOK: query: insert into table acid_dynamic partition (ds) select cint, cast(cstring1 as varchar(128)), cstring2 from alltypesorc where cint is not null and cint < 0 order by cint limit 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_dynamic +POSTHOOK: query: insert into table acid_dynamic partition (ds) select cint, cast(cstring1 as varchar(128)), cstring2 from alltypesorc where cint is not null and cint < 0 order by cint limit 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_dynamic@ds=4KWs6gw7lv2WYd66P +POSTHOOK: Output: default@acid_dynamic@ds=4hA4KQj2vD3fI6gX82220d +POSTHOOK: Output: default@acid_dynamic@ds=KbaDXiN85adbHRx58v +POSTHOOK: Output: default@acid_dynamic@ds=P76636jJ6qM17d7DIy +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=4KWs6gw7lv2WYd66P).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=4KWs6gw7lv2WYd66P).b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=4hA4KQj2vD3fI6gX82220d).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=4hA4KQj2vD3fI6gX82220d).b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=KbaDXiN85adbHRx58v).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=KbaDXiN85adbHRx58v).b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=P76636jJ6qM17d7DIy).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=P76636jJ6qM17d7DIy).b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: select * from acid_dynamic order by a,b +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_dynamic +PREHOOK: Input: default@acid_dynamic@ds=4KWs6gw7lv2WYd66P +PREHOOK: Input: default@acid_dynamic@ds=4hA4KQj2vD3fI6gX82220d +PREHOOK: Input: default@acid_dynamic@ds=KbaDXiN85adbHRx58v +PREHOOK: Input: default@acid_dynamic@ds=P76636jJ6qM17d7DIy +#### A masked pattern was here #### +POSTHOOK: query: select * from acid_dynamic order by a,b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_dynamic +POSTHOOK: Input: default@acid_dynamic@ds=4KWs6gw7lv2WYd66P +POSTHOOK: Input: default@acid_dynamic@ds=4hA4KQj2vD3fI6gX82220d +POSTHOOK: Input: default@acid_dynamic@ds=KbaDXiN85adbHRx58v +POSTHOOK: Input: default@acid_dynamic@ds=P76636jJ6qM17d7DIy +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa P76636jJ6qM17d7DIy +-1073051226 A34p7oRr2WvUJNf 4hA4KQj2vD3fI6gX82220d +-1072910839 0iqrc5 KbaDXiN85adbHRx58v +-1072081801 dPkN74F7 4KWs6gw7lv2WYd66P +-1072076362 2uLyD28144vklju213J1mr 4KWs6gw7lv2WYd66P diff --git a/ql/src/test/results/clientpositive/insert_acid_not_bucketed.q.out b/ql/src/test/results/clientpositive/insert_acid_not_bucketed.q.out new file mode 100644 index 000000000000..985ae402fc80 --- /dev/null +++ b/ql/src/test/results/clientpositive/insert_acid_not_bucketed.q.out @@ -0,0 +1,36 @@ +PREHOOK: query: create table acid_notbucketed(a int, b varchar(128)) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_notbucketed +POSTHOOK: query: create table acid_notbucketed(a int, b varchar(128)) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_notbucketed +PREHOOK: query: insert into table acid_notbucketed select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_notbucketed +POSTHOOK: query: insert into table acid_notbucketed select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_notbucketed +POSTHOOK: Lineage: acid_notbucketed.a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_notbucketed.b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: select * from acid_notbucketed +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_notbucketed +#### A masked pattern was here #### +POSTHOOK: query: select * from acid_notbucketed +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_notbucketed +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa +-1073051226 A34p7oRr2WvUJNf +-1072910839 0iqrc5 +-1072081801 dPkN74F7 +-1072076362 2uLyD28144vklju213J1mr +-1071480828 aw724t8c5558x2xneC624 +-1071363017 Anj0oF +-1070883071 0ruyd6Y50JpdGRf6HqD +-1070551679 iUR3Q +-1069736047 k17Am8uPHWk02cEf1jet diff --git a/ql/src/test/results/clientpositive/insert_orig_table.q.out b/ql/src/test/results/clientpositive/insert_orig_table.q.out index 97a284bda806..5eea74da886f 100644 --- a/ql/src/test/results/clientpositive/insert_orig_table.q.out +++ b/ql/src/test/results/clientpositive/insert_orig_table.q.out @@ -10,7 +10,7 @@ PREHOOK: query: create table acid_iot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_iot @@ -26,7 +26,7 @@ POSTHOOK: query: create table acid_iot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_iot diff --git a/ql/src/test/results/clientpositive/insert_update_delete.q.out b/ql/src/test/results/clientpositive/insert_update_delete.q.out index e9f9984caf76..9a3cf4b5c213 100644 --- a/ql/src/test/results/clientpositive/insert_update_delete.q.out +++ b/ql/src/test/results/clientpositive/insert_update_delete.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_iud -POSTHOOK: query: create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_iud diff --git a/ql/src/test/results/clientpositive/insert_values_acid_not_bucketed.q.out b/ql/src/test/results/clientpositive/insert_values_acid_not_bucketed.q.out new file mode 100644 index 000000000000..4f8ddfac438b --- /dev/null +++ b/ql/src/test/results/clientpositive/insert_values_acid_not_bucketed.q.out @@ -0,0 +1,28 @@ +PREHOOK: query: create table acid_notbucketed(a int, b varchar(128)) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_notbucketed +POSTHOOK: query: create table acid_notbucketed(a int, b varchar(128)) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_notbucketed +PREHOOK: query: insert into table acid_notbucketed values (1, 'abc'), (2, 'def') +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@acid_notbucketed +POSTHOOK: query: insert into table acid_notbucketed values (1, 'abc'), (2, 'def') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@acid_notbucketed +POSTHOOK: Lineage: acid_notbucketed.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: acid_notbucketed.b EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: select * from acid_notbucketed +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_notbucketed +#### A masked pattern was here #### +POSTHOOK: query: select * from acid_notbucketed +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_notbucketed +#### A masked pattern was here #### +1 abc +2 def diff --git a/ql/src/test/results/clientpositive/insert_values_dynamic_partitioned.q.out b/ql/src/test/results/clientpositive/insert_values_dynamic_partitioned.q.out index daea0594e447..773feb47e173 100644 --- a/ql/src/test/results/clientpositive/insert_values_dynamic_partitioned.q.out +++ b/ql/src/test/results/clientpositive/insert_values_dynamic_partitioned.q.out @@ -1,12 +1,12 @@ PREHOOK: query: create table ivdp(i int, de decimal(5,2), - vc varchar(128)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc + vc varchar(128)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@ivdp POSTHOOK: query: create table ivdp(i int, de decimal(5,2), - vc varchar(128)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc + vc varchar(128)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@ivdp diff --git a/ql/src/test/results/clientpositive/insert_values_non_partitioned.q.out b/ql/src/test/results/clientpositive/insert_values_non_partitioned.q.out index ff041b8c5600..5b1c3cc8ae83 100644 --- a/ql/src/test/results/clientpositive/insert_values_non_partitioned.q.out +++ b/ql/src/test/results/clientpositive/insert_values_non_partitioned.q.out @@ -10,7 +10,7 @@ PREHOOK: query: create table acid_ivnp(ti tinyint, b boolean, s string, vc varchar(128), - ch char(12)) clustered by (i) into 2 buckets stored as orc + ch char(12)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_ivnp @@ -26,7 +26,7 @@ POSTHOOK: query: create table acid_ivnp(ti tinyint, b boolean, s string, vc varchar(128), - ch char(12)) clustered by (i) into 2 buckets stored as orc + ch char(12)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_ivnp diff --git a/ql/src/test/results/clientpositive/insert_values_orig_table.q.out b/ql/src/test/results/clientpositive/insert_values_orig_table.q.out index 69220ec8e808..684cd1b3dffc 100644 --- a/ql/src/test/results/clientpositive/insert_values_orig_table.q.out +++ b/ql/src/test/results/clientpositive/insert_values_orig_table.q.out @@ -10,7 +10,7 @@ PREHOOK: query: create table acid_ivot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_ivot @@ -26,7 +26,7 @@ POSTHOOK: query: create table acid_ivot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_ivot diff --git a/ql/src/test/results/clientpositive/insert_values_partitioned.q.out b/ql/src/test/results/clientpositive/insert_values_partitioned.q.out index 9fb89ffc7ec4..66819920222f 100644 --- a/ql/src/test/results/clientpositive/insert_values_partitioned.q.out +++ b/ql/src/test/results/clientpositive/insert_values_partitioned.q.out @@ -9,7 +9,7 @@ PREHOOK: query: create table acid_ivp(ti tinyint, dt date, s string, vc varchar(128), - ch char(12)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc + ch char(12)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_ivp @@ -24,7 +24,7 @@ POSTHOOK: query: create table acid_ivp(ti tinyint, dt date, s string, vc varchar(128), - ch char(12)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc + ch char(12)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_ivp diff --git a/ql/src/test/results/clientpositive/insert_values_tmp_table.q.out b/ql/src/test/results/clientpositive/insert_values_tmp_table.q.out index a424c18c37ff..170b4a74fb09 100644 --- a/ql/src/test/results/clientpositive/insert_values_tmp_table.q.out +++ b/ql/src/test/results/clientpositive/insert_values_tmp_table.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc +PREHOOK: query: create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_ivtt -POSTHOOK: query: create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc +POSTHOOK: query: create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_ivtt diff --git a/ql/src/test/results/clientpositive/tez/delete_all_non_partitioned.q.out b/ql/src/test/results/clientpositive/tez/delete_all_non_partitioned.q.out index 0d428cab9894..38ce075ff84e 100644 --- a/ql/src/test/results/clientpositive/tez/delete_all_non_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/delete_all_non_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_danp -POSTHOOK: query: create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_danp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_danp diff --git a/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out b/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out index 4486323105e7..90f8753687b2 100644 --- a/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dap -POSTHOOK: query: create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_dap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dap diff --git a/ql/src/test/results/clientpositive/tez/delete_tmp_table.q.out b/ql/src/test/results/clientpositive/tez/delete_tmp_table.q.out index ca568b38ffaf..4dc73448f0c3 100644 --- a/ql/src/test/results/clientpositive/tez/delete_tmp_table.q.out +++ b/ql/src/test/results/clientpositive/tez/delete_tmp_table.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dtt -POSTHOOK: query: create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create temporary table acid_dtt(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dtt diff --git a/ql/src/test/results/clientpositive/tez/delete_where_no_match.q.out b/ql/src/test/results/clientpositive/tez/delete_where_no_match.q.out index 1450ee6da44b..cb2adc60ba03 100644 --- a/ql/src/test/results/clientpositive/tez/delete_where_no_match.q.out +++ b/ql/src/test/results/clientpositive/tez/delete_where_no_match.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dwnm -POSTHOOK: query: create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_dwnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dwnm diff --git a/ql/src/test/results/clientpositive/tez/delete_where_non_partitioned.q.out b/ql/src/test/results/clientpositive/tez/delete_where_non_partitioned.q.out index d465e8eed0ef..1bdb1e630c28 100644 --- a/ql/src/test/results/clientpositive/tez/delete_where_non_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/delete_where_non_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dwnp -POSTHOOK: query: create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_dwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dwnp diff --git a/ql/src/test/results/clientpositive/tez/delete_where_partitioned.q.out b/ql/src/test/results/clientpositive/tez/delete_where_partitioned.q.out index 9f8581b4f8b0..fc2e369876ba 100644 --- a/ql/src/test/results/clientpositive/tez/delete_where_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/delete_where_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dwp -POSTHOOK: query: create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_dwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dwp diff --git a/ql/src/test/results/clientpositive/tez/delete_whole_partition.q.out b/ql/src/test/results/clientpositive/tez/delete_whole_partition.q.out index a2408ebe43ed..043daf4d2ba4 100644 --- a/ql/src/test/results/clientpositive/tez/delete_whole_partition.q.out +++ b/ql/src/test/results/clientpositive/tez/delete_whole_partition.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_dwhp -POSTHOOK: query: create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_dwhp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_dwhp diff --git a/ql/src/test/results/clientpositive/tez/insert_acid_dynamic_partition.q.out b/ql/src/test/results/clientpositive/tez/insert_acid_dynamic_partition.q.out new file mode 100644 index 000000000000..07eedf3a361f --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/insert_acid_dynamic_partition.q.out @@ -0,0 +1,48 @@ +PREHOOK: query: create table acid_dynamic(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_dynamic +POSTHOOK: query: create table acid_dynamic(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_dynamic +PREHOOK: query: insert into table acid_dynamic partition (ds) select cint, cast(cstring1 as varchar(128)), cstring2 from alltypesorc where cint is not null and cint < 0 order by cint limit 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_dynamic +POSTHOOK: query: insert into table acid_dynamic partition (ds) select cint, cast(cstring1 as varchar(128)), cstring2 from alltypesorc where cint is not null and cint < 0 order by cint limit 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_dynamic@ds=4KWs6gw7lv2WYd66P +POSTHOOK: Output: default@acid_dynamic@ds=4hA4KQj2vD3fI6gX82220d +POSTHOOK: Output: default@acid_dynamic@ds=KbaDXiN85adbHRx58v +POSTHOOK: Output: default@acid_dynamic@ds=P76636jJ6qM17d7DIy +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=4KWs6gw7lv2WYd66P).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=4KWs6gw7lv2WYd66P).b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=4hA4KQj2vD3fI6gX82220d).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=4hA4KQj2vD3fI6gX82220d).b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=KbaDXiN85adbHRx58v).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=KbaDXiN85adbHRx58v).b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=P76636jJ6qM17d7DIy).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_dynamic PARTITION(ds=P76636jJ6qM17d7DIy).b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: select * from acid_dynamic order by a,b +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_dynamic +PREHOOK: Input: default@acid_dynamic@ds=4KWs6gw7lv2WYd66P +PREHOOK: Input: default@acid_dynamic@ds=4hA4KQj2vD3fI6gX82220d +PREHOOK: Input: default@acid_dynamic@ds=KbaDXiN85adbHRx58v +PREHOOK: Input: default@acid_dynamic@ds=P76636jJ6qM17d7DIy +#### A masked pattern was here #### +POSTHOOK: query: select * from acid_dynamic order by a,b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_dynamic +POSTHOOK: Input: default@acid_dynamic@ds=4KWs6gw7lv2WYd66P +POSTHOOK: Input: default@acid_dynamic@ds=4hA4KQj2vD3fI6gX82220d +POSTHOOK: Input: default@acid_dynamic@ds=KbaDXiN85adbHRx58v +POSTHOOK: Input: default@acid_dynamic@ds=P76636jJ6qM17d7DIy +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa P76636jJ6qM17d7DIy +-1073051226 A34p7oRr2WvUJNf 4hA4KQj2vD3fI6gX82220d +-1072910839 0iqrc5 KbaDXiN85adbHRx58v +-1072081801 dPkN74F7 4KWs6gw7lv2WYd66P +-1072076362 2uLyD28144vklju213J1mr 4KWs6gw7lv2WYd66P diff --git a/ql/src/test/results/clientpositive/tez/insert_acid_not_bucketed.q.out b/ql/src/test/results/clientpositive/tez/insert_acid_not_bucketed.q.out new file mode 100644 index 000000000000..985ae402fc80 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/insert_acid_not_bucketed.q.out @@ -0,0 +1,36 @@ +PREHOOK: query: create table acid_notbucketed(a int, b varchar(128)) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_notbucketed +POSTHOOK: query: create table acid_notbucketed(a int, b varchar(128)) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_notbucketed +PREHOOK: query: insert into table acid_notbucketed select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_notbucketed +POSTHOOK: query: insert into table acid_notbucketed select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_notbucketed +POSTHOOK: Lineage: acid_notbucketed.a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_notbucketed.b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: select * from acid_notbucketed +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_notbucketed +#### A masked pattern was here #### +POSTHOOK: query: select * from acid_notbucketed +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_notbucketed +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa +-1073051226 A34p7oRr2WvUJNf +-1072910839 0iqrc5 +-1072081801 dPkN74F7 +-1072076362 2uLyD28144vklju213J1mr +-1071480828 aw724t8c5558x2xneC624 +-1071363017 Anj0oF +-1070883071 0ruyd6Y50JpdGRf6HqD +-1070551679 iUR3Q +-1069736047 k17Am8uPHWk02cEf1jet diff --git a/ql/src/test/results/clientpositive/tez/insert_orig_table.q.out b/ql/src/test/results/clientpositive/tez/insert_orig_table.q.out index 97a284bda806..5eea74da886f 100644 --- a/ql/src/test/results/clientpositive/tez/insert_orig_table.q.out +++ b/ql/src/test/results/clientpositive/tez/insert_orig_table.q.out @@ -10,7 +10,7 @@ PREHOOK: query: create table acid_iot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_iot @@ -26,7 +26,7 @@ POSTHOOK: query: create table acid_iot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_iot diff --git a/ql/src/test/results/clientpositive/tez/insert_update_delete.q.out b/ql/src/test/results/clientpositive/tez/insert_update_delete.q.out index e9f9984caf76..9a3cf4b5c213 100644 --- a/ql/src/test/results/clientpositive/tez/insert_update_delete.q.out +++ b/ql/src/test/results/clientpositive/tez/insert_update_delete.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_iud -POSTHOOK: query: create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_iud(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_iud diff --git a/ql/src/test/results/clientpositive/tez/insert_values_acid_not_bucketed.q.out b/ql/src/test/results/clientpositive/tez/insert_values_acid_not_bucketed.q.out new file mode 100644 index 000000000000..4f8ddfac438b --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/insert_values_acid_not_bucketed.q.out @@ -0,0 +1,28 @@ +PREHOOK: query: create table acid_notbucketed(a int, b varchar(128)) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_notbucketed +POSTHOOK: query: create table acid_notbucketed(a int, b varchar(128)) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_notbucketed +PREHOOK: query: insert into table acid_notbucketed values (1, 'abc'), (2, 'def') +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@acid_notbucketed +POSTHOOK: query: insert into table acid_notbucketed values (1, 'abc'), (2, 'def') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@acid_notbucketed +POSTHOOK: Lineage: acid_notbucketed.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: acid_notbucketed.b EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: select * from acid_notbucketed +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_notbucketed +#### A masked pattern was here #### +POSTHOOK: query: select * from acid_notbucketed +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_notbucketed +#### A masked pattern was here #### +1 abc +2 def diff --git a/ql/src/test/results/clientpositive/tez/insert_values_dynamic_partitioned.q.out b/ql/src/test/results/clientpositive/tez/insert_values_dynamic_partitioned.q.out index daea0594e447..773feb47e173 100644 --- a/ql/src/test/results/clientpositive/tez/insert_values_dynamic_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/insert_values_dynamic_partitioned.q.out @@ -1,12 +1,12 @@ PREHOOK: query: create table ivdp(i int, de decimal(5,2), - vc varchar(128)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc + vc varchar(128)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@ivdp POSTHOOK: query: create table ivdp(i int, de decimal(5,2), - vc varchar(128)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc + vc varchar(128)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@ivdp diff --git a/ql/src/test/results/clientpositive/tez/insert_values_non_partitioned.q.out b/ql/src/test/results/clientpositive/tez/insert_values_non_partitioned.q.out index ff041b8c5600..5b1c3cc8ae83 100644 --- a/ql/src/test/results/clientpositive/tez/insert_values_non_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/insert_values_non_partitioned.q.out @@ -10,7 +10,7 @@ PREHOOK: query: create table acid_ivnp(ti tinyint, b boolean, s string, vc varchar(128), - ch char(12)) clustered by (i) into 2 buckets stored as orc + ch char(12)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_ivnp @@ -26,7 +26,7 @@ POSTHOOK: query: create table acid_ivnp(ti tinyint, b boolean, s string, vc varchar(128), - ch char(12)) clustered by (i) into 2 buckets stored as orc + ch char(12)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_ivnp diff --git a/ql/src/test/results/clientpositive/tez/insert_values_orig_table.q.out b/ql/src/test/results/clientpositive/tez/insert_values_orig_table.q.out index 69220ec8e808..684cd1b3dffc 100644 --- a/ql/src/test/results/clientpositive/tez/insert_values_orig_table.q.out +++ b/ql/src/test/results/clientpositive/tez/insert_values_orig_table.q.out @@ -10,7 +10,7 @@ PREHOOK: query: create table acid_ivot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_ivot @@ -26,7 +26,7 @@ POSTHOOK: query: create table acid_ivot( ctimestamp1 TIMESTAMP, ctimestamp2 TIMESTAMP, cboolean1 BOOLEAN, - cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc + cboolean2 BOOLEAN) clustered by (cint) into 1 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_ivot diff --git a/ql/src/test/results/clientpositive/tez/insert_values_partitioned.q.out b/ql/src/test/results/clientpositive/tez/insert_values_partitioned.q.out index 9fb89ffc7ec4..66819920222f 100644 --- a/ql/src/test/results/clientpositive/tez/insert_values_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/insert_values_partitioned.q.out @@ -9,7 +9,7 @@ PREHOOK: query: create table acid_ivp(ti tinyint, dt date, s string, vc varchar(128), - ch char(12)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc + ch char(12)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_ivp @@ -24,7 +24,7 @@ POSTHOOK: query: create table acid_ivp(ti tinyint, dt date, s string, vc varchar(128), - ch char(12)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc + ch char(12)) partitioned by (ds string) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_ivp diff --git a/ql/src/test/results/clientpositive/tez/insert_values_tmp_table.q.out b/ql/src/test/results/clientpositive/tez/insert_values_tmp_table.q.out index a424c18c37ff..170b4a74fb09 100644 --- a/ql/src/test/results/clientpositive/tez/insert_values_tmp_table.q.out +++ b/ql/src/test/results/clientpositive/tez/insert_values_tmp_table.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc +PREHOOK: query: create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_ivtt -POSTHOOK: query: create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc +POSTHOOK: query: create temporary table acid_ivtt(i int, de decimal(5,2), vc varchar(128)) clustered by (vc) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_ivtt diff --git a/ql/src/test/results/clientpositive/tez/update_after_multiple_inserts.q.out b/ql/src/test/results/clientpositive/tez/update_after_multiple_inserts.q.out index cb8e319b4ac0..a2ad3afe1ed0 100644 --- a/ql/src/test/results/clientpositive/tez/update_after_multiple_inserts.q.out +++ b/ql/src/test/results/clientpositive/tez/update_after_multiple_inserts.q.out @@ -1,12 +1,12 @@ PREHOOK: query: create table acid_uami(i int, de decimal(5,2), - vc varchar(128)) clustered by (i) into 2 buckets stored as orc + vc varchar(128)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uami POSTHOOK: query: create table acid_uami(i int, de decimal(5,2), - vc varchar(128)) clustered by (i) into 2 buckets stored as orc + vc varchar(128)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uami diff --git a/ql/src/test/results/clientpositive/tez/update_all_non_partitioned.q.out b/ql/src/test/results/clientpositive/tez/update_all_non_partitioned.q.out index fde6d8d9b40f..39dd71bd6fbb 100644 --- a/ql/src/test/results/clientpositive/tez/update_all_non_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/update_all_non_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uanp -POSTHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uanp diff --git a/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out b/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out index 3fae6a90c479..286e2ed52755 100644 --- a/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uap -POSTHOOK: query: create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uap diff --git a/ql/src/test/results/clientpositive/tez/update_all_types.q.out b/ql/src/test/results/clientpositive/tez/update_all_types.q.out index c09293c50f4f..f1353d068ad6 100644 --- a/ql/src/test/results/clientpositive/tez/update_all_types.q.out +++ b/ql/src/test/results/clientpositive/tez/update_all_types.q.out @@ -10,7 +10,7 @@ PREHOOK: query: create table acid_uat(ti tinyint, s string, vc varchar(128), ch char(36), - b boolean) clustered by (i) into 2 buckets stored as orc + b boolean) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uat @@ -26,7 +26,7 @@ POSTHOOK: query: create table acid_uat(ti tinyint, s string, vc varchar(128), ch char(36), - b boolean) clustered by (i) into 2 buckets stored as orc + b boolean) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uat diff --git a/ql/src/test/results/clientpositive/tez/update_tmp_table.q.out b/ql/src/test/results/clientpositive/tez/update_tmp_table.q.out index 8180f0661328..3c86a0c0d146 100644 --- a/ql/src/test/results/clientpositive/tez/update_tmp_table.q.out +++ b/ql/src/test/results/clientpositive/tez/update_tmp_table.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc +PREHOOK: query: create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_utt -POSTHOOK: query: create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc +POSTHOOK: query: create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_utt diff --git a/ql/src/test/results/clientpositive/tez/update_two_cols.q.out b/ql/src/test/results/clientpositive/tez/update_two_cols.q.out index 553608fd1da8..5132c0ca0ae6 100644 --- a/ql/src/test/results/clientpositive/tez/update_two_cols.q.out +++ b/ql/src/test/results/clientpositive/tez/update_two_cols.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_utc -POSTHOOK: query: create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_utc diff --git a/ql/src/test/results/clientpositive/tez/update_where_no_match.q.out b/ql/src/test/results/clientpositive/tez/update_where_no_match.q.out index afef26769480..c88899edfe02 100644 --- a/ql/src/test/results/clientpositive/tez/update_where_no_match.q.out +++ b/ql/src/test/results/clientpositive/tez/update_where_no_match.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_wnm -POSTHOOK: query: create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_wnm diff --git a/ql/src/test/results/clientpositive/tez/update_where_non_partitioned.q.out b/ql/src/test/results/clientpositive/tez/update_where_non_partitioned.q.out index 5c793796365a..9c79235b017e 100644 --- a/ql/src/test/results/clientpositive/tez/update_where_non_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/update_where_non_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uwnp -POSTHOOK: query: create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uwnp diff --git a/ql/src/test/results/clientpositive/tez/update_where_partitioned.q.out b/ql/src/test/results/clientpositive/tez/update_where_partitioned.q.out index b83c52a370ab..fef0dc08f098 100644 --- a/ql/src/test/results/clientpositive/tez/update_where_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/update_where_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uwp -POSTHOOK: query: create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uwp diff --git a/ql/src/test/results/clientpositive/update_after_multiple_inserts.q.out b/ql/src/test/results/clientpositive/update_after_multiple_inserts.q.out index cb8e319b4ac0..a2ad3afe1ed0 100644 --- a/ql/src/test/results/clientpositive/update_after_multiple_inserts.q.out +++ b/ql/src/test/results/clientpositive/update_after_multiple_inserts.q.out @@ -1,12 +1,12 @@ PREHOOK: query: create table acid_uami(i int, de decimal(5,2), - vc varchar(128)) clustered by (i) into 2 buckets stored as orc + vc varchar(128)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uami POSTHOOK: query: create table acid_uami(i int, de decimal(5,2), - vc varchar(128)) clustered by (i) into 2 buckets stored as orc + vc varchar(128)) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uami diff --git a/ql/src/test/results/clientpositive/update_all_non_partitioned.q.out b/ql/src/test/results/clientpositive/update_all_non_partitioned.q.out index fde6d8d9b40f..39dd71bd6fbb 100644 --- a/ql/src/test/results/clientpositive/update_all_non_partitioned.q.out +++ b/ql/src/test/results/clientpositive/update_all_non_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uanp -POSTHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_uanp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uanp diff --git a/ql/src/test/results/clientpositive/update_all_partitioned.q.out b/ql/src/test/results/clientpositive/update_all_partitioned.q.out index 3fae6a90c479..286e2ed52755 100644 --- a/ql/src/test/results/clientpositive/update_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/update_all_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uap -POSTHOOK: query: create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_uap(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uap diff --git a/ql/src/test/results/clientpositive/update_all_types.q.out b/ql/src/test/results/clientpositive/update_all_types.q.out index c09293c50f4f..f1353d068ad6 100644 --- a/ql/src/test/results/clientpositive/update_all_types.q.out +++ b/ql/src/test/results/clientpositive/update_all_types.q.out @@ -10,7 +10,7 @@ PREHOOK: query: create table acid_uat(ti tinyint, s string, vc varchar(128), ch char(36), - b boolean) clustered by (i) into 2 buckets stored as orc + b boolean) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uat @@ -26,7 +26,7 @@ POSTHOOK: query: create table acid_uat(ti tinyint, s string, vc varchar(128), ch char(36), - b boolean) clustered by (i) into 2 buckets stored as orc + b boolean) clustered by (i) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uat diff --git a/ql/src/test/results/clientpositive/update_tmp_table.q.out b/ql/src/test/results/clientpositive/update_tmp_table.q.out index 8180f0661328..3c86a0c0d146 100644 --- a/ql/src/test/results/clientpositive/update_tmp_table.q.out +++ b/ql/src/test/results/clientpositive/update_tmp_table.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc +PREHOOK: query: create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_utt -POSTHOOK: query: create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc +POSTHOOK: query: create table acid_utt(a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_utt diff --git a/ql/src/test/results/clientpositive/update_two_cols.q.out b/ql/src/test/results/clientpositive/update_two_cols.q.out index 553608fd1da8..5132c0ca0ae6 100644 --- a/ql/src/test/results/clientpositive/update_two_cols.q.out +++ b/ql/src/test/results/clientpositive/update_two_cols.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_utc -POSTHOOK: query: create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_utc(a int, b varchar(128), c float) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_utc diff --git a/ql/src/test/results/clientpositive/update_where_no_match.q.out b/ql/src/test/results/clientpositive/update_where_no_match.q.out index afef26769480..c88899edfe02 100644 --- a/ql/src/test/results/clientpositive/update_where_no_match.q.out +++ b/ql/src/test/results/clientpositive/update_where_no_match.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_wnm -POSTHOOK: query: create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_wnm(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_wnm diff --git a/ql/src/test/results/clientpositive/update_where_non_partitioned.q.out b/ql/src/test/results/clientpositive/update_where_non_partitioned.q.out index 5c793796365a..9c79235b017e 100644 --- a/ql/src/test/results/clientpositive/update_where_non_partitioned.q.out +++ b/ql/src/test/results/clientpositive/update_where_non_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uwnp -POSTHOOK: query: create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_uwnp(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uwnp diff --git a/ql/src/test/results/clientpositive/update_where_partitioned.q.out b/ql/src/test/results/clientpositive/update_where_partitioned.q.out index b83c52a370ab..fef0dc08f098 100644 --- a/ql/src/test/results/clientpositive/update_where_partitioned.q.out +++ b/ql/src/test/results/clientpositive/update_where_partitioned.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +PREHOOK: query: create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@acid_uwp -POSTHOOK: query: create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc +POSTHOOK: query: create table acid_uwp(a int, b varchar(128)) partitioned by (ds string) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@acid_uwp From 514afbb0091d525f04a3b494c0e276806e5c74ca Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Thu, 2 Oct 2014 01:59:44 +0000 Subject: [PATCH 049/339] HIVE-8151: Dynamic partition sort optimization inserts record wrongly to partition when used with GroupBy (Prasanth J reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628877 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 2 +- data/files/dynpart_test.txt | 24 + .../resources/testconfiguration.properties | 1 + .../hadoop/hive/ql/exec/FileSinkOperator.java | 117 +- .../hadoop/hive/ql/exec/GroupByOperator.java | 29 +- .../apache/hadoop/hive/ql/exec/Operator.java | 11 - .../hive/ql/exec/ReduceSinkOperator.java | 57 +- .../hadoop/hive/ql/exec/mr/ExecReducer.java | 50 +- .../hive/ql/exec/tez/ReduceRecordSource.java | 3 +- .../exec/vector/VectorReduceSinkOperator.java | 22 +- .../SortedDynPartitionOptimizer.java | 19 +- .../hive/ql/parse/SemanticAnalyzer.java | 11 +- .../alter_partition_change_col.q | 2 + .../dynpart_sort_optimization2.q | 246 +++ .../alter_partition_change_col.q.out | 220 +- .../clientpositive/annotate_stats_part.q.out | 42 +- .../auto_sortmerge_join_16.q.out | 20 +- .../results/clientpositive/combine2.q.out | 4 +- .../results/clientpositive/constprog_dp.q.out | 69 +- .../delete_all_partitioned.q.out | 2 + .../dynpart_sort_opt_vectorization.q.out | 20 +- .../dynpart_sort_optimization.q.out | 20 +- .../dynpart_sort_optimization2.q.out | 1782 ++++++++++++++++ .../extrapolate_part_stats_partial.q.out | Bin 90774 -> 90774 bytes .../results/clientpositive/groupby4_map.q.out | 4 +- .../clientpositive/groupby4_map_skew.q.out | 4 +- .../infer_bucket_sort_dyn_part.q.out | 79 +- .../test/results/clientpositive/input30.q.out | 4 +- .../test/results/clientpositive/input32.q.out | 4 +- .../results/clientpositive/insert_into6.q.out | 69 +- .../clientpositive/load_dyn_part1.q.out | 140 +- .../clientpositive/load_dyn_part10.q.out | 23 +- .../clientpositive/load_dyn_part14.q.out | 101 +- .../clientpositive/load_dyn_part3.q.out | 23 +- .../clientpositive/load_dyn_part4.q.out | 23 +- .../clientpositive/load_dyn_part5.q.out | 23 +- .../clientpositive/load_dyn_part8.q.out | Bin 76443 -> 73224 bytes .../clientpositive/load_dyn_part9.q.out | 23 +- .../test/results/clientpositive/merge3.q.out | Bin 166389 -> 165811 bytes .../test/results/clientpositive/merge4.q.out | 58 +- .../merge_dynamic_partition3.q.out | 29 +- .../merge_dynamic_partition4.q.out | 23 +- .../merge_dynamic_partition5.q.out | 23 +- .../results/clientpositive/orc_analyze.q.out | 24 +- .../results/clientpositive/orc_merge2.q.out | 59 +- .../test/results/clientpositive/stats2.q.out | 23 +- .../test/results/clientpositive/stats4.q.out | 140 +- .../clientpositive/stats_empty_dyn_part.q.out | 69 +- .../tez/auto_sortmerge_join_16.q.out | 20 +- .../tez/delete_all_partitioned.q.out | 2 + .../tez/dynpart_sort_opt_vectorization.q.out | 20 +- .../tez/dynpart_sort_optimization.q.out | 20 +- .../tez/dynpart_sort_optimization2.q.out | 1866 +++++++++++++++++ .../clientpositive/tez/load_dyn_part1.q.out | 51 +- .../clientpositive/tez/load_dyn_part3.q.out | 26 +- .../clientpositive/tez/orc_analyze.q.out | 24 +- .../clientpositive/tez/orc_merge2.q.out | 26 +- .../results/clientpositive/tez/tez_dml.q.out | 628 +++--- .../tez/update_all_partitioned.q.out | 6 + .../test/results/clientpositive/union10.q.out | 12 +- .../test/results/clientpositive/union12.q.out | 12 +- .../test/results/clientpositive/union4.q.out | 8 +- .../clientpositive/union_remove_17.q.out | 35 +- .../update_all_partitioned.q.out | 6 + 64 files changed, 5287 insertions(+), 1216 deletions(-) create mode 100644 data/files/dynpart_test.txt create mode 100644 ql/src/test/queries/clientpositive/dynpart_sort_optimization2.q create mode 100644 ql/src/test/results/clientpositive/dynpart_sort_optimization2.q.out create mode 100644 ql/src/test/results/clientpositive/tez/dynpart_sort_optimization2.q.out diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index b0cb98be1638..3fe67b22980b 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1044,7 +1044,7 @@ public static enum ConfVars { "That means if reducer-num of the child RS is fixed (order by or forced bucketing) and small, it can make very slow, single MR.\n" + "The optimization will be automatically disabled if number of reducers would be less than specified value."), - HIVEOPTSORTDYNAMICPARTITION("hive.optimize.sort.dynamic.partition", true, + HIVEOPTSORTDYNAMICPARTITION("hive.optimize.sort.dynamic.partition", false, "When enabled dynamic partitioning column will be globally sorted.\n" + "This way we can keep only one record writer open for each partition value\n" + "in the reducer thereby reducing the memory pressure on reducers."), diff --git a/data/files/dynpart_test.txt b/data/files/dynpart_test.txt new file mode 100644 index 000000000000..ab6cd4a150a9 --- /dev/null +++ b/data/files/dynpart_test.txt @@ -0,0 +1,24 @@ +24526172.99-11.32 +245261710022.633952.8 +24526172.1-2026.3 +2452617552.96-1363.84 +24526171765.07-4648.8 +2452617879.07-2185.76 +24526177412.832071.68 +245261785.825.61 +2452617565.92196.48 +24526175362.01-600.28 +24526173423.95-3164.07 +24526384133.98-775.72 +245263810171.1660.48 +2452638317.87-3775.38 +2452638156.67-4626.56 +24526381327.0857.97 +24526381971.35-488.25 +2452638181.03-207.24 +2452638267.01-3266.36 +24526380.15-241.22 +24526381524.33494.37 +2452638150.39-162.12 +24526381413.19178.08 +24526384329.49-4000.51 diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index e5257988bcb1..b7de49a8e329 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -75,6 +75,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ disable_merge_for_bucketing.q,\ dynpart_sort_opt_vectorization.q,\ dynpart_sort_optimization.q,\ + dynpart_sort_optimization2.q,\ enforce_order.q,\ filter_join_breaktask.q,\ filter_join_breaktask2.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java index 3ff0782c7469..e02071c6f84b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java @@ -29,6 +29,8 @@ import java.util.Map; import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; @@ -38,13 +40,13 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.ErrorMsg; import org.apache.hadoop.hive.ql.io.AcidUtils; -import org.apache.hadoop.hive.ql.io.RecordUpdater; -import org.apache.hadoop.hive.ql.io.StatsProvidingRecordWriter; import org.apache.hadoop.hive.ql.io.HiveFileFormatUtils; import org.apache.hadoop.hive.ql.io.HiveKey; import org.apache.hadoop.hive.ql.io.HiveOutputFormat; import org.apache.hadoop.hive.ql.io.HivePartitioner; import org.apache.hadoop.hive.ql.io.HivePassThroughOutputFormat; +import org.apache.hadoop.hive.ql.io.RecordUpdater; +import org.apache.hadoop.hive.ql.io.StatsProvidingRecordWriter; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.HiveFatalException; import org.apache.hadoop.hive.ql.plan.DynamicPartitionCtx; @@ -72,14 +74,16 @@ import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.util.ReflectionUtils; -import com.google.common.collect.Lists; - /** * File Sink operator implementation. **/ public class FileSinkOperator extends TerminalOperator implements Serializable { + public static final Log LOG = LogFactory.getLog(FileSinkOperator.class); + private static final boolean isInfoEnabled = LOG.isInfoEnabled(); + private static final boolean isDebugEnabled = LOG.isDebugEnabled(); + protected transient HashMap valToPaths; protected transient int numDynParts; protected transient List dpColNames; @@ -101,10 +105,6 @@ public class FileSinkOperator extends TerminalOperator implements protected transient boolean isCollectRWStats; private transient FSPaths prevFsp; private transient FSPaths fpaths; - private transient ObjectInspector keyOI; - private transient List keyWritables; - private transient List keys; - private transient int numKeyColToRead; private StructField recIdField; // field to find record identifier in private StructField bucketField; // field bucket is in in record id private StructObjectInspector recIdInspector; // OI for inspecting record id @@ -131,9 +131,6 @@ public class FSPaths implements Cloneable { int acidLastBucket = -1; int acidFileOffset = -1; - public FSPaths() { - } - public FSPaths(Path specPath) { tmpPath = Utilities.toTempPath(specPath); taskOutputTempPath = Utilities.toTaskTempPath(specPath); @@ -141,7 +138,9 @@ public FSPaths(Path specPath) { finalPaths = new Path[numFiles]; outWriters = new RecordWriter[numFiles]; updaters = new RecordUpdater[numFiles]; - LOG.debug("Created slots for " + numFiles); + if (isDebugEnabled) { + LOG.debug("Created slots for " + numFiles); + } stat = new Stat(); } @@ -326,7 +325,6 @@ protected void initializeOp(Configuration hconf) throws HiveException { parent = Utilities.toTempPath(conf.getDirName()); statsCollectRawDataSize = conf.isStatsCollectRawDataSize(); statsFromRecordWriter = new boolean[numFiles]; - serializer = (Serializer) conf.getTableInfo().getDeserializerClass().newInstance(); serializer.initialize(null, conf.getTableInfo().getProperties()); outputClass = serializer.getSerializedClass(); @@ -363,20 +361,6 @@ protected void initializeOp(Configuration hconf) throws HiveException { lbSetup(); } - int numPart = 0; - int numBuck = 0; - if (conf.getPartitionCols() != null && !conf.getPartitionCols().isEmpty()) { - numPart = conf.getPartitionCols().size(); - } - - // bucket number will exists only in PARTITION_BUCKET_SORTED mode - if (conf.getDpSortState().equals(DPSortState.PARTITION_BUCKET_SORTED)) { - numBuck = 1; - } - numKeyColToRead = numPart + numBuck; - keys = Lists.newArrayListWithCapacity(numKeyColToRead); - keyWritables = Lists.newArrayListWithCapacity(numKeyColToRead); - if (!bDynParts) { fsp = new FSPaths(specPath); @@ -423,7 +407,8 @@ private void dpSetup() { this.dpColNames = dpCtx.getDPColNames(); this.maxPartitions = dpCtx.getMaxPartitionsPerNode(); - assert numDynParts == dpColNames.size() : "number of dynamic paritions should be the same as the size of DP mapping"; + assert numDynParts == dpColNames.size() + : "number of dynamic paritions should be the same as the size of DP mapping"; if (dpColNames != null && dpColNames.size() > 0) { this.bDynParts = true; @@ -441,6 +426,9 @@ private void dpSetup() { newFieldsOI.add(sf.getFieldObjectInspector()); newFieldsName.add(sf.getFieldName()); this.dpStartCol++; + } else { + // once we found the start column for partition column we are done + break; } } assert newFieldsOI.size() > 0 : "new Fields ObjectInspector is empty"; @@ -457,11 +445,15 @@ protected void createBucketFiles(FSPaths fsp) throws HiveException { Set seenBuckets = new HashSet(); for (int idx = 0; idx < totalFiles; idx++) { if (this.getExecContext() != null && this.getExecContext().getFileId() != null) { - LOG.info("replace taskId from execContext "); + if (isInfoEnabled) { + LOG.info("replace taskId from execContext "); + } taskId = Utilities.replaceTaskIdFromFilename(taskId, this.getExecContext().getFileId()); - LOG.info("new taskId: FS " + taskId); + if (isInfoEnabled) { + LOG.info("new taskId: FS " + taskId); + } assert !multiFileSpray; assert totalFiles == 1; @@ -515,9 +507,13 @@ protected void createBucketForFileIdx(FSPaths fsp, int filesIdx) try { if (isNativeTable) { fsp.finalPaths[filesIdx] = fsp.getFinalPath(taskId, fsp.tmpPath, null); - LOG.info("Final Path: FS " + fsp.finalPaths[filesIdx]); + if (isInfoEnabled) { + LOG.info("Final Path: FS " + fsp.finalPaths[filesIdx]); + } fsp.outPaths[filesIdx] = fsp.getTaskOutPath(taskId); - LOG.info("Writing to temp file: FS " + fsp.outPaths[filesIdx]); + if (isInfoEnabled) { + LOG.info("Writing to temp file: FS " + fsp.outPaths[filesIdx]); + } } else { fsp.finalPaths[filesIdx] = fsp.outPaths[filesIdx] = specPath; } @@ -532,7 +528,9 @@ protected void createBucketForFileIdx(FSPaths fsp, int filesIdx) fsp.finalPaths[filesIdx] = fsp.getFinalPath(taskId, fsp.tmpPath, extension); } - LOG.info("New Final Path: FS " + fsp.finalPaths[filesIdx]); + if (isInfoEnabled) { + LOG.info("New Final Path: FS " + fsp.finalPaths[filesIdx]); + } if (isNativeTable) { // in recent hadoop versions, use deleteOnExit to clean tmp files. @@ -604,14 +602,22 @@ public void processOp(Object row, int tag) throws HiveException { updateProgress(); // if DP is enabled, get the final output writers and prepare the real output row - assert inputObjInspectors[0].getCategory() == ObjectInspector.Category.STRUCT : "input object inspector is not struct"; + assert inputObjInspectors[0].getCategory() == ObjectInspector.Category.STRUCT + : "input object inspector is not struct"; if (bDynParts) { + + // we need to read bucket number which is the last column in value (after partition columns) + if (conf.getDpSortState().equals(DPSortState.PARTITION_BUCKET_SORTED)) { + numDynParts += 1; + } + // copy the DP column values from the input row to dpVals dpVals.clear(); dpWritables.clear(); - ObjectInspectorUtils.partialCopyToStandardObject(dpWritables, row, dpStartCol, numDynParts, - (StructObjectInspector) inputObjInspectors[0], ObjectInspectorCopyOption.WRITABLE); + ObjectInspectorUtils.partialCopyToStandardObject(dpWritables, row, dpStartCol,numDynParts, + (StructObjectInspector) inputObjInspectors[0],ObjectInspectorCopyOption.WRITABLE); + // get a set of RecordWriter based on the DP column values // pass the null value along to the escaping process to determine what the dir should be for (Object o : dpWritables) { @@ -621,16 +627,11 @@ public void processOp(Object row, int tag) throws HiveException { dpVals.add(o.toString()); } } - // use SubStructObjectInspector to serialize the non-partitioning columns in the input row - recordValue = serializer.serialize(row, subSetOI); - // when dynamic partition sorting is not used, the DPSortState will be NONE - // in which we will fall back to old method of file system path creation - // i.e, having as many record writers as distinct values in partition column - if (conf.getDpSortState().equals(DPSortState.NONE)) { - fpaths = getDynOutPaths(dpVals, lbDirName); - } + fpaths = getDynOutPaths(dpVals, lbDirName); + // use SubStructObjectInspector to serialize the non-partitioning columns in the input row + recordValue = serializer.serialize(row, subSetOI); } else { if (lbDirName != null) { fpaths = lookupListBucketingPaths(lbDirName); @@ -686,8 +687,10 @@ public void processOp(Object row, int tag) throws HiveException { fpaths.updaters[++fpaths.acidFileOffset] = HiveFileFormatUtils.getAcidRecordUpdater( jc, conf.getTableInfo(), bucketNum, conf, fpaths.outPaths[fpaths.acidFileOffset], rowInspector, reporter, 0); - LOG.debug("Created updater for bucket number " + bucketNum + " using file " + - fpaths.outPaths[fpaths.acidFileOffset]); + if (isDebugEnabled) { + LOG.debug("Created updater for bucket number " + bucketNum + " using file " + + fpaths.outPaths[fpaths.acidFileOffset]); + } } if (conf.getWriteType() == AcidUtils.Operation.UPDATE) { @@ -834,10 +837,8 @@ protected FSPaths getDynOutPaths(List row, String lbDirName) throws Hive if (dpDir != null) { dpDir = appendToSource(lbDirName, dpDir); pathKey = dpDir; - int numericBucketNum = 0; if(conf.getDpSortState().equals(DPSortState.PARTITION_BUCKET_SORTED)) { String buckNum = row.get(row.size() - 1); - numericBucketNum = Integer.valueOf(buckNum); taskId = Utilities.replaceTaskIdFromFilename(Utilities.getTaskId(hconf), buckNum); pathKey = appendToSource(taskId, dpDir); } @@ -917,26 +918,6 @@ private String getDynPartDirectory(List row, List dpColNames) { return FileUtils.makePartName(dpColNames, row); } - @Override - public void startGroup() throws HiveException { - if (!conf.getDpSortState().equals(DPSortState.NONE)) { - keyOI = getGroupKeyObjectInspector(); - keys.clear(); - keyWritables.clear(); - ObjectInspectorUtils.partialCopyToStandardObject(keyWritables, getGroupKeyObject(), 0, - numKeyColToRead, (StructObjectInspector) keyOI, ObjectInspectorCopyOption.WRITABLE); - - for (Object o : keyWritables) { - if (o == null || o.toString().length() == 0) { - keys.add(dpCtx.getDefaultPartitionName()); - } else { - keys.add(o.toString()); - } - } - fpaths = getDynOutPaths(keys, null); - } - } - @Override public void closeOp(boolean abort) throws HiveException { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java index 62b640249bfa..4632f087915d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java @@ -18,7 +18,22 @@ package org.apache.hadoop.hive.ql.exec; +import java.io.Serializable; +import java.lang.management.ManagementFactory; +import java.lang.management.MemoryMXBean; +import java.lang.reflect.Field; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + import javolution.util.FastBitSet; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; @@ -54,20 +69,6 @@ import org.apache.hadoop.io.BytesWritable; import org.apache.hadoop.io.Text; -import java.io.Serializable; -import java.lang.management.ManagementFactory; -import java.lang.management.MemoryMXBean; -import java.lang.reflect.Field; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - /** * GroupBy operator implementation. */ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java index a066f9871847..3dc7c7657812 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java @@ -498,8 +498,6 @@ protected final void defaultStartGroup() throws HiveException { LOG.debug("Starting group for children:"); for (Operator op : childOperators) { - op.setGroupKeyObjectInspector(groupKeyOI); - op.setGroupKeyObject(groupKeyObject); op.startGroup(); } @@ -970,7 +968,6 @@ protected static StructObjectInspector initEvaluatorsAndReturnStruct( } protected transient Object groupKeyObject; - protected transient ObjectInspector groupKeyOI; public String getOperatorId() { return operatorId; @@ -1287,14 +1284,6 @@ public void setStatistics(Statistics stats) { } } - public void setGroupKeyObjectInspector(ObjectInspector keyObjectInspector) { - this.groupKeyOI = keyObjectInspector; - } - - public ObjectInspector getGroupKeyObjectInspector() { - return groupKeyOI; - } - public static Operator createDummy() { return new DummyOperator(); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java index 9bbc4ecc44a4..d8698dab0797 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java @@ -50,7 +50,6 @@ import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector; import org.apache.hadoop.io.BinaryComparable; import org.apache.hadoop.io.BytesWritable; -import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.io.Writable; import org.apache.hadoop.mapred.OutputCollector; @@ -67,6 +66,9 @@ public class ReduceSinkOperator extends TerminalOperator } private static final Log LOG = LogFactory.getLog(ReduceSinkOperator.class.getName()); + private static final boolean isInfoEnabled = LOG.isInfoEnabled(); + private static final boolean isDebugEnabled = LOG.isDebugEnabled(); + private static final boolean isTraceEnabled = LOG.isTraceEnabled(); private static final long serialVersionUID = 1L; private static final MurmurHash hash = (MurmurHash) MurmurHash.getInstance(); @@ -117,6 +119,8 @@ public class ReduceSinkOperator extends TerminalOperator protected transient Object[] cachedValues; protected transient List> distinctColIndices; protected transient Random random; + protected transient int bucketNumber; + /** * This two dimensional array holds key data and a corresponding Union object * which contains the tag identifying the aggregate expression for distinct columns. @@ -144,8 +148,14 @@ public class ReduceSinkOperator extends TerminalOperator protected void initializeOp(Configuration hconf) throws HiveException { try { List keys = conf.getKeyCols(); - LOG.debug("keys size is " + keys.size()); - for (ExprNodeDesc k : keys) LOG.debug("Key exprNodeDesc " + k.getExprString()); + + if (isDebugEnabled) { + LOG.debug("keys size is " + keys.size()); + for (ExprNodeDesc k : keys) { + LOG.debug("Key exprNodeDesc " + k.getExprString()); + } + } + keyEval = new ExprNodeEvaluator[keys.size()]; int i = 0; for (ExprNodeDesc e : keys) { @@ -184,7 +194,9 @@ protected void initializeOp(Configuration hconf) throws HiveException { tag = conf.getTag(); tagByte[0] = (byte) tag; skipTag = conf.getSkipTag(); - LOG.info("Using tag = " + tag); + if (isInfoEnabled) { + LOG.info("Using tag = " + tag); + } TableDesc keyTableDesc = conf.getKeySerializeInfo(); keySerializer = (Serializer) keyTableDesc.getDeserializerClass() @@ -284,7 +296,10 @@ public void processOp(Object row, int tag) throws HiveException { bucketInspector = (IntObjectInspector)bucketField.getFieldObjectInspector(); } - LOG.info("keys are " + conf.getOutputKeyColumnNames() + " num distributions: " + conf.getNumDistributionKeys()); + if (isInfoEnabled) { + LOG.info("keys are " + conf.getOutputKeyColumnNames() + " num distributions: " + + conf.getNumDistributionKeys()); + } keyObjectInspector = initEvaluatorsAndReturnStruct(keyEval, distinctColIndices, conf.getOutputKeyColumnNames(), numDistributionKeys, rowInspector); @@ -304,15 +319,14 @@ public void processOp(Object row, int tag) throws HiveException { populateCachedDistributionKeys(row, 0); // replace bucketing columns with hashcode % numBuckets - int buckNum = -1; if (bucketEval != null) { - buckNum = computeBucketNumber(row, conf.getNumBuckets()); - cachedKeys[0][buckColIdxInKey] = new IntWritable(buckNum); + bucketNumber = computeBucketNumber(row, conf.getNumBuckets()); + cachedKeys[0][buckColIdxInKey] = new Text(String.valueOf(bucketNumber)); } else if (conf.getWriteType() == AcidUtils.Operation.UPDATE || conf.getWriteType() == AcidUtils.Operation.DELETE) { // In the non-partitioned case we still want to compute the bucket number for updates and // deletes. - buckNum = computeBucketNumber(row, conf.getNumBuckets()); + bucketNumber = computeBucketNumber(row, conf.getNumBuckets()); } HiveKey firstKey = toHiveKey(cachedKeys[0], tag, null); @@ -328,7 +342,7 @@ public void processOp(Object row, int tag) throws HiveException { if (autoParallel && partitionEval.length > 0) { hashCode = computeMurmurHash(firstKey); } else { - hashCode = computeHashCode(row, buckNum); + hashCode = computeHashCode(row); } firstKey.setHashCode(hashCode); @@ -377,7 +391,9 @@ private int computeBucketNumber(Object row, int numBuckets) throws HiveException // column directly. Object recIdValue = acidRowInspector.getStructFieldData(row, recIdField); buckNum = bucketInspector.get(recIdInspector.getStructFieldData(recIdValue, bucketField)); - LOG.debug("Acid choosing bucket number " + buckNum); + if (isTraceEnabled) { + LOG.trace("Acid choosing bucket number " + buckNum); + } } else { for (int i = 0; i < bucketEval.length; i++) { Object o = bucketEval[i].evaluate(row); @@ -422,7 +438,7 @@ protected final int computeMurmurHash(HiveKey firstKey) { return hash.hash(firstKey.getBytes(), firstKey.getDistKeyLength(), 0); } - private int computeHashCode(Object row, int buckNum) throws HiveException { + private int computeHashCode(Object row) throws HiveException { // Evaluate the HashCode int keyHashCode = 0; if (partitionEval.length == 0) { @@ -446,8 +462,10 @@ private int computeHashCode(Object row, int buckNum) throws HiveException { + ObjectInspectorUtils.hashCode(o, partitionObjectInspectors[i]); } } - LOG.debug("Going to return hash code " + (keyHashCode * 31 + buckNum)); - return buckNum < 0 ? keyHashCode : keyHashCode * 31 + buckNum; + if (isTraceEnabled) { + LOG.trace("Going to return hash code " + (keyHashCode * 31 + bucketNumber)); + } + return bucketNumber < 0 ? keyHashCode : keyHashCode * 31 + bucketNumber; } private boolean partitionKeysAreNull(Object row) throws HiveException { @@ -493,10 +511,19 @@ protected void collect(BytesWritable keyWritable, Writable valueWritable) throws } private BytesWritable makeValueWritable(Object row) throws Exception { + int length = valueEval.length; + + // in case of bucketed table, insert the bucket number as the last column in value + if (bucketEval != null) { + length -= 1; + cachedValues[length] = new Text(String.valueOf(bucketNumber)); + } + // Evaluate the value - for (int i = 0; i < valueEval.length; i++) { + for (int i = 0; i < length; i++) { cachedValues[i] = valueEval[i].evaluate(row); } + // Serialize the value return (BytesWritable) valueSerializer.serialize(cachedValues, valueObjectInspector); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecReducer.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecReducer.java index c9e469c734ac..9cd8b569e733 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecReducer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecReducer.java @@ -66,6 +66,8 @@ public class ExecReducer extends MapReduceBase implements Reducer { private static final Log LOG = LogFactory.getLog("ExecReducer"); + private static final boolean isInfoEnabled = LOG.isInfoEnabled(); + private static final boolean isTraceEnabled = LOG.isTraceEnabled(); private static final String PLAN_KEY = "__REDUCE_PLAN__"; // used to log memory usage periodically @@ -75,7 +77,6 @@ public class ExecReducer extends MapReduceBase implements Reducer { private final Deserializer[] inputValueDeserializer = new Deserializer[Byte.MAX_VALUE]; private final Object[] valueObject = new Object[Byte.MAX_VALUE]; private final List row = new ArrayList(Utilities.reduceFieldNameList.size()); - private final boolean isLogInfoEnabled = LOG.isInfoEnabled(); // TODO: move to DynamicSerDe when it's ready private Deserializer inputKeyDeserializer; @@ -101,16 +102,18 @@ public void configure(JobConf job) { ObjectInspector[] valueObjectInspector = new ObjectInspector[Byte.MAX_VALUE]; ObjectInspector keyObjectInspector; - LOG.info("maximum memory = " + memoryMXBean.getHeapMemoryUsage().getMax()); + if (isInfoEnabled) { + LOG.info("maximum memory = " + memoryMXBean.getHeapMemoryUsage().getMax()); - try { - LOG.info("conf classpath = " - + Arrays.asList(((URLClassLoader) job.getClassLoader()).getURLs())); - LOG.info("thread classpath = " - + Arrays.asList(((URLClassLoader) Thread.currentThread() - .getContextClassLoader()).getURLs())); - } catch (Exception e) { - LOG.info("cannot get classpath: " + e.getMessage()); + try { + LOG.info("conf classpath = " + + Arrays.asList(((URLClassLoader) job.getClassLoader()).getURLs())); + LOG.info("thread classpath = " + + Arrays.asList(((URLClassLoader) Thread.currentThread() + .getContextClassLoader()).getURLs())); + } catch (Exception e) { + LOG.info("cannot get classpath: " + e.getMessage()); + } } jc = job; @@ -147,7 +150,6 @@ public void configure(JobConf job) { ArrayList ois = new ArrayList(); ois.add(keyObjectInspector); ois.add(valueObjectInspector[tag]); - reducer.setGroupKeyObjectInspector(keyObjectInspector); rowObjectInspector[tag] = ObjectInspectorFactory .getStandardStructObjectInspector(Utilities.reduceFieldNameList, ois); } @@ -202,7 +204,9 @@ public void reduce(Object key, Iterator values, OutputCollector output, groupKey = new BytesWritable(); } else { // If a operator wants to do some work at the end of a group - LOG.trace("End Group"); + if (isTraceEnabled) { + LOG.trace("End Group"); + } reducer.endGroup(); } @@ -217,9 +221,11 @@ public void reduce(Object key, Iterator values, OutputCollector output, } groupKey.set(keyWritable.get(), 0, keyWritable.getSize()); - LOG.trace("Start Group"); - reducer.setGroupKeyObject(keyObject); + if (isTraceEnabled) { + LOG.trace("Start Group"); + } reducer.startGroup(); + reducer.setGroupKeyObject(keyObject); } // System.err.print(keyObject.toString()); while (values.hasNext()) { @@ -239,12 +245,14 @@ public void reduce(Object key, Iterator values, OutputCollector output, row.clear(); row.add(keyObject); row.add(valueObject[tag]); - if (isLogInfoEnabled) { + if (isInfoEnabled) { cntr++; if (cntr == nextCntr) { long used_memory = memoryMXBean.getHeapMemoryUsage().getUsed(); - LOG.info("ExecReducer: processing " + cntr - + " rows: used memory = " + used_memory); + if (isInfoEnabled) { + LOG.info("ExecReducer: processing " + cntr + + " rows: used memory = " + used_memory); + } nextCntr = getNextCntr(cntr); } } @@ -290,17 +298,19 @@ private long getNextCntr(long cntr) { public void close() { // No row was processed - if (oc == null) { + if (oc == null && isTraceEnabled) { LOG.trace("Close called without any rows processed"); } try { if (groupKey != null) { // If a operator wants to do some work at the end of a group - LOG.trace("End Group"); + if (isTraceEnabled) { + LOG.trace("End Group"); + } reducer.endGroup(); } - if (isLogInfoEnabled) { + if (isInfoEnabled) { LOG.info("ExecReducer: processed " + cntr + " rows: used memory = " + memoryMXBean.getHeapMemoryUsage().getUsed()); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java index 8a5443304490..72e2fe5c77c2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java @@ -131,7 +131,6 @@ void init(JobConf jconf, Operator reducer, boolean vectorized, TableDesc keyT .getDeserializerClass(), null); SerDeUtils.initializeSerDe(inputKeyDeserializer, null, keyTableDesc.getProperties(), null); keyObjectInspector = inputKeyDeserializer.getObjectInspector(); - reducer.setGroupKeyObjectInspector(keyObjectInspector); if(vectorized) { keyStructInspector = (StructObjectInspector) keyObjectInspector; @@ -240,8 +239,8 @@ public boolean pushRecord() throws HiveException { } groupKey.set(keyWritable.getBytes(), 0, keyWritable.getLength()); - reducer.setGroupKeyObject(keyObject); reducer.startGroup(); + reducer.setGroupKeyObject(keyObject); } /* this.keyObject passed via reference */ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java index c0964146f6ce..6c9d8e1b0089 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java @@ -41,7 +41,6 @@ import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; import org.apache.hadoop.hive.serde2.objectinspector.StandardUnionObjectInspector.StandardUnion; import org.apache.hadoop.io.BytesWritable; -import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; // import org.apache.hadoop.util.StringUtils; @@ -270,10 +269,9 @@ public void processOp(Object row, int tag) throws HiveException { populatedCachedDistributionKeys(vrg, rowIndex, 0); // replace bucketing columns with hashcode % numBuckets - int buckNum = -1; if (bucketEval != null) { - buckNum = computeBucketNumber(vrg, rowIndex, conf.getNumBuckets()); - cachedKeys[0][buckColIdxInKey] = new IntWritable(buckNum); + bucketNumber = computeBucketNumber(vrg, rowIndex, conf.getNumBuckets()); + cachedKeys[0][buckColIdxInKey] = new Text(String.valueOf(bucketNumber)); } HiveKey firstKey = toHiveKey(cachedKeys[0], tag, null); int distKeyLength = firstKey.getDistKeyLength(); @@ -289,7 +287,7 @@ public void processOp(Object row, int tag) throws HiveException { if (autoParallel && partitionEval.length > 0) { hashCode = computeMurmurHash(firstKey); } else { - hashCode = computeHashCode(vrg, rowIndex, buckNum); + hashCode = computeHashCode(vrg, rowIndex); } firstKey.setHashCode(hashCode); @@ -417,7 +415,15 @@ private void populateCachedDistinctKeys( private BytesWritable makeValueWritable(VectorizedRowBatch vrg, int rowIndex) throws HiveException, SerDeException { - for (int i = 0; i < valueEval.length; i++) { + int length = valueEval.length; + + // in case of bucketed table, insert the bucket number as the last column in value + if (bucketEval != null) { + length -= 1; + cachedValues[length] = new Text(String.valueOf(bucketNumber)); + } + + for (int i = 0; i < length; i++) { int batchColumn = valueEval[i].getOutputColumn(); ColumnVector vectorColumn = vrg.cols[batchColumn]; cachedValues[i] = valueWriters[i].writeValue(vectorColumn, rowIndex); @@ -426,7 +432,7 @@ private BytesWritable makeValueWritable(VectorizedRowBatch vrg, int rowIndex) return (BytesWritable)valueSerializer.serialize(cachedValues, valueObjectInspector); } - private int computeHashCode(VectorizedRowBatch vrg, int rowIndex, int buckNum) throws HiveException { + private int computeHashCode(VectorizedRowBatch vrg, int rowIndex) throws HiveException { // Evaluate the HashCode int keyHashCode = 0; if (partitionEval.length == 0) { @@ -449,7 +455,7 @@ private int computeHashCode(VectorizedRowBatch vrg, int rowIndex, int buckNum) t partitionWriters[p].getObjectInspector()); } } - return buckNum < 0 ? keyHashCode : keyHashCode * 31 + buckNum; + return bucketNumber < 0 ? keyHashCode : keyHashCode * 31 + bucketNumber; } private boolean partitionKeysAreNull(VectorizedRowBatch vrg, int rowIndex) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java index e3313e9f4318..d79879cfcb89 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java @@ -71,7 +71,6 @@ import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc; import org.apache.hadoop.hive.ql.plan.TableDesc; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; -import org.apache.hadoop.io.IntWritable; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -85,6 +84,7 @@ */ public class SortedDynPartitionOptimizer implements Transform { + private static final String BUCKET_NUMBER_COL_NAME = "_bucket_number"; @Override public ParseContext transform(ParseContext pCtx) throws SemanticException { @@ -216,6 +216,13 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, ReduceSinkDesc rsConf = getReduceSinkDesc(partitionPositions, sortPositions, sortOrder, newValueCols, bucketColumns, numBuckets, fsParent, fsOp.getConf().getWriteType()); + if (!bucketColumns.isEmpty()) { + String tableAlias = outRR.getColumnInfos().get(0).getTabAlias(); + ColumnInfo ci = new ColumnInfo(BUCKET_NUMBER_COL_NAME, TypeInfoFactory.stringTypeInfo, + tableAlias, true, true); + outRR.put(tableAlias, BUCKET_NUMBER_COL_NAME, ci); + } + // Create ReduceSink operator ReduceSinkOperator rsOp = (ReduceSinkOperator) putOpInsertMap( OperatorFactory.getAndMakeChild(rsConf, new RowSchema(outRR.getColumnInfos()), fsParent), @@ -380,8 +387,11 @@ public ReduceSinkDesc getReduceSinkDesc(List partitionPositions, // corresponding with bucket number and hence their OIs for (Integer idx : keyColsPosInVal) { if (idx < 0) { - newKeyCols.add(new ExprNodeConstantDesc(TypeInfoFactory - .getPrimitiveTypeInfoFromPrimitiveWritable(IntWritable.class), -1)); + // add bucket number column to both key and value + ExprNodeConstantDesc encd = new ExprNodeConstantDesc(TypeInfoFactory.stringTypeInfo, + BUCKET_NUMBER_COL_NAME); + newKeyCols.add(encd); + newValueCols.add(encd); } else { newKeyCols.add(newValueCols.get(idx).clone()); } @@ -418,6 +428,9 @@ public ReduceSinkDesc getReduceSinkDesc(List partitionPositions, List outCols = Utilities.getInternalColumnNamesFromSignature(parent.getSchema() .getSignature()); ArrayList outValColNames = Lists.newArrayList(outCols); + if (!bucketColumns.isEmpty()) { + outValColNames.add(BUCKET_NUMBER_COL_NAME); + } List valFields = PlanUtils.getFieldSchemasFromColumnList(newValueCols, outValColNames, 0, ""); TableDesc valueTable = PlanUtils.getReduceValueTableDesc(valFields); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 009e78c8b7e0..d058a946af2e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -6476,6 +6476,7 @@ Operator genConversionSelectOperator(String dest, QB qb, Operator input, int columnNumber = tableFields.size(); ArrayList expressions = new ArrayList( columnNumber); + // MetadataTypedColumnsetSerDe does not need type conversions because it // does the conversion to String by itself. boolean isMetaDataSerDe = table_desc.getDeserializerClass().equals( @@ -6543,17 +6544,19 @@ Operator genConversionSelectOperator(String dest, QB qb, Operator input, if (converted) { // add the select operator RowResolver rowResolver = new RowResolver(); - ArrayList colName = new ArrayList(); + ArrayList colNames = new ArrayList(); + Map colExprMap = new HashMap(); for (int i = 0; i < expressions.size(); i++) { String name = getColumnInternalName(i); rowResolver.put("", name, new ColumnInfo(name, expressions.get(i) .getTypeInfo(), "", false)); - colName.add(name); + colNames.add(name); + colExprMap.put(name, expressions.get(i)); } Operator output = putOpInsertMap(OperatorFactory.getAndMakeChild( - new SelectDesc(expressions, colName), new RowSchema(rowResolver + new SelectDesc(expressions, colNames), new RowSchema(rowResolver .getColumnInfos()), input), rowResolver); - + output.setColumnExprMap(colExprMap); return output; } else { // not converted diff --git a/ql/src/test/queries/clientpositive/alter_partition_change_col.q b/ql/src/test/queries/clientpositive/alter_partition_change_col.q index 64aafd104cc7..baabb9fa4683 100644 --- a/ql/src/test/queries/clientpositive/alter_partition_change_col.q +++ b/ql/src/test/queries/clientpositive/alter_partition_change_col.q @@ -1,6 +1,8 @@ SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict; +-- SORT_QUERY_RESULTS + create table alter_partition_change_col0 (c1 string, c2 string); load data local inpath '../../data/files/dec.txt' overwrite into table alter_partition_change_col0; diff --git a/ql/src/test/queries/clientpositive/dynpart_sort_optimization2.q b/ql/src/test/queries/clientpositive/dynpart_sort_optimization2.q new file mode 100644 index 000000000000..70c795d8cf06 --- /dev/null +++ b/ql/src/test/queries/clientpositive/dynpart_sort_optimization2.q @@ -0,0 +1,246 @@ +set hive.optimize.sort.dynamic.partition=true; +set hive.exec.dynamic.partition=true; +set hive.exec.max.dynamic.partitions=1000; +set hive.exec.max.dynamic.partitions.pernode=1000; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.enforce.bucketing=false; +set hive.enforce.sorting=false; +set hive.exec.submitviachild=true; +set hive.exec.submit.local.task.via.child=true; + +drop table ss; +drop table ss_orc; +drop table ss_part; +drop table ss_part_orc; + +create table ss ( +ss_sold_date_sk int, +ss_net_paid_inc_tax float, +ss_net_profit float); + +create table ss_part ( +ss_net_paid_inc_tax float, +ss_net_profit float) +partitioned by (ss_sold_date_sk int); + +load data local inpath '../../data/files/dynpart_test.txt' overwrite into table ss; + +explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk; + +insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk; + +desc formatted ss_part partition(ss_sold_date_sk=2452617); +select * from ss_part where ss_sold_date_sk=2452617; + +desc formatted ss_part partition(ss_sold_date_sk=2452638); +select * from ss_part where ss_sold_date_sk=2452638; + +explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk; + +insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk; + +desc formatted ss_part partition(ss_sold_date_sk=2452617); +select * from ss_part where ss_sold_date_sk=2452617; + +desc formatted ss_part partition(ss_sold_date_sk=2452638); +select * from ss_part where ss_sold_date_sk=2452638; + +set hive.optimize.sort.dynamic.partition=false; +-- SORT DYNAMIC PARTITION DISABLED + +explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk; + +insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk; + +desc formatted ss_part partition(ss_sold_date_sk=2452617); +select * from ss_part where ss_sold_date_sk=2452617; + +desc formatted ss_part partition(ss_sold_date_sk=2452638); +select * from ss_part where ss_sold_date_sk=2452638; + +explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk; + +insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk; + +desc formatted ss_part partition(ss_sold_date_sk=2452617); +select * from ss_part where ss_sold_date_sk=2452617; + +desc formatted ss_part partition(ss_sold_date_sk=2452638); +select * from ss_part where ss_sold_date_sk=2452638; + +set hive.vectorized.execution.enabled=true; +-- VECTORIZATION IS ENABLED + +create table ss_orc ( +ss_sold_date_sk int, +ss_net_paid_inc_tax float, +ss_net_profit float) stored as orc; + +create table ss_part_orc ( +ss_net_paid_inc_tax float, +ss_net_profit float) +partitioned by (ss_sold_date_sk int) stored as orc; + +insert overwrite table ss_orc select * from ss; + +drop table ss; +drop table ss_part; + +explain insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk; + +insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk; + +desc formatted ss_part_orc partition(ss_sold_date_sk=2452617); +select * from ss_part_orc where ss_sold_date_sk=2452617; + +desc formatted ss_part_orc partition(ss_sold_date_sk=2452638); +select * from ss_part_orc where ss_sold_date_sk=2452638; + +explain insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk; + +insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk; + +desc formatted ss_part_orc partition(ss_sold_date_sk=2452617); +select * from ss_part_orc where ss_sold_date_sk=2452617; + +desc formatted ss_part_orc partition(ss_sold_date_sk=2452638); +select * from ss_part_orc where ss_sold_date_sk=2452638; + +drop table ss_orc; +drop table ss_part_orc; + +drop table if exists hive13_dp1; +create table if not exists hive13_dp1 ( + k1 int, + k2 int +) +PARTITIONED BY(`day` string) +STORED AS ORC; + +set hive.optimize.sort.dynamic.partition=false; +explain insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key; + +insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key; +select * from hive13_dp1 limit 5; + +set hive.optimize.sort.dynamic.partition=true; +explain insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key; + +insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key; +select * from hive13_dp1 limit 5; + +drop table hive13_dp1; diff --git a/ql/src/test/results/clientpositive/alter_partition_change_col.q.out b/ql/src/test/results/clientpositive/alter_partition_change_col.q.out index e48464c5b424..7123e40cde7d 100644 --- a/ql/src/test/results/clientpositive/alter_partition_change_col.q.out +++ b/ql/src/test/results/clientpositive/alter_partition_change_col.q.out @@ -1,8 +1,12 @@ -PREHOOK: query: create table alter_partition_change_col0 (c1 string, c2 string) +PREHOOK: query: -- SORT_QUERY_RESULTS + +create table alter_partition_change_col0 (c1 string, c2 string) PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@alter_partition_change_col0 -POSTHOOK: query: create table alter_partition_change_col0 (c1 string, c2 string) +POSTHOOK: query: -- SORT_QUERY_RESULTS + +create table alter_partition_change_col0 (c1 string, c2 string) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@alter_partition_change_col0 @@ -61,26 +65,26 @@ POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ POSTHOOK: Input: default@alter_partition_change_col1@p1=abc #### A masked pattern was here #### -Tom 234.79 __HIVE_DEFAULT_PARTITION__ -Cluck 5.96 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 __HIVE_DEFAULT_PARTITION__ Beck 0.0 __HIVE_DEFAULT_PARTITION__ -Snow 55.71 __HIVE_DEFAULT_PARTITION__ -Mary 33.33 __HIVE_DEFAULT_PARTITION__ +Beck 0.0 abc Beck 77.341 __HIVE_DEFAULT_PARTITION__ +Beck 77.341 abc Beck 79.9 __HIVE_DEFAULT_PARTITION__ -Tom -12.25 __HIVE_DEFAULT_PARTITION__ Beck 79.9 abc -Beck 0.0 abc -Tom 19.00 abc +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ +Cluck 5.96 abc +Mary 33.33 __HIVE_DEFAULT_PARTITION__ Mary 33.33 abc -Tom -12.25 abc +Mary 4.329 __HIVE_DEFAULT_PARTITION__ Mary 4.329 abc +Snow 55.71 __HIVE_DEFAULT_PARTITION__ Snow 55.71 abc -Beck 77.341 abc +Tom -12.25 __HIVE_DEFAULT_PARTITION__ +Tom -12.25 abc +Tom 19.00 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 abc +Tom 234.79 __HIVE_DEFAULT_PARTITION__ Tom 234.79 abc -Cluck 5.96 abc PREHOOK: query: -- Change c2 to decimal(10,0) alter table alter_partition_change_col1 change c2 c2 decimal(10,0) PREHOOK: type: ALTERTABLE_RENAMECOL @@ -121,26 +125,26 @@ POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ POSTHOOK: Input: default@alter_partition_change_col1@p1=abc #### A masked pattern was here #### -Tom 235 __HIVE_DEFAULT_PARTITION__ -Cluck 6 __HIVE_DEFAULT_PARTITION__ -Tom 19 __HIVE_DEFAULT_PARTITION__ -Mary 4 __HIVE_DEFAULT_PARTITION__ Beck 0 __HIVE_DEFAULT_PARTITION__ -Snow 56 __HIVE_DEFAULT_PARTITION__ -Mary 33 __HIVE_DEFAULT_PARTITION__ +Beck 0 abc Beck 77 __HIVE_DEFAULT_PARTITION__ +Beck 77 abc Beck 80 __HIVE_DEFAULT_PARTITION__ -Tom -12 __HIVE_DEFAULT_PARTITION__ Beck 80 abc -Beck 0 abc -Tom 19 abc +Cluck 6 __HIVE_DEFAULT_PARTITION__ +Cluck 6 abc +Mary 33 __HIVE_DEFAULT_PARTITION__ Mary 33 abc -Tom -12 abc +Mary 4 __HIVE_DEFAULT_PARTITION__ Mary 4 abc +Snow 56 __HIVE_DEFAULT_PARTITION__ Snow 56 abc -Beck 77 abc +Tom -12 __HIVE_DEFAULT_PARTITION__ +Tom -12 abc +Tom 19 __HIVE_DEFAULT_PARTITION__ +Tom 19 abc +Tom 235 __HIVE_DEFAULT_PARTITION__ Tom 235 abc -Cluck 6 abc PREHOOK: query: -- Change the column type at the table level. Table-level describe shows the new type, but the existing partition does not. alter table alter_partition_change_col1 change c2 c2 decimal(14,4) PREHOOK: type: ALTERTABLE_RENAMECOL @@ -191,26 +195,26 @@ POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ POSTHOOK: Input: default@alter_partition_change_col1@p1=abc #### A masked pattern was here #### -Tom 235 __HIVE_DEFAULT_PARTITION__ -Cluck 6 __HIVE_DEFAULT_PARTITION__ -Tom 19 __HIVE_DEFAULT_PARTITION__ -Mary 4 __HIVE_DEFAULT_PARTITION__ Beck 0 __HIVE_DEFAULT_PARTITION__ -Snow 56 __HIVE_DEFAULT_PARTITION__ -Mary 33 __HIVE_DEFAULT_PARTITION__ +Beck 0 abc Beck 77 __HIVE_DEFAULT_PARTITION__ +Beck 77 abc Beck 80 __HIVE_DEFAULT_PARTITION__ -Tom -12 __HIVE_DEFAULT_PARTITION__ Beck 80 abc -Beck 0 abc -Tom 19 abc +Cluck 6 __HIVE_DEFAULT_PARTITION__ +Cluck 6 abc +Mary 33 __HIVE_DEFAULT_PARTITION__ Mary 33 abc -Tom -12 abc +Mary 4 __HIVE_DEFAULT_PARTITION__ Mary 4 abc +Snow 56 __HIVE_DEFAULT_PARTITION__ Snow 56 abc -Beck 77 abc +Tom -12 __HIVE_DEFAULT_PARTITION__ +Tom -12 abc +Tom 19 __HIVE_DEFAULT_PARTITION__ +Tom 19 abc +Tom 235 __HIVE_DEFAULT_PARTITION__ Tom 235 abc -Cluck 6 abc PREHOOK: query: -- now change the column type of the existing partition alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(14,4) PREHOOK: type: ALTERTABLE_RENAMECOL @@ -248,26 +252,26 @@ POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ POSTHOOK: Input: default@alter_partition_change_col1@p1=abc #### A masked pattern was here #### -Tom 235 __HIVE_DEFAULT_PARTITION__ -Cluck 6 __HIVE_DEFAULT_PARTITION__ -Tom 19 __HIVE_DEFAULT_PARTITION__ -Mary 4 __HIVE_DEFAULT_PARTITION__ Beck 0 __HIVE_DEFAULT_PARTITION__ -Snow 56 __HIVE_DEFAULT_PARTITION__ -Mary 33 __HIVE_DEFAULT_PARTITION__ +Beck 0.0 abc Beck 77 __HIVE_DEFAULT_PARTITION__ -Beck 80 __HIVE_DEFAULT_PARTITION__ -Tom -12 __HIVE_DEFAULT_PARTITION__ +Beck 77.341 abc Beck 79.9 abc -Beck 0.0 abc -Tom 19.00 abc +Beck 80 __HIVE_DEFAULT_PARTITION__ +Cluck 5.96 abc +Cluck 6 __HIVE_DEFAULT_PARTITION__ +Mary 33 __HIVE_DEFAULT_PARTITION__ Mary 33.33 abc -Tom -12.25 abc +Mary 4 __HIVE_DEFAULT_PARTITION__ Mary 4.329 abc Snow 55.71 abc -Beck 77.341 abc +Snow 56 __HIVE_DEFAULT_PARTITION__ +Tom -12 __HIVE_DEFAULT_PARTITION__ +Tom -12.25 abc +Tom 19 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 abc Tom 234.79 abc -Cluck 5.96 abc +Tom 235 __HIVE_DEFAULT_PARTITION__ PREHOOK: query: -- change column for default partition value alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(14,4) PREHOOK: type: ALTERTABLE_RENAMECOL @@ -305,26 +309,26 @@ POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ POSTHOOK: Input: default@alter_partition_change_col1@p1=abc #### A masked pattern was here #### -Tom 234.79 __HIVE_DEFAULT_PARTITION__ -Cluck 5.96 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 __HIVE_DEFAULT_PARTITION__ Beck 0.0 __HIVE_DEFAULT_PARTITION__ -Snow 55.71 __HIVE_DEFAULT_PARTITION__ -Mary 33.33 __HIVE_DEFAULT_PARTITION__ +Beck 0.0 abc Beck 77.341 __HIVE_DEFAULT_PARTITION__ +Beck 77.341 abc Beck 79.9 __HIVE_DEFAULT_PARTITION__ -Tom -12.25 __HIVE_DEFAULT_PARTITION__ Beck 79.9 abc -Beck 0.0 abc -Tom 19.00 abc +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ +Cluck 5.96 abc +Mary 33.33 __HIVE_DEFAULT_PARTITION__ Mary 33.33 abc -Tom -12.25 abc +Mary 4.329 __HIVE_DEFAULT_PARTITION__ Mary 4.329 abc +Snow 55.71 __HIVE_DEFAULT_PARTITION__ Snow 55.71 abc -Beck 77.341 abc +Tom -12.25 __HIVE_DEFAULT_PARTITION__ +Tom -12.25 abc +Tom 19.00 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 abc +Tom 234.79 __HIVE_DEFAULT_PARTITION__ Tom 234.79 abc -Cluck 5.96 abc PREHOOK: query: -- Try out replace columns alter table alter_partition_change_col1 partition (p1='abc') replace columns (c1 string) PREHOOK: type: ALTERTABLE_REPLACECOLS @@ -375,26 +379,26 @@ POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ POSTHOOK: Input: default@alter_partition_change_col1@p1=abc #### A masked pattern was here #### -Tom 234.79 __HIVE_DEFAULT_PARTITION__ -Cluck 5.96 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 __HIVE_DEFAULT_PARTITION__ Beck 0.0 __HIVE_DEFAULT_PARTITION__ -Snow 55.71 __HIVE_DEFAULT_PARTITION__ -Mary 33.33 __HIVE_DEFAULT_PARTITION__ Beck 77.341 __HIVE_DEFAULT_PARTITION__ Beck 79.9 __HIVE_DEFAULT_PARTITION__ -Tom -12.25 __HIVE_DEFAULT_PARTITION__ Beck NULL abc Beck NULL abc -Tom NULL abc +Beck NULL abc +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ +Cluck NULL abc +Mary 33.33 __HIVE_DEFAULT_PARTITION__ +Mary 4.329 __HIVE_DEFAULT_PARTITION__ Mary NULL abc -Tom NULL abc Mary NULL abc +Snow 55.71 __HIVE_DEFAULT_PARTITION__ Snow NULL abc -Beck NULL abc +Tom -12.25 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 __HIVE_DEFAULT_PARTITION__ +Tom 234.79 __HIVE_DEFAULT_PARTITION__ +Tom NULL abc +Tom NULL abc Tom NULL abc -Cluck NULL abc PREHOOK: query: alter table alter_partition_change_col1 replace columns (c1 string) PREHOOK: type: ALTERTABLE_REPLACECOLS PREHOOK: Input: default@alter_partition_change_col1 @@ -428,26 +432,26 @@ POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ POSTHOOK: Input: default@alter_partition_change_col1@p1=abc #### A masked pattern was here #### -Tom __HIVE_DEFAULT_PARTITION__ -Cluck __HIVE_DEFAULT_PARTITION__ -Tom __HIVE_DEFAULT_PARTITION__ -Mary __HIVE_DEFAULT_PARTITION__ Beck __HIVE_DEFAULT_PARTITION__ -Snow __HIVE_DEFAULT_PARTITION__ -Mary __HIVE_DEFAULT_PARTITION__ Beck __HIVE_DEFAULT_PARTITION__ Beck __HIVE_DEFAULT_PARTITION__ -Tom __HIVE_DEFAULT_PARTITION__ Beck abc Beck abc -Tom abc +Beck abc +Cluck __HIVE_DEFAULT_PARTITION__ +Cluck abc +Mary __HIVE_DEFAULT_PARTITION__ +Mary __HIVE_DEFAULT_PARTITION__ Mary abc -Tom abc Mary abc +Snow __HIVE_DEFAULT_PARTITION__ Snow abc -Beck abc +Tom __HIVE_DEFAULT_PARTITION__ +Tom __HIVE_DEFAULT_PARTITION__ +Tom __HIVE_DEFAULT_PARTITION__ +Tom abc +Tom abc Tom abc -Cluck abc PREHOOK: query: -- Try add columns alter table alter_partition_change_col1 add columns (c2 decimal(14,4)) PREHOOK: type: ALTERTABLE_ADDCOLS @@ -497,26 +501,26 @@ POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ POSTHOOK: Input: default@alter_partition_change_col1@p1=abc #### A masked pattern was here #### -Tom 234.79 __HIVE_DEFAULT_PARTITION__ -Cluck 5.96 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 __HIVE_DEFAULT_PARTITION__ Beck 0.0 __HIVE_DEFAULT_PARTITION__ -Snow 55.71 __HIVE_DEFAULT_PARTITION__ -Mary 33.33 __HIVE_DEFAULT_PARTITION__ Beck 77.341 __HIVE_DEFAULT_PARTITION__ Beck 79.9 __HIVE_DEFAULT_PARTITION__ -Tom -12.25 __HIVE_DEFAULT_PARTITION__ Beck NULL abc Beck NULL abc -Tom NULL abc +Beck NULL abc +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ +Cluck NULL abc +Mary 33.33 __HIVE_DEFAULT_PARTITION__ +Mary 4.329 __HIVE_DEFAULT_PARTITION__ Mary NULL abc -Tom NULL abc Mary NULL abc +Snow 55.71 __HIVE_DEFAULT_PARTITION__ Snow NULL abc -Beck NULL abc +Tom -12.25 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 __HIVE_DEFAULT_PARTITION__ +Tom 234.79 __HIVE_DEFAULT_PARTITION__ +Tom NULL abc +Tom NULL abc Tom NULL abc -Cluck NULL abc PREHOOK: query: alter table alter_partition_change_col1 partition (p1='abc') add columns (c2 decimal(14,4)) PREHOOK: type: ALTERTABLE_ADDCOLS PREHOOK: Input: default@alter_partition_change_col1 @@ -552,23 +556,23 @@ POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ POSTHOOK: Input: default@alter_partition_change_col1@p1=abc #### A masked pattern was here #### -Tom 234.79 __HIVE_DEFAULT_PARTITION__ -Cluck 5.96 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 __HIVE_DEFAULT_PARTITION__ Beck 0.0 __HIVE_DEFAULT_PARTITION__ -Snow 55.71 __HIVE_DEFAULT_PARTITION__ -Mary 33.33 __HIVE_DEFAULT_PARTITION__ +Beck 0.0 abc Beck 77.341 __HIVE_DEFAULT_PARTITION__ +Beck 77.341 abc Beck 79.9 __HIVE_DEFAULT_PARTITION__ -Tom -12.25 __HIVE_DEFAULT_PARTITION__ Beck 79.9 abc -Beck 0.0 abc -Tom 19.00 abc +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ +Cluck 5.96 abc +Mary 33.33 __HIVE_DEFAULT_PARTITION__ Mary 33.33 abc -Tom -12.25 abc +Mary 4.329 __HIVE_DEFAULT_PARTITION__ Mary 4.329 abc +Snow 55.71 __HIVE_DEFAULT_PARTITION__ Snow 55.71 abc -Beck 77.341 abc +Tom -12.25 __HIVE_DEFAULT_PARTITION__ +Tom -12.25 abc +Tom 19.00 __HIVE_DEFAULT_PARTITION__ +Tom 19.00 abc +Tom 234.79 __HIVE_DEFAULT_PARTITION__ Tom 234.79 abc -Cluck 5.96 abc diff --git a/ql/src/test/results/clientpositive/annotate_stats_part.q.out b/ql/src/test/results/clientpositive/annotate_stats_part.q.out index d2e9ed1ddcdd..b952fa6be817 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_part.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_part.q.out @@ -98,11 +98,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 5 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 5 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 5 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 5 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- partition level analyze statistics for specific parition @@ -158,11 +158,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 9 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 9 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 9 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 9 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: NONE @@ -181,11 +181,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- partition level analyze statistics for all partitions @@ -245,11 +245,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: NONE @@ -268,11 +268,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- both partitions will be pruned @@ -331,11 +331,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: zip (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: PARTIAL @@ -354,7 +354,7 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string) outputColumnNames: _col0 @@ -377,7 +377,7 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: year (type: string) outputColumnNames: _col0 @@ -402,7 +402,7 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int) outputColumnNames: _col0, _col1 @@ -425,7 +425,7 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: state (type: string), locid (type: int) outputColumnNames: _col0, _col1 @@ -471,11 +471,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 8 Data size: 722 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- This is to test filter expression evaluation on partition column @@ -496,7 +496,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (locid > 0) (type: boolean) Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE @@ -532,7 +532,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (locid > 0) (type: boolean) Statistics: Num rows: 2 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE @@ -568,7 +568,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 399 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (locid > 0) (type: boolean) Statistics: Num rows: 2 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE diff --git a/ql/src/test/results/clientpositive/auto_sortmerge_join_16.q.out b/ql/src/test/results/clientpositive/auto_sortmerge_join_16.q.out index 03507dd06396..b32ac060d36d 100644 --- a/ql/src/test/results/clientpositive/auto_sortmerge_join_16.q.out +++ b/ql/src/test/results/clientpositive/auto_sortmerge_join_16.q.out @@ -232,6 +232,16 @@ POSTHOOK: Input: default@bucket_small@pri=2 0 val_0 val_0 day1 1 0 val_0 val_0 day1 1 0 val_0 val_0 day1 1 +103 val_103 val_103 day1 1 +103 val_103 val_103 day1 1 +103 val_103 val_103 day1 1 +103 val_103 val_103 day1 1 +374 val_374 val_374 day1 1 +374 val_374 val_374 day1 1 +172 val_172 val_172 day1 1 +172 val_172 val_172 day1 1 +172 val_172 val_172 day1 1 +172 val_172 val_172 day1 1 169 val_169 val_169 day1 1 169 val_169 val_169 day1 1 169 val_169 val_169 day1 1 @@ -240,13 +250,3 @@ POSTHOOK: Input: default@bucket_small@pri=2 169 val_169 val_169 day1 1 169 val_169 val_169 day1 1 169 val_169 val_169 day1 1 -374 val_374 val_374 day1 1 -374 val_374 val_374 day1 1 -172 val_172 val_172 day1 1 -172 val_172 val_172 day1 1 -172 val_172 val_172 day1 1 -172 val_172 val_172 day1 1 -103 val_103 val_103 day1 1 -103 val_103 val_103 day1 1 -103 val_103 val_103 day1 1 -103 val_103 val_103 day1 1 diff --git a/ql/src/test/results/clientpositive/combine2.q.out b/ql/src/test/results/clientpositive/combine2.q.out index 9da953c1a400..921dd908ca0d 100644 --- a/ql/src/test/results/clientpositive/combine2.q.out +++ b/ql/src/test/results/clientpositive/combine2.q.out @@ -263,7 +263,7 @@ STAGE PLANS: columns.types string #### A masked pattern was here #### name default.combine2 - numFiles 1 + numFiles 3 numRows 3 partition_columns value partition_columns.types string @@ -398,7 +398,7 @@ STAGE PLANS: columns.types string #### A masked pattern was here #### name default.combine2 - numFiles 1 + numFiles 3 numRows 3 partition_columns value partition_columns.types string diff --git a/ql/src/test/results/clientpositive/constprog_dp.q.out b/ql/src/test/results/clientpositive/constprog_dp.q.out index e8764676bdd8..98af017c3928 100644 --- a/ql/src/test/results/clientpositive/constprog_dp.q.out +++ b/ql/src/test/results/clientpositive/constprog_dp.q.out @@ -16,8 +16,13 @@ insert overwrite table dest partition (ds) select key, value, ds where ds='2008- POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage - Stage-0 depends on stages: Stage-1 + Stage-7 depends on stages: Stage-1 , consists of Stage-4, Stage-3, Stage-5 + Stage-4 + Stage-0 depends on stages: Stage-4, Stage-3, Stage-6 Stage-2 depends on stages: Stage-0 + Stage-3 + Stage-5 + Stage-6 depends on stages: Stage-5 STAGE PLANS: Stage: Stage-1 @@ -30,23 +35,23 @@ STAGE PLANS: expressions: key (type: string), value (type: string), ds (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string) - sort order: + - Map-reduce partition columns: _col2 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.dest + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.dest + + Stage: Stage-7 + Conditional Operator + + Stage: Stage-4 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### Stage: Stage-0 Move Operator @@ -63,6 +68,36 @@ STAGE PLANS: Stage: Stage-2 Stats-Aggr Operator + Stage: Stage-3 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.dest + + Stage: Stage-5 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.dest + + Stage: Stage-6 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + PREHOOK: query: from srcpart insert overwrite table dest partition (ds) select key, value, ds where ds='2008-04-08' PREHOOK: type: QUERY diff --git a/ql/src/test/results/clientpositive/delete_all_partitioned.q.out b/ql/src/test/results/clientpositive/delete_all_partitioned.q.out index 90f8753687b2..c5149b28b42c 100644 --- a/ql/src/test/results/clientpositive/delete_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/delete_all_partitioned.q.out @@ -84,3 +84,5 @@ POSTHOOK: Input: default@acid_dap POSTHOOK: Input: default@acid_dap@ds=today POSTHOOK: Input: default@acid_dap@ds=tomorrow #### A masked pattern was here #### +-1071480828 aw724t8c5558x2xneC624 today +-1072076362 2uLyD28144vklju213J1mr today diff --git a/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out b/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out index f2c42ae77e45..df8ad447f55a 100644 --- a/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out +++ b/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out @@ -342,11 +342,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string) sort order: ++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Execution mode: vectorized Reduce Operator Tree: Extract @@ -399,11 +399,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Execution mode: vectorized Reduce Operator Tree: Extract @@ -691,11 +691,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string) sort order: ++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Execution mode: vectorized Reduce Operator Tree: Extract @@ -748,11 +748,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Execution mode: vectorized Reduce Operator Tree: Extract @@ -2063,11 +2063,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Execution mode: vectorized Reduce Operator Tree: Extract diff --git a/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out b/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out index 549169f68b3e..87948840a478 100644 --- a/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out +++ b/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out @@ -275,11 +275,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string) sort order: ++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Reduce Operator Tree: Extract Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE @@ -331,11 +331,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Reduce Operator Tree: Extract Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE @@ -598,11 +598,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string) sort order: ++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Reduce Operator Tree: Extract Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE @@ -654,11 +654,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Reduce Operator Tree: Extract Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE @@ -1962,11 +1962,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Reduce Operator Tree: Extract Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE diff --git a/ql/src/test/results/clientpositive/dynpart_sort_optimization2.q.out b/ql/src/test/results/clientpositive/dynpart_sort_optimization2.q.out new file mode 100644 index 000000000000..9b57bbbc3ed1 --- /dev/null +++ b/ql/src/test/results/clientpositive/dynpart_sort_optimization2.q.out @@ -0,0 +1,1782 @@ +PREHOOK: query: drop table ss +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table ss +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table ss_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table ss_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table ss_part +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table ss_part +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table ss_part_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table ss_part_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table ss ( +ss_sold_date_sk int, +ss_net_paid_inc_tax float, +ss_net_profit float) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ss +POSTHOOK: query: create table ss ( +ss_sold_date_sk int, +ss_net_paid_inc_tax float, +ss_net_profit float) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ss +PREHOOK: query: create table ss_part ( +ss_net_paid_inc_tax float, +ss_net_profit float) +partitioned by (ss_sold_date_sk int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ss_part +POSTHOOK: query: create table ss_part ( +ss_net_paid_inc_tax float, +ss_net_profit float) +partitioned by (ss_sold_date_sk int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ss_part +PREHOOK: query: load data local inpath '../../data/files/dynpart_test.txt' overwrite into table ss +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@ss +POSTHOOK: query: load data local inpath '../../data/files/dynpart_test.txt' overwrite into table ss +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@ss +PREHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: ss + Statistics: Num rows: 46 Data size: 553 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + outputColumnNames: ss_sold_date_sk, ss_net_paid_inc_tax, ss_net_profit + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: float), _col2 (type: float) + sort order: +++ + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int), KEY._col1 (type: float), KEY._col2 (type: float) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: float), _col2 (type: float), _col0 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss_part +POSTHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 151 + totalSize 162 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +2.1 -2026.3 2452617 +2.99 -11.32 2452617 +85.8 25.61 2452617 +552.96 -1363.84 2452617 +565.92 196.48 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +7412.83 2071.68 2452617 +10022.63 3952.8 2452617 +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 186 + totalSize 199 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +0.15 -241.22 2452638 +150.39 -162.12 2452638 +156.67 -4626.56 2452638 +181.03 -207.24 2452638 +267.01 -3266.36 2452638 +317.87 -3775.38 2452638 +1327.08 57.97 2452638 +1413.19 178.08 2452638 +1524.33 494.37 2452638 +1971.35 -488.25 2452638 +4133.98 -775.72 2452638 +4329.49 -4000.51 2452638 +10171.1 660.48 2452638 +PREHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: ss + Statistics: Num rows: 46 Data size: 553 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_net_paid_inc_tax (type: float), ss_net_profit (type: float), ss_sold_date_sk (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col2 (type: int) + sort order: + + Map-reduce partition columns: _col2 (type: int) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: float), _col1 (type: float), _col2 (type: int) + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: float), VALUE._col1 (type: float), VALUE._col2 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss_part +POSTHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 151 + totalSize 162 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +10022.63 3952.8 2452617 +2.99 -11.32 2452617 +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +565.92 196.48 2452617 +85.8 25.61 2452617 +7412.83 2071.68 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +552.96 -1363.84 2452617 +2.1 -2026.3 2452617 +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 186 + totalSize 199 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +4329.49 -4000.51 2452638 +1413.19 178.08 2452638 +150.39 -162.12 2452638 +1524.33 494.37 2452638 +0.15 -241.22 2452638 +267.01 -3266.36 2452638 +181.03 -207.24 2452638 +1971.35 -488.25 2452638 +1327.08 57.97 2452638 +156.67 -4626.56 2452638 +317.87 -3775.38 2452638 +10171.1 660.48 2452638 +4133.98 -775.72 2452638 +PREHOOK: query: -- SORT DYNAMIC PARTITION DISABLED + +explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: -- SORT DYNAMIC PARTITION DISABLED + +explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: ss + Statistics: Num rows: 46 Data size: 553 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + outputColumnNames: ss_sold_date_sk, ss_net_paid_inc_tax, ss_net_profit + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: float), _col2 (type: float) + sort order: +++ + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int), KEY._col1 (type: float), KEY._col2 (type: float) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: float), _col2 (type: float), _col0 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss_part +POSTHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 151 + totalSize 162 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +2.1 -2026.3 2452617 +2.99 -11.32 2452617 +85.8 25.61 2452617 +552.96 -1363.84 2452617 +565.92 196.48 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +7412.83 2071.68 2452617 +10022.63 3952.8 2452617 +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 186 + totalSize 199 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +0.15 -241.22 2452638 +150.39 -162.12 2452638 +156.67 -4626.56 2452638 +181.03 -207.24 2452638 +267.01 -3266.36 2452638 +317.87 -3775.38 2452638 +1327.08 57.97 2452638 +1413.19 178.08 2452638 +1524.33 494.37 2452638 +1971.35 -488.25 2452638 +4133.98 -775.72 2452638 +4329.49 -4000.51 2452638 +10171.1 660.48 2452638 +PREHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: ss + Statistics: Num rows: 46 Data size: 553 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_net_paid_inc_tax (type: float), ss_net_profit (type: float), ss_sold_date_sk (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Map-reduce partition columns: _col2 (type: int) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: float), _col1 (type: float), _col2 (type: int) + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: float), VALUE._col1 (type: float), VALUE._col2 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss_part +POSTHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 151 + totalSize 162 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +565.92 196.48 2452617 +85.8 25.61 2452617 +7412.83 2071.68 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +552.96 -1363.84 2452617 +2.1 -2026.3 2452617 +10022.63 3952.8 2452617 +2.99 -11.32 2452617 +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 186 + totalSize 199 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +4329.49 -4000.51 2452638 +1413.19 178.08 2452638 +150.39 -162.12 2452638 +1524.33 494.37 2452638 +0.15 -241.22 2452638 +267.01 -3266.36 2452638 +181.03 -207.24 2452638 +1971.35 -488.25 2452638 +1327.08 57.97 2452638 +156.67 -4626.56 2452638 +317.87 -3775.38 2452638 +10171.1 660.48 2452638 +4133.98 -775.72 2452638 +PREHOOK: query: -- VECTORIZATION IS ENABLED + +create table ss_orc ( +ss_sold_date_sk int, +ss_net_paid_inc_tax float, +ss_net_profit float) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ss_orc +POSTHOOK: query: -- VECTORIZATION IS ENABLED + +create table ss_orc ( +ss_sold_date_sk int, +ss_net_paid_inc_tax float, +ss_net_profit float) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ss_orc +PREHOOK: query: create table ss_part_orc ( +ss_net_paid_inc_tax float, +ss_net_profit float) +partitioned by (ss_sold_date_sk int) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ss_part_orc +POSTHOOK: query: create table ss_part_orc ( +ss_net_paid_inc_tax float, +ss_net_profit float) +partitioned by (ss_sold_date_sk int) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ss_part_orc +PREHOOK: query: insert overwrite table ss_orc select * from ss +PREHOOK: type: QUERY +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss_orc +POSTHOOK: query: insert overwrite table ss_orc select * from ss +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss_orc +POSTHOOK: Lineage: ss_orc.ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_orc.ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_orc.ss_sold_date_sk SIMPLE [(ss)ss.FieldSchema(name:ss_sold_date_sk, type:int, comment:null), ] +PREHOOK: query: drop table ss +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss +POSTHOOK: query: drop table ss +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss +PREHOOK: query: drop table ss_part +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ss_part +PREHOOK: Output: default@ss_part +POSTHOOK: query: drop table ss_part +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ss_part +POSTHOOK: Output: default@ss_part +PREHOOK: query: explain insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: ss_orc + Statistics: Num rows: 24 Data size: 288 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + outputColumnNames: ss_sold_date_sk, ss_net_paid_inc_tax, ss_net_profit + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: float), _col2 (type: float) + sort order: +++ + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int), KEY._col1 (type: float), KEY._col2 (type: float) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: float), _col2 (type: float), _col0 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.ss_part_orc + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.ss_part_orc + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_orc +PREHOOK: Output: default@ss_part_orc +POSTHOOK: query: insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_orc +POSTHOOK: Output: default@ss_part_orc@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part_orc@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part_orc +POSTHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part_orc +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part_orc +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 88 + totalSize 417 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part_orc +PREHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part_orc +POSTHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +2.1 -2026.3 2452617 +2.99 -11.32 2452617 +85.8 25.61 2452617 +552.96 -1363.84 2452617 +565.92 196.48 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +7412.83 2071.68 2452617 +10022.63 3952.8 2452617 +PREHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part_orc +POSTHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part_orc +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part_orc +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 104 + totalSize 440 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part_orc +PREHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part_orc +POSTHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +0.15 -241.22 2452638 +150.39 -162.12 2452638 +156.67 -4626.56 2452638 +181.03 -207.24 2452638 +267.01 -3266.36 2452638 +317.87 -3775.38 2452638 +1327.08 57.97 2452638 +1413.19 178.08 2452638 +1524.33 494.37 2452638 +1971.35 -488.25 2452638 +4133.98 -775.72 2452638 +4329.49 -4000.51 2452638 +10171.1 660.48 2452638 +PREHOOK: query: explain insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: ss_orc + Statistics: Num rows: 24 Data size: 288 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_net_paid_inc_tax (type: float), ss_net_profit (type: float), ss_sold_date_sk (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Map-reduce partition columns: _col2 (type: int) + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: float), _col1 (type: float), _col2 (type: int) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: float), VALUE._col1 (type: float), VALUE._col2 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.ss_part_orc + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.ss_part_orc + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_orc +PREHOOK: Output: default@ss_part_orc +POSTHOOK: query: insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_orc +POSTHOOK: Output: default@ss_part_orc@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part_orc@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part_orc +POSTHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part_orc +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part_orc +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 88 + totalSize 417 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part_orc +PREHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part_orc +POSTHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +565.92 196.48 2452617 +85.8 25.61 2452617 +7412.83 2071.68 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +552.96 -1363.84 2452617 +2.1 -2026.3 2452617 +10022.63 3952.8 2452617 +2.99 -11.32 2452617 +PREHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part_orc +POSTHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part_orc +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part_orc +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 104 + totalSize 440 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part_orc +PREHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part_orc +POSTHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +4329.49 -4000.51 2452638 +1413.19 178.08 2452638 +150.39 -162.12 2452638 +1524.33 494.37 2452638 +0.15 -241.22 2452638 +267.01 -3266.36 2452638 +181.03 -207.24 2452638 +1971.35 -488.25 2452638 +1327.08 57.97 2452638 +156.67 -4626.56 2452638 +317.87 -3775.38 2452638 +10171.1 660.48 2452638 +4133.98 -775.72 2452638 +PREHOOK: query: drop table ss_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ss_orc +PREHOOK: Output: default@ss_orc +POSTHOOK: query: drop table ss_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ss_orc +POSTHOOK: Output: default@ss_orc +PREHOOK: query: drop table ss_part_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ss_part_orc +PREHOOK: Output: default@ss_part_orc +POSTHOOK: query: drop table ss_part_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ss_part_orc +POSTHOOK: Output: default@ss_part_orc +PREHOOK: query: drop table if exists hive13_dp1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists hive13_dp1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table if not exists hive13_dp1 ( + k1 int, + k2 int +) +PARTITIONED BY(`day` string) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@hive13_dp1 +POSTHOOK: query: create table if not exists hive13_dp1 ( + k1 int, + k2 int +) +PARTITIONED BY(`day` string) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive13_dp1 +PREHOOK: query: explain insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: key, value + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(value) + keys: 'day' (type: string), key (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col2 (type: bigint) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: string), KEY._col1 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(_col1) (type: int), UDFToInteger(_col2) (type: int), _col0 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.hive13_dp1 + + Stage: Stage-0 + Move Operator + tables: + partition: + day + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.hive13_dp1 + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@hive13_dp1 +POSTHOOK: query: insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@hive13_dp1@day=day +POSTHOOK: Lineage: hive13_dp1 PARTITION(day=day).k1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: hive13_dp1 PARTITION(day=day).k2 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select * from hive13_dp1 limit 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@hive13_dp1 +PREHOOK: Input: default@hive13_dp1@day=day +#### A masked pattern was here #### +POSTHOOK: query: select * from hive13_dp1 limit 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@hive13_dp1 +POSTHOOK: Input: default@hive13_dp1@day=day +#### A masked pattern was here #### +0 3 day +10 1 day +100 2 day +103 2 day +104 2 day +PREHOOK: query: explain insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: key, value + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(value) + keys: 'day' (type: string), key (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col2 (type: bigint) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: string), KEY._col1 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(_col1) (type: int), UDFToInteger(_col2) (type: int), _col0 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.hive13_dp1 + + Stage: Stage-0 + Move Operator + tables: + partition: + day + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.hive13_dp1 + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@hive13_dp1 +POSTHOOK: query: insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@hive13_dp1@day=day +POSTHOOK: Lineage: hive13_dp1 PARTITION(day=day).k1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: hive13_dp1 PARTITION(day=day).k2 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select * from hive13_dp1 limit 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@hive13_dp1 +PREHOOK: Input: default@hive13_dp1@day=day +#### A masked pattern was here #### +POSTHOOK: query: select * from hive13_dp1 limit 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@hive13_dp1 +POSTHOOK: Input: default@hive13_dp1@day=day +#### A masked pattern was here #### +0 3 day +10 1 day +100 2 day +103 2 day +104 2 day +PREHOOK: query: drop table hive13_dp1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@hive13_dp1 +PREHOOK: Output: default@hive13_dp1 +POSTHOOK: query: drop table hive13_dp1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@hive13_dp1 +POSTHOOK: Output: default@hive13_dp1 diff --git a/ql/src/test/results/clientpositive/extrapolate_part_stats_partial.q.out b/ql/src/test/results/clientpositive/extrapolate_part_stats_partial.q.out index 3789c092c0dae48590e8ea6a4ff817d7b01dbd80..db5c77ca7379184073ebf61da5f55b7a2ceda478 100644 GIT binary patch delta 241 zcmbPsly%xs)(!DG+oTy&87F^G5}w>}S7h^s4o&9G^|R(OFGu;Ei#DH$E|4Hq`{aJ}sgvI}2v0V%*tGdr1B)oB1^^umvp;u{<^cfC2VbWE diff --git a/ql/src/test/results/clientpositive/groupby4_map.q.out b/ql/src/test/results/clientpositive/groupby4_map.q.out index bbd63ad12c12..89a0778c65c3 100644 --- a/ql/src/test/results/clientpositive/groupby4_map.q.out +++ b/ql/src/test/results/clientpositive/groupby4_map.q.out @@ -44,10 +44,10 @@ STAGE PLANS: Select Operator expressions: UDFToInteger(_col0) (type: int) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/groupby4_map_skew.q.out b/ql/src/test/results/clientpositive/groupby4_map_skew.q.out index 0c15ea64bc46..fc9e7d1995ab 100644 --- a/ql/src/test/results/clientpositive/groupby4_map_skew.q.out +++ b/ql/src/test/results/clientpositive/groupby4_map_skew.q.out @@ -44,10 +44,10 @@ STAGE PLANS: Select Operator expressions: UDFToInteger(_col0) (type: int) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out b/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out index 2b1ec58615c5..8f83ada20df4 100644 --- a/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out +++ b/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out @@ -231,7 +231,7 @@ Partition Parameters: numFiles 1 numRows 0 rawDataSize 0 - totalSize 1381 + totalSize 1342 #### A masked pattern was here #### # Storage Information @@ -302,7 +302,7 @@ Partition Parameters: numFiles 1 numRows 0 rawDataSize 0 - totalSize 722 + totalSize 719 #### A masked pattern was here #### # Storage Information @@ -310,9 +310,9 @@ SerDe Library: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] +Num Buckets: 1 +Bucket Columns: [key] +Sort Columns: [Order(col:key, order:1)] Storage Desc Params: serialization.format 1 PREHOOK: query: DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='12') @@ -344,7 +344,7 @@ Partition Parameters: numFiles 1 numRows 0 rawDataSize 0 - totalSize 741 + totalSize 722 #### A masked pattern was here #### # Storage Information @@ -352,9 +352,9 @@ SerDe Library: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] +Num Buckets: 1 +Bucket Columns: [key] +Sort Columns: [Order(col:key, order:1)] Storage Desc Params: serialization.format 1 PREHOOK: query: CREATE TABLE srcpart_merge_dp LIKE srcpart @@ -468,14 +468,13 @@ GROUP BY key) a POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage - Stage-2 depends on stages: Stage-1 - Stage-8 depends on stages: Stage-2 , consists of Stage-5, Stage-4, Stage-6 - Stage-5 - Stage-0 depends on stages: Stage-5, Stage-4, Stage-7 - Stage-3 depends on stages: Stage-0 + Stage-7 depends on stages: Stage-1 , consists of Stage-4, Stage-3, Stage-5 Stage-4 - Stage-6 - Stage-7 depends on stages: Stage-6 + Stage-0 depends on stages: Stage-4, Stage-3, Stage-6 + Stage-2 depends on stages: Stage-0 + Stage-3 + Stage-5 + Stage-6 depends on stages: Stage-5 STAGE PLANS: Stage: Stage-1 @@ -513,37 +512,17 @@ STAGE PLANS: Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - table: - input format: org.apache.hadoop.mapred.SequenceFileInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat - serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe - - Stage: Stage-2 - Map Reduce - Map Operator Tree: - TableScan - Reduce Output Operator - key expressions: _col2 (type: string) - sort order: + - Map-reduce partition columns: _col2 (type: string) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat - output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat - serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe - name: default.test_table + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe + name: default.test_table - Stage: Stage-8 + Stage: Stage-7 Conditional Operator - Stage: Stage-5 + Stage: Stage-4 Move Operator files: hdfs directory: true @@ -562,24 +541,24 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe name: default.test_table - Stage: Stage-3 + Stage: Stage-2 Stats-Aggr Operator - Stage: Stage-4 + Stage: Stage-3 Merge File Operator Map Operator Tree: RCFile Merge Operator merge level: block input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat - Stage: Stage-6 + Stage: Stage-5 Merge File Operator Map Operator Tree: RCFile Merge Operator merge level: block input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat - Stage: Stage-7 + Stage: Stage-6 Move Operator files: hdfs directory: true @@ -639,7 +618,7 @@ Partition Parameters: numFiles 1 numRows 0 rawDataSize 0 - totalSize 94 + totalSize 115 #### A masked pattern was here #### # Storage Information @@ -678,10 +657,10 @@ Protect Mode: None #### A masked pattern was here #### Partition Parameters: COLUMN_STATS_ACCURATE true - numFiles 1 + numFiles 2 numRows 0 rawDataSize 0 - totalSize 1346 + totalSize 1427 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/input30.q.out b/ql/src/test/results/clientpositive/input30.q.out index e5b67377ed53..ae89ccbe0d50 100644 --- a/ql/src/test/results/clientpositive/input30.q.out +++ b/ql/src/test/results/clientpositive/input30.q.out @@ -57,10 +57,10 @@ STAGE PLANS: Select Operator expressions: UDFToInteger(_col0) (type: int) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/input32.q.out b/ql/src/test/results/clientpositive/input32.q.out index 1cfc1892bba9..eba95189ec48 100644 --- a/ql/src/test/results/clientpositive/input32.q.out +++ b/ql/src/test/results/clientpositive/input32.q.out @@ -54,10 +54,10 @@ STAGE PLANS: Select Operator expressions: UDFToInteger(_col0) (type: int) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/insert_into6.q.out b/ql/src/test/results/clientpositive/insert_into6.q.out index 53f8bac0bf51..388b2005606a 100644 --- a/ql/src/test/results/clientpositive/insert_into6.q.out +++ b/ql/src/test/results/clientpositive/insert_into6.q.out @@ -132,8 +132,13 @@ POSTHOOK: query: EXPLAIN INSERT INTO TABLE insert_into6b PARTITION (ds) POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage - Stage-0 depends on stages: Stage-1 + Stage-7 depends on stages: Stage-1 , consists of Stage-4, Stage-3, Stage-5 + Stage-4 + Stage-0 depends on stages: Stage-4, Stage-3, Stage-6 Stage-2 depends on stages: Stage-0 + Stage-3 + Stage-5 + Stage-6 depends on stages: Stage-5 STAGE PLANS: Stage: Stage-1 @@ -146,23 +151,23 @@ STAGE PLANS: expressions: key (type: int), value (type: string), ds (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 250 Data size: 2680 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string) - sort order: + - Map-reduce partition columns: _col2 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 250 Data size: 2680 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 250 Data size: 2680 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 250 Data size: 2680 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.insert_into6b + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.insert_into6b + + Stage: Stage-7 + Conditional Operator + + Stage: Stage-4 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### Stage: Stage-0 Move Operator @@ -179,6 +184,36 @@ STAGE PLANS: Stage: Stage-2 Stats-Aggr Operator + Stage: Stage-3 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.insert_into6b + + Stage: Stage-5 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.insert_into6b + + Stage: Stage-6 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + PREHOOK: query: INSERT INTO TABLE insert_into6b PARTITION (ds) SELECT * FROM insert_into6a PREHOOK: type: QUERY PREHOOK: Input: default@insert_into6a diff --git a/ql/src/test/results/clientpositive/load_dyn_part1.q.out b/ql/src/test/results/clientpositive/load_dyn_part1.q.out index 4c9ee05d3209..e7dace5e911b 100644 --- a/ql/src/test/results/clientpositive/load_dyn_part1.q.out +++ b/ql/src/test/results/clientpositive/load_dyn_part1.q.out @@ -58,11 +58,20 @@ insert overwrite table nzhang_part2 partition(ds='2008-12-31', hr) select key, v POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-2 is a root stage - Stage-0 depends on stages: Stage-2 + Stage-8 depends on stages: Stage-2 , consists of Stage-5, Stage-4, Stage-6 + Stage-5 + Stage-0 depends on stages: Stage-5, Stage-4, Stage-7 Stage-3 depends on stages: Stage-0 - Stage-4 depends on stages: Stage-2 - Stage-1 depends on stages: Stage-4 - Stage-5 depends on stages: Stage-1 + Stage-4 + Stage-6 + Stage-7 depends on stages: Stage-6 + Stage-14 depends on stages: Stage-2 , consists of Stage-11, Stage-10, Stage-12 + Stage-11 + Stage-1 depends on stages: Stage-11, Stage-10, Stage-13 + Stage-9 depends on stages: Stage-1 + Stage-10 + Stage-12 + Stage-13 depends on stages: Stage-12 STAGE PLANS: Stage: Stage-2 @@ -78,12 +87,14 @@ STAGE PLANS: expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string), _col3 (type: string) - sort order: ++ - Map-reduce partition columns: _col2 (type: string), _col3 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string) + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part1 Filter Operator predicate: (ds > '2008-04-08') (type: boolean) Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE @@ -93,21 +104,21 @@ STAGE PLANS: Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false + Statistics: Num rows: 666 Data size: 7075 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.lazybinary.LazyBinarySerDe - Reduce Operator Tree: - Extract - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part1 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part2 + + Stage: Stage-8 + Conditional Operator + + Stage: Stage-5 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### Stage: Stage-0 Move Operator @@ -129,23 +140,40 @@ STAGE PLANS: Map Reduce Map Operator Tree: TableScan - Reduce Output Operator - key expressions: _col2 (type: string) - sort order: + - Map-reduce partition columns: _col2 (type: string) - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part2 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part1 + + Stage: Stage-6 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part1 + + Stage: Stage-7 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-14 + Conditional Operator + + Stage: Stage-11 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### Stage: Stage-1 Move Operator @@ -160,9 +188,39 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.nzhang_part2 - Stage: Stage-5 + Stage: Stage-9 Stats-Aggr Operator + Stage: Stage-10 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part2 + + Stage: Stage-12 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part2 + + Stage: Stage-13 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + PREHOOK: query: from srcpart insert overwrite table nzhang_part1 partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08' insert overwrite table nzhang_part2 partition(ds='2008-12-31', hr) select key, value, hr where ds > '2008-04-08' diff --git a/ql/src/test/results/clientpositive/load_dyn_part10.q.out b/ql/src/test/results/clientpositive/load_dyn_part10.q.out index d05e4f165d28..ca388b97f8f8 100644 --- a/ql/src/test/results/clientpositive/load_dyn_part10.q.out +++ b/ql/src/test/results/clientpositive/load_dyn_part10.q.out @@ -62,23 +62,14 @@ STAGE PLANS: expressions: key (type: string), value (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string) - sort order: + - Map-reduce partition columns: _col2 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part10 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part10 Stage: Stage-0 Move Operator diff --git a/ql/src/test/results/clientpositive/load_dyn_part14.q.out b/ql/src/test/results/clientpositive/load_dyn_part14.q.out index 37ae8ded9b41..118d198fa4b2 100644 --- a/ql/src/test/results/clientpositive/load_dyn_part14.q.out +++ b/ql/src/test/results/clientpositive/load_dyn_part14.q.out @@ -55,11 +55,16 @@ select key, value from ( POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage - Stage-2 depends on stages: Stage-1, Stage-4, Stage-5 - Stage-0 depends on stages: Stage-2 + Stage-2 depends on stages: Stage-1, Stage-9, Stage-10 + Stage-8 depends on stages: Stage-2 , consists of Stage-5, Stage-4, Stage-6 + Stage-5 + Stage-0 depends on stages: Stage-5, Stage-4, Stage-7 Stage-3 depends on stages: Stage-0 - Stage-4 is a root stage - Stage-5 is a root stage + Stage-4 + Stage-6 + Stage-7 depends on stages: Stage-6 + Stage-9 is a root stage + Stage-10 is a root stage STAGE PLANS: Stage: Stage-1 @@ -104,12 +109,14 @@ STAGE PLANS: expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE - Reduce Output Operator - key expressions: _col1 (type: string) - sort order: + - Map-reduce partition columns: _col1 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE - value expressions: _col0 (type: string), _col1 (type: string) + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part14 TableScan Union Statistics: Num rows: 6 Data size: 1022 Basic stats: COMPLETE Column stats: COMPLETE @@ -117,12 +124,14 @@ STAGE PLANS: expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE - Reduce Output Operator - key expressions: _col1 (type: string) - sort order: + - Map-reduce partition columns: _col1 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE - value expressions: _col0 (type: string), _col1 (type: string) + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part14 TableScan Union Statistics: Num rows: 6 Data size: 1022 Basic stats: COMPLETE Column stats: COMPLETE @@ -130,23 +139,23 @@ STAGE PLANS: expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE - Reduce Output Operator - key expressions: _col1 (type: string) - sort order: + - Map-reduce partition columns: _col1 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE - value expressions: _col0 (type: string), _col1 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE - File Output Operator - compressed: false - Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part14 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part14 + + Stage: Stage-8 + Conditional Operator + + Stage: Stage-5 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### Stage: Stage-0 Move Operator @@ -164,6 +173,36 @@ STAGE PLANS: Stats-Aggr Operator Stage: Stage-4 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part14 + + Stage: Stage-6 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part14 + + Stage: Stage-7 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-9 Map Reduce Map Operator Tree: TableScan @@ -195,7 +234,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe - Stage: Stage-5 + Stage: Stage-10 Map Reduce Map Operator Tree: TableScan diff --git a/ql/src/test/results/clientpositive/load_dyn_part3.q.out b/ql/src/test/results/clientpositive/load_dyn_part3.q.out index 77ba8aa241a2..3242c3d4322e 100644 --- a/ql/src/test/results/clientpositive/load_dyn_part3.q.out +++ b/ql/src/test/results/clientpositive/load_dyn_part3.q.out @@ -60,23 +60,14 @@ STAGE PLANS: expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string), _col3 (type: string) - sort order: ++ - Map-reduce partition columns: _col2 (type: string), _col3 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part3 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part3 Stage: Stage-0 Move Operator diff --git a/ql/src/test/results/clientpositive/load_dyn_part4.q.out b/ql/src/test/results/clientpositive/load_dyn_part4.q.out index 80955e36f8ee..d24875f000b7 100644 --- a/ql/src/test/results/clientpositive/load_dyn_part4.q.out +++ b/ql/src/test/results/clientpositive/load_dyn_part4.q.out @@ -70,23 +70,14 @@ STAGE PLANS: expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string), _col3 (type: string) - sort order: ++ - Map-reduce partition columns: _col2 (type: string), _col3 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part4 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part4 Stage: Stage-0 Move Operator diff --git a/ql/src/test/results/clientpositive/load_dyn_part5.q.out b/ql/src/test/results/clientpositive/load_dyn_part5.q.out index 0bcc4326f630..e4bc74262478 100644 --- a/ql/src/test/results/clientpositive/load_dyn_part5.q.out +++ b/ql/src/test/results/clientpositive/load_dyn_part5.q.out @@ -43,23 +43,14 @@ STAGE PLANS: expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col1 (type: string) - sort order: + - Map-reduce partition columns: _col1 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part5 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part5 Stage: Stage-0 Move Operator diff --git a/ql/src/test/results/clientpositive/load_dyn_part8.q.out b/ql/src/test/results/clientpositive/load_dyn_part8.q.out index a542fa8a8dc9960a58b33cc22ff8baf6e89b5a2d..dc55eec3be2dc5839b0852b0544add781db795ca 100644 GIT binary patch delta 453 zcmbPzm8D}3%Z5bW$!)ySlWTanCMWVrZ$8E=#60<~NYvy#mPV8HZP+H~i)v2ha|xcD zVr2m4&k%K)>re_)|PW~XqHF<+I`{WC<(qOR%*4&c~l+>Z( z9Fy0ZdVs|feDxu;jW(E`ASX0=j*U8){lPaBOe=`2kUjPt%QoPOkN=4IQfD; z3s9V6^15K@$rl_1CTrNqOnxUWJh|RqaPk3FmdWB0a+{wB1v5=v?}hLOi?{XUe5Tl?JH-<#7?X_u~w&ToH9$~@C zxG+Zi;>v{~F)=1aNxC%=)^1FU#vS+vXmoFkGsO@J#jqgG;?Crplka@z%c#-)E3a^lBc>^qDWx&)X$jtD^MuVwGEk5;l2huu#NtFzB}F;Iza&6R917U zrbRTNQvLvv81i1lg0&vsopnadX&gTtu4{LxSYmsv2{o-nYDWJthJz4VQj5A} diff --git a/ql/src/test/results/clientpositive/load_dyn_part9.q.out b/ql/src/test/results/clientpositive/load_dyn_part9.q.out index d782880565f4..300f41e22e96 100644 --- a/ql/src/test/results/clientpositive/load_dyn_part9.q.out +++ b/ql/src/test/results/clientpositive/load_dyn_part9.q.out @@ -62,23 +62,14 @@ STAGE PLANS: expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string), _col3 (type: string) - sort order: ++ - Map-reduce partition columns: _col2 (type: string), _col3 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part9 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part9 Stage: Stage-0 Move Operator diff --git a/ql/src/test/results/clientpositive/merge3.q.out b/ql/src/test/results/clientpositive/merge3.q.out index 1701be10b215bc8870875ea666df800e93fd79df..a0dc3a8fe796ce9797dff200aacb442096e71c25 100644 GIT binary patch delta 232 zcmex5nQL=D*M^I8C;MtDPcmScd~SoxWcS^|n=1v+FixMagHdJDUe3u6)<{qPFqx5U za>Eg27=vT7{0JZ2Vbx~4n< E0K>Loga7~l delta 170 zcmdno&-HaO*M^I8r^`)eR2RrjtyD;@C@4xTF3!x)E4G@RFoRKzw>ZD3L?OQ@CAG*( zL3?}PbVgm '2008-04-08') (type: boolean) Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE @@ -83,21 +94,21 @@ STAGE PLANS: Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false + Statistics: Num rows: 666 Data size: 7075 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.lazybinary.LazyBinarySerDe - Reduce Operator Tree: - Extract - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part1 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part2 + + Stage: Stage-8 + Conditional Operator + + Stage: Stage-5 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### Stage: Stage-0 Move Operator @@ -119,23 +130,40 @@ STAGE PLANS: Map Reduce Map Operator Tree: TableScan - Reduce Output Operator - key expressions: _col2 (type: string) - sort order: + - Map-reduce partition columns: _col2 (type: string) - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part2 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part1 + + Stage: Stage-6 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part1 + + Stage: Stage-7 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-14 + Conditional Operator + + Stage: Stage-11 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### Stage: Stage-1 Move Operator @@ -150,9 +178,39 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.nzhang_part2 - Stage: Stage-5 + Stage: Stage-9 Stats-Aggr Operator + Stage: Stage-10 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part2 + + Stage: Stage-12 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part2 + + Stage: Stage-13 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + PREHOOK: query: from srcpart insert overwrite table nzhang_part1 partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08' insert overwrite table nzhang_part2 partition(ds='2008-12-31', hr) select key, value, hr where ds > '2008-04-08' diff --git a/ql/src/test/results/clientpositive/stats_empty_dyn_part.q.out b/ql/src/test/results/clientpositive/stats_empty_dyn_part.q.out index 27a3742a3845..982baab70574 100644 --- a/ql/src/test/results/clientpositive/stats_empty_dyn_part.q.out +++ b/ql/src/test/results/clientpositive/stats_empty_dyn_part.q.out @@ -20,8 +20,13 @@ POSTHOOK: query: explain insert overwrite table tmptable partition (part) select POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage - Stage-0 depends on stages: Stage-1 + Stage-7 depends on stages: Stage-1 , consists of Stage-4, Stage-3, Stage-5 + Stage-4 + Stage-0 depends on stages: Stage-4, Stage-3, Stage-6 Stage-2 depends on stages: Stage-0 + Stage-3 + Stage-5 + Stage-6 depends on stages: Stage-5 STAGE PLANS: Stage: Stage-1 @@ -37,23 +42,23 @@ STAGE PLANS: expressions: 'no_such_value' (type: string), value (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col1 (type: string) - sort order: + - Map-reduce partition columns: _col1 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.tmptable + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.tmptable + + Stage: Stage-7 + Conditional Operator + + Stage: Stage-4 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### Stage: Stage-0 Move Operator @@ -70,6 +75,36 @@ STAGE PLANS: Stage: Stage-2 Stats-Aggr Operator + Stage: Stage-3 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.tmptable + + Stage: Stage-5 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.tmptable + + Stage: Stage-6 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + PREHOOK: query: insert overwrite table tmptable partition (part) select key, value from src where key = 'no_such_value' PREHOOK: type: QUERY PREHOOK: Input: default@src diff --git a/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_16.q.out b/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_16.q.out index 03507dd06396..b32ac060d36d 100644 --- a/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_16.q.out +++ b/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_16.q.out @@ -232,6 +232,16 @@ POSTHOOK: Input: default@bucket_small@pri=2 0 val_0 val_0 day1 1 0 val_0 val_0 day1 1 0 val_0 val_0 day1 1 +103 val_103 val_103 day1 1 +103 val_103 val_103 day1 1 +103 val_103 val_103 day1 1 +103 val_103 val_103 day1 1 +374 val_374 val_374 day1 1 +374 val_374 val_374 day1 1 +172 val_172 val_172 day1 1 +172 val_172 val_172 day1 1 +172 val_172 val_172 day1 1 +172 val_172 val_172 day1 1 169 val_169 val_169 day1 1 169 val_169 val_169 day1 1 169 val_169 val_169 day1 1 @@ -240,13 +250,3 @@ POSTHOOK: Input: default@bucket_small@pri=2 169 val_169 val_169 day1 1 169 val_169 val_169 day1 1 169 val_169 val_169 day1 1 -374 val_374 val_374 day1 1 -374 val_374 val_374 day1 1 -172 val_172 val_172 day1 1 -172 val_172 val_172 day1 1 -172 val_172 val_172 day1 1 -172 val_172 val_172 day1 1 -103 val_103 val_103 day1 1 -103 val_103 val_103 day1 1 -103 val_103 val_103 day1 1 -103 val_103 val_103 day1 1 diff --git a/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out b/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out index 90f8753687b2..c5149b28b42c 100644 --- a/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out @@ -84,3 +84,5 @@ POSTHOOK: Input: default@acid_dap POSTHOOK: Input: default@acid_dap@ds=today POSTHOOK: Input: default@acid_dap@ds=tomorrow #### A masked pattern was here #### +-1071480828 aw724t8c5558x2xneC624 today +-1072076362 2uLyD28144vklju213J1mr today diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out index ed42e670d436..d5202172bb02 100644 --- a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out @@ -352,11 +352,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string) sort order: ++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Execution mode: vectorized Reducer 2 Reduce Operator Tree: @@ -420,11 +420,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Execution mode: vectorized Reducer 2 Reduce Operator Tree: @@ -727,11 +727,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string) sort order: ++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Execution mode: vectorized Reducer 2 Reduce Operator Tree: @@ -795,11 +795,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Execution mode: vectorized Reducer 2 Reduce Operator Tree: @@ -2160,11 +2160,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 1048 Data size: 310873 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Execution mode: vectorized Reducer 2 Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out index 5ff3e49a4e22..8c930950ab44 100644 --- a/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out @@ -291,11 +291,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string) sort order: ++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Reducer 2 Reduce Operator Tree: Extract @@ -357,11 +357,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Reducer 2 Reduce Operator Tree: Extract @@ -644,11 +644,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string) sort order: ++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Reducer 2 Reduce Operator Tree: Extract @@ -710,11 +710,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Reducer 2 Reduce Operator Tree: Extract @@ -2058,11 +2058,11 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2, _col3, _col4 Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col4 (type: tinyint), -1 (type: int), _col3 (type: float) + key expressions: _col4 (type: tinyint), '_bucket_number' (type: string), _col3 (type: float) sort order: +++ Map-reduce partition columns: _col4 (type: tinyint) Statistics: Num rows: 4442 Data size: 106611 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint) + value expressions: _col0 (type: smallint), _col1 (type: int), _col2 (type: bigint), _col3 (type: float), _col4 (type: tinyint), '_bucket_number' (type: string) Reducer 2 Reduce Operator Tree: Extract diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization2.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization2.q.out new file mode 100644 index 000000000000..52bef6f2250a --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization2.q.out @@ -0,0 +1,1866 @@ +PREHOOK: query: drop table ss +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table ss +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table ss_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table ss_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table ss_part +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table ss_part +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table ss_part_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table ss_part_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table ss ( +ss_sold_date_sk int, +ss_net_paid_inc_tax float, +ss_net_profit float) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ss +POSTHOOK: query: create table ss ( +ss_sold_date_sk int, +ss_net_paid_inc_tax float, +ss_net_profit float) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ss +PREHOOK: query: create table ss_part ( +ss_net_paid_inc_tax float, +ss_net_profit float) +partitioned by (ss_sold_date_sk int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ss_part +POSTHOOK: query: create table ss_part ( +ss_net_paid_inc_tax float, +ss_net_profit float) +partitioned by (ss_sold_date_sk int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ss_part +PREHOOK: query: load data local inpath '../../data/files/dynpart_test.txt' overwrite into table ss +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@ss +POSTHOOK: query: load data local inpath '../../data/files/dynpart_test.txt' overwrite into table ss +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@ss +PREHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: ss + Statistics: Num rows: 46 Data size: 553 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + outputColumnNames: ss_sold_date_sk, ss_net_paid_inc_tax, ss_net_profit + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: float), _col2 (type: float) + sort order: +++ + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int), KEY._col1 (type: float), KEY._col2 (type: float) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: float), _col2 (type: float), _col0 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss_part +POSTHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 151 + totalSize 162 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +2.1 -2026.3 2452617 +2.99 -11.32 2452617 +85.8 25.61 2452617 +552.96 -1363.84 2452617 +565.92 196.48 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +7412.83 2071.68 2452617 +10022.63 3952.8 2452617 +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 186 + totalSize 199 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +0.15 -241.22 2452638 +150.39 -162.12 2452638 +156.67 -4626.56 2452638 +181.03 -207.24 2452638 +267.01 -3266.36 2452638 +317.87 -3775.38 2452638 +1327.08 57.97 2452638 +1413.19 178.08 2452638 +1524.33 494.37 2452638 +1971.35 -488.25 2452638 +4133.98 -775.72 2452638 +4329.49 -4000.51 2452638 +10171.1 660.48 2452638 +PREHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: ss + Statistics: Num rows: 46 Data size: 553 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_net_paid_inc_tax (type: float), ss_net_profit (type: float), ss_sold_date_sk (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col2 (type: int) + sort order: + + Map-reduce partition columns: _col2 (type: int) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: float), _col1 (type: float), _col2 (type: int) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: float), VALUE._col1 (type: float), VALUE._col2 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss_part +POSTHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 151 + totalSize 162 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +10022.63 3952.8 2452617 +2.99 -11.32 2452617 +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +565.92 196.48 2452617 +85.8 25.61 2452617 +7412.83 2071.68 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +552.96 -1363.84 2452617 +2.1 -2026.3 2452617 +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 186 + totalSize 199 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +4329.49 -4000.51 2452638 +1413.19 178.08 2452638 +150.39 -162.12 2452638 +1524.33 494.37 2452638 +0.15 -241.22 2452638 +267.01 -3266.36 2452638 +181.03 -207.24 2452638 +1971.35 -488.25 2452638 +1327.08 57.97 2452638 +156.67 -4626.56 2452638 +317.87 -3775.38 2452638 +10171.1 660.48 2452638 +4133.98 -775.72 2452638 +PREHOOK: query: -- SORT DYNAMIC PARTITION DISABLED + +explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: -- SORT DYNAMIC PARTITION DISABLED + +explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: ss + Statistics: Num rows: 46 Data size: 553 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + outputColumnNames: ss_sold_date_sk, ss_net_paid_inc_tax, ss_net_profit + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: float), _col2 (type: float) + sort order: +++ + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int), KEY._col1 (type: float), KEY._col2 (type: float) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: float), _col2 (type: float), _col0 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss_part +POSTHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 151 + totalSize 162 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +2.1 -2026.3 2452617 +2.99 -11.32 2452617 +85.8 25.61 2452617 +552.96 -1363.84 2452617 +565.92 196.48 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +7412.83 2071.68 2452617 +10022.63 3952.8 2452617 +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 186 + totalSize 199 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +0.15 -241.22 2452638 +150.39 -162.12 2452638 +156.67 -4626.56 2452638 +181.03 -207.24 2452638 +267.01 -3266.36 2452638 +317.87 -3775.38 2452638 +1327.08 57.97 2452638 +1413.19 178.08 2452638 +1524.33 494.37 2452638 +1971.35 -488.25 2452638 +4133.98 -775.72 2452638 +4329.49 -4000.51 2452638 +10171.1 660.48 2452638 +PREHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: ss + Statistics: Num rows: 46 Data size: 553 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_net_paid_inc_tax (type: float), ss_net_profit (type: float), ss_sold_date_sk (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Map-reduce partition columns: _col2 (type: int) + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: float), _col1 (type: float), _col2 (type: int) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: float), VALUE._col1 (type: float), VALUE._col2 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.ss_part + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss_part +POSTHOOK: query: insert overwrite table ss_part partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 151 + totalSize 162 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +565.92 196.48 2452617 +85.8 25.61 2452617 +7412.83 2071.68 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +552.96 -1363.84 2452617 +2.1 -2026.3 2452617 +10022.63 3952.8 2452617 +2.99 -11.32 2452617 +PREHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part +POSTHOOK: query: desc formatted ss_part partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 186 + totalSize 199 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part +PREHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part +POSTHOOK: Input: default@ss_part@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +4329.49 -4000.51 2452638 +1413.19 178.08 2452638 +150.39 -162.12 2452638 +1524.33 494.37 2452638 +0.15 -241.22 2452638 +267.01 -3266.36 2452638 +181.03 -207.24 2452638 +1971.35 -488.25 2452638 +1327.08 57.97 2452638 +156.67 -4626.56 2452638 +317.87 -3775.38 2452638 +10171.1 660.48 2452638 +4133.98 -775.72 2452638 +PREHOOK: query: -- VECTORIZATION IS ENABLED + +create table ss_orc ( +ss_sold_date_sk int, +ss_net_paid_inc_tax float, +ss_net_profit float) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ss_orc +POSTHOOK: query: -- VECTORIZATION IS ENABLED + +create table ss_orc ( +ss_sold_date_sk int, +ss_net_paid_inc_tax float, +ss_net_profit float) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ss_orc +PREHOOK: query: create table ss_part_orc ( +ss_net_paid_inc_tax float, +ss_net_profit float) +partitioned by (ss_sold_date_sk int) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ss_part_orc +POSTHOOK: query: create table ss_part_orc ( +ss_net_paid_inc_tax float, +ss_net_profit float) +partitioned by (ss_sold_date_sk int) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ss_part_orc +PREHOOK: query: insert overwrite table ss_orc select * from ss +PREHOOK: type: QUERY +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss_orc +POSTHOOK: query: insert overwrite table ss_orc select * from ss +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss_orc +POSTHOOK: Lineage: ss_orc.ss_net_paid_inc_tax SIMPLE [(ss)ss.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_orc.ss_net_profit SIMPLE [(ss)ss.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_orc.ss_sold_date_sk SIMPLE [(ss)ss.FieldSchema(name:ss_sold_date_sk, type:int, comment:null), ] +PREHOOK: query: drop table ss +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ss +PREHOOK: Output: default@ss +POSTHOOK: query: drop table ss +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ss +POSTHOOK: Output: default@ss +PREHOOK: query: drop table ss_part +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ss_part +PREHOOK: Output: default@ss_part +POSTHOOK: query: drop table ss_part +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ss_part +POSTHOOK: Output: default@ss_part +PREHOOK: query: explain insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: ss_orc + Statistics: Num rows: 24 Data size: 288 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + outputColumnNames: ss_sold_date_sk, ss_net_paid_inc_tax, ss_net_profit + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ss_sold_date_sk (type: int), ss_net_paid_inc_tax (type: float), ss_net_profit (type: float) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: float), _col2 (type: float) + sort order: +++ + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int), KEY._col1 (type: float), KEY._col2 (type: float) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: float), _col2 (type: float), _col0 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.ss_part_orc + Execution mode: vectorized + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.ss_part_orc + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_orc +PREHOOK: Output: default@ss_part_orc +POSTHOOK: query: insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + group by ss_sold_date_sk, + ss_net_paid_inc_tax, + ss_net_profit + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_orc +POSTHOOK: Output: default@ss_part_orc@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part_orc@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part_orc +POSTHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part_orc +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part_orc +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 88 + totalSize 417 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part_orc +PREHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part_orc +POSTHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +2.1 -2026.3 2452617 +2.99 -11.32 2452617 +85.8 25.61 2452617 +552.96 -1363.84 2452617 +565.92 196.48 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +7412.83 2071.68 2452617 +10022.63 3952.8 2452617 +PREHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part_orc +POSTHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part_orc +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part_orc +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 104 + totalSize 440 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part_orc +PREHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part_orc +POSTHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +0.15 -241.22 2452638 +150.39 -162.12 2452638 +156.67 -4626.56 2452638 +181.03 -207.24 2452638 +267.01 -3266.36 2452638 +317.87 -3775.38 2452638 +1327.08 57.97 2452638 +1413.19 178.08 2452638 +1524.33 494.37 2452638 +1971.35 -488.25 2452638 +4133.98 -775.72 2452638 +4329.49 -4000.51 2452638 +10171.1 660.48 2452638 +PREHOOK: query: explain insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: ss_orc + Statistics: Num rows: 24 Data size: 288 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ss_sold_date_sk >= 2452617) and (ss_sold_date_sk <= 2452638)) (type: boolean) + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_net_paid_inc_tax (type: float), ss_net_profit (type: float), ss_sold_date_sk (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Map-reduce partition columns: _col2 (type: int) + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: float), _col1 (type: float), _col2 (type: int) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: float), VALUE._col1 (type: float), VALUE._col2 (type: int) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 24 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.ss_part_orc + Execution mode: vectorized + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + ss_sold_date_sk + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.ss_part_orc + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_orc +PREHOOK: Output: default@ss_part_orc +POSTHOOK: query: insert overwrite table ss_part_orc partition (ss_sold_date_sk) +select ss_net_paid_inc_tax, + ss_net_profit, + ss_sold_date_sk + from ss_orc + where ss_sold_date_sk>=2452617 and ss_sold_date_sk<=2452638 + distribute by ss_sold_date_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_orc +POSTHOOK: Output: default@ss_part_orc@ss_sold_date_sk=2452617 +POSTHOOK: Output: default@ss_part_orc@ss_sold_date_sk=2452638 +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452617).ss_net_paid_inc_tax SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452617).ss_net_profit SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452638).ss_net_paid_inc_tax SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: ss_part_orc PARTITION(ss_sold_date_sk=2452638).ss_net_profit SIMPLE [(ss_orc)ss_orc.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +PREHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452617) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part_orc +POSTHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452617) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part_orc +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452617] +Database: default +Table: ss_part_orc +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 11 + rawDataSize 88 + totalSize 417 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452617 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part_orc +PREHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452617 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part_orc +POSTHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452617 +#### A masked pattern was here #### +3423.95 -3164.07 2452617 +5362.01 -600.28 2452617 +565.92 196.48 2452617 +85.8 25.61 2452617 +7412.83 2071.68 2452617 +879.07 -2185.76 2452617 +1765.07 -4648.8 2452617 +552.96 -1363.84 2452617 +2.1 -2026.3 2452617 +10022.63 3952.8 2452617 +2.99 -11.32 2452617 +PREHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452638) +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ss_part_orc +POSTHOOK: query: desc formatted ss_part_orc partition(ss_sold_date_sk=2452638) +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ss_part_orc +# col_name data_type comment + +ss_net_paid_inc_tax float +ss_net_profit float + +# Partition Information +# col_name data_type comment + +ss_sold_date_sk int + +# Detailed Partition Information +Partition Value: [2452638] +Database: default +Table: ss_part_orc +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 13 + rawDataSize 104 + totalSize 440 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452638 +PREHOOK: type: QUERY +PREHOOK: Input: default@ss_part_orc +PREHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +POSTHOOK: query: select * from ss_part_orc where ss_sold_date_sk=2452638 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ss_part_orc +POSTHOOK: Input: default@ss_part_orc@ss_sold_date_sk=2452638 +#### A masked pattern was here #### +4329.49 -4000.51 2452638 +1413.19 178.08 2452638 +150.39 -162.12 2452638 +1524.33 494.37 2452638 +0.15 -241.22 2452638 +267.01 -3266.36 2452638 +181.03 -207.24 2452638 +1971.35 -488.25 2452638 +1327.08 57.97 2452638 +156.67 -4626.56 2452638 +317.87 -3775.38 2452638 +10171.1 660.48 2452638 +4133.98 -775.72 2452638 +PREHOOK: query: drop table ss_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ss_orc +PREHOOK: Output: default@ss_orc +POSTHOOK: query: drop table ss_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ss_orc +POSTHOOK: Output: default@ss_orc +PREHOOK: query: drop table ss_part_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ss_part_orc +PREHOOK: Output: default@ss_part_orc +POSTHOOK: query: drop table ss_part_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ss_part_orc +POSTHOOK: Output: default@ss_part_orc +PREHOOK: query: drop table if exists hive13_dp1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists hive13_dp1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table if not exists hive13_dp1 ( + k1 int, + k2 int +) +PARTITIONED BY(`day` string) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@hive13_dp1 +POSTHOOK: query: create table if not exists hive13_dp1 ( + k1 int, + k2 int +) +PARTITIONED BY(`day` string) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive13_dp1 +PREHOOK: query: explain insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: key, value + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(value) + keys: 'day' (type: string), key (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col2 (type: bigint) + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: string), KEY._col1 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(_col1) (type: int), UDFToInteger(_col2) (type: int), _col0 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.hive13_dp1 + Execution mode: vectorized + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + day + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.hive13_dp1 + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@hive13_dp1 +POSTHOOK: query: insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@hive13_dp1@day=day +POSTHOOK: Lineage: hive13_dp1 PARTITION(day=day).k1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: hive13_dp1 PARTITION(day=day).k2 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select * from hive13_dp1 limit 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@hive13_dp1 +PREHOOK: Input: default@hive13_dp1@day=day +#### A masked pattern was here #### +POSTHOOK: query: select * from hive13_dp1 limit 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@hive13_dp1 +POSTHOOK: Input: default@hive13_dp1@day=day +#### A masked pattern was here #### +0 3 day +10 1 day +100 2 day +103 2 day +104 2 day +PREHOOK: query: explain insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +PREHOOK: type: QUERY +POSTHOOK: query: explain insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: key, value + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(value) + keys: 'day' (type: string), key (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col2 (type: bigint) + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: string), KEY._col1 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(_col1) (type: int), UDFToInteger(_col2) (type: int), _col0 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.hive13_dp1 + Execution mode: vectorized + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + day + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.hive13_dp1 + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@hive13_dp1 +POSTHOOK: query: insert overwrite table `hive13_dp1` partition(`day`) +select + key k1, + count(value) k2, + "day" `day` +from src +group by "day", key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@hive13_dp1@day=day +POSTHOOK: Lineage: hive13_dp1 PARTITION(day=day).k1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: hive13_dp1 PARTITION(day=day).k2 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select * from hive13_dp1 limit 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@hive13_dp1 +PREHOOK: Input: default@hive13_dp1@day=day +#### A masked pattern was here #### +POSTHOOK: query: select * from hive13_dp1 limit 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@hive13_dp1 +POSTHOOK: Input: default@hive13_dp1@day=day +#### A masked pattern was here #### +0 3 day +10 1 day +100 2 day +103 2 day +104 2 day +PREHOOK: query: drop table hive13_dp1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@hive13_dp1 +PREHOOK: Output: default@hive13_dp1 +POSTHOOK: query: drop table hive13_dp1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@hive13_dp1 +POSTHOOK: Output: default@hive13_dp1 diff --git a/ql/src/test/results/clientpositive/tez/load_dyn_part1.q.out b/ql/src/test/results/clientpositive/tez/load_dyn_part1.q.out index 8ff926bad188..dcf011e67eee 100644 --- a/ql/src/test/results/clientpositive/tez/load_dyn_part1.q.out +++ b/ql/src/test/results/clientpositive/tez/load_dyn_part1.q.out @@ -67,9 +67,6 @@ STAGE DEPENDENCIES: STAGE PLANS: Stage: Stage-2 Tez - Edges: - Reducer 2 <- Map 1 (SIMPLE_EDGE) - Reducer 3 <- Map 1 (SIMPLE_EDGE) #### A masked pattern was here #### Vertices: Map 1 @@ -84,12 +81,14 @@ STAGE PLANS: expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string), _col3 (type: string) - sort order: ++ - Map-reduce partition columns: _col2 (type: string), _col3 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string) + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part1 Filter Operator predicate: (ds > '2008-04-08') (type: boolean) Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE @@ -97,36 +96,14 @@ STAGE PLANS: expressions: key (type: string), value (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string) - sort order: + - Map-reduce partition columns: _col2 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) - Reducer 2 - Reduce Operator Tree: - Extract - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part1 - Reducer 3 - Reduce Operator Tree: - Extract - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 666 Data size: 7075 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part2 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part2 Stage: Stage-3 Dependency Collection diff --git a/ql/src/test/results/clientpositive/tez/load_dyn_part3.q.out b/ql/src/test/results/clientpositive/tez/load_dyn_part3.q.out index 9745dea32503..8f95a76262dd 100644 --- a/ql/src/test/results/clientpositive/tez/load_dyn_part3.q.out +++ b/ql/src/test/results/clientpositive/tez/load_dyn_part3.q.out @@ -53,8 +53,6 @@ STAGE DEPENDENCIES: STAGE PLANS: Stage: Stage-1 Tez - Edges: - Reducer 2 <- Map 1 (SIMPLE_EDGE) #### A masked pattern was here #### Vertices: Map 1 @@ -66,24 +64,14 @@ STAGE PLANS: expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string), _col3 (type: string) - sort order: ++ - Map-reduce partition columns: _col2 (type: string), _col3 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string) - Reducer 2 - Reduce Operator Tree: - Extract - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.nzhang_part3 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.nzhang_part3 Stage: Stage-2 Dependency Collection diff --git a/ql/src/test/results/clientpositive/tez/orc_analyze.q.out b/ql/src/test/results/clientpositive/tez/orc_analyze.q.out index af79e265f281..e718b297ce11 100644 --- a/ql/src/test/results/clientpositive/tez/orc_analyze.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_analyze.q.out @@ -624,10 +624,10 @@ Protect Mode: None #### A masked pattern was here #### Partition Parameters: COLUMN_STATS_ACCURATE true - numFiles 4 + numFiles 1 numRows 50 - rawDataSize 21980 - totalSize 4959 + rawDataSize 21950 + totalSize 2024 #### A masked pattern was here #### # Storage Information @@ -669,10 +669,10 @@ Protect Mode: None #### A masked pattern was here #### Partition Parameters: COLUMN_STATS_ACCURATE true - numFiles 4 + numFiles 1 numRows 50 - rawDataSize 22048 - totalSize 5044 + rawDataSize 22050 + totalSize 2043 #### A masked pattern was here #### # Storage Information @@ -777,10 +777,10 @@ Protect Mode: None #### A masked pattern was here #### Partition Parameters: COLUMN_STATS_ACCURATE true - numFiles 4 + numFiles 1 numRows 50 - rawDataSize 21980 - totalSize 4959 + rawDataSize 21950 + totalSize 2024 #### A masked pattern was here #### # Storage Information @@ -822,10 +822,10 @@ Protect Mode: None #### A masked pattern was here #### Partition Parameters: COLUMN_STATS_ACCURATE true - numFiles 4 + numFiles 1 numRows 50 - rawDataSize 22048 - totalSize 5044 + rawDataSize 22050 + totalSize 2043 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/tez/orc_merge2.q.out b/ql/src/test/results/clientpositive/tez/orc_merge2.q.out index e08e211dd002..0f1917f73323 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge2.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge2.q.out @@ -33,8 +33,6 @@ STAGE DEPENDENCIES: STAGE PLANS: Stage: Stage-1 Tez - Edges: - Reducer 2 <- Map 1 (SIMPLE_EDGE) #### A masked pattern was here #### Vertices: Map 1 @@ -46,24 +44,14 @@ STAGE PLANS: expressions: UDFToInteger(key) (type: int), value (type: string), (hash(key) pmod 10) (type: int), (hash(value) pmod 10) (type: int) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: int), _col3 (type: int) - sort order: ++ - Map-reduce partition columns: _col2 (type: int), _col3 (type: int) + File Output Operator + compressed: false Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: int), _col3 (type: int) - Reducer 2 - Reduce Operator Tree: - Extract - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat - output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat - serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde - name: default.orcfile_merge2a + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.orcfile_merge2a Stage: Stage-2 Dependency Collection diff --git a/ql/src/test/results/clientpositive/tez/tez_dml.q.out b/ql/src/test/results/clientpositive/tez/tez_dml.q.out index a6c45d560ba4..9b7f56466aa5 100644 --- a/ql/src/test/results/clientpositive/tez/tez_dml.q.out +++ b/ql/src/test/results/clientpositive/tez/tez_dml.q.out @@ -443,8 +443,6 @@ STAGE DEPENDENCIES: STAGE PLANS: Stage: Stage-1 Tez - Edges: - Reducer 2 <- Map 1 (SIMPLE_EDGE) #### A masked pattern was here #### Vertices: Map 1 @@ -456,24 +454,14 @@ STAGE PLANS: expressions: value (type: string), cnt (type: bigint) outputColumnNames: _col0, _col1 Statistics: Num rows: 309 Data size: 2718 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col1 (type: bigint) - sort order: + - Map-reduce partition columns: _col1 (type: bigint) + File Output Operator + compressed: false Statistics: Num rows: 309 Data size: 2718 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: bigint) - Reducer 2 - Reduce Operator Tree: - Extract - Statistics: Num rows: 309 Data size: 2718 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 309 Data size: 2718 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.tmp_src_part + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.tmp_src_part Stage: Stage-2 Dependency Collection @@ -529,314 +517,314 @@ POSTHOOK: Input: default@tmp_src_part@d=4 POSTHOOK: Input: default@tmp_src_part@d=5 #### A masked pattern was here #### val_490 1 -val_289 1 -val_291 1 -val_292 1 -val_296 1 -val_180 1 -val_30 1 -val_302 1 -val_305 1 -val_306 1 -val_491 1 -val_308 1 -val_96 1 -val_310 1 -val_178 1 -val_315 1 -val_177 1 -val_493 1 -val_170 1 -val_494 1 -val_495 1 -val_323 1 -val_496 1 -val_17 1 -val_33 1 -val_497 1 -val_332 1 -val_111 1 -val_335 1 -val_336 1 -val_338 1 -val_339 1 -val_34 1 -val_341 1 -val_11 1 -val_85 1 -val_345 1 -val_168 1 -val_166 1 -val_351 1 -val_53 1 -val_356 1 -val_360 1 -val_362 1 -val_364 1 -val_365 1 -val_366 1 -val_54 1 -val_368 1 -val_163 1 -val_57 1 -val_373 1 -val_374 1 -val_375 1 -val_377 1 -val_378 1 -val_379 1 -val_86 1 -val_162 1 -val_386 1 -val_389 1 -val_392 1 -val_393 1 -val_394 1 -val_64 1 -val_160 1 -val_65 1 -val_66 1 -val_4 1 -val_400 1 -val_158 1 -val_402 1 -val_157 1 -val_87 1 -val_156 1 -val_407 1 -val_155 1 -val_41 1 -val_411 1 -val_69 1 -val_105 1 -val_153 1 -val_418 1 -val_419 1 -val_9 1 -val_421 1 -val_74 1 -val_427 1 -val_10 1 -val_43 1 -val_150 1 -val_145 1 -val_432 1 -val_435 1 -val_436 1 -val_437 1 -val_143 1 -val_77 1 -val_44 1 -val_443 1 -val_444 1 -val_446 1 -val_448 1 -val_192 1 -val_190 1 -val_194 1 -val_449 1 -val_196 1 -val_452 1 -val_19 1 -val_2 1 -val_20 1 -val_453 1 -val_201 1 -val_202 1 -val_136 1 -val_455 1 -val_457 1 -val_189 1 -val_78 1 -val_8 1 -val_214 1 -val_460 1 -val_80 1 -val_218 1 -val_82 1 -val_133 1 -val_222 1 -val_467 1 -val_131 1 -val_226 1 -val_228 1 -val_126 1 -val_186 1 -val_47 1 -val_235 1 -val_470 1 -val_472 1 -val_475 1 -val_477 1 -val_241 1 -val_92 1 -val_244 1 -val_247 1 -val_248 1 -val_249 1 -val_252 1 -val_479 1 -val_116 1 -val_257 1 -val_258 1 -val_481 1 -val_260 1 -val_262 1 -val_263 1 -val_482 1 -val_266 1 -val_27 1 -val_483 1 -val_183 1 -val_274 1 -val_275 1 -val_181 1 -val_484 1 -val_28 1 -val_485 1 -val_487 1 -val_114 1 -val_283 1 -val_284 1 -val_285 1 -val_286 1 val_287 1 -val_84 2 -val_95 2 -val_97 2 -val_98 2 -val_100 2 -val_103 2 -val_104 2 -val_113 2 -val_118 2 -val_12 2 -val_120 2 -val_125 2 -val_129 2 -val_134 2 -val_137 2 -val_146 2 -val_149 2 -val_15 2 -val_152 2 -val_164 2 -val_165 2 -val_172 2 -val_174 2 -val_175 2 -val_176 2 -val_179 2 -val_18 2 -val_191 2 -val_195 2 -val_197 2 -val_200 2 -val_203 2 -val_205 2 -val_207 2 -val_209 2 -val_213 2 -val_216 2 -val_217 2 -val_219 2 -val_221 2 -val_223 2 -val_224 2 -val_229 2 -val_233 2 -val_237 2 -val_238 2 -val_239 2 -val_24 2 -val_242 2 -val_255 2 -val_256 2 -val_26 2 -val_265 2 -val_272 2 -val_278 2 -val_280 2 -val_281 2 -val_282 2 -val_288 2 -val_307 2 -val_309 2 -val_317 2 -val_321 2 -val_322 2 -val_325 2 -val_331 2 -val_333 2 -val_342 2 -val_344 2 -val_353 2 -val_367 2 -val_37 2 -val_382 2 -val_395 2 -val_397 2 -val_399 2 -val_404 2 -val_413 2 -val_414 2 -val_42 2 -val_424 2 -val_429 2 -val_439 2 -val_458 2 -val_459 2 -val_462 2 -val_463 2 -val_478 2 -val_492 2 -val_51 2 -val_58 2 -val_67 2 -val_72 2 -val_76 2 +val_286 1 +val_285 1 +val_284 1 +val_283 1 +val_114 1 +val_487 1 +val_485 1 +val_28 1 +val_484 1 +val_181 1 +val_275 1 +val_274 1 +val_183 1 +val_483 1 +val_27 1 +val_266 1 +val_482 1 +val_263 1 +val_262 1 +val_260 1 +val_481 1 +val_258 1 +val_257 1 +val_116 1 +val_479 1 +val_252 1 +val_249 1 +val_248 1 +val_247 1 +val_244 1 +val_92 1 +val_241 1 +val_477 1 +val_475 1 +val_472 1 +val_470 1 +val_235 1 +val_47 1 +val_186 1 +val_126 1 +val_228 1 +val_226 1 +val_131 1 +val_467 1 +val_222 1 +val_133 1 +val_82 1 +val_218 1 +val_80 1 +val_460 1 +val_214 1 +val_8 1 +val_78 1 +val_189 1 +val_457 1 +val_455 1 +val_136 1 +val_202 1 +val_201 1 +val_453 1 +val_20 1 +val_2 1 +val_19 1 +val_452 1 +val_196 1 +val_449 1 +val_194 1 +val_190 1 +val_192 1 +val_448 1 +val_446 1 +val_444 1 +val_443 1 +val_44 1 +val_77 1 +val_143 1 +val_437 1 +val_436 1 +val_435 1 +val_432 1 +val_145 1 +val_150 1 +val_43 1 +val_10 1 +val_427 1 +val_74 1 +val_421 1 +val_9 1 +val_419 1 +val_418 1 +val_153 1 +val_105 1 +val_69 1 +val_411 1 +val_41 1 +val_155 1 +val_407 1 +val_156 1 +val_87 1 +val_157 1 +val_402 1 +val_158 1 +val_400 1 +val_4 1 +val_66 1 +val_65 1 +val_160 1 +val_64 1 +val_394 1 +val_393 1 +val_392 1 +val_389 1 +val_386 1 +val_162 1 +val_86 1 +val_379 1 +val_378 1 +val_377 1 +val_375 1 +val_374 1 +val_373 1 +val_57 1 +val_163 1 +val_368 1 +val_54 1 +val_366 1 +val_365 1 +val_364 1 +val_362 1 +val_360 1 +val_356 1 +val_53 1 +val_351 1 +val_166 1 +val_168 1 +val_345 1 +val_85 1 +val_11 1 +val_341 1 +val_34 1 +val_339 1 +val_338 1 +val_336 1 +val_335 1 +val_111 1 +val_332 1 +val_497 1 +val_33 1 +val_17 1 +val_496 1 +val_323 1 +val_495 1 +val_494 1 +val_170 1 +val_493 1 +val_177 1 +val_315 1 +val_178 1 +val_310 1 +val_96 1 +val_308 1 +val_491 1 +val_306 1 +val_305 1 +val_302 1 +val_30 1 +val_180 1 +val_296 1 +val_292 1 +val_291 1 +val_289 1 +val_98 2 +val_97 2 +val_95 2 +val_84 2 val_83 2 -val_396 3 -val_384 3 -val_369 3 +val_76 2 +val_72 2 +val_67 2 +val_58 2 +val_51 2 +val_492 2 +val_478 2 +val_463 2 +val_462 2 +val_459 2 +val_458 2 +val_439 2 +val_429 2 +val_424 2 +val_42 2 +val_414 2 +val_413 2 +val_404 2 +val_399 2 +val_397 2 +val_395 2 +val_382 2 +val_37 2 +val_367 2 +val_353 2 +val_344 2 +val_342 2 +val_333 2 +val_331 2 +val_325 2 +val_322 2 +val_321 2 +val_317 2 +val_309 2 +val_307 2 +val_288 2 +val_282 2 +val_281 2 +val_280 2 +val_278 2 +val_272 2 +val_265 2 +val_26 2 +val_256 2 +val_255 2 +val_242 2 +val_24 2 +val_239 2 +val_238 2 +val_237 2 +val_233 2 +val_229 2 +val_224 2 +val_223 2 +val_221 2 +val_219 2 +val_217 2 +val_216 2 +val_213 2 +val_209 2 +val_207 2 +val_205 2 +val_203 2 +val_200 2 +val_197 2 +val_195 2 +val_191 2 +val_18 2 +val_179 2 +val_176 2 +val_175 2 +val_174 2 +val_172 2 +val_165 2 +val_164 2 +val_152 2 +val_15 2 +val_149 2 +val_146 2 +val_137 2 +val_134 2 +val_129 2 +val_125 2 +val_120 2 +val_12 2 +val_118 2 +val_113 2 +val_104 2 +val_103 2 +val_100 2 val_498 3 -val_35 3 -val_167 3 -val_327 3 -val_318 3 -val_128 3 -val_90 3 -val_466 3 -val_316 3 -val_311 3 -val_454 3 -val_298 3 -val_273 3 -val_187 3 -val_208 3 -val_199 3 -val_193 3 -val_480 3 -val_438 3 -val_431 3 -val_0 3 -val_119 3 -val_70 3 -val_430 3 -val_5 3 -val_417 3 -val_409 3 +val_369 3 +val_384 3 +val_396 3 val_403 3 -val_406 4 -val_489 4 +val_409 3 +val_417 3 +val_5 3 +val_430 3 +val_70 3 +val_119 3 +val_0 3 +val_431 3 +val_438 3 +val_480 3 +val_193 3 +val_199 3 +val_208 3 +val_187 3 +val_273 3 +val_298 3 +val_454 3 +val_311 3 +val_316 3 +val_466 3 +val_90 3 +val_128 3 +val_318 3 +val_327 3 +val_167 3 +val_35 3 val_468 4 -val_277 4 -val_138 4 +val_489 4 +val_406 4 val_169 4 -val_348 5 -val_230 5 -val_401 5 +val_138 4 +val_277 4 val_469 5 +val_401 5 +val_230 5 +val_348 5 PREHOOK: query: -- multi insert CREATE TABLE even (c int, d string) PREHOOK: type: CREATETABLE diff --git a/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out b/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out index 286e2ed52755..533dd88aaa1e 100644 --- a/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out @@ -85,15 +85,21 @@ POSTHOOK: Input: default@acid_uap@ds=today POSTHOOK: Input: default@acid_uap@ds=tomorrow #### A masked pattern was here #### -1073279343 fred today +-1073279343 oj1YrV5Wa today -1073051226 fred today -1072910839 fred today +-1072081801 dPkN74F7 today -1072081801 fred today -1072076362 fred today -1071480828 fred today +-1071363017 Anj0oF today -1071363017 fred today +-1070883071 0ruyd6Y50JpdGRf6HqD today -1070883071 fred today -1070551679 fred today +-1070551679 iUR3Q today -1069736047 fred today +-1069736047 k17Am8uPHWk02cEf1jet today 762 fred tomorrow 762 fred tomorrow 762 fred tomorrow diff --git a/ql/src/test/results/clientpositive/union10.q.out b/ql/src/test/results/clientpositive/union10.q.out index 961be518df2e..d261a7575059 100644 --- a/ql/src/test/results/clientpositive/union10.q.out +++ b/ql/src/test/results/clientpositive/union10.q.out @@ -83,10 +83,10 @@ STAGE PLANS: Select Operator expressions: _col0 (type: string), UDFToInteger(_col1) (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -98,10 +98,10 @@ STAGE PLANS: Select Operator expressions: _col0 (type: string), UDFToInteger(_col1) (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -113,10 +113,10 @@ STAGE PLANS: Select Operator expressions: _col0 (type: string), UDFToInteger(_col1) (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union12.q.out b/ql/src/test/results/clientpositive/union12.q.out index e63453985e08..4df390e3b1eb 100644 --- a/ql/src/test/results/clientpositive/union12.q.out +++ b/ql/src/test/results/clientpositive/union12.q.out @@ -83,10 +83,10 @@ STAGE PLANS: Select Operator expressions: _col0 (type: string), UDFToInteger(_col1) (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -98,10 +98,10 @@ STAGE PLANS: Select Operator expressions: _col0 (type: string), UDFToInteger(_col1) (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -113,10 +113,10 @@ STAGE PLANS: Select Operator expressions: _col0 (type: string), UDFToInteger(_col1) (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 3 Data size: 288 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union4.q.out b/ql/src/test/results/clientpositive/union4.q.out index bf9bcdcfbe64..90daaad2cb2f 100644 --- a/ql/src/test/results/clientpositive/union4.q.out +++ b/ql/src/test/results/clientpositive/union4.q.out @@ -80,10 +80,10 @@ STAGE PLANS: Select Operator expressions: _col0 (type: string), UDFToInteger(_col1) (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 2 Data size: 192 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 192 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -95,10 +95,10 @@ STAGE PLANS: Select Operator expressions: _col0 (type: string), UDFToInteger(_col1) (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 2 Data size: 192 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 192 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union_remove_17.q.out b/ql/src/test/results/clientpositive/union_remove_17.q.out index 593ed06369d2..5b466c644415 100644 --- a/ql/src/test/results/clientpositive/union_remove_17.q.out +++ b/ql/src/test/results/clientpositive/union_remove_17.q.out @@ -81,12 +81,14 @@ STAGE PLANS: expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint), _col2 (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string) - sort order: + - Map-reduce partition columns: _col2 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: bigint), _col2 (type: string) + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe + name: default.outputtbl1 TableScan alias: inputtbl1 Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE @@ -100,23 +102,14 @@ STAGE PLANS: expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint), _col2 (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE - Reduce Output Operator - key expressions: _col2 (type: string) - sort order: + - Map-reduce partition columns: _col2 (type: string) + File Output Operator + compressed: false Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: bigint), _col2 (type: string) - Reduce Operator Tree: - Extract - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE - table: - input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat - output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat - serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe - name: default.outputtbl1 + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe + name: default.outputtbl1 Stage: Stage-0 Move Operator diff --git a/ql/src/test/results/clientpositive/update_all_partitioned.q.out b/ql/src/test/results/clientpositive/update_all_partitioned.q.out index 286e2ed52755..533dd88aaa1e 100644 --- a/ql/src/test/results/clientpositive/update_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/update_all_partitioned.q.out @@ -85,15 +85,21 @@ POSTHOOK: Input: default@acid_uap@ds=today POSTHOOK: Input: default@acid_uap@ds=tomorrow #### A masked pattern was here #### -1073279343 fred today +-1073279343 oj1YrV5Wa today -1073051226 fred today -1072910839 fred today +-1072081801 dPkN74F7 today -1072081801 fred today -1072076362 fred today -1071480828 fred today +-1071363017 Anj0oF today -1071363017 fred today +-1070883071 0ruyd6Y50JpdGRf6HqD today -1070883071 fred today -1070551679 fred today +-1070551679 iUR3Q today -1069736047 fred today +-1069736047 k17Am8uPHWk02cEf1jet today 762 fred tomorrow 762 fred tomorrow 762 fred tomorrow From 99a21b22a228782ea20868fce3bf847948292768 Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Thu, 2 Oct 2014 03:20:00 +0000 Subject: [PATCH 050/339] HIVE-8296: Reduce vectorization should use independent buffers for key and value (Matt McCline, via Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628882 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/exec/tez/ReduceRecordSource.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java index 72e2fe5c77c2..017a72afa137 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java @@ -86,7 +86,8 @@ public class ReduceRecordSource implements RecordSource { List row = new ArrayList(Utilities.reduceFieldNameList.size()); - private DataOutputBuffer buffer; + private DataOutputBuffer keyBuffer; + private DataOutputBuffer valueBuffer; private VectorizedRowBatchCtx batchContext; private VectorizedRowBatch batch; @@ -135,7 +136,8 @@ void init(JobConf jconf, Operator reducer, boolean vectorized, TableDesc keyT if(vectorized) { keyStructInspector = (StructObjectInspector) keyObjectInspector; keysColumnOffset = keyStructInspector.getAllStructFieldRefs().size(); - buffer = new DataOutputBuffer(); + keyBuffer = new DataOutputBuffer(); + valueBuffer = new DataOutputBuffer(); } // We should initialize the SerDe with the TypeInfo when available. @@ -323,11 +325,9 @@ private void processKeyValues(Iterable values, byte tag) throws HiveExce * @return true if it is not done and can take more inputs */ private void processVectors(Iterable values, byte tag) throws HiveException { - batch.reset(); - /* deserialize key into columns */ VectorizedBatchUtil.addRowToBatchFrom(keyObject, keyStructInspector, - 0, 0, batch, buffer); + 0, 0, batch, keyBuffer); for(int i = 0; i < keysColumnOffset; i++) { VectorizedBatchUtil.setRepeatingColumn(batch, i); } @@ -340,18 +340,28 @@ private void processVectors(Iterable values, byte tag) throws HiveExcept Object valueObj = deserializeValue(valueWritable, tag); VectorizedBatchUtil.addRowToBatchFrom(valueObj, valueStructInspectors, - rowIdx, keysColumnOffset, batch, buffer); + rowIdx, keysColumnOffset, batch, valueBuffer); rowIdx++; if (rowIdx >= BATCH_SIZE) { VectorizedBatchUtil.setBatchSize(batch, rowIdx); reducer.processOp(batch, tag); + + // Reset just the value columns and value buffer. + for (int i = keysColumnOffset; i < batch.numCols; i++) { + batch.cols[i].reset(); + } + valueBuffer.reset(); rowIdx = 0; } } if (rowIdx > 0) { + // Flush final partial batch. VectorizedBatchUtil.setBatchSize(batch, rowIdx); reducer.processOp(batch, tag); } + batch.reset(); + keyBuffer.reset(); + valueBuffer.reset(); } catch (Exception e) { String rowString = null; try { From 4092c76bc6bb2545d19d9cb0384ec6b6ed5a6642 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 2 Oct 2014 05:06:47 +0000 Subject: [PATCH 051/339] HIVE-8325: NPE in map join execution (submit via child) (Gunther Hagleitner, reviewed by Szehon Ho) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1628886 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java index 9bb0d52753f4..79da5a055dae 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java @@ -302,6 +302,11 @@ public int executeInProcess(DriverContext driverContext) { if (work == null) { return -1; } + + if (execContext == null) { + execContext = new ExecMapperContext(job); + } + memoryMXBean = ManagementFactory.getMemoryMXBean(); long startTime = System.currentTimeMillis(); console.printInfo(Utilities.now() From cc1bdd75dc99e0346aea84fd5ed91db6306e02ce Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Thu, 2 Oct 2014 15:39:33 +0000 Subject: [PATCH 052/339] HIVE-8311 Driver is encoding transaction information too late (Alan Gates reviewed by Eugene Koifman) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629002 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/Driver.java | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java index 4826abcc4fce..5b36f7143f1b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java @@ -390,8 +390,13 @@ public int compile(String command, boolean resetTaskIds) { tree = ParseUtils.findRootNonNullToken(tree); perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.PARSE); - // Initialize the transaction manager. This must be done before analyze is called + // Initialize the transaction manager. This must be done before analyze is called. Also + // record the valid transactions for this query. We have to do this at compile time + // because we use the information in planning the query. Also, + // we want to record it at this point so that users see data valid at the point that they + // submit the query. SessionState.get().initTxnMgr(conf); + recordValidTxns(); perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.ANALYZE); BaseSemanticAnalyzer sem = SemanticAnalyzerFactory.get(conf, tree); @@ -873,21 +878,14 @@ private List getLockObjects(Database d, Table t, Partition p, HiveL // Write the current set of valid transactions into the conf file so that it can be read by // the input format. - private int recordValidTxns() { - try { - ValidTxnList txns = SessionState.get().getTxnMgr().getValidTxns(); - String txnStr = txns.toString(); - conf.set(ValidTxnList.VALID_TXNS_KEY, txnStr); - LOG.debug("Encoding valid txns info " + txnStr); - return 0; - } catch (LockException e) { - errorMessage = "FAILED: Error in determing valid transactions: " + e.getMessage(); - SQLState = ErrorMsg.findSQLState(e.getMessage()); - downstreamError = e; - console.printError(errorMessage, "\n" - + org.apache.hadoop.util.StringUtils.stringifyException(e)); - return 10; - } + private void recordValidTxns() throws LockException { + ValidTxnList txns = SessionState.get().getTxnMgr().getValidTxns(); + String txnStr = txns.toString(); + conf.set(ValidTxnList.VALID_TXNS_KEY, txnStr); + LOG.debug("Encoding valid txns info " + txnStr); + // TODO I think when we switch to cross query transactions we need to keep this list in + // session state rather than agressively encoding it in the conf like this. We can let the + // TableScanOperators then encode it in the conf before calling the input formats. } /** @@ -933,11 +931,14 @@ private int acquireLocksAndOpenTxn() { desc.setTransactionId(txnId); } } + + // TODO Once we move to cross query transactions we need to add the open transaction to + // our list of valid transactions. We don't have a way to do that right now. } txnMgr.acquireLocks(plan, ctx, userFromUGI); - return recordValidTxns(); + return 0; } catch (LockException e) { errorMessage = "FAILED: Error in acquiring locks: " + e.getMessage(); SQLState = ErrorMsg.findSQLState(e.getMessage()); From edd2733ebdc716650c4f64a018f2b53e42c177e9 Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Thu, 2 Oct 2014 20:58:53 +0000 Subject: [PATCH 053/339] HIVE-8304: Tez Reduce-Side GROUP BY Vectorization doesn't copy NULL keys correctly (Matt McCline via Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629068 13f79535-47bb-0310-9956-ffa450edef68 --- data/files/vectortab2k | 2000 +++++++++++++++++ .../resources/testconfiguration.properties | 29 + .../ql/exec/vector/VectorGroupByOperator.java | 15 + .../ql/exec/vector/VectorGroupKeyHelper.java | 39 +- .../clientpositive/vector_distinct_2.q | 43 + .../queries/clientpositive/vector_groupby_3.q | 43 + .../queries/clientpositive/vector_orderby_5.q | 43 + .../tez/orc_vectorization_ppd.q.out | 288 +++ .../tez/vector_between_in.q.out | 740 ++++++ .../tez/vector_decimal_aggregate.q.out | 2 +- .../tez/vector_distinct_2.q.out | 1866 +++++++++++++++ .../clientpositive/tez/vector_elt.q.out | 121 + .../clientpositive/tez/vector_groupby_3.q.out | 1869 +++++++++++++++ .../tez/vector_non_string_partition.q.out | 182 ++ .../clientpositive/tez/vector_orderby_5.q.out | 193 ++ .../clientpositive/tez/vectorization_1.q.out | 45 + .../clientpositive/tez/vectorization_10.q.out | 294 +++ .../clientpositive/tez/vectorization_11.q.out | 76 + .../clientpositive/tez/vectorization_16.q.out | 666 ++++++ .../clientpositive/tez/vectorization_2.q.out | 49 + .../clientpositive/tez/vectorization_3.q.out | 55 + .../clientpositive/tez/vectorization_4.q.out | 49 + .../clientpositive/tez/vectorization_5.q.out | 43 + .../clientpositive/tez/vectorization_6.q.out | 1620 +++++++++++++ .../tez/vectorization_decimal_date.q.out | 51 + .../tez/vectorization_div0.q.out | 485 ++++ .../tez/vectorization_nested_udf.q.out | 9 + .../tez/vectorization_not.q.out | 58 + .../tez/vectorization_part.q.out | 72 + .../tez/vectorization_pushdown.q.out | 74 + .../tez/vectorized_bucketmapjoin1.q.out | 371 +++ .../clientpositive/tez/vectorized_case.q.out | 95 + .../tez/vectorized_context.q.out | 338 +++ .../tez/vectorized_math_funcs.q.out | 247 ++ .../tez/vectorized_parquet.q.out | 328 +++ .../tez/vectorized_rcfile_columnar.q.out | 62 + .../tez/vectorized_string_funcs.q.out | 123 + .../clientpositive/vector_distinct_2.q.out | 1859 +++++++++++++++ .../clientpositive/vector_groupby_3.q.out | 1862 +++++++++++++++ .../clientpositive/vector_orderby_5.q.out | 195 ++ 40 files changed, 16585 insertions(+), 14 deletions(-) create mode 100644 data/files/vectortab2k create mode 100644 ql/src/test/queries/clientpositive/vector_distinct_2.q create mode 100644 ql/src/test/queries/clientpositive/vector_groupby_3.q create mode 100644 ql/src/test/queries/clientpositive/vector_orderby_5.q create mode 100644 ql/src/test/results/clientpositive/tez/orc_vectorization_ppd.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_between_in.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_distinct_2.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_elt.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_groupby_3.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_non_string_partition.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_orderby_5.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_1.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_10.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_11.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_16.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_2.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_3.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_4.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_5.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_6.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_decimal_date.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_div0.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_nested_udf.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_not.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_part.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_pushdown.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorized_bucketmapjoin1.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorized_case.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorized_context.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorized_math_funcs.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorized_parquet.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorized_rcfile_columnar.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorized_string_funcs.q.out create mode 100644 ql/src/test/results/clientpositive/vector_distinct_2.q.out create mode 100644 ql/src/test/results/clientpositive/vector_groupby_3.q.out create mode 100644 ql/src/test/results/clientpositive/vector_orderby_5.q.out diff --git a/data/files/vectortab2k b/data/files/vectortab2k new file mode 100644 index 000000000000..36ea3b386fcc --- /dev/null +++ b/data/files/vectortab2k @@ -0,0 +1,2000 @@ +111|||2607|5765.39|3882592.64|3785719054585.463867|true|mathematics|nick xylophone|2065-08-13 19:03:52|2018-11-14 17:26:37.322428829|2086-05-13 +-87|21091|-1012329052|9182828596851990528|22311.90|2883584.50|3563455992720.427734|true|quiet hour|david quirinius|2047-08-30 02:59:28|2062-07-07 09:32:33.387727593|2083-11-21 +-58|-31395|-1730740504|302|11322.18|-2081693.61|-1639547871112.334473|true|industrial engineering|xavier laertes|2057-09-02 10:26:29|2074-04-07 03:59:19.110762829| +-19|133|95356298|78|-15490.77|-642668.92||true|american history|tom ovid|2059-06-14 15:58:37|2021-07-06 11:56:50.11392413| +95|27922|-2027812975|3764|-38980.40|-497550.81|4616197451686.900391|false|education|wendy davidson|2031-12-06 02:13:55|2037-04-01 15:48:02.707720905|2013-05-01 +23|-9171|-805288503|7432428551399669760|-35391.71|-1387292.76|-4384441919303.938477||nap time|xavier hernandez|2069-02-22 06:47:15|2068-04-02 03:24:11.192596144|2048-06-21 +7|725||3118|-12519.93|-1305193.84|3984781579512.529297|true|forestry|david davidson|2071-01-16 20:21:17|2049-05-02 13:53:42.230477366|2030-02-20 +52|8918|-772236518|7250237407877382144|32666.20|-3997512.40|-4361210532142.081055|true|religion||2068-10-07 03:23:30||2010-12-13 +54|-30304|-146961490|8100036735858401280|38097.34|300734.43|-101907680156.507812|false|wind surfing|alice ellison|2076-07-17 05:35:58|2017-10-19 13:37:33.31074556|1985-06-25 +36|-10317|-538812082|7792036342592348160|36810.38|1666710.20|1617263763890.299805|true|debate|xavier king||2049-11-23 23:25:42.906731900|2025-10-11 +-92|21849|868714547|-7496839341561954304|32711.55|-2738225.86|-946920531679.183105|false|biology|zach falkner|2064-05-11 04:54:01|2041-04-22 19:12:27.123637103|2020-04-05 +-127|7353|1008698636|1719|4983.60|-2636583.28|2290285251062.656250|false|american history|ethan polk|2029-05-28 08:57:08|2071-11-04 02:44:19.546016087|2048-06-29 +73|16195|737149747|8283099811330506752|5758.00|2121137.53|-3867208889795.392578|true|philosophy|sarah davidson|2061-05-23 23:39:02|2064-12-20 12:52:14.436538366|2053-04-28 +-46|-28501|810157660|2241|-7769.30|-3860829.99|4232305555838.919922|true|biology|wendy falkner|2054-06-13 14:12:16|2044-03-24 22:32:03.722424719| +31|-9609|1541249928|7659279803863146496|-32124.85|1848079.75|-1733147315988.326172|true|philosophy|calvin miller|2058-02-09 03:37:29|2039-10-26 21:00:53.243928394|2030-11-17 +-35|||1075|21713.21|-4409416.25|-433003793989.392578|false|opthamology||2026-04-19 20:19:23|2060-01-21 11:16:28.358392262|1983-12-12 +48|7401|476704350|-7911421221625077760|-23364.57|393045.55|-3706576226699.773438|false|zync studies|sarah polk|2064-11-08 08:38:31|2047-09-13 00:05:07.657220269|2073-09-23 +-29|14773|-1974777102|1774|-41874.29|360339.96|4724948953312.201172|false|undecided|oscar ellison|2058-08-24 22:30:53|2023-10-22 21:22:34.254262972|2064-04-02 +-57|30921|-522450861|8895174927321243648|-7382.06|-4926003.80|4192159288015.525391|true|topology|david white|2027-03-09 17:30:45|2032-03-22 06:16:46.756458466|2077-08-03 +|26557|-407089271|661|-38119.53|-51958.20|-4230513318073.718750||quiet hour|wendy carson|2016-08-23 22:18:05|2079-03-05 14:50:42.389412815|2102-03-14 +-4||273256071|-9014145341570203648|-14145.11|-3116102.10|2704318642566.079102|false||ulysses white|2050-06-25 15:49:09|2013-10-28 19:25:59.70638641|2032-03-19 +47|23441|-978892011|-7049618574399692800|1466.49|-2506000.67|-1261885101463.384766|false|study skills|xavier underhill|2053-03-08 05:42:09|2059-11-24 17:10:42.836803274|2012-02-18 +55|-1928|174310705|-6935038507792801792|-4574.16|-2096084.32||false|topology|tom king|2068-11-10 06:35:37|2075-12-17 14:54:53.484250504|2010-11-13 +-43|2671|851975276|504|35338.95|2409466.90|-4397204039138.387207|false|industrial engineering|xavier xylophone|2044-09-15 08:07:20|2066-11-14 20:08:56.457818450|2097-09-25 +40|-21772|-1832606512|-8831091081349758976|8799.89|1118606.84|868268330921.963867|false|wind surfing|jessica van buren|2031-08-02 13:03:07|2066-10-02 06:56:23.275227665|2089-06-05 +-37|20704|-1506324615|923||-4894306.72|3900883250375.564453|false|education|alice ellison|2078-01-19 06:32:53|2034-07-13 13:55:48.524380282| +||-419335927|3263|-9973.58|379816.01|-4708070356227.338867|true|religion|sarah van buren|2061-02-13 08:24:35|2074-03-23 07:11:45.666149042|1994-04-22 +114|-2828|-1144976744|289|-21745.11|1431965.10|-654012413621.529785|true|history|katie robinson|2075-12-28 00:49:24|2028-08-01 10:04:22.203514303|2047-09-09 +-103|-20934|1107757211|8509508263705477120||507403.73|-4227549209611.147949||zync studies|zach robinson|2062-09-02 06:50:21||2084-08-14 +-87|||345|-31059.05|-4822074.38|2868093144922.561523|true|education|zach miller|2055-05-09 16:32:47|2015-11-28 12:47:47.540035115|2049-05-06 +83|-5635|-42151403|281|5719.35|-1928099.64|3951352468527.070312|false|philosophy|calvin young|2016-07-13 04:11:42|2025-05-12 16:31:50.778958822|2036-08-04 +-51|-20411|929560791|3637|48956.95|-1601399.55|1334219192158.307617|true|values clariffication|david polk|2032-08-10 12:27:00|2059-05-03 02:46:31.520651892|2048-12-21 +-86|8488|-425196209|-9066993118333706240|28889.32|3917802.65||true|opthamology|sarah nixon|2050-01-29 20:33:45|2052-07-20 02:09:30.619526537|2029-03-12 +77|-11232|1426152053|7354813692542304256|2007.63|-4307343.30|4686486642663.113281|false|study skills|bob falkner|2018-03-02 05:13:42|2070-06-20 06:01:30.717133325|2042-09-29 +||546555204|2029|6253.69|2528579.30|-3261089774688.485840|false||victor thompson||2060-02-01 14:16:38.477867192|2081-09-16 +-44|-16218||-8807361476639629312|36511.51|286248.72|2844066824227.447266|false|religion|xavier van buren|2039-09-01 16:08:42|2065-11-28 01:54:34.188054521|2039-07-18 +-23|27169|821316302|1371|-21871.99|-3722153.69|-545562668559.717773|false|undecided|mike brown|2063-04-07 13:36:45|2069-02-11 21:42:06.394121082|2054-04-18 +-75|23220|-1421860505|-7221474017515347968|-11848.57|-4271448.15|-1871570979952.359375|false|mathematics|yuri nixon|2025-10-02 14:38:27|2014-08-18 11:46:05.790786201|2037-05-04 +23||-677778959|8871707618793996288|-37545.98|2442119.38|-555577054032.596680|false|kindergarten|calvin quirinius|2041-09-15 03:23:20|2017-07-16 08:23:28.728239344|2014-06-03 +14|-20192|563507584|7198687580227043328|36052.76|-1306614.08|-1346869656422.100586|true|chemistry|katie robinson|2063-06-16 08:30:34|2057-04-22 20:48:38.16105051|2080-07-26 +-71|30090|1050809633|1990|32100.40|1500446.78|3795668572538.915039|false|wind surfing|tom garcia|2053-07-13 17:41:24|2019-12-19 14:37:16.693138309|2018-01-30 +-96||-1565671389|8984935029383389184|28720.33|-3180309.64|4280974782610.193359|false|xylophone band|bob underhill|2078-08-06 00:23:13|2034-07-26 23:30:44.175867724|1989-03-16 +74|23177|1910930064|815|45521.78|-4243565.50|-2179991053030.186035|true|religion|jessica steinbeck|2027-08-11 19:58:53|2025-12-23 12:56:48.785116575|2076-03-16 +-6|21162|1941527322|2056|18542.60|96721.07|60247412756.062500|true|values clariffication|katie ellison|2027-03-11 08:49:50|2014-05-26 15:11:45.90866024|2099-05-09 +20|-24115|684561551|8290944180915871744|-32692.85|-793214.39|158268139075.410156|true|philosophy|oscar van buren|2071-11-06 04:15:33|2078-07-06 07:11:57.809667477|2002-07-08 +121|-18533|167432368|228|-49580.62|-1199504.10|-4410893311038.144531|true|wind surfing|priscilla hernandez|2049-03-14 00:55:26|2015-08-24 11:31:28.973482642|2038-10-27 +-93|-28769|-463071187||29111.14|3936159.86|855085840126.683594|false|yard duty|quinn young|2074-10-25 23:48:59|2068-09-06 20:05:31.931744370|2092-10-19 +-95|5736|1204325852|3460|35891.97|3800244.68|-1017339551408.831055|true|philosophy|calvin ovid|2014-10-27 17:15:46|2074-07-15 23:20:20.972096957|1983-04-05 +-25|-11760|-2069439395||-44985.09|132699.25|1886345168609.331055|true|quiet hour|nick steinbeck|2029-03-23 20:58:01|2031-01-08 05:13:27.828333067|1980-03-09 +9|-18796|654939016|-8345065519816695808|32691.31|-2340544.58||false|yard duty|katie steinbeck|2056-01-19 20:32:40|2068-12-31 18:53:27.897916012|2095-05-24 +-115|28393|2080249726|-7576194692683563008|4313.15|311917.45|-2770003968115.233398|false|nap time|ethan robinson|2030-10-10 13:39:56|2044-09-10 23:59:14.562909594|2055-12-02 +100|6743|1565313938|-8782213262837530624|-964.34|-4407852.66|-773857309922.618652|true|biology|oscar carson|2044-11-17 07:46:19|2053-01-01 14:45:15.764196054| +80|-25780|1017953606|7220131672176058368|-35258.17|1908273.76|1088509311003.029297|true|values clariffication|gabriella brown|2075-10-25 05:21:06|2031-10-26 08:37:10.578092307| +110|-11008|-2009569943|7452756603516190720|3399.76|1741339.95|-2575772562204.221680|false|education|alice laertes|2058-10-01 22:58:51|2081-02-24 17:48:22.155034035|2032-11-07 +-38|-15115|-916344293|7410872053689794560|-26858.87|-818719.64|2489707283313.293945|true|wind surfing|nick thompson|2014-06-23 11:31:25|2038-07-05 23:22:59.392777497|2054-03-11 +0|27116||-7357888618985873408|42003.58|1662438.31|-2435727088707.188965|false|linguistics|mike zipper|2033-07-29 19:41:57|2079-03-13 01:50:52.671710709| +|2955|-1463884101|-7409317158045442048|-8186.07|-2572292.78|-2934889488954.759766|false|yard duty|katie ichabod|2015-01-24 13:02:54|2042-06-16 20:51:00.958638266|1994-06-02 +-30|-12628|868717604|3472|-38487.44|-4162489.36|-4161258810464.367676|true|industrial engineering||2023-12-05 22:32:04|2022-06-14 23:40:08.41754293|2094-06-06 +59|27852|-1830870295|2494|-24567.97|-929319.13|-3421625759809.039062|true||david quirinius|2074-01-14 13:16:59|2028-01-07 18:05:38.773104432|2002-07-10 +78|-7850|1677494300|-8992599250893979648|44585.81|-2982899.63|-597466124925.460938|true|forestry|victor van buren|2017-03-29 22:51:02|2068-08-17 17:51:55.371885346|2028-09-02 +-117|-21922|-799249885|8014986215157530624||2470347.06||true|chemistry|quinn ichabod|2029-05-06 15:39:17|2024-11-10 13:44:54.55064479|1994-03-27 +48|28558|-78240945|3159|-33993.69|889632.88|3293895628016.016602|false|opthamology|yuri underhill|2020-10-08 08:30:26|2019-11-20 03:42:51.136962161|1988-05-08 +-76|-3008|-1904737684|||4481669.11|-2023909790198.992188|false|joggying|ethan nixon|2026-11-16 23:20:05|2034-08-07 18:06:43.803487119|1985-04-16 +112|-6874|203688965|7436133434239229952|7968.70|4867019.14|-1079601478463.523438|true|quiet hour|yuri garcia|2022-06-09 22:16:54|2030-01-13 10:59:10.162327595|2025-08-01 +-23|-3520|1464695860||41789.11|-3616352.29|3476169263477.153320|false|forestry|alice hernandez|2045-06-14 13:53:38|2027-07-20 19:10:56.885557429|2072-09-25 +97|-14537|-1358159222|-8845239510002753536|30582.49|772376.99|-2651348117038.914062|false|forestry|quinn king|2016-07-21 22:10:27|2063-04-22 11:22:26.510916644|2044-01-22 +-88|198|323919214|8345435427356090368|35725.39|530232.57|4000300362554.191406|true|debate|sarah davidson|2052-02-29 16:23:06|2065-11-02 15:21:22.820623860|2016-12-30 +-19|-32480|2126491387|9094945190752903168|-24257.03|-4364624.36|1971729105497.779297|||oscar underhill|2044-04-04 07:26:25|2033-02-14 16:22:07.768207723|2105-12-20 +80|-22426|-235819331|-9078662294976061440|-13063.45|-639370.11|-2899905469957.140625|false|study skills|yuri xylophone|2054-03-25 06:38:11|2023-07-21 09:30:19.636575309|2043-03-22 +33|20884|-909127123|7689489436826804224|-20048.83|-4996960.35|2669260655452.099609|true|geology|rachel xylophone|2076-08-27 00:00:51|2031-07-31 16:48:51.285046883|2037-03-17 +-20|15688|-1967660827|7620183559667081216|-31608.43|-3778691.05|-253958738593.276367|false|linguistics||2065-07-05 19:36:50|2029-01-01 03:06:13.533276880|2105-01-24 +-1|-5593|2058640744|-9071565764086521856|-25936.66||-2624029717623.415039|true|forestry|wendy polk|2034-11-26 03:16:39|2073-01-17 06:48:04.722179257|1970-02-07 +-21|-23540|1678261510|2092|-44267.84|-3266915.53|136230451259.180664|false|yard duty|wendy davidson|2050-05-05 09:31:02|2070-04-03 08:45:42.349508679|1976-07-06 +-15|-24576|1022707418|1481|46316.04|825604.05|-4275490669201.076172|true|yard duty||2014-06-03 17:24:32|2014-11-29 21:31:04.183698999|2015-04-13 +-108|-18292|-934008333|8939431770838810624|-19049.65|-3634517.80|308587454891.693359|||ethan ovid|2066-11-25 08:03:39|2046-11-27 13:27:02.11530030|1992-12-03 +96|-11047|-2096425960|803|4967.48|-2777770.11|4037681204968.351562|false|linguistics|gabriella polk|2019-09-16 21:26:32|2047-10-24 22:32:11.31036942|1984-08-10 +71|||-8730803262481580032|16660.42|3752718.33|-311540696207.970703|true|history|ethan van buren|2043-08-10 22:21:54|2074-06-06 06:33:09.229039028|1976-08-29 +-52|-18385|-774406989|8201303040648052736|7836.59|-2532286.37|1913657229799.596680|true|quiet hour|oscar zipper|2039-08-18 17:59:50|2024-02-20 12:49:38.156348041| +-11|1847|22308780|-7953426740065312768||-2185323.72|-4536408641834.341797|false|philosophy|mike ovid|2046-04-01 23:23:25|2030-11-15 02:16:54.219567283|1995-07-03 +-103|-3091|-392713245|-8099313480512716800|40508.97|-2375645.47|-3996919734918.407227|false|chemistry|tom carson|2038-02-20 05:19:48|2057-02-04 09:09:17.378101856|2076-01-14 +|3694|-1404921781|1972|-31368.73|3279707.14|-2805368749215.979492|true|yard duty|rachel miller|2066-10-28 12:26:53|2065-05-14 17:44:00.934322881|2055-10-15 +121|-30677|-1061222139|7933040277013962752|-46396.26|958738.91|501053268792.510742|true|topology|xavier garcia|2066-03-24 23:40:52|2047-12-05 05:59:03.709642655|2041-01-13 +18|-1660|-1955545912|-9189155542884474880|-7714.06|881042.86|2065189794939.748047|false|topology|irene ellison|2026-11-08 06:16:55|2025-05-17 11:03:47.185223340|2074-07-12 +-42|9028|1621606222|2434|4438.76|-2964984.97|-2918353603075.267578|true|topology|priscilla young|2033-05-06 00:00:14|2023-10-29 17:43:13.522556162|2028-03-26 +124||978044705|7888238729321496576|-24208.95||-4850732296584.077148|false|undecided|jessica white|2020-12-07 05:16:00|2072-01-10 09:27:24.503516138|2019-05-19 +56|5599|-665623523|-8240034910581153792|-2335.60|202813.82|3851526875785.361328|true|nap time|sarah johnson|2021-03-07 18:22:05|2049-10-01 06:32:49.357282514|2018-10-27 +-102|-13722|259524903||-16413.09|-625420.83|3535592833060.938477||yard duty|bob nixon|2066-09-13 11:21:42|2066-04-06 02:06:21.730154464| +-56|11238|410340192|3567|29934.62|-2105876.12|2566162905785.595703|false|quiet hour|calvin brown|2018-12-30 00:00:33|2053-12-25 09:43:49.544264273|2095-02-28 +-111|-797|1412102605|7296164580491075584|31824.08|-886591.25|-2874808713941.199219|false|education|ulysses hernandez|2055-02-28 04:35:16|2032-02-26 21:07:51.12262410|2098-06-15 +-42|10479|860658464|268|32754.56|-2369331.68|654615772986.453125|true|forestry|fred brown|2024-01-02 15:21:18|2023-03-29 02:26:33.829299976|2062-03-23 +|30052|-1728171376|-8654433008222797824|35386.65|-1875563.10|-3891050509015.840820|true|forestry|rachel carson|2018-04-15 00:41:38|2016-03-28 02:03:24.513570827|2060-09-17 +-101|-32455|516843026|2229|-36732.79|-4985474.88||true|nap time|victor ichabod|2051-12-24 02:43:52|2069-12-02 02:14:56.589108032|2030-01-26 +-75|-15431|877053605|-8783777723063099392|-10499.63|678272.19|3041525159920.972656|false|history|holly falkner|2080-07-05 04:43:29|2034-10-26 21:04:12.771747509|2075-09-17 +4|8948|1211873318|2897|-17416.18|-4925512.63|-4514053790870.740234|true|opthamology|oscar ellison|2019-04-11 13:20:29|2026-07-07 02:42:24.833351047|2048-12-23 +-58|1393|1848935036|7989160253372817408|47928.52|-853795.31|-1657076687161.556152|true|forestry|mike van buren|2061-05-06 21:57:53|2058-06-06 16:07:39.838916621|2065-11-16 +-87|22557|873035819|-8028910243475038208||-2816366.10|-769631198270.062012|true|debate|calvin johnson|2054-12-07 01:08:19|2080-09-25 11:27:16.9717306|2080-12-04 +83|-10781|-480058682|1286|-17175.04||-2199239017358.216797|true|chemistry|jessica nixon|2040-07-07 10:30:33|2066-09-29 14:31:17.34936376|2096-02-14 +21|30632|2040926345|8677632093825916928|-45759.70|-2898003.58|-4156272991252.514160|false|geology|yuri underhill|2035-02-11 06:39:18|2017-02-20 17:17:37.184850313|2042-05-26 +-73|-6948|1773417290|8011181697250631680|11623.01|-958775.93|-1866254854407.820801|false|joggying|oscar brown|2039-02-19 15:50:12|2018-01-08 03:08:57.403292535|2100-01-30 +60|-19517|-884109192|-7966960765508280320|-10884.65|-3876912.53|-2066003780139.915527|true|yard duty|alice zipper||2062-02-01 03:32:34.383978859|2011-05-28 +-68|-14315|889733679|9185952983951343616|27500.67|3188754.82|4438755017449.623047|false|philosophy|priscilla zipper|2076-07-13 10:52:27|2016-05-03 07:39:40.516896330|2069-09-26 +-95|31125|1036391201|7319711402123149312|31964.96|-1757277.11|-1496962050139.103516|true|kindergarten|victor ovid|2032-12-06 07:37:49|2062-07-26 22:38:29.146178601|2032-04-09 +-94|-6088|1604076720|9119046173224370176|19740.52|-4678968.17|3557302643795.097656|true|american history|david xylophone|2073-01-23 03:17:41|2040-11-18 04:31:12.709589656|2004-09-28 +19|-9243|-1249011023|-8760655406971863040|-32655.55|-1649087.83|932399155849.453125|false|forestry|alice van buren|2018-07-11 06:15:11|2027-04-13 10:06:40.902651522|2019-12-25 +12|7343|1418228573|8190539859890601984|-20276.81|-4235586.20|-1196769263706.656250|true|values clariffication||2070-05-15 09:16:30|2078-03-22 13:36:17.940377243|2037-02-13 +-12|6813|-253084551|3974|40698.97|-1115432.48|-2448300846308.981934|false|wind surfing|wendy ichabod|2022-05-20 11:14:25|2053-10-25 16:58:08.223136198|2097-11-18 +-125|-22641|1597303154|2106|4874.58||-30490934435.612305|false|religion||2015-03-28 09:25:39|2013-03-04 23:58:15.71378943|2078-11-03 +39|8410|1640445482|2579|-14853.40|-3366426.92|1755470105685.397461|false|mathematics|jessica xylophone|||2081-02-20 +|-12755|-1353470095|7210160489915236352||-1899846.57|-653238714138.346680|true|undecided|priscilla xylophone|2022-03-08 18:50:03|2059-09-27 11:04:07.90814681|2011-06-29 +102|28247|794783516|-7907355742053883904|20683.15|2965661.82|-624867269213.389648|false|chemistry|mike van buren|2064-01-12 01:22:43|2055-03-27 10:02:55.174795513|2085-03-01 +114|19513|418182899|1846|-24886.47|-3030589.60|4183756295927.345703|true|education|luke xylophone|2017-10-15 17:18:43|2063-06-10 14:18:48.104797455|2044-04-24 +108|27636|215508794|1189|-25835.00|4453603.41|4405275049808.744141|true|nap time|ulysses van buren|2015-07-02 03:45:28|2013-12-31 08:25:18.118248757|1981-11-06 +23|-19623|-1039040287||-6512.80|-660440.82|-1642262021182.041504|false|geology|xavier quirinius|2080-12-09 03:55:10||1998-04-16 +-53|-4169|879290165|68|34884.11|-1267493.50|-3279094975952.290039|false|industrial engineering|mike young|2075-12-04 18:22:09|2054-10-01 19:12:15.766024626|1977-12-27 +-88|16796|1151752586|-6975459232300236800|-4784.15|-4864373.89|3221553706534.408203|true|topology|tom zipper|2064-04-09 08:01:25|2070-08-17 06:01:00.968011813|2027-04-10 +13|17531|1805308672|-7700203302632210432|-37763.56|3704107.83|3425256239457.610352|false|undecided|xavier thompson|2027-04-18 16:26:01|2024-07-18 19:36:10.425538948|2092-04-17 +-61|32019|1420099773|-8021859935185928192|38974.63|1673755.73|2102524829645.560547|true|chemistry|ulysses falkner|2029-02-04 06:51:54|2046-05-19 15:05:25.732127788|2062-03-10 +7|19302|538268118|7339426767877390336|20672.29|4555902.70||false|topology|fred laertes|2017-01-13 01:23:09|2016-05-16 23:25:47.63891547|1998-12-23 +-114|-28736|449788961|774|-18622.98|-1268938.21|2666440101920.493164|false||priscilla ichabod|2063-12-27 01:29:50|2035-03-18 21:03:10.648253783|2062-10-07 +101||-1914072976|2295|1339.82|4112381.85|-1984449836425.916504|false|study skills|alice ovid||2075-09-26 04:56:48.660923039|2050-07-10 +44|-18090|259204652|-8559252110266564608|-9038.73|-4718571.75|3963517992293.716797|true|forestry|victor white|2066-12-24 15:59:32|2038-03-27 02:23:06.834673196|2096-07-12 +-24|10161|-882028850|3079|-45314.95|1053922.25|1574414367849.214844|false|history|xavier ovid|2052-09-14 19:24:26|2034-04-25 18:26:08.505694709|2040-08-03 +89|-24801|-158233823|1346|42990.33|4421723.61|2978558145914.504883|true|geology||2028-06-15 20:46:41|2071-05-17 17:16:54.148951459|1989-11-05 +31|-31582|1219616145|-8007017894942638080|-44727.28|-4114788.64|-4378058802654.081055|true|american history|quinn quirinius|2060-09-20 08:49:06|2023-11-29 06:13:18.611946024|2019-12-11 +|-19159|1807877618|987|-5972.19|-119465.75|1452475353908.404297|false|quiet hour|holly ichabod|2062-09-02 18:18:39|2070-04-17 08:28:26.5503386|2075-09-26 +27|17023|1747664003|-9049720998034137088|22254.70|3306808.08|3177841668890.231445|false|biology|priscilla ellison|2015-07-10 05:27:46|2027-06-11 15:58:30.658173981|2024-08-23 +|-25344||-8158011642485825536|-48220.79|4820070.80|3955085450779.839844|true|chemistry|victor polk|2055-12-20 16:02:07|2024-09-03 18:32:19.912271231|2011-06-12 +-96|-6950|-1070951602|7697541332524376064|-23329.71|4539092.16|-1684983372492.716797|false|undecided||2069-02-08 07:45:14|2068-03-26 18:14:15.165533561| +-74|4261|217823040|8773222500321361920|-11741.38|1094988.55|3709069978104.153320|true|topology|rachel xylophone|2044-11-15 10:42:51|2059-08-26 20:14:15.307180062|2022-10-12 +-72|-7178|1814570016|-7915999634274369536|30236.61|2437780.95|2666538537304.746094|false|biology|fred carson||2079-01-28 01:30:38.861840968|2077-05-11 +-64|-1725|1493555718|6974475559697768448|-16776.52|-4105739.18|-2442617490401.950195|true|education|katie thompson|2044-03-29 00:20:37|2015-04-18 09:51:54.990681181|2078-01-13 +41|-19270|1119976718|7052226236896256000|28023.88|2110273.07|-4751768490466.296875|false|biology|yuri laertes|2079-09-26 20:39:48|2068-11-17 19:45:06.599632615|1983-05-31 +-58|-6494|1222217404|650|37717.83|107717.64|3643292384671.887695|true|industrial engineering|luke steinbeck|2028-02-25 14:55:40|2074-07-02 03:20:40.417209896|1973-03-04 +-127|-4252||3079|39550.67|-3279977.09|18225457799.800781|false|zync studies|holly zipper|2045-08-14 20:11:34|2024-05-11 15:11:48.691514072|2074-05-09 +-26|10261|914062370|1039||2283246.90|-1345490060709.941895|false|religion|luke robinson|2039-04-22 14:44:00|2053-03-18 12:47:22.448344815|1979-11-27 +-46|7356|683320224|-7610137349734883328|23741.83|-4065786.49|4723266191273.687500|true|chemistry|nick carson|2022-07-31 17:56:09|2024-03-03 22:59:52.779904666|2022-08-11 +48|28309|-570632618|-7526793959592140800|-4768.36|-4329360.25|3073439981743.923828|false|joggying|victor laertes|2034-03-18 16:11:32||2086-05-21 +39|3228|-535056977|8897901899039473664|3865.37|-206033.60|3887729126314.027344||study skills|wendy laertes|2018-03-11 05:09:22|2034-09-09 08:05:25.434342520|1982-04-12 +-73|-1011|-1058166020|8793387410919038976|-9572.10|2650235.31|-3040241790788.478516|false|quiet hour|oscar robinson|2062-03-17 08:07:25|2042-08-08 14:24:00.510838590|2078-05-19 +-65|17073|1111985530|9112400579327483904|46710.33|130023.02|||industrial engineering|wendy falkner|2051-09-14 21:51:35||1994-06-09 +-127|29365|895945459|-8559008501282832384|19094.69||-4601795255939.329102|true|study skills|katie underhill|2062-08-08 00:34:44|2035-03-17 18:33:10.848870183|2087-04-30 +42||-997463353|1788|-7.25|-1624411.04|2061492866787.446289|false|debate|xavier white|2074-08-12 02:19:10|2024-07-12 04:37:59.670091691|2079-05-31 +-24|-13978|-491882534|8554899472487596032|-42196.85|2380170.34|995819157271.000977|true|debate|ethan garcia|2067-04-29 08:24:05|2033-02-23 23:45:43.224368846|2026-11-24 +45|-7865|829101712|-8070535484085895168|-8695.03|1393839.55|-2930125300660.009277|true|religion|calvin garcia|2069-10-10 07:46:10|2030-09-03 02:47:09.999512465|2094-08-04 +34|-32240||-7858505678035951616|21913.94|-4848416.07|-4417461834328.939453|true|yard duty|tom miller|2020-08-15 02:15:04|2049-01-07 01:23:16.815364884|2041-04-17 +82|-4550|-1497098905|1058|19349.22|-3207956.11|2622882069011.147461|false|education|gabriella nixon|2048-06-12 05:15:59|2070-06-08 15:10:15.103401622|2047-07-22 +90|12762|-983874694|-7598782894648565760|-6545.09|4223917.78|-2724893143053.712891|true|biology|wendy carson|2064-09-28 23:47:20|2057-05-10 17:22:29.44470118|2009-10-04 +-52|-15501|-1184620079|7947544013461512192|17444.50|-4019474.98|-4273574634879.970703|true|debate|wendy falkner|2033-04-24 23:46:39|2064-12-09 12:41:18.605098238|1999-04-04 +-121|-19282|787925706||-39608.35|-3490480.46|-1396998641989.632812|true|opthamology|xavier robinson|2050-05-29 18:50:17|2061-07-15 16:24:02.41944450|2064-10-08 +-104|-6736|272086526|8625937019655200768|-42455.39|-2155542.09|-3341536888638.039062|true|undecided|wendy xylophone|2052-10-28 04:50:15||2103-12-05 +-105|-4059|760466914|3701|12507.09|2661135.97|1085001013184.765625|true|history||2056-10-06 10:43:05|2024-10-19 16:47:43.958389682|1991-09-28 +90|-25683|745725681|-7692192232238678016|364.62|-695924.61|-918004138590.973145|false|yard duty|mike polk|2052-05-18 02:04:21||2015-02-25 +-90|9110|1398486099|1291|-18652.98|4330260.30|-2988564000800.586426|false|chemistry|sarah robinson|2030-12-19 06:51:08|2073-06-18 12:33:18.634781669|1999-02-06 +53|24715|476919973|3887|-33746.36|-1812815.81|2248167382355.781250||values clariffication|calvin garcia|2028-06-28 08:30:31|2039-03-21 22:46:13.628314022|1994-05-06 +-112|14286|287239980|1462|23269.50|-3421045.14|-4825619680711.810547|false|geology|katie johnson|2023-07-03 15:05:18|2018-11-09 18:46:47.759800359|1983-09-25 +-36|3213|-1528033060|-8485389240529354752|33155.26|3831347.85|-2604012470736.947266|false|study skills|ulysses ichabod|2039-07-17 08:06:17|2032-05-11 08:35:57.629571826|2033-04-05 +-122|-16872|1520375588|8660248367767076864|-46409.01|1435619.95|-301617019681.543945|true|nap time|david steinbeck|2028-09-21 14:32:03|2053-05-02 22:50:04.195045396|1977-04-22 +|32092|-951728053|-8115963579415650304|17565.73|-4855596.00|-1567705616965.078125|false|wind surfing|ethan ovid|2079-03-11 06:37:16|2080-10-21 08:32:40.577382791|2021-08-16 +108|-6933|-66112513|388|-23820.11|-2660889.99|4673408308800.226562|true|values clariffication|calvin brown|2013-07-21 19:03:27||2078-03-23 +79|-6142|1295073553|-7262049693594943488|34920.29|-2775037.93|-3850646756153.040039||chemistry|sarah king|2062-11-28 06:34:11|2064-12-02 14:20:25.689540381|1970-10-19 +114|17164|-217785690|1343|-22425.89|-4109302.98|1542043552284.902344|true|biology|mike miller|2043-01-06 00:29:33|2027-09-11 18:50:09.224829213|2084-05-01 +79|22366|1632769786|1508|-16193.28|-4581299.04|-4048240005182.783691|true|opthamology|sarah zipper|2027-06-15 04:28:56|2024-11-18 13:11:30.807086190|2094-07-09 +-65|5785|-648766606|1701|-25497.04|3706795.80|4406779957872.437500|true|study skills|tom polk||2047-01-20 19:02:44.296212906|2079-09-24 +-23|-29475|2052773366|8837420822750314496|-44389.81|-3244548.09|-3320189294654.056641|true|xylophone band|katie carson|2014-08-14 04:46:15|2032-01-06 02:52:13.841451923|2008-01-10 +25|24014|-1318045616|-8704234107608203264|-25094.94||1313758909596.565430|false|study skills|irene young|2034-08-06 10:56:24|2050-11-22 00:49:32.763404963| +67|-9614|1124269631|3680|29490.38|-1942538.00|-2214662106936.273926|false|topology|katie ovid||2028-06-06 03:25:20.277859556|2088-10-27 +23|-21708|-94709066|7271887863395459072|-43725.17|-582351.40|-1251943808107.505371|true|mathematics|oscar garcia||2019-08-07 09:24:28.969847804|2091-10-12 +-49|-12071|1384071499|8156018594610790400|44500.74|-423299.81||false|mathematics|zach garcia|2062-01-17 23:46:46|2035-06-22 17:50:21.193860499|2068-12-27 +-34|-27553|1860113703|8708845895460577280||4443055.22|-3152882360663.084961|false|geology|priscilla young|2032-12-02 17:45:28|2030-02-07 12:05:50.442818058|1981-07-26 +||1634441052|2847|-30620.44|-4164391.70|4767856866280.625000|true|kindergarten|rachel steinbeck||2015-02-23 17:38:53.735735894|2038-02-01 +-126|-31537|693331761|2509|-25833.15|-4801160.87|2804616317735.586914|false|kindergarten|priscilla thompson|2046-02-05 15:38:03|2035-04-25 16:30:39.959832372|1983-09-26 +121|-6219|65956045|1987|-13776.59||3855241018435.791016|false|joggying|nick laertes|2076-07-22 18:55:23|2045-05-01 12:49:24.875445|2104-07-12 +-8|30861||8470141334513098752|6021.11|3057994.15||true|undecided|gabriella thompson|2056-03-17 16:36:40|2076-09-17 19:51:03.971998194|2019-06-03 +108|-10687|977292235|2108|34147.75|3835815.78|-3242583557065.046387|true|xylophone band|luke van buren||2026-07-29 12:13:07.350517258|2004-10-09 +-103|5235|283322761|-7623405558242500608|-9121.56|4969099.99|1418203690420.333984|true|history|ethan ichabod|2052-01-27 14:18:09|2076-09-25 20:35:14.535725735|1995-08-27 +-61|3063|-870624802|8687042963221159936|3943.90|-209028.71|-2183718197982.749023|false|joggying|calvin davidson|2034-06-08 16:02:13|2029-09-24 14:25:09.37764381|2105-01-30 +-96|-10516||3568|-19009.76|3239989.12|-4784778822088.213867|true|topology|oscar nixon||2036-02-03 04:58:16.203066567|2065-12-22 +-50|-30748|-1735287250|7746402369011277824|-4179.91|1292492.11|2324680845107.813477|false|mathematics|david allen|2016-06-22 21:51:17|2069-09-12 15:00:57.362462590|2072-09-24 +-103|9969|-1703620970|-8387536830476820480||-3049943.90|4709582975677.548828|false|zync studies|calvin allen||2079-11-27 18:43:43.659151983|2044-09-10 +34|-21818|818313200|3060|-38828.51|-2063369.12|-3583867768957.524902|false|debate|sarah johnson|2064-02-16 11:03:07|2019-10-12 04:27:17.822098134|2004-10-26 +-85|19350|1409872356|-7512289590991544320|-10184.90|3793945.90|-923624349228.369141|false|industrial engineering|katie white|2032-02-14 12:11:48|2061-04-03 12:08:01.5162482|2081-03-17 +-78|-28932|187893585|8235179243092090880|-23609.39|962981.03|2966147671023.726562|false|zync studies|luke ichabod|2017-01-05 14:49:04|2059-12-23 13:06:00.979846594|1993-11-14 +92|2728|398960205|8540237852367446016|-8750.79|-4703249.19|-501603049952.486328|false|nap time|tom king|2030-04-28 01:59:00|2018-08-22 06:45:33.15399240|1977-02-18 +8|6144|1437057145|-7265998318110711808|-21666.49|361449.07|-3148061620108.357422|true|quiet hour|luke johnson|2065-11-30 23:06:00|2052-07-18 07:53:41.806082172|2062-06-04 +-120|26859|-1554325042|583|15171.32|-2158930.81|-301298241024.774414|false|undecided|victor van buren|2050-07-22 13:12:51|2063-08-25 00:41:53.424629732|1979-04-17 +-124|-10095|1033609549|-8318886086186213376||3677625.78|4672389589988.128906|false|history|irene johnson|2056-03-14 14:13:51|2077-11-14 16:16:46.603310412|2084-07-26 +75|-23638||2410||-968637.64|1698116680328.283203|true|debate|rachel allen|2042-10-06 19:18:58|2057-08-09 04:27:05.138333574|1993-11-01 +-59|1361|-360113158|3021|10379.72|-2330239.84|2488834645794.498047|false|opthamology|bob king|2063-06-09 19:51:43|2037-08-18 09:27:00.913006136|2011-10-15 +|3523|661380540|-8018511948141748224|31005.68|-1939975.71|561437334048.342773|true|wind surfing|quinn thompson||1970-01-01 00:00:00.212340798|2086-01-31 +40|-32296|84231802|2886|-4154.25|4389868.65|378820126909.822266|false|american history|holly laertes||2065-08-04 06:59:17.824387481|2014-11-15 +-32|-6637|-1726479726|-7831320202242228224|39531.99|2377538.79|1099330213298.444336|false|debate|victor davidson|2050-04-05 23:38:10|2022-03-12 21:56:07.234951116|2018-10-08 +84|-18387|346562088|7998357471114969088|44620.73|4045062.26|4748679788424.253906|true|kindergarten|zach quirinius|2020-07-07 16:26:44|2047-03-31 09:15:12.887634795|2084-02-05 +-27|-10815|1769324649|7936149988210212864|11543.56|227674.23|-812606022147.335449|true|zync studies|alice johnson|2048-05-19 07:13:08|2062-03-12 06:53:03.331725965|2076-03-18 +81|2643|2140632003|-6970396058557005824|19854.94|2938603.02|562510896793.071289|true|education|david davidson|2068-04-12 18:18:24|2041-04-04 08:06:20.143031301|1972-02-24 +-24||780938234|-7083646746411720704|-16507.75|-3851733.33|1863907193854.252930|true|joggying|luke falkner|2049-02-04 12:28:05|2057-01-09 07:22:38.778950773|2100-08-23 +-101|-8857|-1918651448|-8675661101615489024|43481.62|149175.06|-2178760699903.925293|false|joggying|mike davidson|2058-06-04 16:19:32|2072-08-14 09:56:17.194554282|1976-03-18 +|-10821|770574055|-9126793997498957824|-36806.07|94051.69|3234847750887.297852|true|yard duty||2051-04-08 16:12:47|2075-11-21 21:55:19.18153321|2066-08-28 +42|9158|776606164|2506|-24639.80|-4869417.64|3079389364956.313477|true|industrial engineering|alice laertes|2044-10-22 22:17:52|2074-08-21 15:27:43.96892721|2058-05-29 +|7180|-51612681|7249443195032985600|-7568.74|1202707.37|-2119064600783.993164|false|undecided|calvin ichabod||2022-04-25 10:39:59.377128631|1982-07-06 +29|10891|1153811197|-8243487285852766208|11569.34|4212709.34|1034657320312.746094|false|american history|victor brown|2031-09-30 15:01:06|2025-09-04 14:13:00.976690553|1993-05-12 +-122|7654|-734921821|3941|7256.71|517028.01|-1114345601613.280273|false|topology|zach carson||2070-05-25 06:36:39.297148492|2001-05-07 +-50|-28968|-1460613213|8875745082589929472|-7442.32|-2702250.82||false|philosophy|priscilla brown|2032-06-20 09:31:24|2052-09-03 16:21:52.208215796|2087-08-18 +-112|-29907|206121314|-8705403811649355776|-44201.12|-897624.69|-2173857521374.103027|true|xylophone band|xavier brown|2059-05-21 10:37:20|2065-01-02 03:32:19.285960165|1998-03-18 +-6|17701|-1606567895|8410599906334097408|23194.74|4572852.32|-1064163809823.100098|true|xylophone band|holly nixon|2044-04-30 10:00:19||2011-12-07 +-117|-5869|1523657918|-8400045653258444800|-37316.59|-1140903.56|3668214733218.100586||study skills|fred brown|2066-10-11 19:46:58|2057-04-21 18:12:07.438157094|2072-06-21 +-58|-2118|-37876543|-8859107121649893376|-2682.16|-2318215.28|4457864918964.134766|false|zync studies|bob van buren|2065-12-18 19:50:19|2043-05-16 22:15:58.560013699|2000-07-15 +19|-26060|1425362689|2201|35741.32|-635373.52|-1660120664738.187012|false||mike quirinius|2055-11-26 10:21:07|2043-11-02 23:23:13.175695849|1978-08-05 +-115|1755|596045726|-7000925438663041024|1169.13|1224590.95|4349386575138.148438|true|xylophone band|calvin quirinius|2014-03-11 02:26:36|2019-09-03 01:49:36.181933289|2088-02-28 +-95|-2617|1229172951|490|-18461.73|1170976.95|1480054571327.649414|false|mathematics|quinn hernandez|2021-05-20 06:00:47|2014-10-28 09:16:31.610844395|2080-12-12 +30|-28244|1978200605|1910|7799.30|-123266.43|-1103541868445.567871|false|undecided|quinn underhill|2019-08-08 22:46:59|2059-05-28 04:51:35.498984116|1981-10-31 +-83|-15497|1000106109|8900351886974279680|46362.81|-4358428.80|3426770165622.876953|false||ethan brown|2027-01-01 03:13:01|2063-08-29 02:30:48.169621762|1992-08-21 +-93|4032|879289168|7343171468838567936|29799.26|-3707213.21|-3700102015935.797852||education||2080-10-01 22:58:13|2042-10-22 03:29:04.44238849|2038-02-21 +7|-29895|-464804906|2131|-21839.05|4389713.57|-1713151304480.397949|true|quiet hour|luke ellison|2027-10-30 14:21:42||2066-10-25 +-106|-22071|-1247229632||-38427.52|-2639190.56|-755064468729.002930|true|religion|victor robinson|2044-02-05 12:48:23|2058-01-26 21:26:48.253653944|2010-09-07 +-72|-5907|-211669740|3208|-38197.98|781541.24|-2726366048183.592773|false|industrial engineering|alice allen|2036-11-15 10:48:44|2074-12-03 23:58:03.654571719|2076-11-09 +-8|10600|-1155174991|-7420448501073051648|-48598.14|-2840797.35|966723065681.023438||kindergarten|luke robinson|2075-10-15 20:32:00||1990-02-19 +-89|-8267|786565385|3418|40746.89|-3336502.60|-3655334890183.326172|false|history|quinn van buren|2073-12-08 10:59:27|2059-12-18 19:47:35.135760242|1992-09-21 +58|24847|1115197541|-7030489936116252672|-32967.44|-3216068.70|-4540163781577.817383|true|study skills|ethan quirinius|2057-07-19 17:20:26|2061-01-07 10:20:58.287466414|2058-04-02 +82|||1093|-41542.22|-2852753.19||false|mathematics|oscar ellison|2078-03-12 21:36:59||2040-03-02 +7|17107|-1227085134|454|-45679.81|4280344.76|-4755957353103.070312|true|biology|victor robinson|2075-06-02 02:53:30|2040-12-08 01:16:10.194735899|2020-12-19 +-109|-25692|-714594143|2791|15638.71|4868354.39|-1920412941995.195312|true|yard duty|priscilla brown|2013-03-25 15:38:28|2039-10-25 16:44:04.385364994|2073-11-05 +98|19215|30036142|1252|5512.48|2861312.90|304220501137.706055|true|zync studies|wendy polk|2074-09-18 04:34:04|2042-10-10 04:18:49.518287517|1992-09-29 +-119|-20879|-1900894010|19|-14328.52|3163463.29|-2231521147965.978027||american history|xavier van buren|2051-08-02 17:01:13|2070-06-10 09:08:31.433429764|2049-12-19 +-80|11979|874824958|485|-49403.10|1836049.78|-3891815088473.258301|false|american history|ethan king|2023-03-21 16:09:44|2018-10-09 10:15:27.268042756| +-122|4568|1505665168|-7453525026342617088|-47688.82||-2370722163282.117188|false|mathematics||2043-02-15 19:11:53|2080-04-06 03:34:04.633286901|2079-05-24 +|2677|-2077771325|1604|4199.81|1851095.86|-3091236716436.114258|true|philosophy|fred brown|2051-05-22 03:56:26|2073-04-07 19:52:50.601742131|2023-01-10 +62|-14280|-2043805661|8365058996333953024|11341.10|4541245.28|4402724332930.460938|true|xylophone band|yuri robinson|2080-04-12 01:21:14|2031-04-06 19:14:59.55187421|2031-05-31 +62|13578|738356485||22454.83|-4779.61|-1857979799639.935059|false|nap time|ethan king|2046-10-08 18:53:18|2058-12-03 23:22:35.944838503|1971-07-29 +-48|-22938|340384179|-7877598807023386624|2517.88|-2373948.65|947585735001.510742|false|opthamology|david thompson|2075-07-24 01:40:11|2036-06-14 00:00:15.278560351|2003-09-18 +-108|-23194|-1198465530|3055|-36853.20|2315107.36|-1344917461892.407715|true||rachel quirinius|2041-04-15 03:29:16|2043-07-29 21:24:09.491072788| +-112|19350|-705887590|-9079801920509001728|42578.38|2583540.14|885849762897.948242|false|american history|ethan white|2055-05-21 11:56:02|2059-12-29 12:16:34.533626678|1984-03-14 +33|16430|1347876055|-8465978403747037184||2398238.05|3976258329685.542969|false|undecided|david quirinius|2040-12-15 14:20:04|2059-03-26 08:14:53.410162567|2013-04-21 +|-21574|62293025|2426|14978.09|3616509.09|3825560324453.007812|true|history|sarah falkner|2035-04-19 13:32:57|2061-05-10 03:23:57.557730657|2099-03-03 +5|-6114|198017473|135|-14085.31|2000803.23|-2919243579540.449219|true|american history|nick brown|2073-05-02 15:11:49|2047-05-06 13:18:00.344896111|1997-06-17 +35|28128|1286367391|-7488415863027367936|-26817.08|-797714.37|3875352447190.109375|true|study skills|jessica brown|2072-03-19 14:27:46|2018-12-18 23:20:30.63266134|2080-12-24 +78|-22358|376076075|-9136398397785948160|46846.67|-1700725.96|-899635084786.325684|false|industrial engineering|katie king|2017-10-06 08:33:37|2057-10-12 20:55:36.383445468|1972-02-28 +-34|3009|-1804244259|579||-2740315.70|362659766665.806641|true|zync studies|sarah thompson|2032-07-12 22:13:10|2035-11-06 17:59:27.77357393|1996-08-02 +-103|4081|2083836439|8144552446127972352|36570.50|3555782.96|3609640367332.538086|false|philosophy|sarah davidson|2031-08-26 09:58:56|2023-01-11 17:04:23.449037266|2041-06-07 +39|-16367|1776456512|6933451028794925056|-43403.36|-4299638.88|793504824242.568359|false|forestry|ulysses thompson|2028-12-06 04:06:25|2055-06-24 20:19:48.682407175|1971-01-13 +37|20128||1777|35965.37|-1496116.32|-3499447525525.525391|false|linguistics|calvin robinson|2067-08-21 11:00:04|2033-11-12 22:25:15.735331075|2019-10-13 +45|20254|1033836308|-8927968289860370432|-47362.97|3785304.85|-3394951194042.761230|false|forestry|david thompson|2017-04-09 00:02:35|2054-01-29 09:25:44.815093672| +-99|26910|-571587579|7265141874315517952|-28011.29|-4797236.03|4313736848665.250000|false|wind surfing|katie underhill|2080-01-07 15:47:45|2057-04-03 15:14:56.240582613|2046-03-03 +-118|16437|727802564|4078|32210.62|913010.81|2387469547668.992188|false|undecided|fred ellison|2030-03-31 06:22:45|2061-03-01 05:58:51.835198480|1982-08-19 +98|-11929|596242714|443|-18850.34|-2514812.80|3841757426531.521484|false|undecided|tom miller|2056-04-06 22:21:49|2023-11-11 06:58:15.825259324|2070-01-08 +-1|-22217|-743680989|7391208370547269632|1450.95|3168984.07|422951017333.055664|false|topology|priscilla thompson|2047-05-23 07:19:55|2019-08-24 23:35:52.785182782|2092-08-23 +-23|32589|1575091509|7790728456522784768|43789.16|-3767707.87|449819577744.783203|true|forestry|quinn thompson|2049-08-29 23:03:28|2059-03-17 09:44:04.511510153|2082-09-14 +-48|-22447|669871113|8398862954249560064|45334.49|-168095.10|-95855026425.759766|true|quiet hour|ethan laertes|2026-06-26 02:42:50|2014-08-21 12:14:15.695317873|2075-09-12 +114|27046|397255100|-8836899523028312064|30215.93|-717006.21|-357328163291.050781|true||zach brown|2073-12-21 08:21:58|2061-05-01 00:50:27.746635942|2021-06-09 +9|-11679|-2076886223|-7805985795815342080|19575.50|120994.39|380373641521.103516|true|xylophone band|ethan carson|2076-07-30 01:09:00|2057-09-20 07:35:34.305010925|2065-08-02 +-5|14783|531459992|1439|19351.91|4803315.07|-574114492621.049805|true|topology|jessica thompson|2072-08-04 11:14:51|2025-01-30 01:47:54.411372161|2085-08-12 +-41|22870|177391521|7266437490436341760|12.17|4688982.65|-4069350543654.266602|false|religion|oscar falkner|2016-04-04 12:22:03|2056-09-18 10:09:51.803143104|2104-08-29 +-123|7959|311478497|-8852770376039219200|-44161.63|1078252.98|1685122154602.396484|true|values clariffication|irene hernandez|2022-06-21 13:36:54|2057-10-24 03:22:01.465719271|2102-04-28 +82|-17995|673904922|3119|31236.39|3313603.14|350230667228.643555|true|religion|calvin steinbeck|2035-06-03 08:40:07|2047-07-13 00:30:59.312757955|1979-08-05 +109|-28299|1042237722|2962|-49297.70|2544504.56|1300896197981.842773|false|kindergarten|gabriella falkner|2045-09-01 02:14:09|2049-12-12 02:33:51.210858024|2041-12-08 +|7483|-1974257754|9001907486943993856|-39292.53|2604166.52|2628816035521.843750|false|mathematics|jessica nixon||2024-04-14 05:51:51.799661240|1973-10-11 +37|29639|218917585|-7378096180613840896|2468.85|545061.80|4576650304788.998047|false|joggying|quinn ellison|2030-03-18 10:56:59|2064-04-10 13:26:19.857498352|1973-05-29 +54|13145||7091300332052062208|-17351.53|4747854.89|3817727970940.189453|true|topology|oscar thompson|2065-09-11 19:52:17|2038-02-26 14:34:48.662632111|2098-03-08 +79|-4491|-559270035|-7818454479651135488|32811.79|-2589530.66|3650613746347.026367|false|forestry|zach polk|2062-04-28 22:14:44|2053-08-03 04:16:15.344431898| +123|31427|-1131684944|-8431492599012163584|48223.45|-4797838.11|4766118630785.527344|false|philosophy|quinn white|2035-12-20 20:20:18|2055-03-06 04:00:57.170922096|2071-06-23 +-57|-3602|-373034494|-8521578237232529408|35310.58|523737.60|4138846175212.621094||industrial engineering|ethan polk||2070-05-20 09:18:23.921779415|2089-12-19 +-6|-16722|-490337498|1926|43246.64|-22165.47|-624395488497.526855|false|nap time|jessica falkner|2070-09-14 21:01:42|2024-10-17 22:24:01.153750276|2069-10-18 +64|-3219|-1829691116|7490717730239250432|46586.47|-1915228.77|1287655745842.997070|true|wind surfing|fred ellison|2060-10-10 10:17:38|2080-01-01 16:19:34.640061653|2095-02-04 +-26|-20949||-9187662685618348032|43398.02|-49310.50|1863250559721.372070|true|study skills|katie carson|2048-04-09 07:40:02|2073-09-18 13:35:45.258178237|1984-12-02 +-50|13078|135341845|2016|47991.75||-3445060192851.059570|false|zync studies|rachel young|2024-12-31 09:01:02||1970-08-12 +-41|27758|1646811064|1153|-4313.26|-3049537.40|-69377778943.611328|true|topology|katie johnson|2041-02-02 14:22:59|2041-06-19 10:09:46.112258643|2041-07-24 +-70|26232|-1447263708|2277|41062.58|-2943975.09|-2631454750987.565430|false|linguistics|yuri miller|2051-01-04 12:34:39|2075-09-08 01:57:00.107926096|2070-02-10 +|-22858|1743696703|3300|-4380.97|-2069211.91|-4596153868922.030273|false|study skills|rachel van buren|2080-08-26 15:15:51|2030-04-01 16:16:55.346669591|2015-09-27 +-40|3354|1303632852|3244|-21821.23|3976574.38|-4697749109705.853516|false|zync studies|quinn robinson|2071-08-03 03:03:18|2033-11-19 04:14:03.372021127|2093-10-02 +-56|11120|1949494660|7107604675626008576|11034.18|3802098.40|-3918244512545.996094|false|wind surfing|calvin nixon|2022-03-17 12:57:17|2020-11-30 18:42:55.661360529|2038-10-05 +-57|-20329|-1857500489|1198|13491.58|-2693679.28|755404222558.269531|true|mathematics|oscar ellison||2033-01-29 05:36:21.574403565|2092-09-14 +|-6735|-2138343289|3401|-22767.90|2032418.93|2618674044147.155273|false|xylophone band|xavier davidson|2019-01-23 07:48:23|2018-12-23 15:42:16.611413141|2046-12-15 +-22|10761|-1226425562|7718825401976684544|8162.40|1047714.74|-2476610981011.973145|false|opthamology|mike robinson|2057-11-26 17:53:27|2069-08-23 05:01:36.124435431|2092-08-24 +-40|29502|-809805200|-8518258741831680000||1144686.92|-4590760977006.702148|true|mathematics||2036-10-09 18:06:29|2064-10-14 13:41:49.171097321|2081-04-05 +50|24081|-728541537||48961.12|-4012888.15|1070384818656.826172|true|topology|victor xylophone|2016-05-04 04:35:48|2038-11-09 14:41:33.447548472|2051-02-08 +102|-6073|1464703053|2004|-38318.30|3968580.02||false|yard duty|david white|2046-02-20 04:57:04|2060-04-05 20:06:25.19768150|2102-06-28 +-41|-11863|-116484575|7801697837312884736|38211.68|-480570.59|-1334633602495.500977|true|nap time|ulysses quirinius|2036-02-23 15:54:13|2068-06-07 20:02:06.356997102|2088-09-29 +-59|-28646|1797164732|3949|18310.99|4375064.78|2366334406338.168945|true|american history|holly thompson|2027-01-27 17:59:41|2045-11-11 14:23:14.608629099|1987-09-11 +123|16767|1198701102|7762823913046556672||1643132.07|2312892585063.259766|true|linguistics|sarah underhill|2017-01-27 09:35:20|2035-06-28 17:21:09.561662434|2086-02-05 +127|-14936|1772349172|-7884460946615984128|-20111.34|-2887093.65|-2318194071335.035645|false|history|victor van buren|2018-11-16 12:15:48|2065-12-31 08:22:47.150581738|2100-05-20 +18|2612|1373871781|-7255010240787030016|49301.50|3253928.69|-4736789216462.362305|true|biology|ethan ellison|2049-01-22 13:36:56|2015-03-06 18:11:17.822359715|2103-01-05 +109||1647411522|-7262384251828518912|3972.39|154588.69||false||mike ellison|2015-10-15 23:12:55|2063-04-26 00:01:09.31563180|2026-05-22 +107|-2027|-1856034030|9132009829414584320|36330.70|2284543.68|-3148453530441.202148|true|study skills|gabriella nixon|2031-01-12 14:14:17|2050-02-14 06:21:51.178052619|2016-01-05 +7|-12626||7573530789362262016||-1103225.79|-3059007558357.649414|true|industrial engineering|katie robinson|2032-10-19 18:30:33|2043-10-22 16:20:40.509237844|1984-06-13 +49||-36038293|7157247449513484288|||3344159968330.622070|true|geology|holly allen|2072-05-19 04:19:02|2064-02-17 13:02:26.377162854|2082-10-30 +37|-26666|-890552359|3493|-41018.63|-3192687.31|610319388952.653320|false|kindergarten|sarah young|2066-06-27 21:59:53|2041-09-23 12:15:37.914672228|2101-03-11 +-43|-12811|1265528735|7491898395977523200|-17199.24|2696923.64|3366546613003.044922|true|undecided|ethan robinson|2029-10-16 04:28:37|2069-03-21 18:01:09.359881056|2039-11-24 +126|2683|-1462604138|-7276111129363046400|12788.08|-3553203.52|2029170799165.562500|true|linguistics||2061-01-10 10:34:14|2036-06-23 07:16:14.299460550|2072-11-12 +-109|23031|1517488324|275|30188.31|-3437436.90|72393656889.993164|false|forestry|luke quirinius|2073-09-17 10:02:35|2058-07-18 11:06:36.866728379|2072-05-24 +-119|-21412|962712814|2715|-42015.52|-3416767.70|2730111077795.705078|true|nap time|ulysses brown|2031-03-11 11:56:59|2035-09-11 18:57:20.545053849|2009-02-02 +-109|-32022|793047956|8150115791664340992|-13856.97|3208380.07|3846344885594.810547|false|education|mike laertes|2037-10-15 17:01:28|2070-05-09 00:38:50.111446261|2025-09-01 +-1|-20591|972835688|7844258063629852672|-30899.74|2941710.70|2520339817545.540039|true|joggying|victor quirinius|2053-05-10 11:05:39|2025-06-02 14:48:41.118807009| +-86|-28097|291866793|1095|-13029.79|2395802.44|4638765048183.728516|false|debate|nick hernandez|2064-08-23 06:30:52||2103-11-18 +|16439|1972940844|8759089349412847616||2775872.41|2078988628132.627930|true|philosophy|nick quirinius|2020-10-01 01:39:49|2046-10-08 04:45:36.155827749|2046-06-24 +8|-7230|-2065080832|950|3517.45|-355907.54|-3463587144624.789062|true|biology|priscilla falkner|2077-07-28 16:36:07|2034-01-22 01:11:00.675336432|2051-01-03 +50|-11769|-558456218|6960137166475911168|1455.89|-3580235.81|-2225358531562.626953|true|undecided|yuri xylophone|2028-03-16 13:31:23|2036-10-04 05:21:52.917455779|1983-01-13 +-92|1558||-7612455481940246528|20027.51|4940501.37|-2309132393323.310059|true|american history|alice king|2023-02-04 21:40:55|2072-10-28 16:02:05.785926481|1980-05-03 +-110|18346|-1603374745|7471208109437304832|2980.46|-4262671.69|-3375577964698.521484|true|philosophy|alice zipper|2061-06-20 11:36:22|2080-05-22 04:06:26.257944476|2080-04-10 +-28|-21648|1081920048|1501|-39377.99|3185244.69|1714008069386.992188|false|values clariffication|tom thompson|2063-04-15 02:39:09|2075-09-24 04:37:07.641525192|2084-05-31 +26|29245|-817093900|-7145585429014888448|29563.03|2338619.47|-47947487681.199219||geology|priscilla polk|2015-11-23 03:51:26|2048-05-27 06:59:27.15089547|2053-05-23 +90|-3222|1301426600|7794244032613703680|43143.95|4941656.20|3845904537462.523438|true|chemistry|irene hernandez|2054-10-20 19:50:57|2075-08-30 11:18:34.922622163|2047-02-03 +-35|27983|975932228|-7510418793070075904|-31952.67|-547797.70|4033293860789.123047|true|geology|victor carson|2042-12-09 03:28:14|2065-01-16 03:24:08.971263541|2010-06-30 +-14|-29239|230954385|7983789401706094592|28755.14|2806157.04|-3764755036302.638184|true||wendy robinson|2022-06-26 13:18:28|2033-05-18 03:11:50.871005511|2007-03-28 +-86|-15393|-1392487784|3990|25365.72|-3122775.81|-3136333430552.511719|true|study skills|irene carson|2075-08-29 11:01:05|2058-01-25 11:54:54.863071401|1985-03-10 +58|-31551|1443426396|3830|-44944.38||-1901078252690.346680|false|mathematics||2069-02-25 02:44:41|2026-03-16 18:07:16.176024280|2087-02-16 +-79|-12463|-37773326|-7152177800841502720|15979.17|136523.07|4328797369585.437500|false|zync studies|fred hernandez|2074-01-21 22:42:03|2063-04-17 17:43:27.97971264|1986-09-21 +-125|-29323|44009986|1856|36983.95|841608.25||false|history|rachel young|2052-06-19 09:14:41|2025-12-14 16:53:02.735673012|2076-10-09 +-62|-28146|-901778330|2712|-29272.48|495232.86|-4971306749304.673828|false|values clariffication|david young|2023-08-22 20:04:18|2018-02-08 01:53:45.121138509|2067-01-28 +26|-24538|1767359228|-8746702976270385152|-10262.64|3827137.43|738589831875.913086|false|wind surfing|zach brown|2013-07-02 04:00:34|2039-08-29 12:57:02.351355581|2047-07-31 +21|7128|-217930632|-7903158849011843072|777.32|-3589619.96|424579951542.725586|true|philosophy|rachel robinson|2046-01-04 01:02:07|2066-12-14 05:45:23.618651463|2006-08-23 +-87|19739|-1699049982|2244|4616.60|2733769.47|2986145815124.956055|true|linguistics|yuri carson|2043-05-07 16:06:28|2076-01-07 23:49:22.432671324|2089-08-31 +66|29834|1307148254|2735|42117.25|1129420.19|4620474372066.283203|false|kindergarten|jessica xylophone|2051-08-08 09:05:51|2048-06-06 23:50:37.973877723|2060-05-08 +77|21511||1168|47905.76|-2302110.36|-2332600454045.881348|false|debate|mike van buren||2046-10-07 14:52:17.37357221|2001-12-10 +-31|-9482|1330219997|-9080956291212132352|26375.90|-1329189.97|1655214180391.766602|false|chemistry|holly xylophone|2051-07-18 20:15:33|2058-08-16 06:28:29.740534617|1982-12-07 +-43|27454|219415594|945|-12127.36|4216836.73|3646917581760.433594|false|education|calvin steinbeck|2076-07-10 08:53:35|2018-10-06 03:52:24.596896729|1983-09-04 +55|-24267|1458051497|8417381121663746048|49672.46|2222816.47|-3645327331789.474121|true|yard duty|wendy garcia|2036-06-01 21:18:52|2018-11-11 07:00:13.274801916|1996-09-30 +-13|-32541|1563120121|3823|28411.76|1170745.89|2011473770962.695312|false|undecided|nick polk|2023-03-23 06:07:51|2076-10-16 02:23:25.407392909|1985-12-24 +103|18395|-2144138362|-7868306678534193152|21455.88|-4870777.55|-2770023875366.263184|false|american history|victor laertes|2047-01-10 23:37:37|2032-02-23 13:39:32.775684381|2052-11-07 +-23|17964|-1100641049|-8518060755719585792|42499.60||-3519839102751.412109|false|chemistry|luke miller|2015-03-11 11:14:33|2068-07-24 11:17:54.14270195|2080-02-08 +20|32096|1796950944|3703|6669.34|141075.74|-2930607649235.206055|true|wind surfing|ulysses garcia|2013-02-18 21:06:48|2015-01-14 11:10:53.143208292|2030-08-16 +-60|-4804|-1988508336|7027529814236192768|36634.88|292742.80|-4785713903272.927734|false|kindergarten|bob young|2028-02-08 13:16:09|2058-06-30 12:21:12.174769417|2103-08-30 +-31|-15633|1109664665|-9105701280936501248|-7200.23|-3290965.94|-2858696088737.069336|false|wind surfing|nick king|2071-07-06 14:12:56|2072-05-07 22:23:28.909242175| +50|28118|-432218419|7570474972934488064|-23669.50|4714268.20|3257421256704.163086|false|undecided|nick white|2016-04-08 07:34:48|2041-04-06 04:08:01.271192129|2075-07-29 +-64|23229||-8430370933326536704|34019.68|1961397.66|2639849725646.250977|true|religion|luke carson|2079-03-12 02:12:51|2077-01-08 09:54:43.763841247|2004-07-25 +-49||152891873|417|||4308469366197.300781|false|forestry|irene underhill|2079-06-08 05:52:56|2029-11-07 18:19:49.927077461|2033-09-20 +-47|-20729|1673218677|49|37640.59||-713961786513.870117|false|debate|xavier falkner|2020-04-17 16:54:30|2028-06-03 04:57:19.609929160|2082-08-25 +-16||-1733560816||24701.68|-4273424.19|-2584537633556.181152|true|biology|david davidson|2053-08-30 09:50:24|2051-05-28 08:21:28.136207105|1991-03-05 +55|-24186|-1871209811|7068517339681259520|46423.34|2538160.45|-3739128624481.580078|false|yard duty|fred polk|2038-03-02 19:52:08|2066-12-04 13:20:32.335880942|1994-06-21 +-8|26625|-906986958|2187||2742196.26|-4507463460711.384766|true|history|wendy johnson|2064-06-20 11:56:49|2025-07-17 23:27:04.166297070|2052-06-20 +30|-12880|-40407627|2348|-6268.82|2266879.88|3002655520364.605469|true|topology|quinn underhill|2063-07-19 09:45:06|2045-02-16 17:39:10.146220452|2075-03-15 +-85|-15762|-1556127172|-7139677575412686848||-4483436.56|-1265174168415.015137|||fred nixon|2061-03-21 05:44:18|2014-10-08 04:02:23.556239597|2071-03-05 +-6|15862|1012696613|888|-22200.62|3639449.27|2198173643342.400391|false|biology|david hernandez|2051-03-03 20:56:40|2058-12-04 08:26:03.321045989|2027-01-07 +92|-23550|1238986437|921|49411.28|1421037.00|-4845225760189.179688|true|history|ulysses underhill|2036-05-02 17:20:37|2018-07-15 18:49:56.958391676|2092-11-15 +4|18984|-267130580|-8034414142083170304|34672.91|-4128287.64|766368935100.487305|true|education|fred steinbeck|2079-07-18 08:49:16|2045-03-01 15:48:34.880096673|2053-04-30 +54|29015|-1065248998|-7330203470474985472||-3027947.92|3399052323913.345703|true|biology|sarah ellison|2026-03-03 11:12:47|2057-08-18 20:13:54.240194383|2059-10-09 +-119|31140||789||-940868.71|-4363934228329.320312|true|quiet hour|zach falkner|2049-03-25 02:38:35|2041-11-22 05:46:48.4658675|2006-04-06 +-127|-31998|-71305062|-7158472098920390656|20591.34|3729248.23|-526374280413.826172|false|mathematics|ethan young|2066-06-15 04:16:02|2030-06-20 07:00:32.309007556|2006-02-26 +51|-1034|-103219371|-7881262505761710080|29627.76|712784.66||true|nap time|xavier zipper|2066-05-06 03:31:19|2030-08-29 00:39:40.299687444|2071-11-21 +-113|26241|-971203543|8451612303224520704|-29948.96|3327680.13|-18523066115.392578|false|nap time|quinn miller|2065-09-30 09:42:56|2037-03-26 02:34:03.815937235|2026-03-17 +104||-996953616|3541|18791.19|-462147.25|2541474056133.629883|false|philosophy|victor zipper|2060-05-20 14:26:32|2068-07-18 13:21:40.858914884|2085-03-29 +37|2784|644934949|8143462899383345152|19598.55|-4115146.61|-1524392874934.043945|false||irene hernandez|2047-08-20 09:34:21|2025-03-27 03:58:40.290018987|2096-08-25 +|-19276|605141554|8383159090746204160|45522.67|-4427581.33|-3551912779492.703125|true|linguistics|luke xylophone|2030-07-10 13:00:24|2048-12-11 23:41:59.785955383|2035-02-18 +-32|-24178|1148500740|-8923529803981905920|-36565.06|3529368.28|2380664601539.273438|true|topology|luke thompson|2073-01-23 21:54:44|2017-08-29 15:18:43.706057935|2022-08-28 +|-3813|1992977592|7885697257930588160|40610.97|4059042.75|-614948955390.488770|true|study skills|quinn garcia|2071-12-14 10:05:04|2022-09-08 09:37:06.875565982|1975-07-07 +30|10615|-847235873|9107991000536498176|-9874.16|-4892978.32|-830926430811.871582|true|values clariffication|oscar young|2031-07-31 13:47:34||2060-07-26 +13|-15389|865013617|1409|-45007.46|1282299.74|-3272482088828.603516|true|joggying|fred miller|2070-08-11 19:19:39|2075-09-01 02:16:50.347835856|2078-10-27 +-96|11809|-1644966759||-14002.93|-4469818.97|1917126159337.136719|false|biology|calvin quirinius|2045-03-07 23:39:15|2032-04-12 02:27:12.657670943|2009-05-05 +20|6372|1478365409|-8675892979328212992|38991.14|-2146326.91|-1669697999836.649902|false|joggying|calvin white|2027-05-03 14:40:13|2065-12-20 12:05:02.853602253|2009-06-25 +81|7299|-1126628450|8920344895701393408|-21909.86|-1392050.93|-3312751733215.968750|false|opthamology|sarah hernandez|2015-04-12 04:15:23|2080-04-01 07:17:45.74683010|2103-02-26 +-61|26540|-968377273|-6974654664348033024|-26186.32|3944430.54|1407237264653.069336|true|zync studies||2049-02-15 00:08:46|2021-07-04 09:11:18.595023146|2043-04-25 +|-13973|1912175355|-8879742387365429248|-24520.99|1718891.92|990917459853.477539|true|yard duty|alice nixon|2022-01-20 13:23:39|2035-08-16 20:58:12.262393960|2095-12-31 +-80|-15299|1318606691|-8938849835283677184|-8804.48|-4963660.13|-4051044335853.006836|false||quinn young|2069-08-28 15:39:57|2031-10-23 14:35:30.465215236|2027-10-23 +-33|-32462|1222935237|-7213775605408178176|9353.59|-2865973.47|-29816572801.699219|false|study skills|gabriella garcia|2073-11-24 15:12:21|2020-10-06 02:54:29.617493343|2018-02-28 +-125|22704|-1096771844|9199741683232399360|28595.90|3955962.84|4910989073004.792969|false|philosophy|ethan van buren|2062-12-30 06:36:02|2054-01-25 08:11:43.748458487|2081-06-29 +-22|-18659|1416850873|8489584373231919104|34567.10|-2690728.31|-4902808539333.527344|false|linguistics|bob polk|2071-07-20 03:43:45|2059-05-11 00:01:57.809402055| +-77|-19912|-340951385|-7344947507044466688|12056.25|-2933320.14|4292999497091.330078|true|philosophy|xavier robinson|2042-03-04 00:33:10|2081-01-29 00:05:29.43863329|2014-02-25 +-101|-13743|-158420748|-8756989568739835904|30210.95|1930694.98|-4980390206441.782227||mathematics|ethan davidson|2075-07-09 02:02:31||2004-11-05 +97|-2152|-1616030844||6923.19|1009414.39|-4803916908307.214844|false|opthamology|irene falkner|2019-05-12 23:35:04|2034-10-21 07:24:20.465428653|2083-09-11 +96|22603|925032386|-8046189486447017984|-8322.37|-3646620.83|3514393344286.617188|false|study skills|david polk|2061-10-25 22:52:55|2047-10-20 20:43:26.170125012|2094-08-30 +70|4491|-1362178985|1287|-45257.20|734363.29|-1819407181812.877441|true|values clariffication|quinn laertes|2015-06-04 07:45:25|2078-03-22 02:23:35.763695497|2012-10-25 +-98|-18140|-835198551|982|39755.57|1372628.14|-1714648472726.310059|false|kindergarten|rachel van buren|2072-04-30 23:06:10|2076-04-03 10:07:19.979852554|2058-01-21 +50|23956|2097519027|615|-24059.46|631764.92|-2495415685760.988770|true|forestry|sarah laertes|2028-12-22 13:28:33|2017-11-07 21:48:52.848530518|1993-12-02 +79|20872|1495575878|-7542857121910046720|-11668.81|-4226007.73|-2260276582420.459473|true|american history|quinn king||2044-03-22 10:07:42.593619051|1970-06-19 +65|-24591|-496870819|1648|-200.89|-3053285.53|-3512079952779.068359|true|mathematics|tom quirinius|2050-08-20 15:12:10|2020-12-29 05:36:09.651652502|2053-03-08 +-68|-29685|-1127100849|-8203008052020879360|37283.21|-1596933.52|4832262437578.585938||geology|oscar white|2048-02-17 07:53:44|2033-11-12 06:12:45.238117579|1973-05-13 +|-3206|-1741895392|-8688153842294595584|-2854.09|-1738342.95|-4557913856473.696289|true||rachel underhill|2077-05-20 02:03:40|2033-08-05 01:49:40.305347119|2027-10-12 +-98|16734|-596963345|-7707867749256445952|-47352.27|-4521296.31|3236784579167.704102|true|education|yuri ovid||2077-01-28 08:26:13.323779922|2093-03-26 +-66|-24368|1832650234|-7894382303337832448|2348.21|46896.52|-888063795956.135254|true|mathematics|alice garcia|2061-05-29 01:02:47|2018-08-11 08:18:59.362818129|2057-03-18 +-5|9716|-499533481|1667|44403.36||2674989060827.001953|false|history|oscar underhill|2055-10-25 00:02:32|2069-02-01 10:23:16.84520652|2053-06-24 +48|-9183|-607285491|8780196485890555904|75.56|-3870004.21|662312551004.902344|true|yard duty|sarah thompson|2076-06-19 08:17:36|2013-11-07 19:36:51.34765657|2045-10-15 +55|-15109|56316391|-7404057145074712576|2893.22|-4203203.26|-3201041913797.339844|true|kindergarten|sarah polk|2044-09-05 22:10:18||2093-11-05 +-69|-20946||-7433265617153343488|-47857.01|1123959.85|-4751032804232.125000|true|religion|gabriella allen|2046-02-04 08:22:40|2021-11-15 18:22:18.608780184|2069-04-29 +7|-1180|-423378447|1127|-30027.48|-1414107.87|4302554900117.384766|true|zync studies|oscar white|2020-12-23 10:18:38|2050-09-21 09:03:11.214720790|2099-04-24 +11|14376|234452496|-9149719074367946752|41986.01|4484955.64|-1431661810573.672363|false|wind surfing|victor robinson|2077-06-15 17:08:48|2020-07-26 05:43:36.11096510|2083-06-06 +-31|-408|-1933374662|763|5026.31|2220778.49|-1880721142952.310547|true|values clariffication|priscilla ovid|2079-11-27 10:31:13|2078-12-02 09:20:02.449941920|2020-09-15 +-124||206942178|3249|44696.56|-2844962.02||true|industrial engineering|zach miller||2014-01-24 20:41:26.351041828|1972-03-05 +74|-17840|307333276|-7708932208121225216|33649.41|-2209443.33|-3174835614765.178711|false|opthamology|wendy polk|2049-02-15 09:49:07|2021-09-17 10:39:35.795144931|1975-02-26 +35|6015|-1343327|2689|-34762.90|-3352811.58||false|nap time|oscar king|2061-03-02 03:38:49|2054-04-17 12:47:53.423961154|2027-06-04 +14|-20180|720703232|-7881351200983613440|-14311.83|1718525.86|4502617863309.339844|false|xylophone band|oscar garcia|2035-03-09 12:34:23|2019-05-05 02:57:22.203595007|2072-11-12 +-17|26296|344989592|-7515996202498473984|-29958.06|2161214.73|-209259678055.531250|false|philosophy||2068-02-10 07:56:40|2042-06-02 13:15:00.744949321|2074-05-17 +-111|13488|929751599|1681|15142.21|2124532.47|-4344059773498.542969|true|zync studies||2061-05-05 09:51:27|2035-01-03 11:31:13.490764419|2067-09-16 +-119|28064|631711489|-8507279516485566464|46368.28|1381513.63|-3198785922561.029297|false|philosophy|victor johnson|2053-09-16 22:56:54|2064-09-13 02:14:41.203564754|2052-09-23 +-3|-5897|997193329|1316|-36632.56||-4035360861641.272949|false|xylophone band|david johnson|2033-08-30 22:43:18|2021-08-20 07:30:06.17481138|2093-04-19 +22|-22922|626941809|7892026679115554816|-24481.02|4819862.86|3630292090950.355469|true|philosophy|victor ellison|2072-04-15 13:45:41|2069-12-27 19:14:43.4196486|1970-10-03 +|-22534|-1412187081|2279|35125.32|-1204413.83|13572776973.802734|true|history|gabriella robinson|2035-09-28 15:15:33|2079-06-21 21:50:11.269734623|2021-08-31 +8||842283345|873|44738.40|4982540.22|2545702719622.049805|false|chemistry|gabriella underhill|2044-03-23 02:31:44|2063-03-07 17:44:02.4074809|2059-06-02 +96|-5699|-163859725|8142241016679735296|-21581.78|-1551671.29|-2922841514857.416992|true|wind surfing|zach laertes|2014-12-09 06:23:35|2026-11-05 11:43:02.534377887|2023-06-06 +-2|-26128|1513689502|-7811060170911375360|5804.81|4404088.96|-3923411784468.591309|true||bob allen|2075-07-07 20:40:56||2096-05-07 +13|28551|-1568646283|8411494452500930560|-34399.96|2787253.76|-1592892075417.431152|true|topology|rachel brown||2025-05-06 23:15:59.141775309|1993-08-22 +52|40|587206979|2803|-38274.78|-3013975.64|4769880713478.898438|false|joggying|alice zipper||2062-08-30 07:04:29.405219012|2075-12-10 +-77|-13238|-866304147|1247|30977.58|-1455951.83|-379569461462.274414|false|forestry|holly young||2060-02-22 09:39:53.875517714|2054-12-02 +-16|13154|1141303816|-7673901622181953536|32011.03|-2072819.72|2331383540354.394531|true||quinn xylophone|2013-06-15 10:55:00|2066-12-15 17:24:21.774901994|2038-05-15 +-94|-21451|-203416622|268|33257.23|3858254.19|4841902350857.658203|true|geology|nick miller|2030-02-09 07:34:05|2061-02-09 17:09:30.792720771|2026-01-05 +32|13150|2142592987||21739.73|443657.37|1617671196062.850586|false|values clariffication||2055-04-27 17:42:09|2035-04-30 09:03:34.834154256|2048-07-11 +85|-1767|-1977762695|-7195217207163166720||2897773.78|4178958976210.437500|false|values clariffication|oscar quirinius|2071-10-09 18:35:28|2039-08-28 00:08:15.223157462|1976-06-27 +-1|-19464|538766635|-9012093603044245504|16783.69|102999.04|-3761561711229.433105|false|yard duty|irene laertes|2039-01-07 08:49:02|2077-12-04 00:37:45.588821251|2044-03-15 +84|7569|1739911574|8920533610804609024|39584.58|-2087360.22|2573136281954.120117|false|quiet hour|ulysses ovid|2058-06-30 06:37:18|2028-03-12 18:17:11.549298490|2073-09-23 +93|-254|1159353899|455|-26164.13|-2925253.46|-3708898652238.446289|false|debate|ulysses polk|2071-12-06 03:25:24|2027-01-09 04:39:00.318567529|2103-06-02 +-77|30619|1370723240|9148071980848742400||2115468.25|-2676483804058.200684||education||2076-06-26 22:59:22|2068-09-02 06:39:15.162172013|1981-02-07 +-76|24512|1316931||43602.63|-4235241.77|-2225959074468.946289|true|study skills|priscilla brown|2069-04-16 14:07:02|2059-05-03 07:04:57.531362893|2040-08-20 +|-17607|-628790799|-7093825013581979648|41798.75|789629.23|4045302222731.130859|true|topology|holly nixon|2034-09-29 04:12:38|2028-09-01 15:46:24.993528329|2040-12-14 +-48|18142|1203482872|1342|-48524.80|1488860.19|1080708792025.255859|false|geology|david underhill|2038-12-12 20:41:41|2054-06-04 10:17:24.350972371|2048-11-22 +-35|-28366|1182646662|7295926343524163584|37147.82|-17339.38|850711115335.975586|true|religion|fred ellison|2056-12-16 18:57:16|2030-08-08 13:20:23.87227693|2061-10-03 +|-11187|2127682701|7874764415950176256|21152.51|-1228307.04|-3933963121027.943359|true|quiet hour|sarah garcia|2061-05-01 14:39:07|2039-11-30 14:02:00.787382842|2063-08-30 +96|-25282|2009215103|8682955459667951616|-30776.76|-951920.19|339774798412.620117||philosophy|bob thompson|2018-01-25 07:52:23||2072-09-01 +75|12802|872554087|8825059717746376704|-23535.33|-3969818.94|-2914303137233.673828|false|wind surfing|jessica xylophone|2024-10-12 09:03:29|2080-11-22 08:10:16.820114627|2023-11-21 +-91|-31335|-1575588203|1651|530.17|-2153555.94|-2020396257019.356934|true|history|calvin zipper|2036-06-05 07:17:08|2077-07-11 08:39:35.486363899|2097-02-12 +123|-25183|69110370|1187|18383.16|-1514304.51|2213587444204.989258|true|undecided|fred ichabod|2027-01-18 08:53:58|2053-06-12 11:25:39.320312625|1998-09-27 +-66|21168|976870621|3197|-21478.88|1822183.11|-2601260542275.482910|false||calvin polk|2030-09-09 10:31:01|2071-07-11 10:12:44.480141278|2040-12-04 +108||-144862954|1115|37537.67|-3636489.74|-2775808925857.248047|true|values clariffication|sarah ovid||2045-02-17 17:37:23.51474731|2048-11-26 +-116|22118|1117805438|8945302550165004288|37582.57||501497065597.860352|true||calvin zipper|2066-05-15 01:52:49|2046-09-19 21:50:44.293786457|1977-03-05 +107|-23153|1571267481|9114850402293882880|-30178.38|1989319.92|826991484976.567383|true|nap time|gabriella underhill|2046-10-28 01:02:40|2045-01-12 05:45:37.921528799|2014-07-18 +97|12327|1603612975|8935252708196999168|16046.26|-67740.16|2793889545913.791992|true|opthamology|gabriella steinbeck|2043-09-23 14:40:09|2078-01-01 15:35:48.152129849|2031-05-27 +39|-16820|43983130|2663|-27389.47|775624.70|-1775814976651.695312|true|chemistry|luke allen|2021-03-30 12:39:17|2043-02-02 21:34:00.252214409|2080-09-28 +-73|-15866|-99205196|-8535957064499879936|-48198.87|-2414154.16|349441023585.761719|false|study skills|priscilla hernandez|2055-03-14 23:42:22|2027-01-12 03:52:14.47123348|2080-01-02 +70|-25463|748185058|9091082386452684800|48356.67|-3526156.73|1250977516314.754883|true|industrial engineering|alice quirinius|2015-09-13 22:17:45|2072-08-09 11:39:30.710221441|2052-04-27 +45|20124|-470798506|2915|43588.39|-762457.78||true|forestry|wendy carson|2072-06-06 06:46:18|2014-12-01 04:17:26.513106497|2055-12-01 +28|-9196|-1947868215|2183|49404.36|-3414112.11|2109147570161.909180|true|geology||2027-01-27 11:49:05|2061-05-01 06:27:32.791222399|1990-10-25 +14|25381|659397992|-8147405381260345344|47303.15|-3806020.32|997601888271.546875|false|values clariffication|fred brown|2074-06-25 18:50:23|2057-10-25 22:57:33.478783182|2105-09-25 +82|-1367|895763504|-8654797319350927360|1232.14|851336.52|-3820905742244.491211|true|religion|bob steinbeck|2032-12-27 16:52:15|2041-10-19 14:13:28.458891032|2104-03-31 +18|-13466|-343173797|1261|-24504.59|-2671371.43|4817498142971.957031||linguistics|fred ellison|2053-12-16 04:23:07|2021-12-04 13:24:23.478621300| +113|-29988|-213198503|8775009214012456960|29118.01|-2672928.16|3597735313714.380859|false||holly allen|2038-04-29 17:39:45|2035-02-10 07:52:53.120396795|2007-11-09 +126||1844415080|2810|-43710.73|4357967.19|-3835582850357.113281|true|history|holly xylophone|2056-04-30 00:14:07|2037-07-23 02:43:53.584900523|2038-06-02 +126||43672187|9067985867711291392|8608.12|-3919341.08|-1433926422321.541016|false|linguistics|alice johnson|2040-06-19 19:13:38|2032-01-20 11:14:11.710454857| +18|-31663|-1721368386|-8240684139569233920|-41884.25|-4050155.29|-3799361430049.685547||linguistics|wendy brown|2067-02-20 18:47:51|2075-11-01 10:27:41.797075523|1973-08-26 +-115|-20828|-1477897348|1719|19183.72|3667748.43|196163723446.253906|false|philosophy|nick ovid|2038-03-16 23:59:43|2031-04-04 05:56:43.142902096|2094-02-12 +-61|20411|2076370203|7917494645725765632|34656.95|-1033805.16|-2293878051389.661621|false|education|bob thompson|2041-05-09 00:13:16|2064-12-30 17:41:02.427765133|2096-07-09 +100|410|2057486961|3622|49893.07|4038206.70|-434822164725.155273||linguistics|alice laertes|2059-12-30 17:21:06|2067-10-16 22:22:23.909102811|2036-12-30 +68|26697|-1079633326|-8866442231663067136|-43306.72|-616547.34|-892751806585.678711||opthamology|katie robinson|2066-09-01 03:27:00|2059-11-14 17:00:11.431792872|2052-04-27 +6|28146|-309571354|7871554728617025536|10210.31|2684254.99|717298056153.232422|false|nap time|gabriella steinbeck||2079-10-05 02:45:16.165020579|1988-02-01 +-94|-22554|-1114208576|-7380731416973295616||4566778.78|4025279026650.033203|true|xylophone band|jessica hernandez|2060-08-11 01:49:22|2019-01-16 09:25:47.428200312|2038-11-22 +9|11059|1114521964|-8603817012434198528|38309.84|-2121451.24|-1723505323178.535645|true|values clariffication|victor garcia|2076-02-21 16:02:29|2024-12-31 21:24:49.835872918| +-34|10425|-45439614|-7192529627893858304|21468.82|666967.79|-1710357667596.511719|true|history|david ichabod|2051-07-14 18:03:02|2017-02-27 04:57:13.944522320|2050-01-25 +36|31099|-1108723753|-7287583262310350848|-61.04|-2662929.33|3709449843031.081055|false|industrial engineering|luke quirinius|2036-01-13 20:52:17|2062-10-11 17:14:59.629263445|2045-02-24 +113|-22915|-1352545619|7149417430082027520|-6486.11|-3357464.95|-1319020386301.517090|false|chemistry|yuri carson||2051-08-31 14:41:56.890230740|1992-11-06 +-45|15011|-1061859761|7237310132329488384|-39128.71|319025.53|-1778680361202.553711|true|mathematics|victor nixon|||1998-02-21 +-18|31370|1204834275|-8659643752269242368|39007.50|1149036.85|-2714226684056.946289|true|american history|katie thompson|2027-06-17 03:56:45|2070-08-03 17:42:35.323901256|2099-12-02 +|20969|-469749219|-8051395538179063808|32233.91|2215432.29|-3014965054465.008789|false|wind surfing|calvin underhill|2014-12-17 19:52:13|2022-11-29 17:49:15.855148488|2066-10-20 +-68|-4142|1488440165|1674|-20812.84|253603.39|-2105480401864.810059|false|quiet hour|irene steinbeck|2067-02-13 02:16:25|2022-12-16 07:14:39.23664527|2046-07-15 +-68|27630|1575300276|-8813211231120031744|-14758.39|-1926059.11|-2833925266574.155273||chemistry|ulysses allen||2032-05-08 18:36:19.400564422|1988-01-19 +-106|25835|-533227056|-8103788088118018048|-549.34|4959162.61|4308090638361.007812|true|kindergarten||2073-10-28 10:37:18|2079-07-06 02:03:22.207944103|2028-04-09 +-57|-4726|814544198|7049773031131283456|10513.01|2178130.57|-2416479446500.758789|true|biology|wendy johnson|2020-03-30 21:56:57|2029-12-16 16:34:42.572182352|2097-11-09 +-80|21784||-7035132060308643840|-6419.44|-4383105.22|-2020072615248.374023|true|philosophy|xavier hernandez|2018-09-25 15:18:36|2031-06-28 02:55:11.31963432|2068-08-05 +-78|13795|-1769423338|-7303847963918393344|43895.68|-3084959.79|-4175764579458.167969|true|opthamology|gabriella johnson|2043-10-13 05:10:09|2048-05-19 05:40:47.176953399| +-69|-16027|819069589|-8046238369820344320|-22162.98|-345358.25|674713800507.689453|false|linguistics|zach thompson|2015-10-24 08:01:09|2020-06-08 12:08:21.511690843|2019-10-03 +47||2068018858|-8503573595507761152|-10699.81|-2421607.62|2965768864894.222656|false|undecided|rachel ichabod|2069-06-04 05:16:15|2061-09-03 01:12:25.916465543|2030-10-14 +85|26579|-1371840597|8822384228057604096|-41991.30|-138391.14|1063729386321.732422|false|debate|jessica xylophone|2054-11-01 01:40:23|2069-12-06 00:11:49.576880733|2090-07-08 +110|-9759|-136514115|-7998947380180819968|-17463.46|1862978.01|-3370842772950.304688|true|study skills|irene ovid|2059-11-03 20:21:53|2061-07-03 17:32:49.424965303|2015-10-17 +-26|-10316|-71449585|-7057750467944931328|7153.05|-3062092.43|2726424274449.748047|true|american history|fred brown|2051-03-07 14:50:11|2027-05-29 12:10:20.647953531|2096-04-06 +113|-22215|674547678|1862|-27979.49|2034087.73|1306104776811.629883|false|industrial engineering|tom johnson||2021-03-25 16:24:12.665579887|2101-08-21 +56|8551|-733239404|8583916402383601664|47565.67|-4620642.81|-2470480735156.428223|false|undecided||2027-03-26 08:37:58|2079-04-18 01:15:58.35100799|2056-01-22 +98|-26361|1489169773|2398|42357.85|-3934751.72|-4429578287144.977539|false|mathematics||2048-03-15 04:39:44|2033-11-06 05:22:43.819682351|1986-02-17 +-32|-19330|2068538934|7487538600082554880|7664.98|4132039.93|-2902910424869.702148|false|geology|quinn polk|2041-11-01 21:08:54|2035-01-03 23:06:46.765787876|2071-02-14 +123|-20409|115470151|8677794924343164928|12145.54|-4842892.80|400760479300.927734|true|xylophone band|mike ellison|2080-02-28 20:34:51|2014-02-14 03:41:40.325566176|1989-11-16 +-13|31135|6526476|8708232769657815040|-14997.43|4694403.83|333471522081.652344|true|xylophone band|sarah brown|2021-01-12 23:04:21|2067-12-27 14:26:36.287488601|2062-07-17 +51|-27259|1829544791|-7623359796281999360|-34844.45|-3126581.66|-2421986983728.814453|true|education|tom miller|2044-10-28 16:20:50|2018-07-05 05:25:15.270012699|2071-07-26 +-95|-17690||8983912573761167360|31719.06|-3442868.07|-1937958357952.531738|false|kindergarten|irene ovid|2058-03-03 15:38:13|2069-02-04 13:07:32.271143352|1983-06-19 +10|-30669|1590744669|-7263060340185194496|-30819.18|1534635.31|4148791909569.630859|false|kindergarten|quinn white|2027-07-01 19:44:37|2056-02-18 15:10:02.841254943|2091-01-11 +93||-971698865|-7873753603299540992|21852.31|-2581251.56|1539283723979.209961|true|quiet hour|bob carson|2026-11-09 05:31:12|| +-28|-18659||-7720966287634112512|20392.44|-2222926.64|1939030156067.396484|false|american history|irene allen|2032-07-18 12:44:48|2026-12-26 16:48:27.776120795|1987-11-12 +-45||-40284975|1806|35653.78|1321025.73|898563412192.885742|true|mathematics||2070-01-12 03:23:36|2034-01-24 11:57:42.385238227|2057-09-03 +82|-13539|1456367662|-8260340354454503424||1093063.49|4557861543446.826172||religion|quinn xylophone|2078-09-07 14:49:27|2025-08-16 09:10:36.887036096|2011-11-10 +125|5469|889772203|2842|38632.60|-4727107.13|2741920281773.531250|false|joggying||2038-11-21 14:39:38|2040-01-28 08:27:19.830854683|2085-04-27 +21|-20517||7069729473166090240|-14418.84||735618454615.902344|true|opthamology|yuri ichabod|2027-06-30 14:53:30|2016-01-03 18:53:34.457261740|1970-04-12 +-96|-25734|-273937943|8688483860094599168|927.24|931681.37|4368902606237.980469|false|debate|sarah steinbeck|2023-10-17 00:33:13|2043-10-07 00:08:12.855001312|2038-03-10 +-82|-23719|-318206520||-23783.97|-837555.18|1762959989546.857422|false|study skills|nick xylophone|2034-11-18 23:41:57|2052-11-30 19:49:07.414111749|2033-11-10 +58|7697|-1437126017|7517159036469575680|-1037.26|-3799864.48|-1963988180877.791504||wind surfing|yuri garcia|2070-10-26 10:29:55|2046-12-29 13:30:24.655176498|2075-11-28 +26|16312||2218|46235.86|-3813446.01|-4186362730051.698242|true|topology|priscilla brown|2055-05-14 21:50:40|2037-10-04 05:24:46.310622445|1998-02-21 +-95|28923|-1769037737|-8996954350906294272|5131.31|-3335839.19|892560184430.806641|false|values clariffication|victor underhill||2051-04-05 17:19:55.107473640|1979-01-11 +89|20014|945683736|2089||2623267.83|-3717730752750.725586|true|debate|gabriella quirinius|2078-08-08 13:57:39|2062-07-26 14:12:36.59165411|1999-03-25 +-52|-12809|-1533934649|-8651641150831362048|48413.99|345690.54|2773050456079.104492|false|linguistics|calvin thompson|2045-08-26 14:34:17|2017-09-25 09:26:40.856875502|1979-12-19 +-107|13792|-1212524805|-8322751250650218496|26905.38|2307830.54|-3744767732184.754883|true|study skills|tom steinbeck|2027-12-07 07:23:38|2030-09-13 21:30:52.282498698|2061-01-04 +-65|21299|-1222897252|1495|-31920.07|-1723567.09|2996766542753.092773|false|wind surfing|zach white|2025-09-09 20:08:36|2066-06-07 03:56:15.873165726|1992-10-17 +101|30222|1667594394|-7848043121524228096|4374.75|1994312.07|4481698153938.253906|false|wind surfing|jessica zipper|2050-04-22 23:54:13|2047-05-21 07:47:57.777923762|1996-11-24 +94|23766|-511198293|-7506254246954500096|20950.55|-748117.50|4939615715200.673828|true|debate|rachel ichabod|2065-05-20 02:43:05|2026-06-12 20:30:30.941431912|2084-07-12 +59|5445|1974939899|7487338208419823616|44886.11|-4889191.55|4911721874172.769531|true|mathematics|gabriella steinbeck|2025-10-07 03:42:36|2045-05-23 22:17:04.9265626|1972-10-12 +-99|-29601|816439627|-7875953567586451456|41944.06|-1349023.71|-1099429516405.692383|true|opthamology|jessica polk|2039-01-01 04:30:38|2076-02-14 07:29:41.551319075|2097-02-19 +99|-3318|-1017027298|1863|24757.93|4444192.30|-3601627653993.517578|true|joggying|victor young|2031-09-16 06:06:37|2050-03-15 17:15:50.541208509|2079-07-14 +-27|-3540|133276416|3835|-506.62|1920067.41|412688526446.700195|false|debate|jessica young|2039-09-26 14:48:34|2077-07-07 08:15:18.365301835|2084-11-07 +-68|11572|25644069|1870|24153.48|4976723.43|-137386195040.676758|true|zync studies|holly falkner|2063-06-20 10:43:27|2024-10-19 14:18:31.573357244|2011-02-18 +89|16250|491016124|-7978782649203228672|-46524.54|1265452.96||false|opthamology|luke allen|2056-12-07 20:53:08|2029-09-05 03:42:32.368459710|2083-12-25 +-16|-19213|1509573831|3960||3292048.84|-240494562170.781250|false|biology|wendy hernandez|2051-02-06 00:15:05|2041-03-28 19:17:32.296675612|2083-07-04 +-56|-6518|-1478812842|-7663293054873812992|-24105.64|-1332349.52|-1890560158574.032715|false|chemistry|sarah robinson|2069-08-29 19:26:05|2046-07-10 19:51:40.969328493|1973-05-29 +-24|28077|-234278308|898|6115.34|652033.34|-4372957414734.699219|false||rachel robinson|2043-06-18 12:08:10|2066-02-25 21:32:14.879009176|1986-03-28 +51|-24313|-938342473|3728|4223.26|-4736632.77|-2080633933255.846680|true|biology|wendy thompson|2019-03-20 15:36:37|2025-06-22 23:33:35.838318924|2083-02-02 +-21|-4539|1469775272|-8615168537390571520|-13079.77|-3313208.22|3092499128010.040039|true|topology|quinn falkner|2073-05-16 23:56:42|2017-07-20 03:37:48.334651957|2055-08-30 +121|29828|-1426893312|3579|4812.14||586167842633.002930|false|wind surfing||2022-12-05 16:40:51||2069-05-27 +-79|-5314|-234758376|8111757081791733760|35336.11|4023549.09|4664860898254.835938|false|mathematics|ethan van buren|2072-06-06 05:31:29|2068-02-13 01:16:52.645583397|2065-07-21 +10|-27295|-1299159155|3111|-40569.04|289098.86|-3359213193119.252930|false|kindergarten|alice ellison|2013-04-01 23:26:31|2042-01-18 04:14:18.953737200|2037-02-15 +36|6892|1090344463|2539|21579.89||-2076008548637.773438||biology|sarah van buren|2044-08-16 16:50:11|2078-11-12 05:33:45.47089985|2054-12-18 +-78|10807|550594651|7497306924248834048|-15217.81|3701631.53|-1010442667526.625488|false|religion|nick garcia|2039-02-22 19:12:26|2058-01-16 13:10:53.407263384|2056-02-09 +-42|26236|-2019287179|2619|13960.36|3980665.59|2745518512550.937500|false|wind surfing|alice young|2049-06-17 08:19:54|2042-10-24 00:38:21.665346021|2001-08-01 +-90|-13424|631954352|1423|43085.76|1692557.60|2335092836258.532227|true|values clariffication|xavier ellison|2028-04-08 19:20:25|2050-10-22 21:57:15.666787161|2100-05-23 +66|-1679|472901914|7652123583449161728|-45141.82|-189883.01|2005119271038.431641|false|education|zach miller||2046-04-05 20:49:51.831050123|2081-01-30 +-61|-19291|936752497|7271786885641666560|6407.13|-2622282.33|-1364893278530.487793|false|philosophy|ethan nixon|2064-03-25 01:50:11|2078-07-14 10:27:03.640728827|2024-09-18 +53|-950||1447|-46967.91|-2338643.42|-3010460855327.999023|false|linguistics|wendy underhill|2061-05-09 13:52:02|2052-06-04 16:42:35.115432702|2058-01-11 +12|-19479|1112783661|2553|-13650.84|-1699487.46|-4635813668758.892578|||nick king|2019-03-23 10:58:33|2071-10-07 13:18:51.554325420|1978-08-21 +-8|26869||8148211378319933440|45519.19|1788716.14||false|values clariffication|fred xylophone|2060-10-30 01:15:38|2071-02-14 08:59:08.385880302|2083-02-05 +0|29498|1393262450|7450416810848313344|-47360.59|1197766.74|1948267796553.970703|false|quiet hour|ulysses johnson|2064-05-23 05:56:44|2064-08-16 10:07:06.357883907|2049-04-05 +37|30056|131031898|2979|16137.50|1448922.16||false|zync studies|calvin allen|2078-08-01 20:45:50|2077-07-22 17:11:31.657495112|2077-05-23 +117||1751468853|-7120456708338688000|-45241.05||4658251999119.685547|true|forestry|tom ellison|2069-06-01 15:56:17|2030-05-31 03:22:11.194126870|2033-08-06 +-120|-31659|-2016985611|7242751359672631296|43128.70|-191280.75|-2180975729787.064453|false|undecided|calvin ovid|2081-01-06 19:08:32|2056-06-12 01:13:12.668973447|2007-12-19 +126|-23667|2111462911|9083076230151864320|11873.69|4280564.29|2689053897530.797852|true|chemistry|katie zipper|2041-07-26 09:46:11|2052-08-09 23:10:15.912587493|2004-10-04 +92|7066|1785455842|-8754992450211692544||356819.61|-319780935492.240234|true|mathematics|ulysses robinson|2069-07-31 07:42:34|2025-12-14 11:43:12.789221272|1989-03-12 +-23|11788|278601840|1537|-3884.62|1500759.88||false|geology|ulysses king|2061-08-15 00:45:19|2052-07-01 09:00:11.170504787|2080-01-24 +120|-27232||7845953007588401152|30784.40|3725404.09|-4223940428806.862793|true|zync studies|yuri polk|2046-03-19 03:26:49|2028-12-07 07:12:17.409326696|2103-03-11 +0|22388|1145627305|9023663198045544448|-16680.30|-4179831.25|-4258847848573.274902|true|linguistics|jessica ellison|2056-08-10 14:54:29|2067-07-03 10:13:58.634487256|2039-05-11 +-102|256|352214248|8900545829211299840|-8142.34|1762753.22|2953930180391.744141|true|zync studies|calvin allen|2053-03-31 14:32:12|2054-01-17 02:39:01.769490002|1989-08-23 +104|-8706|-400501472|1866||-4687152.61|-4538289046733.225586|true|opthamology|fred van buren|2045-10-06 23:55:19|2063-11-06 08:47:29.289513742|2067-08-04 +-74|-22241|-1216166764|-8965578088652095488|11351.19|13624.69|4203637057188.273438|false|topology|nick king|2056-03-27 03:36:35|1970-01-01 00:00:00.158770873|2039-09-02 +-12|-10623|-445353909|154|24563.70|4730542.74|-2976281476329.525391|true|history|quinn davidson|2071-04-24 15:00:40|2016-03-02 22:10:50.657625756|1976-06-03 +8|-32491|-1232183416|2905|-45693.51|3407626.79|-2909647656864.500000|true||sarah underhill|2038-12-19 06:40:41|2070-01-02 18:09:04.499401693|2038-01-27 +41||2090496825|8693036785094565888|449.14|2113679.49|-1419899825383.019531|true|chemistry|wendy polk|2068-07-21 04:20:28|2042-05-24 13:18:57.760909140|2050-11-29 +43|-17366|41063276|3555|-23520.95|-3021088.64|-2720359307901.567383|false|philosophy|wendy brown|2080-12-20 01:36:25|2065-03-06 19:37:09.328344492|2090-05-03 +62|26288||3910|-10665.79|4113207.86|-4165972904406.558594|true|values clariffication|gabriella van buren|2028-01-28 10:55:38|2055-04-02 10:27:11.136514457|2005-08-12 +-76|27523|-191899537|-7792903881635938304|-988.63|2575958.83|134807836030.148438|false|quiet hour|rachel thompson|2064-09-13 12:05:33|2068-07-23 02:24:15.415114292|2006-10-22 +38|-15944|-1141801925|-8395998375405912064|37395.60|-2057132.64|-3432804499574.260254|true|geology|oscar young|2070-12-02 02:21:28|2022-02-22 23:45:54.417929187|2101-12-05 +-9|32017|1367179645|-8503342882470019072|-32948.66|2596690.92|-4465574272510.082031|true|american history|fred falkner|2028-01-06 05:29:29|2034-09-22 22:01:59.220097380|2103-12-30 +-37|8727|523289079|3946|-43342.52|2528654.53|-3334121644829.863770|true|history|gabriella ellison|2039-06-14 08:58:40|2023-05-10 22:56:14.107897590|2058-11-03 +-16|-1749|209430502|2662|-27058.30|1085405.78|-478847345395.791992|false|linguistics|victor falkner|2026-08-15 13:38:26||2101-06-16 +29|20270|-985817478|2848|-17564.28|-1085683.98|1245671080660.350586|true|philosophy|nick ovid|2077-11-22 03:06:05|2018-10-17 23:16:57.22955518|2059-05-05 +47|15266|670667262|3974|48495.59|-4950157.96|2359236945727.296875|true|biology|wendy carson|2062-12-04 16:15:27||1991-07-04 +|-19295|1677197847|8201491077550874624|41623.77|1350136.93|-1226174674712.830078|true|study skills|gabriella ellison|2016-02-17 02:12:04|2043-04-04 00:37:27.881714077|2027-09-11 +|12722|930008274|2386|-2270.46|1951711.24|-2269419016241.016602|true|history|priscilla zipper|2023-03-20 02:05:11|2058-08-15 16:21:32.650056302|2082-06-21 +102||-1112062809|690|-44270.30|-967065.47|4944863867873.259766|false|mathematics|victor nixon|2062-01-19 04:23:24|2034-11-05 03:07:33.846605261|1982-09-16 +-100||1091736925|-8962547695651323904|18808.85|-2597624.19|633233154165.040039|true|study skills|yuri nixon|2027-02-06 11:15:50|2068-11-02 21:11:23.741655982|2094-07-19 +55|-26304|1054864168|2227|-25135.64|-2339553.19||false|mathematics|jessica carson|2018-08-30 01:06:23|2078-11-30 02:36:40.607075532|2013-09-08 +-92|29168|-560322190||22456.65|4966767.72|-4492662222754.084961|true|education|ulysses ellison|2026-06-11 07:20:10|2028-10-07 16:00:16.652808441| +127|-6294|-41242237||-24339.41|-4580152.68|-4150973486962.570312|true|kindergarten|rachel johnson|2025-04-25 21:40:13|2064-06-21 01:47:28.67945256|2026-04-28 +-104|-25115|824836988|-7020852530219171840|2631.26|-1696924.47|2636281196281.515625|true|religion|ethan king|2064-04-06 11:56:42|2079-03-23 13:15:05.713728857|2012-06-08 +82||373031319|6967631925774639104||-3338254.44|500376662732.691406|false|geology|alice johnson|2046-06-05 16:50:34|2033-10-31 22:49:14.847949456|1990-11-23 +-6|-30482|1275228381|8145750910080745472|-32038.63|-2954981.27|2949286209907.953125|false|linguistics|david young|2035-10-06 02:29:21|2031-02-11 07:57:23.673629394|2105-04-02 +113|-23323|-839512271|8994608999945125888|-28055.16|1643018.67||false|education|priscilla steinbeck|2054-10-12 02:43:21|2027-05-27 09:57:29.960419451|2005-01-23 +15|-7024|923353533|3940|7872.92|-2081172.60|-2466850727047.962402|true|wind surfing|ethan king|2027-10-04 14:01:27|2049-07-15 07:58:03.472552275|1988-08-26 +|-6283|-311437801|-8990843030306717696|-41276.81|1722079.14|2070485805872.195312|true|wind surfing|nick miller|2022-01-16 10:36:26|2029-06-16 15:44:00.263282479|1993-07-11 +25|6980|-1892816721|-8182421179156905984|32052.05|2697304.50|-2452231930319.044434|true|mathematics|sarah van buren|2057-11-28 06:45:32|2065-11-02 04:49:45.252309410|1984-05-26 +-25|26744|-1489628668|-7878145001776152576|38864.72|-543066.51|-3989748992325.772461|true|philosophy|tom quirinius|2027-08-03 17:06:47|2071-12-24 20:56:38.549176629|2093-04-14 +-122|25038|100270148|9096395849845194752|16126.36|-625257.45|-3447447963466.885254|true|opthamology|victor ellison|2036-07-06 17:42:38|2023-05-13 17:55:44.745449578|2082-09-17 +69|-16570|-1870912732|-7199983995864711168|-11501.29|-2355822.95|4784415058876.519531|false|american history|holly hernandez|2074-11-26 21:56:49|2076-02-03 03:26:47.100157028|1999-06-03 +-12|14213|||46313.84|-3912157.22|2214476493452.331055|true|linguistics|luke allen|2052-11-30 04:15:17|2068-10-27 11:57:03.945913098|2006-05-04 +56||658008867|7868367829080506368|-34336.86|-467709.59|2729407234427.085938|false|undecided|alice hernandez|2058-12-23 05:19:29|2038-03-11 15:26:58.124711805|2064-06-26 +-30|31795|217476429|2001||-140021.64|2811318250004.752930|false|chemistry|jessica thompson|2040-02-02 16:00:13|2035-08-19 22:22:12.933201371|2082-12-04 +96|9264|-1057522129|-7429331808102899712|10703.15|-1686203.10|-363688684224.463867|true|kindergarten|ethan quirinius|2081-02-04 05:16:49|| +-70|23063|-1511162508|8928133990107881472|22991.39|-2823357.23|-786567683392.114258|false|debate|calvin van buren|2054-10-09 00:55:52|2053-06-14 18:30:38.792560125|2077-10-29 +106|2326|2080412555|-9175279464813223936||3763969.37|-3478279974550.986328||forestry|fred van buren|2079-08-05 12:51:53|2025-05-02 08:19:30.267343837|2007-10-02 +58|4905|596802082|3467|48922.94|-2427646.65|-1956656626084.800781|true|religion|david brown|2059-08-27 02:37:38|2074-02-26 19:05:09.130777914|2104-03-09 +67|-31596||2692|23665.84|-2517144.39|-3266719980073.062500|false|debate|nick xylophone|2018-03-26 01:09:51|2048-01-16 05:58:57.246574643|2053-10-18 +-24|-13948|1063524922|383|-23278.06|961810.86|3461107192485.286133|true|opthamology||2063-12-10 23:49:15|2014-04-14 19:52:11.36942801|2023-10-23 +-51|-19413|-120704505|2180|7673.97|3840971.12|1717287804088.129883|false|philosophy|luke king|2021-11-07 16:27:24||1974-07-19 +8|-12564|172075892|7299197687217856512|-43842.34|-3395074.10|-4225250387427.301758|true|forestry|sarah nixon|2053-04-02 00:45:22|2071-09-12 07:22:30.450556241| +-107|19917|-1945738830|8295110846998233088|-28431.96|-4322868.81|786529992285.522461|true|values clariffication|sarah carson|2067-08-06 19:51:59|2058-08-28 05:24:49.32302645|2042-12-12 +-8|27787|1895282160|8487573502287478784|19758.36|-4910924.30|-4340220649412.813477|false|chemistry|wendy van buren|2048-05-30 14:41:37|2021-12-22 11:40:34.570668347|2002-02-21 +-43|-14055|-1283465451|3911|-34319.73|-1413420.27||true|education|xavier quirinius|2051-02-05 11:30:07|2035-06-24 01:08:21.175238432|2063-11-21 +-79|-11393|936133387|-9117959922369060864|41437.58|1156422.75|2370005565831.085938||opthamology|gabriella van buren|2063-01-25 22:56:53|2026-06-13 16:13:15.739664221|2025-10-17 +23|-9368|-1212433954|3255|29064.07|-3454874.42|-4178431684249.020020|true|values clariffication|mike underhill|2048-01-22 12:12:53|2078-10-25 09:35:47.422665226|1976-07-11 +-3|29992|284646137|-8797972842900307968|2832.96|866000.62|2948618846342.725586|true|forestry|alice van buren|2053-08-08 14:24:11|2043-05-05 17:25:01.599668995| +-44|5542|1194089079|1065|-43883.09|-3705656.11|2618341807790.152344||yard duty|nick falkner|2048-08-07 23:37:11|2065-01-12 07:32:17.848708633|2089-05-10 +50|-17236|-1248781172|9188173682239275008|-932.46|4283902.51||false|linguistics|calvin quirinius|2066-01-02 06:15:34||2038-11-21 +-107|17373|-1442424087|-8623238306523824128|5552.38|-3458132.26|921960196859.856445|false||luke ichabod|2034-12-14 15:18:02|2059-03-22 11:58:34.314644363|1980-07-19 +-73|-9102|266601601|908|41081.46|2657372.15|-837837614763.010742|false|opthamology|irene quirinius|2028-03-21 14:39:00|2078-05-11 17:58:05.60588994|2059-10-02 +9|32212|-423190290|-7262798781688651776|38636.43|-4573720.06|2536259966692.461914|true|xylophone band|nick underhill|2031-05-15 12:47:25|2047-09-13 08:04:34.722807010|1984-11-19 +23||-442732016|8333523087360901120|14531.11|69068.15|-2057600166422.162109|true|study skills||2020-08-30 17:51:25|1970-01-01 00:00:00.454328290|1974-03-30 +12|-8321|-1421396891|8454154705460666368|-5227.53|2886887.00|4349398966437.156250||education|irene zipper|2041-10-24 12:28:05|2073-03-11 08:14:09.756114070|1994-11-10 +-98|-30244|106847364|8457906374051020800|-12308.81|1643233.89|-1862982340067.276367|false|wind surfing|luke garcia|2048-08-27 15:36:59|2022-05-09 11:11:32.853100609|2045-03-09 +69|-3405|488014426|73|-28346.79|2731540.33|2267354345396.413086|true|kindergarten|holly thompson|2064-10-26 11:39:58|2077-10-16 03:10:28.888155713|2035-12-24 +-83|-6513|587797446|8213810702473183232|30050.83|102694.59|-2847724175722.277344|true|zync studies|priscilla ellison|2016-10-03 17:44:33|2056-09-08 06:04:49.641349132|2043-11-26 +75|13522|-1517536924|9054887854393950208|15141.54|1755041.65|-3270453275783.538086|true|education|ulysses ellison|2035-12-08 01:16:53|2070-09-27 08:40:30.393760546|1974-10-03 +-38|-26054|407233168|2514|36614.21|-452732.25||true|zync studies|katie young|2064-11-29 10:35:19|2024-11-14 20:32:43.808212142|2046-07-17 +-28|-4819|1626868156|7735566678126616576|48879.36|1239004.36|-4552439178204.146484|true|education|tom garcia|2019-06-18 18:51:27|2047-06-10 16:32:44.60775478|1998-02-12 +-13|17132|-521886983|695|1944.22|3215015.14|1864369948070.994141|false|education|tom underhill|2060-10-16 03:03:26|2015-04-01 01:05:02.15569899|2070-05-11 +-104|20428|-409673169|820|-9991.69|-2396374.79|1282492179181.637695|false|religion|fred johnson|2017-09-14 06:45:42|2040-12-25 21:39:47.181668340|2070-01-06 +89|12045|1818213677|-7888051992910274560|-9384.53|1975057.51|-1651565773188.927734|true|nap time|xavier ichabod|2050-12-16 14:41:20|2017-08-23 07:23:58.648295477|2022-12-28 +-94|-1613|-1141652793|2563|-5069.95|-1685735.78|1255561990305.942383|false|zync studies|sarah ovid|2048-07-16 21:05:37|2013-04-11 09:25:14.135644374|2076-06-13 +-51||536235636|481|-3326.67|2015657.33||true|undecided|jessica garcia|2030-07-21 20:47:01|2015-02-27 14:42:24.541863875|1999-05-25 +71|-11066|-240529113|9085381906890203136||3623705.69||false|wind surfing|alice king|2023-01-12 14:43:32||2103-05-19 +43|9469|1978171687|8069531888205086720|-30700.99|4531545.89|-4036385352684.703613|false|quiet hour|alice johnson|2072-02-07 18:51:58|2016-04-14 13:33:39.51109536|1995-02-22 +18|-27139|-1909635960|3901|-22165.89|2438006.35|-2457198289952.842285|true|yard duty|priscilla quirinius|2044-02-01 21:07:57|2017-02-24 23:15:38.259931793| +-85|27691|-812431220||-27884.22|-3932474.77|-4301383379646.672852|false|yard duty|holly robinson|2067-12-31 02:16:45|2059-06-14 14:29:47.306981730|2042-06-23 +4|15070|-1048181367|2138|19727.66|-2300068.46|442791232447.667969|false|chemistry|holly robinson|2044-08-04 16:37:05|2044-06-30 10:22:10.259564256|2035-07-29 +42|29721|-534991774|8547243497773457408|-14403.81|1809670.64|3049933582700.781250|true|topology|wendy falkner|2052-03-20 11:57:10|2014-09-08 03:13:41.230670338|2031-09-03 +124|-21833|-1146055387|1914|-16711.13|-1187994.93|-2129923795016.388672|false|chemistry|quinn van buren|2018-05-04 18:02:39|2075-04-11 15:14:21.144748744|2052-02-29 +-52|-20972|-207546600|3462|-22932.21|2274233.99|-1515421803774.650391|false|zync studies|jessica van buren|2055-06-26 09:30:31|2053-04-14 14:07:43.346589567|2040-12-16 +-77|-9494|-1244527286|8631515095562887168|-15537.74|2717635.27|-1618779636424.356934|true|opthamology|bob carson|2022-07-29 22:39:55|2064-12-15 10:25:10.820697739|2012-02-29 +-32|-18151|-20660936|1537|-24087.33|1569221.06|3494016048787.180664|true|religion|david hernandez|2049-03-23 23:12:47|2069-09-06 13:34:29.824569836|1980-09-13 +107|-8241|-1914210382|1032|-494.69|-491580.98|2215415160315.962891|true|wind surfing|rachel steinbeck|2053-09-21 15:24:34|2051-05-31 23:41:33.238902529|2068-11-08 +5|26134|-76430653|-7159700138947862528|-30556.11|-2389481.88|-4148726763102.850098|false|religion|nick robinson|2060-03-21 10:52:41||2054-06-24 +49|27697|-442839889|-7904188195431661568|-34305.21|4500676.42|1725352215904.507812|false|opthamology|sarah davidson|2080-06-15 07:39:44|2080-08-05 07:34:25.775673011|2042-08-24 +-52|7076|1129173487|3071||-900445.66|-3853543995793.309570|true|undecided|luke johnson|2020-09-26 09:44:59|2062-10-24 23:11:30.284403277|2079-12-07 +-43|13595|1042184256|-7571957778022178816|-46981.86||-3145776824458.792480|true|undecided|bob miller|2018-01-09 03:24:56|2030-10-07 14:46:23.841810028|2095-11-19 +29|27796|-851663638|-7220731681653604352|-17833.51|-333198.78|3337165730064.981445|true|study skills|gabriella robinson|2061-07-17 12:49:22|2069-08-24 15:51:48.964464544|2021-02-24 +-19|16950|1127080164|3159|7425.51|-127812.51|-3947313690509.517578|true|mathematics|ulysses carson|2037-03-26 18:40:05|2023-07-14 00:34:28.67758177|2089-03-14 +-6|-23124|-397951021|7843804446688264192|-30463.53|-4069350.60|-2020073902236.276855|false|nap time|katie falkner|2077-05-02 02:07:14|2037-06-27 14:47:44.422604596|2095-06-27 +0|15923|149701884|523|12737.25||1248482752888.797852|false|biology|oscar thompson|2040-07-12 19:39:20|2026-11-18 08:27:34.373542448|2073-01-05 +-70|-695|-1343425152|-7461750143936897024|-32157.17|-2176119.65|-2925113732619.415527|true|religion|wendy xylophone|2076-02-16 19:05:59|2027-10-14 17:29:43.583602554|2097-05-23 +-97|6197|-36682325|-7827420207675105280|-31750.91|-3074549.26|3788972005494.990234|true|biology|fred laertes|2067-05-10 20:20:51|1970-01-01 00:00:00.101484065|2064-02-24 +-10|-20262|-600315936|1345|21913.08|-3070804.01|2962412389913.353516|false||priscilla garcia|2048-07-10 23:38:52|2044-08-05 16:00:46.315151651|2055-07-05 +|-19738|-101960322|-8572823448513445888|25956.38|2092539.40|-2179647850269.006348|true|linguistics|ethan robinson|2057-03-13 06:55:29|2048-01-09 16:37:38.915920932|1995-02-27 +14|15279|1141595012|6947488599548215296|34978.19|-2562363.19|-2815162364953.494141|false|history|xavier steinbeck||2064-09-27 12:29:57.968356596|2056-10-05 +3|-19833|-1484787952|2933|8675.74|978264.91|-1636821663320.553223|true|chemistry|wendy davidson|2040-12-06 19:52:39|2035-12-26 10:35:59.360110196|1981-06-20 +51|-9883|-1454941039|2026|-35426.60|2272684.71|4704286241455.583984|true|forestry|victor underhill|2058-05-13 21:49:48|2068-07-03 13:08:18.155351313|2046-04-14 +122|-31711|-1205034356|-7079898537463537664|-32125.03|-3286002.29|-2908250839324.075684|true|kindergarten||2038-06-26 23:27:39||2070-09-12 +-100|2376|-1538558250|3002|-15010.17|2181186.45|-1509750359093.331543|true|geology|zach young|2021-05-20 14:20:15|2060-12-13 15:31:30.592604154|2073-10-30 +-40|18675|1772545157|3478|4792.97|92850.82|-762670982733.766113|true|philosophy|gabriella laertes|2032-12-22 12:49:50|2071-12-26 20:13:36.328951995|2105-09-04 +-21|15628|-1288198020|91|25691.45|-738032.31|4949606816450.326172|true|geology|luke zipper||2035-10-06 11:14:13.580921847|2053-04-30 +-91|30585|1718167702|-7106210529681350656|24184.47|-4575482.70|-2159863209435.393066|false|chemistry|quinn king|2039-08-20 03:28:40|2068-08-19 10:10:12.74241996|2098-11-20 +98|-22689|776459017|7898670840507031552|-30842.33|1306045.70|-1435567330861.893066|false|linguistics|wendy steinbeck|2020-07-10 23:48:50|2051-04-27 11:27:17.997877424|1997-03-24 +46|-31765|991397535|1280|43342.36|-4767218.51|3617816889074.596680|false|chemistry|luke nixon|2065-03-17 14:37:19|2018-03-21 13:28:07.336943140|2049-03-24 +102||-688296901|7375521127126089728|-28757.68|-2082734.07|777177079642.256836|true|education|bob zipper|2036-07-24 19:19:09|2031-03-07 06:49:22.785267673|1993-03-03 +-31|17958|2029657999|-7744462446680375296|-41109.39|1191929.26|3897628529217.414062|true|quiet hour|mike ichabod|2040-12-31 06:10:58|2058-02-07 15:58:19.354601408|2059-01-15 +-6|13632|160290374|-7296096276653391872|36672.60|-2482472.61|-339458377166.010742|true|study skills|tom hernandez|2025-08-25 10:25:27|2058-10-19 11:12:56.527770967|2044-10-09 +8|-10872|1701761102|-8426531414463545344|32156.69|-3405255.27|-1310101119229.685059|false|values clariffication||2065-02-15 04:14:25|2029-07-16 16:45:16.991648242|2085-05-14 +59|26338|334208532|7514552840617558016|-34440.76|-4404420.91|3330304712948.831055|true|history|bob zipper|2040-05-28 12:09:21|2066-01-08 14:32:11.142741991|2066-09-02 +-21|-15348|-1458382451|-7003696402314215424|43210.70|149052.90|2674338617144.656250|false|yard duty|gabriella brown|2038-10-10 04:17:31|2030-01-04 00:55:23.244799844|1978-07-14 +97|||3456|-38913.18|-4379808.95|363891694968.999023|true|religion|nick allen|2036-06-18 18:23:02|2025-03-15 21:36:35.53561383|2071-07-28 +-59|-6927|-553349593|7621013099259527168|16473.64|-1800225.01|4614724388696.132812|false|geology|alice ovid|2059-04-04 14:47:41|2019-12-24 06:47:20.279929841|2012-01-10 +-52|32124|1888675011|687|13272.28|-2208934.98|-883719278816.102051||study skills|wendy white|2039-05-03 14:20:11|2074-02-04 03:52:12.802260928|2067-08-18 +-98|4809|363981930|2046|-20324.46|4687322.86|3071409665623.399414|false|history||2036-06-02 00:13:09|2066-12-04 17:35:54.613167337|2029-07-06 +-5|7307|-887663189|2412|-49469.35|-2643670.18|691967262474.229492|true|study skills|katie laertes|2015-02-17 10:46:41|2061-06-21 02:39:42.676579556|2036-11-05 +4|-13402|493977568|2803|-1748.73|-3393754.92|-4457211557691.458008||religion|nick polk|2069-06-02 17:34:24|2047-12-25 15:11:53.122432132|2034-03-01 +120|-18214|39723411|-8340523561480437760|-14546.88|-1333507.95|-4486126507516.558594|true|opthamology|bob ellison||2031-10-03 23:35:33.544613811|2094-11-24 +-95|16766|-695775663||-25943.48|-370627.31|56131754853.687500||american history|yuri king|2061-12-26 16:50:46|2066-04-06 09:14:45.591410912|2052-03-12 +57|7678|1500437122|3690|-36458.18|-4405751.72|2469097005156.158203|false|history|bob laertes|2033-05-08 06:57:11|2045-03-02 09:49:45.919117020|1995-05-29 +46|-4910||958|-41418.86|-2450287.31|-173454179858.830078|true|kindergarten|david young|2048-10-13 22:24:03|2033-02-28 07:17:26.103855489|2015-03-27 +12|27077|-310584775|8160662610166194176|-21832.81|1737444.46|-2523815566161.111816||forestry|nick van buren|2051-04-20 02:22:57|2052-12-16 14:54:40.802310365|2010-06-06 +5|-6611|-348628614|7376467688511455232|-17302.69|-4043937.62|2997674791460.696289|false|biology|katie johnson|2074-10-20 08:39:25|2077-07-10 17:11:48.376645616|2006-05-02 +-6|12256|1342923026|-6951350560260784128|-19554.04|-4459872.13|2843148363140.599609|false|wind surfing|rachel laertes|2061-09-16 16:07:08|2039-10-26 13:59:43.783210729|2038-03-28 +58|-25176|-575513309|-8856151919723003904|34314.07|-2099475.91|2897602401976.086914||geology|ulysses ichabod|2062-11-26 01:45:39|2061-12-11 04:52:43.520505413|2068-05-04 +-125|20784|1602631923|2214|39655.33|3039475.62|-3830282459603.928711|true|education|sarah laertes|2076-12-02 21:21:47|2055-12-14 05:18:38.433511936|2054-07-22 +-5|-26284||3534|-32835.86|1787616.77|4409529967528.058594|false|||2025-05-26 05:36:16|2013-05-08 02:45:24.84979575|2012-07-25 +-95||1594107168|2485||-4550897.43|3236841723287.291016|false|forestry|jessica underhill|2062-05-04 06:51:36|2042-12-04 11:51:22.932128563|1998-07-23 +58|-2254|1924741890|-7616522969329262592|40024.13|-2186024.00|-4061500682219.793945|true|topology|jessica quirinius|2046-05-07 13:28:22|2070-04-12 09:09:49.449031915|2084-05-27 +-24|-28647|-1867014618||-4343.38|4997627.14|-1035879213003.773926|true|education|nick zipper|2048-01-16 14:08:49|2072-05-28 11:18:15.805789959|1997-07-21 +21|21081|-1754203978|8004633750273925120||-3602500.25|4760213945363.105469|false|wind surfing|katie miller|2019-05-04 21:41:54|2061-04-11 04:59:35.856248374|1986-05-27 +14|12187|127917714|-8136227554401107968|49429.89|1910729.25|-1069914497388.992676|true|geology||2016-07-17 16:11:05|2020-09-09 09:11:46.601664066|2014-12-10 +118|16105|626251612|1728|-49470.06|3959897.75|-1478106202190.900879|false|xylophone band|nick young|2062-12-10 18:23:18|2051-07-27 17:32:27.385189293|2039-12-24 +-3|-28566|-1745449855|8519937082746634240|32030.87|4816427.45|1633700536419.055664|false|debate||2023-04-17 07:06:24|2058-09-20 02:59:11.375577284|2071-06-10 +-31|-22701|-893863493|681|-36544.43|-2889425.01|1301701521955.678711|false|mathematics|zach miller|2069-09-04 21:21:15|2077-08-09 09:40:16.725515779|1986-09-25 +-44|17014|1305668933|2675|-37536.84|-3389079.95|2568172106802.393555||opthamology|calvin allen|2048-01-07 02:24:52|2052-10-30 09:51:14.703802238|1991-07-21 +123|25603|-1319686435|2140|28726.13|-2052209.10|-2437073639876.423828|false|philosophy|jessica steinbeck|2035-10-21 16:25:43|2047-06-17 10:53:28.279336352|2025-01-07 +-30|-12239|-406264741|8048726769133592576|-33901.62|-3283923.82|-235863245443.930664|false|opthamology|mike robinson|2055-06-28 05:28:20|2039-12-20 02:45:21.514659414|1991-03-26 +64|-15064|-1822850051|7368920486374989824|4239.63|-4074561.40|-2472225769522.573730|true||calvin ovid|2052-03-17 08:41:37|2073-01-09 16:54:02.852079048|2105-04-24 +30|32070|-946349935||49143.26|-4093628.93|1756513093301.918945|false|biology|oscar white|2043-11-23 04:49:54|2062-01-19 06:23:16.207886115|2024-10-03 +-38|31923|-1674623501|2933|-43216.48|-441694.88|2172423919601.769531|true||gabriella ichabod|2068-03-28 20:46:15|2021-05-28 21:18:06.529746759| +|4416|-1423467446|3702|34593.32|-4983663.43|1472966620092.500000|true|mathematics|mike quirinius|2058-11-02 02:19:38|2078-07-10 22:26:27.598943854|2012-07-07 +35|1350|-1439424023|7473537548003352576||-4250668.27|3589868423808.226562|true|education|zach white|2028-03-21 06:07:14|2026-09-22 16:15:50.649708942|2023-12-03 +-100|820|-175727228|7662037650719850496|48160.03|451337.11||true|mathematics|fred ovid|2043-07-25 21:47:47|2025-03-22 08:39:42.572224315|2071-11-21 +67|4111|-1356601829|-7201085131997011968|-4845.62|-2391963.29|-3494275625280.529297|false|linguistics|tom robinson|2013-12-16 15:23:28|2063-01-24 14:36:15.377716525|2008-05-23 +58|-13525|-1668974292|2461|40132.58|-3648308.76|3151275044544.697266|false|quiet hour|bob falkner||2027-07-24 22:57:02.997506179| +-101|-32533|2013178181|-7078068944081002496|-11491.23|1547819.39|1269539510349.381836|false|geology|tom laertes|2046-11-14 17:39:54|2075-02-01 10:01:02.218541617|2060-09-24 +-42|4948|-1216206795|-9213132862973829120|-8676.33|-1161986.52|139544644036.498047|true|religion|xavier young|2052-06-25 02:29:10|2027-11-08 06:13:50.441308738|2035-07-20 +-19|-29228|1851805558|-7442593976514420736|-19417.85|-4185578.77|-3473633863694.054688|false|biology|ulysses white|2058-12-02 13:43:58|2052-03-14 06:31:36.71560104|2073-07-26 +-85|30237|-896274896|947|-41977.40|-4762084.02|3689572984317.202148|false|debate|zach johnson|2072-05-17 19:39:38|2049-04-29 02:45:41.698253842|2071-04-22 +67|-30263|1569269522|2715|-35994.04|-2615857.37|-4704488446544.807617|false|philosophy|ethan xylophone|2066-09-28 13:46:21|2059-11-18 07:16:04.765091082| +-78|-670|-1800413845|7347732772348870656|23004.69|-2233285.92|3739991371485.302734|false|topology|katie hernandez|2051-06-30 10:48:09|2074-04-24 22:45:21.879912960|2024-05-17 +-117|-17297|-1700451326|-8269917980278980608|-17116.65|4912402.10|-3493298815033.440918|false|debate|rachel ichabod|2039-11-24 10:32:35|2077-04-20 18:53:37.535558168|2053-09-09 +-11|23834|672919099|8714829359200747520||3308709.86|-1865156303050.916504|true|american history||2043-04-09 06:06:05|2051-09-30 09:37:51.898928323|2047-10-06 +-54|18071|107941738|8555948987770511360|-28327.38|2324538.32|2847074667998.903320|false|zync studies|wendy nixon||2070-06-25 13:30:35.811325368|2009-04-29 +57|-2827|1450881368|8183233196086214656|-3116.94|4176505.10|765829561496.076172|false|joggying|david robinson|2050-10-24 05:56:26|2061-12-12 04:36:18.893986674|2044-11-13 +123|-23798|908943372||-10047.94|863930.25|1612915693140.735352|false|joggying|fred ovid|2017-12-19 09:17:31|2037-07-21 00:38:21.576873355|2066-02-20 +|-16998|2089198703|6933001829416034304|-33836.46||2102240941480.175781|true|kindergarten|victor ichabod|2064-05-08 21:44:42|2062-01-04 22:58:04.558120645|1982-01-17 +-82|-19048|-1534238977||-23411.14|302494.42||true|debate|katie steinbeck|2060-02-01 20:33:26|2013-03-11 05:00:41.593133945|2093-04-26 +-22|-14675|1081187102|-7540104552219860992|-38953.95|-2362183.98|-1224716349369.181641||industrial engineering|oscar brown|2070-08-13 00:47:56|2066-04-19 15:19:12.320935118|2056-05-15 +-66|17165|156101201|-8368487814665895936|-14140.57|379289.77|1968339169913.875000||american history|katie white|2016-07-16 02:18:55|2042-01-07 04:12:18.268550669|2075-12-20 +120|30166|-357680544|919|-2327.72|-2232224.69|-2115836017507.852539|false|quiet hour|holly white|2021-12-27 01:11:58|2051-02-06 17:57:10.373087732|2082-12-20 +-85||-1992388855||-7366.24|3317647.94|3329868012355.703125|false|nap time|jessica hernandez|2023-04-03 12:56:56|2065-01-24 10:49:07.453432315|1979-12-06 +75|31892|-423945469|3860|-42068.14|2721009.80|-691405603446.639648|false|chemistry|fred brown|2014-07-09 20:18:00|2020-09-15 10:20:06.356886049|2045-09-14 +124|9165|601376532|-9210275791460499456|21504.67|-3603542.89|585382282613.906250|false|values clariffication|calvin miller|2045-05-01 07:46:50|2050-01-16 02:26:01.756278854|2008-03-13 +72|6651|1394370866|2179|-42864.93|2623099.23|127034475536.475586|true|geology|mike carson|2046-07-04 08:48:22|2041-06-08 14:08:48.775940626|1970-09-11 +-82|-10326|196581473|-7040248820505149440|-5351.98|4761488.03|3838487433435.275391|true|biology|ethan johnson|2053-05-17 23:29:12|2053-03-08 00:23:08.194947839|2031-07-04 +109|25118|1765173148|1436|-13638.66|2650629.19|102372940548.889648|false||yuri polk|2073-08-29 12:34:55|2014-12-10 00:21:02.20416566|2010-01-02 +-4|-21281|-139448716|3789|20654.45|2015350.99|-4799397192234.416016|true|linguistics|irene brown|2023-11-19 08:45:47|2048-06-07 06:42:10.786761109|2023-12-28 +106|-32180|-621365995|-8161047750470279168|40550.10|-4846704.32|-2370210197103.510742|false|study skills|ethan johnson|2072-09-28 04:45:00|2041-10-25 04:03:47.934953825|2054-06-20 +64|21103|-1609864597|-8084716955963252736|-49797.47|-2035643.95|-3334485644733.611328||yard duty|ethan hernandez|2019-03-27 18:13:00|2050-07-29 02:49:32.410064002|1985-12-07 +50|15589|-1603071732|3874|22817.88|331598.89|-4244238246714.146973|false|history|calvin nixon|2023-08-20 05:50:25|2022-05-02 03:46:09.440109913|2084-10-14 +-15|6493||-8658387566611996672|46136.01|445923.58|3158702377742.095703|true|joggying|mike garcia|2043-07-07 06:16:30|2056-09-01 07:34:58.429893271|2085-01-07 +-30||-1045771991|-8789178184387641344|37527.62|-4207911.34|-1780358853070.538086|false|american history|yuri king|2025-07-21 20:28:30|2055-10-07 16:55:33.198425093| +40|26664|323817967|8129551357032259584|38950.86|436144.95|2865228012676.333008|true|xylophone band|yuri king|2045-06-06 17:15:59|2050-10-04 12:19:24.850508554|2079-11-18 +68|6379|107680423|8455496814886002688|16783.75|-1796865.52|3914636681057.181641|true|wind surfing|ulysses ellison|2018-04-19 06:54:02|2046-12-01 13:33:44.835934730| +-42|-29864|-1765795567|-7611584069753552896|1400.23|-2198848.86|-4142081795402.248047|true|values clariffication||2078-03-21 16:12:11|2062-12-21 12:39:08.433755127|2002-11-27 +-98|-5374|652118640|9005866015985713152|10952.25|-778975.29|-2123680177187.878906|true|chemistry|holly ellison|2035-10-24 22:37:40|2047-01-30 12:08:45.733801194|2064-06-23 +-82|16082|703111607|-8191825921746305024|29830.11|-2140181.35|413651702499.820312|true|yard duty|nick young||2042-05-25 13:16:01.793578638|2038-01-30 +48|-19357|-327648289|-8719510423723155456|-15826.08|-1399170.73|-1177519032425.173828|true|opthamology|rachel robinson|2014-12-06 03:21:19|2017-10-22 00:02:11.871683|1980-07-14 +117|-28489|29680001|120|-7326.78|-2940796.64|795619083684.435547|false|biology|david thompson|2071-08-07 12:38:00|2029-01-27 18:45:19.757818985|1985-05-28 +84|-14445|955267058|1398|-39118.00|-252708.89|2936056124736.019531|false|xylophone band|quinn carson|2034-06-11 16:49:32|2044-02-16 22:34:53.422119076|1971-05-12 +-22|15176|-1719427168|7204802700490858496|23869.73|-3566161.55|-1108670696092.311035|true|study skills|mike ichabod|2038-07-28 03:06:50|2071-07-28 07:26:48.536104572|2093-01-08 +115|32640||1641|-24629.67|805640.61|2361264049177.335938|false|quiet hour|mike garcia|2062-08-15 18:14:40|2039-10-02 01:48:36.441956539|2028-08-27 +4|16565||9020143715350814720|30989.11|62250.03|-3775876617082.865234|true|geology|mike ichabod|2058-09-10 22:40:14|2045-02-09 04:57:27.469371231|1986-01-12 +107|19968||8391407951622815744|-16291.50|-2197796.27||true|mathematics|jessica carson||2018-10-18 23:42:07.746990788|2098-01-08 +8|30839|2124297747|-8088337436168830976|-2530.91|4326384.64|-3930030546396.352539|true|philosophy|ethan carson|2053-03-31 02:49:11|2077-02-14 19:32:48.817078807|2044-12-27 +-51|23417|-561932449|-9002912355472736256||-3494510.74|193686605544.023438|true|forestry|yuri ovid|2072-01-20 06:44:27|2058-10-22 10:05:58.452026865|2029-10-10 +127|2458|1312270193|-7703540456272994304|-30172.91|-3932244.53|4584335441081.783203|true|geology|oscar falkner|2028-05-09 02:38:49|2061-07-18 05:22:43.486063370|1992-05-17 +|-3896|2125479431|-7528526815026692096|-43588.12|2626041.23|108128490708.878906|false|zync studies|tom davidson|2079-01-11 16:56:51|2021-10-26 01:44:33.360652926|1991-12-08 +66|-26565|1415647436|-7497303453253402624|40063.00|-3378713.78|4711143056921.755859|false|study skills|quinn carson|2063-09-21 11:00:20|2028-01-29 05:55:55.60341061|2053-12-21 +-10|29023|-1349876582|-7404052043914526720|-49017.66|1739116.26|-1136993478948.511230|true|xylophone band|fred davidson|2013-12-01 20:22:06|2022-09-10 20:46:48.711563393|1993-01-01 +-96|13845|1482983157|-8194062064124362752|-11244.55|-159728.26|1309790215609.823242|true|debate|quinn johnson|2063-04-01 07:33:34|2013-11-29 03:31:42.159871063|2047-11-27 +-2|-5216|-423074450|-7500200359698907136|-30084.10|-3880377.83|1722452513891.284180|true|chemistry|irene ellison|2057-08-26 16:24:51|2072-08-27 10:55:23.742757053|2034-06-07 +94|26031|374283948|-8469607298426437632|37962.54|-2096075.50|-3681863458112.886230|false|forestry|wendy laertes|2030-12-24 16:17:15|2039-10-14 15:12:53.586673558|2089-05-30 +92|8188|-789126455|8716401555586727936|-20231.51|-869679.31|-4521385333389.105469|false|kindergarten|irene steinbeck|2045-03-29 19:31:48|2065-03-17 00:26:26.825546265|2011-05-24 +44|-18581|-1749415887|-8509547439040757760|-22655.82|-1388039.31|-1825647192295.107910|true|religion|ulysses steinbeck|2032-10-19 14:19:15|2023-10-26 21:55:37.177075833|2053-07-04 +-92|-10015|1184001017|1142|-33050.51|4481379.80|-1053461687358.634277|true|biology|ulysses ovid|2014-03-06 00:20:33|2045-04-09 08:35:52.499479468|2087-01-20 +-54|1436|152654715|-7928062266382778368|41161.73|-1889940.58|-1575161140707.663574|false|biology|xavier steinbeck|2060-01-09 17:08:08|2026-04-18 07:58:06.16296875|2058-08-10 +-13|4230|1130840708|2463|33676.84|3194960.57|2435882345912.432617||biology|zach garcia|2057-05-30 09:45:00|2033-04-10 09:34:42.495803643|2020-12-01 +25|2295|-1202975006|1556|-20807.16|-2353771.77|-1904146904419.441406|false|joggying|alice ichabod|2026-12-30 03:35:56|2022-03-21 10:42:40.306953000|2044-07-03 +-69|1519|-369183838|-7329807949048193024|-32663.02||3844582365590.625000|true|values clariffication|wendy xylophone|2080-05-28 15:57:10|2047-12-16 10:29:14.386661377|1981-07-08 +-69|14041|-295751373|2805|-13866.52|4333070.89|-274202051963.641602|true|education|ulysses carson||2023-02-08 20:21:21.62389399|1972-09-23 +-46|-21695|-1111814111||-39900.23|3075898.85|-1328765175408.754883|false|values clariffication|irene van buren|2068-06-24 09:20:11|2078-04-06 07:36:13.609048906|2084-03-02 +33|24776|-1341627565|1086|-25329.13|-4124697.39|568946558863.494141|false|linguistics|fred van buren|2016-11-25 15:42:53|2041-09-06 16:44:15.753021799|1997-04-05 +88|-24305|-2017279089|584|-14782.30|-4427868.96|-4580945829519.827148|false|xylophone band|alice ellison|2025-04-02 00:57:40|2065-12-15 09:01:25.455146608|1992-09-23 +85|18508|-933324607|2986|-35539.03|949235.35|2150838152903.382812|false|values clariffication|rachel young|2077-06-06 13:55:44|2060-03-15 13:08:33.223456909|2062-03-17 +-57|21469|-1305139473|8936639033158410240|-14758.73|742696.42|-3129953345578.364258|true|joggying|mike underhill|2050-05-16 08:16:39|2022-06-09 23:24:09.470631530| +-31|-4209|-1261099087|663|-32989.53|-2638594.96|-379965508311.385742|false|values clariffication|sarah van buren|2018-10-27 03:59:19|2052-04-15 01:32:00.994348144| +25|-15493|-2076460151|917|14582.04|206182.79||false|history|bob ichabod|2062-06-18 12:11:36|2072-10-22 14:39:08.102756440|2035-09-15 +-127|-21432|1392980712|-8896045754034978816|33746.10|1369438.32|-2213339183595.266602|false|linguistics|victor carson|2063-07-11 11:19:36|2059-02-03 05:23:38.742424491|2081-11-25 +-18|4446|-1627366321|3770|19646.12|-1061360.32|3763670834676.986328|true|history|david allen|2060-06-09 15:38:25|2076-04-15 14:40:26.65920865|2105-03-29 +-49|31651|1742536084|181|20539.33|1900029.03|-973711957609.921875|false|industrial engineering|sarah robinson|2058-09-14 09:13:51|2049-11-22 16:20:46.456017322| +-121|-30818|461680901|3879|25996.87|1045218.96|-3744622671193.091797|false|opthamology|quinn zipper|2029-12-11 08:15:14|2035-08-10 11:56:46.326756601|2098-04-10 +-104|6115|1271280812|8268875586442256384|-46035.48|3944258.09|444985822411.005859|false||mike hernandez|2053-08-11 14:07:25|1970-01-01 00:00:00.326170366|2005-06-25 +57|24436|1660278264|8230371298967609344|-14743.67|-864865.12|-3684060933780.451172|true||priscilla ellison|2050-01-30 06:06:03|2041-02-12 06:14:03.898656769|2001-12-14 +54|-3179|-1210907929|-7784419454650843136|31849.45|-3799672.87|1576487530284.466797|false|american history|yuri ellison|2068-10-11 21:35:15|2025-11-07 17:23:48.618067004|2043-08-30 +10|21509||7259955893466931200|-47613.45|4839854.05|2427453521622.489258|true|mathematics|quinn garcia|2016-10-15 22:05:46|2068-02-07 16:25:49.828674|1996-07-12 +-45|-16301|-359943425|7310869618402910208|9811.11|2506299.82|4772172041585.029297|true|nap time|victor miller|2056-04-13 20:03:18|2044-08-02 00:28:03.490555974| +-105|-25596|1372982791|8665969966920990720|33573.48|-1657931.01|1984118625141.562500|false|zync studies|ulysses robinson|2040-06-03 12:52:31|2019-04-20 12:32:05.699693227|1980-07-11 +-116|10216|-1826997220|7997694023324975104|-47516.30|-2963202.09|100917821438.599609|false|forestry|luke polk|2052-05-02 04:53:51|2021-12-10 05:20:23.715804563|2041-05-16 +8|5661|-797889292|-7194281951646187520|-22733.41|1685818.62|-4299495592291.648926|true|yard duty|oscar miller|2081-01-22 19:21:59|2014-08-23 04:40:02.148690660|2072-09-22 +-81|11299|2045579147||-6003.77|2350857.41|304950002790.534180|false|biology|jessica van buren|2063-09-17 16:53:04|2044-12-20 20:38:31.329673698|2064-04-08 +-12|-9566|-507015439|-7413317118463164416|31895.75|-433518.57|365292387716.635742|false||holly underhill|2021-09-06 18:29:08|2021-11-28 08:11:22.448374557|1982-10-11 +118|-12506|1166237779|8910706980937261056|22112.37|2939657.23||true|nap time|irene steinbeck||2044-06-03 15:58:30.165260645|2064-10-28 +91|-32364|-457341338|-8131997716860526592|-45833.01|-2185113.98|-3337207914447.510742|false|biology|nick robinson|2050-06-22 23:36:26|2051-12-11 16:48:50.166285024|2082-01-03 +120|22111|-449333854|3036|-47682.26|4533889.39|-2373794013216.148438|true|zync studies|katie white|2066-10-24 10:18:00|2079-07-09 12:23:14.869010625|1979-04-16 +62|-24422|-1939362279|779|41770.63|-3030328.24|-3036341908371.618164|false||sarah carson|2038-12-25 12:38:22|2016-03-10 19:56:02.617048560|2043-05-14 +105|-7871|1677444379|462|-25466.45|-2333073.80|1573764982827.370117|false|topology|david laertes|2065-01-23 17:35:30|2030-05-28 19:57:50.523892948|1978-12-02 +92|22013|1934970004|1530|-31612.20|386374.79|3919658011295.154297|true|wind surfing|rachel steinbeck|2043-06-01 15:48:11|2072-02-23 16:08:41.7277206|2066-10-17 +-7|31706|480849725|2420|-34144.44|1948672.56|-2495375067634.100098|false|industrial engineering|priscilla ovid|2019-04-23 17:17:50|2041-01-13 14:08:37.798985197|2086-01-28 +-5|31374|-1989378509|1620|-42264.62||-3891991449183.755859|true|history||2025-11-06 15:53:38|2049-04-01 09:50:27.173079026|2094-09-06 +0||-619311578|-7603467428164009984|41313.92|-2867281.50|2333079974592.848633|true|forestry|||2047-11-03 06:58:16.269601873|1996-03-21 +87|13048|-1058356124|8900180888218329088|46143.53||-1070361491662.197266|true|topology|jessica white|2047-07-05 22:45:05||2048-12-11 +-88|-21233|467753905|8145745969573666816|25312.60|1049802.86|-2723673201054.843750|true|yard duty|gabriella xylophone|2070-11-24 04:08:34|2026-09-28 18:14:59.105449930|2006-10-08 +91||436093771|3866|-20507.42|-4036924.13|3015854329390.493164|false|chemistry|katie davidson|2062-02-01 01:28:52|2023-12-07 18:06:55.295471618|2009-07-21 +-40|-26367|1638471881|2942|-20839.12|2334055.71|-1009017992118.472656|true|values clariffication|quinn xylophone|2024-10-31 09:37:15|2035-05-26 20:30:15.166412370|2096-08-22 +|-15341|1284956108|2714|-24368.52|2762099.65|996794591008.445312|true||ulysses johnson|2036-05-10 07:43:41|2014-11-17 17:41:54.569317179|2004-02-18 +-81|-28536|964810954|-8664806103426252800|-3895.82|1239798.71|1460043982310.139648|false|chemistry|tom ellison|2073-06-09 02:04:54|2054-03-16 19:45:38.587152452|2029-08-04 +-102|4781|-134686276|-7245872320493322240|-39160.59|1738195.03||false|zync studies|oscar nixon|2043-12-25 19:27:04|2036-11-22 08:14:18.398127889|2044-08-20 +|18190|470575409|3677|15296.19|-3367111.19|2375368805782.116211||biology|jessica falkner|2020-03-17 05:08:10|2017-07-24 14:20:17.704096216|1989-09-07 +-120|29775|-1544877665|3322|-30539.75||-2169994076424.543945|false|mathematics|katie quirinius|2068-07-30 00:23:54|2076-10-31 16:35:34.618086233|2071-05-31 +69|-14561|-337829479||-17108.31|4350734.10|-321356327348.425781|true|nap time|yuri garcia|2022-05-20 06:16:32|2074-05-07 23:37:52.880290719| +-53|20814|-1621721177|2843|45481.88|659779.85|-144425647229.944336|true|yard duty|nick thompson|2070-10-03 22:05:16||2011-04-23 +66|24975|-1727003541|3770|-48598.17|2248549.81|2442081049155.789062|false|quiet hour||2057-08-21 06:32:31|2052-10-01 01:14:42.357763204|2082-05-31 +80|19454|881695885||-24555.54|-2658541.95|-3999216119225.792480|true|mathematics|zach laertes|2058-09-06 18:18:39|2045-03-19 01:11:10.357277543|2088-11-30 +127|-20559|76299337|-8347088645602050048|33581.96|3373684.98|-2291600612129.158691|true|values clariffication|luke zipper|2045-08-02 04:19:46||2003-04-23 +35|18372|375106978|-7558524160894427136|17438.11|3055890.03|-2851108972106.182129|false|mathematics|luke ichabod|2014-10-12 03:59:44|2064-05-10 04:50:52.176951865|2045-04-26 +12|-2546|-932525608|1128|10538.74|-213150.40|3852649211677.494141|true|forestry|zach quirinius|2062-05-02 08:03:33|2054-07-23 19:16:01.54567994|2011-05-24 +-99|6734|-752222556|-8030058711611629568|-9999.43|2222603.87|-1177370723477.686523|true|philosophy|tom allen|2064-11-30 12:33:07|2038-05-12 08:15:21.550815629|2062-05-10 +-84|-31828|1640192895|-7085247548404178944|11396.60|765437.70|4376234981030.542969|false||fred laertes|2031-05-12 17:02:46|2020-06-02 13:39:29.887480414|2075-10-23 +98|-27358|-1908696083|-7524170566881329152|33328.47|4906241.93|-4200209955921.394531|false|industrial engineering||2013-10-21 14:51:57|2065-02-15 11:01:46.758468368|2031-01-03 +29|39|-1969235238|-7612466483992051712|-21834.37|-753997.20|4139418130730.519531|false|religion|fred thompson|2013-07-08 01:25:24|2041-08-16 15:21:08.955635598|1978-03-09 +97|-5435|1925283040|3858|-44322.83|-4029585.87|-160952372089.369141|true|values clariffication|yuri white|2056-04-24 04:26:00|2074-01-27 09:05:58.787171815|2105-07-12 +73|1864|-374337252|-7185369278665605120|-5602.25|3122723.45|3298229895790.285156|false|education|bob davidson|2057-05-25 11:17:25|2025-10-22 01:38:03.980293239|1972-11-27 +70|29922|-43858652|8294315622451740672|-29448.03|-1778079.57|-1766076763805.628418|false|zync studies|mike king|2065-02-07 13:17:50|2061-06-29 03:21:18.864990826|2007-01-29 +-38|18482|1027147837|3749|-11458.85|1833652.80|-678647292518.519531|true|education|ethan zipper|2076-07-22 09:12:19|2070-12-01 19:35:01.281100277|1976-05-24 +66|1100|-1116100266|2475|14297.80|-2892537.32|-3946454621441.901367|false|kindergarten|priscilla ovid|2026-12-27 17:59:09|2031-08-26 16:20:21.731841751|2056-12-20 +-75|-244|-828724467|7017956982081404928|13959.52|3637484.91|-967659211294.602539|false|kindergarten|tom king|2024-05-05 02:41:05|2017-05-13 18:14:40.518511433|2089-08-08 +0|28774|-214166042|8996824426131390464|-8379.85|3716914.13|4222254163433.164062|true|religion|jessica falkner||2062-05-22 16:30:19.873937390|2037-10-21 +98|-23943|704038411|-9008631121684832256|11467.22|-26109.85|1453933622072.760742|true|quiet hour|quinn van buren|2031-01-15 10:24:44|2080-02-20 18:34:29.393914150|1971-04-30 +-44|-22919|1059212450|-8664374244449050624|-43783.06||-2744206179838.357910|false|topology|tom zipper|2078-04-16 22:09:57|2015-02-04 03:02:42.444900448|1990-10-04 +-96|28828|1194243726|-8022573309127000064|-36993.05|-3350574.73|-3446729979624.407715|false|education|luke miller|2049-03-01 14:30:12|2033-07-10 21:42:22.862245209|1993-11-26 +43|-23250|826519029|7260908278294560768|28434.22|2489106.74|-827966036176.519531|false|joggying|holly hernandez|2046-10-24 15:08:00|2018-04-28 21:52:16.144224143|1983-06-29 +-109|11159|-1146649990|-7804116532814151680|-21512.36|-2988451.20|-767455514749.215820||xylophone band|ethan ichabod|2028-08-10 15:01:03|2071-11-24 13:43:25.874441396|2018-11-26 +-31|27028|1102561039|-9032650742739836928|45143.72|3309952.46|2242882207203.713867|false|biology|priscilla carson|2040-05-20 00:52:26|2039-07-07 05:12:55.557873894|2050-08-13 +-31|8018|-1469463456|501|-9472.19|2090864.64||false|values clariffication|ethan zipper|2059-03-13 14:20:43|2050-12-12 12:51:46.639473654|1972-01-12 +35|24178|198539698|-8023708819947323392|22201.65|411700.32|110901550184.152344|true|study skills|priscilla allen|2042-03-09 10:00:23|2039-05-17 07:47:17.35897251|2015-02-04 +72|-10874|917891418|7099005292698550272|-41703.56|-239441.80||true|history|quinn carson|2022-05-02 06:51:14|2074-02-24 23:11:20.544869728|2040-07-11 +-99|-9619|-1364322216|-8555709701170552832|-37994.57|4764958.77|-2213290379214.534180|false|opthamology|holly hernandez|2059-01-01 11:35:05|2054-07-17 23:18:57.923510131|2070-05-01 +31|-22423|-1884780525|1021|1397.74|1201328.01|-4818799249138.656250|false|religion|oscar xylophone|2018-08-20 16:36:19|2078-04-14 04:08:29.133505551|1995-02-09 +74|13161|170870820|837|29320.25|-2472720.99|4744229264480.814453|false|chemistry|alice ichabod|2030-01-04 19:06:17||2042-10-11 +-103|-33|25400543|-8659692318743314432|36914.91|-1276086.36|-3921251458029.359863|false|yard duty|quinn robinson|2031-12-09 16:11:01|2078-04-26 16:53:21.302790369|2099-01-27 +-105|-21292|1359437295|918|-3658.01|1712092.37|1174966655510.374023|true|quiet hour|rachel white|2075-06-01 13:42:17|2061-08-03 05:14:34.975643283|2074-11-30 +|-705|-817383093|3231|17633.05|747243.64||false|history|quinn davidson|2077-07-22 03:16:53|2034-06-11 20:57:54.636482005|2026-01-01 +|24299|1731764471|8811693967537774592|-31379.03|-2858399.87|-1035856578130.811523|false|undecided|katie quirinius|2059-04-11 00:04:58|2023-04-09 00:06:25.50734754|2049-12-22 +20|32584|1336194583|425|-48765.66|1611818.56|3031299564927.358398|false|joggying|tom underhill|2051-02-13 22:52:50|2071-09-27 23:40:33.597399987|2090-03-28 +127|-6806|1605596441|2223|-15150.22|-2788232.30|4969239348148.341797|true|kindergarten|calvin ovid||2049-10-17 14:26:44.325906064|2053-07-28 +|-16477|989475408|2025|19325.70|3820886.26|3959945144125.960938|false|topology|jessica brown|2076-09-09 00:56:05|2043-04-12 08:47:11.743040247|2054-07-01 +48|6080|748358417|1366|10522.55|1308549.86|3204335645975.468750|true|mathematics|ulysses brown|2068-07-20 07:06:56|2065-02-03 07:51:53.142464311| +-23|-24763|1363459426|3183|-1941.42|2866084.36|4090868873717.638672|true|religion|bob laertes|2054-10-11 05:20:09|2017-05-18 01:39:50.669692033|2083-08-13 +|26952|477584560|8639254009546055680|22309.89|-773630.55|-2616912485449.312012|false|topology|fred steinbeck|2055-06-12 13:09:32||2041-04-05 +6|-13607|1404346934|1701|9755.15|3694127.29|2289362105608.816406|true|mathematics|irene quirinius|2029-12-28 04:20:07|2021-03-23 01:27:22.684453883|2062-05-26 +69|12779|117620760|2144|35154.87|-74893.94|-60821955725.600586|false|opthamology|katie polk|2023-07-29 05:56:18|2077-04-30 23:25:52.819734472|1973-06-20 +71|19874|-954480325|812|-29151.55|-583085.51|-2116792328856.504883|false|topology|mike thompson|2022-07-04 08:33:09|2054-05-06 18:42:54.372981849|2101-01-25 +50|-4676|-1198036877|3029|21369.18|-1981569.84|-1564171250410.737305|true|mathematics||2024-06-20 15:56:00|2040-03-30 06:03:01.174329441|2068-07-02 +-72|30184|177294487|3021|5165.49|-1596340.34|1223117998739.837891|false|education|tom quirinius|2042-07-11 09:42:25|2036-11-21 13:02:42.103331236| +29|-7738|1626884085|-7831595638727565312|-45050.94|-2700638.86|3865143383275.117188|false|forestry|nick robinson|2063-12-16 11:44:53|2062-05-28 04:19:35.174802501|2078-01-13 +3|21529|1570238232|7291432593139507200|32858.59|-4388204.21|-210573866194.288086|false|study skills|david polk|2024-02-02 04:09:29|2038-08-21 04:22:50.431607050|2040-05-27 +-17|28899|-758231588|3144|36652.92||-1900552843483.183105|false|study skills|calvin steinbeck|2049-10-03 07:06:12|2020-03-06 22:26:13.607554719|2035-11-03 +|-16282|1061638369|1777|-4384.35|-1244086.91|-2637519110440.145020|false|debate|mike polk|2063-04-01 14:18:27|2071-09-05 06:27:11.573643641|2019-10-13 +-117|5805|-2117280385|2786|30428.31|-1847649.14|3514157597185.949219|true|mathematics|zach xylophone|2044-12-26 14:06:27|2065-02-21 06:38:34.747815475|2076-09-01 +53|-24478|759899363|-7055760785575665664|-38851.48|-164936.61||true|opthamology|wendy van buren|2036-11-09 12:45:04|2015-03-19 16:03:44.687802082|1974-07-12 +-14|15342|-742707249|997|-30055.88|3904057.55|2666224881009.426758|true|quiet hour|yuri underhill|2022-04-18 18:27:22|2058-06-03 07:14:44.710973048|2029-09-09 +17|18558|1544482684|-7455898404374921216|21695.62|1828986.91|1486379335536.440430|true|xylophone band|priscilla quirinius|2019-04-18 10:14:07|2065-10-13 03:03:50.175251946|2035-03-25 +63|2756|-1651993300|8156782979767238656|47445.89||-1961119985887.940430|false|mathematics|yuri steinbeck|2075-10-02 19:48:35|2080-04-29 16:47:10.830876109|2000-06-11 +-84|-22960|-2042647152|-7511202710200885248|-24386.13|-4029840.95|-2510830722895.000977|true|geology|holly steinbeck|2029-02-11 00:58:36|2047-02-27 12:50:23.888314937|2094-07-31 +-80|18972|658850444|8254763178969915392|21450.96|3702206.03|-3674276371457.132812|false|joggying|ulysses ovid|2039-06-13 12:28:06|2016-06-11 08:22:07.949640945|2072-04-04 +112|31432|-1030565036|7921639119138070528||2660603.95|-1690952529497.664551|true|xylophone band|xavier king|2017-06-10 07:41:38|2021-08-11 18:06:21.956845249|1985-03-21 +-60|17086|-592568201|601|5540.34|-2955362.85|4784206322848.660156|true|wind surfing|fred steinbeck|2060-06-12 10:32:48|2060-05-18 02:32:45.427275127|2005-04-15 +-37|-15538|1493152791|7581052107944361984|20231.52|-3867808.16|-1930084301499.235352|false|values clariffication|ethan allen|2025-02-09 11:05:22|2070-09-16 10:31:49.168754255|2078-10-09 +83|17769|-707228984|1477||1933098.47|1243678323415.799805|true|topology|alice ovid|2041-12-22 11:47:06|2029-11-10 21:46:09.465549350|2034-01-19 +84|4332|994798486|-7273590251991162880|-530.49|-372447.19|966744556747.407227|false|xylophone band|ulysses ellison|2057-07-25 02:50:33|2055-03-26 10:14:50.431828635| +-4|-23271|-359194591|1094|-9368.19|4069501.92|-4572923026255.822266|true|study skills|zach young|2051-09-13 17:10:12|2023-04-17 06:52:55.145926793|2021-04-06 +-55|-20876|-1270523286|378|-44353.44|2396737.53|4229227938355.820312|false|joggying|victor nixon|2063-08-30 21:44:45|2029-06-14 05:52:34.105866037|2094-03-20 +|-20218|791096295|-7665186441284968448|-20412.10|2217637.27|4562991879297.548828|true|topology|david garcia|2054-05-10 11:07:00|2041-04-17 03:22:13.766692104|2069-11-17 +-39||48554395|3554|-24292.94|4604419.17||true|wind surfing|gabriella allen|2023-09-06 06:55:15|2072-07-16 06:46:24.328637434|2029-10-13 +-41|21665|1990792684|7231399302953377792|-38445.21|3349715.89||false|quiet hour|nick carson|2079-07-05 20:05:00|2034-12-18 22:02:47.270122839|2070-09-19 +-50|27071|-1274158260|8220104397160169472|30089.83|2297877.70|4300108680631.070312|false|yard duty|oscar ichabod|2046-09-17 01:47:55|2032-08-28 15:40:30.150960444|2034-11-01 +-82|-5259|-1901806083|1606|8656.31|1686951.72|-2805163217886.743652|false|opthamology|luke xylophone|2047-07-10 16:16:02|2056-07-18 04:15:36.890442784|2024-11-03 +-116|-31793|-870900240|3812|-45329.51|3797720.43|-4712635243486.857422|false|american history||2035-09-17 10:15:34|2029-07-13 09:16:29.231146829|2065-07-22 +-15|-15119|-1648991909|-9051477157204770816|-155.56|233740.40|-4028341779707.886719|false|xylophone band|holly white|2062-07-18 02:55:15|2018-03-05 18:18:02.658727871|2055-02-14 +125|26292|1336951982|965|-3145.16|-2870316.24|1200365494539.638672|true|opthamology|oscar hernandez|2021-08-15 21:22:48|2077-01-25 12:45:13.576960421|2087-07-20 +-124|-25624|-1424027104|8290014929764040704|33446.06|-2015309.65|4621409183423.708984|true|mathematics|rachel laertes|2030-07-13 15:41:34|2024-07-19 05:43:44.761137371|2068-11-04 +74|-15819|1393506704|-7333278178640953344|-41521.39|-1382657.57|1818449023106.509766|false|values clariffication|david white|2013-11-13 01:21:21|2051-03-30 03:43:58.63225731|1977-02-08 +-46|-21358|1595326878|-7494411162675691520|47402.29|1481302.07|-737916756281.720215|true|biology||2014-11-01 08:48:04|2080-07-22 02:50:15.245713301|2067-08-04 +78|-3061|-1688105985|-7845896959112658944|20424.90|-2200853.82|-4030721564466.972656|true|forestry|sarah garcia|2048-06-07 09:27:06|2056-11-07 17:02:53.875147020|2050-01-23 +121|-27998|1893632113|1506|46216.74|-4246065.27|941594019679.499023||quiet hour|priscilla quirinius|2034-04-02 17:55:45|2070-12-01 11:40:21.22381104|2063-03-18 +79|-11015|882331889|1307|15201.15|-4985467.57|2728236854644.627930|false|xylophone band|katie zipper|2068-07-16 18:28:04|2027-01-31 13:47:37.483422716|2073-06-23 +-2|-14597|922553769|8697823501349609472|34404.90|1448595.84|-30527549927.832031|true|nap time|jessica ichabod|2041-11-09 07:07:21|2049-09-22 14:17:28.756379035|2104-09-14 +-83|-3373|-1231821948|7232273749940838400|6870.08|231266.91|-3756701107128.712891|false|biology|luke young|2077-10-05 02:38:04|2028-11-04 08:15:44.533514578|1987-12-07 +-93|16217|914583645|-7777884099756122112|-28620.37|-4465513.64|915225716928.311523|true|undecided|nick hernandez|2076-08-16 00:10:11|2032-07-12 08:42:03.425331560|1991-03-30 +-25|12471|860708524|244|-9606.38|-4397701.63|1992695582220.882812|false|topology|yuri steinbeck|2028-05-04 05:13:05|2073-02-25 13:42:06.958715276|2023-02-03 +-20|4104|-837506172|7130159794259353600|10637.11|1082684.90|-1061846410311.524414|false|biology||2069-07-05 15:43:40|2015-12-06 23:34:18.460119776|2105-03-02 +119|5639|-425103007|2264|-13547.98|-4258720.44|-2078162482098.839844|true|study skills|tom brown|2030-05-29 20:15:30|2028-06-29 09:07:43.498893365|1979-07-10 +-34|10646|-1081766449|2524|37570.72|-2194969.24|2620228350592.164062|false|forestry|holly ichabod|2078-09-09 01:05:14|2055-06-28 04:30:12.285923687|2033-11-09 +34|26796|1942004879|-7058986555327307776|-31641.81|-1131793.64|-3407576334614.113281|true|philosophy|katie xylophone|2059-08-22 02:49:28|2066-05-01 16:28:29.327975427|1978-10-29 +45|-27705|-1817564067|8287522765741301760|-43897.38||3907121274240.595703|true|wind surfing|rachel davidson|2047-06-24 16:49:48|2056-07-02 13:50:19.90463468|1983-11-05 +45|32348|713031549|238|-38634.07|-1450667.10|-409310416914.650391||education|oscar johnson|2054-09-19 05:27:23|2029-10-02 14:05:57.413615201|2032-07-08 +46|27675||8905330479248064512|16198.16|-2632400.27|3886641749701.169922|true|joggying|quinn johnson|2019-02-05 14:05:06|2070-03-27 04:03:58.235564696| +97|-9378|-1302592941|2565|-10209.72|2747639.04|4786387366438.126953|false|joggying|quinn steinbeck|2071-10-12 12:46:09|2025-04-20 22:17:35.854855645|1979-12-26 +116|-12647|-1439293109|-7464270453557993472|15349.77|1434424.80|-135137939502.065430|false|geology|priscilla nixon|2033-12-27 21:48:03||1991-03-04 +92|-11247|1386071996|3059|11401.50|-1896215.16|2347644267651.176758|true|study skills|bob zipper|2021-06-29 12:07:50|2035-09-11 08:21:19.174222330|2044-05-14 +89|32734|1190554937|8806507556248731648|38206.52|1976527.21|640421772016.566406|true|american history|bob ovid|2033-02-11 01:46:00|2053-06-28 21:09:19.628354599|2011-01-20 +26|16592|1645067708|2325||-2622604.31|2980127550702.285156|true|joggying|luke ichabod|2014-01-04 06:06:19|2071-10-17 06:17:30.135307685|2060-03-21 +11|29507|-1709246310|279|43863.50|1759736.14|-567393323943.683594|false|zync studies|yuri polk|2015-11-21 13:48:31|2073-07-25 22:12:29.641294618|2031-06-22 +124|8811|710856472|-6919476845891313664|45495.65|-1060105.47|-1430527601193.496582||biology|bob allen|2073-08-12 19:38:25|2068-08-15 23:13:27.942081256|2060-07-10 +21|-31130|832465439||19127.41|3475056.36|1333770358662.747070|true|values clariffication||2035-09-22 06:31:52|2025-04-28 10:40:21.453847657|2028-12-29 +-87|-17082|1695098246|-7949445503604604928|-16712.01|2247741.82|2302730983386.708984|false||holly underhill|2018-11-30 10:49:53|2045-02-23 00:16:16.133285975|2038-12-04 +-21|30367|-1348149160|296|38647.80|-4078029.68|-3561424322605.582031|false|zync studies|oscar hernandez|2067-04-23 03:33:33|2074-06-26 17:31:32.359037592|2029-03-23 +73|-6046|-1801684055|2776|-11660.33|-92644.47|2813453631092.279297|false|history|calvin steinbeck|2035-02-28 14:50:25|2044-08-20 09:47:08.372477879|1990-07-26 +-61|-11571|-625788713|-7541860097718902784|-39240.88|-2131339.22|1280986883304.074219|true|yard duty|katie robinson|2077-04-16 13:56:13||2077-07-22 +127|13877|-1444011944||-36685.74|1068545.94|-3123990427797.806641||xylophone band|jessica miller|2075-04-07 22:10:16|2026-04-16 15:24:05.757112195|2058-08-30 +27|-7204|177837042|1290||-4706307.91|1894298448371.713867|true|joggying|katie ovid|2078-11-05 16:33:02||2047-08-01 +75|31390|-655118881|2463|13931.63|2353987.25|342502558193.693359|false|debate|bob laertes|2029-03-17 16:57:54|2025-11-21 16:07:39.717499006|2051-09-09 +-108|4475|-1798573685|-8604758220106014720|-35702.79|-3538650.87|-2894179103280.372070|false|geology|ulysses white|2055-10-08 11:07:12||2083-01-26 +93|27830|-1743938290|7741854854673367040|312.82|-2185403.32|-1734036711805.160156|false|values clariffication|holly quirinius|2054-04-04 15:20:53|2069-12-15 04:38:47.560052946|2001-05-04 +-88|-3286|-1762037754|2551|29018.36|4267392.41|-779756981097.534668|true|study skills|ulysses van buren|2065-03-07 08:23:35|2032-11-15 17:28:07.414658349|2098-04-02 +22|-13008|-838656526|-7055619148037554176|-44259.43|-4710319.66|3995534775984.523438|true|wind surfing|holly allen|2031-05-11 03:04:40|2062-06-20 09:51:32.16783993|2002-09-12 +120|-13393|-1228063838|7779735136559579136||-1650324.63|-2119718598874.378418|false|kindergarten||2075-08-13 15:11:52|2016-03-18 12:51:06.253191429|2082-02-12 +105|||80|34755.38|3808187.81|-1326205474195.525391|true|yard duty|irene garcia|2059-04-26 10:19:24||2083-01-17 +|-21156|-16094879|-8430283518005846016|-48730.46|220370.23|3855982173238.068359|true|nap time|quinn king|2079-04-23 14:15:58|2037-09-06 10:27:52.111597670|2021-06-05 +-101|4447|-2057666812|-8017791189288869888|29088.20|2208437.63|2276256855650.693359|true|linguistics|fred thompson|2019-11-10 00:52:12|2048-05-17 18:03:07.315321116|2085-08-26 +22|11617|-291577538|-7109790267244814336|-1758.84|2108616.98|-3091881671406.149414|true|yard duty|irene white|2019-05-05 18:18:26|2043-12-01 03:20:17.297879695|2034-09-15 +44|-19926|1121512594|9136548192574529536|7809.10|-3179961.55|-2697911245110.624512|false|linguistics|xavier king|2025-06-19 21:15:27|2026-11-23 19:22:12.931539836|2028-07-04 +25|-7932|-88576126|3866|-40180.34|-3442455.88|-673567578957.623535|false|history|ethan allen|2060-03-25 23:31:50|2073-03-15 11:17:08.52042007|1997-03-03 +46|-9148|-1125605439|2587|-14408.82|2954854.93|-3234402189604.033203|true||ethan zipper|2062-08-28 19:22:21|2052-12-12 17:11:46.580071441|1986-09-27 +86|-6306|-2086352100|3199|-9645.35|2612095.15|-4830215356785.387695|true|biology|holly king|2079-09-19 10:54:47|2047-06-03 07:24:45.53853551|2048-06-24 +-46|7821|-1117358187|-7052619594823221248|-45636.56|-1371279.81|607728743085.544922|false|xylophone band|ulysses falkner|2072-05-17 01:14:52|2073-12-22 21:30:25.133271709|2097-12-08 +11|20243|-1953605752|7500716020874674176|47152.07|2436880.55|4872992409355.773438|false|xylophone band|oscar xylophone|2077-11-13 07:21:25|2053-06-18 19:20:52.189371821|2037-08-07 +-75|14493|-1754347372|375|3920.39|-3542726.69|4037902414412.287109|true|chemistry|nick allen|2076-10-19 14:22:33|2067-01-02 19:16:01.197865810|2039-06-16 +-103|-9734|1106995930|-6962271229404348416|12236.89|3788033.07|-2209324511157.362305|true|american history|sarah ovid|2070-10-27 10:44:34|2016-08-04 23:50:29.753019864|1993-08-01 +-48|4715|-1721763321|-8016589197379289088|-30530.24|-1805122.07|-2176554594563.242676|true|american history|david davidson|2061-02-18 16:14:05|2023-11-29 03:29:35.375798915|2019-08-18 +-44|-9845|825977391|2680|6546.23|1003889.62|1794109717716.807617|false|biology|irene young|2023-12-29 09:25:18|2062-09-02 19:34:08.201742643|2042-01-05 +-126|-4808|1796013407|9086905513121890304|-30837.31|-2784508.91|-940462286027.212891|true|forestry|wendy underhill|2046-10-23 14:11:02|2046-06-08 03:07:27.448513337|2072-11-10 +33|-19020|-1527024213|9043089884440068096|-6538.53|2109588.86|-4192509371312.880371|true|american history|ethan laertes|2075-06-03 19:46:22|2016-07-20 02:06:17.231768834|2068-08-25 +41|-3517|-483740394|7039820685967343616|43693.06|-264459.25|-4706316500277.694336|true|debate|ethan polk|2042-08-17 16:30:23|2057-07-20 03:42:57.471171665|2089-01-13 +-78|-2993|-18917438|-9088239683374350336|21322.28||-3152751111265.139648||wind surfing|sarah nixon|2069-12-22 02:28:56|2020-01-14 00:49:35.464276768|2080-09-25 +-33|-17166|-23865350|7461153404961128448|-43841.82|1786124.64|-1312361707205.056641|true|mathematics|irene falkner|2043-05-29 19:58:06||1999-11-24 +73|9017||-7011425384222244864|7463.53|-912611.18||false|industrial engineering|calvin steinbeck|2076-01-13 05:42:08|2031-03-22 04:03:05.11520590|1970-12-22 +110|-23248|-2052386812|-7849504559236210688|18164.03|-4745727.57|-3268497309599.815918||religion|tom robinson|2035-02-18 06:36:09|2054-12-27 11:57:51.540094893|2101-02-26 +-78|-22941|-379174037|8518454006987948032|-16028.01|1101655.31||true|linguistics|yuri robinson|2079-01-29 02:22:51|2030-04-08 12:53:40.462715567|2009-07-15 +118|-13603|-896261100|-8108693586698706944|-37725.47|1643492.81||false|joggying|katie davidson|2056-03-16 00:41:42|2047-08-08 10:30:43.684357090|2041-08-09 +4|-11165|-87470856|-7835907977757245440|47766.70|-172736.58|-705268148248.308105|true||irene miller|2017-11-26 23:29:39|2049-02-04 04:05:19.789876244|2082-06-03 +95|-7531|-1431196400|3769|-11554.25|-449966.63|4127334068106.699219|true|history|ulysses johnson|2015-12-12 21:46:10|2036-02-03 09:18:11.872922402|2084-09-09 +-53|25197|-2053551539|6987889924212203520|42481.70|-2814180.11|-2222751654694.086426|false|philosophy|jessica zipper||2041-04-26 16:48:25.147389412|2035-11-10 +27|-31454|516479816|-8454143651040444416|21048.16||85228167341.461914|true|education|wendy ellison|2035-04-12 17:01:03|2038-09-21 20:57:42.397475607|2053-06-29 +98|20939|696229550|3588|-33537.03|-4795897.68|972612471920.477539|true|history|bob brown|2077-08-12 19:51:35|2074-05-26 22:09:41.804789098|2016-02-17 +58|18555|15020431|8195103847607967744|-14811.21|4118824.54|-1765284631805.848145|true|industrial engineering|ulysses zipper|2067-11-06 17:46:46|2061-01-21 01:12:17.706664569|2041-01-13 +105|-13847|1535954353|2002|-34929.28|4171958.52|4981340994597.296875|true|joggying|xavier carson|2068-07-08 07:54:35|2078-11-06 16:58:50.207226583|2014-02-14 +1|4939|2081152819|1386|47521.27|1005940.42|-271834636299.068359|true|linguistics|gabriella underhill|2027-09-30 17:03:39|2075-07-06 03:25:36.109827301|2076-03-27 +-15|-19343|1136976809|-6960947572095770624|-21777.67|-1396434.27|3880893659215.835938|false|education|katie garcia|2076-04-17 21:34:09|2029-04-22 02:08:55.846697941|2057-07-27 +0|-19427|-402441123|8282648443538710528|-2461.87|390965.06|-1946353660340.598633|false|mathematics|zach ichabod|2018-05-20 06:00:09|2060-04-07 09:23:55.211875207|2106-01-06 +81|-17502|1142481557|3648|-15271.49|3837206.12|2711396060126.780273|true|opthamology|mike falkner|2047-02-03 13:28:18|2068-11-19 13:47:25.883917641|2089-11-03 +-3|18240|1385883394|3245|49733.17||2590076423511.717773|false|chemistry|fred brown|2037-04-04 09:34:12|2056-08-29 20:37:59.589930416|2039-08-03 +-67|16236|-1759354458|169|44818.98|3676983.55|-2521939566095.312500|false|values clariffication|mike ellison|2080-05-18 03:39:05||2033-05-16 +-75|32420|368170021|1745|-31913.00|3098988.31|-1709482427198.700684|true|values clariffication||2050-09-10 15:48:50|2043-03-17 01:49:01.211358054|2040-12-06 +123|-9798|1022214896|979|-34858.06|-4611759.94|3132623148434.739258|true|religion|luke quirinius|2047-05-03 15:17:41|2014-04-23 09:46:34.314946856|1981-03-29 +56|-22949|1352649032|-7161165959057334272|-30633.03|-2172059.93|2676086958402.770508|false|debate|ethan miller||2035-03-25 07:11:42.630584685|2031-12-02 +-81|23910|-816661030|7753359568986636288|31497.00|-2540156.82|-855079143516.164062|true|mathematics|priscilla steinbeck|2043-01-20 17:52:19|2027-10-18 07:59:41.254276161|2077-10-14 +-6|5601|1395450272|-8054581198284668928|-8542.91||-1606030317476.374512|false|biology|zach xylophone|2078-12-27 11:24:15|2045-02-28 05:02:44.915979901|2044-05-29 +107|11999|1517915751|-8357136656913686528|7849.61|644546.42|-4762355116194.392578|false|xylophone band|quinn ovid|2031-03-07 20:01:49|2066-06-23 18:44:02.59637674|2035-11-21 +-111|-7201|402173272|8244041599171862528|13246.24|1865645.47|2451208712660.139648|true|opthamology|quinn garcia|2021-01-27 17:43:56|2034-08-09 01:39:56.465266766|2062-03-01 +84|28641|1550112473|2105|-34839.48|2206374.90|2481329266919.338867|false|american history|victor carson|2072-09-14 02:39:11|2074-11-11 20:35:41.528267430|2059-11-30 +83||1991072829||-19752.73|3615299.21|4961477513340.923828||linguistics|mike ichabod|2039-05-25 07:13:14|2043-05-14 11:35:08.371631978|2070-10-02 +-42|-24890|619884480||-43634.20||238695595845.186523|false|quiet hour|katie king|2025-12-30 16:23:29|2070-11-07 19:58:58.701587107|2074-04-07 +6|1773|945911081|1201|12149.74|-4310588.56|-1511638497761.680176|false|xylophone band|xavier miller|2038-02-01 00:45:45|2080-09-05 12:52:47.148409132|2085-08-31 +-15|14021|-504529358|7401968422230032384|-37534.75|4201171.03|2444925405174.487305|true|nap time|mike allen|2050-09-18 11:04:33|2014-11-29 23:07:36.744244067|2099-03-11 +5|31688|-1078214868|3286|30636.18|1173971.62|-956227486151.846191|false|wind surfing|victor ellison|2043-08-31 03:34:52|2035-03-16 01:11:26.192346613|2098-03-16 +-45||-1196101029|-8300764106868350976|21928.17|-4647014.51|4956420840249.898438|true|zync studies|david king|2055-08-25 19:03:20|2064-10-30 07:03:06.481596802|2061-07-28 +77|-10392|-733756717|3206|25255.20|1494571.87|2019642227208.784180|true|education|fred zipper|2068-04-16 20:36:33|2036-03-15 04:50:30.944587266|2009-04-21 +-48|-232|391186487|8351163199364390912|-18364.70|3128590.69||false|joggying|nick allen|2044-10-24 10:03:44||2064-10-10 +94|10273|-1079086534|8643198489997254656|-28079.60|-1967168.29||true|xylophone band|alice polk|2073-07-18 21:48:47|2079-08-17 09:20:08.850511965|2062-04-19 +7|-15024|1164895226|7647481735646363648|-41404.65|3363381.29|2413359348945.647461|false|history||2058-03-03 02:48:59|2039-11-24 21:06:19.627853209|2055-01-10 +115|20680|304860245|-7017212700635545600|6444.21|244053.33|-1143755671374.719727|true|biology|mike miller|2056-04-10 11:28:10|2041-05-22 04:06:30.995080646|2014-06-22 +91|12251|-1605045257||-17097.62|482477.24||false||calvin ovid|2075-04-13 21:29:46|2053-05-26 09:51:59.650152309|1977-03-25 +-14|-8003|-287400633|3235||2684560.92|-4335231265805.497070|true|opthamology|gabriella thompson||2064-05-22 23:35:52.607098998|2061-12-27 +74|41|-950738312|-7902517224300036096|4116.21|-698800.30|4481184305574.998047|true|quiet hour|ulysses johnson|2070-11-24 13:03:07|2028-10-12 01:59:46.270334023|1983-09-01 +40|-9130|-454598288|-8763062627136864256|51.13|2342049.79|956991212270.068359|true|forestry|xavier young|2072-12-09 00:10:59|2073-12-27 09:38:03.702010794|2096-04-13 +-115|-15009|184879574||38210.14|4964842.06|-2681134255346.719727|true|chemistry|quinn davidson|2043-08-04 17:45:28|2045-11-25 04:36:59.505962074|2021-11-09 +-63|-7846|-181523892|470|16397.14|-125897.17|742930822037.095703|false|opthamology|sarah quirinius|2071-01-13 18:34:42|2077-08-20 23:35:14.712549137|1980-03-14 +-14|-23852|1506907734|3913|35054.27|-2107960.80|-1463820488416.942383|true|study skills|wendy quirinius|2023-01-13 14:14:04|2057-01-17 13:52:55.519677224|2064-09-04 +-60|30199|194754262|7700734109530767360|26124.21|2765313.26|3771365519269.522461|true|religion|luke carson|2064-02-22 13:50:58|2036-05-10 22:37:32.467231653|1976-06-17 +60|8387|856986735||-19157.65|-512847.22|2926691512865.459961|false|quiet hour||2058-08-23 02:49:07|2034-07-24 01:45:54.602453003|2072-12-07 +77|2952|471464395|9209153648361848832|6685.64|-2455826.48|4693950276041.505859|false|xylophone band|calvin allen|2073-03-12 16:42:15|2042-07-08 16:12:36.775680419|2062-06-03 +123|-17772|592011541|7800332581637259264|-18090.32|259758.35|4594723649601.845703|true|quiet hour|tom garcia|2035-03-13 20:09:48|2019-07-21 13:09:55.617059503|2089-07-01 +123|-458|-1668736016|-7488345684795342848||1522581.57||false|american history|xavier allen|2024-03-10 00:44:52|2032-05-10 21:40:53.24143541|2060-12-13 +-61|6741|-1851280202|1524|36849.46||-433620929878.735352|false|nap time|fred hernandez|2062-06-20 15:38:46|2062-07-10 14:51:52.294404788|2021-10-08 +-30|-25469|479566810|2217|-38032.89|-1659376.79|-4610473792118.376953|true|joggying|oscar brown|2043-09-29 16:49:00||2088-09-17 +-79|4363|1012843193|-7939634346485858304||3845381.58|3440846254288.523438||joggying|ulysses xylophone||2020-01-27 18:28:16.376587873|1993-10-24 +-79|12954|-987995271|1937|7424.16|341212.02|-487096778003.710938|true|forestry|oscar davidson|2018-12-23 22:26:32|2019-03-25 02:15:59.24225770|1988-12-07 +-28|-8532|-1621814212|3352|-47452.44|-4528499.24|727025749396.936523|true|values clariffication||2036-03-03 21:26:26|2050-10-30 09:36:39.757209520|2092-12-08 +93|18140|63706286|8416121695917498368|-18882.25|2096358.06|2805544800868.311523|true|joggying|katie johnson|2045-02-05 07:32:27|2079-12-28 08:07:27.500711737|2033-09-11 +104|16856|414645489|-8875546987176206336|34734.07|3589029.79|-1419347451799.346680|false|industrial engineering|yuri young|2067-10-30 06:36:21|2032-02-29 15:20:26.937853261|1988-12-30 +-67|-7172|-1726585032|8532016240026279936|-49278.84|-589792.32|4737405563798.056641|false|biology|katie polk|2057-01-13 10:38:05|2015-03-25 23:38:45.889000866|2026-03-02 +-77|-2421|-1129489281|7581614118458335232|49489.68|432826.84|2527871145229.347656|false|mathematics|tom ellison|2013-04-12 09:56:41|2025-02-17 21:40:46.548907004|1972-06-16 +78|-13325|-1095938490|6923604860394528768|-49801.89|-2087305.57|3113776542345.157227|false|wind surfing|victor robinson|2064-07-08 19:36:42|2064-03-07 00:58:07.871862639|2094-12-24 +7|4952|127051381|8269730157217062912|-12009.11|4435291.94|4069009831908.552734|true|undecided||2055-01-29 22:59:56|2056-01-08 06:29:39.525903717|1973-04-25 +-35|-10420|-641062448|9000633029632499712|45756.67|-1660339.14|1993433319579.516602|true|zync studies|wendy carson|2069-08-25 17:57:16|2016-04-07 00:36:30.755764143|2058-09-21 +19|-2060|1579460630|8501910015960735744|24887.52|-833297.43|3466184527016.445312|false|debate|xavier ellison|2018-09-09 10:58:08|2023-11-28 17:44:14.558302737|2095-05-06 +-96|28272|1505168716|-6957946688477274112|35800.40|4715751.89|1708736522212.355469|false|geology||2021-11-22 12:53:31|2067-03-03 12:29:45.24728387| +-110|29461||-8870186814744420352|39663.58|-1044012.98|-4034310183267.031250|true|joggying|calvin johnson|2044-07-05 17:23:38|2034-05-08 14:54:47.672602183|2040-08-16 +64|-24682|765656980|1299|14893.14|1641660.72|-2013823095120.237305|false||victor thompson|2053-04-23 20:28:25|2042-02-05 04:17:17.132619322|2104-01-25 +1||1669519977|8637720762289659904|26267.29|-4516062.72|246182939496.897461||history|wendy ichabod|2065-09-20 07:24:40|2014-01-02 11:21:40.566693934|2052-05-27 +15|19887|252169185|8945004737083555840|-12612.21|4149648.09|-4341775662685.307617|false|yard duty|katie laertes|2035-09-17 05:19:17|2069-08-09 05:52:56.114170070|2083-11-15 +34|-28784|198624903|2517|27453.46|1518776.32|-1471054463871.937012|false|biology|fred ichabod|2046-08-14 08:04:09|2044-10-11 08:36:22.926939719|2090-05-16 +-127|32553|-1021859098|-8302817097848307712|-11149.18|-2437950.40|-946633441440.099121|true|education|irene brown|2063-09-02 16:37:30|2019-05-13 03:05:18.641320363| +124|-8795|-1998652546|7779486624537370624||2528507.35|2879335255910.149414|false|geology|ethan thompson|2049-05-22 16:27:13|2020-11-20 22:09:26.377089870|2039-09-28 +36|20018|-206177972|1559|-40816.50|-3511360.32|-2221464435443.110352||wind surfing|david hernandez|2031-12-27 03:06:23|2059-11-15 02:37:15.170292953|2075-05-30 +-28|31721|1061043704|-8857335871148171264|-12918.52|-38641.55|4703857380405.943359|false|religion|mike underhill|2060-07-21 18:18:58|2040-07-08 22:45:42.452848655|2061-02-07 +85|28041|-914329027|-7483435388852559872|-29353.33|868819.00|252695926368.993164|false|xylophone band|zach xylophone|2074-11-30 03:33:42|2048-01-23 07:20:44.942585519|1972-12-16 +|-1801|1882932986|9123116008004288512|-43889.06||948962599216.933594|false|forestry|ulysses nixon|2050-08-03 16:31:40|2028-09-27 10:14:59.638179206|2075-10-19 +1|30824|-1620148746|-8870673219965001728|-9644.39|-2615257.04|-590567582566.130859|true|geology|nick robinson|2022-05-24 22:07:33|2057-08-15 08:00:07.417243385|2032-02-22 +23|-12709|522895626|7675009476762918912|17878.90|-3823010.71|4734519952118.283203|true|xylophone band|luke davidson|2023-07-09 03:48:05|2080-04-02 06:38:12.273277791|1978-04-07 +52|4701|-194270271|-8369487968903897088|-33434.02|1928184.34|1550969498394.075195|false|biology|luke johnson|2055-02-26 20:12:00|2078-04-28 10:06:15.628763762|2024-09-14 +-18|20059|-269702086|7696737688942567424|14979.21|2983124.17|-1261539436734.899902||kindergarten|holly ellison|2056-01-14 17:12:37|2016-10-27 21:55:00.912383100|2004-06-11 +86|-19493|-1249134513|2688|-24448.16|1690441.85|-36925882832.363281|false|yard duty|priscilla underhill|2070-04-18 02:04:38|2027-03-11 23:19:07.275313466|1970-08-16 +-7||-1031592590|-8665218198816497664|-49187.69|-1845604.18|2373751745590.091797|false|biology|yuri miller|2072-06-23 02:53:38|2017-08-30 07:57:22.485892580|2060-03-24 +-53|12836|-956668825|1827|10782.13|2658398.19|-3649350823703.407715|true|undecided|ethan van buren|2055-11-28 11:03:39|2058-07-16 01:23:50.688228488|2094-01-17 +-92|24800|-187804718||-34396.23|1256811.05|635566643755.645508||kindergarten|calvin miller|2058-12-13 04:37:48|2033-02-18 00:21:03.74380398|1999-06-14 +-94|-14229||-8051871680800120832|36978.46|8746.40|677892679777.975586|true|forestry|david nixon|2049-04-27 09:55:19|2052-01-16 04:01:56.86501132|2066-06-22 +-53|-15573|-1968097621|-6988811476286873600|-31404.41|-1270151.69|451552081463.013672|true|geology|ulysses hernandez|2042-10-27 23:41:07|2031-11-25 18:43:16.703929105|2052-04-30 +82|-22558|-1851680302|530||-2459528.49|2017693075329.844727|false|kindergarten|fred van buren|2019-05-18 13:07:16|2035-12-07 23:47:30.423041352|1990-01-04 +67|14741|1911809937|7254710367022645248|23334.72|2955683.52|1823728420987.791016|true|religion|david allen|2063-11-07 08:59:59|2019-08-19 23:55:40.683089130|1988-12-20 +90|2338|434679307|-7547432761381339136|40122.49|1638995.20|-1793950003583.972656|true||katie carson|2039-08-03 21:14:14|2013-12-17 22:58:55.203140416|2049-03-16 +56|17942|1196151988|-7793447076762345472|43985.13|1259578.26||true|mathematics|jessica king|2033-01-12 03:08:20|2038-05-07 09:16:07.387632543|2062-08-17 +78|-19677|210003006|-8275337702906757120|33709.19|-213567.45|-385927812330.848633|true|yard duty|xavier falkner|2037-06-03 13:04:21|2040-11-28 19:30:11.841438888|2088-08-19 +|8461|26270580|3163|27085.78|2144385.55|2630943635207.962891|true|xylophone band|oscar hernandez|2053-02-05 12:41:40|2023-01-15 18:16:38.213552938|1971-05-27 +|28447|1851654062|7752740515534422016|27798.56|3416784.34|20640213342.773438|true|biology|yuri carson|2033-06-02 21:04:35|2055-01-26 20:18:56.128349625|2078-09-21 +16||-1818380492|7229607057201127424|-6638.74|2938918.87|2397048290628.553711|true|chemistry|jessica young|2070-05-09 23:42:32|2068-06-20 13:17:26.507571586|2066-10-04 +-27|10161|2133950868|187|43780.68|-1353404.78|-738475896233.375000|false|joggying||2046-01-19 02:09:30|2040-09-19 20:13:05.945264942|2036-07-29 +-99|-31352|-800975421|-7928440849566146560|-32803.70|-3003401.85|466466073068.722656|true|opthamology|rachel thompson|2020-06-14 21:26:19|2078-04-19 21:12:47.390943907|2007-09-09 +116|9572|722737062|3073|25851.02|3372247.39|1614826288195.096680|true|geology|irene brown|2062-05-21 03:11:07|2042-04-08 23:21:52.201251505|2053-04-29 +91||-598552521|2193|27740.67|-315369.76|4421973594170.865234|false||holly carson|2063-09-19 12:55:59|2075-02-09 18:58:12.645566188|2004-02-13 +-16|-5085|141492068|3781||3218604.70|879896284672.340820|false|geology|ethan polk|2052-04-12 19:44:52|2065-08-11 21:02:50.944679982|2016-12-16 +102|-9724|1891680787|-8471480409335513088|41053.01|984367.37|3440534496297.118164|false|religion||2057-10-27 22:09:07|2070-05-04 15:21:27.9482115|2053-03-19 +-92|-13979|-1744964279|8649296591032172544|-45056.99|3362549.51|3102286513091.457031|true|philosophy|oscar zipper|2043-02-10 19:53:35|2070-11-01 07:21:36.170308409|2025-05-02 +-65|-9584|1577999613|597|4985.91|1880545.24|-3349604045804.355469||industrial engineering|quinn ovid|2051-01-07 13:40:27|| +-105|2652|1916363472|7555301305375858688|21572.88|-1819115.45|3657730313242.275391|false|values clariffication|xavier white|2019-06-06 06:26:40|2028-03-02 22:15:43.240150893|2022-10-29 +61|22786|-1218871391|3253|-20047.92|-53015.66|-4751615903566.808594|true|joggying|priscilla steinbeck|2048-05-01 11:17:49|2061-12-12 04:16:26.695958830|1979-03-12 +-117|530|1182595271|1177|10603.88|3576926.09|3001390738523.106445|false|wind surfing|sarah allen|2073-10-02 15:42:08|2030-07-14 13:39:35.421270606|2097-08-19 +96|24366|-1897998366|2625|19945.77|1993941.86|2592254154334.021484|false|values clariffication||2045-03-23 23:26:22|2051-06-27 16:46:44.304739590|2005-05-06 +-114|28048|1205391962|8761174805938331648|-49476.80|-1404260.08|3630295597472.575195|true|undecided|calvin miller|2065-06-11 13:09:11|2059-08-09 10:22:26.530521665|2047-12-06 +-65|-24092|-1924909143|301|46556.96|3019231.60|-3856846735252.439453|true|wind surfing|tom young|2046-03-08 04:23:10|2038-08-24 19:32:01.250688548|2061-08-07 +-53|10430|-2074079977|-8619303037130301440|21003.68|-4519948.31|-917875940005.537109|||wendy white|2020-02-03 08:09:25|2037-07-10 17:28:08.36879102|1993-04-12 +-40|25847|85774760|-7469660864676585472|2717.41|-2544321.29|-1329085295185.627930|false|biology|mike underhill|2019-10-05 06:20:38|2039-08-01 13:21:38.927895088|2038-03-19 +52|24488|476858779|8524940073536954368|39068.98|3046959.73|742304885811.541992|true|wind surfing|wendy underhill|2080-05-21 22:53:55|2042-03-17 05:22:32.978021331|1995-09-05 +108|-2825|-1578387726|8508401924853850112|907.11|-1412437.77|-4678527618393.424805|false|wind surfing|tom thompson|2018-01-26 03:16:42|2079-01-23 07:03:55.66706647|2060-09-08 +106|-21723|290601612|878|-20465.49|1566976.52|4478891480861.371094|false|industrial engineering|calvin white|2077-05-30 22:04:30|2061-09-29 21:38:16.202014149|2040-10-07 +68|30764|435407142|8045070943673671680|-23282.77|3828837.00|-3478315502065.250000|true|debate|david allen|2025-05-11 07:27:17|2024-01-26 11:46:49.108538087|2041-06-10 +59|-25531|1191238870|3613|-13461.54|-1092506.14|-340655977401.489258|true|wind surfing|xavier xylophone|2035-11-11 03:06:23|2048-04-08 16:13:43.746833506|2001-08-17 +52|-27372|2005560498|-7637494527844343808|27509.37||-4283050885345.431641|true|debate|alice king|2058-07-02 23:26:25|2053-04-22 16:17:40.18639872|2027-07-06 +98|-17531|1516165279|7691062622443044864|-36668.66|-4406594.53|-2061696768746.728027|true|nap time|zach johnson|2046-09-30 07:44:28|2050-12-21 02:31:12.227479202|2016-06-07 +83|17503|-2022383454||3336.91|1474693.58|-2286393982365.453125|true|industrial engineering|gabriella underhill|2061-11-20 02:36:04|2022-10-12 03:47:56.597404938|2089-08-02 +17|-16622|1592467112|8560526613401714688|-27329.68|1226927.48|-232640950614.637695|false|debate|yuri thompson|2024-05-30 02:53:16|2015-09-09 23:54:29.708837580|2085-12-17 +-25|25967|1283898734|2262|24968.04|3262090.00|4353073330160.626953|true||irene nixon|2073-12-17 12:27:16|2031-09-14 09:17:05.348520933|2000-03-19 +62|-2559|1572563948|-8359839265974165504|-33838.90|-4109950.64|-3713793513165.875000|false|joggying|zach laertes|2014-01-12 21:09:50|1970-01-01 00:00:00.991169007|2038-11-29 +97|-21388|1679381813|-9105358806324035584|34430.14|4484140.95|1916514605589.583008||values clariffication|rachel ovid|2065-05-02 04:11:48|2077-12-27 17:24:10.329858586|1989-12-16 +-111|19862|541118710|8415171956168417280||407180.01|-4745445588033.021484|false|wind surfing|calvin van buren|2057-11-28 00:27:38|2057-07-27 01:50:59.230905693|2029-12-24 +102|-25939|-1106469823|255|-41132.62|-4325896.28|-2743119448924.531250|false|forestry|wendy thompson|2054-02-05 14:03:39|2076-11-22 01:15:27.802163435|2050-04-05 +-48|12358|447426619|-8536369662934401024|10900.76|-2464556.18|2596086249181.297852|true|geology|alice quirinius|2067-04-30 18:40:19|2068-10-21 11:18:10.630254740|1976-12-14 +-98|-15526|-858439361|-8940944155843461120|-14413.34|-1088581.16|-3114508048729.405273|true|biology||2055-12-16 19:34:27|2013-10-29 15:37:53.839949676| +103||1447462863|7384150968511315968|-33050.99|2251130.90|89779906883.365234|true|education|tom nixon|2049-07-01 15:35:57|2075-11-25 09:04:53.147016081|1990-04-20 +100|-11048|1807358029|263|-26675.46|-752421.26|-4890530939167.305664|true|history|calvin brown|2020-09-29 16:13:24|2048-06-07 18:52:55.422743536|2070-12-23 +58|6675|-1802746460|1217|-27085.73|4833180.32|-4240406364923.501465|true|religion|mike robinson|2053-04-02 08:27:04|2072-01-18 15:26:17.374305609|2026-02-01 +55|-12295|1861276585|-9091113592821972992|-37828.36|-676599.33|3467837381964.145508|true|forestry|alice underhill|2072-06-22 14:20:58|2032-03-07 17:27:47.232386485|1970-10-08 +-104|-21025|-1565785026|8666178591503564800|-19191.27|-363010.37|-2215881470668.960938|true|wind surfing|nick garcia|2053-06-28 08:16:37|2077-05-30 20:37:52.294863246|2019-03-28 +60|31396|636901402|3512|45564.68|2216449.54|2498973745429.750977|false|american history|bob quirinius|2062-12-15 10:55:15|2055-11-30 15:08:05.855950992|2074-01-29 +|-16518|-308225568|8472429318602268672|-27618.83|1397035.62|-1426238002392.174805|true|zync studies|yuri white|2058-05-30 12:42:49|2014-01-04 07:40:44.718673628|1971-03-10 +38|28413|-469870330|7061809776248545280|5038.36|4899225.93||true|american history|wendy van buren|2052-03-21 12:31:39|2041-01-06 14:03:47.179206937|2074-03-12 +108|-5135|-2042831105|6969599299897163776|-40691.70|-1564446.85|-4298929701839.924316|false|philosophy||2033-10-13 05:36:52|2014-06-18 16:42:39.89307305|2079-04-19 +-34|11168|1846184880|-7535857766791577600|-12097.91|296884.75|189835086132.674805|false|wind surfing|zach ellison|2022-01-21 10:58:22|2014-08-14 21:48:41.258440751|2058-03-24 +42|-7323|1625751062|3724|19175.45|-4645302.81||true|yard duty|jessica nixon|2046-12-23 10:11:15|2040-05-12 13:49:04.312695207|2067-12-19 +-101|20084|343362793|2786|-5759.71|-3710545.39|-747309143932.177734|false|xylophone band|nick johnson|2055-11-22 06:32:07|2032-12-27 00:39:24.505679054|2013-11-15 +33|-18263|735732067|1948|38213.05|2668590.35|915569735455.541016|true|quiet hour|rachel ovid|2018-03-02 05:25:36|2063-07-27 10:41:50.110054963|2046-11-16 +-54|-21795|-1017629298|-7328087811698909184|-20010.24|-1103528.09|171257816833.722656|true|geology|wendy brown|2022-12-25 05:14:20|2069-06-10 23:30:18.814929160|2078-03-20 +16|-14888|1190302173|7753882935005880320|-13338.98|-3830938.65|-16966857031.200195|false|kindergarten|priscilla ichabod|2079-09-20 10:22:11|2066-05-11 11:44:44.967158232|2058-05-02 +-104|22213|-1818456584|-8384695077413412864|43493.35|-828620.69|2303273645231.165039|true|nap time|fred garcia||2058-03-20 03:18:32.441094681|2005-09-08 +76|-26087|-295186284|-9075302542655684608|-16572.92|2456302.57|1695145412960.172852|true|mathematics|rachel thompson|2067-11-29 10:49:14|2023-02-24 06:11:31.127903962|1970-10-04 +-105|-4953|315973457|-8844949406948671488|-9860.94|998897.88|-4775905812492.879883|false|education|fred davidson|2025-09-30 18:11:16|2025-06-11 16:43:58.941547150|1999-12-25 +-127|16110|904604938|8337549596011102208|2848.64|-3418610.14|-2009642318242.228516|true|debate|mike steinbeck|2023-04-26 20:45:39|2048-06-21 02:28:33.302451076|2068-01-05 +-109|31986|-1218581850|-7624057992767782912|-9642.07||4524736841293.623047|true|chemistry|ethan ovid|2046-01-30 17:53:58|2064-06-05 07:51:39.21714322|2097-09-03 +116|-32119|-2144241640|9073672806863790080|-7691.49|-4810810.06|-3529351191949.139648|true|zync studies|quinn ichabod|2025-09-14 05:57:47|2052-08-21 07:01:03.126893909|2101-08-31 +-69|-28864|1766517223|7948803266578161664|-33985.35|3550700.26|4086092318223.570312|false|debate||2071-01-12 01:01:39|2059-09-08 02:39:24.970547582|1989-11-05 +-13|12814|881673558|7566273236152721408|-4594.45|-3286472.17|423483325042.503906|false|linguistics|nick underhill|2023-06-25 22:14:52||2064-02-13 +4|-10513|536876888|7062382339142156288|13262.02|4083053.68||false||wendy young|2073-07-01 02:10:21|2068-11-13 07:56:42.534738020|2026-07-12 +-109|-20188|-1289665817|7909645665163804672|42529.03|2938682.72|4492997493634.832031|false|values clariffication||2036-02-03 11:35:01|2016-09-22 08:56:11.169028039|2065-08-11 +-33|20120|-340462064|-8086577583338061824|30435.53|4916056.68|2409115470740.985352|true|zync studies|calvin quirinius|2052-08-12 00:26:09|2019-08-25 23:11:02.671444276|1991-04-05 +-82|-23630|1425456189|-8122639684164501504|13589.93|-4405035.26|3998360085714.693359|true|geology||2055-05-29 17:37:08||2006-11-30 +-18|-19786|-1642207005|-8117838333114212352|17411.05||1866266907288.434570|false|wind surfing|sarah garcia|2028-01-29 13:44:26|2039-09-01 15:14:46.549821420|1975-12-21 +-83|23910|1376818328|336|-27132.88|1204353.22|2806463824394.356445|true|undecided|sarah ellison|2080-10-30 17:04:15|2065-12-02 08:54:56.954538295|2014-02-02 +111|32231|-1919939921|2320|-6568.58|1215239.64|-1869700480167.893066|true|kindergarten|xavier van buren||2016-07-10 10:53:59.626066496|2021-05-21 +-86|12915|-1434562279|-8731068123910987776|-8835.22|-1335137.34|-1538575730095.495117|false|american history||2061-12-03 00:29:54|2072-08-27 13:08:21.852423838|2016-07-12 +-107|-13|1070989126|1906|-12761.32|3064168.48|-3462773458406.651367|true||fred carson|2018-12-15 02:28:19|2071-03-20 11:13:17.416475043|2018-06-15 +95|-20789|1028204648|-7838598833900584960|1716.08|-2554550.12|4714480698801.324219|true|geology|bob falkner|2045-07-31 00:13:55|2059-03-29 14:57:28.222857121|2099-08-04 +-80|-8852|477857533|1165|37201.95||-1261362806924.886230|true|forestry|jessica ovid|2062-04-27 20:14:10||2064-08-16 +|-14783|-224865887|-7456869587112255488|5122.61|-2102976.63|1531516008788.393555|false|values clariffication|fred nixon|2048-10-12 23:56:55|2026-06-07 14:49:02.306537960|2089-05-15 +-15|17581|1142098316|2013|6003.12|-1151629.14|4348345225726.326172|false|history|yuri van buren|2024-12-02 01:39:53|2073-03-07 20:51:20.326376818|2050-01-09 +-8|-24885|-332125121|7333512171174223872|26535.92|2399386.54|-2960944140681.114258|false|opthamology|ethan white|2079-02-15 19:05:52||2087-01-27 +-89|-10935|1240875512|-7571293705217687552|21259.00|-629766.26|-1636595770961.833008|false|american history|david quirinius|2033-01-07 17:02:27|2063-10-15 04:11:02.388323396|2096-08-29 +-19|6306|-590374062|-8523434203900674048|28590.02|1265094.91|3833331173378.199219|true|undecided|victor thompson|2056-03-02 15:07:50|2047-02-04 15:17:32.647082767|1990-11-23 +-39|-16680|492968645|8099215208813903872|11064.77|750795.33|-3997116358934.107422|false|zync studies|sarah underhill|2032-12-13 09:50:46|2029-10-11 21:31:15.496921510|2001-01-25 +-48|-30157|-1635301453|9040958359122640896|42146.27|-1984020.04|-3919914678779.932129|false|yard duty|luke ichabod|2050-05-21 14:47:18|2072-06-27 06:27:52.850736616|2012-07-08 +118|-21389|1319589591|-7356685674003021824|48287.81|4413852.26|4754891500688.814453|false|philosophy|||2031-07-02 15:06:48.138419705|2092-03-31 +-118|13138|-1652600376|2072|31787.11|4413364.49||false|opthamology|victor zipper||2058-07-13 04:38:16.443396189|1996-08-31 +32|29023|-856843296|2073|48554.24|-2764932.99|4532387406205.238281|false|mathematics|jessica polk|2066-09-16 03:57:39|2065-06-11 16:20:38.164287829|2011-01-20 +-31|-9496|915505006|871|37794.69|4782774.03|3414437080001.526367|false|geology|luke hernandez|2061-05-20 02:26:59|2068-01-21 09:27:30.854734737|2023-12-26 +22|-6460|1179528290|-7551394356730339328|-23041.73|-4296206.08|4962408770099.849609|true|xylophone band|luke falkner|2058-10-05 19:19:16||2021-12-19 +83|-29675|-113253627|-8172827216441573376|-1794.84|-317220.62|688329351482.579102|true|biology|david robinson|2039-03-30 18:42:28|2020-02-03 05:20:18.744684653|2050-09-20 +88|6761|-1878838836|-8082793390939193344|36116.48|1298897.65|1744469246864.212891|false|chemistry|tom ellison|2030-01-25 11:28:31|2016-05-22 14:39:37.64576689|2044-06-20 +-49|-12588|2065408093|8854495099223375872|25810.56||-3371566685461.750977|false|opthamology|priscilla polk|2029-08-07 14:29:01|2048-03-29 02:01:01.562257980|2000-08-18 +-14|28008|-122391516|-8358130693961195520|-33737.35|4303885.61|207192707064.258789|true|joggying|alice garcia|2025-11-21 05:44:38|2029-03-08 07:36:34.632835852|2105-01-06 +-52|27527|-1240048334|9050032047355125760|-41056.39|-2126298.83|3424231918266.365234|false|education|sarah ellison|2055-05-29 10:01:01|2053-06-19 04:48:57.10910076|2004-06-03 +84||1813010930|-7162299524557471744|-4970.18|910733.08|-4747435156455.921875|false|history|quinn ovid|2056-11-24 23:44:36|2054-10-30 00:49:45.287291218|2070-02-03 +28|-21506|-682333536|809|-13948.95|2291401.51|33266358053.083008|false|geology|ulysses steinbeck|2080-06-19 15:17:59||1984-12-28 +4||-759911896|-8946656952763777024|-4183.99|-4038048.77|-3167988150233.824707|false|opthamology|katie white|2061-09-28 17:08:58|2015-09-01 23:29:55.301806098|2032-01-18 +-100|13491|-1369302744|1053|-10809.39|4440019.40|-1117844143988.975098||values clariffication|quinn thompson|2023-03-09 21:06:33|2027-12-13 08:22:59.973086123|2015-09-29 +4||765084282|482|-24177.64|-3926632.94|-128454528929.609375||biology|ulysses johnson|2039-12-01 00:28:17|2047-02-12 11:40:45.586393217|2090-06-30 +126|-16307|470993066|-6968892545529896960|2416.88|-767525.41|-4599746514511.089844|true|industrial engineering|luke garcia||2068-09-30 15:34:57.912726771|2043-08-23 +-3|24819|2070969353|203|49013.15|3648039.90|-2530166692170.396973|false|religion|zach davidson|2028-03-11 20:18:02|2023-01-31 06:26:26.819065415|2026-12-24 +-79|-19571|-296195507|1614|1339.61|472805.29|-4628165921333.362305|false|geology|victor thompson|2025-05-07 23:33:22|2076-12-14 19:01:33.673146196|2040-05-30 +88|7057|6266567|-8593419958317056000|20993.37|3470920.76|2907965923466.875000|false|opthamology|jessica van buren|2026-04-10 03:58:42|2027-05-24 20:24:57.709957719|1985-01-18 +42|-562|604460005|8190967051000659968|10778.57|1505668.86|-4298212148464.983887|false|american history|priscilla king|2071-01-07 17:48:53|2050-08-28 10:51:32.79079993|2036-07-23 +-5|4536|-1836166334|808|-26348.93|1609583.36|-2450581027868.068359|false|biology|zach ellison|2064-03-18 16:36:24|2040-12-19 14:19:07.29019956|2094-02-23 +31|2855|458910170||4194.56|-2703308.04|-3920065100013.161621|false|geology|holly ellison||2064-10-06 03:04:54.202018334|2058-01-16 +-36|813|2144454927|412|-17894.49|3767875.02|-4076956189315.090820|true|zync studies|irene young|2051-03-22 13:42:47||2069-11-02 +-19|-16002||8656571350884048896|44168.85|4141077.81|2689794991277.487305|true|yard duty|rachel steinbeck|2038-02-19 06:53:09|2052-02-15 19:04:26.991933690|2018-01-25 +-123|25732|2100377172|8769199243315814400|14038.74|191532.01|-3373496595819.993652|false|quiet hour|quinn allen|2080-05-30 20:51:34|2038-06-11 05:22:17.584841494|1997-09-20 +-28|-9278|-1236536142|-8546758906409312256|-18615.91|-385172.08|3145518148645.542969|false|values clariffication|quinn ellison||2050-08-26 21:46:55.776228072|2006-05-04 +90|-27844||8829545979081744384|-7890.36|-4687872.68|-189051209331.019531|true|forestry|holly ellison|2078-01-22 08:05:44|2051-12-30 01:07:06.843556116|2019-10-31 +-33|6756|-1380678829|7545689659010949120|3119.59|1219503.88|1383475996151.766602|true|chemistry|gabriella nixon|2013-11-15 10:53:04|2074-01-13 06:13:44.309707032|2086-07-20 +-27|32063|-412333994|618|18352.29|-2682908.49|-2196296807639.192871|false|xylophone band|mike ichabod|2049-05-17 01:36:05|2016-01-06 04:27:12.937792140|1988-07-21 +115|14089|1583280136|8573305425181941760|-12596.11|-4306107.96|3399085059351.882812|true|forestry|bob carson|2077-10-22 01:28:01|2070-11-22 05:00:18.148513417|2060-02-01 +87|-5837||94|31117.44|4356549.19|3648188962203.846680|false|joggying|quinn nixon|2013-11-03 06:51:21|2060-06-22 12:16:37.962088375|2101-04-20 +42|6036|960187615|-7266719102957125632|-47893.89|-295854.59|2917455244518.621094|false|topology|calvin zipper||2064-05-28 07:51:38.18135161|2091-10-08 +-57|-16290|1835749815|2772|-2499.18|-2208789.27|-1579859560936.931641|true|joggying|wendy carson|2068-08-26 13:27:51|2021-11-05 06:16:08.956633171|2012-03-06 +34|-2518|1625699061|379|-24309.03|3375470.42|-1718131278688.766113|false|education|ethan johnson|2046-02-23 07:23:16|2040-11-20 23:57:22.271546670|1978-07-29 +69|28358|-1524081566|8302473563519950848|-297.67|-3373283.08|-2009241907914.223145|true|joggying|ethan van buren|2047-08-15 06:48:02|2043-04-13 19:11:51.590383118| +-11|31334|215759857|-7802538500225777664|33944.93|-2034061.98|-3034548052198.289062|false|industrial engineering|sarah steinbeck|2055-02-11 13:24:46|2053-11-27 08:12:32.905325041|2039-02-11 +76|-25155|2009890220|-7273694358642851840|18007.61|-1882990.85|-1586767512900.379883|false|religion|nick underhill|2043-09-05 07:30:29|2039-05-08 08:23:28.744105983|2012-06-13 +-42|-27015|-1024500955|8987827141270880256|6071.06|||false|history|rachel thompson|2080-11-04 06:42:28|2022-05-07 19:23:26.462479493|1990-08-27 +-91|-7300|-1257859205|914|-5866.74|-1809849.07|-1670602067707.562988|true|xylophone band|mike garcia|2057-06-04 13:48:28|2056-12-01 04:07:20.17327137|2090-07-13 +|-13972|1616782308|723|15887.15|-2469559.45|-380705728848.234375|false|american history|jessica quirinius|2057-08-11 06:45:24||2003-06-16 +-69|-10569|-1928197479|-7104310188119834624|26076.44|2535185.38|2312022922718.455078|false|linguistics|calvin falkner|2033-03-03 06:25:26|2015-06-15 18:44:04.445242368|2020-04-30 +-101|12583|998793176|154|-39236.48|2570101.79|-2715354441339.101562|false|history|xavier falkner|2062-06-17 13:37:19|2065-12-13 13:46:25.594101554|1983-02-08 +28|25518|631207613|-8494118409594650624|33125.44|-315524.15|4237441963242.361328|false|study skills|tom garcia|2048-09-29 05:52:03|2066-12-04 01:20:15.241688388|1988-03-29 +-40|-31164|-161884324|3781|-49606.91|1038717.47|155199366725.398438|false|joggying|oscar nixon|2023-10-07 10:39:24|2071-02-16 02:10:47.198374359|2055-05-12 +-124|-5267|574069547|1466|4445.84|3318110.58|3262707195109.015625|true|industrial engineering|tom falkner|2049-01-22 07:20:24|2013-04-19 01:40:57.733559293|2064-01-22 +-28|-20663|-616724730|724|43976.01|-254306.16|-2564468363230.716309|true|industrial engineering|mike brown|2040-06-27 02:12:07|2027-09-24 00:10:50.868223193|2043-01-07 +|2542|-1984079412|-7270034223527993344|42132.29|1872487.12|4239681407336.525391|true|undecided|holly ichabod|2036-02-28 11:43:29|2058-09-07 02:46:35.228498480|2052-03-13 +-62|-25077|1845797092|913|18763.32|622185.07|2205467425785.875977|false|religion|alice zipper|2072-02-01 03:42:53|2054-05-21 06:31:30.994303844|2024-02-23 +64|32309|-605370177|1704|46536.51|-2429187.29|-3869444972623.164062|false|linguistics|priscilla davidson|2047-07-10 07:46:00|2047-03-10 19:56:43.16082472|2077-03-07 +-21|2590|-915104901||-19995.58|2053186.77|957236234850.747070|false|wind surfing|yuri carson|2015-06-30 01:25:11|2070-03-17 03:33:19.30902666|2036-02-16 +-75|-12782|1136548971|-7883252982752665600|-814.76|2576885.92|2555233457696.850586|false|geology||2024-05-25 02:43:22|2040-11-17 01:26:44.81314350|2000-03-04 +127|-27312|-505879576|412|39913.52|2317989.11|4849612269862.681641|false|opthamology|holly steinbeck|2048-01-19 12:38:07|2054-11-08 01:30:13.939944047|2000-05-28 +-28|-25412|-202035134|4024|-4465.40|-1742902.49|4667839539207.853516|true|undecided|katie underhill|2039-09-02 21:29:19|2071-08-10 05:34:49.654645949|2098-09-08 +-26||-935723237|7226360892091416576|-31695.38|2802498.83|2390739186802.050781|true|kindergarten||2051-11-30 06:15:36|2050-03-18 13:45:32.683739800|2052-09-26 +-115|-28939|688547276|-8244657976255889408|36162.80|-4989122.80|-2552765883743.006836|true|xylophone band||2034-11-26 00:25:11||2025-05-13 +-86|-12071|1956887369|2862|1570.24|-4626990.97|3666109195511.175781|false||bob king|2051-01-24 01:38:45|2055-03-11 20:34:57.197479653|2034-02-08 +-67|-1443|-993029335|1521|-46155.68|4524183.68||false|debate|oscar laertes|2058-04-21 07:57:00|2078-08-31 09:56:45.671467607|1982-04-01 +7|7530|-549167249||20406.25|1525395.61|-1198863806969.718750|false|history|holly nixon|2043-01-28 08:16:12|2045-05-21 07:53:06.829103969|2030-09-22 +3|7603|2038381675|7386087924003676160|-21580.07|933815.29|-3828528440938.576660|false|linguistics|quinn ichabod|2026-12-02 16:54:36|2044-04-29 02:35:27.537827490|2086-05-11 +-69|-13474|-373038706|3907|-18880.83|-939028.09|117666480427.907227|false|undecided|priscilla ovid|2067-02-17 21:38:22||2075-08-06 +92|2833|-2119724898|7818464507324121088|30292.00|884488.54|871664464870.037109|false|joggying|holly young|2065-11-24 15:01:57|2071-09-02 12:05:40.306146425|2041-05-01 +21|30075|-1464514590|-8293833565967810560|-36263.23|-1474035.29|-4690640135324.102539|false|quiet hour|nick garcia|2033-09-22 16:37:28|2072-01-29 18:50:14.473666434|1994-05-25 +119|-12571|-779743333|-7892780594910871552|4572.65|995018.67|-425783093743.490234|true|joggying|ethan white|2061-07-26 18:52:34|2071-07-05 00:55:22.981130585|2029-09-01 +-83||1920662116|1509|33314.97|-2730529.51|84511300621.094727||wind surfing|tom hernandez|2050-03-09 05:14:35|2078-12-03 09:09:20.319905333|2029-09-01 +85|-13713||7592440105065308160|42570.35|4483692.57|-2934238933405.062500|false|xylophone band|jessica quirinius|2030-03-23 21:15:46|2045-01-19 02:06:48.899240157|2103-08-27 +53|17436|-722294882|-7600138468036386816|36893.19|-4542207.94|-1743688633337.790039|false|education|quinn quirinius|2017-05-28 14:36:27|2066-02-21 06:53:29.204553365|2009-09-12 +3|10727|-1849091666|9064847977742032896|17555.77|-4634541.04|2527955410135.795898|true|nap time|oscar carson|2048-03-24 17:24:21|1970-01-01 00:00:00.846186492|2033-08-07 +9|20766|-181122344|-8379964450833367040|-35831.96|2510460.11|3065070467778.455078|true|geology|irene davidson|2050-02-22 15:05:52|2027-10-08 09:45:46.728679053|2050-06-14 +113|-3165|-90029636|7217123582035116032|12022.56|3658068.63|-2382124601444.530762|true|linguistics|wendy laertes|2033-11-09 23:52:55||2070-09-29 +93|24677|-472303419|-7879864376629567488||-4715822.32|3836587003422.593750|false|linguistics|rachel garcia|2020-12-08 01:26:41|2018-07-13 07:36:49.359511410|2067-01-14 +9|-3885|-906545548|2878|-38407.73|-1928000.84|-2800032052132.195312|false|zync studies|xavier falkner|2056-02-23 09:06:30|2047-05-31 06:42:08.683378784|2016-11-13 +-37|23750|-1749841790|2412|46750.89|-2458475.76|4439101915043.935547|false|zync studies|katie thompson|2073-10-11 11:47:19|2026-01-28 22:23:58.98308516|2092-06-27 +-91|-29218|-1326025787|524|42679.72|-662744.93|310684347775.804688|true|chemistry|calvin garcia|2068-11-17 02:45:29|2059-01-25 08:18:48.682643621|1971-12-01 +75|21407|44595790|784|-39388.69|-4752379.35|-4679521339883.549805|false|debate|xavier brown|2059-07-30 11:32:09|2029-01-31 01:58:51.459910049|2007-05-08 +35|4397|-117723745|-7046180371529351168|-22128.92|-1882093.86|604464981663.425781|true|quiet hour|oscar white|2014-11-01 18:19:21|2080-04-14 06:26:44.785796402|2054-06-03 +-26|-30730|-207899360|471|22281.44|-2302502.73|-1952325542067.043945|true|debate|tom ellison|2041-01-14 15:00:44|2080-03-13 16:08:00.809220690|2063-04-29 +-81|-7564|1131663263|612|19632.85|3876730.76|-3157294779103.096680|true|study skills|david laertes|2062-12-12 19:12:58|2035-06-20 23:05:28.501460278| +-98|21941|-1665164127|8368012468775608320|528.05|3412429.91|-950235709930.815430|true|industrial engineering|victor polk|2043-04-29 14:31:44||2060-04-22 +75|-716|1784291853|-7547245548870025216|33682.36|-2277813.00|-2651511947479.434570|true|history|yuri falkner|2060-09-06 05:02:04|2015-12-10 05:12:43.991653609|1970-04-26 +1|8466|-901079162|3841|26403.70|-2787173.70|-4078808993300.313477|false|zync studies|fred ovid|2042-01-27 06:10:24|2065-09-04 01:31:40.42530548| +-97|913|-1502924486|8752150411997356032|31964.76||4205989218534.185547|true|opthamology|rachel nixon|2027-03-17 19:37:19|2028-03-14 08:43:52.398149158|2064-03-06 +-34|15015|1637295757|-8623965248051789824|-13910.96|-1899040.07||false|linguistics||2074-06-10 07:25:52|2064-06-11 04:29:32.55418236|2094-06-14 +-33|20036|1880017800|7637152193832886272|-13101.15|-4590457.77|-1226073411038.548340||quiet hour|bob nixon|2055-07-25 23:02:17|2072-05-17 10:12:38.513326012|2012-07-07 +22|-16940|-595769210|9191943992860327936|42065.10|353607.21|-3757504944023.821777|false||bob polk|2049-10-28 12:03:35|2028-12-24 08:45:04.462025798|2099-03-24 +-81|25454|-123529324|2700|-49851.20|-199346.24|3039471429849.208008|true|american history|luke underhill|2041-05-03 12:44:35|2062-05-13 13:04:05.633293665|2016-04-11 +111|-6349|1950882901|9180098147855769600|8936.06|4586140.88|-2562228399414.543457||undecided|xavier allen|2047-04-04 14:41:47|2029-10-19 11:17:14.241599813|2076-10-10 +32|-6564|1928365430|1775|16609.42|3708243.51|-1030172091977.021973|false|chemistry|alice thompson|2057-06-03 18:50:23|2016-01-12 02:37:54.734293795|2010-10-15 +87|5550|996831203|797|-32213.23|-348044.95|2004890357846.349609|false||quinn quirinius|2025-05-25 18:20:23|2065-11-02 11:48:50.631850931| +48|-9943|270090617|-7773957003968675840|39329.34|4135595.75|-243786022935.737305||wind surfing|holly laertes|2030-12-19 19:08:33|2023-04-14 22:34:26.707421905|2043-08-05 +-115|28301|1317690178|-8660149447361404928|-37823.29|-2814333.34|-3512730030774.058594|false|geology|holly miller|2029-03-26 00:28:37|2039-02-23 12:54:55.42365758|2076-09-26 +-46|18350|-1531040609|8641221723991433216|23823.69|-427642.08|2819404917896.939453|true|yard duty|rachel davidson|2024-07-29 07:41:06|2025-01-31 13:56:58.481985366|2067-01-10 +51|-13904|1664736741|392|-33079.41|4087589.11|4145813588397.863281|true|chemistry|jessica king|2035-02-25 00:23:44|2052-01-19 21:04:20.398663046|2079-08-01 +19|-26613|-971615370||33112.52|4554924.96|-4303832304648.800293|true|chemistry|calvin allen|2073-04-14 09:13:06|2039-12-03 11:31:50.851455297|2009-09-29 +-89|29333|-1124028213|8489735221193138176|27673.25|-4285255.26|4961373696863.767578|false|linguistics|katie ellison|2072-02-05 07:19:52|2067-07-12 01:46:05.391290184|2018-03-24 +0|-12203|372099650|7944741547145502720|-6724.11|-3694995.69|-630159357028.894531|true|undecided|luke robinson|2033-06-16 06:37:14|2014-10-03 05:32:19.137455217|2068-06-05 +111|18910|780859673|6933731240564056064|-44662.14|-1927984.24|-3491883806228.379883|true|biology|katie van buren|2038-08-20 15:28:40|2064-04-16 22:33:47.576062785|1970-06-03 +57|1280|-1359838019|9083704659251798016|20916.87|-1497681.60|2846930959096.063477|true|biology|quinn miller|2053-01-28 18:41:42|2060-07-25 07:46:20.708072689|2002-05-27 +122|9177|128430191|-9084940280061485056|-42499.27|3229184.24|-4017461708820.384766|true|values clariffication|ulysses ovid|2034-11-06 04:21:49|2034-07-30 16:22:19.644823674|2023-10-05 +-78|-10532|-318380015|8222714144797368320|-11740.33|-2082364.30|-2110282626871.757812|false|xylophone band|katie ichabod|2046-04-25 00:51:33|| +-82|-24320|1550375386|8817665768680906752||-953044.44|-2273400242763.017090|false|geology|sarah carson|2048-08-22 04:37:46||2086-10-16 +113|-27401|1012230484|1995|40659.62|-4935987.77|-1008868027448.919434|true|debate|sarah polk|2062-01-02 11:36:14||2080-04-14 +-111|30736||1561|-31482.56|-1580110.12|-1566816988300.167969|true|zync studies|quinn quirinius|2060-03-07 21:51:32|2061-11-09 12:07:37.596342844|2026-11-23 +-5|-4037|-379643543|2485|-9312.35|3850072.85|2057210782083.452148|false|industrial engineering|david quirinius||2061-11-11 05:38:01.34481671|2021-04-19 +27|-13623|505902480|1826|-42341.81||2681464429083.355469|true|chemistry|ulysses garcia|2074-12-19 04:00:03|2049-02-17 19:06:31.903289514|2013-01-23 +|14234|-1026746699|845|35740.11|4705168.38|-4722254262111.391602|false|quiet hour|rachel hernandez|2019-03-25 04:02:54|2080-10-07 11:37:55.957012102|2004-08-13 +-58|3325|1665724041|8376440110255243264|46586.97|1120362.22|3853942610392.876953|false|history|luke laertes|2029-12-12 07:11:57||2004-04-01 +-17|22289|712816880|9075404705968840704|-15320.85|-3930645.10|-4500316102425.934570|false|linguistics|alice king|2062-09-20 07:45:00|2021-06-10 09:55:52.478946811|1994-01-27 +-28|-11740|1566607834|-8379109122834997248|21449.12|-4905990.36|-1952272677926.849609|true|debate|david brown|2018-12-26 15:21:05|2055-07-04 00:03:47.54540038|2058-11-22 +-102|30420|980732494|-6938706403992854528||4290144.13|3973620252675.828125|false|nap time|holly polk|2013-06-14 16:30:17|2079-04-01 01:20:33.477066908|1973-06-12 +-27|10473|1805139501|961|540.66|1846904.66||false|study skills|katie thompson|2080-12-15 12:30:07|2018-10-01 01:35:46.827604858|2065-10-01 +93||-1402821064|1422|-32181.01|1471767.66|3888068884720.255859|false|forestry|luke brown|2055-04-11 22:16:15|2023-10-05 09:42:54.182435030|2001-11-08 +-72|-31033|-694520014|9149216169284091904|-21438.32|592620.51|-868405318561.400391|false||quinn steinbeck|2038-03-12 13:12:37|2019-08-02 08:13:35.567323306|2015-09-08 +-83|-21268|962091264|2752|-9102.58|-1920670.21||false|forestry|tom polk|2048-07-06 23:16:50||2103-08-02 +-91|5014|-1561738723|2255|11659.02|-1238767.70|2257301642704.199219|true|opthamology|fred underhill|2034-05-29 03:12:18|2056-10-14 08:06:18.341166711|1973-02-06 +-46|24913|906074599|-9080568167841226752|-1633.77|2280305.65|3418787511905.457031|||wendy nixon|2054-11-07 20:23:51|2069-03-08 13:59:21.935346573|2027-06-01 +-55||-990781312|1046|-17223.20|-2914331.70|-3061715672539.690918|true|american history|victor xylophone|2025-06-24 19:34:32|2029-05-31 09:16:06.592040235|2067-06-22 +85|14176|1582537271|7926898770090491904|-48480.35|-4206386.08|-3830188857046.366211|false|kindergarten|jessica garcia|2027-03-21 01:29:39|2050-06-01 01:40:27.460760962|2094-01-29 +5|26915|-158848747|7784489776013295616|25599.75|3264338.39|1398225707031.031250|false|geology|sarah ellison|2081-02-08 13:31:19|2016-12-22 00:48:27.635611363|2019-01-04 +48|20655|-1345085327|6991316084916879360|5659.91|2971588.36|944624924616.661133|true|philosophy|bob johnson|2042-07-11 18:36:57|2037-12-17 04:00:52.301645045|2015-05-25 +-60|-23750|747122546|1566|-32617.06|3930932.70|904359634710.800781|true|american history|david thompson|2049-08-15 13:53:19|2049-05-25 04:35:12.968980434|2054-07-15 +1|19276|1504919241|1671|-35828.00|-1990218.76|1742934975017.433594|true|undecided|calvin miller|2033-10-17 07:51:41|2045-07-16 13:46:26.28793094|2089-07-13 +76|10382|-607667405|-8543982423727128576|15112.99|-1144078.40|1538907131524.070312|true|nap time|ethan young|2039-03-18 13:48:12|2022-05-16 00:50:53.345008930|2072-03-19 +20|5947|-66010816|-8832750849949892608|43254.26|-4684380.49||false|debate|rachel davidson|2022-03-02 20:53:13|2029-05-15 20:54:25.943787316|2051-12-13 +|10083|-1340213051|6963217546192322560|-23734.81||42087741032.439453|false|wind surfing|rachel ovid|2026-01-17 13:10:48|2068-04-09 14:34:20.845374064|2046-04-19 +25|-11129|514833409|236|14759.04|-4445156.14|-2471323804264.180664|true|chemistry|katie nixon||2062-06-11 00:50:35.200240078|2012-03-25 +-117|21418|-1106685577|7086206629592252416|-20613.82|-4669723.14|1287664454410.020508||undecided|ulysses ovid|2014-05-27 23:10:23|2075-10-09 13:36:21.138709539|2055-09-11 +73|-32208|1075444504|9053187076403060736|-20607.86|-663557.15|3604091262736.055664|false|religion|luke robinson|2064-03-29 13:46:25|2028-09-13 12:25:32.422151087|2001-09-18 +68|-9365|214068706|-8067243114610532352|-40369.97|-372273.18|-4679196929122.006836|true|american history|bob thompson||2016-06-02 13:49:05.762346775|2031-11-23 +38|29288|-667383951|1751|-40969.80|352106.97|-3590646924755.134277|false|religion|alice white|2021-01-31 08:56:35|2074-02-24 20:30:17.797682689|2054-10-30 +73|1077|-336625622|2502|34593.52|-3380008.10|4861797358093.511719|true|linguistics|yuri underhill|2031-10-04 05:10:58|2020-09-16 21:07:49.9039871|2000-08-20 +86|-8927|-1817096156|294|18420.41|-718931.02|-812599933568.947266|false|topology|yuri miller|2030-03-08 13:49:25|2059-08-20 13:04:07.326107637|2026-09-01 +46|-26138|-371779520|7892281003266408448|8622.19|4294576.25|-2935717014226.568359|true|education|fred xylophone|2025-08-10 03:36:42|2058-08-31 20:49:43.13681707|2017-12-24 +125|7954||8577096957495025664|-40074.79|-3740147.62|1353404175657.040039|false|education|sarah garcia|2020-04-24 05:38:29|2059-09-29 14:12:16.157602035| +|23725|-45460011|-8665764757143658496|-10058.15|3111392.39|4140724331387.878906|false|wind surfing|mike nixon|2022-12-19 01:07:38|2077-04-10 05:41:52.802703873|2039-07-14 +95|-25151|-1770250407|2855|-8224.46|-1232102.28|1061929942085.519531|true|education|victor davidson|2024-08-05 07:04:05|2076-04-22 18:20:42.949891304|2082-07-08 +-92|22075|-170643477|2811|-6333.87|-2996672.74|-4596379165591.137695|false|education|oscar johnson|2075-03-08 07:27:49|2031-01-22 04:35:56.338245755|2001-02-13 +-107|15530|1028092807|8785153741735616512|23063.22|4917736.71|-1387735872479.432129|false|study skills|ulysses quirinius|2051-06-21 00:48:20|2064-05-26 10:29:04.116652584|2001-03-24 +-35|-4509||1726|-36045.69|-957009.39|-1436845214707.389648|true|industrial engineering|katie ichabod|2061-12-03 22:11:19|2037-09-03 21:28:18.120030510|1976-03-25 +10|8243|1430614653|7186401810812059648|21430.58|-4117132.25|4273903933165.144531||values clariffication|david brown|2080-09-06 01:51:56|2067-02-25 00:06:03.464200151|2008-03-31 +-100|-18358|390124976|-7603569103205916672|9320.42|820509.76|-2378674120573.869141|true|philosophy|gabriella laertes|2054-02-15 22:48:03|2023-07-16 09:03:23.416142255|1987-01-17 +-34|-12896|-396852483|4018|14230.43|1948755.04|996493613976.418945|true|american history|jessica nixon|2035-11-08 16:07:43|2042-02-21 13:24:08.768185439|2024-08-27 +-79|-3883|-519978947|3566|-25444.08|-4338469.48|-2225952289175.303711|true|biology|bob van buren||2053-09-12 14:38:23.627646057|2061-08-19 +38|11067|257821327|2725||2123890.76|-4311579608982.931641|true|quiet hour|bob ellison|2074-07-08 16:12:25|2028-02-16 07:26:07.314316265|2046-10-04 +-46|9447|-1921909135|1234|43332.86|-1313189.64|3483740651742.017578||debate|ethan hernandez|2053-12-13 02:32:42|2024-05-02 15:41:49.244300741|2012-02-14 +|-31217|-1880877824|346||-4470321.21|-2089255269314.307617|true|zync studies|tom quirinius|2032-11-07 23:12:11|2057-06-05 07:40:56.143268958|1986-12-22 +||866084887|7961515985722605568|-13131.71||-2394101676301.012695|false|wind surfing|david polk|2052-08-30 08:01:09||2052-02-02 +21|32611|482977302|7274777328897802240|-6306.38|1252331.81|-533108289688.186523|false|study skills|jessica robinson|2061-05-19 17:30:01|2079-02-13 03:05:01.151556875|2064-10-20 +-80||581259902|-6933565857643814912|12765.75|-3696105.78||false|wind surfing|yuri ellison|2032-01-12 17:09:47|2026-12-04 01:38:04.606186772|2046-12-26 +62|-776|-409404534|-8330233444291084288|-13235.88|-4942351.80|1478986789735.259766|false|wind surfing|luke nixon||2015-09-27 04:55:14.418545051|2079-08-04 +-15|7988|1969650228|34|49433.36|-1454704.21|3304426642736.508789|false|debate|bob white|2032-05-25 11:24:01|2050-08-06 03:07:56.829882190|2011-02-25 +-100|-19374|-337073639|7080269176324218880|9636.84|4955437.13|-1605703810903.698242|true|joggying|priscilla nixon|2016-06-18 01:36:41|2076-06-24 17:32:46.629540610|2051-08-11 +31|11050|-1862095575|2941||4773173.81|-4916009895587.691406|false||tom ichabod|2026-02-05 06:06:27|2033-11-01 09:06:22.861384004|2064-04-06 +42|29954|-297664578|9117063974299148288|-36654.25|1809785.84|-2990108911038.724609|true|linguistics|quinn zipper|2063-01-04 13:11:49|2032-04-05 17:24:19.790913068|2082-02-07 +36|-1307|-603273425|-6917607783359897600|20495.55|-717022.00|401293377521.448242|false|xylophone band|ethan steinbeck|2043-08-16 10:35:12|2074-08-29 01:50:39.79906002| +-47|20307|-1409508377|-8566940231897874432|-23112.40||-4906953690985.069336|false|american history|katie laertes|2018-04-24 10:05:45||2070-04-05 +-27|16664|-1817938378|-8710298418608619520|-19481.20|2004949.48|-2008363741307.021973|false|philosophy|sarah laertes|2038-09-29 23:53:07|1970-01-01 00:00:00.626944877|2041-07-12 +-31|20391||1520|39315.23|4922532.64|-1940382804363.878418|false|industrial engineering|priscilla brown|2045-10-19 14:00:02|2047-12-07 08:51:00.336787227|1988-07-12 +113|-21146|-800799595|3728|-6051.92||4288442203475.107422|false|history|luke ovid|2042-04-07 13:12:41|2017-11-07 00:47:02.498508838|1980-07-10 +127|-26526|-938112972|-8835408234247168000|-5042.40|-639514.18|2253781196684.378906|false|topology|rachel polk|2059-06-15 22:27:11|2078-04-15 00:06:23.865331718|2002-01-27 +47|3374|527598540|7705445437881278464|5750.75|265215.83|-3997464183110.714844|false|topology|luke ovid||2055-04-30 05:00:45.288293151|2038-08-04 +-57|7826|987734049|6926925215281774592|4092.06|-4043613.94|1825916166900.114258|false|wind surfing|alice hernandez|2066-02-26 20:09:56||1994-01-31 +30|-4159|-1054609414|835|-24688.28|-3625707.02|-1643333177209.917969|false|biology||||2097-09-12 +23|1326|-199587670||23788.91|-602696.25|3307871238283.475586|false||priscilla miller|2017-03-07 08:16:25|2052-04-04 23:29:00.786514521|2091-03-28 +59|3270|1434588588|3232|1480.61|743880.56|2593124571056.222656|true|wind surfing|nick allen|2056-12-31 22:55:26|2076-06-29 19:41:36.482632437|2051-05-15 +66|3245|-300717684|-7840338174858199040|40071.10|-905100.40|-4829089800174.344727|false|wind surfing|sarah ovid|2056-03-09 19:09:50|1970-01-01 00:00:00.59977853|2047-10-04 +85|6074|-540401598|7748799008146366464|20761.91|-4916297.37|2180818539557.698242||joggying|david brown|2024-11-21 14:50:04|2028-01-24 01:00:27.143579402|1970-07-16 +38|-7948|1987336880|7410096605330227200|18427.96|1858816.32|2290676735205.039062|false|topology|fred ichabod|2052-07-29 14:33:52||2090-05-17 +-127|11451|316438994|188|6220.87|2395035.62|1762390956829.769531|false|american history|sarah white|2035-12-04 05:59:54|2037-10-21 10:24:49.395474612|1976-11-08 +-49|19041|-1464762852||-9900.51||4912867697965.523438|false|biology|bob garcia|2080-03-12 06:31:47|2079-09-20 05:14:58.169640521|2008-01-13 +-104|5191|595836061|-7709958788604936192|-17146.91|-3981389.85|1420240216579.884766|true|nap time|priscilla johnson|2018-10-25 09:42:50|2027-12-11 09:57:50.980641227|2019-11-03 +115|-26832|-764412063|-6920172215209426944|17394.03|561210.22|997882374014.622070|false|linguistics|victor falkner|2018-12-21 14:56:23|2074-08-29 04:26:14.412387056|2100-03-23 +-84|-16327|407098216|-9109392978217484288|24409.31|4875980.88|2156284924808.034180|true|undecided|priscilla garcia|2049-08-03 07:20:14|2072-03-18 16:05:07.216021739|2020-01-11 +56|21814|773730574|3608|19617.72|2612031.03|472615987880.900391|true|values clariffication|holly polk|2079-07-31 02:12:53|2033-04-30 22:04:27.178988903|2065-03-04 +109|-5097||-8214462866994339840|14926.06|4194003.54|-3157298893601.385742|false||ulysses falkner|2051-01-12 23:18:22|2056-07-05 00:35:53.936899939|2083-09-24 +31|6900|-604362582|2306|25232.04|-301550.41|289949139351.364258|true|zync studies|gabriella ichabod|2041-03-14 14:44:09|2068-11-06 15:41:10.293161863|2098-08-25 +-122|30119|-2065287410|-7759238919361888256|-48628.97|4508399.10|-1946145505911.474121|true|topology|rachel quirinius|2042-12-15 05:57:04|2057-11-03 01:20:57.262442758|2077-07-27 +-81|32567|-536315467|-8922409715403112448|-49532.02|-2541992.13|-366989953592.735352|true|forestry|luke allen|2059-07-26 01:05:11||2075-01-17 +58|-10247|-186600427|3664|-20024.15|2499207.86|3164512989036.332031|false|history|sarah thompson|2036-09-10 12:17:11|2064-10-23 01:33:56.949763617|2085-10-20 +87|-22431|-1625800024|-9203942396257984512|10700.82|-4871285.36|1078033806441.389648|true|zync studies|fred falkner|2079-08-03 03:53:40|2077-02-22 11:17:37.324498592|2090-11-24 +89|24782|1914993018|8116738401948377088|28477.87|4428379.36|-3581726665433.642090|true|linguistics|yuri laertes|2042-05-04 19:59:28|2015-11-03 09:21:31.868284245| +-19|-25973|-1900369503|1791|38658.65|3263702.68|-971581426672.542969|false|history|gabriella thompson|2019-12-18 15:34:18|2059-11-10 14:30:30.756815026|2094-09-03 +112|-5635|-4393552|-7419068456205385728|-16898.67|-3147119.24|-4071056405979.831543|false|history|rachel ichabod|2020-05-25 05:03:07||2041-02-27 +6|-5946|1366402722|8795069490394882048|-5903.91|-302873.33|-3374663867091.989258|false|quiet hour|gabriella robinson|2053-11-12 16:58:09||2071-08-09 +-115|325|692666133|3043|-22120.22|3867286.85|3593749673935.349609|true|yard duty|mike miller|2030-09-24 22:40:43|2059-05-19 21:39:40.717511206|2054-10-11 +46|-24248|-1871446009|3174|24920.44|-2650736.01|3646290606200.395508|true||david johnson|2021-12-02 02:13:49|2027-06-25 15:06:55.689498978|2092-05-03 +-92|28558|-1699044525|7625728883085025280|-26098.47|-201231.45|-879898512524.555176|false|philosophy|nick zipper|2039-09-05 02:14:13|2067-05-11 07:05:39.707943033|2082-09-07 +22|8786|-1196808950|-8585134536083660800|36606.56|-1258722.35|3594939606490.008789||philosophy|irene polk|2033-07-09 03:38:52|2070-09-24 03:28:58.997336852|2069-12-08 +6|-30638|-370901197|8558000156325707776|-9840.93|-4341927.96|1094936081745.956055|false|linguistics|katie laertes|2078-08-17 11:00:57|2047-01-10 07:06:46.173146425|2028-12-05 +48||1787826883|-8572949572756774912|-7447.88|-4657467.74|-1120139371327.120117|false|kindergarten|sarah allen|2045-11-09 08:09:15|2041-12-23 20:40:16.590539947|1996-09-10 +-2||1045719941|661|48481.57|-199335.41|1697710053431.365234|false|wind surfing|oscar allen|2077-10-09 07:08:17|2044-08-23 18:37:23.765446063|2039-05-20 +-18|-2636|1852725744|2393||-327510.29||true|opthamology|david garcia|2071-07-30 15:03:51|2049-10-01 11:47:21.417323976|2022-09-06 +108|-8578|1352739140|-7800879252150779904|27366.30||-180060584501.582031|false|history|luke miller|2067-12-30 02:21:40|2029-03-05 23:41:09.158607395|2027-02-24 +70|-30163|2044130430|7534549597202194432|-3684.66|3361124.51|-544906712728.980469|false|debate|luke brown|2015-07-17 03:26:40|2054-07-10 04:48:29.103251644|1981-06-25 +-72||583458404|-7642381493746483200|-41758.86|-432625.76|739045453673.981445|false|xylophone band|fred falkner|2075-02-09 15:25:34|2024-10-11 18:27:50.785894213|2038-05-15 +-31|14335|-2024003241|-7330413050756235264|-20201.82|672555.54|1469464763006.626953|false|topology|||2044-04-09 14:18:23.656514547|2038-02-20 +-44|31242|605946758|7596563216912211968|30099.30|2097061.15|3078551005937.946289|false|chemistry|calvin ellison|2040-08-01 15:36:49|2034-04-12 16:31:19.919073203|1981-01-10 +-115|-5240|-1128317466|3307|-17763.36|-3640432.08|-3634683485380.314453|true|chemistry|ethan young|2014-07-01 14:59:22|2065-10-29 07:42:38.763916292|2102-08-12 +-60|4725|-373541958|2971|-21091.82|3177096.44|2070825437177.284180|false|values clariffication|priscilla quirinius|2030-01-02 10:09:12|2017-02-05 15:11:27.916015499|2098-04-30 +-35|-3427|1533817551|2285|22842.27|434947.31|-233465238088.080078|true|biology|david underhill|2069-11-27 12:11:44|2038-10-25 03:53:58.936213000|2018-10-02 +23|-32383|1293876597|1880|15273.59|1943186.18|1318023503084.724609|true|quiet hour|mike brown|2036-06-15 05:33:48|2035-04-17 20:50:04.917479654|2086-09-08 +15|5972|947846543|4088|-24858.15|-1682574.63|2790323958356.459961|false|religion|quinn garcia|2039-02-08 09:45:49|2051-06-08 01:29:12.240654179|2020-09-22 +18|-10277|1004241194|743|37468.44|90556.54|-1721911019841.009277|false|study skills|calvin hernandez|2017-11-06 20:56:23|2066-11-30 20:25:38.323872312|2087-05-31 +96|-28730|-670925379|-8317591428117274624|45783.32|-4491871.75|1347547267070.333008|true|religion|ethan ovid|2039-04-05 21:26:27|2047-02-15 03:00:04.876322903|2016-12-02 +49|22511|1301997393|8854715632851345408|-7866.49|-4806269.72|4690235057502.966797|false|geology|victor van buren|2077-11-06 21:58:21|2026-07-12 18:24:40.599693692|2023-01-30 +116|21606||7768984605670604800|-37668.86|-4451507.54|1896615693548.895508|true|chemistry|victor steinbeck|2049-10-18 09:39:20|2017-04-25 06:11:37.174630171|2045-09-29 +102|-26461|2114363167|2900|42096.38|273171.55|-2395416839539.450195|false|industrial engineering|calvin falkner|2038-01-28 15:37:14|2021-10-28 12:53:49.438479282|2012-09-25 +-35||-1614194712|7062605127422894080|10143.00|3278700.42|-8877240475.761719|true|debate|alice laertes|2047-08-19 00:56:41|2041-07-30 06:11:21.601946450|2060-10-26 +30|-23672|-1983567458|7394967727502467072|42769.25|245529.05||true|yard duty|nick laertes|2052-08-02 11:29:42|2048-02-09 16:35:20.385399131|2092-01-30 +60|22378||1781|39850.06|-4048951.22|3015653383409.677734|true|yard duty|gabriella ovid|2054-01-29 18:44:50|2063-07-31 19:03:05.155926850|2006-12-12 +38|-12193|-1770229099|7238339720750948352|10757.18||2824970709025.791016|false|philosophy|alice miller||2058-07-11 09:32:37.491928305|2001-09-05 +|-2287|92777932|1638|-25700.79|-181051.84|4692362804086.371094|true|american history|ulysses davidson|2037-12-15 16:39:08|2075-09-17 23:16:13.795444412|2079-12-10 +93|15158|1475025489||8969.07|-4073690.87|909614012102.934570|true|geology|alice davidson|2074-01-01 16:32:52|2019-06-28 19:19:52.904542868|2048-06-04 +|6899|633813435|-8522878384019169280|-8564.75|4996750.69|755521930470.130859|false|forestry|oscar king|2078-04-19 11:14:16|2029-01-24 18:55:58.605673322| +78|-9398|51376784|-8051587217208967168|42110.77|4237872.52|-480292543988.199219|true|religion|fred young|2043-08-31 12:19:13|2027-11-28 17:42:04.124425023|2043-05-27 +-98|22678|-765102534|-7425160895830573056|-36404.91|-232802.04|70171166399.717773|false|mathematics|oscar king|2061-03-29 17:11:56|2025-01-04 05:18:13.67002718|2070-03-30 +115|12263|-1669848306|7344029858387820544|45009.74|-4145959.26|-1287206623226.708984|false|study skills|holly thompson|2030-07-06 18:59:28||2068-03-31 +-98|-18295|-1391183008|-8013397854633648128|-12751.03|4087534.61|1251848312304.524414|true|values clariffication|ulysses brown|2042-11-01 14:59:40|2050-08-30 06:33:17.144659188|2100-07-17 +59|297|-1706867123|8808467247666241536|-23178.82|1057885.16|4299677631158.154297|false|industrial engineering|calvin allen|2017-05-25 20:58:54||2071-03-31 +-68|-26481|-726879427|-8768744394742235136|-46383.26|1261211.13|-2782916269764.896973|true|xylophone band|calvin young|2030-05-23 20:23:28|2051-07-05 23:08:45.51977303|2013-03-12 +-6|31316|-1011125931|9185458640237641728|-17508.25|-658586.36|1020511437056.228516|false|industrial engineering|zach ichabod||2061-07-05 08:12:13.181218526|2006-12-06 +-51|-20182|-892839693|-7686220526274502656|45425.18|1655396.08|3720881118135.359375|false|yard duty|wendy davidson|2065-08-25 22:34:57|2077-06-29 07:51:23.99926741|2003-09-22 +93|15815|-626484313|-8203075743525806080|1895.94||977607524337.074219|false|nap time|ethan underhill|2066-01-12 20:36:33|2016-07-24 00:19:40.599709326|2040-02-16 +122|-22390|511836073|3462|-13499.91|-2876022.64|1328013667669.125977|true|opthamology|calvin ellison|2038-09-26 01:22:16|2050-10-02 05:27:49.739848630|1997-07-24 +31|10544|2146312499|6964585306125008896|-1730.59|1232330.61|4495354594042.523438|true|nap time|calvin allen|2051-08-10 11:03:28||2099-02-09 +-125||-940504641|3418|-42213.02|1998604.86|-2596755613328.838379|true|chemistry|victor robinson|2069-06-09 00:13:59|2049-07-11 09:28:46.795925700|2066-06-17 +-55|21440|-606214770|3366|-7764.69|150515.54|3713473719274.773438|false|philosophy|holly king|2065-10-25 16:36:46|2058-03-17 19:37:18.893032333|1998-04-11 +|-11123|-1078579367|-7867219225874571264|3544.10|-4440011.92|-1597354768432.488281|true|education|katie nixon|2021-12-20 01:53:24|2016-04-25 20:51:22.134986617|2009-08-13 +14|-12517|-1269216718|8367680396909404160|41509.01|-1881292.71|-2614008444640.525391|true|topology|wendy nixon|2031-06-01 22:05:01|2019-05-30 05:53:53.829470930|1986-10-09 +-78|-7027|-664856187|7524958388842078208|-49058.42|2299272.82|1193868149375.028320|false|kindergarten|alice xylophone||2038-05-26 15:00:22.242283005|2072-09-03 +-69|4718|-47662800|2897|32798.27|3454639.78|1810203200294.040039|false|philosophy|zach polk|2069-08-29 08:29:09|2014-11-20 05:08:33.941609402|2082-06-01 +-72|-15957|-630900418|8391785334471589888|-49753.88||-3594602463335.583008|true|geology|oscar steinbeck|2034-06-08 17:12:48|2048-09-23 09:12:15.792761284|2039-09-20 +-57|15379|-674478103|-8581979259158929408|24804.72|516411.04|-2087053480555.418457|true|debate|ethan van buren|2039-03-15 22:10:39|2059-02-19 09:59:56.329119790|1980-04-11 +116|-4799|1485934602|587|-36250.77||-3139538476660.561523|false|zync studies|tom garcia|2070-11-21 14:24:06|2077-06-02 22:53:29.588878692|2021-02-13 +5|20183|-2081501748|130|16581.21|2049671.63|162654497074.683594||opthamology|priscilla falkner|2022-12-17 04:17:53|2050-08-15 19:53:57.340023498|1985-05-04 +25|-17429|-300429552|1030|48749.30|891980.69|-51603607081.567383|true|yard duty|calvin johnson|2017-11-20 04:16:35|2055-03-24 21:11:15.57401629|2053-12-19 +45|-31764|89366322|8362046808797306880|-28518.05|2976251.39|2342010012983.273438|false|philosophy|wendy underhill|2015-07-02 23:30:23|2076-07-01 17:36:04.583971136|1999-02-20 +124|3714|-664111469|3691|-30852.26|2707139.90|-4940400326044.844727|true|debate|katie king|2029-04-17 21:35:26|| +-97|4749|859140926|7454632396542074880|46493.77|4790547.07||false|values clariffication|jessica robinson|2072-02-26 01:04:57|2056-06-21 06:38:40.564403087|2042-05-03 +104|-7467|-2111312205|7125231541858205696|9390.22|-4975282.68|-2004428657765.586914|false|nap time|katie nixon|2051-03-30 14:45:15|2039-09-13 12:20:18.915778346|2105-04-10 +51|-31881|1933545427|2580|-38988.06|-4829221.83|3300559907076.631836|false|forestry|victor allen|2064-06-06 09:21:23|2070-06-29 22:13:10.207059753|2066-02-22 +63|17680|-1164833898|2512|18258.24|-1641179.75|752962351021.224609|false|study skills|rachel white|2056-09-13 22:53:52|2044-06-06 09:44:23.311696677|1978-12-09 +-50|29999|-290558484|7061498706968428544|1510.13|-4232212.06|-4574735317597.173828|true|debate|ulysses allen|2037-07-06 08:01:26|2050-06-04 17:30:11.711624931|2005-07-17 +45|-21005|2100839074|-7255686273677328384|34455.77|-1253884.38|4472794135666.830078|true|philosophy|calvin ovid|2070-07-26 14:31:09|2036-04-08 23:28:54.417802561|2044-10-24 +-15|14982|-1079231269|9048002942653710336|-22879.28|4867276.99|-3098102239046.767090|true|american history|victor carson|2059-03-26 12:10:56|2014-08-29 13:16:50.336506060|2012-02-05 +52|19003|1830870769|8868529429494071296|36316.44|2540170.52|76874893588.936523||kindergarten|ulysses robinson|2053-02-19 15:45:55|2062-12-03 14:50:03.474294016|1984-03-16 +103||-1701502632|8815398225009967104|16082.15|3286175.37|3474939567092.790039|false|religion|mike xylophone|2036-09-01 16:20:32|2049-09-25 10:34:17.329238191|2015-12-01 +54|29171|-283378057|7128222874437238784|5784.30|-2487846.11|1273026486246.777344|true|study skills|ulysses xylophone|2065-03-26 18:47:07|2046-10-10 08:53:02.163030900|2065-06-02 +-29|-22000|826143442|8371939471056470016|-9954.17|1165753.75|-3327839964882.955078|false||zach zipper|2025-04-26 13:39:51|2033-12-28 12:16:51.968462869|1997-05-08 +45|-6045|-1562552002|-8335810316927213568|18734.01|-1945504.67|-3344796345914.708984|true|undecided|katie brown|2057-08-05 00:41:39|2022-11-18 17:27:46.282162052|2040-01-17 +-37|-13426|-876122064|-7144791190333546496|-27443.20|3276942.49||false|zync studies|sarah ellison|2027-09-21 21:34:07|2028-07-26 18:55:38.467639955|2046-09-01 +84|-13038|1107502179||26203.53|1826616.72|52385263076.928711|||oscar brown|2062-03-24 05:55:44|2080-06-08 12:00:45.876270498|2068-05-03 +-37|16654|1652349607||23892.92|1116670.95|2593325712512.423828|true|chemistry|victor young|2079-05-05 06:48:25|2052-09-05 13:46:09.928597565|2077-10-05 +5|30730|-841268868|-7572962089372991488|-40151.14|-600165.15|4768177899583.748047|true|geology|ulysses ellison|2024-10-07 05:46:34|2076-04-07 07:58:46.169024390|1972-09-03 +21|-20657|1503176016|8850055384477401088|-36132.96|3738524.26|2378765399686.458008|false|geology|david nixon|2029-11-13 14:57:22|2018-08-17 10:16:14.518949916|1992-03-07 +107|-15779|1620529246|2626|10150.78|3475802.90|-2294284421075.900391|false|study skills|katie underhill|2037-09-11 08:16:17|2058-04-21 23:50:14.231746612|1999-03-02 +-27|-25112|2069258195|3599|3093.83|3254136.59|523934597183.667969|false|opthamology|nick allen|2080-02-16 07:15:57|2060-05-16 16:45:20.894463536| +-118|-16813|-361944328|213|-40953.43||-4751644152447.696289|false|undecided|david white|2070-12-23 10:54:21|2048-10-22 12:20:49.521887540|1979-08-27 +17|28606|277582670|2232|45641.30|128509.04|4503808618217.277344|true|education|tom underhill|2080-09-02 15:00:49|2037-02-08 08:15:49.8202484|2080-09-01 +102|-18601|283618733|-8297230235506343936|-1052.55|-2765868.79|4944203659075.371094|true|geology|quinn ovid|2075-12-13 06:47:46|2023-03-25 01:12:26.114510579|2001-02-02 +-110|29515|-395499919|3430|-39432.90|3255575.14|-1079961002014.897461|true|chemistry|wendy zipper|2032-05-15 10:18:11|2062-08-26 11:43:13.962436079|1985-01-02 +|-9375|1107258026|391|39049.41|2111980.57|-1263586613411.327148|true|education|quinn steinbeck||2028-11-03 23:51:03.652949047|2089-06-26 +96|28011|830944953|-7395343938785738752|-17062.37|-4047697.78|2447642338433.482422|false|chemistry|irene davidson|2070-06-10 17:13:05|2049-03-17 04:12:33.703429425|1977-08-25 +74|-14836||9038087402564657152|46621.33|1011931.42|2571176224975.069336|false|american history|oscar nixon|2056-02-11 14:02:01|2061-02-10 07:18:47.459454314|2066-11-29 +-42|-15695|-1052493316|-9013952631912325120|24814.36|225913.19|1857357798507.415039|true|kindergarten|mike van buren|2032-07-31 17:27:25|2020-07-02 01:16:38.343352835|2081-07-07 +-80|-11081|440393309|3446|-27153.14|-3115694.15|3504105610850.736328|false|geology|sarah ovid|2080-11-21 06:41:56|2022-09-23 02:34:19.579830812| +5|-22582|-397683105|-8703026916864802816|-21676.69|2972179.30|-3159033035088.328125|false|||2016-03-08 14:54:40|2039-10-18 00:49:44.471616221|2045-10-19 +92|-27715|589546540|-7833618000492109824|14121.48|-2112484.76|-2346132497060.402344|true|geology|david hernandez|2070-12-19 18:40:20|2030-10-05 20:00:42.51205588|2019-03-26 +60|-23853|-1430903652|1541|-22380.78|2905459.89|-4830217659481.838867|false|xylophone band|bob zipper|2044-11-07 17:03:34|2040-06-07 07:46:11.981745178|2022-05-14 +-2|-373|435426302|8759184090543857664|36669.53|-4226813.46|-2014561647846.981934|false||ulysses hernandez|2019-01-12 08:00:20|2038-11-27 08:44:14.384170737|2015-01-09 +121|22333|658636280|-7042183597114081280||1390895.25|3030971793285.637695|false|wind surfing|alice white|2069-01-21 19:40:51|2030-03-05 11:21:30.696290529|2045-07-03 +25|-10312|1759741857|-7147490721376591872|11100.55|-1549045.77|4731512443034.197266|true|joggying|nick steinbeck|2020-10-20 08:00:11|2061-08-30 15:56:42.855551352|1998-03-27 +68|25170|1911834442|3725|-46855.76|1255180.75|-1442847310094.883301|false|study skills|priscilla white|2031-05-04 10:11:19|2037-03-01 08:47:26.266061470|1976-03-08 +85|22852|-1138530007|7961909238130270208|-6093.71|3270007.69|-2674772136505.545410|false|education||2030-05-16 10:48:35|2068-01-21 12:11:12.864391307|2077-01-10 +116|7258|-966979668|-8930307926221807616|16695.39|-3896225.81|||education|alice falkner|2026-04-02 23:02:34|2061-07-08 03:11:42.545676274|2004-05-21 +-127|9863|1516149502|2719|-41428.66|4157540.50|638265920153.422852|true|yard duty|david ichabod|2017-04-04 18:50:25|2050-03-30 05:09:44.583713357|1976-02-24 +-68||-1230459100|-6988970700649168896|-32345.84|-4878754.52|2626801691463.143555|false|forestry|mike laertes||2015-12-05 16:38:41.173038216|2046-11-10 +-86|-22421|-345542922|-7155539549555105792|42860.19|-4587464.51|2546447982029.782227|true|biology|tom steinbeck|2076-09-06 07:07:12|2057-12-31 11:27:12.154351101| +123|-1433|-1656822229|3625||1784691.26|-1490403618753.184570|true||priscilla ichabod|2023-04-14 13:50:19|2022-08-17 04:36:05.763580269|2019-11-15 +67|-17254|129675822|8113585123802529792||1292322.18|-2056228636604.906738|false|religion|alice ichabod|2075-02-23 01:44:22|2019-09-04 19:27:52.964797916|2101-04-17 +116|18354|2066707767|9207927479837319168|11869.69|782908.70|-3561486225626.175781|true|kindergarten|zach thompson|2036-01-14 22:33:10|2078-12-19 21:06:17.223542373|1981-03-03 +2|-6487|-2011708220|-8387347109404286976|3033.19|1933471.30|4046390706154.064453|true|biology|katie zipper|2024-01-09 10:21:56|2048-02-11 17:28:42.54177107|2069-08-17 +-53|-16052|-768305191||17946.80|303090.34|-364312091649.842773|false|linguistics|rachel johnson|2027-04-27 06:12:38|2052-06-15 15:08:20.185912632|2073-07-08 +-54|-31404|1540680149|8896237972875370496|2155.10|-4075392.96|4275511770663.023438|true|kindergarten|mike white|2053-02-17 10:06:35|2033-01-10 10:54:27.769712510|2019-02-12 +73|-29468|564349193|8372408423196270592|8882.78|2172977.04|335964103970.418945|true|debate|tom laertes|2070-07-27 23:21:50|2060-05-03 18:17:59.362453382|2082-10-06 +28|-16425|932774185|922|36886.25|4970929.84|-2211537110226.693359|true|yard duty|bob king|2042-10-20 10:28:56|2037-10-28 21:57:54.89341833|2079-05-16 +-108|-5118|1281159709|7255302164215013376|43517.90|-370366.94||false|chemistry|priscilla davidson|2074-11-03 03:30:08|2027-10-18 04:36:01.205338700|1994-01-16 +-31|-16978|318631333|-8585966098173870080|18570.09|898302.80||false|mathematics|ulysses davidson|2062-03-03 06:35:19||2095-12-10 +-111|-20112|1847210729|8424515140664360960|-13301.82|-3521114.58|-1467777131906.373535|true|quiet hour|sarah polk|2035-03-23 23:34:06|2068-12-06 16:35:56.147946401|2036-05-11 +-118|3486|-76654979|-6997233584896229376|-43892.40|1141130.14|3496895382259.453125|true|mathematics|zach van buren|2078-06-17 15:41:41|2017-02-03 01:26:03.765359003|2079-06-11 +-1|18900|-2137168636|8087737899452432384|24766.64|-1466134.14||false|industrial engineering|katie garcia|2072-04-07 08:27:00|2046-08-31 17:44:23.281747989|2038-04-03 +-60|-4501|557053197|1493|-28572.29|-3264979.44||true|topology||2069-10-07 09:02:18|2031-11-14 01:37:26.277625746|2093-10-03 +71|27960|-859535015|8779711700787298304|43414.93|-4284284.11|23723101115.607422||forestry|bob garcia|2065-07-01 07:28:35|2040-10-27 09:40:45.325661811|2078-10-25 +74|-17056|672266669|2533|14993.12|4181055.99|2330393617025.130859|false|values clariffication|jessica underhill|||2066-04-21 +105|8328|-44559184||34668.32|-3358597.04|2107086403699.476562|false|industrial engineering|priscilla garcia|2073-01-23 05:17:11|2041-01-24 08:27:17.399682734|1982-09-04 +35|13020|-1491722659|8017403886247927808|-27501.34|-3084795.60|1361019533518.934570|true|biology|ethan laertes|2049-12-25 02:26:54|2057-08-09 18:37:09.476222463|2091-03-14 +|-18151|-1140071443|1282|32571.05|-218555.28|2241361269159.725586||kindergarten|mike laertes|2038-07-20 14:27:31|2076-01-14 17:32:40.202975480|2076-03-16 +-55||-1960344717|2177|-44515.88|-75942.87|873619012141.020508|false|opthamology|holly steinbeck|2037-12-11 11:02:50|2068-04-24 14:56:03.866851484|1973-07-26 +-74|-12876||-8632237187473088512|27660.85|-3161619.93|3454616098419.087891|false|kindergarten|nick laertes|2054-07-06 18:44:09|2049-03-20 15:41:29.13229610|2043-01-06 +-121|-11110|2022944702|8109381965028548608|4900.65|-1214641.94|-782319272106.413086|true|biology||2077-04-19 06:19:04|2080-04-29 19:51:25.500331032|2029-03-19 +29|67|590719541|1157|36502.48|-4871524.01|-2077483805740.065918|false|wind surfing||2034-08-25 19:02:03|2037-08-20 21:02:49.427519908|1992-09-10 +-45|-24911|1870464222|7378993334503694336|-16461.48|2813386.84|-2450662360123.097168|false|quiet hour||2024-08-11 09:42:40||2059-08-24 +-72|2074|1013517056||-42455.06|-142043.75|3719431660678.935547|false||xavier ovid|2023-08-30 07:09:18|2018-09-20 23:47:19.977608647|2007-01-02 +-110||-1946023520|2560|-46654.69|407244.54|-622449463768.788086|false|industrial engineering|irene brown|2049-12-25 17:32:04|2044-10-31 04:37:40.524530302|2017-04-21 +-71|2335|1003667927|4037|-40079.96|374952.12|4337472356507.205078|false|topology|mike polk|2018-06-24 18:36:35|2064-11-10 09:43:52.16046799|2028-12-03 +-54|-4364|1775355987|-8562524688907485184|-10552.10|-494146.63|2527866513015.055664|true|nap time|david ovid|2036-03-05 02:43:58|2033-02-15 05:01:02.667963573|2061-02-21 +-12|-24847|1471913583|2325|26530.25|-11708.56|2137890018516.585938|false|zync studies|rachel robinson|2041-10-21 00:45:05|2031-10-12 16:59:24.57008285|2099-02-12 +48|-4923|2051470532|6962726713896484864|-31562.99|-3107233.90|1876626916355.661133|true|american history|rachel zipper|2047-01-05 01:41:41|2067-01-14 02:21:16.602793258|2104-10-13 +-50|-31709|-1379039356|8120593157178228736|20553.47|-2588951.95|3745237629497.139648|true|geology|yuri white|2072-09-13 15:30:55|2040-11-14 23:29:32.319041291| +87|26324|-1709117770|6924820982050758656|10187.76|-787959.05|-455009287847.438477|true|opthamology|calvin miller|2037-08-01 12:37:21|2059-09-14 10:15:36.572649743|2083-11-10 +-32|20746|1592153312|-7366430883634929664|-48828.20|3542628.51|-4174317808621.062012|true|religion|ulysses young|2022-07-28 16:59:23|2055-09-14 11:55:11.844515490|2032-03-31 +|-23284|-2071851852|-7209060152494817280|34473.73|698236.93||false|debate|ethan ichabod||2039-04-13 07:12:39.959754595|2051-04-11 +-79||488559595|-8689606130068611072|46873.75|-4585927.20|1922555768632.854492|true|history|ethan hernandez|2016-07-20 02:40:21|2014-04-06 14:33:25.947936182|2006-02-12 +-124||297577612|3190|26589.02|2183845.19|-1193317944887.937012|true|geology|bob ovid|2014-05-18 11:54:56|2059-07-31 15:56:05.368353709|2063-06-28 +43|1762|-2119539915|3725|-45749.50|3070034.88|-3994813234986.907227|false|industrial engineering|holly carson|2039-11-03 00:15:58||2092-10-07 +-38|-28098|-890374552|-8581765103969312768||-3283040.77|2656201211529.278320|true|industrial engineering|gabriella polk|2029-01-04 19:28:12|2014-02-05 04:57:17.37210387|2038-02-26 +-67|-9676|-1889139541||-11999.87|-2509288.07|4834823806574.134766|false|linguistics|irene davidson|2039-06-08 03:04:50|2044-07-10 14:18:16.503028090|2094-11-08 +-59|-15053|459269456|3542|24044.42|3949871.39|3217181341598.660156|true|kindergarten|mike nixon|2054-05-19 16:38:12|2053-10-27 15:11:39.341374749|1984-09-17 +45|-9065|566646177|8553195689344991232|-8135.26|-1939444.49|1642913015191.496094|true|forestry|calvin ovid|2027-08-13 20:32:10|2034-04-21 19:49:54.457098155|2062-06-17 +12|-4618|-1098379914|1789|36168.36|2705339.34|-3690347823231.547852|true|biology|holly johnson|2042-06-30 11:41:46|2018-07-12 01:39:37.64101956|2056-03-04 +71|27905|-1755088362|8698055291501543424|-19752.00|33234.12|688042997736.531250|true|american history|oscar ovid||2053-09-30 17:29:18.665697992|2009-03-20 +-71|-18503|597657990|296|-11362.53|-4728535.24|1779931909010.094727|true|religion|david falkner|2072-03-01 20:11:45|2037-09-21 12:33:06.143755779|2000-03-05 +11|10940|1687784247|-9095689235523264512|4559.16|-3019879.00|-874527173245.560547|true|zync studies|bob king|2014-07-11 06:14:44|2077-11-30 06:12:58.616698981|2034-11-19 +-50|5591||7998687089080467456||285146.00|3230421493464.880859|false|quiet hour|priscilla ellison||2042-01-18 02:32:10.14671907|2094-02-22 +-90|19986|-1808960215|8160569434550403072|-36016.61|-2975819.86|4812496108620.009766|false|zync studies|ethan davidson|2040-08-07 19:44:11|2076-10-03 23:03:12.999374869|2062-08-07 +4|-21009|-928013434|489|37854.16||4399713240319.478516|false|values clariffication|ulysses hernandez|2047-03-25 04:38:53|2054-05-31 05:02:46.363507150|2069-11-23 +20|-23241|-1701492480|-9175038118837149696|-26613.47|1842617.05|-874710832768.563965|true|american history|jessica carson|2037-03-24 21:59:48|2075-10-04 10:31:47.885981681|2055-06-11 +119|-6384|1187495452|8571268359622172672|-8449.84|-4234142.32||false|american history|xavier ellison|2058-04-04 16:57:08|2031-10-24 10:16:43.56250862|1981-11-13 +26|23468|-2136052026|-7916510129632296960||-3375.58|-932636901856.333984|false|||2063-08-14 11:27:00|2029-05-07 11:16:44.211702565|2093-04-29 +-43|24298|-1524554771|8323460620425330688|38854.35|-4288521.90|816149960555.847656|true|joggying|luke johnson|2039-12-24 23:32:35|2074-12-19 05:35:31.748853096|1994-05-03 +|-11767|-938756287|346|-14372.50||2123388956108.485352|false|philosophy|fred steinbeck|2023-06-14 17:07:18|2013-08-25 12:57:38.526376049|2068-09-07 +82|-6334|-564495517|3980||-3367097.22|-974002789414.605469|true|american history|sarah steinbeck|2077-09-25 01:00:46|2031-02-06 14:50:01.97188046|1986-09-18 +-34|-13335|1568180994|-7707242953271500800|43312.27|-4190279.40|3157550021812.021484|true|education|alice underhill|2077-03-07 09:32:11|2061-12-11 17:47:50.656826729|2033-07-02 +-41|10278|-922200749|1811|-5675.84|2126493.90||true|linguistics|ulysses polk|2021-09-26 02:58:42|2037-02-07 22:52:41.845445061| +-3|16134|923980398|2803|47958.63|-123069.85|3302684840602.587891|true|xylophone band|katie van buren||2017-11-28 19:30:26.747429591| +-48|-27284|-215703544|7370078518278397952|-44853.80|2971392.13|-2865549427171.991699|true|values clariffication|yuri thompson|2040-10-13 04:09:32|2042-06-15 18:08:24.614905000|1987-10-30 +122|-21805|1543611951|7497276415392407552|-21005.13|2798310.44|-4898025473643.805664|false|american history|tom quirinius|2027-09-08 19:38:10|2073-02-25 17:53:54.931182325|1974-09-07 +29|-4772|-2028355450|2323|-14463.60|-2063292.11|3614336014381.258789|false|quiet hour|quinn thompson|2040-10-17 05:30:18||2073-04-07 +22|-23622|916057807|8467976965865799680|-45069.06|-3169540.55|-3121144891991.676270|false|american history|katie ellison|2039-06-07 19:13:41|2064-10-13 03:30:27.872003019|2064-06-14 +54|25636|-1156193121|691|14845.29|2712830.87||false|industrial engineering|yuri johnson|2075-04-20 17:39:07|2036-11-16 16:14:15.788195860|2053-03-05 +61||-1462331586|1914|-19390.54|-2888414.09|-1458422440761.921875|false|topology|gabriella xylophone|2043-05-11 03:31:25|2016-03-24 12:00:25.125315901|2067-01-30 +-68|-27049|-941433219|6982145326341423104|-17847.79|2416407.91|3913372951778.839844|true|quiet hour|oscar white|2016-12-13 22:46:01|2042-12-23 09:34:08.712953951|2092-12-18 +-14|-5357|-671853199|-9203804401302323200|-49229.73|3168248.28||false|linguistics|fred falkner|2045-09-30 02:09:20|2069-07-07 15:06:02.724854172|2093-12-04 +-125|-23546|344239980|7823874904139849728|41579.55|1950776.66|1201402518499.143555|false|joggying|david hernandez|2034-11-18 20:10:51|2054-11-24 08:43:56.953788150|2105-09-20 +54|26155|-532755480|7534145866886782976|6967.23|-3226525.02|-1855303775517.675781|true|debate|rachel van buren||2055-01-08 05:36:23.516296700|2012-04-21 +-1|-14551|76381404|9085434340468473856|-35645.13|2319559.14|-308755508523.432617|true|quiet hour|rachel garcia|2017-01-24 05:00:43|2013-12-09 10:54:08.794663094|2052-11-16 +-97|-3619|-1545388906|8579974641030365184|-21168.24|-2764375.21|-3347449615248.976562|false|values clariffication|bob ellison|2055-05-20 19:13:26|2033-04-21 06:38:32.498310577|2017-11-30 +100|-6024|1723691683|8536948829863198720|47627.04|-1569764.42|-2866718883273.335938|false|zync studies||2054-06-22 01:40:38|2058-02-06 15:15:47.940520185|2072-11-26 +126|5516|278643258|341|-11228.83|634413.34||true|history|xavier ichabod|2022-09-19 23:14:38|2079-08-22 14:14:01.57697301|2067-03-01 +78|-10439|742866312|-9102482277760983040|17001.89|3890002.99|2756529687561.446289|true|history|victor zipper|2017-08-01 15:57:45|2070-05-02 05:20:55.632052613|2030-10-04 +-103|32210|-1254129998|658|-29957.29|-2795444.37|75939180315.778320||mathematics|ulysses brown|2027-08-02 14:55:50||2081-08-17 +80|-5089|-588547970||40137.08|4196447.38|2249064278951.813477|false|values clariffication||2044-10-13 20:35:22|2063-07-28 15:07:41.30831543|1990-09-22 +-17|-14705|-887790938|2843|27083.98|-4094095.34|-4538477190343.535156|true|study skills|priscilla ichabod||2060-07-21 05:29:07.891389875|2020-08-08 +41|-22910|1410516523|7584007864107778048|-26850.55|1924125.21|2728934571209.719727|true|education|yuri ovid|2069-09-25 12:15:22|2081-01-21 23:09:27.167408818|2105-06-13 +53|-16247|-186764959|590|-43932.82|1488803.45|426645021297.744141|true|yard duty|xavier steinbeck|2052-08-30 02:52:56|2057-09-22 01:17:56.602173912|1977-06-25 +124|-1067|-2146432765|8899122608190930944|-8534.65||3325424877285.349609|true|religion|nick van buren|2058-01-20 15:06:15|2077-04-04 20:32:46.931020333|2026-01-11 +-36|27156|850625480|3588|42187.91|1811969.63|-3976647851697.982910|false|topology|zach allen|2014-07-18 20:02:05|2039-08-04 00:06:01.390839073|2058-05-02 +104|10457|-1380191654|3609||4276263.85|-265494965739.847656|true|chemistry|wendy steinbeck|2076-10-08 03:34:56|2043-11-26 06:58:33.589491132|2082-02-15 +111|-260|1372224352|3824|-10063.81|3381864.81|4651675165956.277344|false|education|tom underhill|2015-09-12 05:40:29|2024-06-13 07:25:09.53150568|1983-10-31 +-41|276|-2124994385|7690986322714066944|10570.59|1504218.24|4721071679740.945312|false|undecided|ethan young|2057-12-06 16:20:41|2044-12-03 15:12:53.223286147| +-98|-4286|1074488452|7765456790394871808|34635.92|2380624.11|1160277570495.260742|false|industrial engineering|tom polk|2046-08-09 21:35:24|2063-02-09 19:10:28.968599555|1985-02-08 +5||-500921094|-8649711322250362880|2739.41|2974096.30|-3103906430076.932617|false|debate|irene van buren|2078-11-04 19:08:18|2030-03-03 09:27:14.362039938|2065-12-20 +-106|11895|-628446314|1948|-16324.00|-4498818.60|1427707877153.423828|false|debate|||1970-01-01 00:00:00.172894766|2080-10-14 +86|-16390|-1918847735|-9101953184875757568|-11869.39|2819946.57|597670762650.892578|true|geology|priscilla miller|2048-11-20 13:09:10|2027-04-22 12:21:15.759028066|2038-12-26 +52|-30492|2031604236|2463|38249.67||2340697225707.053711|false|nap time|quinn johnson|2027-10-15 08:46:59|2066-12-22 01:05:49.826136001|2088-10-12 +-69|-13410|-738157651|1813|20147.37|4298419.86|-471086287570.549805|false|kindergarten|david allen||2078-02-24 23:37:09.324361343|2023-05-09 +50|-12422|-1266138408|7054271419461812224|33076.17|4726793.74|-1825975796516.701172|false|study skills|gabriella steinbeck|2034-09-27 07:53:11|2067-05-04 08:00:04.76094355|2045-08-30 +119|6913|1836499981|7548958830580563968|-789.80|-4853521.51|-2520439759952.566406|false|education|yuri davidson|2037-12-20 12:22:00|2060-03-04 05:27:06.411478902| +-68|22588|2084666529|-9206329156028112896|-46857.55|4518647.92|3514007061626.251953|false|industrial engineering|mike brown|2025-09-06 20:02:42|2017-06-08 12:00:40.56190634|1976-03-22 +30|-26180|1522208504|2637|24228.24|4916304.14|2690767997858.607422|false|study skills|fred hernandez|2018-08-31 02:11:20|2034-06-17 01:40:03.264737765|2005-11-23 +-106|-25689|-693249555|-7661250850555633664|-24825.24|1483670.11|-4990192589949.166992|true|geology|nick king|2019-01-30 15:29:01|2016-03-23 21:48:37.760268674|2081-06-09 +113|24019|899810881|664|44245.25|4097479.70|294259545397.430664|true|biology|quinn garcia|2017-11-03 16:12:54|2065-09-09 02:55:30.992457875|2044-04-01 +-73|-7873||2487|-21944.26|-1353294.67|3144741114101.847656|true|american history|sarah quirinius|2068-12-01 14:02:38|2025-09-28 09:32:04.373329529|1984-03-30 +-29|-4211|-1626062014|8221561626658881536|-17167.97|2376404.62|-2396766266715.104492|true|religion|jessica allen|2076-10-17 13:16:32|2041-07-29 04:57:59.28367872|2052-06-27 +76|-19545|1765874562|8169878743136043008|4737.74|2522751.77|4492331567972.839844|true|undecided|mike ovid|2025-02-11 02:25:59|2057-07-18 07:47:20.80373888|2035-05-28 +120|15578|1668094749|6927260280037097472|-12442.12|-3625208.20|-2505949310240.964844|true|values clariffication|luke carson|2060-08-28 06:39:49|2042-08-21 19:21:53.22689204|2036-04-04 +-121|-32403|-884796655|342|43804.75||3086918973716.556641|true|philosophy|oscar robinson|2042-10-22 23:52:01|2027-05-27 10:44:21.656527878|2057-06-19 +-2|-27807|1809795770|-7501803640821456896|-31728.95|2217700.27|1303564912300.209961|true|linguistics|david ichabod|2058-03-12 04:48:33|2026-10-07 09:37:11.609376049|2096-11-02 +39|-2410|1134416796|2745|32844.17|-1496658.25|-634697885935.402344|false|opthamology|quinn thompson||2043-04-08 21:14:44.886763154|1974-03-31 +57|-3449|-1038565721|677|-32939.72|3205392.52|-3723568349288.726074|true|yard duty|wendy laertes|2039-08-20 17:31:07|2043-12-22 07:02:29.625016869|2068-08-18 +-52|-19028|-2081809883|8435912708683087872|-49142.74|-1903864.82|3512222649259.086914|false|mathematics|gabriella brown|2040-06-21 05:21:16|2058-07-03 23:16:43.395150800|2059-05-01 +-123|12674|1817671655|7412924364686458880|22076.92|1732310.78|-198468750423.259766|true|values clariffication|yuri van buren|2062-02-20 04:56:42|2074-11-24 19:41:00.713104566|2003-07-31 +-76|-7533|1332181668|3563|16233.53||3796582343071.613281|false|yard duty|ulysses laertes|2029-10-24 07:37:56|2071-10-19 15:34:38.872812372|2071-04-18 +-119|-14053|8040290||9147.84|-4731232.91|1812411477716.757812|false|values clariffication|holly ichabod|2031-01-05 20:55:56|2050-12-24 02:26:09.954349620|2097-09-19 +110|-17426||7153922334283776000|10695.41|-4157898.82|-3205627224037.357422|true|yard duty|calvin ichabod|2022-06-25 07:08:22|2061-01-13 03:07:32.453720097|2066-09-03 +-28||718692886|8849475396952514560|-22341.30|-1839215.40|-2738602396779.903320|false|opthamology|victor white|2030-06-25 00:58:04|2061-03-21 18:52:13.283910292|2095-01-04 +90|-16129|-2007662579|2977|15304.02||-4049128118326.663574|false||wendy quirinius|2080-06-24 16:38:20|2017-06-18 02:28:45.172735440|2050-09-13 +96|1409|-1259611508|-7910019233726242816|-38530.51|-44517.83|-3803225081574.588379|true|industrial engineering|calvin brown|2017-03-12 03:01:53|2033-08-29 02:29:46.117205169|2010-04-10 +117|-32688|144428297|2835|-20190.35|3425255.76|1239390523307.939453|false|opthamology|rachel falkner|2056-11-05 14:04:47|2075-05-31 12:50:08.854908788|2084-04-26 +55|999|1281277970|2335|-2914.82|||false|opthamology|fred young|2072-08-24 05:04:35|2058-05-10 01:43:32.344081382|2029-07-31 +41|28165|1069486136||-37952.82|-276339.96|3109359968514.944336|false|opthamology|victor ichabod|2069-02-08 14:25:38|2076-05-15 06:44:30.554693842|2053-03-25 +-86|23850|-601946913|2515|10326.69|4649531.05|2268855975314.246094|false|topology|ulysses robinson|2013-04-25 03:23:27|2056-06-03 12:33:31.602556689|1984-05-06 +-101|718|386741352|-7617860842651017216|-42832.01|2064169.43|-4943806409743.167969|false|industrial engineering|sarah ichabod|2057-03-27 09:22:04|2064-01-08 17:40:10.787568720|2020-01-01 +-127|-10662|648935848|-7637755520917741568|-33941.20|1359686.42|1579030228803.083984|true|chemistry|luke laertes|2016-12-23 11:45:20|2036-05-11 12:47:07.733851638|2003-04-13 +80|-1223|92834720|2647|-36870.03|1719246.27|2540178498144.847656|true|nap time|bob falkner|2038-06-08 07:54:27|2042-11-05 13:52:50.588354549| +-3|22320|1343581455|707|15471.72|-4962575.43|-1611227671309.833984|false|study skills|mike robinson|2078-04-16 04:19:35||2048-11-11 +||-4943292|8856674723376668672|2164.62|893829.85|-631328089657.294922|false|opthamology|oscar quirinius|2027-03-09 19:18:57|2054-01-23 04:24:15.292126981|2060-03-20 +-50|2616|977624089|7857878068300898304|-30457.66|-1477221.11|859058050811.647461|true|american history|ulysses ellison|2035-05-02 05:58:22|2050-12-28 10:26:48.409801540| +3|-17916|-191704948|-8887058200926093312|35825.27|4647161.69|2477546519048.629883|true|mathematics|wendy carson|2027-09-25 05:34:03|2032-03-05 14:53:42.83179281|2024-12-19 +100|-5919|-835107230|108|-37662.39|-3446860.49|4914447452945.439453|false|kindergarten|sarah carson|2031-07-27 00:13:59|2066-12-30 00:14:45.43797107|2058-07-30 +37|-24696|314232856|2762|-9928.97|-2740875.06|3528496539480.343750|false|geology|fred thompson|2032-05-15 14:11:38|2057-07-08 21:29:58.104912394|2091-09-09 +27|-8398|-1583445177|3622|32876.52|285737.42|-4676053735656.750977|true|undecided|luke xylophone|2071-11-07 15:31:50|2021-08-10 08:22:04.527867145|2086-02-10 +|-14644|-2133145181|868|-5084.93|-77615.10|4647718670978.201172|true|chemistry|yuri thompson|2030-06-15 16:57:13|2063-01-20 09:04:49.362142228| +36|-7046|843282593|138|-1437.75|1530832.04||true|biology|zach van buren|2049-05-13 12:51:19||2039-05-11 +31|-10258|-1009249550|1786|-45853.99|-2996009.61|-1270664267650.971680|true|zync studies|calvin laertes|2054-10-23 17:10:03|2054-10-22 11:44:42.793294685|2064-05-02 +||-236700442|9116137265342169088|13586.84|-3397114.60|1665543214302.829102|true|biology|holly carson|2076-12-15 12:30:43|2067-07-10 06:37:03.526969971|2038-06-13 +-8|-25988|1447438548|7955126053367119872|-37404.36|-4278525.05|-1539681145987.756836|true|forestry|david thompson|2056-07-24 05:41:13|2038-11-27 05:16:00.826863713|1976-09-08 +-93|4747|-201554470|491||-4736059.79|-4074148068973.322266|false|religion|luke brown|2052-04-12 11:55:51||2019-08-20 +18|-26064|-807242371|-7778829032042790912|-497.18|3018359.10|4165268868128.960938|false|history|quinn xylophone|2064-08-04 14:39:21|2049-07-11 03:38:36.188505486|1979-06-14 +-2|28921|-1599905147|-7753051494275432448|38746.13|1924853.86|2728705276812.348633|false|chemistry|mike miller|2063-11-22 05:40:00|2040-04-01 02:20:42.508563674|1999-07-08 +|-26946|-329695030|8962097525980225536|47503.36|-817384.58|955232900660.511719|true|zync studies|holly van buren|2020-01-09 00:26:09|2033-08-15 04:18:59.595230815|2066-06-06 +0|-2835|1968813171|8163948965373386752|8908.65|-3820148.18|-481479853467.270508|false||sarah miller||2068-01-02 01:54:57.346312106|2075-09-25 +114|20265|669484010|1145|13147.10|-1843756.18|554432518470.839844|false||yuri ovid|2039-05-04 13:47:10|2038-08-21 17:57:56.403669763|2081-07-12 +|28775|232405034|-8438554249514491904|46640.35|-4159360.82|-255361794196.424805||education|quinn robinson|2026-01-11 21:41:33|2040-12-26 20:16:11.824788390|2024-05-19 +111|22074|-853606287|522|35504.72|1790821.65|38856848277.219727|true|american history|alice van buren|2054-05-22 23:30:43|2046-11-03 15:13:41.781244421|2079-09-30 +55|4319|-524189419|1785|34553.22|-1096127.27|4436479409217.000000|false|biology|xavier van buren|2079-08-25 13:19:06|2080-03-03 09:31:40.884489078|1979-09-24 +51|-800|564366133|1545|-31100.82|-1936194.76|1798080391637.881836|false|undecided|alice xylophone|2065-08-30 18:15:20|2055-12-07 19:37:09.85869965|2078-10-08 +107|11159|-346607939|999|-24238.72|794247.13|835410305018.271484|true|forestry||2072-11-24 12:45:43|2027-01-26 04:52:45.940702976|2001-01-27 +-116|-31182|-54793232|1941|-33327.99|-4081209.43|-4789172370818.662109|true|wind surfing|jessica van buren|2062-10-28 14:12:34|2047-11-19 19:37:15.731253997|1983-02-23 +-10|-32371|1333214263||-32279.82|4486493.62|4879631964298.525391|true|undecided|quinn falkner|2045-05-25 12:09:59|2068-07-04 02:37:10.599103732|2089-02-09 +80|21377|-267554590|7454442625055145984|8701.65|-905741.94|1537464945669.313477|false|joggying|david van buren|2077-05-12 07:35:39||2061-02-10 +-104|-3190|197056787|3510|-22360.28|4523037.34|3240433039663.095703|false|xylophone band|xavier white|2051-07-06 22:05:57|2051-01-02 05:43:39.718899624|1996-03-18 +-64|6163|-1602792666|2373|16736.31|-3740028.62|3690526967552.294922|true|joggying|yuri brown|2040-02-10 20:14:48|2080-02-11 07:48:36.902436157|2000-11-17 +-30|-24670|1701817607|-8127494999848919040|-13803.97|3963022.39|1474152640583.561523|true|geology|tom hernandez|2079-07-30 04:14:31|2057-05-04 01:14:00.609761058|1974-09-16 +-74|-23109|1346627771|1643|-43168.85|3155689.66|-4448781974974.628906|true|forestry||2039-08-04 16:00:45|2028-08-01 19:19:13.322219484| +118|-23389|-370093295|-7819437864839495680|-26609.73|-4237190.22||false|kindergarten|bob thompson|2019-09-22 15:35:21|2037-04-28 10:43:14.893096143|2021-09-12 +69|24253|60847311|-7822452149325094912|-40655.11|-3881485.82|-1314247053468.484863|false|debate|oscar young|2067-05-18 04:05:27|2039-10-06 08:12:08.884589651|1984-06-30 +-5|-32000|-177025818|7411793502161182720||2485530.29|1594683877449.583008|true|opthamology|yuri young|2035-11-20 23:20:18|2078-01-19 12:17:21.914800889|2015-02-06 +-35|7474|-1676261015|2274|38942.74|-37023.70|3451540509748.127930|true|opthamology|katie polk|2043-05-05 01:41:36|2044-09-13 08:37:07.823303166|1973-01-15 +-102||-714270951|8783241818558193664|-24442.85|50032.07|3379969757973.632812|false|topology|calvin xylophone|2049-08-05 08:30:47|2065-10-10 06:49:24.92342328|2078-07-28 +84|-18485|345556325|8316336224427483136||4778.81|-213703503553.759766|true|geology|irene laertes|2027-03-23 13:59:49|2068-08-29 13:45:16.22118413|2004-10-29 +57|-19535|-1484033125|-7669169138124275712|5132.56|-3812127.71|-2880380214433.984375|false|values clariffication|xavier ellison|2013-05-28 14:20:54||2032-11-10 +19|-16815|1440427914|2984|-33347.21|-2217545.87|-1622352479297.113281||xylophone band|katie garcia|2037-08-01 18:21:41|2074-09-05 16:07:02.893370421|2050-05-01 +-42||-1201785350|-7772064021830574080|-19385.56|-2417269.98|4254639589730.294922|true|wind surfing|quinn thompson|2056-10-03 11:35:20|2050-10-14 15:57:47.94057206|1994-04-07 +-26|-20787|-2066134281|3397|38532.91|-2052731.66|-2212037711168.371094|false|xylophone band|alice zipper|2081-02-22 01:21:53|2066-09-15 08:59:43.712981923|2068-06-30 +-27|-20093|-226635871||39730.55|2920764.76|3736425396480.705078||american history|alice davidson|2063-06-30 00:25:29|2039-10-04 08:34:32.485344607| +-52|17720|2134433675|8523972434954510336|-41237.62|713755.68|-2484484479175.712402|true|education|irene ovid|2035-11-11 02:58:59|2036-10-18 01:59:34.57776882|2071-03-20 +-28|28089|260463232|-7127548949860818944|44331.03|-3844217.64|-1326537974723.827148||undecided|ethan davidson|2041-01-01 12:36:24|2023-11-30 11:12:45.269637203|2029-01-15 +3|6587|-916495008|8286706213485297664||-454411.58||true|xylophone band|priscilla polk|2066-01-13 23:59:59|2028-04-05 20:31:53.571987516|2031-08-14 +-96|-7065|1102069050|3147|-5252.56|2525210.28|-2140534616823.686035|false|wind surfing|oscar polk|2078-12-19 18:51:30|2024-01-19 18:54:53.308875328|2070-05-01 +-87|-134|-1289501869|-7536330682873937920|-32963.40|4026456.79|-4233812360710.160645|false|american history|irene king|2076-12-17 13:17:28|2026-03-07 02:44:03.954816308|2039-03-16 +-88|-29977||-7115054815375073280|-49346.30|-4958976.45|-2795424166054.196777|false|mathematics|zach steinbeck|2033-10-10 03:50:46|2072-01-30 01:12:19.980530173|1988-11-14 +-54|11077|-235238928|-7319315187617587200|-21327.60|3102506.04|3723093064701.678711|false|biology|quinn hernandez|2050-07-10 07:39:25|2067-01-01 12:42:39.897268043|1977-03-31 +-127|14408|1390704286|1099|-26406.94|4860414.94|4855359545894.408203|false|quiet hour|mike miller|2057-01-23 19:19:39|2064-10-13 08:42:40.250692511|2030-08-25 +-110||1310360849|-8989473881707921408|29776.70|4921339.21|-1711490983970.094238|false|american history|mike van buren|2017-06-03 10:24:21|2017-06-10 20:23:52.816880923|2042-06-26 +-108|6226|-912429611|2816|30162.78|682391.80|618292737301.046875|false|debate|sarah steinbeck|2059-03-16 19:54:08|2015-05-02 04:32:12.949465541|2008-06-28 +60|18845|-1369253050|-6986178228432322560|-35269.73|2961506.86|1006481369666.687500|false||katie white|2022-02-26 02:53:55|2031-08-28 00:04:15.166189356|2054-08-15 +46||-938762477|-7759425383684849664|46392.36|1976120.50|4269437008221.785156|false|mathematics|ethan steinbeck|2061-01-29 15:15:46|2064-07-10 10:33:03.635139975|1978-09-04 +-71||268888160|-7893577088764174336|-35474.68|-4088895.16|-617279427364.288086|false|nap time|bob hernandez||2040-02-11 11:11:34.256681234|2061-05-04 +91|22232||8091421389575282688|9502.48|-3837325.10|-1866384122906.517090|false|zync studies|holly young|2043-03-07 03:52:18|2033-07-28 01:11:14.500349492|2010-08-03 +77|-6884|-624029057|-7409653086454030336|39017.19|-2245679.39|-997439424357.757812|false|debate|irene robinson|2077-03-18 03:11:00|2040-04-20 17:23:11.66448920|2025-08-31 +-101|12411|-1940205653|7348598907182800896|43885.62|-4414072.29|-1555511953931.052246|false|american history|david xylophone|2029-10-21 01:48:10|2043-08-31 14:12:30.675070864|2085-10-24 +-57|11804|-496915240|-7362189611124563968|-8203.40|3975044.25|1092860346014.425781|false|chemistry|oscar allen|2042-05-21 21:47:45|2031-01-19 14:17:45.573707182|1978-09-30 +59|27945|474795096|||-1041376.93|1049208781647.408203|true|zync studies|mike young|2042-08-04 13:26:56|2076-09-18 22:30:21.635931282|2100-08-21 +|6490|-1819075185|2465|271.01|-3315662.78|178512873486.944336|true|philosophy|luke miller|2058-11-13 12:26:19|2055-04-29 01:32:52.338899070|2072-05-20 +59|-13144|330302407|350|4198.95|-3293708.78|-837074147937.393555|false||calvin davidson|2048-05-03 07:09:22|2016-02-14 09:35:08.980648052|2050-12-28 +-58|-8895|1895751360|2619|44281.94|-3137628.74||false|topology|ethan underhill|2067-05-09 03:59:27|2070-01-06 00:22:49.266686299|1988-03-03 +41|-5283|-1322736153|3722|33698.34|4876900.77|2424764462849.715820|true|wind surfing|jessica polk|2016-04-22 18:45:33|2078-05-27 02:08:56.801166778|1997-08-03 +56|-22608|338805871|898|4188.81|4744554.21|730519058324.112305||mathematics|priscilla falkner|2069-12-21 21:41:25||2070-01-08 +-56|10702|-1552053883|782|-38874.21|-1017367.57|4561020549763.021484|true|religion|calvin xylophone|2071-01-01 17:03:06|2016-11-14 05:12:35.708167457|2080-10-11 +17|-9585|-71433796|1780||509725.97|-1030876895734.564941|false|religion|mike johnson||2077-05-06 09:41:04.29662719|1978-11-15 +110|-24095|-1655396452|2186|-45152.50|3996472.52|888655102684.872070|false|quiet hour|mike hernandez|2065-12-16 23:03:21|2065-07-26 03:28:40.392848789|1991-03-29 +52|21673|-1066775085|-6921654334727036928|-9981.07|-1650150.10|-4371310034780.968750|false|history|katie zipper|2031-09-27 21:23:48|2080-08-25 23:49:27.604332416|2069-04-08 +-113|20052|-1447140800|4020|-22503.13||-4288708971525.778809||wind surfing|mike underhill|2079-05-03 00:37:57|2078-03-29 14:33:49.853013719|2043-01-06 +-61|28000|-178568841|8325227661920133120|-22983.25|1809174.68|-2297090489976.945312|false|history|nick quirinius|2069-09-27 08:08:25|2043-04-20 02:53:33.962471217|2044-06-19 +102|-31458|-1933192293|-7036607470351654912|-21380.15|1896367.69|1605659965343.057617|true||rachel white|2015-06-12 13:38:42|2068-03-09 14:21:05.750561437|2099-06-14 +-8|-25417|1961954939|7304839835188609024|-41942.73|191389.71|-4592978910553.853516|false|undecided|nick ovid|2035-11-09 10:25:30|2077-04-15 14:29:55.59700199|2010-11-12 +41|-10569|-745678338|8792059919353348096|-14404.47|-906177.24|326664391884.108398|false|philosophy|priscilla steinbeck|2034-04-20 09:29:51|2042-10-01 01:12:43.143080614|2048-10-17 +-41|4233|618321042|-8856821118526734336|-27396.30|4504910.53|180650253126.657227||debate|tom xylophone|2027-02-11 05:29:58|2066-07-09 11:19:47.657330816|1995-12-16 +-93|18820|825677248|8720504651219001344|9437.05|-4519097.40|-506526954412.187500|true|philosophy|alice miller||2077-05-05 12:20:54.799217277|2001-02-16 +33|-3103|371383749|1055|-43829.05|-3580973.49|3029406193241.257812|true|wind surfing|jessica quirinius|2026-05-11 10:04:20|2074-01-01 07:56:24.948489929|2096-02-29 +-95|26529|-223311809|1368|-19919.52|2770068.53|-2537836240149.431641|false|debate|gabriella miller|2040-03-14 14:51:41|2037-09-24 04:28:20.146749934|2102-01-22 +79|-28084|-1974972123|8736061027343859712|-28922.94|-2498365.96|-985441433336.760254|false||rachel laertes|2032-06-23 14:29:26|2023-01-25 12:10:28.866537625|2105-06-23 +70|6781|2125311222|7919597361814577152|47154.09|-1192322.16|-850435843660.583984|false|religion|alice polk||2065-10-31 11:02:12.417523639| +-1|22463|867587289|7381659098423926784|-29302.26|-2211405.89|1156004227362.394531|false|study skills|alice white|2038-06-11 11:52:35|2026-02-06 12:13:27.232943870|2090-01-01 +15|7392|869288953|8731960288562044928|41942.98|3624760.68||false|zync studies|alice miller|2058-09-06 21:08:50|2060-02-22 03:34:09.543087589|2076-07-25 +-57|-24942|824743780|-7594824008626372608|35489.13|1006528.68|-4120539026250.966797|false|geology|priscilla falkner|2066-03-31 07:55:39|2053-11-01 10:52:13.944770605|2080-12-02 +-26|-14810|-1407817977|-9178166810751909888|37075.67|-4876175.79|2103363485344.971680||chemistry|tom quirinius|2026-05-24 15:05:33|2014-12-24 04:57:37.782711517|2000-06-22 +-70|6484|-385247581|3083||-2073947.26|890806455827.118164|true|values clariffication|ethan steinbeck|2018-06-04 10:12:46||2055-12-17 +79|-15946|-1078397698|-8948335470186373120|-22913.97|227203.97|4075094455625.994141|true|industrial engineering|david robinson|2033-07-28 05:43:26|2020-05-29 18:18:23.223813235|1982-05-04 +-75|-17873|-837503491|2569|6361.99|1161789.65|-1726978053243.932617|true|values clariffication|quinn robinson|2045-04-18 18:19:14|2021-01-27 02:30:40.164402829|2017-01-10 +96||1660088606|823|-28084.37|-3275847.50|2762686693256.810547|false|american history|ulysses nixon|2070-08-11 19:10:10|2016-09-07 01:20:11.409060890| +-113|-30515|-922875124|259|4946.14|284363.03|-4858481689197.126953|false|kindergarten|fred nixon|2023-06-28 22:37:13|2049-06-26 22:24:15.711126823|2069-02-06 +49|3186|1636364987|8461498293348065280|-25371.38|-1184912.70|-993292644578.538574||education|alice white|2058-11-21 02:58:56|2065-03-02 04:53:08.176223587|1994-05-02 +63|150|1783034168|-8961059046745669632|||-1661232720992.700195|true|topology|quinn young|2038-09-04 07:44:08|2047-01-27 11:44:14.355445111|2043-02-21 +74|-21648|-1111937842|-8607195685207408640|-38757.30|4280929.21|-3715598460104.345703|true|joggying|irene white|2017-10-30 12:48:38|2013-03-25 15:32:17.128329365|2017-10-02 +79|3251|-125419186|-8754966081778565120|32512.77|1838279.26|-1177230386696.095215|true||zach laertes|2059-05-28 03:36:52|2049-09-18 13:52:36.954456644|2013-05-30 +96|-10126|-41864614|-8418913260807217152|-41581.70|3132782.56|-4989436752632.237305|true|opthamology|victor king|2025-08-12 00:24:07|2025-04-07 14:05:54.461436636|1987-03-18 +|-6474|706823078|-8877053610728161280|-32523.08|2431805.10|959431399353.079102|true|joggying|calvin ovid|2024-11-30 09:52:29|2026-10-20 13:44:56.808161722|2038-08-30 +-85|24858|-1062159435|-6935548339131138048|38973.86|-347553.95|3408594399945.599609|false|biology|oscar zipper|2026-05-18 20:07:36|2018-09-17 07:34:48.856373956|2044-03-13 +-44|30883|1452244326|-8219876839318716416|24860.92|-3405708.68|-3460325348420.880859|true|education|wendy quirinius|2038-08-09 15:24:29|2054-12-15 15:20:18.843218245|2061-01-18 +88|-9076|239078089|1132|28538.60|-735298.99|-4690879292129.750000|true|wind surfing|zach quirinius|2071-11-14 00:07:27|2047-06-15 18:39:40.150298534|2079-04-15 +48|23320|-1948257321|1337|-43790.15|3928891.37|3704624417356.896484|false|joggying|tom hernandez|2053-10-13 18:39:56|2026-03-31 20:18:01.770207236|2034-08-29 +-98|7197|492120544|1341|-2808.88|-686072.73|-803606583331.628418|true|education|tom xylophone|2015-05-08 21:19:10|2077-10-24 08:05:04.192595595| +72|7058|-1563676282|976|-3004.90|1860479.52|-706916831724.306641|true|joggying|victor polk|||2058-01-01 +38|-14661|195281533|-7557017910095650816|-9383.79|-2348124.75|4636426753661.630859|true|mathematics|tom thompson|2067-05-15 15:21:33|2068-10-26 13:18:32.366613022|1975-07-07 +16|-28061|-292588406||23350.65|4918613.06|-3364353490553.036133|true|nap time|calvin steinbeck|2054-01-11 20:28:18|2037-02-15 00:30:35.900105726|1970-08-29 +-104|19636|-1344287228|-8683802826440105984|8738.40|-1978806.64|4981312863247.886719|false|biology|holly davidson|2017-11-02 22:33:43|2061-05-26 11:57:49.809511168|1993-04-14 +-59|-2113|-909024258|1845|41057.97|213462.82|-323293361486.882812|false|xylophone band|ethan carson|2049-05-23 19:46:12|2079-02-24 16:42:08.448187732| +70|-13309|1173098061|1965|1703.69|2429715.56|-2779513442254.710938|false|joggying|calvin brown|2079-05-18 11:45:16|2018-04-22 08:38:53.938611457|2020-02-01 +19|-17269|-1091003492|-8104684579106914304|-1914.23|281948.98|2761939531515.835938|true|kindergarten|holly robinson|2044-05-20 18:29:37|2037-05-21 10:21:17.589154522|2003-03-13 +-96||1768399622|1835|5444.81||-137609076468.194336|false|xylophone band|ulysses king|2031-03-19 20:16:45|2034-05-25 03:38:47.816839184|2064-05-20 +-28|10916|849859032|7345991518378442752|-3117.17|1217133.63|-3849320444967.645508|true|linguistics|irene quirinius|2060-08-22 17:37:02|2013-09-04 14:35:51.471949124|2092-02-05 +10|19458|900992177|3212|36450.28|1766157.28|-1882794242083.676270|true|yard duty|fred king|2042-03-05 10:51:23|2075-06-04 16:36:19.586166561|2094-02-10 +52|-18283|-1969751342|-7081500255163727872|36032.40|4272798.19|-3071209073548.714844|false|opthamology|victor ichabod|2034-03-30 05:28:25|2026-11-18 10:38:29.612055317|2045-12-20 +125|16516|161210995|1074|-24350.82|2460973.22|921740273811.693359|true|linguistics|priscilla thompson|2024-07-31 16:19:23|2052-06-19 19:48:51.128000435|2031-11-09 +62|30936|1321678350|8372588378498777088|1059.15|-3300550.22|3839852559580.664062||study skills|ulysses ovid|2049-11-14 21:22:02|2034-12-30 19:24:13.874541216|2037-11-28 +-56|-23387|-1811563127|-7593363318079610880|-17859.26|-4870696.94|-1931143655238.862793|false|philosophy|jessica hernandez|2017-09-26 18:25:13|2023-12-17 02:12:59.770265368|2026-03-19 +97|10217|1338047392|-7451660755269853184||587440.58|3232315873104.952148|true|undecided|victor ovid|2041-06-18 17:20:25|2029-12-16 14:12:32.298550349|1987-03-13 +50|-12085|-1954890941|1983|-23284.45|129671.37|-2210750828357.674805|false|values clariffication|gabriella van buren|2055-07-03 23:20:38|2018-04-10 00:19:11.305802202|2103-07-27 +52|-13805|415234946|8514851182589771776|-39177.49|3119458.07|-4784612318346.788086|false|forestry|bob brown|2019-06-19 22:27:39|2065-11-12 11:35:37.144557823|2041-11-16 +104|||1864|13318.31|-3863136.50|-4419006380365.076172|false|joggying|luke steinbeck|2057-07-21 14:03:34|2026-03-06 18:45:53.361673899|2031-03-23 +-81|25986|-1643714866|8463868417649524736|1656.77|-1600629.58|-4804769067544.612305|true|religion|luke ovid|2019-02-21 09:30:51|2051-08-22 00:41:24.173555438|2041-04-15 +114|-28840|1335803002|3094|-22269.41|1188501.65|-2026377024912.235840|true|mathematics|david young|2054-03-31 08:13:24|2037-11-06 13:20:44.525490319|2093-08-21 +28|27340|-1117019030|-8858063395050110976|17746.57|-370973.48|3665311301420.927734|true|joggying|calvin xylophone|2016-06-21 09:03:55|2038-11-18 02:43:13.946089513|1996-04-09 +87|6875|-980869630|1981|-8269.53|-680305.04|-2046202768950.067383|false|forestry|oscar falkner|2054-03-28 23:22:20|2057-06-06 19:13:12.719272020|1984-12-16 +-38|19894||-8140349174954893312|42897.60|-895172.87|-2612690969145.852051|false|religion|irene ichabod|2029-06-18 22:32:24|2069-05-05 07:02:12.743691084|1993-05-09 +-94|9948|-455114104|-7041362811802148864|35927.66|2125413.96|928631125022.398438|false|american history|sarah zipper|2075-08-11 09:15:18|2025-01-16 11:03:58.820006581|2047-04-09 +90||1709983738|8972161729142095872|27727.80|3584555.68|2487331275679.380859|true|kindergarten|wendy zipper|2075-07-22 03:37:27|2070-11-18 17:07:35.641105448|2005-06-22 +-55|-4877||7989119273552158720|49881.20|-729941.08|2604782698166.197266|true|education|mike van buren||2059-09-21 17:36:20.371130502|2082-11-28 +-42|-14423|524808|2469|48110.32|544211.41|-1335268776571.894043||biology|calvin van buren|2065-03-12 01:32:10|2054-04-18 22:43:02.130196097|2042-01-13 +-22|-15276|819875108|1481|18012.46|-1803815.34|1672426848879.915039|false|opthamology|irene underhill|2046-07-20 14:26:45|2015-11-05 19:57:02.993769202|2040-11-12 +48|-921|2018442973|-8566856504746352640|-15509.73|3968585.18|-4738889659221.818359|false||tom falkner|2039-03-13 04:17:53|2045-10-21 23:06:17.401033240|2022-09-20 +-118|22006|3999930|8272001752345690112|1419.23|-1029930.54|2861569157429.500000|true|forestry|fred thompson|2054-05-09 19:08:51|2068-03-21 22:59:16.347228701|2104-05-09 +-42|-24805|-632803945|-7094827141662539776|44835.25|3437763.92|2825770424376.301758|true|kindergarten|xavier white|2042-03-19 07:36:49|2036-05-11 16:15:05.180723604|2068-05-04 +-7|28940|-180280420|8396433451610652672|-29405.71|-1689827.09|249301764043.821289|true|mathematics|bob laertes|2062-11-29 07:35:17|2070-10-14 23:45:26.608542925|2070-10-06 +-67|9943|-306214368|-7679894005808693248|-24100.54|4314411.12|-768850812250.221191|true|history|mike steinbeck|2068-11-29 19:57:50|2019-01-09 18:20:03.638956806|2101-06-04 +98|-21357|-1109134719|8613562211893919744|18869.43|-649318.26|-4480567003096.353516|true|philosophy|katie hernandez|2058-03-06 17:09:43|2072-11-27 15:20:11.984907349|2065-01-16 +-105|-20835||3407|30691.28|-1609324.97|-1997137164045.063965|false|history|katie ellison|2045-12-30 05:36:07|2070-06-27 19:59:42.330026099|2072-06-18 +-77|14144|-897622427|7686992843032010752|31772.98|-4662600.66|4055930472890.203125|true|linguistics|tom van buren|2044-03-25 19:36:16|2014-02-02 02:41:41.974712738|2034-12-19 +-124|-30109|-249150336|1048|-49638.39|2822393.96|-3764856023597.680176|true|wind surfing|mike allen|2069-02-23 02:01:18|2023-12-21 20:05:42.508066288|1987-06-11 +-126|-21180|2032271149|3507|9204.15|4100590.22|3343985992703.899414|true|study skills|mike falkner|2032-11-01 08:01:25|2015-05-19 00:53:07.99721897|2034-12-26 +120|-11083|-958165276|7784169796350730240|-32134.41|-1761257.85|1246740864978.441406|true|forestry|calvin johnson|2045-07-19 17:27:46|2060-02-07 10:38:05.44019465|2068-06-26 +72|24446|-1312782341|8551446856960942080|41033.78|-4517017.97|3110337503689.812500|false|american history|ethan robinson|2036-09-10 06:35:49|2017-09-09 22:51:48.511198436|2078-04-27 +11|-4720|-1134786190|3467|28036.67|-3143597.92|-503265260653.940430|false|forestry|katie allen|2034-02-04 09:52:49|2077-04-15 04:42:04.380805925|2068-01-04 +|7197|-1001529082|1458|-971.42|2454201.35|-2783180271476.268555|true|quiet hour|wendy nixon|2074-12-13 00:53:35|2025-04-24 14:10:28.455511332|2029-05-09 +121|26503|-1081328752|213|38702.92||-4432628537861.625000|true|geology|luke johnson|2067-09-14 23:24:55|2066-09-25 14:08:46.769961227|1979-01-10 +65|6240|115111911|735|33453.37|3643181.05|-3331678542651.878906|true|yard duty|priscilla allen||2071-02-20 16:23:36.179620819|1976-02-20 +14|18823|1918230406|9190466190353661952|3909.53|4714913.17|-1411399885652.357910|true|undecided|||2076-02-09 18:31:10.234467554| +-35|5266|-588160623|-8280276629934981120|-45823.61|-3282253.15|-913286552286.223145||geology|david van buren||2069-08-05 13:35:53.308725178|2070-02-06 +72|17394|1467284000|-7895991410072928256|-44874.00|1596795.95|2131825157208.311523|false|history|victor nixon|2026-11-11 17:07:09|2038-03-25 15:28:30.820737074|2021-11-16 +-1||-202409329|-9145593811310010368|44034.44|3326020.44|-1461861566954.816406|true|history|bob zipper|2034-06-12 05:53:28|2052-01-30 16:51:36.858272776|1974-12-30 +-57|896|-251576563|8059284960252731392|36102.20|-4122760.71|844981812716.021484|true|yard duty|luke laertes|2039-12-08 11:56:53|2074-05-17 16:44:26.822467862|2094-03-28 +-112|22505|-1324624386|367|-774.06|-2188747.41|-4462901033248.450195|false|undecided|oscar young|2019-07-26 08:57:51|2017-09-04 17:01:10.939761678|2007-02-25 +-113|17129|735600165|7614435638888210432|32432.05|-3424959.17|-4912660617940.467773|false|linguistics|katie thompson|2072-07-09 05:03:16|2027-12-17 02:48:27.457330747|2066-05-07 +-94|-30397|1336842978|9174894805640142848|49220.52|923281.97|3525110451298.835938|true|religion|oscar steinbeck|2053-11-26 21:39:37|2036-05-19 14:03:24.54912944|1995-06-02 +|9127||-8941201923743703040|-49633.13|-3573744.43|4866596139192.544922|true|american history|wendy johnson|2023-05-04 00:46:03|2059-11-09 16:09:16.564739548|2060-09-15 +-33|-30100|2144365072|1075|5131.58|4923477.10||||bob nixon|2024-12-17 00:58:20|2039-11-08 08:00:26.73617104|1984-12-19 +-98|20179||7492436934952574976|-38464.02|-4213531.63|-1107028386124.575684|true|yard duty|holly hernandez|2074-04-28 17:44:36|2063-11-06 06:22:44.6225769|2093-06-28 +19|24718|206454818|-8714995808835444736|-1117.94|927068.77|2436455705629.079102||zync studies|rachel allen|2056-07-19 22:03:52|2070-12-29 12:33:01.98160945|2009-04-12 +73|6320|618991041|7782245855193874432|-3179.76|4428479.65|-1766529550238.971191|true|nap time|quinn underhill|2027-03-26 09:37:03|2029-11-16 13:39:01.338991567|2025-01-09 +13|-9735|1216287232|8525894870444638208|-15016.32|680005.58|3656798201330.459961|false|joggying|jessica polk|2030-10-26 01:34:23|2058-04-21 17:20:17.602770253|2027-08-25 +-21||-1319753324|-7661192563533062144|1711.74|3518736.19||false|mathematics|yuri ellison|2048-08-17 16:08:06|2014-05-23 03:03:06.298424630|2044-07-10 +-90|-18928|||18298.73|563291.79|-1649989772280.555664|true|undecided|zach garcia|2035-01-29 13:36:22|2020-08-14 00:42:19.544792085|1996-01-08 +2|11664|-618505946|8995562121346260992|18316.47|2461394.35|-2061551909115.699707|false|religion|nick white|2050-10-24 09:24:48|2031-10-08 17:37:41.971088663|2094-10-25 +-77|7153|1905812339|7626715182847090688|-11311.74|-4552908.75|-3911290151123.445312|true|joggying|oscar polk|2056-09-13 01:19:58|2021-07-16 15:35:10.320557033|2010-02-17 +94|18535|1316369941|8146492373537660928|36988.38|1721002.37|2462069544028.686523|false|topology|rachel ovid|2019-09-21 21:25:49|2036-11-12 20:08:29.22887887|2032-11-27 +-12|30154|879500678|7682327310082531328|11783.63|-4207905.62||false|debate|mike king|2059-09-03 09:28:25|2063-01-16 10:26:39.947556321|2026-10-31 +-17|3226|1556919269|2968|42196.17|-2451091.00|3876386740696.417969|false|american history|yuri white|2071-04-10 11:05:18|2025-06-10 10:58:45.628035336|2011-03-02 +-100|1211|1304431147|7309156463509061632|-5463.47|-3681795.57|-4673125472245.232422||yard duty|priscilla thompson|2045-08-28 21:02:47|2030-11-20 12:05:21.353091621| +-53|7537|-316678117|1955|-37373.34||-2750380640224.783203|true|american history|holly brown|2064-03-24 07:42:48|2057-04-29 16:14:28.328830406|2060-09-08 +-99|8709|485105934||-36985.66|-1599375.73|2929377009755.462891|true|mathematics|irene laertes|2069-10-02 19:47:09|2038-02-24 19:37:41.765155541|2059-03-27 +93|505|-1096013673|7022349041913978880|19589.89|4262793.77|2004853350974.933594|false|joggying|nick falkner|2035-06-07 07:11:03|2072-09-16 14:06:47.711300624|2011-11-02 +105|7066|-1669227632|7045967493826387968|-10913.07|2599993.53|-396014088839.784180|true|nap time|calvin robinson|2030-03-31 02:18:35|2069-09-11 23:51:27.564297669|1998-11-04 +114|364|1328225044|3006|-38855.31|-1381463.11|-414382889388.811523|false|undecided|mike garcia|2073-09-01 12:10:50|2057-04-14 17:54:10.432274393|2047-01-01 +-90|-8685|919363072|65|3505.36|2568021.21|-3721923641458.708984|true|history|mike zipper|2056-05-01 00:25:46|2048-03-07 19:09:13.934285589|2053-12-15 +-50|-8286|-303747347|8168742078705262592|8746.11|-172.75|-439942020547.228516|false|topology|ethan nixon|2034-08-05 20:00:57|2070-03-29 01:10:47.734976157|2034-12-01 +59||1309976380|7212016545671348224|3338.18|-2832523.12|-2630495393711.740234|true|topology|victor davidson|2037-04-04 00:12:45|2060-06-21 08:52:55.142356530|2044-04-08 +-49||503752931|8079573715140485120|41917.77|3087402.10|2544461831013.400391|true|nap time|irene miller|2028-04-10 21:25:47|2067-08-19 02:13:08.73237559|2094-12-05 +-91|-10452|771827308|3965||-26770.97|3302343687377.344727|false||luke white|2077-08-04 16:05:43|2062-07-09 21:09:41.190969035|2030-07-31 +29|24105||8555933456197828608|-39584.52|-3148113.96|-3288325057617.243164|true||quinn zipper|2060-03-15 18:47:53|2038-04-23 02:03:51.16558012|2104-03-09 +|-14593|1552351592|2903|-34513.70|571155.32|-2582720634796.942383|true|education|gabriella underhill|2027-07-18 07:26:54|2078-05-25 05:22:02.627179287|2079-09-03 +2|-28551||7648729477297987584|-7246.75|1672329.45||true|history|zach miller|2060-09-17 04:27:39|2080-06-13 21:51:01.723250812| +92|16270|1678220496||24969.88|4258335.94|2436944648874.294922|true|opthamology||2071-10-31 06:32:07|2031-11-22 17:50:26.879890489| +-91|7579|-599396052|8223732800007864320|32479.80|-1379817.47|-4363720327233.622070|false|mathematics|quinn zipper|2053-08-03 12:28:58|2044-05-04 09:20:03.435933385|2105-05-15 +113|27982|622925063|-7412431471807283200|27846.84|-4799720.31|1201203871144.684570|true|education|rachel miller|2023-08-10 08:06:20|2041-09-10 10:42:44.371838149|2047-04-19 +13|23076|-1493282775|2560|-33310.59||1075000742069.072266|false|quiet hour||2059-11-21 19:51:29|2060-07-25 19:29:26.553466747|1972-05-27 +0|24600|492639283|2988|-43127.18|3448574.72|4019403441222.486328|false|xylophone band|bob van buren|2050-04-11 14:17:31|2072-06-28 09:30:55.249854691|1992-08-12 +63|-28374|1938788165|1243||-2660580.87|-4486948076141.814453|true|debate|quinn steinbeck|2066-05-13 21:20:53|2027-03-03 05:50:34.618523994|2076-09-27 +77|26749|290921475|1837|-15170.73|820623.92|-1288092098718.465332|true|american history|tom thompson|2034-04-05 15:57:02|2019-02-26 13:01:35.124414919|2004-11-01 +-72|-4451|-44426049|7014537632150224896|-5534.73||3805841621723.792969|||victor polk|2052-01-03 17:23:12|2013-11-30 17:54:56.483304338|2004-08-08 +-114|16062|1001732850|3747|-17473.64|3821933.91|1957794439377.628906|true|yard duty|yuri king|2075-12-22 04:38:30|2062-03-15 00:13:49.777150036|2053-09-13 +38|-28867|-675125724|2682|-19280.61|-2777246.20|-2757792116831.687500|false|xylophone band|nick garcia|2019-09-08 16:20:00|2076-01-24 15:05:41.840638133|2082-07-16 +52|-22923|1815882183|8073733016154431488|16599.35|3735828.94|-2623555786538.993652|true|forestry|fred robinson|2022-08-04 04:25:39|2030-02-01 04:32:16.711994446|1992-01-04 +-44|-24561|-2032576637|2938|5439.14||-1287352845163.880371|true|chemistry|quinn nixon|2079-12-24 20:06:15|2036-12-17 21:09:27.36962995|2091-08-21 +-114|101|742059797|1312|5409.29|1360964.78|-1132833175493.459473|false||quinn quirinius|2062-08-23 19:08:32|2021-12-24 21:33:32.33570035|2042-06-28 +80|-398|1614297403|7006803044329021440|19206.68|1631603.75|1928583868733.362305|false|quiet hour|zach falkner||2049-07-01 05:55:21.266193316|2050-08-22 +101|14261|-1831957182|7701723309715685376|16762.34|-4076580.24|-2252083222096.885742|true|geology|sarah garcia|2070-04-13 10:50:30|2033-03-22 15:50:00.469249022| +100|27999|550186724|7528074274555305984|-35626.28|2745675.76|4328216287180.062500|false|geology|jessica polk|2061-11-14 01:18:50|2074-11-13 16:09:10.889730571|1996-04-04 +100|-26433|1752520642|-7532751268425261056|16480.71|4007230.14|-1044307328651.719238|false|opthamology||2043-05-29 05:54:38|2074-02-12 05:39:52.488342753|2028-06-02 +111|4989|1251556414|8000440057238052864||3463290.18|4016113189650.382812|false|wind surfing|xavier ellison|2080-02-28 20:08:17|2077-10-06 12:41:21.147411339|1997-12-15 +-116|-18867|661659208|-7964801953178091520|-24442.39|-118153.32|1736698204716.517578|false|topology|mike nixon|2051-08-08 05:45:58|2071-08-16 07:04:53.257509570|2002-09-08 +10|-27667|-121162464|2846|18054.50|-4206613.37|-600768837741.725586|false|linguistics|luke davidson|2039-02-06 13:13:48|2042-11-07 11:25:02.115910277|2004-10-29 +-8||144499388|8723248113030782976|39473.99|-2235351.00|-18073418814.629883|false|joggying|zach miller|2062-05-31 10:37:48|2028-08-15 23:55:00.469898799|2033-12-07 +|-6396|-1425942083|7440265908266827776|48921.57|-3425386.51|269520612020.599609|false|zync studies|katie zipper|2059-04-29 03:48:13|2015-12-15 17:22:12.144511972|2039-01-27 +84||1044196568|927|24507.82|1204458.07|4090713174235.851562|false|opthamology|holly white|2025-08-28 21:46:05|2070-08-29 00:11:17.90785157|2079-09-17 +112|21991|-507250351|-7063777488249085952|-44754.93|2554931.12|655328886793.391602|true||ethan king|2057-02-14 01:22:09|2078-12-10 23:03:32.538772565|2094-11-21 +-11|-16362|1002519329|9194388393453060096|39211.56|-4063103.95|-3072034659571.372070|true|forestry|mike king|2048-08-11 06:18:24|2041-11-11 12:40:59.941618852|1974-10-20 +-72|22837|-1366059787|7720187583697502208|-48151.12|-3450914.16|-1948883975974.809082|true|debate|bob ellison|2080-01-23 23:18:30|2062-11-08 03:12:16.244942252|2069-10-29 +42|22278|-1210550573|8557218322962644992||-592807.94|172454528768.888672|true|debate|bob king|2065-06-23 08:15:17|2043-02-10 01:14:31.94775978|1997-10-08 +37|-13601|-1541281934|950|-47881.13|3061715.02||false|forestry|bob quirinius||2064-08-05 14:59:22.721494566|2007-09-18 +-119|26880||2189|42902.58|-1855478.06|1876416410033.172852|true|joggying|luke falkner|2026-01-04 07:40:12|2038-07-03 12:41:54.561417526|2023-06-16 +35|15644|-2041825946|1371|19463.33|2808651.01|-2817350314681.874512|true|forestry|jessica falkner|2039-04-24 13:30:59|2038-04-25 05:54:15.298921853|2035-08-02 +-18|25621|-533281137|7370803940448305152|1823.12|-3105299.85|1337878505653.194336|true|geology|jessica allen|2020-02-26 14:46:30|2054-04-19 20:08:03.415116247|2080-04-17 +-62|18827|1332042427|-8914039133569400832|22457.88|-390811.18|1058172512204.009766|false|undecided||2023-11-02 23:13:38|2026-08-12 02:24:05.267416889|2053-08-25 +31|-1900|-886741158|3663|43963.59|-922201.79|2965135330582.456055|true|forestry|nick quirinius|2049-08-24 23:52:43|2017-01-17 05:42:20.191687490|2036-05-02 +-85|30376|1951869763|2341|14523.33|-4986916.22|369571844908.663086|false|debate|yuri brown|2021-12-17 23:49:47|2055-07-19 00:17:37.54325516|2001-01-18 +63|-22184|1650676897|-8877431933441327104|-9484.98|-233929.16|3503864204687.659180|false|zync studies|sarah nixon|2055-06-30 21:18:55|2060-01-10 06:54:39.966397150|2061-09-04 +||1996235654|8171188598958407680|9466.25|490686.49|1931170057951.732422|false|geology|mike underhill|2039-11-23 03:20:55|2049-12-20 18:53:04.478116336|2097-01-20 +119|-14405|350802495|8525336514806317056|17381.64|4634177.04|4944206888507.451172|false|topology|ulysses carson|2036-01-10 08:06:52|2070-01-31 23:05:08.931249487|1987-08-11 +99|-3257|142722637|1608|-24219.34|-4696898.06|629224139568.691406|false|zync studies|xavier quirinius|2022-10-11 20:58:33|2038-09-26 07:31:46.33104093|1977-09-10 +-91|20349|1796486238|-7094189393339678720||-1535920.17|3324497425612.911133|true|yard duty|bob nixon|2014-10-02 20:51:31|2040-04-19 13:25:58.223437075| +-78|-9094|-1538978853|1752|-32761.54|2382823.04|3403982716083.717773|true|philosophy|||2051-07-08 04:17:48.731827233|2033-10-25 +-75|15532|1333148555|3084|21394.08|2588790.34|4071297905096.535156|true|xylophone band|katie allen|2067-09-23 04:05:50|2038-08-29 23:42:20.489635134|2036-07-27 +126|-10629|-362603422|3673|35461.58|2528874.81|4610594583850.691406|false|values clariffication|rachel falkner|2023-02-22 11:26:15|2013-09-19 02:04:12.907311135|2066-04-21 +86|32547|1566958573|9169248521377374208|-23486.84|2372148.79|2181996896360.196289|true|wind surfing|jessica allen|2018-02-09 10:50:39|2059-11-09 10:41:15.548959953|2039-07-16 +96||196980893|-7866079955473989632|-11204.72|-437773.76|1822512356055.412109|||mike johnson|2058-07-28 02:16:17|2032-12-27 00:22:34.913934544|2039-02-13 +-91|3796|-1949698319|-9004892183139811328|-37855.65|-722781.48|-1616992868522.899414|false|history||2023-11-13 14:49:42|2038-07-27 08:30:35.90734230| +31|26298|596595603|1892|-22485.06|3408030.07|801948999916.781250|false|geology|tom johnson|2060-04-25 19:34:18|2061-07-29 00:57:25.191363010|2096-04-04 +0|-17840|1300798829|6928080429732536320|-37174.23|-1136523.28|-419767614914.228516|false|american history|katie garcia|2058-04-24 23:56:54|2040-06-20 20:48:02.848038196|2021-08-27 +-66|-23325|-1050029724|-7623047151287754752|23314.68|-4551669.79|-4139576769987.520508|false|biology|wendy king|2016-07-20 20:59:47|2070-01-01 11:42:09.518048339|2084-04-30 +12|21415|-270683864|2492|-16252.33|4564437.09|2651265482813.621094|true|biology|zach robinson|2025-10-26 04:01:53|2037-10-11 06:54:47.165238299|2098-01-28 +-122|-15748|1225312439|-7695491171376291840|28830.89|-4919238.40|-2404376113558.761719|true|linguistics|alice ellison|2034-10-08 07:09:50|2032-10-21 00:11:43.739687278|2093-03-02 +123|-14928|-507955215|-7797151404935618560|27514.87|-725071.33|1433886080161.706055|false|study skills|fred xylophone|2038-11-03 19:47:00|2063-05-26 08:16:08.948060507|2023-08-16 +-55|23205|1377144283|8208354137450766336|11166.57|-475828.89|-2586759307363.770508|false|joggying||2056-12-06 04:33:47|2029-03-25 11:29:27.458800505|2052-11-08 +18||1056997296|-7395553021620731904|-17607.35|3248252.23|-1769756977914.625000||kindergarten|jessica laertes|2024-12-17 14:31:48|2030-03-18 04:44:48.450861752|2010-07-28 +-26|-14223|1524010024|-8453491903284994048|10070.35|-4865960.77|-666807424402.868652|true|zync studies|zach xylophone|2078-12-23 06:47:29|2051-07-17 13:45:43.90586019|2006-05-06 +69|-30974|-1938290238|-7140008543769042944|21635.46|4758510.88|2531109393452.517578|true|undecided|jessica allen|2031-07-16 13:24:59|2077-12-14 00:47:31.918822245|2023-12-23 +-105|-18269|922373046|2724|-16100.60|-1222437.31|4712395084916.033203||forestry|nick miller|2065-11-13 12:07:18|2038-07-06 22:45:01.365350444|1987-05-18 +120|-4507|-1006768637|3443|20453.01|517019.66|-2741137648843.547852|true|biology|mike xylophone|2026-04-02 04:46:51|2018-11-19 14:31:22.984247686|2011-11-04 +-36|18439|-1180153422|-7512297136103800832|12541.07|-89508.07|1932456148150.265625|false||nick ovid|2032-02-26 03:24:31|2034-09-24 06:39:52.148462757| +-71|-21820||9136234417125007360|-344.10|-4368885.38|-684785854994.736328|true|nap time|wendy young|2015-05-31 19:22:04||1999-04-13 +95|-9528|494570380|8192304692696383488|26081.03|596768.38|-3722020696135.146484|false|industrial engineering|jessica ichabod|2031-10-27 03:13:46|2064-10-16 21:17:40.991676060|2043-03-22 +-50|16693|758926227|8199513544090730496|4474.55|45041.27|1263477396015.986328|true|values clariffication||2069-07-20 16:00:28|2046-05-27 10:37:11.819233302|2048-02-27 +33|18430|-1850492820|311||-2016503.04|3247384437414.133789|false|xylophone band|victor miller|2077-03-07 06:54:23|2039-08-04 16:56:55.325072009|2092-07-02 +33|-20343|1802498539|-8488247955875618816|-29303.04|-1890856.20|-3463738392057.429688|false|education|quinn garcia|2050-11-23 23:59:12|2044-11-08 21:45:24.255164508| +40||104004730||-16275.03|2426747.55|-3021968566495.978516|true|wind surfing|holly zipper|2020-11-10 22:32:59|2037-04-10 10:37:11.57768325|2046-05-02 +-32|8407|1103878879|2540|-26808.05|3807549.41|4657041550408.074219|false|zync studies|gabriella xylophone|2056-10-01 10:15:41|2071-10-08 14:25:57.523825353| +113|5011|-310343273|586|-41183.23|-1362689.39|2787470317427.462891||chemistry|holly carson|2033-07-01 04:10:31|2061-07-11 22:31:08.650284032| +-28|26108|-520725912|-7444070205513138176|-39827.23|-1034617.82|1315126089570.455078|true|yard duty|victor king|2051-12-04 23:17:35|2076-12-13 04:56:16.684586095|2030-03-17 +-39|16858|-540820650|1141|1528.37|-296682.71|1883927511605.208008|true|philosophy|sarah davidson|2016-08-04 09:09:08|2028-09-08 18:31:21.297991583|1991-05-05 +119|-12605|2017314998|-8076479329071955968|-42478.42|-1960693.57|1876586582839.436523|false|topology|oscar miller|2044-06-18 19:36:31|2045-03-26 02:55:54.860474103|2066-07-15 +-121|-11956|-1622653291|3103|22234.29|2234574.75|-3286846428382.545898|true|joggying|oscar hernandez|2055-08-05 22:01:21|2063-11-05 16:27:28.810214216|1980-04-16 +-17|-12575|-1655030261|-7629401308029976576|-37573.41|636487.51|-1629367133219.616699|false|opthamology|oscar ovid|2022-03-01 15:36:43|2052-03-07 22:20:20.205649486|2019-09-21 +37|-14093|-828522499|-7507424948896415744|17128.06||-1526420376110.131348|false|undecided|priscilla quirinius|2046-01-07 07:13:43|2031-05-20 08:58:10.221063212|1994-01-18 +95|1911|829055499|2821|-10616.79|4955854.91|2648891009461.742188|true|undecided|mike steinbeck|2017-07-24 13:54:39|2018-11-19 00:30:46.951990466| +97|-12111|44628821|2017|46220.99|4937500.66|-4092236654348.724121|true||gabriella carson|2051-12-29 12:24:40|2081-01-30 03:46:20.707511017|2067-11-07 +-19|-8781|187718349|1134|-16918.24||-327614661830.679688|true||quinn thompson|2079-04-26 14:18:50|2035-03-05 02:02:29.658383331|2057-04-20 +30|5683|-414207254|347|-43541.79|146599.48|592881531340.800781|false|study skills|quinn carson|2054-10-16 19:16:08|2044-07-24 23:22:06.336643166|2003-05-03 +-108|-25959|1686537335|-7246123871306244096|-39465.61|-2661928.62|1241888355251.284180|false|values clariffication|zach quirinius|2060-07-13 06:05:44|2055-11-11 06:13:54.437966770|1979-10-13 +42|-7949|-244778184|2020|-32623.47|1298373.20|1029037158625.279297|true|values clariffication|luke underhill|2020-12-24 08:38:51|2042-09-09 06:54:14.918515325|2043-07-14 +68|-2441|-1545572711|1693|-16730.94|663322.06|4416782454362.753906|true|philosophy|victor underhill||2050-08-15 12:14:23.659037544|2067-10-09 +75||37730738|2020|-34070.67|1370438.69|-850139042535.751465|false|wind surfing|david steinbeck|2080-11-21 21:39:04|2038-09-30 19:31:28.756844490|2031-02-19 +106||950545385|8570983266408103936|22758.70|-4201837.10|-1699424366875.845703||forestry|priscilla carson|2073-04-25 16:34:56|2030-04-06 22:45:20.584837930| +-88|27039|1002132158|2919|23490.75|2525524.66|3928772869222.925781|false|quiet hour|mike nixon|2019-12-11 17:04:01|2073-08-27 15:25:40.462946182|2004-10-10 +-50|11929|530274409|2283|47506.60|4940143.09|2238828032947.566406|false|forestry|fred quirinius|2028-09-24 09:24:05|2023-04-15 06:31:19.498177657|2003-07-14 +-59|-21662|1645753684|7534042483076857856|-43875.53|-334324.80|-2776240810769.579102|false|biology|wendy falkner|2055-12-22 06:56:39|2056-10-02 22:01:36.199925909|1972-06-11 +0|4408|-1890963712||26425.57|4759776.27|-1443059704302.029785|true|linguistics|tom ellison|2016-05-09 19:10:05|2077-04-19 15:53:16.473585161|2084-09-28 +-10|-5468|2081243058|8991442360387584000|44064.44|-2369659.40|36307500543.130859|true|||2019-09-06 02:34:07|2071-02-11 11:55:49.568890442|2037-07-28 +33||-841634659|-7240213957902663680|21211.00|-877153.72||true|industrial engineering|victor nixon|2023-09-08 23:08:11|2060-11-16 02:44:18.534642052|1970-06-09 +29|-2734|1712411993|3365|-32719.17||-4737288224098.889648|true|industrial engineering|quinn garcia|2050-01-29 13:04:08|2040-12-18 06:16:17.316160473|2091-02-21 +52|30457|734267314|1899||1888026.72|-700748526629.659668|false|topology|yuri polk|2049-09-30 23:25:29|2075-08-08 17:30:07.90714933|2003-11-22 +-27|||7199539820886958080|35226.37|1673550.29|-2699241246489.911621|false|yard duty|zach hernandez|2020-03-19 22:08:11|2052-11-18 00:01:35.951499290|2045-11-23 +-101|-24518|-1272838092|7165364563962191872|-48066.56|-3054747.78|-2131219068131.891113|true|education|gabriella brown|2079-08-27 22:44:32|2016-08-15 07:24:08.694827835|2044-06-02 +-55||-1240912824|8407869317250220032|-17548.91|4920882.43|3568874049008.385742|true|american history|david brown|2022-03-01 06:58:05|2018-05-09 23:42:23.404363629|2094-07-04 +-36|-17697|766737781|1489|2717.26|2404319.31|4568135577936.089844|false|biology|sarah zipper|2067-01-21 03:39:32|2049-10-25 18:40:50.369693130|2034-07-13 +64|-11848|663222148|2400|7793.51|-1080682.99|300292232080.962891|true|biology|quinn zipper|2073-05-15 02:20:24|2078-09-18 23:44:55.37728042|2004-07-06 +20|1728|-1168823523|-7037375807670501376|-6247.30|-4396836.00|262755105545.977539|false|american history|fred white|2053-10-13 03:00:08|2055-08-15 02:54:48.257689180| +-114|26181|-2098078720|7235109456886816768|-4436.80|4060435.47|-2474429353072.800293|false|values clariffication|ethan steinbeck|2023-10-16 17:26:47||2102-12-17 +-55|-25166|1743671220|8569030475428511744|-17287.81|1544285.84|-1190092871797.787598||quiet hour|alice quirinius|2076-11-25 09:38:01|2074-06-03 01:03:55.294216048|2098-04-23 +92|28003||2067|34633.74|-4930157.23|-3335555451295.846191|false|religion|mike nixon|2079-01-28 08:13:47||1980-04-25 +-65|21932|-314935936|8332670681629106176|-18622.62|-3155966.42|4868108659966.345703|true|study skills|yuri ellison|2070-09-12 03:17:44|2023-12-05 11:59:25.166367744|2051-01-05 +119|25931|-53587991|168|35658.46|-4157897.40|-2306979416991.375000|false|undecided|mike xylophone|2079-09-16 17:22:30|2068-09-03 16:21:05.587837732|2088-05-14 +-49||-693207128||-43769.79|2528398.51|-2079376598199.473633|true|yard duty|jessica xylophone|2021-12-26 08:36:25|2026-03-17 06:08:03.892844960|2053-02-08 +120|27101|1314531900|-8300526097982226432|48717.50|2372843.18|-3228353162536.237305|false|philosophy|jessica king|2058-08-05 09:43:07|2041-04-13 04:48:06.347111885|2064-10-11 +|-32263|1883400319|8854677881758162944|-42999.08|3938337.09|-4183585055390.999023|false|chemistry|irene allen|2019-11-07 01:26:30|2036-06-20 14:51:38.975932153|2073-06-12 +-75|-31967|-1979314577|8779073705407963136|41170.81|||false|opthamology|oscar underhill|2016-01-25 21:12:31|2018-09-13 15:53:28.93779373| +86|28396|-1880783574||-25979.37|-2652497.01|-249524600693.789062|false|kindergarten|irene zipper|2031-01-14 12:43:21|2076-10-27 10:10:51.289692366|2053-09-28 +37|20023|1260480653|7593521922173419520|42391.45|325699.09|-281050837679.686523|false|wind surfing|katie nixon|2024-07-30 19:49:55|2037-11-20 21:31:56.305630678|2032-05-05 +|10124|458190500|3555|-43980.79|-1410972.42|2719205864547.937500||american history|calvin xylophone|2048-11-02 15:06:02|2033-01-16 03:58:58.296488174|2042-07-02 +-89|22194||2968|31862.19|3002267.51|718239362696.628906|true|chemistry|katie hernandez|2041-05-10 01:44:37|2071-06-21 21:17:06.20060768|2016-09-06 +-62||-20639382|71|-5056.23|2248385.04|2325450822865.419922|true|yard duty|mike falkner|2048-04-01 06:30:30|2061-08-20 07:40:18.93677396|2080-02-20 +-54|31049|901084309|2393|23481.29|-3231060.30|-4760389487887.977539||history|jessica quirinius|2028-10-03 04:47:22|2066-03-24 14:12:25.94922705|2050-08-23 +|21984|1920863389|-8552393882631389184|-20661.88|2117914.48|-262663215330.007812|true|debate|priscilla xylophone|2070-07-14 14:12:48|2031-08-24 02:24:02.486874527|2100-06-10 +0|19001|1198172036|320|18663.96|-394282.16|4567968932801.917969|true|mathematics|ethan ellison|2020-11-02 00:34:38|2059-08-28 10:06:05.989463516|2071-01-29 +88|-12396|-1411407810|8782900615468302336|32641.27|-2101467.53|-2373302972664.106445|true||xavier brown|2037-03-03 00:01:56|2061-07-12 06:31:32.495489622|2028-03-11 +-17|32563|2042816480||24206.59|-3883539.95|2769310272723.864258|true|yard duty|zach steinbeck|2034-07-26 05:02:39|2046-11-12 00:34:51.872415094|1979-04-27 +92|-24208|987917448|-8490382417169408000|33571.66|-1153143.45|-2147955542320.723145|false|values clariffication|irene zipper|2015-10-26 12:17:26|2015-03-03 02:03:10.966601995|1993-03-17 +-47|23564|1483580941|2911|42508.07|1839055.85|4309368289572.041016|false|industrial engineering|oscar allen|2050-08-18 07:33:19|2068-11-16 17:13:39.739249836|1988-01-21 +-116|32324||1542|-32519.49|-1891257.69|-3357497966164.828613|false|zync studies|priscilla young|2015-10-11 13:15:20|2063-10-27 03:53:16.807003987|2021-10-07 +77|-30890||-8368269352975982592|-37870.40|-4424875.69|-2485766831660.250000|true|education|ethan davidson|2077-02-04 18:08:33||2066-02-09 +-16|-29722|-120692484|8979012655944220672|16015.48|-1558583.94|1798093982631.314453|true|geology|calvin white|2054-01-07 23:38:01|2059-10-06 21:40:25.109705225|1979-08-10 +72|-28682|-1937640350|-8028275725610909696|27820.59|4278117.13|3305435240339.917969|false|study skills|oscar robinson|2059-10-18 05:56:02|2016-08-15 14:19:12.999923248|2089-06-05 +-101|-28941|-1424770359|-7198372044947275776|-32523.67|840723.51||false|biology|katie davidson|2029-05-10 17:06:02|2026-03-27 17:04:14.921374328|2038-10-17 +-62|-16793|-656478771|-8425998949410889728|-15790.92|-1652348.22||true|joggying|tom quirinius|2018-03-08 07:01:02|2063-09-08 22:40:07.263038797|2102-06-23 +98|14331|-1026458834|8515682078777081856|28545.71|3259711.52|-4509980330742.351562|true|values clariffication|irene ovid|2036-02-20 13:27:56|2060-06-23 04:00:35.209320146| +-108|11811|1082837515|7359004378440146944|11265.92|-4077197.98|3301612877254.633789|true|american history|jessica carson|2063-09-12 17:06:41|2059-03-13 10:36:01.981783557|2070-02-13 +-6|-16647|1750433588|-7345562788132315136|-31541.83|-2723473.85|-4953353311913.595703|false|study skills|ethan ovid|2033-09-25 06:14:39|2016-07-18 15:13:32.628189033|1985-03-22 +-98|552|-1858443953|7060236714847412224|-45640.71|1417589.56|1093251681175.538086|false|xylophone band|tom zipper|2047-09-28 08:59:28|2058-04-14 01:07:55.788892889|2052-03-02 +72|11317|2018249426|204|11543.87|334348.22|-3211811412437.590820|false|linguistics|jessica steinbeck|2057-11-04 12:47:59|2052-01-19 05:00:53.429811881|2030-01-24 +-32|-32755|1472487454|-6992217501957169152|-47197.79|-801250.41|-891597604011.273926|false|religion|priscilla steinbeck|2054-05-22 06:28:34|2063-10-25 08:50:51.226706413|2071-11-21 +-16|20213|229688868|||914135.87|3370729811362.806641|true||tom davidson|2029-09-02 22:46:03|2049-10-29 01:10:18.861315724|2010-02-23 +83|-15129|-1242677422|-7779270198785875968|44820.44|1773593.38|-95551441731.167969|true|study skills|zach young|2063-12-29 05:00:16|2060-02-05 05:38:42.751856432|2071-07-18 +-86|-5829|-591879497|8473699639908261888|-43294.89|3526676.89|387330241230.863281|true|education|david garcia|2056-03-14 09:04:34||2024-05-07 +49|-25301|-1339495001|-8047774491688255488|32430.96|-1138428.01|213917180471.554688|false|joggying|wendy ichabod|2036-06-18 18:02:11|2078-03-05 18:23:13.53272383|1970-06-09 +-85|-31707|2145269593|3932|1974.27|-2242738.54|-3719487280001.985352|false|nap time|priscilla steinbeck||2067-03-15 02:27:42.845093748|2000-09-02 +41|29011|94220511|-8694818694700048384|46485.77|1092603.94|19208466388.569336|false|biology|oscar brown|2075-07-26 23:30:09|2015-05-22 08:58:32.953962204|2013-08-06 +-7|-25698|-939348081|-6968771079156654080|-40596.72|-3926229.46|-4294069592964.184570|true|religion|mike johnson|2036-12-06 17:44:24|2069-01-05 01:45:55.46640402|1971-09-02 +-87|-13499||7078641038157643776|-34520.93|4813321.50|-3935312554539.152344|true||jessica white|2054-11-17 14:06:49|2025-01-03 16:58:11.555739266|2011-12-02 +-92|-23671|33234633|2011|8452.90|-3704929.28|245030641872.894531|true|values clariffication|yuri van buren|2069-07-03 22:56:12|2029-10-25 23:23:56.717999797|2051-04-05 +|-14973|-1004204053|7223569671814987776|19550.67|-4154920.52|4425449699512.142578|false|geology|luke johnson|2022-06-29 03:58:00|2032-05-22 20:58:43.668140773|2077-12-15 +105|-4218|52667480|8071961599867387904|-29199.81|2499689.99|-2059563163384.368164|false|industrial engineering|david ichabod|2029-06-29 02:09:15|2066-11-21 08:11:25.882556182|1990-03-17 +64||888896424|535|44832.26|-1759444.28|3135189054105.787109|true|philosophy|zach white||2067-01-24 22:43:40.831103313| +-9|-11160|413090363|928|31337.77|4617801.75|2620515827701.019531|true|education|rachel king|2045-01-12 05:23:03|2024-12-12 16:34:07.506230777|1986-04-23 +86|12271|-387395264|-9142610685888192512|-18646.76|4150790.60|2678768130285.895508|false|biology||2031-11-11 05:35:07|2065-02-07 23:08:09.482878471| +-86|-11286|-1032306832|3606|36391.72|4919121.16|-4505856773264.867188|true|yard duty|katie davidson|2030-05-08 05:54:34|2031-05-29 03:15:14.948088213|2021-03-09 +-79|31581|615619268|-7751427073017544704|-2561.67|2023322.69|896698823749.275391|true|kindergarten|xavier underhill||2063-08-21 15:54:32.914330692|2057-05-05 +61|-11158|-583908704|7710447533880614912|45288.62|-4348649.88|-527665816963.711914|true|kindergarten|fred allen|2064-01-02 02:56:41|2058-06-12 20:59:19.253673990|2088-11-14 +87|1387|1377359511|3707|42065.36||-2837213968034.148926|true|mathematics|ethan davidson|2029-08-31 03:24:26|2029-12-28 20:17:31.312188949|1997-02-15 +-1|17534|-846450672|-8544299740525461504|23709.75||-1741610321411.606445|false|history|david white|2038-03-20 16:38:39|2069-11-16 01:49:17.829383874|2004-01-25 +|-20100|-1280919769|-8525212657458348032|-10581.34|3561523.46|-1289720339267.503906|true|xylophone band||2077-08-20 13:55:16|2047-03-12 14:26:07.332611637|1978-07-08 +|30216|-2122509553|3060|24735.37|-4144169.06|3475578255528.653320|true|industrial engineering|nick nixon|2067-06-16 11:31:34|2066-08-08 10:42:51.186855806|2060-01-13 +48|15626|-829717122|7414865343000322048|29695.82|2755306.54|-1698346362689.697754|false|wind surfing|||2072-08-01 17:29:19.788306199|1997-10-19 +69|-7058|-370798230|2358|22518.56|1965122.27|2422938575571.791016|true|topology|katie van buren|2013-06-16 02:16:22|2015-11-07 23:21:55.271471827|2102-01-11 +-52|30926|-1679120527|2824|31807.87|-3898871.20||false|philosophy|jessica quirinius|2030-09-03 08:07:19|2023-06-28 14:38:10.444522865|2102-12-08 +-120|22678|-707108808|8388363436324085760|21821.03|2538757.59|1962480701366.154297|true|biology|quinn johnson|2064-09-03 19:24:30||1976-01-27 +-114|6893|-1179668872|2085|14863.00||-1986143165196.629883|true|debate|wendy garcia|2050-01-29 18:00:33||2086-09-09 +32|4138|1336365018|364|35364.65|-2496609.74|4311249096001.646484|false|industrial engineering|gabriella hernandez|2055-09-24 13:37:44|2054-03-17 08:45:41.907691942|2079-04-24 +-115|-240|2133492883|8279056098670198784|-28232.35|-3840662.29|-859212665814.937012|false|yard duty|gabriella thompson|2028-09-07 02:14:16|2057-08-18 19:48:06.486182244|1973-09-22 +53|-15605|-1873004551|1856|9248.36|1828699.64|-2363428449892.879395|false|wind surfing|irene zipper|2028-09-27 21:17:23|2044-10-11 13:36:15.610377306|2076-01-11 +-105|-14667|-1406691044|-7824788571789279232|-30071.25|-4650363.84|-4748916605973.221680|false|topology|fred johnson|2015-10-25 20:09:26|2076-11-04 09:42:42.444252544|1982-11-13 +16|-29285|1273798925|8983857919580209152|-29449.44|-127752.12|-3009169710510.590820|false||priscilla thompson|2032-11-06 11:23:29|2020-02-18 10:32:14.521626327|2045-10-22 +1|28656|-19116270|-8584520406368493568|-28472.44|-731836.46|2544337191828.027344|true|linguistics|zach davidson|2046-09-29 07:58:30|2023-03-16 03:49:09.744554213|1981-02-14 +-98||1290381132||-42137.32|4322498.49|-977515822924.530762|false|values clariffication|xavier falkner|2031-05-16 13:51:42|2014-07-01 18:04:03.182673788|1985-11-21 +-66|11363|-191434898|383|9121.80|-1720548.35|-991233598328.165039|false|quiet hour|sarah underhill|2027-01-01 14:41:10|2053-07-11 23:10:08.4858029|2060-06-17 +-105|22150|1767019352|1066||-3722136.99|1483263131626.095703|false|education|yuri carson|2069-08-07 19:50:56|2027-10-17 12:50:48.598976231|2074-09-03 +-30|3891|-1758125445|3945|45738.36|-3046121.88|185310650268.100586|true|wind surfing|ethan brown|2067-04-17 00:25:17|2061-01-17 18:29:01.401347849|2055-11-25 +63|28748|715333063|501|-25215.89|647868.74|1620505790042.265625|false|wind surfing|mike young|2018-06-29 18:39:29|2046-10-06 18:13:16.513478823|1982-09-09 +87|-8293|-728015067|8146288732715196416|48883.00||-2873441557625.042969|true|debate|||1970-01-01 00:00:00.347751099|2053-03-11 +117|-31857|1756592797|2855|46735.27|-1464074.84|3917290352543.716797|false|philosophy|luke ovid|2036-05-12 12:17:10|2068-05-12 21:27:08.727324631|2091-06-08 +125|26867|746904285|820|8859.49|-4406626.41|-2643457571558.727051|true|linguistics|fred laertes|2016-06-30 20:12:26|2043-04-29 11:43:58.291833429|1977-12-15 +27|21904||1454|15105.83|4822404.58|-4286981451283.615723|true|nap time|jessica johnson|2067-08-03 19:22:44|2037-07-10 21:53:00.185589685|2095-07-17 +-6|312|430686478|9165199002069458944|-46955.95|-871722.65|-2559271129977.851562|true|industrial engineering|ulysses polk|2068-09-10 20:32:04|2029-05-16 06:34:15.82366094|2055-11-15 +37|31740|-203911033|41|-26556.12|4169708.31|183699834451.865234||chemistry|calvin carson|2028-02-06 07:54:37|2028-02-05 21:09:50.19666416|2010-02-22 +-24|-3309|1304812803|1509|-893.76||817275082175.292969|true|education|ethan quirinius|2023-08-21 13:22:03|2050-06-08 13:42:20.451205969|2094-06-21 +-59|23683|-1875699183|-7572262898020278272|-14589.14|-1374955.49|686549487454.719727|true|chemistry|bob polk|2066-10-27 01:03:19|2021-03-29 05:39:42.725451255|2062-05-07 +-105|2234|-1949359208|-7172594404186693632|37975.31|4445357.92|-2147069768093.352539|true|philosophy|alice carson|2062-06-17 16:47:40|2065-11-28 13:20:07.347051756|2053-05-03 +-8|-23462|-448060992|-7329767178250018816|9793.03|-2305056.98|-1231123023969.225098|true|quiet hour|alice miller|2031-08-17 22:10:06|2020-06-01 22:04:30.213218147|2053-11-11 +2|32133|-1784633305|-7507578199583694848|-29143.91|-323337.95|2015902300426.439453|true|study skills|zach laertes|2019-12-23 23:20:15|2077-03-17 01:02:35.649486371|2081-11-30 +|-28519|-1471147786|2009||-1526976.13|805374371411.496094|false|education|nick brown|2064-04-21 21:22:34|2015-12-21 22:24:04.431747619|2065-11-13 +|-7035|-1446132523|1948|36405.40|-263484.12|-2463355069754.271484|false|history|ulysses polk|2035-07-18 19:32:16|2074-09-07 21:49:22.240577143|2088-05-28 +92|-17356|-1213081886|-7782344916178796544|-48963.37|-1119756.54|-2978537429335.048828|true|kindergarten|fred allen|2060-10-15 20:23:24|2034-04-10 22:54:32.825495552|2066-01-08 +90|-30360|1273877405|7761834341179375616|-32576.28|-1904827.22|-4237985572934.519531|true|nap time|calvin nixon|2062-11-07 07:07:18|2014-10-18 10:24:23.318810654|2006-04-18 +93|22594|1436480682|3848|-46647.05|-846024.96|4197387495290.669922|true|religion|ethan falkner||2013-06-20 22:21:25.700551568|2017-08-21 +-101|5539|-1903090602|2599|-44605.59|-906161.97|-2765462365306.454590|true|chemistry|sarah ellison|2075-05-11 22:13:41|2067-08-09 04:55:46.596194633|2060-08-27 +-5|13247|-1568536214|-9148197394287779840|-29904.81|1018173.54|4363867341701.669922|true|biology|ethan ichabod|2055-11-13 07:21:13|2037-12-19 14:40:17.800815865|2090-09-13 +62|23881|-891543038|3024|1467.79|-3115534.46|2777793102100.396484|true|history|holly carson|2018-08-19 13:12:04|2021-03-17 04:26:22.691697033|1989-04-21 +-113|-28689|-1952235832|7569249672628789248|48800.65|-1818362.64|-2318038795882.877441|false|||2054-09-18 20:45:31|2039-08-25 07:17:12.897422973|2053-03-09 +-83|30532|596280431|7175638927948562432|-35548.30||-3309264029290.908203||undecided|bob johnson|2019-05-11 05:04:25|2044-11-22 10:00:42.386664113| +-73||1958701268|-7228589258642194432|29244.34|-3241676.66|2306452150855.093750|true|forestry|ulysses miller|2070-03-02 04:16:19|2047-10-21 14:48:00.965133636| +|12291|1126157283|2155|-41026.90|1949445.64|-1213071720047.551758|true|chemistry|wendy xylophone|2038-11-14 00:48:10|2051-12-25 04:00:41.572207865| +-98|756|667283966|8011602724663336960|-48164.54|342083.00|386944022279.926758|true|debate|jessica king|2069-07-28 06:10:12|2063-01-16 17:33:44.523152273|2088-11-19 +-13|25777|-1419573027|7195454019231834112|38029.66|-4972189.08|4521077673959.546875|true|study skills|holly ichabod|2052-08-13 05:29:21|2038-09-14 22:21:59.558718770|2011-10-18 +53|-13226||7549858023389003776|-12346.33|-1579477.07|-2155923560071.712891|false|mathematics|david ovid|2063-09-13 03:10:59|2065-01-19 23:19:59.816489363| +33|-17944|-512198016|7528211148397944832|14920.31||-2424496043950.270508|true|quiet hour|katie miller|2033-09-08 10:28:36|2015-12-02 08:43:04.431041576|2007-10-13 +-53|20540|-1147471772|-6962292590214234112|-41875.83|1829704.68|1112609353807.556641|false|biology|quinn polk|2025-04-16 13:33:21|2069-08-23 02:10:00.313463752|2046-06-15 +94|-11528|-2112149052|7599019810193211392|-41807.04|1368791.92|-3671181100745.925781|true|joggying|calvin robinson|2072-11-24 03:34:25|2075-02-15 01:37:03.892196000|1985-09-12 +-104|30201|805672638|1769|15342.01|-3063807.66|843728646940.320312|false|history|irene thompson|2015-08-28 06:41:13|2055-02-21 14:07:12.947865503|2011-03-25 +-90|-14652|731241198|1321|-34809.80||-2346155655585.455566|true|american history|xavier davidson||2049-07-25 21:35:24.211530780|2004-04-14 +-65|153|-1403154847||-1983.91|4380789.10|932489706513.735352|false|quiet hour|luke ellison|2039-03-25 08:36:16||2036-09-12 +27|7899|-1247325089|-8445801063348281344|-23834.19|708792.89|284261185960.055664|true|industrial engineering|calvin falkner|2028-02-12 19:38:01|2072-11-08 21:30:05.175267657|2072-12-30 +29|-14815|526502851|-7340231535789727744|-45069.61|2238717.32|-4453121016505.043945|false|study skills|oscar king|2044-10-19 23:09:11|2074-12-09 08:39:18.539753783|2020-02-01 +-102|-3360|824235855|1518|5014.76|3618423.45|-3907271111640.789062|false|wind surfing|bob polk||2052-08-25 00:22:17.135058768|1978-01-21 +71||1216016081|500|-24898.26||-4315206138802.594238|true|quiet hour|ulysses garcia|2035-09-18 13:19:56|2078-07-15 08:06:13.367168984|2015-09-04 +62|12048|-1554130090|883|18314.24|1636916.18|4938317552481.664062|false|mathematics|sarah zipper|2060-06-21 13:35:18|2039-10-23 06:50:15.287634401|2006-12-07 +-52|-23527|-1516259168|4056|-23121.85|-693272.96|-4155565016160.593750|false|chemistry|priscilla falkner|2032-01-23 09:54:36|2073-12-17 13:37:32.263464187|2098-07-04 +|-27871|1406029775|1470|16901.01|3850495.43|10462215475.719727|true|philosophy||2069-08-07 12:12:03|2030-04-27 06:43:41.486321103|1972-05-02 +-76|31509|1318956413|-8959796625322680320|-27759.95||-1863526316147.314941|false|religion|victor falkner|2053-12-19 03:37:20|2071-08-04 02:01:41.490785966|2007-10-14 +30|4206|1260101584|9062227900376203264|42958.29|-4035840.58|410251458493.747070|true|quiet hour|yuri allen|2017-01-17 18:08:15|2055-09-10 22:41:08.576594494|2046-12-02 +74|-28914|700341242|-7751265769984491520|-6754.81|-587473.64|1873443121269.744141|true|joggying|victor king|2070-02-16 19:10:24|2051-04-10 15:13:10.310012763|2061-11-02 +56|19568|-1660344634|1890|40490.24|-4694708.34|-506769976049.526367|true|american history|nick polk|2016-11-16 04:06:28|2077-10-05 18:56:18.80522682|2084-10-25 +-52||1076088102|3533|21809.68|4267756.81|2517234933838.885742|false|study skills|rachel quirinius|2061-04-10 02:13:09|2072-08-27 09:24:32.83013561|2048-09-15 +-33|23844|-1422780798|1613||-267398.80|-4073545616969.127441|false|opthamology|bob davidson|2046-06-27 17:39:40|2066-12-16 16:42:45.480565956|2048-01-15 +-121|-696|1182390248|7031339012080549888|49883.91||-3728061292967.872559|true|quiet hour|fred xylophone|2022-10-08 06:48:32|2021-08-28 05:40:25.870268434|2060-06-29 +7|29851|-1534307678|9048297564833079296|-29401.73|1648001.02|4314568174815.570312|true|linguistics|yuri young|2028-02-27 05:29:57|2063-09-06 20:08:05.406472821|2103-06-16 +-40|22655|963854010|7084659344078970880||-4605201.19|3207503926905.630859|false|kindergarten|mike robinson|2063-05-21 19:20:41|2044-03-13 05:02:40.948065998|2017-04-22 +76|-27707|1825828852|3672|-22118.16||800944762049.660156|true|undecided|quinn white|2062-06-23 12:09:01|2021-07-28 14:07:29.294310147|2084-01-12 +|-29171|740883263|1450|-9658.32|3055310.97|2204128352085.490234|true|mathematics|quinn nixon|2074-05-02 07:09:00|2072-02-02 03:56:13.682965502|2018-05-02 +-113|32581|453613037|-8142667274351345664|-2527.26|-1803737.40|2147384303392.172852|true|education|holly allen|2042-08-22 12:22:12|2078-10-06 00:10:58.709502336|1975-01-14 +-87|5190|1516236846|7486884806277611520|-11934.38|176111.39|-1700879323340.273926|true|industrial engineering|bob steinbeck|2070-10-23 03:53:03|2019-03-22 16:39:15.979672249|1985-02-15 +-77||1902676205|8514979402185596928|-26341.94|2040150.16|4742828481026.998047|false|education|david brown|2070-07-18 17:27:10|2013-09-22 00:59:54.600916680|1974-03-14 +-98|5549|-1067083033|7212090742612467712|-49625.17|4761212.86|3679966124819.919922||topology|tom davidson|2078-05-07 20:28:35|2066-07-28 05:59:34.33166299|2056-08-14 +54|-15936|166320811|9211455920344088576|12047.69|-4099704.00|-2128007235542.526367|true|religion|nick allen|2045-10-19 13:39:33|2016-08-24 16:45:54.184319832|2000-12-05 +81|-22937|176792505|22|48719.83|-1651346.83|-4968050069316.731445|true|topology|oscar thompson|2057-06-05 23:37:14|2036-03-18 10:37:46.993072194|2081-11-21 +107|8095|-2147071655|112|48797.43|-1977864.91|-146700825796.983398|true|topology|rachel falkner|2050-01-15 16:01:56|2065-03-19 22:15:14.409248254|2040-11-24 +6|-15576|-491377296|3203|41853.04|-2547601.36|-3932105722522.933594||geology|calvin zipper|2047-12-23 17:32:41|2056-09-01 05:40:36.226800355|1991-10-09 +90|32669|1618123796|2850|13386.45|-158319.54|-2994263442674.131836|true|zync studies|ethan ichabod|2063-02-27 12:34:18|2037-08-18 21:26:34.653592100|2002-06-25 +42|23624|||-35607.07|-3856180.80|-1283909858208.360840|true||bob davidson|2056-11-01 07:08:35|2027-06-21 22:59:34.332774800|2069-09-24 +11||-462541618|3333|-47939.71|-2853027.07|2406489217263.256836|false|topology|jessica xylophone|2062-04-10 20:41:17|2023-01-12 01:05:51.508185273|1998-02-16 +79|-11006|1363568842|7871189141676998656|28903.24|-3332708.82|-1243576018775.911621|true|mathematics|ulysses white|2074-10-12 09:54:57|2040-01-01 03:10:35.741193113|2029-11-18 +-79|4397|-1625062942|1796|12877.59|-2482414.22|-366729280142.763672|true|history|tom young|2066-08-06 02:14:55|2045-05-09 01:30:52.296126909|1976-12-03 +82|5196|-1505397109|8853989376829833216|-41663.78|-4887052.76|-3943258984957.225098|false|quiet hour|rachel xylophone|2056-06-13 12:15:30|2071-10-05 12:34:48.394333775|1973-06-18 +7|-18672|-1881263242|7065344324692443136|-2559.24|-4057157.83|103436176467.041992|false|xylophone band|ulysses zipper||2042-01-17 05:21:30.712047647|2091-05-06 +-90|11877|-1628799508|7775034125776363520|17239.97|3011536.81|-306501592876.848633||biology|alice underhill|2033-02-26 07:08:07|2044-03-17 21:28:59.879032353|2099-11-19 +|-1335|-1423477356|7308289763456000000|-20504.78||-867620120929.686523|true|zync studies|katie ovid|2035-03-18 17:10:14|2059-10-27 08:45:21.483045033|2013-09-20 +79|18857|1224662770|-8881446757271846912|-5915.38|1668877.19|54423726527.943359||mathematics|calvin van buren||2013-08-14 01:50:13.516978015|2101-08-08 +-8|20794|388707554|9016280522993975296|-3266.28|1632725.90|-4803569350262.506836|false|wind surfing|nick thompson|2077-01-09 11:45:18|2023-01-13 03:39:22.546498789|2063-03-31 +46|-15874|-329336519|8374321007870836736|-4869.45|-3732055.57|-2899188334900.983887|false|american history|luke robinson|2074-09-18 00:29:16|2028-01-04 00:08:05.604429969|2016-10-27 +-119|-23137|-352146259|7054938591408996352|25059.23|3126403.10|901936833002.139648|false|biology|xavier van buren|2057-09-08 10:14:56|2027-01-22 20:10:36.408673736|1994-03-25 +-122|24455|-514010922|-8232763638546694144|-22580.56|3348247.17|4202677774880.996094|true|chemistry|yuri laertes|2073-11-28 13:28:08|2042-06-06 07:33:49.17122575|2060-10-26 +11|-21274|2102440065|9089435102788009984|-28578.33|2621188.65|-255054620124.468750|true|undecided|tom van buren|2066-12-02 02:53:22|2017-05-01 17:13:49.491721578|2035-04-30 +61|31948|66182203||40936.71|-3249322.84||true|education|quinn ichabod|2016-06-18 05:36:35|2029-01-24 19:44:04.24594440|2023-04-12 +-40|-733|1998185704|4054|-24854.87|-3604381.12|-3779922035606.979492|true|chemistry|quinn hernandez|2053-06-05 03:55:29|2023-07-29 20:12:48.388612071|2103-04-23 +-27|21792|686081268|2790|38457.94|2811951.74|-1741278698275.827637|true|joggying|holly laertes|2016-09-17 20:56:50||2082-05-26 +-26|10663|-1594957608||-34529.01|3296608.52|-1835124513932.413574||history|ethan xylophone|2042-09-02 06:50:05|2021-08-20 20:43:12.92751491|2002-08-20 +122|13265|-765190882|9207107990561972224|47360.00||-4819156991738.395508|false|xylophone band|mike white|2080-01-03 19:54:56|2041-05-28 08:27:17.127266228|2096-09-09 +76|17286|609917172|-7647020450676146176|-40328.10|4443378.81|-4230922395249.549805|false|opthamology|luke ovid|2056-10-23 05:28:13|2036-11-07 19:08:45.996173458|2099-04-07 +-105|-20752|985634256|7870277756614623232|-8573.19||3712080007920.981445|true|american history|quinn miller|2031-04-10 06:37:29|2079-07-14 10:07:42.590879861|2098-05-16 +111|-29811|-1345391395|-7138415011665043456|-43243.33|3559341.21|-615166651772.831543|true|forestry|yuri falkner|2038-01-14 21:58:13|2065-01-27 22:52:28.599612593|2082-09-30 +80|-18547||4075|7104.69|2204690.58|1224935205308.312500|true|topology|mike van buren|2036-10-06 06:18:48|2050-12-07 01:06:25.366922684|2104-08-30 +112|20348|1103797891|7077311975029555200|-44170.71|334056.60|-3129131862045.682129|false|wind surfing|nick underhill|2013-12-20 23:38:15|2042-10-16 10:35:25.793777443|2042-05-14 +|-28906|210728566|7295502697317097472|38326.73|-4441185.31|3215358777531.882812|false|religion|fred xylophone|2080-04-10 17:57:39|2045-10-12 09:13:28.174343501|2089-01-06 +-20|-20834|1257621270|9104574294205636608|-5156.07|2064139.93|3101600356212.976562|false|zync studies|katie miller|2038-05-25 08:10:39|2030-05-18 23:07:28.872160131|2006-10-08 +4|-7178|-1234163924|9131533983989358592|10162.69|-684326.75|541391666070.829102|true|opthamology|holly miller|2065-09-06 07:01:50|2032-05-20 21:51:43.880235085|1971-06-05 +-26|-30907|789871166|-7344146703223496704|35118.89|936904.69|750291107660.423828|false|philosophy|david ovid|2070-12-26 07:32:20|2062-12-16 23:06:43.116222435|1993-10-26 +-14|-7715|77063155|7130306447560826880|-34264.49|-31967.96|-1002469169364.878906|false|wind surfing|zach brown|2069-11-21 06:19:24|2076-05-23 07:42:52.682173527|2044-08-02 +-67|-16872|1754025802||33943.20|-2424320.14|-549393127536.781250|true|history|victor steinbeck|2052-12-18 00:08:22|2021-07-20 17:38:18.324036947| +-68|9069|-579916775|8184799300477943808|-2578.18|2341699.48|1134499614756.023438|true|linguistics|priscilla ovid|2056-12-27 14:54:51|2067-01-23 22:58:00.339520560| +|240|-1820436871|-8853553406533894144|11549.29|925416.12|-179699318578.983398|false|wind surfing|alice thompson|2059-06-19 06:27:50|2021-10-29 14:27:26.966421551|2007-12-23 +-45|-5338|881396599|9139805788041134080|-26482.69|2873812.27|3896505909246.314453|false|yard duty|luke white|2041-03-05 02:35:44|2065-05-28 07:22:17.384344554|2027-12-08 +-77|-13231|-38458614||-34256.32|-1535356.84|-2453335122672.513184|false|religion|calvin polk|2049-09-04 18:28:13|2041-11-20 12:24:05.687150484|2020-05-09 +25|-11675|-835002549|-7333362172439035904|37914.80|826088.22|2609781430749.009766|true|mathematics|katie ovid|2020-05-24 16:00:17||1988-10-30 +78|-32755|-1210261177|2476|-47317.89|4982060.93|-1235804549005.088379|false|chemistry|tom johnson|2057-03-25 09:18:17||2080-02-27 +-91||-758973175|9030480306789818368|42056.85|-4820814.85|-559313810281.701172|false|chemistry|alice ovid|2057-10-11 11:43:18|2053-02-18 08:06:40.270486504|2083-10-10 +-89|8721|-9958400|1999|-21802.89|2243832.21|-3650203891150.916016|false|education|zach miller|2047-07-13 06:22:16|2072-06-23 11:48:25.414890648|2047-01-14 +-37|7059|528218910||-18867.85|-41236.41|731421305775.334961|true|values clariffication|calvin young|2067-05-17 08:35:31|2046-01-19 02:21:03.547201945|2080-05-04 +-10|-27035||3962|-35386.39|3476711.79|-82867159743.145508|true|forestry|wendy allen|2054-03-08 09:38:48|2034-09-14 15:33:38.739682850|2004-03-18 +-29|23928|1083855659|-7476082621253402624|-25127.58|-1680003.18|-3185792319590.632324|false|debate|alice johnson|2076-03-23 22:55:05||2071-09-09 +-2|8675|-1731820254|-7989766326847807488|13048.95|4435172.95|1790513840581.020508|false|xylophone band|luke robinson|2070-02-01 22:03:42|2021-05-18 08:30:58.199152453|2094-10-18 +6|-25033|-393723522|1676|38559.82|2171322.14|2294980278961.240234||xylophone band|gabriella carson|2069-01-31 09:20:42||2074-02-13 +48|28973|-436386350|19|45498.19|-3819438.45|-2493337985182.613281|false|philosophy|victor young|2080-11-08 17:30:02|2025-10-28 00:58:01.851385860|2059-02-12 +52|28570||9084402694981533696|-29027.44|-530441.64||true|biology|holly young|2030-02-20 11:06:41|2026-02-09 05:24:47.977378166|2098-04-07 +-91|-3202|-913906252|85|14183.79|-1833054.72|-3376118593994.625977|true|nap time|calvin ovid|2074-12-29 21:01:27|2049-07-16 17:35:45.463721949|2089-11-02 +-86|-20894|75823003||46364.55|3697592.89|-1740232076211.789551||linguistics|oscar king|2071-10-16 12:28:18|2061-10-31 12:48:02.989589922|2077-09-12 +-75|11551|-1036720157||-36658.28|-3125140.09|1484228818170.123047|false||david king|2020-11-30 02:28:04|2054-02-09 19:31:45.358640573|2040-10-02 +-69|-19681|-1313618168|7678790769408172032|-31855.38|-1508399.23|4753945829836.361328|false|joggying|xavier hernandez|2037-10-27 05:17:05||2099-01-04 +-106|8922|2075919195||-23144.33|-4262662.44|4398332823245.781250|false|topology|holly hernandez|2077-12-18 11:03:27|2036-03-16 11:32:34.9687069|2075-01-07 +16|7939|-2037628236|2193|30061.15|-1980556.87|-3337375261599.789062|true|wind surfing|luke xylophone|2040-10-20 22:14:18|2051-05-30 16:34:46.186951645|1984-06-21 +29|29434|1202720813|3248|29432.23|597950.19|3511974955528.032227|true|kindergarten|katie ovid|2070-04-02 13:48:39|2044-11-02 03:09:50.932425383|2078-12-11 +-24|29892|-853967587|2194|-15719.12|1470631.02|-3556010863531.895508|true|religion|irene thompson|2077-10-02 19:15:36|2016-06-24 23:20:54.306578418|2105-10-08 +-71|9962|-946830673|8734584858442498048|-2685.04|-2038725.16|1250647379526.768555|true|nap time|wendy underhill|2029-09-23 13:37:34|2033-05-09 16:02:52.972794365|2071-12-04 +-114|18690|-99916247|8419958579638157312|1230.84|4853977.50|-3337430312348.033203|true|quiet hour|ethan white|2062-07-20 19:25:58|2029-03-04 22:25:32.372030233|2093-02-09 +51|-3436|-1459528251|8135164922674872320|-19595.72|837425.17|-2849980786453.798828|false|history|quinn ellison|2040-12-22 18:36:58||2077-03-15 +99|-79|-399643110|-9215144824304721920|-42449.75|508914.90|371694855487.127930|true|industrial engineering|ethan johnson|2053-08-08 07:04:47|2080-04-15 07:19:37.104699865|2089-05-19 +105|-25664|-1351437382|-7511952204985049088|-23273.93|-4798646.03|-3685975705841.393555|false||alice xylophone|2077-05-13 06:22:31|2023-11-22 17:50:18.908675615|2001-05-24 +-57|11843|-1240208945|967|-38329.26|1245240.05|-72632238324.530273|false|topology|ethan quirinius|2049-07-24 02:45:12|2060-04-10 06:20:53.456525992|1996-01-11 +125||1094778643|263|19292.63|-1873119.61|-3878455861390.826172|true|xylophone band|zach king|2064-10-03 00:12:53|2022-06-05 07:40:54.163193159|2090-04-22 +106|21976|-1144920802|3058|-42052.15|-2785909.98|4096964022421.367188|false|religion|ulysses king|2016-05-30 06:20:10|2021-10-30 20:52:05.468139074|2015-03-05 +115|-26932|-1432316859|-7712425776235274240|4449.85|2599136.85|4800598839440.474609|true|religion|alice laertes|2016-12-24 20:28:04|2020-10-30 17:18:06.83792354|2078-07-21 +110|13620|541923995||42103.61|-4674178.28|1720893396001.876953|false|chemistry|rachel miller|2075-04-16 08:04:13|2074-06-07 05:35:00.512374118|1972-06-09 +26|-14597|-453739759|738|47183.62|-2119967.88|887498368380.796875||debate|priscilla king|2039-11-15 02:45:05|2036-09-19 23:40:36.465715138|2071-11-05 +-117|-15708|2090044777|-9219066990552760320|6624.71||3101731188821.652344|false|zync studies||2020-10-12 16:15:01|2043-01-16 06:42:02.148351784| +|21611|121663320|-6941777546186579968|-11619.88|-4343606.89|-4320082997633.427734|false|quiet hour|bob ovid|2018-11-27 08:43:27|2041-02-04 14:27:46.359838893|2060-09-18 +0|-31365|950997304|1940|-13193.86|3767689.76|-2691146668859.509766|false|nap time|nick thompson|2066-11-12 23:31:11|2054-08-03 11:46:51.845164637|2013-10-21 +|6367|58313734|874|-40233.99|2400153.04|2583800042778.818359|true|debate|fred ovid|2034-12-16 09:40:00|2044-03-21 13:20:12.629260168|2049-11-02 +22|-17642|491758252|6934570741217755136|30293.17|-327841.35|662367380091.879883|true|mathematics|tom falkner|2042-08-31 04:48:48|2077-04-09 00:12:01.319049463|1990-10-03 +-63|16357|641695802|-6947955278050181120|-42902.63|-749433.19|-2227447197725.922363|false|values clariffication|victor davidson|2030-01-09 20:09:55|2017-07-28 09:06:35.882903381|1970-06-23 +-104|5093|14573904|-7037638331316469760||-4901719.01|310870329637.787109|false|quiet hour|gabriella thompson|2080-04-13 18:39:38||2066-08-05 +-47|18810|514046604||-38437.95|1021458.26|366223182729.825195|true|joggying|mike hernandez|2026-10-10 18:47:04|2029-06-30 05:09:50.574924351|2076-02-27 +90|-8309|-298221893|9078604269481148416|-8052.94|-2122723.08|3538556731222.399414|false|debate|fred zipper|2077-11-25 18:23:08|2034-09-24 23:20:54.523734503|1983-10-09 +6|-26439|-1262842192|-7797149520019062784|30563.30|-2562846.00|64345321594.530273|true|biology|ulysses quirinius|2022-03-13 02:30:45|2024-12-31 19:28:56.388733281|2009-02-10 +-57|-31163|-1171326281|3213|-9254.17|-4767214.00|-3673210988859.949219|false|zync studies|irene xylophone|2035-02-27 13:54:08|2033-11-23 22:19:50.479124061|2002-01-24 +-116|26158|656187584|7013693841855774720|16408.52|-4052966.58|-1456248032425.478027|true|undecided|victor xylophone|2037-07-14 09:27:06|2026-05-22 13:48:09.35938113|2030-06-19 +-55|-20532|1473503196|3904|43475.58|2693198.77|-3131418514216.193359|false|values clariffication|holly davidson|2024-04-22 08:37:38|2016-09-22 02:17:02.628508820| +48|8929|2013376408|2205|44946.09|3576291.75|-4871871797919.630859|false|zync studies|priscilla allen|2077-06-13 23:46:42|2069-04-25 15:46:10.268017072|1980-03-15 +-60|17242|-192181579|3739|23651.93|36466.81|-486686347287.950195||religion|luke allen|2039-04-13 23:05:11|2068-06-07 10:20:19.221041892|2068-08-15 +89|-11384|315055746|7747874976739016704|7523.22|1368814.97||false|biology|ethan white|2034-02-23 11:06:56|1970-01-01 00:00:00.906271939|2041-06-25 +51|18637|2048533360|8543177193114779648|-41617.02|482302.36|-1546046022526.041992|false|kindergarten||2037-01-09 15:06:40|2070-07-06 14:21:28.517162830|2008-08-25 +118|3253|1130043800|-9022154842129547264|27280.47|3522597.59|-4611990478400.116211|true|values clariffication|david davidson|2033-02-01 19:47:37|2027-11-17 10:28:47.80151123|2093-10-03 +-12|27693|768198315|-8205148279289085952|-10442.81|-1417623.57||true|forestry|oscar brown|2034-10-08 23:17:54|2067-09-04 22:14:04.110216000|2079-07-25 +-36||-2015780444|694|-32549.83|4035022.06|1218083012378.272461|false|education|calvin underhill|2028-09-24 17:15:42|2050-02-01 08:12:53.255232551|1978-03-08 +-5|25683||3031|12184.96|562852.37|-4282204832892.908691|true|values clariffication|fred quirinius|2058-05-17 17:05:29|2026-06-25 19:35:39.482657744|2012-01-05 +-112|31948|-1092872261|7731443941834678272|-27340.02|696583.58|445925390157.491211|false|american history||2068-08-30 08:33:56|2075-01-15 19:37:46.64329055| +-105|-21693|-216495498|4030|47377.17|3344812.32|-3851850447729.248047|false|undecided|luke zipper|2065-02-05 00:07:25|2024-04-23 14:54:23.798337287|2063-03-09 +54|16799|548375173|-7242345057866285056|-47704.81|-3013070.91|3857259195148.898438|true||priscilla xylophone|2014-05-21 16:56:48|2021-05-18 01:51:52.384206743|2100-12-30 +125|6836|-749042352|-8570933074545745920|44652.34|3366329.49|-4008667949143.891602|false|education|katie young|2039-02-03 16:20:06|2031-07-25 04:22:41.813392590|2020-04-29 +55|-24194|2008211296|-8843859708698583040|7897.35|-4026884.90|694259931060.621094||chemistry||2079-01-13 19:25:05|2027-03-16 05:02:02.622892439|2033-03-31 +18|-909|-679230165|3763|22434.94|-2614784.49|-2408454599738.405273|true|geology|bob brown|2048-12-09 03:44:53|2033-03-12 15:31:38.900750512|2021-10-15 +76|5025|-917062754|8927691194719174656||-4080669.24|-1253821021704.375488|true|mathematics|ethan polk|2022-07-07 04:40:23|2056-10-27 13:55:56.356962022|2076-06-15 +100|-24296|-573787626|8760285623204290560|9875.85|4289038.66|3622015549775.347656|true|american history|priscilla nixon|2021-03-18 13:07:08|2064-05-08 20:34:48.987828340|1999-05-17 +11|-23836|-684022323|83|-22059.14|2308864.42|3872836019012.560547|true|linguistics|victor falkner|2064-07-27 19:39:15|2049-08-04 21:08:50.945667590|1991-07-13 +28|21402|615661052|7220581538170413056|-7646.80|-224504.56|-2027136687217.812012||yard duty|bob ellison|2074-07-29 17:39:45|2030-09-21 04:36:18.771239180|2028-10-10 +25|1691|-189393743|-8833019327569510400|11578.06|-3411141.32|-4211242415167.078125|true|history|irene ellison|2059-02-04 00:47:19|2024-11-12 02:53:19.930891036|2025-01-09 +-59|15655|-574475259|8991071342495531008||-1231801.32|-1391928752253.796875|false|kindergarten|wendy polk|2043-04-11 13:08:42|2046-09-15 19:25:38.31358640|2009-02-25 +-117|-10533|-1878572820|3421|13420.65|-3115003.44|4116438735684.261719|false|geology|ulysses underhill|2065-03-12 06:39:39|2025-10-05 18:30:25.745589201|2000-04-18 +-28|-3757|-785261879|-7292078334519894016|-26290.78|-4341379.78|-1215647046531.849121|true|||2017-09-18 17:33:59|1970-01-01 00:00:00.186021557|1984-03-11 +15|-30020|1421779455|7575087487730196480|-31975.46|-306860.42|-2589464657625.448730|true|values clariffication|luke young|2061-10-06 02:46:43|2016-11-17 15:18:46.950616093|1986-08-13 +-38|6451||2991|-8411.35|-4769995.72|2950208151142.704102|false|values clariffication|priscilla quirinius|2049-10-15 00:08:43|2062-03-09 00:47:42.827453320|2049-09-08 +|-11010|-1197602595|-9058029636530003968|-22529.51|1373462.79|-4532489497069.640625|false|religion|alice steinbeck|2078-12-16 08:18:15||2097-08-10 +3|6451|-1805915233|-9075486079396069376||2520514.18|-2617393499995.408691|false|biology|ulysses brown|2013-05-22 00:46:26|2035-09-30 04:40:58.480366014|2066-01-15 +-3|-32266|1153089364|1165|-12435.84|-4294699.57|-4048791701161.213867||forestry|bob falkner|2068-04-10 02:10:55|2072-12-27 15:53:19.908321394|2020-10-07 +-106|-12016|1668446119|8002769767000145920|27137.25|4374020.68|2385292009394.177734|true|study skills|calvin ellison|2043-04-23 18:29:09|2061-06-12 15:38:43.680018947|1984-07-06 +|24439|-897586947|-8545239748068941824|-40482.48|961076.47|1537506193057.574219|true|study skills|wendy van buren|2013-06-05 13:16:07|2033-09-20 07:09:33.786243824|2000-12-25 +-119|1356|882762933|7608447395949109248|-44435.29|-1597982.22|1819216028686.661133|false|quiet hour|holly white|2050-04-07 12:22:04|2053-08-02 04:11:58.530743146|2077-09-04 +102|21102|659343542|2649|36014.13|3634713.92|-575000889640.584961|true|wind surfing|irene thompson|2053-06-26 18:35:11|2055-01-18 04:20:49.647058421|2073-10-29 +-57|-17689|2064448036|8219326436390821888|-11132.51|545680.43|255313813106.958984|false|mathematics|alice steinbeck|2060-05-20 01:34:27|2020-03-01 11:02:51.570578441|2067-01-30 +55|14606|1650573576|1368|15589.12|2009602.58|1589957480687.509766|false|study skills|alice quirinius|2073-04-01 06:04:51|2068-11-11 13:58:15.920659825|2021-07-29 +49|-26061|1499399891|8836228556823977984|33827.48|2814066.54|2510449522761.426758|true|religion|ulysses carson|2037-12-20 09:55:27|2030-04-30 08:25:31.854317407|2098-06-02 +92|-11110|-932921363|-7399631791131074560|-12942.75|-217946.54|2761978539424.099609|false|xylophone band|alice xylophone|2066-01-16 10:28:44|2048-01-14 10:07:27.759822202|1976-03-14 +-96|16764||688|-13758.52||361086010470.934570|true|industrial engineering|alice young|2049-06-14 05:59:55|2057-09-19 00:55:44.140779413|1989-10-20 +95|4400|-849551464|7393308503950548992|6643.90|-4983437.35|-4892969527019.808594|false|study skills|oscar davidson|2017-04-02 00:57:37|2029-01-06 20:49:41.36841326|2032-06-30 +49|-5282|958866509|-7326863346317598720|-49014.75|1930239.92|3900277315209.912109|false|study skills|xavier white|2030-06-26 15:48:19|2014-10-11 06:03:21.748393551|1970-11-29 +-80|27981|693876030|3630|-33417.02|-485326.44||true|wind surfing|yuri king|2060-11-13 06:28:35|2023-03-20 21:57:46.54524894|1993-08-04 +-4|-31514|-1183469360|736|-36356.74|3032443.29|-2245612358023.905273|true|nap time|alice king|2076-01-06 22:44:17|2024-08-23 20:51:10.725383226|2054-04-28 +-55|12642|1052255272|4051|16488.02|-4342989.61|1502351615472.861328|true|joggying|fred carson|2034-08-27 14:47:03|2076-08-14 13:53:30.24220682|1994-01-05 +-121|3316|-1153978907|7164349895861829632|43069.96|-1477117.22|-553625504920.703125|false|wind surfing|fred robinson|2065-07-04 13:04:21|2022-05-22 02:00:34.914704680|2058-05-24 +-61|-4371|785382955|-9218875542187065344|-8677.04|4451156.34|815754938728.617188|true|nap time|gabriella garcia|2040-07-17 22:55:56|2079-09-11 14:30:55.332790297|1975-02-11 +52|28360|-1989778424|-7687052294777208832|47634.41|-2314022.54|2507745331167.754883|false|xylophone band|luke falkner|2062-11-19 05:42:37|2020-09-22 17:22:25.133299538|2062-08-05 +-90|-12103|712625264|-7739424919198187520|-47667.77||427069368079.067383|true|linguistics|jessica brown|2051-04-07 00:21:48|2032-08-30 01:34:32.658298299|1994-03-17 +3|-1510|-1718163874|3682|35630.13|-3338857.45|-899893327656.009277|false|industrial engineering|priscilla white|2055-01-04 20:17:55|2077-03-07 22:59:33.441695704|2017-10-21 +42|10699|1372705672|8652485812846567424|9896.00|-3472573.25|-1087033141560.276367|false|nap time|victor thompson|2052-02-27 06:33:17|2065-01-20 19:20:28.802291910|2068-06-03 +|-24968|340929437|2285|-29910.91|-516691.22|2120806635551.702148|true|forestry|quinn brown|2072-08-31 12:44:15|2062-09-22 01:14:51.597985350|2065-10-09 +74|343|524317972|-7038455462786334720|-39904.28|2443665.68|-2295535553408.214355|true|values clariffication|ulysses miller|2066-10-07 09:47:01|2050-01-23 01:49:18.644001562|2051-05-04 +38|2085|1256676429|3067|268.34|568804.73||false|xylophone band|mike ovid|2038-12-04 21:44:33|2055-11-26 23:26:28.146636400|2042-06-25 +79|-23663|-1218592418|8644602243484803072|44403.78|3361937.88|-1489866826314.631836||chemistry|gabriella ovid|2035-04-27 15:14:36|2064-02-20 19:43:32.403661267|2012-02-17 +-92|4203|-1429346144|2270|21727.68|-421624.54|-3983022978825.019531|false|education|zach miller|2040-09-30 18:36:39|2017-11-20 20:46:21.657733108|2068-02-18 +48|-24884|1258721737|355|46929.58|1781934.96|3039600013709.673828|true|industrial engineering|jessica nixon|2071-05-01 19:05:12|2074-03-02 10:39:55.93641205|2016-07-15 +64|22618|254921167|9091085792947666944|-44704.24|711467.05|4658230495944.267578|true|chemistry|priscilla allen|2039-11-07 17:48:04||2060-12-11 +61|2677|253621570|-8411282676082565120||3151363.12|406664869016.423828|false|history|calvin carson|2015-05-24 21:22:45|2028-02-08 22:19:58.374126984|2090-08-05 +|-15862|656636097|-7535958203887706112|-17440.17|-2157150.34|-1827771009404.876953|false|xylophone band|luke carson|2041-09-06 16:13:03|2050-08-28 23:06:13.113935291|2083-07-13 +-33|32260|-534894953|1075|-356.94|-4324062.25|-890245194815.513184|true|yard duty|xavier ovid|2053-10-03 22:43:56|2079-07-14 01:00:00.460817725|2001-09-04 +-115||-2087815643|-8892963883085578240|34523.24|-3158421.12|-2845384798090.435547|false|chemistry|fred young|2016-05-12 06:45:13|2035-08-10 09:59:03.386985729|2005-03-02 +103|24663|-434747475|361|30729.61|-4264710.63|922131932518.013672|true|nap time|jessica underhill|2050-02-07 06:55:52|2067-11-14 22:33:08.493306478|1996-08-26 +56|24768|1202593021|7418271723644403712|-10868.07|2571256.58|2999497077887.412109|false|forestry|rachel carson|2049-03-10 07:25:18|2039-06-18 00:32:26.677441797|2058-04-19 +119|32671|-973128166|3054|-26979.86|-628111.85|-1680604442200.816895|true|topology|tom garcia|2030-05-20 09:35:25|2063-08-06 04:51:16.396723749|2004-11-17 +-31|-739|-982238309|939|-42173.51|3273743.27|4303282073846.900391|false|nap time|calvin polk|2013-10-04 10:43:21|2067-06-29 23:59:23.279014356| +-46|31502|139661585|8210813831744118784|21785.35|-268730.23|-1288193922702.625000|false|mathematics|priscilla quirinius||2043-03-23 17:03:08.504117612|2010-12-13 +103|-29646|-737624128|780|10202.27|-4999829.07||||victor falkner|2020-03-30 03:39:12|2038-03-24 14:36:17.459773339|2022-04-23 +-81|-29442|-1738775004|6996686091335884800|39542.16|138346.52|4321613687397.097656|true|values clariffication|mike hernandez|2045-09-03 21:41:39|2078-07-04 13:56:17.968990910|1974-11-30 +-34||65172363|3958|32525.84|2402710.27|-2898525744154.696289|true|linguistics|sarah ovid|2019-01-05 16:50:23|2017-03-12 07:24:44.150435697|2060-05-02 +38|31411|1893512909|-8244116388227104768|-16276.43|-4046624.13|4304561297863.359375|true|education|ethan ichabod|2036-06-21 17:40:38|2064-01-21 14:23:17.231854149|2083-05-22 +-70|-22726|1519993904|-8270479187688816640|13105.96|555119.13|-398063341865.580078|true|xylophone band|gabriella ellison|2030-08-30 02:23:04|2049-08-11 05:12:04.148231477|2013-04-10 +40|-302|-1955647385|3961|41353.46||-3450402956270.970703|true|study skills|irene steinbeck|2016-11-17 17:54:37|2062-11-14 17:05:46.987404583|2078-07-31 +107|-30534|-1043413503|3810|21433.28|1928485.12|4994550248722.298828|true|religion|mike allen|2062-04-28 19:08:00|2075-03-04 17:23:03.73018585|1993-06-15 +77||955171928|-6934304742087655424|34995.02|3971989.53|-475678432575.605469|false|opthamology||2068-03-16 07:25:04|2059-08-26 22:16:53.454090841|1995-10-15 +41|15417|335359004|2608|-13412.84|-3822500.97|1743451461698.625977|true|topology|bob ichabod|2076-02-06 03:08:08|2078-11-06 10:58:05.463087868|2041-06-18 +-78|25683|1362740312|-9157613004431998976|36846.57|-843617.87|3565868200700.777344|true|undecided|irene underhill|2040-12-26 23:08:17|2052-01-02 20:22:40.487097346|2031-08-17 +-73||-839176151|-8916987977485312000|-7674.72||-825771731801.268066||linguistics|bob white|2071-07-29 21:38:49|2014-06-27 11:10:51.195137809|2013-06-11 +-86||-7929246|3755|22920.73|3620278.52||true|biology|calvin thompson|2028-02-01 20:43:30|2056-11-04 04:25:34.640015080|1987-04-04 +120|-18933|-1063673827|5|14086.87|-980970.29|3047030016524.807617|false|religion|irene miller|2042-12-14 22:54:02|2017-12-27 18:22:06.809083462|1984-10-13 +36|-10972|990246086|1158|-16161.90|-66861.16|-1214938404709.578125|false|industrial engineering|holly allen|2064-01-13 04:12:41|2042-02-06 22:03:25.824550748|2016-12-06 +70|-32498|2013444562|66|22183.31|395235.40|-1179173001517.490723||nap time|ulysses white|2028-10-16 12:12:48|2080-06-21 03:11:31.104371855|2068-01-29 +17|-6502|-1702587308|7778936842502275072|-18436.78||-196657000634.594727|true|xylophone band||2046-01-31 05:17:31|2058-03-03 00:00:49.488336089|1973-09-16 +-95|17489|1137950964|-7470307155642245120|22234.00|-1300453.03|822293548806.492188|true|chemistry||2056-12-28 03:10:05|2026-03-02 01:50:43.137583417|2059-11-02 +-20|-4393|854230650||-21043.42|-572576.92|2869426367294.245117|true|zync studies|ethan laertes|2072-01-17 22:15:36|2030-04-10 07:32:47.194501657|1970-06-16 +101|-15578|-1838281337|7166263463731421184||4540045.88|442360758276.833984|true|kindergarten|ulysses carson|2024-03-16 20:04:25|2053-12-11 14:11:31.503793969|1992-05-13 +-9|-21117|1228837108|-8696162322976997376|-8618.55|1352592.61|2431582392595.643555|false|religion|fred davidson|2028-04-28 02:29:15|2039-04-15 10:54:59.268945168|2014-02-16 +-115|19635|37461818||2559.39|-4447382.23|-2197895735917.754395|false|undecided|jessica davidson|2062-07-15 09:24:13|2021-10-13 15:51:41.536144896| +39|-12904|-1333770335|7922443154272395264|28530.91|4004643.53|-4769680038655.472656|false|american history|david miller|2021-10-12 22:52:55||2023-03-20 +89||-337586880|3409|-45141.21|4716026.64|-4809051982087.346680|false|education|gabriella steinbeck|2076-10-13 16:12:50|2038-02-10 15:55:46.450748066|2073-03-18 +59|-24336|-434656160|7432998950057975808|48914.73|-4245153.17|-1477613811579.736816|true|education|quinn white|2019-05-21 17:55:59|2057-12-20 10:40:00.412591715|1985-06-13 +2|24244||-7668388017287020544|38976.85|-4098435.05|746390817981.960938|false|study skills|jessica miller|2021-11-22 00:30:17|2069-09-19 03:31:53.518229478|1990-01-04 +|-22163|-1104268719|1678||2494279.70||true|opthamology|ulysses brown|2018-05-17 19:02:30|2023-06-07 17:50:49.214370663|2061-01-24 +-57|11814|88774647|-7949309059286163456|-27993.19|-2150345.09|-3250755733061.261230|false|kindergarten|priscilla miller|2056-01-01 10:54:32||2105-03-09 +-127|14180|1969239701|1270|44944.40|467185.02|270595139779.458984|true|biology|yuri nixon|2017-10-26 04:06:34|2038-07-28 08:46:47.990750284|2085-09-24 +44|12014|-1716506227|3462|-15942.62|2202747.77|3306174177127.374023|true|wind surfing|david garcia|2017-01-10 09:58:30|2061-08-24 19:56:11.80420459| +-98|-18646|584084934|3089|49639.10||-4997414117561.546875|true|forestry|tom van buren|2040-07-28 08:47:33|2029-09-05 18:34:33.984926242|2013-09-12 \ No newline at end of file diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index b7de49a8e329..2b5c8821b6ea 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -118,6 +118,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ orc_merge7.q,\ orc_merge_incompat1.q,\ orc_merge_incompat2.q,\ + orc_vectorization_ppd.q,\ parallel.q,\ ptf.q,\ sample1.q,\ @@ -154,26 +155,54 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ update_where_non_partitioned.q,\ update_where_partitioned.q,\ update_two_cols.q,\ + vector_between_in.q,\ vector_cast_constant.q,\ vector_char_simple.q,\ vector_data_types.q,\ vector_decimal_aggregate.q,\ + vector_distinct_2.q,\ + vector_elt.q,\ + vector_groupby_3.q,\ vector_left_outer_join.q,\ vector_mapjoin_reduce.q,\ + vector_non_string_partition.q,\ + vector_orderby_5.q,\ vector_string_concat.q,\ vector_varchar_simple.q,\ vectorization_0.q,\ + vectorization_1.q,\ + vectorization_10.q,\ + vectorization_11.q,\ vectorization_12.q,\ vectorization_13.q,\ vectorization_14.q,\ vectorization_15.q,\ + vectorization_16.q,\ + vectorization_2.q,\ + vectorization_3.q,\ + vectorization_4.q,\ + vectorization_5.q,\ + vectorization_6.q,\ vectorization_9.q,\ + vectorization_decimal_date.q,\ + vectorization_div0.q,\ + vectorization_nested_udf.q,\ + vectorization_not.q,\ + vectorization_part.q,\ vectorization_part_project.q,\ + vectorization_pushdown.q,\ vectorization_short_regress.q,\ + vectorized_bucketmapjoin1.q,\ + vectorized_case.q,\ + vectorized_context.q,\ vectorized_mapjoin.q,\ + vectorized_math_funcs.q,\ vectorized_nested_mapjoin.q,\ + vectorized_parquet.q,\ vectorized_ptf.q,\ + vectorized_rcfile_columnar.q,\ vectorized_shufflejoin.q,\ + vectorized_string_funcs.q,\ vectorized_timestamp_funcs.q,\ auto_sortmerge_join_1.q,\ auto_sortmerge_join_10.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java index e70eb042ebb9..6274cb6c2aa1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java @@ -653,6 +653,21 @@ public void close(boolean aborted) throws HiveException { /** * Sorted reduce group batch processing mode. Each input VectorizedRowBatch will have the * same key. On endGroup (or close), the intermediate values are flushed. + * + * We build the output rows one-at-a-time in the output vectorized row batch (outputBatch) + * in 2 steps: + * + * 1) Just after startGroup, we copy the group key to the next position in the output batch, + * but don't increment the size in the batch (yet). This is done with the copyGroupKey + * method of VectorGroupKeyHelper. The next position is outputBatch.size + * + * We know the same key is used for the whole batch (i.e. repeating) since that is how + * vectorized reduce-shuffle feeds the batches to us. + * + * 2) Later at endGroup after reduce-shuffle has fed us all the input batches for the group, + * we fill in the aggregation columns in outputBatch at outputBatch.size. Our method + * writeGroupRow does this and finally increments outputBatch.size. + * */ private class ProcessingModeGroupBatches extends ProcessingModeBase { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java index 51beb7c57ff4..3c4f6cf1e9c9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java @@ -42,19 +42,38 @@ void init(VectorExpression[] keyExpressions) throws HiveException { finishAdding(); } + /* + * This helper method copies the group keys from one vectorized row batch to another, + * but does not increment the outputBatch.size (i.e. the next output position). + * + * It was designed for VectorGroupByOperator's sorted reduce group batch processing mode + * to copy the group keys at startGroup. + */ public void copyGroupKey(VectorizedRowBatch inputBatch, VectorizedRowBatch outputBatch, DataOutputBuffer buffer) throws HiveException { - // Grab the key at index 0. We don't care about selected or repeating since all keys in the input batch are the same. for(int i = 0; i< longIndices.length; ++i) { int keyIndex = longIndices[i]; LongColumnVector inputColumnVector = (LongColumnVector) inputBatch.cols[keyIndex]; LongColumnVector outputColumnVector = (LongColumnVector) outputBatch.cols[keyIndex]; + + // This vectorized code pattern says: + // If the input batch has no nulls at all (noNulls is true) OR + // the input row is NOT NULL, copy the value. + // + // Otherwise, we have a NULL input value. The standard way to mark a NULL in the + // output batch is: turn off noNulls indicating there is at least one NULL in the batch + // and mark that row as NULL. + // + // When a vectorized row batch is reset, noNulls is set to true and the isNull array + // is zeroed. + // + // We grab the key at index 0. We don't care about selected or repeating since all keys + // in the input batch are suppose to be the same. + // if (inputColumnVector.noNulls || !inputColumnVector.isNull[0]) { outputColumnVector.vector[outputBatch.size] = inputColumnVector.vector[0]; - } else if (inputColumnVector.noNulls ){ - outputColumnVector.noNulls = false; - outputColumnVector.isNull[outputBatch.size] = true; } else { + outputColumnVector.noNulls = false; outputColumnVector.isNull[outputBatch.size] = true; } } @@ -64,10 +83,8 @@ public void copyGroupKey(VectorizedRowBatch inputBatch, VectorizedRowBatch outpu DoubleColumnVector outputColumnVector = (DoubleColumnVector) outputBatch.cols[keyIndex]; if (inputColumnVector.noNulls || !inputColumnVector.isNull[0]) { outputColumnVector.vector[outputBatch.size] = inputColumnVector.vector[0]; - } else if (inputColumnVector.noNulls ){ - outputColumnVector.noNulls = false; - outputColumnVector.isNull[outputBatch.size] = true; } else { + outputColumnVector.noNulls = false; outputColumnVector.isNull[outputBatch.size] = true; } } @@ -85,10 +102,8 @@ public void copyGroupKey(VectorizedRowBatch inputBatch, VectorizedRowBatch outpu throw new IllegalStateException("bad write", ioe); } outputColumnVector.setRef(outputBatch.size, buffer.getData(), start, length); - } else if (inputColumnVector.noNulls ){ - outputColumnVector.noNulls = false; - outputColumnVector.isNull[outputBatch.size] = true; } else { + outputColumnVector.noNulls = false; outputColumnVector.isNull[outputBatch.size] = true; } } @@ -98,10 +113,8 @@ public void copyGroupKey(VectorizedRowBatch inputBatch, VectorizedRowBatch outpu DecimalColumnVector outputColumnVector = (DecimalColumnVector) outputBatch.cols[keyIndex]; if (inputColumnVector.noNulls || !inputColumnVector.isNull[0]) { outputColumnVector.vector[outputBatch.size] = inputColumnVector.vector[0]; - } else if (inputColumnVector.noNulls ){ - outputColumnVector.noNulls = false; - outputColumnVector.isNull[outputBatch.size] = true; } else { + outputColumnVector.noNulls = false; outputColumnVector.isNull[outputBatch.size] = true; } } diff --git a/ql/src/test/queries/clientpositive/vector_distinct_2.q b/ql/src/test/queries/clientpositive/vector_distinct_2.q new file mode 100644 index 000000000000..399936ba413b --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_distinct_2.q @@ -0,0 +1,43 @@ +SET hive.vectorized.execution.enabled=true; + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k; + +create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC; + +INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k; + +explain +select distinct s, t from vectortab2korc; + +select distinct s, t from vectortab2korc; \ No newline at end of file diff --git a/ql/src/test/queries/clientpositive/vector_groupby_3.q b/ql/src/test/queries/clientpositive/vector_groupby_3.q new file mode 100644 index 000000000000..d66b568ee065 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_groupby_3.q @@ -0,0 +1,43 @@ +SET hive.vectorized.execution.enabled=true; + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k; + +create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC; + +INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k; + +explain +select s, t, max(b) from vectortab2korc group by s, t; + +select s, t, max(b) from vectortab2korc group by s, t; \ No newline at end of file diff --git a/ql/src/test/queries/clientpositive/vector_orderby_5.q b/ql/src/test/queries/clientpositive/vector_orderby_5.q new file mode 100644 index 000000000000..571ecc9a2c92 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_orderby_5.q @@ -0,0 +1,43 @@ +SET hive.vectorized.execution.enabled=true; + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k; + +create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC; + +INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k; + +explain +select bo, max(b) from vectortab2korc group by bo order by bo desc; + +select bo, max(b) from vectortab2korc group by bo order by bo desc; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/tez/orc_vectorization_ppd.q.out b/ql/src/test/results/clientpositive/tez/orc_vectorization_ppd.q.out new file mode 100644 index 000000000000..738abc47cbe9 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/orc_vectorization_ppd.q.out @@ -0,0 +1,288 @@ +PREHOOK: query: -- create table with 1000 rows +create table srcorc(key string, value string) stored as textfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@srcorc +POSTHOOK: query: -- create table with 1000 rows +create table srcorc(key string, value string) stored as textfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@srcorc +PREHOOK: query: insert overwrite table srcorc select * from src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@srcorc +POSTHOOK: query: insert overwrite table srcorc select * from src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@srcorc +POSTHOOK: Lineage: srcorc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: srcorc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert into table srcorc select * from src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@srcorc +POSTHOOK: query: insert into table srcorc select * from src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@srcorc +POSTHOOK: Lineage: srcorc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: srcorc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: -- load table with each row group having 1000 rows and stripe 1 & 2 having 5000 & 2000 rows respectively +create table if not exists vectororc +(s1 string, +s2 string, +d double, +s3 string) +stored as ORC tblproperties("orc.row.index.stride"="1000", "orc.stripe.size"="100000", "orc.compress.size"="10000") +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectororc +POSTHOOK: query: -- load table with each row group having 1000 rows and stripe 1 & 2 having 5000 & 2000 rows respectively +create table if not exists vectororc +(s1 string, +s2 string, +d double, +s3 string) +stored as ORC tblproperties("orc.row.index.stride"="1000", "orc.stripe.size"="100000", "orc.compress.size"="10000") +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectororc +PREHOOK: query: -- insert creates separate orc files +insert overwrite table vectororc select "apple", "a", rand(1), "zoo" from srcorc +PREHOOK: type: QUERY +PREHOOK: Input: default@srcorc +PREHOOK: Output: default@vectororc +POSTHOOK: query: -- insert creates separate orc files +insert overwrite table vectororc select "apple", "a", rand(1), "zoo" from srcorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcorc +POSTHOOK: Output: default@vectororc +POSTHOOK: Lineage: vectororc.d EXPRESSION [] +POSTHOOK: Lineage: vectororc.s1 SIMPLE [] +POSTHOOK: Lineage: vectororc.s2 SIMPLE [] +POSTHOOK: Lineage: vectororc.s3 SIMPLE [] +PREHOOK: query: insert into table vectororc select null, "b", rand(2), "zoo" from srcorc +PREHOOK: type: QUERY +PREHOOK: Input: default@srcorc +PREHOOK: Output: default@vectororc +POSTHOOK: query: insert into table vectororc select null, "b", rand(2), "zoo" from srcorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcorc +POSTHOOK: Output: default@vectororc +POSTHOOK: Lineage: vectororc.d EXPRESSION [] +POSTHOOK: Lineage: vectororc.s1 EXPRESSION [] +POSTHOOK: Lineage: vectororc.s2 SIMPLE [] +POSTHOOK: Lineage: vectororc.s3 SIMPLE [] +PREHOOK: query: insert into table vectororc select null, "c", rand(3), "zoo" from srcorc +PREHOOK: type: QUERY +PREHOOK: Input: default@srcorc +PREHOOK: Output: default@vectororc +POSTHOOK: query: insert into table vectororc select null, "c", rand(3), "zoo" from srcorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcorc +POSTHOOK: Output: default@vectororc +POSTHOOK: Lineage: vectororc.d EXPRESSION [] +POSTHOOK: Lineage: vectororc.s1 EXPRESSION [] +POSTHOOK: Lineage: vectororc.s2 SIMPLE [] +POSTHOOK: Lineage: vectororc.s3 SIMPLE [] +PREHOOK: query: insert into table vectororc select "apple", "d", rand(4), "zoo" from srcorc +PREHOOK: type: QUERY +PREHOOK: Input: default@srcorc +PREHOOK: Output: default@vectororc +POSTHOOK: query: insert into table vectororc select "apple", "d", rand(4), "zoo" from srcorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcorc +POSTHOOK: Output: default@vectororc +POSTHOOK: Lineage: vectororc.d EXPRESSION [] +POSTHOOK: Lineage: vectororc.s1 SIMPLE [] +POSTHOOK: Lineage: vectororc.s2 SIMPLE [] +POSTHOOK: Lineage: vectororc.s3 SIMPLE [] +PREHOOK: query: insert into table vectororc select null, "e", rand(5), "z" from srcorc +PREHOOK: type: QUERY +PREHOOK: Input: default@srcorc +PREHOOK: Output: default@vectororc +POSTHOOK: query: insert into table vectororc select null, "e", rand(5), "z" from srcorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcorc +POSTHOOK: Output: default@vectororc +POSTHOOK: Lineage: vectororc.d EXPRESSION [] +POSTHOOK: Lineage: vectororc.s1 EXPRESSION [] +POSTHOOK: Lineage: vectororc.s2 SIMPLE [] +POSTHOOK: Lineage: vectororc.s3 SIMPLE [] +PREHOOK: query: insert into table vectororc select "apple", "f", rand(6), "z" from srcorc +PREHOOK: type: QUERY +PREHOOK: Input: default@srcorc +PREHOOK: Output: default@vectororc +POSTHOOK: query: insert into table vectororc select "apple", "f", rand(6), "z" from srcorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcorc +POSTHOOK: Output: default@vectororc +POSTHOOK: Lineage: vectororc.d EXPRESSION [] +POSTHOOK: Lineage: vectororc.s1 SIMPLE [] +POSTHOOK: Lineage: vectororc.s2 SIMPLE [] +POSTHOOK: Lineage: vectororc.s3 SIMPLE [] +PREHOOK: query: insert into table vectororc select null, "g", rand(7), "zoo" from srcorc +PREHOOK: type: QUERY +PREHOOK: Input: default@srcorc +PREHOOK: Output: default@vectororc +POSTHOOK: query: insert into table vectororc select null, "g", rand(7), "zoo" from srcorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcorc +POSTHOOK: Output: default@vectororc +POSTHOOK: Lineage: vectororc.d EXPRESSION [] +POSTHOOK: Lineage: vectororc.s1 EXPRESSION [] +POSTHOOK: Lineage: vectororc.s2 SIMPLE [] +POSTHOOK: Lineage: vectororc.s3 SIMPLE [] +PREHOOK: query: -- since vectororc table has multiple orc file we will load them into a single file using another table +create table if not exists testorc +(s1 string, +s2 string, +d double, +s3 string) +stored as ORC tblproperties("orc.row.index.stride"="1000", "orc.stripe.size"="100000", "orc.compress.size"="10000") +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@testorc +POSTHOOK: query: -- since vectororc table has multiple orc file we will load them into a single file using another table +create table if not exists testorc +(s1 string, +s2 string, +d double, +s3 string) +stored as ORC tblproperties("orc.row.index.stride"="1000", "orc.stripe.size"="100000", "orc.compress.size"="10000") +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@testorc +PREHOOK: query: insert overwrite table testorc select * from vectororc order by s2 +PREHOOK: type: QUERY +PREHOOK: Input: default@vectororc +PREHOOK: Output: default@testorc +POSTHOOK: query: insert overwrite table testorc select * from vectororc order by s2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectororc +POSTHOOK: Output: default@testorc +POSTHOOK: Lineage: testorc.d SIMPLE [(vectororc)vectororc.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: testorc.s1 SIMPLE [(vectororc)vectororc.FieldSchema(name:s1, type:string, comment:null), ] +POSTHOOK: Lineage: testorc.s2 SIMPLE [(vectororc)vectororc.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: testorc.s3 SIMPLE [(vectororc)vectororc.FieldSchema(name:s3, type:string, comment:null), ] +PREHOOK: query: -- row group (1,4) from stripe 1 and row group (1) from stripe 2 +-- PPD ONLY +select count(*),int(sum(d)) from testorc where s1 is not null +PREHOOK: type: QUERY +PREHOOK: Input: default@testorc +#### A masked pattern was here #### +POSTHOOK: query: -- row group (1,4) from stripe 1 and row group (1) from stripe 2 +-- PPD ONLY +select count(*),int(sum(d)) from testorc where s1 is not null +POSTHOOK: type: QUERY +POSTHOOK: Input: default@testorc +#### A masked pattern was here #### +3000 1505 +PREHOOK: query: -- VECTORIZATION + PPD +select count(*),int(sum(d)) from testorc where s1 is not null +PREHOOK: type: QUERY +PREHOOK: Input: default@testorc +#### A masked pattern was here #### +POSTHOOK: query: -- VECTORIZATION + PPD +select count(*),int(sum(d)) from testorc where s1 is not null +POSTHOOK: type: QUERY +POSTHOOK: Input: default@testorc +#### A masked pattern was here #### +3000 1505 +PREHOOK: query: -- row group (2,3,5) from stripe 1 and row group (2) from stripe 2 +-- PPD ONLY +select count(*),int(sum(d)) from testorc where s2 in ("b", "c", "e", "g") +PREHOOK: type: QUERY +PREHOOK: Input: default@testorc +#### A masked pattern was here #### +POSTHOOK: query: -- row group (2,3,5) from stripe 1 and row group (2) from stripe 2 +-- PPD ONLY +select count(*),int(sum(d)) from testorc where s2 in ("b", "c", "e", "g") +POSTHOOK: type: QUERY +POSTHOOK: Input: default@testorc +#### A masked pattern was here #### +4000 2006 +PREHOOK: query: -- VECTORIZATION + PPD +select count(*),int(sum(d)) from testorc where s2 in ("b", "c", "e", "g") +PREHOOK: type: QUERY +PREHOOK: Input: default@testorc +#### A masked pattern was here #### +POSTHOOK: query: -- VECTORIZATION + PPD +select count(*),int(sum(d)) from testorc where s2 in ("b", "c", "e", "g") +POSTHOOK: type: QUERY +POSTHOOK: Input: default@testorc +#### A masked pattern was here #### +4000 2006 +PREHOOK: query: -- last row group of stripe 1 and first row group of stripe 2 +-- PPD ONLY +select count(*),int(sum(d)) from testorc where s3="z" +PREHOOK: type: QUERY +PREHOOK: Input: default@testorc +#### A masked pattern was here #### +POSTHOOK: query: -- last row group of stripe 1 and first row group of stripe 2 +-- PPD ONLY +select count(*),int(sum(d)) from testorc where s3="z" +POSTHOOK: type: QUERY +POSTHOOK: Input: default@testorc +#### A masked pattern was here #### +2000 1011 +PREHOOK: query: -- VECTORIZATION + PPD +select count(*),int(sum(d)) from testorc where s3="z" +PREHOOK: type: QUERY +PREHOOK: Input: default@testorc +#### A masked pattern was here #### +POSTHOOK: query: -- VECTORIZATION + PPD +select count(*),int(sum(d)) from testorc where s3="z" +POSTHOOK: type: QUERY +POSTHOOK: Input: default@testorc +#### A masked pattern was here #### +2000 1011 +PREHOOK: query: -- first row group of stripe 1 and last row group of stripe 2 +-- PPD ONLY +select count(*),int(sum(d)) from testorc where s2="a" or s2="g" +PREHOOK: type: QUERY +PREHOOK: Input: default@testorc +#### A masked pattern was here #### +POSTHOOK: query: -- first row group of stripe 1 and last row group of stripe 2 +-- PPD ONLY +select count(*),int(sum(d)) from testorc where s2="a" or s2="g" +POSTHOOK: type: QUERY +POSTHOOK: Input: default@testorc +#### A masked pattern was here #### +2000 1006 +PREHOOK: query: -- VECTORIZATION + PPD +select count(*),int(sum(d)) from testorc where s2="a" or s2="g" +PREHOOK: type: QUERY +PREHOOK: Input: default@testorc +#### A masked pattern was here #### +POSTHOOK: query: -- VECTORIZATION + PPD +select count(*),int(sum(d)) from testorc where s2="a" or s2="g" +POSTHOOK: type: QUERY +POSTHOOK: Input: default@testorc +#### A masked pattern was here #### +2000 1006 +PREHOOK: query: drop table srcorc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@srcorc +PREHOOK: Output: default@srcorc +POSTHOOK: query: drop table srcorc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@srcorc +POSTHOOK: Output: default@srcorc +PREHOOK: query: drop table vectororc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@vectororc +PREHOOK: Output: default@vectororc +POSTHOOK: query: drop table vectororc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@vectororc +POSTHOOK: Output: default@vectororc +PREHOOK: query: drop table testorc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@testorc +PREHOOK: Output: default@testorc +POSTHOOK: query: drop table testorc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@testorc +POSTHOOK: Output: default@testorc diff --git a/ql/src/test/results/clientpositive/tez/vector_between_in.q.out b/ql/src/test/results/clientpositive/tez/vector_between_in.q.out new file mode 100644 index 000000000000..a7037f750d05 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_between_in.q.out @@ -0,0 +1,740 @@ +PREHOOK: query: CREATE TABLE decimal_date_test STORED AS ORC AS SELECT cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2, CAST(CAST((CAST(cint AS BIGINT) *ctinyint) AS TIMESTAMP) AS DATE) AS cdate FROM alltypesorc ORDER BY cdate +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_date_test +POSTHOOK: query: CREATE TABLE decimal_date_test STORED AS ORC AS SELECT cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2, CAST(CAST((CAST(cint AS BIGINT) *ctinyint) AS TIMESTAMP) AS DATE) AS cdate FROM alltypesorc ORDER BY cdate +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_date_test +PREHOOK: query: EXPLAIN SELECT cdate FROM decimal_date_test WHERE cdate IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE)) ORDER BY cdate +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cdate FROM decimal_date_test WHERE cdate IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE)) ORDER BY cdate +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_date_test + Statistics: Num rows: 12288 Data size: 2467616 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cdate) IN (1969-10-26, 1969-07-14) (type: boolean) + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cdate (type: date) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: date) + sort order: + + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: date) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: EXPLAIN SELECT COUNT(*) FROM decimal_date_test WHERE cdate NOT IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE), CAST("1970-01-21" AS DATE)) +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT COUNT(*) FROM decimal_date_test WHERE cdate NOT IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE), CAST("1970-01-21" AS DATE)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_date_test + Statistics: Num rows: 12288 Data size: 2467616 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (not (cdate) IN (1969-10-26, 1969-07-14, 1970-01-21)) (type: boolean) + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Select Operator + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + 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: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: EXPLAIN SELECT cdecimal1 FROM decimal_date_test WHERE cdecimal1 IN (2365.8945945946, 881.0135135135, -3367.6517567568) ORDER BY cdecimal1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cdecimal1 FROM decimal_date_test WHERE cdecimal1 IN (2365.8945945946, 881.0135135135, -3367.6517567568) ORDER BY cdecimal1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_date_test + Statistics: Num rows: 12288 Data size: 2467616 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cdecimal1) IN (2365.8945945946, 881.0135135135, -3367.6517567568) (type: boolean) + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cdecimal1 (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(20,10)) + sort order: + + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: EXPLAIN SELECT COUNT(*) FROM decimal_date_test WHERE cdecimal1 NOT IN (2365.8945945946, 881.0135135135, -3367.6517567568) +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT COUNT(*) FROM decimal_date_test WHERE cdecimal1 NOT IN (2365.8945945946, 881.0135135135, -3367.6517567568) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_date_test + Statistics: Num rows: 12288 Data size: 2467616 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (not (cdecimal1) IN (2365.8945945946, 881.0135135135, -3367.6517567568)) (type: boolean) + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Select Operator + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + 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: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: EXPLAIN SELECT cdate FROM decimal_date_test WHERE cdate BETWEEN CAST("1969-12-30" AS DATE) AND CAST("1970-01-02" AS DATE) ORDER BY cdate +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cdate FROM decimal_date_test WHERE cdate BETWEEN CAST("1969-12-30" AS DATE) AND CAST("1970-01-02" AS DATE) ORDER BY cdate +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_date_test + Statistics: Num rows: 12288 Data size: 2467616 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: cdate BETWEEN 1969-12-30 AND 1970-01-02 (type: boolean) + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cdate (type: date) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: date) + sort order: + + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: date) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: EXPLAIN SELECT cdate FROM decimal_date_test WHERE cdate NOT BETWEEN CAST("1968-05-01" AS DATE) AND CAST("1971-09-01" AS DATE) ORDER BY cdate +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cdate FROM decimal_date_test WHERE cdate NOT BETWEEN CAST("1968-05-01" AS DATE) AND CAST("1971-09-01" AS DATE) ORDER BY cdate +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_date_test + Statistics: Num rows: 12288 Data size: 2467616 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: cdate NOT BETWEEN 1968-05-01 AND 1971-09-01 (type: boolean) + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cdate (type: date) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: date) + sort order: + + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: date) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: EXPLAIN SELECT cdecimal1 FROM decimal_date_test WHERE cdecimal1 BETWEEN -20 AND 45.9918918919 ORDER BY cdecimal1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cdecimal1 FROM decimal_date_test WHERE cdecimal1 BETWEEN -20 AND 45.9918918919 ORDER BY cdecimal1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_date_test + Statistics: Num rows: 12288 Data size: 2467616 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: cdecimal1 BETWEEN -20 AND 45.9918918919 (type: boolean) + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cdecimal1 (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(20,10)) + sort order: + + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: EXPLAIN SELECT COUNT(*) FROM decimal_date_test WHERE cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT COUNT(*) FROM decimal_date_test WHERE cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_date_test + Statistics: Num rows: 12288 Data size: 2467616 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 (type: boolean) + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Select Operator + Statistics: Num rows: 6144 Data size: 1233808 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + 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: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cdate FROM decimal_date_test WHERE cdate IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE)) ORDER BY cdate +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdate FROM decimal_date_test WHERE cdate IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE)) ORDER BY cdate +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +1969-07-14 +1969-07-14 +1969-07-14 +1969-07-14 +1969-07-14 +1969-07-14 +1969-07-14 +1969-07-14 +1969-07-14 +1969-07-14 +1969-07-14 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +1969-10-26 +PREHOOK: query: SELECT COUNT(*) FROM decimal_date_test WHERE cdate NOT IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE), CAST("1970-01-21" AS DATE)) +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(*) FROM decimal_date_test WHERE cdate NOT IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE), CAST("1970-01-21" AS DATE)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +5996 +PREHOOK: query: SELECT cdecimal1 FROM decimal_date_test WHERE cdecimal1 IN (2365.8945945946, 881.0135135135, -3367.6517567568) ORDER BY cdecimal1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdecimal1 FROM decimal_date_test WHERE cdecimal1 IN (2365.8945945946, 881.0135135135, -3367.6517567568) ORDER BY cdecimal1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +-3367.6517567568 +-3367.6517567568 +-3367.6517567568 +-3367.6517567568 +-3367.6517567568 +-3367.6517567568 +-3367.6517567568 +881.0135135135 +2365.8945945946 +PREHOOK: query: SELECT COUNT(*) FROM decimal_date_test WHERE cdecimal1 NOT IN (2365.8945945946, 881.0135135135, -3367.6517567568) +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(*) FROM decimal_date_test WHERE cdecimal1 NOT IN (2365.8945945946, 881.0135135135, -3367.6517567568) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +9165 +PREHOOK: query: SELECT cdate FROM decimal_date_test WHERE cdate BETWEEN CAST("1969-12-30" AS DATE) AND CAST("1970-01-02" AS DATE) ORDER BY cdate +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdate FROM decimal_date_test WHERE cdate BETWEEN CAST("1969-12-30" AS DATE) AND CAST("1970-01-02" AS DATE) ORDER BY cdate +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +1969-12-30 +1969-12-30 +1969-12-30 +1969-12-30 +1969-12-30 +1969-12-30 +1969-12-30 +1969-12-30 +1969-12-31 +1969-12-31 +1969-12-31 +1969-12-31 +1969-12-31 +1969-12-31 +1969-12-31 +1969-12-31 +1969-12-31 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-01 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +1970-01-02 +PREHOOK: query: SELECT cdate FROM decimal_date_test WHERE cdate NOT BETWEEN CAST("1968-05-01" AS DATE) AND CAST("1971-09-01" AS DATE) ORDER BY cdate +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdate FROM decimal_date_test WHERE cdate NOT BETWEEN CAST("1968-05-01" AS DATE) AND CAST("1971-09-01" AS DATE) ORDER BY cdate +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +1968-04-07 +1968-04-09 +1968-04-10 +1968-04-14 +1968-04-16 +1968-04-16 +1968-04-19 +1968-04-23 +1968-04-25 +1968-04-26 +1968-04-27 +1968-04-27 +1968-04-27 +1968-04-29 +1968-04-29 +1968-04-29 +1968-04-29 +1968-04-30 +1971-09-02 +1971-09-04 +1971-09-06 +1971-09-06 +1971-09-06 +1971-09-09 +1971-09-09 +1971-09-15 +1971-09-17 +1971-09-18 +1971-09-21 +1971-09-21 +1971-09-21 +1971-09-22 +1971-09-22 +1971-09-25 +PREHOOK: query: SELECT cdecimal1 FROM decimal_date_test WHERE cdecimal1 BETWEEN -20 AND 45.9918918919 ORDER BY cdecimal1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdecimal1 FROM decimal_date_test WHERE cdecimal1 BETWEEN -20 AND 45.9918918919 ORDER BY cdecimal1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +-18.5162162162 +-17.3216216216 +-16.7243243243 +-16.1270270270 +-15.5297297297 +-10.7513513514 +-9.5567567568 +-8.3621621622 +-5.9729729730 +-3.5837837838 +4.1810810811 +4.7783783784 +4.7783783784 +5.3756756757 +5.9729729730 +5.9729729730 +11.3486486486 +11.3486486486 +11.9459459459 +14.9324324324 +19.1135135135 +20.3081081081 +22.1000000000 +24.4891891892 +33.4486486486 +34.6432432432 +40.0189189189 +42.4081081081 +43.0054054054 +44.2000000000 +44.2000000000 +44.7972972973 +45.9918918919 +PREHOOK: query: SELECT COUNT(*) FROM decimal_date_test WHERE cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(*) FROM decimal_date_test WHERE cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_date_test +#### A masked pattern was here #### +6172 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out index b5f55467b76b..f1b7b8bee600 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out @@ -113,7 +113,7 @@ POSTHOOK: query: SELECT cint, POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_vgby #### A masked pattern was here #### -0 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 3072 11160.71538461538500 -5147.90769230769300 6010604.30769230735360 +NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 3072 11160.71538461538500 -5147.90769230769300 6010604.30769230735360 -3728 6 5831542.2692483780 -3367.6517567568 5817556.0411483778 6 6984454.21109769200000 -4033.445769230769 6967702.86724384584710 -563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 2 -617.56077692307690 -4033.445769230769 -4651.00654615384590 762 2 5831542.2692483780 1531.2194054054 5833073.4886537834 2 6984454.21109769200000 1833.9456923076925 6986288.15678999969250 diff --git a/ql/src/test/results/clientpositive/tez/vector_distinct_2.q.out b/ql/src/test/results/clientpositive/tez/vector_distinct_2.q.out new file mode 100644 index 000000000000..1ae59827a0d4 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_distinct_2.q.out @@ -0,0 +1,1866 @@ +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select distinct s, t from vectortab2korc +PREHOOK: type: QUERY +POSTHOOK: query: explain +select distinct s, t from vectortab2korc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: s (type: string), t (type: tinyint) + outputColumnNames: s, t + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: s (type: string), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: tinyint) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: tinyint) + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: tinyint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select distinct s, t from vectortab2korc +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select distinct s, t from vectortab2korc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### + NULL + -116 + -114 + -113 + -108 + -107 + -104 + -91 + -87 + -86 + -85 + -84 + -83 + -80 + -75 + -72 + -66 + -53 + -46 + -38 + -36 + -33 + -29 + -28 + -25 + -24 + -19 + -16 + -14 + -12 + -10 + -5 + -4 + -2 + 0 + 4 + 5 + 8 + 12 + 16 + 19 + 22 + 23 + 26 + 29 + 31 + 37 + 42 + 46 + 48 + 54 + 57 + 59 + 60 + 62 + 64 + 79 + 84 + 87 + 88 + 90 + 91 + 96 + 97 + 102 + 103 + 105 + 109 + 112 + 113 + 114 + 123 +american history NULL +american history -127 +american history -119 +american history -116 +american history -112 +american history -110 +american history -108 +american history -105 +american history -103 +american history -101 +american history -95 +american history -94 +american history -92 +american history -90 +american history -89 +american history -87 +american history -86 +american history -81 +american history -80 +american history -73 +american history -66 +american history -60 +american history -59 +american history -55 +american history -53 +american history -50 +american history -48 +american history -47 +american history -34 +american history -30 +american history -28 +american history -27 +american history -26 +american history -19 +american history -18 +american history -17 +american history -15 +american history -11 +american history -9 +american history 0 +american history 5 +american history 20 +american history 22 +american history 29 +american history 31 +american history 33 +american history 38 +american history 39 +american history 40 +american history 42 +american history 46 +american history 48 +american history 54 +american history 56 +american history 60 +american history 68 +american history 69 +american history 71 +american history 72 +american history 74 +american history 77 +american history 79 +american history 82 +american history 84 +american history 89 +american history 96 +american history 100 +american history 103 +american history 111 +american history 119 +american history 122 +american history 123 +biology NULL +biology -127 +biology -121 +biology -120 +biology -119 +biology -104 +biology -101 +biology -98 +biology -97 +biology -96 +biology -92 +biology -90 +biology -86 +biology -85 +biology -83 +biology -82 +biology -81 +biology -79 +biology -72 +biology -67 +biology -66 +biology -59 +biology -57 +biology -54 +biology -53 +biology -49 +biology -46 +biology -44 +biology -42 +biology -40 +biology -36 +biology -35 +biology -31 +biology -20 +biology -19 +biology -16 +biology -13 +biology -7 +biology -6 +biology -5 +biology 0 +biology 2 +biology 3 +biology 4 +biology 5 +biology 6 +biology 7 +biology 8 +biology 12 +biology 18 +biology 27 +biology 30 +biology 34 +biology 35 +biology 36 +biology 41 +biology 47 +biology 51 +biology 52 +biology 54 +biology 55 +biology 57 +biology 64 +biology 83 +biology 86 +biology 89 +biology 90 +biology 91 +biology 100 +biology 111 +biology 113 +biology 114 +biology 115 +biology 117 +biology 120 +biology 124 +chemistry NULL +chemistry -127 +chemistry -125 +chemistry -122 +chemistry -117 +chemistry -115 +chemistry -110 +chemistry -109 +chemistry -108 +chemistry -103 +chemistry -101 +chemistry -98 +chemistry -95 +chemistry -91 +chemistry -90 +chemistry -89 +chemistry -81 +chemistry -75 +chemistry -68 +chemistry -61 +chemistry -59 +chemistry -57 +chemistry -56 +chemistry -52 +chemistry -46 +chemistry -44 +chemistry -40 +chemistry -37 +chemistry -33 +chemistry -31 +chemistry -30 +chemistry -26 +chemistry -23 +chemistry -8 +chemistry -3 +chemistry -2 +chemistry 3 +chemistry 4 +chemistry 8 +chemistry 14 +chemistry 16 +chemistry 19 +chemistry 25 +chemistry 27 +chemistry 32 +chemistry 37 +chemistry 39 +chemistry 41 +chemistry 46 +chemistry 51 +chemistry 55 +chemistry 64 +chemistry 74 +chemistry 75 +chemistry 78 +chemistry 79 +chemistry 83 +chemistry 88 +chemistry 90 +chemistry 91 +chemistry 96 +chemistry 102 +chemistry 104 +chemistry 110 +chemistry 113 +chemistry 116 +chemistry 124 +chemistry 126 +debate NULL +debate -127 +debate -117 +debate -114 +debate -108 +debate -106 +debate -98 +debate -96 +debate -95 +debate -88 +debate -87 +debate -86 +debate -85 +debate -82 +debate -72 +debate -70 +debate -69 +debate -67 +debate -57 +debate -52 +debate -50 +debate -47 +debate -46 +debate -41 +debate -35 +debate -32 +debate -29 +debate -28 +debate -27 +debate -26 +debate -24 +debate -15 +debate -12 +debate -3 +debate 5 +debate 17 +debate 19 +debate 20 +debate 26 +debate 34 +debate 36 +debate 41 +debate 42 +debate 52 +debate 54 +debate 56 +debate 63 +debate 67 +debate 68 +debate 69 +debate 70 +debate 73 +debate 75 +debate 77 +debate 85 +debate 87 +debate 89 +debate 90 +debate 93 +debate 94 +debate 113 +debate 124 +education NULL +education -127 +education -125 +education -113 +education -111 +education -109 +education -105 +education -101 +education -98 +education -96 +education -93 +education -92 +education -89 +education -87 +education -86 +education -77 +education -72 +education -69 +education -64 +education -61 +education -55 +education -52 +education -44 +education -43 +education -38 +education -37 +education -36 +education -34 +education -28 +education -24 +education -15 +education -13 +education -9 +education 4 +education 12 +education 17 +education 27 +education 33 +education 34 +education 35 +education 38 +education 41 +education 45 +education 46 +education 49 +education 51 +education 53 +education 59 +education 61 +education 66 +education 73 +education 75 +education 77 +education 81 +education 82 +education 85 +education 89 +education 95 +education 102 +education 103 +education 110 +education 111 +education 113 +education 114 +education 116 +education 119 +education 125 +forestry NULL +forestry -126 +forestry -118 +forestry -116 +forestry -109 +forestry -105 +forestry -98 +forestry -95 +forestry -94 +forestry -83 +forestry -81 +forestry -80 +forestry -79 +forestry -77 +forestry -74 +forestry -73 +forestry -68 +forestry -58 +forestry -51 +forestry -50 +forestry -49 +forestry -42 +forestry -34 +forestry -23 +forestry -12 +forestry -11 +forestry -10 +forestry -8 +forestry -3 +forestry -1 +forestry 0 +forestry 7 +forestry 8 +forestry 11 +forestry 12 +forestry 19 +forestry 29 +forestry 31 +forestry 35 +forestry 37 +forestry 39 +forestry 40 +forestry 44 +forestry 45 +forestry 50 +forestry 51 +forestry 52 +forestry 55 +forestry 56 +forestry 71 +forestry 78 +forestry 79 +forestry 87 +forestry 90 +forestry 93 +forestry 94 +forestry 97 +forestry 102 +forestry 106 +forestry 107 +forestry 111 +forestry 115 +forestry 117 +forestry 120 +geology NULL +geology -124 +geology -117 +geology -115 +geology -112 +geology -108 +geology -106 +geology -101 +geology -100 +geology -96 +geology -94 +geology -84 +geology -82 +geology -80 +geology -79 +geology -75 +geology -72 +geology -68 +geology -59 +geology -57 +geology -54 +geology -53 +geology -50 +geology -48 +geology -35 +geology -34 +geology -32 +geology -31 +geology -30 +geology -23 +geology -21 +geology -18 +geology -16 +geology 1 +geology 4 +geology 5 +geology 6 +geology 9 +geology 14 +geology 18 +geology 21 +geology 23 +geology 26 +geology 28 +geology 31 +geology 33 +geology 37 +geology 38 +geology 49 +geology 58 +geology 72 +geology 82 +geology 84 +geology 86 +geology 89 +geology 92 +geology 93 +geology 95 +geology 100 +geology 101 +geology 102 +geology 116 +geology 121 +geology 124 +geology 127 +history NULL +history -125 +history -124 +history -105 +history -104 +history -103 +history -101 +history -98 +history -91 +history -90 +history -89 +history -79 +history -75 +history -67 +history -61 +history -58 +history -54 +history -42 +history -37 +history -34 +history -26 +history -24 +history -19 +history -18 +history -15 +history -12 +history -8 +history -5 +history -1 +history 1 +history 2 +history 7 +history 14 +history 18 +history 25 +history 50 +history 51 +history 52 +history 57 +history 58 +history 59 +history 61 +history 62 +history 71 +history 72 +history 73 +history 75 +history 78 +history 84 +history 92 +history 95 +history 98 +history 100 +history 108 +history 112 +history 113 +history 114 +history 126 +history 127 +industrial engineering NULL +industrial engineering -124 +industrial engineering -110 +industrial engineering -101 +industrial engineering -98 +industrial engineering -96 +industrial engineering -87 +industrial engineering -85 +industrial engineering -72 +industrial engineering -68 +industrial engineering -65 +industrial engineering -58 +industrial engineering -57 +industrial engineering -53 +industrial engineering -49 +industrial engineering -47 +industrial engineering -43 +industrial engineering -38 +industrial engineering -35 +industrial engineering -31 +industrial engineering -30 +industrial engineering -28 +industrial engineering -22 +industrial engineering -11 +industrial engineering -7 +industrial engineering -6 +industrial engineering -5 +industrial engineering -1 +industrial engineering 3 +industrial engineering 7 +industrial engineering 27 +industrial engineering 29 +industrial engineering 32 +industrial engineering 33 +industrial engineering 36 +industrial engineering 42 +industrial engineering 43 +industrial engineering 48 +industrial engineering 54 +industrial engineering 58 +industrial engineering 59 +industrial engineering 70 +industrial engineering 73 +industrial engineering 78 +industrial engineering 79 +industrial engineering 83 +industrial engineering 95 +industrial engineering 96 +industrial engineering 98 +industrial engineering 99 +industrial engineering 102 +industrial engineering 104 +industrial engineering 105 +industrial engineering 106 +industrial engineering 113 +industrial engineering 126 +joggying NULL +joggying -125 +joggying -121 +joggying -119 +joggying -110 +joggying -101 +joggying -100 +joggying -80 +joggying -79 +joggying -77 +joggying -76 +joggying -73 +joggying -69 +joggying -64 +joggying -62 +joggying -61 +joggying -57 +joggying -55 +joggying -48 +joggying -47 +joggying -43 +joggying -40 +joggying -30 +joggying -27 +joggying -24 +joggying -15 +joggying -14 +joggying -8 +joggying -1 +joggying 13 +joggying 20 +joggying 25 +joggying 26 +joggying 27 +joggying 28 +joggying 37 +joggying 43 +joggying 46 +joggying 48 +joggying 49 +joggying 52 +joggying 57 +joggying 61 +joggying 62 +joggying 69 +joggying 70 +joggying 72 +joggying 74 +joggying 80 +joggying 85 +joggying 87 +joggying 92 +joggying 93 +joggying 94 +joggying 97 +joggying 99 +joggying 104 +joggying 105 +joggying 118 +joggying 119 +joggying 121 +joggying 123 +joggying 125 +kindergarten NULL +kindergarten -126 +kindergarten -113 +kindergarten -106 +kindergarten -98 +kindergarten -95 +kindergarten -92 +kindergarten -79 +kindergarten -78 +kindergarten -75 +kindergarten -74 +kindergarten -69 +kindergarten -60 +kindergarten -59 +kindergarten -57 +kindergarten -54 +kindergarten -42 +kindergarten -40 +kindergarten -26 +kindergarten -18 +kindergarten -8 +kindergarten 10 +kindergarten 16 +kindergarten 18 +kindergarten 19 +kindergarten 23 +kindergarten 29 +kindergarten 37 +kindergarten 46 +kindergarten 48 +kindergarten 51 +kindergarten 52 +kindergarten 55 +kindergarten 61 +kindergarten 66 +kindergarten 69 +kindergarten 82 +kindergarten 84 +kindergarten 85 +kindergarten 86 +kindergarten 90 +kindergarten 92 +kindergarten 96 +kindergarten 100 +kindergarten 101 +kindergarten 109 +kindergarten 111 +kindergarten 116 +kindergarten 118 +kindergarten 120 +kindergarten 122 +kindergarten 127 +linguistics NULL +linguistics -127 +linguistics -122 +linguistics -113 +linguistics -101 +linguistics -90 +linguistics -89 +linguistics -87 +linguistics -86 +linguistics -78 +linguistics -77 +linguistics -73 +linguistics -70 +linguistics -69 +linguistics -68 +linguistics -67 +linguistics -53 +linguistics -52 +linguistics -41 +linguistics -34 +linguistics -28 +linguistics -22 +linguistics -20 +linguistics -17 +linguistics -16 +linguistics -14 +linguistics -13 +linguistics -12 +linguistics -6 +linguistics -4 +linguistics -2 +linguistics 0 +linguistics 1 +linguistics 3 +linguistics 6 +linguistics 7 +linguistics 10 +linguistics 11 +linguistics 18 +linguistics 33 +linguistics 37 +linguistics 42 +linguistics 44 +linguistics 50 +linguistics 53 +linguistics 64 +linguistics 67 +linguistics 72 +linguistics 73 +linguistics 83 +linguistics 89 +linguistics 93 +linguistics 96 +linguistics 98 +linguistics 100 +linguistics 113 +linguistics 115 +linguistics 123 +linguistics 125 +linguistics 126 +mathematics NULL +mathematics -127 +mathematics -124 +mathematics -122 +mathematics -120 +mathematics -118 +mathematics -117 +mathematics -103 +mathematics -101 +mathematics -100 +mathematics -99 +mathematics -98 +mathematics -95 +mathematics -91 +mathematics -88 +mathematics -81 +mathematics -79 +mathematics -77 +mathematics -75 +mathematics -66 +mathematics -57 +mathematics -52 +mathematics -50 +mathematics -49 +mathematics -46 +mathematics -45 +mathematics -40 +mathematics -33 +mathematics -31 +mathematics -21 +mathematics -19 +mathematics -7 +mathematics 0 +mathematics 3 +mathematics 6 +mathematics 10 +mathematics 22 +mathematics 23 +mathematics 25 +mathematics 32 +mathematics 35 +mathematics 38 +mathematics 39 +mathematics 46 +mathematics 48 +mathematics 50 +mathematics 53 +mathematics 55 +mathematics 56 +mathematics 58 +mathematics 59 +mathematics 62 +mathematics 63 +mathematics 65 +mathematics 76 +mathematics 79 +mathematics 80 +mathematics 82 +mathematics 87 +mathematics 92 +mathematics 98 +mathematics 102 +mathematics 107 +mathematics 111 +mathematics 114 +nap time NULL +nap time -122 +nap time -119 +nap time -115 +nap time -113 +nap time -104 +nap time -102 +nap time -101 +nap time -91 +nap time -85 +nap time -71 +nap time -61 +nap time -54 +nap time -49 +nap time -45 +nap time -41 +nap time -31 +nap time -15 +nap time -6 +nap time -4 +nap time -2 +nap time 0 +nap time 3 +nap time 6 +nap time 16 +nap time 23 +nap time 27 +nap time 31 +nap time 35 +nap time 42 +nap time 51 +nap time 52 +nap time 56 +nap time 62 +nap time 69 +nap time 70 +nap time 73 +nap time 76 +nap time 80 +nap time 89 +nap time 90 +nap time 92 +nap time 93 +nap time 98 +nap time 103 +nap time 104 +nap time 105 +nap time 107 +nap time 108 +nap time 118 +opthamology NULL +opthamology -122 +opthamology -121 +opthamology -118 +opthamology -111 +opthamology -99 +opthamology -97 +opthamology -91 +opthamology -86 +opthamology -82 +opthamology -79 +opthamology -78 +opthamology -77 +opthamology -75 +opthamology -73 +opthamology -63 +opthamology -59 +opthamology -55 +opthamology -49 +opthamology -48 +opthamology -44 +opthamology -35 +opthamology -33 +opthamology -30 +opthamology -28 +opthamology -27 +opthamology -24 +opthamology -22 +opthamology -18 +opthamology -17 +opthamology -14 +opthamology -8 +opthamology -5 +opthamology 4 +opthamology 5 +opthamology 21 +opthamology 39 +opthamology 41 +opthamology 48 +opthamology 49 +opthamology 52 +opthamology 53 +opthamology 55 +opthamology 68 +opthamology 69 +opthamology 74 +opthamology 76 +opthamology 77 +opthamology 79 +opthamology 81 +opthamology 84 +opthamology 87 +opthamology 88 +opthamology 89 +opthamology 92 +opthamology 96 +opthamology 97 +opthamology 100 +opthamology 104 +opthamology 117 +opthamology 120 +opthamology 122 +opthamology 125 +opthamology 127 +philosophy NULL +philosophy -125 +philosophy -121 +philosophy -119 +philosophy -115 +philosophy -110 +philosophy -105 +philosophy -103 +philosophy -100 +philosophy -99 +philosophy -95 +philosophy -93 +philosophy -92 +philosophy -80 +philosophy -78 +philosophy -77 +philosophy -69 +philosophy -68 +philosophy -61 +philosophy -56 +philosophy -55 +philosophy -53 +philosophy -52 +philosophy -51 +philosophy -50 +philosophy -40 +philosophy -39 +philosophy -27 +philosophy -26 +philosophy -25 +philosophy -17 +philosophy -11 +philosophy 8 +philosophy 20 +philosophy 21 +philosophy 22 +philosophy 29 +philosophy 31 +philosophy 34 +philosophy 38 +philosophy 41 +philosophy 43 +philosophy 45 +philosophy 48 +philosophy 64 +philosophy 67 +philosophy 68 +philosophy 73 +philosophy 83 +philosophy 96 +philosophy 98 +philosophy 104 +philosophy 108 +philosophy 117 +philosophy 118 +philosophy 120 +philosophy 123 +quiet hour NULL +quiet hour -127 +quiet hour -123 +quiet hour -121 +quiet hour -119 +quiet hour -114 +quiet hour -111 +quiet hour -105 +quiet hour -104 +quiet hour -88 +quiet hour -87 +quiet hour -76 +quiet hour -73 +quiet hour -68 +quiet hour -66 +quiet hour -65 +quiet hour -56 +quiet hour -55 +quiet hour -52 +quiet hour -50 +quiet hour -48 +quiet hour -45 +quiet hour -42 +quiet hour -41 +quiet hour -33 +quiet hour -31 +quiet hour -25 +quiet hour -14 +quiet hour -8 +quiet hour -1 +quiet hour 0 +quiet hour 6 +quiet hour 7 +quiet hour 8 +quiet hour 13 +quiet hour 21 +quiet hour 23 +quiet hour 29 +quiet hour 30 +quiet hour 33 +quiet hour 35 +quiet hour 38 +quiet hour 43 +quiet hour 58 +quiet hour 60 +quiet hour 66 +quiet hour 71 +quiet hour 74 +quiet hour 80 +quiet hour 82 +quiet hour 84 +quiet hour 93 +quiet hour 98 +quiet hour 110 +quiet hour 112 +quiet hour 115 +quiet hour 120 +quiet hour 121 +quiet hour 123 +religion NULL +religion -125 +religion -106 +religion -104 +religion -94 +religion -93 +religion -81 +religion -78 +religion -77 +religion -76 +religion -71 +religion -70 +religion -69 +religion -64 +religion -62 +religion -60 +religion -56 +religion -44 +religion -42 +religion -41 +religion -38 +religion -35 +religion -32 +religion -29 +religion -28 +religion -26 +religion -24 +religion -23 +religion -9 +religion -7 +religion -3 +religion 0 +religion 2 +religion 4 +religion 5 +religion 15 +religion 17 +religion 29 +religion 31 +religion 38 +religion 44 +religion 45 +religion 49 +religion 52 +religion 54 +religion 58 +religion 67 +religion 70 +religion 73 +religion 74 +religion 76 +religion 78 +religion 82 +religion 92 +religion 93 +religion 96 +religion 97 +religion 102 +religion 103 +religion 106 +religion 107 +religion 110 +religion 115 +religion 120 +religion 123 +religion 124 +study skills NULL +study skills -127 +study skills -126 +study skills -117 +study skills -107 +study skills -106 +study skills -100 +study skills -88 +study skills -86 +study skills -82 +study skills -81 +study skills -76 +study skills -73 +study skills -65 +study skills -52 +study skills -36 +study skills -33 +study skills -27 +study skills -26 +study skills -22 +study skills -17 +study skills -14 +study skills -13 +study skills -6 +study skills -5 +study skills -4 +study skills -3 +study skills -1 +study skills 2 +study skills 3 +study skills 18 +study skills 21 +study skills 23 +study skills 25 +study skills 28 +study skills 29 +study skills 30 +study skills 35 +study skills 39 +study skills 40 +study skills 47 +study skills 49 +study skills 50 +study skills 54 +study skills 55 +study skills 58 +study skills 62 +study skills 63 +study skills 66 +study skills 68 +study skills 72 +study skills 77 +study skills 80 +study skills 83 +study skills 92 +study skills 95 +study skills 96 +study skills 101 +study skills 106 +study skills 107 +study skills 110 +study skills 115 +study skills 119 +study skills 123 +topology NULL +topology -122 +topology -116 +topology -106 +topology -105 +topology -102 +topology -98 +topology -96 +topology -88 +topology -86 +topology -78 +topology -74 +topology -71 +topology -60 +topology -58 +topology -57 +topology -50 +topology -44 +topology -42 +topology -41 +topology -36 +topology -32 +topology -31 +topology -25 +topology -21 +topology -5 +topology -1 +topology 7 +topology 11 +topology 13 +topology 14 +topology 18 +topology 26 +topology 30 +topology 38 +topology 41 +topology 42 +topology 47 +topology 50 +topology 52 +topology 54 +topology 55 +topology 58 +topology 59 +topology 61 +topology 63 +topology 67 +topology 69 +topology 71 +topology 80 +topology 81 +topology 83 +topology 86 +topology 87 +topology 94 +topology 105 +topology 107 +topology 119 +topology 121 +topology 127 +undecided NULL +undecided -120 +undecided -118 +undecided -117 +undecided -116 +undecided -115 +undecided -114 +undecided -112 +undecided -105 +undecided -104 +undecided -96 +undecided -93 +undecided -90 +undecided -84 +undecided -83 +undecided -78 +undecided -69 +undecided -62 +undecided -53 +undecided -52 +undecided -51 +undecided -43 +undecided -41 +undecided -29 +undecided -28 +undecided -23 +undecided -19 +undecided -13 +undecided -10 +undecided -8 +undecided 0 +undecided 1 +undecided 7 +undecided 11 +undecided 13 +undecided 14 +undecided 27 +undecided 30 +undecided 33 +undecided 37 +undecided 45 +undecided 47 +undecided 50 +undecided 51 +undecided 56 +undecided 69 +undecided 76 +undecided 95 +undecided 97 +undecided 98 +undecided 111 +undecided 114 +undecided 119 +undecided 123 +undecided 124 +values clariffication NULL +values clariffication -123 +values clariffication -119 +values clariffication -114 +values clariffication -109 +values clariffication -108 +values clariffication -107 +values clariffication -105 +values clariffication -100 +values clariffication -98 +values clariffication -97 +values clariffication -95 +values clariffication -92 +values clariffication -90 +values clariffication -81 +values clariffication -75 +values clariffication -70 +values clariffication -69 +values clariffication -67 +values clariffication -63 +values clariffication -62 +values clariffication -60 +values clariffication -55 +values clariffication -51 +values clariffication -50 +values clariffication -48 +values clariffication -46 +values clariffication -42 +values clariffication -40 +values clariffication -38 +values clariffication -37 +values clariffication -31 +values clariffication -28 +values clariffication -8 +values clariffication -6 +values clariffication -5 +values clariffication 4 +values clariffication 8 +values clariffication 9 +values clariffication 10 +values clariffication 12 +values clariffication 14 +values clariffication 15 +values clariffication 21 +values clariffication 23 +values clariffication 30 +values clariffication 32 +values clariffication 42 +values clariffication 50 +values clariffication 53 +values clariffication 56 +values clariffication 57 +values clariffication 62 +values clariffication 70 +values clariffication 74 +values clariffication 80 +values clariffication 85 +values clariffication 92 +values clariffication 93 +values clariffication 96 +values clariffication 97 +values clariffication 98 +values clariffication 108 +values clariffication 118 +values clariffication 120 +values clariffication 122 +values clariffication 124 +values clariffication 126 +values clariffication 127 +wind surfing NULL +wind surfing -124 +wind surfing -121 +wind surfing -117 +wind surfing -116 +wind surfing -113 +wind surfing -111 +wind surfing -104 +wind surfing -102 +wind surfing -99 +wind surfing -98 +wind surfing -96 +wind surfing -83 +wind surfing -80 +wind surfing -78 +wind surfing -71 +wind surfing -65 +wind surfing -60 +wind surfing -57 +wind surfing -56 +wind surfing -42 +wind surfing -39 +wind surfing -38 +wind surfing -34 +wind surfing -31 +wind surfing -30 +wind surfing -21 +wind surfing -18 +wind surfing -14 +wind surfing -12 +wind surfing -8 +wind surfing -6 +wind surfing -2 +wind surfing 5 +wind surfing 11 +wind surfing 15 +wind surfing 16 +wind surfing 20 +wind surfing 21 +wind surfing 22 +wind surfing 26 +wind surfing 29 +wind surfing 33 +wind surfing 36 +wind surfing 37 +wind surfing 40 +wind surfing 41 +wind surfing 44 +wind surfing 45 +wind surfing 48 +wind surfing 52 +wind surfing 53 +wind surfing 54 +wind surfing 58 +wind surfing 59 +wind surfing 62 +wind surfing 63 +wind surfing 64 +wind surfing 66 +wind surfing 68 +wind surfing 71 +wind surfing 75 +wind surfing 78 +wind surfing 86 +wind surfing 88 +wind surfing 92 +wind surfing 96 +wind surfing 101 +wind surfing 102 +wind surfing 107 +wind surfing 108 +wind surfing 111 +wind surfing 112 +wind surfing 121 +xylophone band NULL +xylophone band -115 +xylophone band -112 +xylophone band -109 +xylophone band -104 +xylophone band -101 +xylophone band -98 +xylophone band -96 +xylophone band -94 +xylophone band -91 +xylophone band -78 +xylophone band -75 +xylophone band -72 +xylophone band -70 +xylophone band -68 +xylophone band -59 +xylophone band -46 +xylophone band -27 +xylophone band -26 +xylophone band -23 +xylophone band -15 +xylophone band -13 +xylophone band -10 +xylophone band -6 +xylophone band -3 +xylophone band -2 +xylophone band 0 +xylophone band 3 +xylophone band 6 +xylophone band 7 +xylophone band 9 +xylophone band 11 +xylophone band 14 +xylophone band 17 +xylophone band 19 +xylophone band 22 +xylophone band 23 +xylophone band 33 +xylophone band 36 +xylophone band 38 +xylophone band 40 +xylophone band 52 +xylophone band 60 +xylophone band 62 +xylophone band 77 +xylophone band 79 +xylophone band 84 +xylophone band 85 +xylophone band 88 +xylophone band 92 +xylophone band 94 +xylophone band 107 +xylophone band 108 +xylophone band 112 +xylophone band 118 +xylophone band 122 +xylophone band 123 +xylophone band 125 +xylophone band 127 +yard duty NULL +yard duty -127 +yard duty -115 +yard duty -114 +yard duty -109 +yard duty -103 +yard duty -102 +yard duty -100 +yard duty -98 +yard duty -93 +yard duty -91 +yard duty -88 +yard duty -86 +yard duty -85 +yard duty -82 +yard duty -76 +yard duty -62 +yard duty -61 +yard duty -57 +yard duty -53 +yard duty -51 +yard duty -50 +yard duty -49 +yard duty -48 +yard duty -46 +yard duty -45 +yard duty -44 +yard duty -33 +yard duty -28 +yard duty -27 +yard duty -21 +yard duty -19 +yard duty -17 +yard duty -15 +yard duty -1 +yard duty 8 +yard duty 9 +yard duty 10 +yard duty 15 +yard duty 18 +yard duty 22 +yard duty 25 +yard duty 28 +yard duty 30 +yard duty 34 +yard duty 42 +yard duty 48 +yard duty 53 +yard duty 55 +yard duty 57 +yard duty 60 +yard duty 64 +yard duty 65 +yard duty 78 +yard duty 86 +yard duty 90 +yard duty 102 +yard duty 105 +yard duty 110 +zync studies NULL +zync studies -127 +zync studies -117 +zync studies -116 +zync studies -111 +zync studies -105 +zync studies -103 +zync studies -102 +zync studies -94 +zync studies -90 +zync studies -83 +zync studies -79 +zync studies -78 +zync studies -68 +zync studies -61 +zync studies -58 +zync studies -57 +zync studies -54 +zync studies -52 +zync studies -50 +zync studies -45 +zync studies -40 +zync studies -39 +zync studies -38 +zync studies -37 +zync studies -36 +zync studies -35 +zync studies -34 +zync studies -33 +zync studies -32 +zync studies -27 +zync studies -26 +zync studies -21 +zync studies -20 +zync studies -12 +zync studies 1 +zync studies 7 +zync studies 9 +zync studies 11 +zync studies 15 +zync studies 19 +zync studies 31 +zync studies 37 +zync studies 48 +zync studies 59 +zync studies 63 +zync studies 70 +zync studies 87 +zync studies 90 +zync studies 91 +zync studies 98 +zync studies 99 +zync studies 100 +zync studies 116 +zync studies 120 diff --git a/ql/src/test/results/clientpositive/tez/vector_elt.q.out b/ql/src/test/results/clientpositive/tez/vector_elt.q.out new file mode 100644 index 000000000000..d7a46e1cba3a --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_elt.q.out @@ -0,0 +1,121 @@ +PREHOOK: query: EXPLAIN SELECT (ctinyint % 2) + 1, cstring1, cint, elt((ctinyint % 2) + 1, cstring1, cint) +FROM alltypesorc +WHERE ctinyint > 0 LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT (ctinyint % 2) + 1, cstring1, cint, elt((ctinyint % 2) + 1, cstring1, cint) +FROM alltypesorc +WHERE ctinyint > 0 LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: (ctinyint > 0) (type: boolean) + Select Operator + expressions: ((ctinyint % 2) + 1) (type: int), cstring1 (type: string), cint (type: int), elt(((ctinyint % 2) + 1), cstring1, cint) (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT (ctinyint % 2) + 1, cstring1, cint, elt((ctinyint % 2) + 1, cstring1, cint) +FROM alltypesorc +WHERE ctinyint > 0 LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT (ctinyint % 2) + 1, cstring1, cint, elt((ctinyint % 2) + 1, cstring1, cint) +FROM alltypesorc +WHERE ctinyint > 0 LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +2 cvLH6Eat2yFsyy7p 528534767 528534767 +2 cvLH6Eat2yFsyy7p 528534767 528534767 +2 cvLH6Eat2yFsyy7p 528534767 528534767 +2 cvLH6Eat2yFsyy7p 528534767 528534767 +2 cvLH6Eat2yFsyy7p 528534767 528534767 +1 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +2 cvLH6Eat2yFsyy7p 528534767 528534767 +1 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +2 cvLH6Eat2yFsyy7p 528534767 528534767 +1 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +PREHOOK: query: EXPLAIN +SELECT elt(2, 'abc', 'defg'), + elt(3, 'aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg'), + elt('1', 'abc', 'defg'), + elt(2, 'aa', CAST('2' AS TINYINT)), + elt(2, 'aa', CAST('12345' AS SMALLINT)), + elt(2, 'aa', CAST('123456789012' AS BIGINT)), + elt(2, 'aa', CAST(1.25 AS FLOAT)), + elt(2, 'aa', CAST(16.0 AS DOUBLE)), + elt(0, 'abc', 'defg'), + elt(3, 'abc', 'defg') +FROM alltypesorc LIMIT 1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT elt(2, 'abc', 'defg'), + elt(3, 'aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg'), + elt('1', 'abc', 'defg'), + elt(2, 'aa', CAST('2' AS TINYINT)), + elt(2, 'aa', CAST('12345' AS SMALLINT)), + elt(2, 'aa', CAST('123456789012' AS BIGINT)), + elt(2, 'aa', CAST(1.25 AS FLOAT)), + elt(2, 'aa', CAST(16.0 AS DOUBLE)), + elt(0, 'abc', 'defg'), + elt(3, 'abc', 'defg') +FROM alltypesorc LIMIT 1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + TableScan + alias: alltypesorc + Select Operator + expressions: 'defg' (type: string), 'cc' (type: string), 'abc' (type: string), '2' (type: string), '12345' (type: string), '123456789012' (type: string), '1.25' (type: string), '16.0' (type: string), null (type: void), null (type: void) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9 + Limit + Number of rows: 1 + ListSink + +PREHOOK: query: SELECT elt(2, 'abc', 'defg'), + elt(3, 'aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg'), + elt('1', 'abc', 'defg'), + elt(2, 'aa', CAST('2' AS TINYINT)), + elt(2, 'aa', CAST('12345' AS SMALLINT)), + elt(2, 'aa', CAST('123456789012' AS BIGINT)), + elt(2, 'aa', CAST(1.25 AS FLOAT)), + elt(2, 'aa', CAST(16.0 AS DOUBLE)), + elt(0, 'abc', 'defg'), + elt(3, 'abc', 'defg') +FROM alltypesorc LIMIT 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT elt(2, 'abc', 'defg'), + elt(3, 'aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg'), + elt('1', 'abc', 'defg'), + elt(2, 'aa', CAST('2' AS TINYINT)), + elt(2, 'aa', CAST('12345' AS SMALLINT)), + elt(2, 'aa', CAST('123456789012' AS BIGINT)), + elt(2, 'aa', CAST(1.25 AS FLOAT)), + elt(2, 'aa', CAST(16.0 AS DOUBLE)), + elt(0, 'abc', 'defg'), + elt(3, 'abc', 'defg') +FROM alltypesorc LIMIT 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +defg cc abc 2 12345 123456789012 1.25 16.0 NULL NULL diff --git a/ql/src/test/results/clientpositive/tez/vector_groupby_3.q.out b/ql/src/test/results/clientpositive/tez/vector_groupby_3.q.out new file mode 100644 index 000000000000..491c6f7b95d2 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_groupby_3.q.out @@ -0,0 +1,1869 @@ +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select s, t, max(b) from vectortab2korc group by s, t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select s, t, max(b) from vectortab2korc group by s, t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: s (type: string), t (type: tinyint), b (type: bigint) + outputColumnNames: s, t, b + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(b) + keys: s (type: string), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: tinyint) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: tinyint) + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + value expressions: _col2 (type: bigint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0) + keys: KEY._col0 (type: string), KEY._col1 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: tinyint), _col2 (type: bigint) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select s, t, max(b) from vectortab2korc group by s, t +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select s, t, max(b) from vectortab2korc group by s, t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### + NULL 2714 + -116 8945302550165004288 + -114 1312 + -113 7569249672628789248 + -108 8939431770838810624 + -107 1906 + -104 8268875586442256384 + -91 3965 + -87 7078641038157643776 + -86 2862 + -85 -7139677575412686848 + -84 -7085247548404178944 + -83 8900351886974279680 + -80 -8938849835283677184 + -75 NULL + -72 9149216169284091904 + -66 3197 + -53 -8619303037130301440 + -46 -9080568167841226752 + -38 2933 + -36 -7512297136103800832 + -33 1075 + -29 8371939471056470016 + -28 -7292078334519894016 + -25 2262 + -24 898 + -19 9094945190752903168 + -16 -7673901622181953536 + -14 7983789401706094592 + -12 -7413317118463164416 + -10 8991442360387584000 + -5 3534 + -4 -9014145341570203648 + -2 8759184090543857664 + 0 8163948965373386752 + 4 7062382339142156288 + 5 -8703026916864802816 + 8 2905 + 12 2553 + 16 8983857919580209152 + 19 2201 + 22 9191943992860327936 + 23 NULL + 26 -7916510129632296960 + 29 8555933456197828608 + 31 2941 + 37 8143462899383345152 + 42 NULL + 46 3174 + 48 -8566856504746352640 + 54 -7242345057866285056 + 57 8230371298967609344 + 59 2494 + 60 -6986178228432322560 + 62 779 + 64 7368920486374989824 + 79 8736061027343859712 + 84 NULL + 87 797 + 88 8782900615468302336 + 90 2977 + 91 2193 + 96 -7866079955473989632 + 97 2017 + 102 -7036607470351654912 + 103 780 + 105 -7511952204985049088 + 109 1436 + 112 -7063777488249085952 + 113 8775009214012456960 + 114 1145 + 123 3625 +american history NULL 3555 +american history -127 1719 +american history -119 19 +american history -116 3812 +american history -112 7731443941834678272 +american history -110 -8989473881707921408 +american history -108 7359004378440146944 +american history -105 7870277756614623232 +american history -103 -6962271229404348416 +american history -101 7348598907182800896 +american history -95 NULL +american history -94 9119046173224370176 +american history -92 -7612455481940246528 +american history -90 1321 +american history -89 -7571293705217687552 +american history -87 -7536330682873937920 +american history -86 -8731068123910987776 +american history -81 2700 +american history -80 485 +american history -73 2487 +american history -66 -8368487814665895936 +american history -60 1566 +american history -59 3949 +american history -55 8407869317250220032 +american history -53 1955 +american history -50 7857878068300898304 +american history -48 -8016589197379289088 +american history -47 -8566940231897874432 +american history -34 4018 +american history -30 -8789178184387641344 +american history -28 -7720966287634112512 +american history -27 NULL +american history -26 -7057750467944931328 +american history -19 78 +american history -18 -8659643752269242368 +american history -17 2968 +american history -15 9048002942653710336 +american history -11 8714829359200747520 +american history -9 -8503342882470019072 +american history 0 6928080429732536320 +american history 5 135 +american history 20 -7037375807670501376 +american history 22 8467976965865799680 +american history 29 -8243487285852766208 +american history 31 -8007017894942638080 +american history 33 9043089884440068096 +american history 38 7061809776248545280 +american history 39 7922443154272395264 +american history 40 2886 +american history 42 8190967051000659968 +american history 46 8374321007870836736 +american history 48 6962726713896484864 +american history 54 -7784419454650843136 +american history 56 1890 +american history 60 3512 +american history 68 -8067243114610532352 +american history 69 -7199983995864711168 +american history 71 8698055291501543424 +american history 72 8551446856960942080 +american history 74 9038087402564657152 +american history 77 1837 +american history 79 -7542857121910046720 +american history 82 3980 +american history 84 2105 +american history 89 8806507556248731648 +american history 96 823 +american history 100 8760285623204290560 +american history 103 -7868306678534193152 +american history 111 522 +american history 119 8571268359622172672 +american history 122 7497276415392407552 +american history 123 -7488345684795342848 +biology NULL 9116137265342169088 +biology -127 1270 +biology -121 8109381965028548608 +biology -120 8388363436324085760 +biology -119 7054938591408996352 +biology -104 -8683802826440105984 +biology -101 -7198372044947275776 +biology -98 -8940944155843461120 +biology -97 -7827420207675105280 +biology -96 NULL +biology -92 1142 +biology -90 7775034125776363520 +biology -86 3755 +biology -85 -6935548339131138048 +biology -83 7232273749940838400 +biology -82 -7040248820505149440 +biology -81 NULL +biology -79 3566 +biology -72 -7915999634274369536 +biology -67 8532016240026279936 +biology -66 -7623047151287754752 +biology -59 7534042483076857856 +biology -57 7049773031131283456 +biology -54 -7319315187617587200 +biology -53 -6962292590214234112 +biology -49 NULL +biology -46 2241 +biology -44 2680 +biology -42 2469 +biology -40 -7469660864676585472 +biology -36 1489 +biology -35 2285 +biology -31 -9032650742739836928 +biology -20 7130159794259353600 +biology -19 -7442593976514420736 +biology -16 3960 +biology -13 2463 +biology -7 -8665218198816497664 +biology -6 888 +biology -5 808 +biology 0 523 +biology 2 -8387347109404286976 +biology 3 -9075486079396069376 +biology 4 482 +biology 5 7376467688511455232 +biology 6 -7797149520019062784 +biology 7 454 +biology 8 950 +biology 12 2492 +biology 18 -7255010240787030016 +biology 27 -9049720998034137088 +biology 30 835 +biology 34 2517 +biology 35 8017403886247927808 +biology 36 2539 +biology 41 7052226236896256000 +biology 47 3974 +biology 51 3728 +biology 52 9084402694981533696 +biology 54 -7330203470474985472 +biology 55 1785 +biology 57 9083704659251798016 +biology 64 2400 +biology 83 -8172827216441573376 +biology 86 3199 +biology 89 7747874976739016704 +biology 90 -7598782894648565760 +biology 91 -8131997716860526592 +biology 100 -8782213262837530624 +biology 111 6933731240564056064 +biology 113 664 +biology 114 1343 +biology 115 -7017212700635545600 +biology 117 120 +biology 120 3443 +biology 124 -6919476845891313664 +chemistry NULL 8854677881758162944 +chemistry -127 -7637755520917741568 +chemistry -125 3418 +chemistry -122 -8232763638546694144 +chemistry -117 8014986215157530624 +chemistry -115 3307 +chemistry -110 3430 +chemistry -109 -7624057992767782912 +chemistry -108 7255302164215013376 +chemistry -103 -8099313480512716800 +chemistry -101 2599 +chemistry -98 9005866015985713152 +chemistry -95 -7470307155642245120 +chemistry -91 9030480306789818368 +chemistry -90 1291 +chemistry -89 2968 +chemistry -81 -8664806103426252800 +chemistry -75 375 +chemistry -68 -8813211231120031744 +chemistry -61 -8021859935185928192 +chemistry -59 -7572262898020278272 +chemistry -57 -7362189611124563968 +chemistry -56 -7663293054873812992 +chemistry -52 4056 +chemistry -46 -7610137349734883328 +chemistry -44 7596563216912211968 +chemistry -40 4054 +chemistry -37 NULL +chemistry -33 7545689659010949120 +chemistry -31 -9080956291212132352 +chemistry -30 2001 +chemistry -26 -9178166810751909888 +chemistry -23 -8518060755719585792 +chemistry -8 8487573502287478784 +chemistry -3 3245 +chemistry -2 -7500200359698907136 +chemistry 3 2933 +chemistry 4 2138 +chemistry 8 873 +chemistry 14 7198687580227043328 +chemistry 16 7229607057201127424 +chemistry 19 NULL +chemistry 25 236 +chemistry 27 1826 +chemistry 32 1775 +chemistry 37 41 +chemistry 39 2663 +chemistry 41 8693036785094565888 +chemistry 46 1280 +chemistry 51 392 +chemistry 55 -8843859708698583040 +chemistry 64 9091085792947666944 +chemistry 74 837 +chemistry 75 3860 +chemistry 78 2476 +chemistry 79 8644602243484803072 +chemistry 83 1286 +chemistry 88 -8082793390939193344 +chemistry 90 7794244032613703680 +chemistry 91 3866 +chemistry 96 -7395343938785738752 +chemistry 102 -7907355742053883904 +chemistry 104 3609 +chemistry 110 NULL +chemistry 113 7149417430082027520 +chemistry 116 7768984605670604800 +chemistry 124 1914 +chemistry 126 9083076230151864320 +debate NULL 1777 +debate -127 8337549596011102208 +debate -117 -8269917980278980608 +debate -114 2085 +debate -108 2816 +debate -106 1948 +debate -98 8011602724663336960 +debate -96 8688483860094599168 +debate -95 1368 +debate -88 8345435427356090368 +debate -87 -8028910243475038208 +debate -86 1095 +debate -85 2341 +debate -82 NULL +debate -72 7720187583697502208 +debate -70 8928133990107881472 +debate -69 7948803266578161664 +debate -67 1521 +debate -57 -8581979259158929408 +debate -52 7947544013461512192 +debate -50 7061498706968428544 +debate -47 49 +debate -46 1234 +debate -41 -8856821118526734336 +debate -35 7062605127422894080 +debate -32 -7831320202242228224 +debate -29 -7476082621253402624 +debate -28 -8379109122834997248 +debate -27 3835 +debate -26 471 +debate -24 8554899472487596032 +debate -15 34 +debate -12 7682327310082531328 +debate -3 8519937082746634240 +debate 5 -8649711322250362880 +debate 17 8560526613401714688 +debate 19 8501910015960735744 +debate 20 -8832750849949892608 +debate 26 738 +debate 34 3060 +debate 36 7792036342592348160 +debate 41 7039820685967343616 +debate 42 8557218322962644992 +debate 52 -7637494527844343808 +debate 54 7534145866886782976 +debate 56 -7161165959057334272 +debate 63 1243 +debate 67 2692 +debate 68 8045070943673671680 +debate 69 -7822452149325094912 +debate 70 7534549597202194432 +debate 73 8372408423196270592 +debate 75 2463 +debate 77 1168 +debate 85 8822384228057604096 +debate 87 8146288732715196416 +debate 89 2089 +debate 90 9078604269481148416 +debate 93 455 +debate 94 -7506254246954500096 +debate 113 1995 +debate 124 3691 +education NULL 2903 +education -127 -8302817097848307712 +education -125 2214 +education -113 -8142667274351345664 +education -111 7296164580491075584 +education -109 8150115791664340992 +education -105 1066 +education -101 7165364563962191872 +education -98 1341 +education -96 -8022573309127000064 +education -93 7343171468838567936 +education -92 2811 +education -89 1999 +education -87 345 +education -86 8473699639908261888 +education -77 9148071980848742400 +education -72 3021 +education -69 2805 +education -64 6974475559697768448 +education -61 7917494645725765632 +education -55 7989119273552158720 +education -52 9050032047355125760 +education -44 -8219876839318716416 +education -43 3911 +education -38 3749 +education -37 923 +education -36 694 +education -34 -7707242953271500800 +education -28 7735566678126616576 +education -24 1509 +education -15 -6960947572095770624 +education -13 695 +education -9 928 +education 4 -8034414142083170304 +education 12 8454154705460666368 +education 17 2232 +education 27 -8454143651040444416 +education 33 -8488247955875618816 +education 34 379 +education 35 7473537548003352576 +education 38 -8244116388227104768 +education 41 7584007864107778048 +education 45 238 +education 46 7892281003266408448 +education 49 8461498293348065280 +education 51 -7623359796281999360 +education 53 -7600138468036386816 +education 59 7432998950057975808 +education 61 NULL +education 66 7652123583449161728 +education 73 -7185369278665605120 +education 75 9054887854393950208 +education 77 3206 +education 81 -6970396058557005824 +education 82 1058 +education 85 7961909238130270208 +education 89 3409 +education 95 3764 +education 102 7375521127126089728 +education 103 7384150968511315968 +education 110 7452756603516190720 +education 111 3824 +education 113 8994608999945125888 +education 114 1846 +education 116 -8930307926221807616 +education 119 7548958830580563968 +education 125 8577096957495025664 +forestry NULL 9123116008004288512 +forestry -126 9086905513121890304 +forestry -118 8272001752345690112 +forestry -116 7997694023324975104 +forestry -109 275 +forestry -105 2724 +forestry -98 3089 +forestry -95 2485 +forestry -94 -8051871680800120832 +forestry -83 2752 +forestry -81 -8922409715403112448 +forestry -80 1165 +forestry -79 1937 +forestry -77 1247 +forestry -74 1643 +forestry -73 -7228589258642194432 +forestry -68 -6988970700649168896 +forestry -58 7989160253372817408 +forestry -51 -9002912355472736256 +forestry -50 2283 +forestry -49 417 +forestry -42 268 +forestry -34 2524 +forestry -23 7790728456522784768 +forestry -12 -8205148279289085952 +forestry -11 9194388393453060096 +forestry -10 3962 +forestry -8 7955126053367119872 +forestry -3 1165 +forestry -1 -9071565764086521856 +forestry 0 -7603467428164009984 +forestry 7 3118 +forestry 8 7299197687217856512 +forestry 11 3467 +forestry 12 8160662610166194176 +forestry 19 -8760655406971863040 +forestry 29 -7831595638727565312 +forestry 31 3663 +forestry 35 1371 +forestry 37 950 +forestry 39 6933451028794925056 +forestry 40 -8763062627136864256 +forestry 44 -8559252110266564608 +forestry 45 8553195689344991232 +forestry 50 615 +forestry 51 2580 +forestry 52 8514851182589771776 +forestry 55 -9091113592821972992 +forestry 56 7418271723644403712 +forestry 71 8779711700787298304 +forestry 78 -7845896959112658944 +forestry 79 -7818454479651135488 +forestry 87 1981 +forestry 90 8829545979081744384 +forestry 93 1422 +forestry 94 -8469607298426437632 +forestry 97 -8845239510002753536 +forestry 102 255 +forestry 106 8570983266408103936 +forestry 107 999 +forestry 111 -7138415011665043456 +forestry 115 8573305425181941760 +forestry 117 -7120456708338688000 +forestry 120 7784169796350730240 +geology NULL 8171188598958407680 +geology -124 3190 +geology -117 3421 +geology -115 -8660149447361404928 +geology -112 1462 +geology -108 -8604758220106014720 +geology -106 -7661250850555633664 +geology -101 -7078068944081002496 +geology -100 3002 +geology -96 -6957946688477274112 +geology -94 268 +geology -84 -7511202710200885248 +geology -82 8817665768680906752 +geology -80 3446 +geology -79 1614 +geology -75 -7883252982752665600 +geology -72 8391785334471589888 +geology -68 -8203008052020879360 +geology -59 7621013099259527168 +geology -57 -7594824008626372608 +geology -54 -7328087811698909184 +geology -53 -6988811476286873600 +geology -50 8120593157178228736 +geology -48 1342 +geology -35 -7510418793070075904 +geology -34 8708845895460577280 +geology -32 7487538600082554880 +geology -31 871 +geology -30 -8127494999848919040 +geology -23 1537 +geology -21 91 +geology -18 7370803940448305152 +geology -16 8979012655944220672 +geology 1 -8870673219965001728 +geology 4 9020143715350814720 +geology 5 7784489776013295616 +geology 6 3203 +geology 9 -8379964450833367040 +geology 14 -8136227554401107968 +geology 18 3763 +geology 21 8850055384477401088 +geology 23 NULL +geology 26 -7145585429014888448 +geology 28 2183 +geology 31 1892 +geology 33 7689489436826804224 +geology 37 2762 +geology 38 -8395998375405912064 +geology 49 8854715632851345408 +geology 58 -8856151919723003904 +geology 72 2179 +geology 82 6967631925774639104 +geology 84 8316336224427483136 +geology 86 -9101953184875757568 +geology 89 1346 +geology 92 -7833618000492109824 +geology 93 NULL +geology 95 -7838598833900584960 +geology 100 7528074274555305984 +geology 101 7701723309715685376 +geology 102 -8297230235506343936 +geology 116 3073 +geology 121 213 +geology 124 7779486624537370624 +geology 127 -7703540456272994304 +history NULL 3231 +history -125 1856 +history -124 -8318886086186213376 +history -105 3701 +history -104 1769 +history -103 -7623405558242500608 +history -101 154 +history -98 2046 +history -91 1651 +history -90 65 +history -89 3418 +history -79 1796 +history -75 -8783777723063099392 +history -67 -7679894005808693248 +history -61 8325227661920133120 +history -58 8376440110255243264 +history -54 2393 +history -42 8987827141270880256 +history -37 3946 +history -34 -7192529627893858304 +history -26 NULL +history -24 3079 +history -19 1791 +history -18 3770 +history -15 2013 +history -12 154 +history -8 2187 +history -5 1667 +history -1 -8544299740525461504 +history 1 8637720762289659904 +history 2 7648729477297987584 +history 7 7647481735646363648 +history 14 6947488599548215296 +history 18 -7778829032042790912 +history 25 3866 +history 50 3874 +history 51 8135164922674872320 +history 52 -6921654334727036928 +history 57 3690 +history 58 3664 +history 59 7514552840617558016 +history 61 -8411282676082565120 +history 62 3024 +history 71 -8730803262481580032 +history 72 7099005292698550272 +history 73 2776 +history 75 -7547245548870025216 +history 78 -9102482277760983040 +history 84 -7162299524557471744 +history 92 921 +history 95 3769 +history 98 3588 +history 100 263 +history 108 -7800879252150779904 +history 112 -7419068456205385728 +history 113 3728 +history 114 289 +history 126 2810 +history 127 -7884460946615984128 +industrial engineering NULL 3060 +industrial engineering -124 3249 +industrial engineering -110 2560 +industrial engineering -101 -7617860842651017216 +industrial engineering -98 8368012468775608320 +industrial engineering -96 688 +industrial engineering -87 7486884806277611520 +industrial engineering -85 -7512289590991544320 +industrial engineering -72 3208 +industrial engineering -68 -9206329156028112896 +industrial engineering -65 9112400579327483904 +industrial engineering -58 650 +industrial engineering -57 -8521578237232529408 +industrial engineering -53 68 +industrial engineering -49 181 +industrial engineering -47 2911 +industrial engineering -43 504 +industrial engineering -38 -8581765103969312768 +industrial engineering -35 1726 +industrial engineering -31 1520 +industrial engineering -30 3472 +industrial engineering -28 724 +industrial engineering -22 -7540104552219860992 +industrial engineering -11 -7802538500225777664 +industrial engineering -7 2420 +industrial engineering -6 9185458640237641728 +industrial engineering -5 2485 +industrial engineering -1 8087737899452432384 +industrial engineering 3 3682 +industrial engineering 7 7573530789362262016 +industrial engineering 27 -8445801063348281344 +industrial engineering 29 3365 +industrial engineering 32 364 +industrial engineering 33 -7240213957902663680 +industrial engineering 36 1158 +industrial engineering 42 2506 +industrial engineering 43 3725 +industrial engineering 48 355 +industrial engineering 54 691 +industrial engineering 58 8195103847607967744 +industrial engineering 59 8808467247666241536 +industrial engineering 70 9091082386452684800 +industrial engineering 73 -7011425384222244864 +industrial engineering 78 -9136398397785948160 +industrial engineering 79 -8948335470186373120 +industrial engineering 83 NULL +industrial engineering 95 8192304692696383488 +industrial engineering 96 -7910019233726242816 +industrial engineering 98 -7524170566881329152 +industrial engineering 99 -9215144824304721920 +industrial engineering 102 2900 +industrial engineering 104 -8875546987176206336 +industrial engineering 105 8071961599867387904 +industrial engineering 106 878 +industrial engineering 113 1862 +industrial engineering 126 -6968892545529896960 +joggying NULL -8877053610728161280 +joggying -125 7823874904139849728 +joggying -121 3103 +joggying -119 2189 +joggying -110 -8870186814744420352 +joggying -101 -8675661101615489024 +joggying -100 7080269176324218880 +joggying -80 8254763178969915392 +joggying -79 -7939634346485858304 +joggying -77 7626715182847090688 +joggying -76 NULL +joggying -73 8011181697250631680 +joggying -69 7678790769408172032 +joggying -64 2373 +joggying -62 -8425998949410889728 +joggying -61 8687042963221159936 +joggying -57 8936639033158410240 +joggying -55 8208354137450766336 +joggying -48 8351163199364390912 +joggying -47 NULL +joggying -43 8323460620425330688 +joggying -40 3781 +joggying -30 2217 +joggying -27 2790 +joggying -24 -7083646746411720704 +joggying -15 -8658387566611996672 +joggying -14 -8358130693961195520 +joggying -8 8723248113030782976 +joggying -1 7844258063629852672 +joggying 13 8525894870444638208 +joggying 20 425 +joggying 25 1556 +joggying 26 2325 +joggying 27 1290 +joggying 28 -8858063395050110976 +joggying 37 -7378096180613840896 +joggying 43 7260908278294560768 +joggying 46 8905330479248064512 +joggying 48 1337 +joggying 49 -8047774491688255488 +joggying 52 2803 +joggying 57 8183233196086214656 +joggying 61 3253 +joggying 62 -8359839265974165504 +joggying 69 8302473563519950848 +joggying 70 1965 +joggying 72 976 +joggying 74 -7751265769984491520 +joggying 80 7454442625055145984 +joggying 85 7748799008146366464 +joggying 87 94 +joggying 92 7818464507324121088 +joggying 93 8416121695917498368 +joggying 94 7599019810193211392 +joggying 97 2565 +joggying 99 1863 +joggying 104 1864 +joggying 105 2002 +joggying 118 -8108693586698706944 +joggying 119 -7892780594910871552 +joggying 121 1987 +joggying 123 NULL +joggying 125 2842 +kindergarten NULL 6933001829416034304 +kindergarten -126 2509 +kindergarten -113 259 +kindergarten -106 -8103788088118018048 +kindergarten -98 982 +kindergarten -95 8983912573761167360 +kindergarten -92 NULL +kindergarten -79 -7751427073017544704 +kindergarten -78 7524958388842078208 +kindergarten -75 7017956982081404928 +kindergarten -74 -8632237187473088512 +kindergarten -69 1813 +kindergarten -60 7027529814236192768 +kindergarten -59 8991071342495531008 +kindergarten -57 -7949309059286163456 +kindergarten -54 8896237972875370496 +kindergarten -42 -7094827141662539776 +kindergarten -40 7084659344078970880 +kindergarten -26 7226360892091416576 +kindergarten -18 7696737688942567424 +kindergarten -8 -7420448501073051648 +kindergarten 10 3111 +kindergarten 16 7753882935005880320 +kindergarten 18 -7395553021620731904 +kindergarten 19 -8104684579106914304 +kindergarten 23 8871707618793996288 +kindergarten 29 3248 +kindergarten 37 3493 +kindergarten 46 958 +kindergarten 48 -8572949572756774912 +kindergarten 51 8543177193114779648 +kindergarten 52 8868529429494071296 +kindergarten 55 -7404057145074712576 +kindergarten 61 7710447533880614912 +kindergarten 66 2735 +kindergarten 69 73 +kindergarten 82 530 +kindergarten 84 7998357471114969088 +kindergarten 85 7926898770090491904 +kindergarten 86 NULL +kindergarten 90 8972161729142095872 +kindergarten 92 8716401555586727936 +kindergarten 96 -7429331808102899712 +kindergarten 100 108 +kindergarten 101 7166263463731421184 +kindergarten 109 2962 +kindergarten 111 2320 +kindergarten 116 9207927479837319168 +kindergarten 118 -7819437864839495680 +kindergarten 120 7779735136559579136 +kindergarten 122 -7079898537463537664 +kindergarten 127 2223 +linguistics NULL 8383159090746204160 +linguistics -127 -8896045754034978816 +linguistics -122 -7695491171376291840 +linguistics -113 7614435638888210432 +linguistics -101 -8017791189288869888 +linguistics -90 -7739424919198187520 +linguistics -89 8489735221193138176 +linguistics -87 2244 +linguistics -86 NULL +linguistics -78 8518454006987948032 +linguistics -77 7686992843032010752 +linguistics -73 -8916987977485312000 +linguistics -70 2277 +linguistics -69 -7104310188119834624 +linguistics -68 8184799300477943808 +linguistics -67 NULL +linguistics -53 NULL +linguistics -52 -8651641150831362048 +linguistics -41 1811 +linguistics -34 3958 +linguistics -28 7345991518378442752 +linguistics -22 8489584373231919104 +linguistics -20 7620183559667081216 +linguistics -17 9075404705968840704 +linguistics -16 2662 +linguistics -14 -9203804401302323200 +linguistics -13 7566273236152721408 +linguistics -12 NULL +linguistics -6 8145750910080745472 +linguistics -4 3789 +linguistics -2 -7501803640821456896 +linguistics 0 9023663198045544448 +linguistics 1 1386 +linguistics 3 7386087924003676160 +linguistics 6 8558000156325707776 +linguistics 7 9048297564833079296 +linguistics 10 2846 +linguistics 11 83 +linguistics 18 1261 +linguistics 33 1086 +linguistics 37 1777 +linguistics 42 9117063974299148288 +linguistics 44 9136548192574529536 +linguistics 50 9188173682239275008 +linguistics 53 1447 +linguistics 64 1704 +linguistics 67 -7201085131997011968 +linguistics 72 204 +linguistics 73 2502 +linguistics 83 NULL +linguistics 89 8116738401948377088 +linguistics 93 -7879864376629567488 +linguistics 96 803 +linguistics 98 7898670840507031552 +linguistics 100 3622 +linguistics 113 7217123582035116032 +linguistics 115 -6920172215209426944 +linguistics 123 7762823913046556672 +linguistics 125 1074 +linguistics 126 9067985867711291392 +mathematics NULL 9001907486943993856 +mathematics -127 -7158472098920390656 +mathematics -124 8290014929764040704 +mathematics -122 -7453525026342617088 +mathematics -120 3322 +mathematics -118 -6997233584896229376 +mathematics -117 2786 +mathematics -103 658 +mathematics -101 -8756989568739835904 +mathematics -100 7662037650719850496 +mathematics -99 NULL +mathematics -98 -7425160895830573056 +mathematics -95 490 +mathematics -91 8223732800007864320 +mathematics -88 -7115054815375073280 +mathematics -81 7753359568986636288 +mathematics -79 8111757081791733760 +mathematics -77 7581614118458335232 +mathematics -75 -7221474017515347968 +mathematics -66 -7894382303337832448 +mathematics -57 8219326436390821888 +mathematics -52 8435912708683087872 +mathematics -50 7746402369011277824 +mathematics -49 8156018594610790400 +mathematics -46 8210813831744118784 +mathematics -45 7237310132329488384 +mathematics -40 -8518258741831680000 +mathematics -33 7461153404961128448 +mathematics -31 681 +mathematics -21 -7661192563533062144 +mathematics -19 3159 +mathematics -7 8396433451610652672 +mathematics 0 8282648443538710528 +mathematics 3 -8887058200926093312 +mathematics 6 1701 +mathematics 10 7259955893466931200 +mathematics 22 6934570741217755136 +mathematics 23 7271887863395459072 +mathematics 25 -7333362172439035904 +mathematics 32 2073 +mathematics 35 -7558524160894427136 +mathematics 38 -7557017910095650816 +mathematics 39 2579 +mathematics 46 -7759425383684849664 +mathematics 48 1366 +mathematics 50 3029 +mathematics 53 7549858023389003776 +mathematics 55 2227 +mathematics 56 898 +mathematics 58 3830 +mathematics 59 7487338208419823616 +mathematics 62 883 +mathematics 63 8156782979767238656 +mathematics 65 1648 +mathematics 76 8927691194719174656 +mathematics 79 7871189141676998656 +mathematics 80 NULL +mathematics 82 1093 +mathematics 87 3707 +mathematics 92 -8754992450211692544 +mathematics 98 2398 +mathematics 102 690 +mathematics 107 8391407951622815744 +mathematics 111 2607 +mathematics 114 3094 +nap time NULL -8430283518005846016 +nap time -122 8660248367767076864 +nap time -119 2715 +nap time -115 -7576194692683563008 +nap time -113 8451612303224520704 +nap time -104 -7709958788604936192 +nap time -102 -6938706403992854528 +nap time -101 2229 +nap time -91 85 +nap time -85 3932 +nap time -71 9136234417125007360 +nap time -61 1524 +nap time -54 -8562524688907485184 +nap time -49 8079573715140485120 +nap time -45 7310869618402910208 +nap time -41 7801697837312884736 +nap time -31 939 +nap time -15 7401968422230032384 +nap time -6 7843804446688264192 +nap time -4 736 +nap time -2 8697823501349609472 +nap time 0 1940 +nap time 3 9064847977742032896 +nap time 6 7871554728617025536 +nap time 16 NULL +nap time 23 7432428551399669760 +nap time 27 1454 +nap time 31 6964585306125008896 +nap time 35 2689 +nap time 42 8652485812846567424 +nap time 51 -7881262505761710080 +nap time 52 2463 +nap time 56 -8240034910581153792 +nap time 62 NULL +nap time 69 NULL +nap time 70 66 +nap time 73 7782245855193874432 +nap time 76 -8543982423727128576 +nap time 80 2647 +nap time 89 -7888051992910274560 +nap time 90 7761834341179375616 +nap time 92 8540237852367446016 +nap time 93 -8203075743525806080 +nap time 98 7691062622443044864 +nap time 103 361 +nap time 104 7125231541858205696 +nap time 105 7045967493826387968 +nap time 107 9114850402293882880 +nap time 108 1189 +nap time 118 8910706980937261056 +opthamology NULL 8856674723376668672 +opthamology -122 9096395849845194752 +opthamology -121 3879 +opthamology -118 2072 +opthamology -111 8244041599171862528 +opthamology -99 -7875953567586451456 +opthamology -97 8752150411997356032 +opthamology -91 2255 +opthamology -86 -9066993118333706240 +opthamology -82 1606 +opthamology -79 -9117959922369060864 +opthamology -78 -7303847963918393344 +opthamology -77 8631515095562887168 +opthamology -75 8779073705407963136 +opthamology -73 908 +opthamology -63 470 +opthamology -59 3021 +opthamology -55 2177 +opthamology -49 8854495099223375872 +opthamology -48 -7877598807023386624 +opthamology -44 2675 +opthamology -35 2274 +opthamology -33 1613 +opthamology -30 8048726769133592576 +opthamology -28 8849475396952514560 +opthamology -27 3599 +opthamology -24 383 +opthamology -22 7718825401976684544 +opthamology -18 2393 +opthamology -17 -7629401308029976576 +opthamology -14 3235 +opthamology -8 7333512171174223872 +opthamology -5 7411793502161182720 +opthamology 4 9131533983989358592 +opthamology 5 130 +opthamology 21 7069729473166090240 +opthamology 39 2745 +opthamology 41 NULL +opthamology 48 3159 +opthamology 49 -7904188195431661568 +opthamology 52 -7081500255163727872 +opthamology 53 -7055760785575665664 +opthamology 55 2335 +opthamology 68 -8866442231663067136 +opthamology 69 2144 +opthamology 74 -7708932208121225216 +opthamology 76 -7647020450676146176 +opthamology 77 -6934304742087655424 +opthamology 79 1508 +opthamology 81 8920344895701393408 +opthamology 84 927 +opthamology 87 6924820982050758656 +opthamology 88 -8593419958317056000 +opthamology 89 -7978782649203228672 +opthamology 92 NULL +opthamology 96 -8418913260807217152 +opthamology 97 8935252708196999168 +opthamology 100 -7532751268425261056 +opthamology 104 1866 +opthamology 117 2835 +opthamology 120 -8340523561480437760 +opthamology 122 3462 +opthamology 125 965 +opthamology 127 412 +philosophy NULL 8759089349412847616 +philosophy -125 9199741683232399360 +philosophy -121 342 +philosophy -119 -8507279516485566464 +philosophy -115 1719 +philosophy -110 7471208109437304832 +philosophy -105 -7172594404186693632 +philosophy -103 8144552446127972352 +philosophy -100 -7603569103205916672 +philosophy -99 -8030058711611629568 +philosophy -95 3460 +philosophy -93 8720504651219001344 +philosophy -92 8649296591032172544 +philosophy -80 -7035132060308643840 +philosophy -78 1752 +philosophy -77 -7344947507044466688 +philosophy -69 2897 +philosophy -68 9185952983951343616 +philosophy -61 7271786885641666560 +philosophy -56 -7593363318079610880 +philosophy -55 3366 +philosophy -53 6987889924212203520 +philosophy -52 2824 +philosophy -51 2180 +philosophy -50 8875745082589929472 +philosophy -40 3478 +philosophy -39 1141 +philosophy -27 -8710298418608619520 +philosophy -26 -7344146703223496704 +philosophy -25 -7878145001776152576 +philosophy -17 -7515996202498473984 +philosophy -11 -7953426740065312768 +philosophy 8 -8088337436168830976 +philosophy 20 8290944180915871744 +philosophy 21 -7903158849011843072 +philosophy 22 7892026679115554816 +philosophy 29 2848 +philosophy 31 7659279803863146496 +philosophy 34 -7058986555327307776 +philosophy 38 7238339720750948352 +philosophy 41 8792059919353348096 +philosophy 43 3555 +philosophy 45 8362046808797306880 +philosophy 48 6991316084916879360 +philosophy 64 535 +philosophy 67 2715 +philosophy 68 1693 +philosophy 73 8283099811330506752 +philosophy 83 281 +philosophy 96 8682955459667951616 +philosophy 98 8613562211893919744 +philosophy 104 3541 +philosophy 108 6969599299897163776 +philosophy 117 2855 +philosophy 118 -7356685674003021824 +philosophy 120 -8300526097982226432 +philosophy 123 2140 +quiet hour NULL 7874764415950176256 +quiet hour -127 1099 +quiet hour -123 8769199243315814400 +quiet hour -121 7031339012080549888 +quiet hour -119 7608447395949109248 +quiet hour -114 8419958579638157312 +quiet hour -111 8424515140664360960 +quiet hour -105 918 +quiet hour -104 -7037638331316469760 +quiet hour -88 2919 +quiet hour -87 9182828596851990528 +quiet hour -76 -7792903881635938304 +quiet hour -73 8793387410919038976 +quiet hour -68 6982145326341423104 +quiet hour -66 383 +quiet hour -65 NULL +quiet hour -56 3567 +quiet hour -55 8569030475428511744 +quiet hour -52 8201303040648052736 +quiet hour -50 7998687089080467456 +quiet hour -48 8398862954249560064 +quiet hour -45 7378993334503694336 +quiet hour -42 NULL +quiet hour -41 7231399302953377792 +quiet hour -33 7637152193832886272 +quiet hour -31 -7744462446680375296 +quiet hour -25 NULL +quiet hour -14 997 +quiet hour -8 -7329767178250018816 +quiet hour -1 9085434340468473856 +quiet hour 0 7450416810848313344 +quiet hour 6 8795069490394882048 +quiet hour 7 2131 +quiet hour 8 -7265998318110711808 +quiet hour 13 2560 +quiet hour 21 -8293833565967810560 +quiet hour 23 1880 +quiet hour 29 2323 +quiet hour 30 9062227900376203264 +quiet hour 33 7528211148397944832 +quiet hour 35 -7046180371529351168 +quiet hour 38 2725 +quiet hour 43 8069531888205086720 +quiet hour 58 2461 +quiet hour 60 NULL +quiet hour 66 3770 +quiet hour 71 500 +quiet hour 74 -7902517224300036096 +quiet hour 80 7006803044329021440 +quiet hour 82 8853989376829833216 +quiet hour 84 8920533610804609024 +quiet hour 93 -7873753603299540992 +quiet hour 98 -9008631121684832256 +quiet hour 110 2186 +quiet hour 112 7436133434239229952 +quiet hour 115 1641 +quiet hour 120 919 +quiet hour 121 1506 +quiet hour 123 7800332581637259264 +religion NULL 7295502697317097472 +religion -125 2106 +religion -106 NULL +religion -104 820 +religion -94 9174894805640142848 +religion -93 491 +religion -81 8463868417649524736 +religion -78 7497306924248834048 +religion -77 NULL +religion -76 -8959796625322680320 +religion -71 296 +religion -70 -7461750143936897024 +religion -69 -7433265617153343488 +religion -64 -8430370933326536704 +religion -62 913 +religion -60 7700734109530767360 +religion -56 782 +religion -44 -8807361476639629312 +religion -42 -9213132862973829120 +religion -41 7266437490436341760 +religion -38 -8140349174954893312 +religion -35 7295926343524163584 +religion -32 1537 +religion -29 8221561626658881536 +religion -28 -8857335871148171264 +religion -26 1039 +religion -24 2194 +religion -23 3183 +religion -9 -8696162322976997376 +religion -7 -6968771079156654080 +religion -3 203 +religion 0 8996824426131390464 +religion 2 8995562121346260992 +religion 4 2803 +religion 5 -7159700138947862528 +religion 15 4088 +religion 17 1780 +religion 29 -7612466483992051712 +religion 31 1021 +religion 38 1751 +religion 44 -8509547439040757760 +religion 45 -8070535484085895168 +religion 49 8836228556823977984 +religion 52 7250237407877382144 +religion 54 9211455920344088576 +religion 58 3467 +religion 67 8113585123802529792 +religion 70 7919597361814577152 +religion 73 9053187076403060736 +religion 74 815 +religion 76 -7273694358642851840 +religion 78 -8051587217208967168 +religion 82 3119 +religion 92 2067 +religion 93 3848 +religion 96 -8317591428117274624 +religion 97 3456 +religion 102 -8471480409335513088 +religion 103 8815398225009967104 +religion 106 3058 +religion 107 3810 +religion 110 -7849504559236210688 +religion 115 -7712425776235274240 +religion 120 5 +religion 123 979 +religion 124 8899122608190930944 +study skills NULL 8201491077550874624 +study skills -127 -8559008501282832384 +study skills -126 3507 +study skills -117 -8400045653258444800 +study skills -107 8785153741735616512 +study skills -106 8002769767000145920 +study skills -100 -8962547695651323904 +study skills -88 2551 +study skills -86 3990 +study skills -82 NULL +study skills -81 612 +study skills -76 NULL +study skills -73 -8535957064499879936 +study skills -65 8332670681629106176 +study skills -52 3533 +study skills -36 -8485389240529354752 +study skills -33 -7213775605408178176 +study skills -27 961 +study skills -26 -9187662685618348032 +study skills -22 7204802700490858496 +study skills -17 3144 +study skills -14 3913 +study skills -13 7195454019231834112 +study skills -6 -7296096276653391872 +study skills -5 2412 +study skills -4 1094 +study skills -3 707 +study skills -1 7381659098423926784 +study skills 2 -7507578199583694848 +study skills 3 7291432593139507200 +study skills 18 743 +study skills 21 7274777328897802240 +study skills 23 8333523087360901120 +study skills 25 -8704234107608203264 +study skills 28 -8494118409594650624 +study skills 29 -7220731681653604352 +study skills 30 2637 +study skills 35 -7488415863027367936 +study skills 39 8897901899039473664 +study skills 40 3961 +study skills 47 -7049618574399692800 +study skills 49 -7326863346317598720 +study skills 50 7054271419461812224 +study skills 54 7128222874437238784 +study skills 55 1368 +study skills 58 -7030489936116252672 +study skills 62 8372588378498777088 +study skills 63 2512 +study skills 66 -7497303453253402624 +study skills 68 3725 +study skills 72 -8028275725610909696 +study skills 77 7354813692542304256 +study skills 80 -9078662294976061440 +study skills 83 -7779270198785875968 +study skills 92 3059 +study skills 95 7393308503950548992 +study skills 96 -8046189486447017984 +study skills 101 2295 +study skills 106 -8161047750470279168 +study skills 107 9132009829414584320 +study skills 110 -7998947380180819968 +study skills 115 7344029858387820544 +study skills 119 2264 +study skills 123 -7797151404935618560 +topology NULL 8639254009546055680 +topology -122 3941 +topology -116 -7964801953178091520 +topology -106 NULL +topology -105 -7824788571789279232 +topology -102 8783241818558193664 +topology -98 7212090742612467712 +topology -96 3568 +topology -88 -6975459232300236800 +topology -86 2515 +topology -78 7347732772348870656 +topology -74 8773222500321361920 +topology -71 4037 +topology -60 1493 +topology -58 2619 +topology -57 8895174927321243648 +topology -50 8168742078705262592 +topology -44 -8664374244449050624 +topology -42 2434 +topology -41 1153 +topology -36 3588 +topology -32 -8923529803981905920 +topology -31 -7330413050756235264 +topology -25 244 +topology -21 -8615168537390571520 +topology -5 1439 +topology -1 7391208370547269632 +topology 7 7339426767877390336 +topology 11 3333 +topology 13 8411494452500930560 +topology 14 8367680396909404160 +topology 18 -9189155542884474880 +topology 26 2218 +topology 30 2348 +topology 38 7410096605330227200 +topology 41 2608 +topology 42 8547243497773457408 +topology 47 7705445437881278464 +topology 50 NULL +topology 52 1899 +topology 54 7091300332052062208 +topology 55 -6935038507792801792 +topology 58 -7616522969329262592 +topology 59 7212016545671348224 +topology 61 1914 +topology 63 -8961059046745669632 +topology 67 3680 +topology 69 2358 +topology 71 812 +topology 80 4075 +topology 81 22 +topology 83 1477 +topology 86 294 +topology 87 8900180888218329088 +topology 94 8146492373537660928 +topology 105 462 +topology 107 112 +topology 119 8525336514806317056 +topology 121 7933040277013962752 +topology 127 -8835408234247168000 +undecided NULL 8811693967537774592 +undecided -120 7242751359672631296 +undecided -118 4078 +undecided -117 7086206629592252416 +undecided -116 7013693841855774720 +undecided -115 NULL +undecided -114 8761174805938331648 +undecided -112 367 +undecided -105 4030 +undecided -104 8625937019655200768 +undecided -96 7697541332524376064 +undecided -93 -7777884099756122112 +undecided -90 NULL +undecided -84 -9109392978217484288 +undecided -83 7175638927948562432 +undecided -78 -9157613004431998976 +undecided -69 3907 +undecided -62 -8914039133569400832 +undecided -53 1827 +undecided -52 3071 +undecided -51 481 +undecided -43 7491898395977523200 +undecided -41 7690986322714066944 +undecided -29 1774 +undecided -28 4024 +undecided -23 1371 +undecided -19 -8523434203900674048 +undecided -13 3823 +undecided -10 NULL +undecided -8 8470141334513098752 +undecided 0 7944741547145502720 +undecided 1 1671 +undecided 7 8269730157217062912 +undecided 11 9089435102788009984 +undecided 13 -7700203302632210432 +undecided 14 9190466190353661952 +undecided 27 3622 +undecided 30 1910 +undecided 33 -8465978403747037184 +undecided 37 -7507424948896415744 +undecided 45 -8335810316927213568 +undecided 47 -8503573595507761152 +undecided 50 7570474972934488064 +undecided 51 1545 +undecided 56 8583916402383601664 +undecided 69 -7140008543769042944 +undecided 76 8169878743136043008 +undecided 95 2821 +undecided 97 -7451660755269853184 +undecided 98 443 +undecided 111 9180098147855769600 +undecided 114 3006 +undecided 119 168 +undecided 123 1187 +undecided 124 7888238729321496576 +values clariffication NULL -7456869587112255488 +values clariffication -123 7412924364686458880 +values clariffication -119 NULL +values clariffication -114 7235109456886816768 +values clariffication -109 7909645665163804672 +values clariffication -108 -7246123871306244096 +values clariffication -107 8295110846998233088 +values clariffication -105 7555301305375858688 +values clariffication -100 1053 +values clariffication -98 -8013397854633648128 +values clariffication -97 8579974641030365184 +values clariffication -95 -8996954350906294272 +values clariffication -92 2011 +values clariffication -90 1423 +values clariffication -81 6996686091335884800 +values clariffication -75 2569 +values clariffication -70 3083 +values clariffication -69 -7329807949048193024 +values clariffication -67 169 +values clariffication -63 -6947955278050181120 +values clariffication -62 2712 +values clariffication -60 2971 +values clariffication -55 3904 +values clariffication -51 3637 +values clariffication -50 8199513544090730496 +values clariffication -48 7370078518278397952 +values clariffication -46 NULL +values clariffication -42 -7611584069753552896 +values clariffication -40 2942 +values clariffication -38 2991 +values clariffication -37 7581052107944361984 +values clariffication -31 763 +values clariffication -28 3352 +values clariffication -8 8148211378319933440 +values clariffication -6 2056 +values clariffication -5 3031 +values clariffication 4 489 +values clariffication 8 -8426531414463545344 +values clariffication 9 -8603817012434198528 +values clariffication 10 7186401810812059648 +values clariffication 12 8190539859890601984 +values clariffication 14 -8147405381260345344 +values clariffication 15 7575087487730196480 +values clariffication 21 NULL +values clariffication 23 3255 +values clariffication 30 9107991000536498176 +values clariffication 32 NULL +values clariffication 42 2020 +values clariffication 50 1983 +values clariffication 53 3887 +values clariffication 56 3608 +values clariffication 57 -7669169138124275712 +values clariffication 62 3910 +values clariffication 70 1287 +values clariffication 74 2533 +values clariffication 80 7220131672176058368 +values clariffication 85 2986 +values clariffication 92 -8490382417169408000 +values clariffication 93 7741854854673367040 +values clariffication 96 2625 +values clariffication 97 3858 +values clariffication 98 8515682078777081856 +values clariffication 108 1115 +values clariffication 118 -9022154842129547264 +values clariffication 120 6927260280037097472 +values clariffication 122 -9084940280061485056 +values clariffication 124 -9210275791460499456 +values clariffication 126 3673 +values clariffication 127 -8347088645602050048 +wind surfing NULL 7961515985722605568 +wind surfing -124 1048 +wind surfing -121 7164349895861829632 +wind surfing -117 1177 +wind surfing -116 1941 +wind surfing -113 4020 +wind surfing -111 8415171956168417280 +wind surfing -104 8666178591503564800 +wind surfing -102 1518 +wind surfing -99 7265141874315517952 +wind surfing -98 8457906374051020800 +wind surfing -96 3147 +wind surfing -83 1509 +wind surfing -80 3630 +wind surfing -78 -9088239683374350336 +wind surfing -71 1990 +wind surfing -65 1495 +wind surfing -60 601 +wind surfing -57 6926925215281774592 +wind surfing -56 7107604675626008576 +wind surfing -42 2619 +wind surfing -39 3554 +wind surfing -38 7410872053689794560 +wind surfing -34 -7535857766791577600 +wind surfing -31 -9105701280936501248 +wind surfing -30 3945 +wind surfing -21 NULL +wind surfing -18 -8117838333114212352 +wind surfing -14 7130306447560826880 +wind surfing -12 3974 +wind surfing -8 9016280522993975296 +wind surfing -6 -6951350560260784128 +wind surfing -2 661 +wind surfing 5 3286 +wind surfing 11 -9149719074367946752 +wind surfing 15 3940 +wind surfing 16 2193 +wind surfing 20 3703 +wind surfing 21 8004633750273925120 +wind surfing 22 -7055619148037554176 +wind surfing 26 -8746702976270385152 +wind surfing 29 1157 +wind surfing 33 1055 +wind surfing 36 1559 +wind surfing 37 7593521922173419520 +wind surfing 40 -8831091081349758976 +wind surfing 41 3722 +wind surfing 44 3462 +wind surfing 45 8287522765741301760 +wind surfing 48 7414865343000322048 +wind surfing 52 8524940073536954368 +wind surfing 53 1856 +wind surfing 54 8100036735858401280 +wind surfing 58 7517159036469575680 +wind surfing 59 3613 +wind surfing 62 -8330233444291084288 +wind surfing 63 501 +wind surfing 64 7490717730239250432 +wind surfing 66 -7840338174858199040 +wind surfing 68 8455496814886002688 +wind surfing 71 9085381906890203136 +wind surfing 75 8825059717746376704 +wind surfing 78 6923604860394528768 +wind surfing 86 9169248521377374208 +wind surfing 88 1132 +wind surfing 92 1530 +wind surfing 96 8142241016679735296 +wind surfing 101 -7848043121524228096 +wind surfing 102 2649 +wind surfing 107 1032 +wind surfing 108 8508401924853850112 +wind surfing 111 8000440057238052864 +wind surfing 112 7077311975029555200 +wind surfing 121 3579 +xylophone band NULL 3401 +xylophone band -115 -7000925438663041024 +xylophone band -112 -8705403811649355776 +xylophone band -109 -7804116532814151680 +xylophone band -104 3510 +xylophone band -101 2786 +xylophone band -98 7060236714847412224 +xylophone band -96 8984935029383389184 +xylophone band -94 -7380731416973295616 +xylophone band -91 914 +xylophone band -78 8222714144797368320 +xylophone band -75 3084 +xylophone band -72 -7642381493746483200 +xylophone band -70 -8270479187688816640 +xylophone band -68 -8768744394742235136 +xylophone band -59 1845 +xylophone band -46 -7052619594823221248 +xylophone band -27 618 +xylophone band -26 3397 +xylophone band -23 8837420822750314496 +xylophone band -15 -9051477157204770816 +xylophone band -13 8708232769657815040 +xylophone band -10 -7404052043914526720 +xylophone band -6 8410599906334097408 +xylophone band -3 2803 +xylophone band -2 -7989766326847807488 +xylophone band 0 2988 +xylophone band 3 8286706213485297664 +xylophone band 6 1676 +xylophone band 7 7065344324692443136 +xylophone band 9 -7262798781688651776 +xylophone band 11 7500716020874674176 +xylophone band 14 -7881351200983613440 +xylophone band 17 7778936842502275072 +xylophone band 19 2984 +xylophone band 22 -7551394356730339328 +xylophone band 23 7675009476762918912 +xylophone band 33 311 +xylophone band 36 -6917607783359897600 +xylophone band 38 3067 +xylophone band 40 8129551357032259584 +xylophone band 52 -7687052294777208832 +xylophone band 60 1541 +xylophone band 62 8365058996333953024 +xylophone band 77 9209153648361848832 +xylophone band 79 1307 +xylophone band 84 1398 +xylophone band 85 7592440105065308160 +xylophone band 88 584 +xylophone band 92 -7399631791131074560 +xylophone band 94 8643198489997254656 +xylophone band 107 -8357136656913686528 +xylophone band 108 2108 +xylophone band 112 7921639119138070528 +xylophone band 118 1728 +xylophone band 122 9207107990561972224 +xylophone band 123 8677794924343164928 +xylophone band 125 263 +xylophone band 127 NULL +yard duty NULL 1972 +yard duty -127 2719 +yard duty -115 8279056098670198784 +yard duty -114 3747 +yard duty -109 2791 +yard duty -103 -8659692318743314432 +yard duty -102 NULL +yard duty -100 7309156463509061632 +yard duty -98 7492436934952574976 +yard duty -93 NULL +yard duty -91 -7094189393339678720 +yard duty -88 8145745969573666816 +yard duty -86 3606 +yard duty -85 NULL +yard duty -82 -8191825921746305024 +yard duty -76 3563 +yard duty -62 71 +yard duty -61 -7541860097718902784 +yard duty -57 8059284960252731392 +yard duty -53 2843 +yard duty -51 -7686220526274502656 +yard duty -50 8220104397160169472 +yard duty -49 NULL +yard duty -48 9040958359122640896 +yard duty -46 8641221723991433216 +yard duty -45 9139805788041134080 +yard duty -44 1065 +yard duty -33 1075 +yard duty -28 -7444070205513138176 +yard duty -27 7199539820886958080 +yard duty -21 2092 +yard duty -19 8656571350884048896 +yard duty -17 NULL +yard duty -15 1481 +yard duty -1 -9012093603044245504 +yard duty 8 -7194281951646187520 +yard duty 9 -8345065519816695808 +yard duty 10 3212 +yard duty 15 8945004737083555840 +yard duty 18 3901 +yard duty 22 -7109790267244814336 +yard duty 25 1030 +yard duty 28 7220581538170413056 +yard duty 30 7394967727502467072 +yard duty 34 -7858505678035951616 +yard duty 42 3724 +yard duty 48 8780196485890555904 +yard duty 53 590 +yard duty 55 8417381121663746048 +yard duty 57 677 +yard duty 60 1781 +yard duty 64 -8084716955963252736 +yard duty 65 735 +yard duty 78 -8275337702906757120 +yard duty 86 2688 +yard duty 90 -7692192232238678016 +yard duty 102 2004 +yard duty 105 80 +yard duty 110 7153922334283776000 +zync studies NULL 8962097525980225536 +zync studies -127 3079 +zync studies -117 -9219066990552760320 +zync studies -116 1542 +zync studies -111 1681 +zync studies -105 8665969966920990720 +zync studies -103 8509508263705477120 +zync studies -102 8900545829211299840 +zync studies -94 2563 +zync studies -90 8160569434550403072 +zync studies -83 8213810702473183232 +zync studies -79 -7152177800841502720 +zync studies -78 8235179243092090880 +zync studies -68 1870 +zync studies -61 -6974654664348033024 +zync studies -58 -8859107121649893376 +zync studies -57 3213 +zync studies -54 8555948987770511360 +zync studies -52 3462 +zync studies -50 2016 +zync studies -45 -8300764106868350976 +zync studies -40 3244 +zync studies -39 8099215208813903872 +zync studies -38 2514 +zync studies -37 2412 +zync studies -36 412 +zync studies -35 9000633029632499712 +zync studies -34 579 +zync studies -33 -8086577583338061824 +zync studies -32 2540 +zync studies -27 7936149988210212864 +zync studies -26 -8453491903284994048 +zync studies -21 296 +zync studies -20 9104574294205636608 +zync studies -12 2325 +zync studies 1 3841 +zync studies 7 1127 +zync studies 9 2878 +zync studies 11 279 +zync studies 15 8731960288562044928 +zync studies 19 -8714995808835444736 +zync studies 31 2306 +zync studies 37 2979 +zync studies 48 2205 +zync studies 59 NULL +zync studies 63 -8877431933441327104 +zync studies 70 8294315622451740672 +zync studies 87 -9203942396257984512 +zync studies 90 2850 +zync studies 91 8091421389575282688 +zync studies 98 1252 +zync studies 99 1608 +zync studies 100 8536948829863198720 +zync studies 116 9073672806863790080 +zync studies 120 7845953007588401152 diff --git a/ql/src/test/results/clientpositive/tez/vector_non_string_partition.q.out b/ql/src/test/results/clientpositive/tez/vector_non_string_partition.q.out new file mode 100644 index 000000000000..9b7e8f61b888 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_non_string_partition.q.out @@ -0,0 +1,182 @@ +PREHOOK: query: CREATE TABLE non_string_part(cint INT, cstring1 STRING, cdouble DOUBLE, ctimestamp1 TIMESTAMP) PARTITIONED BY (ctinyint tinyint) STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@non_string_part +POSTHOOK: query: CREATE TABLE non_string_part(cint INT, cstring1 STRING, cdouble DOUBLE, ctimestamp1 TIMESTAMP) PARTITIONED BY (ctinyint tinyint) STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@non_string_part +PREHOOK: query: INSERT OVERWRITE TABLE non_string_part PARTITION(ctinyint) SELECT cint, cstring1, cdouble, ctimestamp1, ctinyint fROM alltypesorc +WHERE ctinyint IS NULL AND cdouble IS NOT NULL ORDER BY cdouble +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@non_string_part +POSTHOOK: query: INSERT OVERWRITE TABLE non_string_part PARTITION(ctinyint) SELECT cint, cstring1, cdouble, ctimestamp1, ctinyint fROM alltypesorc +WHERE ctinyint IS NULL AND cdouble IS NOT NULL ORDER BY cdouble +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@non_string_part@ctinyint=__HIVE_DEFAULT_PARTITION__ +POSTHOOK: Lineage: non_string_part PARTITION(ctinyint=__HIVE_DEFAULT_PARTITION__).cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ] +POSTHOOK: Lineage: non_string_part PARTITION(ctinyint=__HIVE_DEFAULT_PARTITION__).cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: non_string_part PARTITION(ctinyint=__HIVE_DEFAULT_PARTITION__).cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: non_string_part PARTITION(ctinyint=__HIVE_DEFAULT_PARTITION__).ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ] +PREHOOK: query: SHOW PARTITIONS non_string_part +PREHOOK: type: SHOWPARTITIONS +PREHOOK: Input: default@non_string_part +POSTHOOK: query: SHOW PARTITIONS non_string_part +POSTHOOK: type: SHOWPARTITIONS +POSTHOOK: Input: default@non_string_part +ctinyint=__HIVE_DEFAULT_PARTITION__ +PREHOOK: query: EXPLAIN SELECT cint, ctinyint FROM non_string_part WHERE cint > 0 ORDER BY cint LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cint, ctinyint FROM non_string_part WHERE cint > 0 ORDER BY cint LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: non_string_part + Statistics: Num rows: 3073 Data size: 339150 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cint > 0) (type: boolean) + Statistics: Num rows: 1024 Data size: 113013 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int), ctinyint (type: tinyint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1024 Data size: 113013 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 1024 Data size: 113013 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: tinyint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: tinyint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1024 Data size: 113013 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 1100 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 1100 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cint, ctinyint FROM non_string_part WHERE cint > 0 ORDER BY cint LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@non_string_part +PREHOOK: Input: default@non_string_part@ctinyint=__HIVE_DEFAULT_PARTITION__ +#### A masked pattern was here #### +POSTHOOK: query: SELECT cint, ctinyint FROM non_string_part WHERE cint > 0 ORDER BY cint LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@non_string_part +POSTHOOK: Input: default@non_string_part@ctinyint=__HIVE_DEFAULT_PARTITION__ +#### A masked pattern was here #### +762 NULL +762 NULL +6981 NULL +6981 NULL +6981 NULL +86028 NULL +504142 NULL +799471 NULL +1248059 NULL +1286921 NULL +PREHOOK: query: EXPLAIN SELECT cint, cstring1 FROM non_string_part WHERE cint > 0 ORDER BY cint, cstring1 LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cint, cstring1 FROM non_string_part WHERE cint > 0 ORDER BY cint, cstring1 LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: non_string_part + Statistics: Num rows: 3073 Data size: 339150 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cint > 0) (type: boolean) + Statistics: Num rows: 1024 Data size: 113013 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int), cstring1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1024 Data size: 113013 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: string) + sort order: ++ + Statistics: Num rows: 1024 Data size: 113013 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1024 Data size: 113013 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 1100 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 10 Data size: 1100 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cint, cstring1 FROM non_string_part WHERE cint > 0 ORDER BY cint, cstring1 LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@non_string_part +PREHOOK: Input: default@non_string_part@ctinyint=__HIVE_DEFAULT_PARTITION__ +#### A masked pattern was here #### +POSTHOOK: query: SELECT cint, cstring1 FROM non_string_part WHERE cint > 0 ORDER BY cint, cstring1 LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@non_string_part +POSTHOOK: Input: default@non_string_part@ctinyint=__HIVE_DEFAULT_PARTITION__ +#### A masked pattern was here #### +762 3WsVeqb28VWEEOLI8ail +762 40ks5556SV +6981 1FNNhmiFLGw425NA13g +6981 o5mb0QP5Y48Qd4vdB0 +6981 sF2CRfgt2K +86028 T2o8XRFAL0HC4ikDQnfoCymw +504142 PlOxor04p5cvVl +799471 2fu24 +1248059 Uhps6mMh3IfHB3j7yH62K +1286921 ODLrXI8882q8LS8 diff --git a/ql/src/test/results/clientpositive/tez/vector_orderby_5.q.out b/ql/src/test/results/clientpositive/tez/vector_orderby_5.q.out new file mode 100644 index 000000000000..8a4d25a01216 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_orderby_5.q.out @@ -0,0 +1,193 @@ +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select bo, max(b) from vectortab2korc group by bo order by bo desc +PREHOOK: type: QUERY +POSTHOOK: query: explain +select bo, max(b) from vectortab2korc group by bo order by bo desc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: bo (type: boolean), b (type: bigint) + outputColumnNames: bo, b + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(b) + keys: bo (type: boolean) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: + + Map-reduce partition columns: _col0 (type: boolean) + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0) + keys: KEY._col0 (type: boolean) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: boolean), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: - + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: boolean), VALUE._col0 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select bo, max(b) from vectortab2korc group by bo order by bo desc +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select bo, max(b) from vectortab2korc group by bo order by bo desc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +true 9211455920344088576 +false 9209153648361848832 +NULL 9180098147855769600 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_1.q.out b/ql/src/test/results/clientpositive/tez/vectorization_1.q.out new file mode 100644 index 000000000000..6f428e1f5884 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_1.q.out @@ -0,0 +1,45 @@ +PREHOOK: query: SELECT VAR_POP(ctinyint), + (VAR_POP(ctinyint) / -26.28), + SUM(cfloat), + (-1.389 + SUM(cfloat)), + (SUM(cfloat) * (-1.389 + SUM(cfloat))), + MAX(ctinyint), + (-((SUM(cfloat) * (-1.389 + SUM(cfloat))))), + MAX(cint), + (MAX(cint) * 79.553), + VAR_SAMP(cdouble), + (10.175 % (-((SUM(cfloat) * (-1.389 + SUM(cfloat)))))), + COUNT(cint), + (-563 % MAX(cint)) +FROM alltypesorc +WHERE (((cdouble > ctinyint) + AND (cboolean2 > 0)) + OR ((cbigint < ctinyint) + OR ((cint > cbigint) + OR (cboolean1 < 0)))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT VAR_POP(ctinyint), + (VAR_POP(ctinyint) / -26.28), + SUM(cfloat), + (-1.389 + SUM(cfloat)), + (SUM(cfloat) * (-1.389 + SUM(cfloat))), + MAX(ctinyint), + (-((SUM(cfloat) * (-1.389 + SUM(cfloat))))), + MAX(cint), + (MAX(cint) * 79.553), + VAR_SAMP(cdouble), + (10.175 % (-((SUM(cfloat) * (-1.389 + SUM(cfloat)))))), + COUNT(cint), + (-563 % MAX(cint)) +FROM alltypesorc +WHERE (((cdouble > ctinyint) + AND (cboolean2 > 0)) + OR ((cbigint < ctinyint) + OR ((cint > cbigint) + OR (cboolean1 < 0)))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +1074.830257547229 -40.89917266161449 -21997.674998402596 -21999.063998402595 4.839282601059194E8 62 -4.839282601059194E8 1073680599 8.5414512692247E10 7.569848642620903E10 10.175 3745 -563 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_10.q.out b/ql/src/test/results/clientpositive/tez/vectorization_10.q.out new file mode 100644 index 000000000000..a2f3ce04e503 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_10.q.out @@ -0,0 +1,294 @@ +PREHOOK: query: SELECT cdouble, + ctimestamp1, + ctinyint, + cboolean1, + cstring1, + (-(cdouble)), + (cdouble + csmallint), + ((cdouble + csmallint) % 33), + (-(cdouble)), + (ctinyint % cdouble), + (ctinyint % csmallint), + (-(cdouble)), + (cbigint * (ctinyint % csmallint)), + (9763215.5639 - (cdouble + csmallint)), + (-((-(cdouble)))) +FROM alltypesorc +WHERE (((cstring2 <= '10') + OR ((ctinyint > cdouble) + AND (-5638.15 >= ctinyint))) + OR ((cdouble > 6981) + AND ((csmallint = 9763215.5639) + OR (cstring1 LIKE '%a')))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdouble, + ctimestamp1, + ctinyint, + cboolean1, + cstring1, + (-(cdouble)), + (cdouble + csmallint), + ((cdouble + csmallint) % 33), + (-(cdouble)), + (ctinyint % cdouble), + (ctinyint % csmallint), + (-(cdouble)), + (cbigint * (ctinyint % csmallint)), + (9763215.5639 - (cdouble + csmallint)), + (-((-(cdouble)))) +FROM alltypesorc +WHERE (((cstring2 <= '10') + OR ((ctinyint > cdouble) + AND (-5638.15 >= ctinyint))) + OR ((cdouble > 6981) + AND ((csmallint = 9763215.5639) + OR (cstring1 LIKE '%a')))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-200.0 1969-12-31 15:59:51.342 60 NULL NULL 200.0 -400.0 -4.0 200.0 60.0 60 200.0 118868432400 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:53.476 -22 NULL NULL 200.0 -400.0 -4.0 200.0 -22.0 -22 200.0 -3315653088 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:07.731 44 NULL NULL 200.0 -400.0 -4.0 200.0 44.0 44 200.0 -59205151456 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:53.743 25 NULL NULL 200.0 -400.0 -4.0 200.0 25.0 25 200.0 46547828825 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:09.883 46 NULL NULL 200.0 -400.0 -4.0 200.0 46.0 46 200.0 -20096868102 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:15.143 16 NULL NULL 200.0 -400.0 -4.0 200.0 16.0 16 200.0 -33756365728 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:02.972 -58 NULL NULL 200.0 -400.0 -4.0 200.0 -58.0 -58 200.0 60297449542 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:11.15 -30 NULL NULL 200.0 -400.0 -4.0 200.0 -30.0 -30 200.0 25029255630 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:03.794 13 NULL NULL 200.0 -400.0 -4.0 200.0 13.0 13 200.0 11630250073 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:49.331 -46 NULL NULL 200.0 -400.0 -4.0 200.0 -46.0 -46 200.0 93596894876 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:47.828 -10 NULL NULL 200.0 -400.0 -4.0 200.0 -10.0 -10 200.0 7156607330 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:06.3 14 NULL NULL 200.0 -400.0 -4.0 200.0 14.0 14 200.0 811814206 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:10.601 55 NULL NULL 200.0 -400.0 -4.0 200.0 55.0 55 200.0 110230625780 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:08.046 -33 NULL NULL 200.0 -400.0 -4.0 200.0 -33.0 -33 200.0 -9274988019 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:57.47 6 NULL NULL 200.0 -400.0 -4.0 200.0 6.0 6 200.0 -7015614564 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:04.967 62 NULL NULL 200.0 -400.0 -4.0 200.0 62.0 62 200.0 61311056 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:00.893 22 NULL NULL 200.0 -400.0 -4.0 200.0 22.0 22 200.0 -39924557090 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:54.866 -26 NULL NULL 200.0 -400.0 -4.0 200.0 -26.0 -26 200.0 7325400810 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:15.296 -59 NULL NULL 200.0 -400.0 -4.0 200.0 -59.0 -59 200.0 -9757710398 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:09.539 7 NULL NULL 200.0 -400.0 -4.0 200.0 7.0 7 200.0 9345007252 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:57.349 -56 NULL NULL 200.0 -400.0 -4.0 200.0 -56.0 -56 200.0 -34216461496 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:09.111 -37 NULL NULL 200.0 -400.0 -4.0 200.0 -37.0 -37 200.0 -9024569730 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:03.333 -44 NULL NULL 200.0 -400.0 -4.0 200.0 -44.0 -44 200.0 79435713324 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:05.377 -52 NULL NULL 200.0 -400.0 -4.0 200.0 -52.0 -52 200.0 -97123836836 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:48.188 18 NULL NULL 200.0 -400.0 -4.0 200.0 18.0 18 200.0 -15013264662 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:15.091 -43 NULL NULL 200.0 -400.0 -4.0 200.0 -43.0 -43 200.0 -46861099946 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:55.829 0 NULL NULL 200.0 -400.0 -4.0 200.0 0.0 0 200.0 0 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:46.076 9 NULL NULL 200.0 -400.0 -4.0 200.0 9.0 9 200.0 -14202953316 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:15.969 8 NULL NULL 200.0 -400.0 -4.0 200.0 8.0 8 200.0 -9832802032 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:01.653 8 NULL NULL 200.0 -400.0 -4.0 200.0 8.0 8 200.0 -15661041184 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:51.063 58 NULL NULL 200.0 -400.0 -4.0 200.0 58.0 58 200.0 -25062091276 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:44.04 32 NULL NULL 200.0 -400.0 -4.0 200.0 32.0 32 200.0 -8229422560 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:11.08 -9 NULL NULL 200.0 -400.0 -4.0 200.0 -9.0 -9 200.0 -5470381665 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:03.446 -19 NULL NULL 200.0 -400.0 -4.0 200.0 -19.0 -19 200.0 10670477159 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:54.187 -45 NULL NULL 200.0 -400.0 -4.0 200.0 -45.0 -45 200.0 -63963827865 9763615.5639 -200.0 +-200.0 1969-12-31 16:00:16.178 -30 NULL NULL 200.0 -400.0 -4.0 200.0 -30.0 -30 200.0 47698035420 9763615.5639 -200.0 +-200.0 1969-12-31 15:59:50.618 -60 NULL NULL 200.0 -400.0 -4.0 200.0 -60.0 -60 200.0 -55670852400 9763615.5639 -200.0 +NULL 1969-12-31 16:00:08.451 -51 true nOF31ehjY7ULCHMf NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false uUTO41xk6VyqYPh NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false 8AqHq NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true S0LP25K12US3 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false 8Jvom23dkWvvqv81DY5Ub3 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false GlCK4Dw7uIb1bsY NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true 7bD30suWFdI4o5Jp6m NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false 121307nh6r0H31Mg NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false J8p4pS3A8G75Ct2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true 1Iry1n1c NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false vmD7YLtKX0c4y2uU NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true 4k1RqRL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true 3StDSaH7 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false 2M106hVFEhu NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false 74nRe6WYOO7MD7632BOS NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true YX250 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false WUQQRWTJ1wK1H4 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false G2P1ogIIyMgo6j2a27egS NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false 12yT2agBjx3yQ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false fkA37sOkxCp44hlIKV NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false rLL8VlwJ0P NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false 37p34Jc2nloL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false c23S6Ky4w7Ld21lAbB NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false 1M4eTm8OcOW2dAMV2V5slS1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true 3yeq763N NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false sU1VhRD0P3w47WU66 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true Cw412mnXhN1F NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false T0Gq3D4N50YY48AG8OQBqTU NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true ON30Mh8A8 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true 7LdfF1415i51qpmHQI NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false 8l433e5J6I0fj0PM NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false EXWsAOlGYtb053ExF6u5FLyb NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true q2bIHkxaKKv7uD NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false JVCOfSTVb NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true M76D058tDDD25v3g NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false s038hX0U8 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false 4l6OX60y NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true jd4MshHSjPOuq1b2T NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false xgPW6tMwuNv67I0q2227 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false QRq4fxOau2jef55O5X1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false d3yQbTLvpGyi0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true Bb2AdwWmQOcwJhqF NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true OqM62X0G3j7XpBOTt70 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false tyt5Bwxxe NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false vgd8P8Ff1n NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 true j83cOtj22H5Aje7H3 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false QgA6r86x0JrfdHuM NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false d1N0u454kG87DN3o NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:08.451 -51 false J0VTT0R8t1JcxdoOO NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +12004.0 NULL NULL true a -12004.0 24008.0 17.0 -12004.0 NULL NULL -12004.0 NULL 9739207.5639 12004.0 +14468.0 NULL NULL true 3B3ubgg3B6a -14468.0 28936.0 28.0 -14468.0 NULL NULL -14468.0 NULL 9734279.5639 14468.0 +15601.0 1969-12-31 15:59:52.786 -1 NULL NULL -15601.0 31202.0 17.0 -15601.0 -1.0 -1 -15601.0 -672512361 9732013.5639 15601.0 +15601.0 1969-12-31 16:00:05.334 22 NULL NULL -15601.0 31202.0 17.0 -15601.0 22.0 22 -15601.0 -41268959688 9732013.5639 15601.0 +15601.0 1969-12-31 16:00:03.888 -23 NULL NULL -15601.0 31202.0 17.0 -15601.0 -23.0 -23 -15601.0 48400325149 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:56.481 10 NULL NULL -15601.0 31202.0 17.0 -15601.0 10.0 10 -15601.0 -12301158220 9732013.5639 15601.0 +15601.0 1969-12-31 16:00:05.83 -49 NULL NULL -15601.0 31202.0 17.0 -15601.0 -49.0 -49 -15601.0 -11115220466 9732013.5639 15601.0 +15601.0 1969-12-31 16:00:05.007 35 NULL NULL -15601.0 31202.0 17.0 -15601.0 35.0 35 -15601.0 74309762800 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:46.443 -43 NULL NULL -15601.0 31202.0 17.0 -15601.0 -43.0 -43 -15601.0 9618553900 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:44.115 -20 NULL NULL -15601.0 31202.0 17.0 -15601.0 -20.0 -20 -15601.0 5179862200 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:48.552 62 NULL NULL -15601.0 31202.0 17.0 -15601.0 62.0 62 -15601.0 -92267819432 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:46.33 24 NULL NULL -15601.0 31202.0 17.0 -15601.0 24.0 24 -15601.0 -41767499616 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:45.655 -23 NULL NULL -15601.0 31202.0 17.0 -15601.0 -23.0 -23 -15601.0 -14931660214 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:46.82 -46 NULL NULL -15601.0 31202.0 17.0 -15601.0 -46.0 -46 -15601.0 9610884144 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:57.729 30 NULL NULL -15601.0 31202.0 17.0 -15601.0 30.0 30 -15601.0 -59602621200 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:50.575 29 NULL NULL -15601.0 31202.0 17.0 -15601.0 29.0 29 -15601.0 -6410141150 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:46.258 -26 NULL NULL -15601.0 31202.0 17.0 -15601.0 -26.0 -26 -15601.0 -35132327672 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:54.384 -59 NULL NULL -15601.0 31202.0 17.0 -15601.0 -59.0 -59 -15601.0 -109154505771 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:47.436 -51 NULL NULL -15601.0 31202.0 17.0 -15601.0 -51.0 -51 -15601.0 -3541883598 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:48.71 -30 NULL NULL -15601.0 31202.0 17.0 -15601.0 -30.0 -30 -15601.0 -36655228350 9732013.5639 15601.0 +15601.0 1969-12-31 16:00:04.063 33 NULL NULL -15601.0 31202.0 17.0 -15601.0 33.0 33 -15601.0 -47936367534 9732013.5639 15601.0 +15601.0 1969-12-31 16:00:09.123 -14 NULL NULL -15601.0 31202.0 17.0 -15601.0 -14.0 -14 -15601.0 -14100538704 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:53.715 -44 NULL NULL -15601.0 31202.0 17.0 -15601.0 -44.0 -44 -15601.0 3342918304 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:58.704 -55 NULL NULL -15601.0 31202.0 17.0 -15601.0 -55.0 -55 -15601.0 73626727075 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:48.932 16 NULL NULL -15601.0 31202.0 17.0 -15601.0 16.0 16 -15601.0 NULL 9732013.5639 15601.0 +15601.0 1969-12-31 16:00:11.928 -32 NULL NULL -15601.0 31202.0 17.0 -15601.0 -32.0 -32 -15601.0 -54463594144 9732013.5639 15601.0 +15601.0 1969-12-31 16:00:02.401 30 NULL NULL -15601.0 31202.0 17.0 -15601.0 30.0 30 -15601.0 61004562030 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:51.153 -44 NULL NULL -15601.0 31202.0 17.0 -15601.0 -44.0 -44 -15601.0 17590906828 9732013.5639 15601.0 +15601.0 1969-12-31 16:00:14.175 -50 NULL NULL -15601.0 31202.0 17.0 -15601.0 -50.0 -50 -15601.0 -35817486300 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:54.253 -44 NULL NULL -15601.0 31202.0 17.0 -15601.0 -44.0 -44 -15601.0 -11984211184 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:54.524 52 NULL NULL -15601.0 31202.0 17.0 -15601.0 52.0 52 -15601.0 80665657592 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:52.778 4 NULL NULL -15601.0 31202.0 17.0 -15601.0 4.0 4 -15601.0 -3767539848 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:51.535 55 NULL NULL -15601.0 31202.0 17.0 -15601.0 55.0 55 -15601.0 -57431846615 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:51.645 10 NULL NULL -15601.0 31202.0 17.0 -15601.0 10.0 10 -15601.0 -10432519820 9732013.5639 15601.0 +15601.0 1969-12-31 15:59:53.279 -11 NULL NULL -15601.0 31202.0 17.0 -15601.0 -11.0 -11 -15601.0 -19558985941 9732013.5639 15601.0 +NULL 1969-12-31 16:00:15.892 8 false W4TEt52sKL0ndx4jeCahICDW NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true p3DvmcsqP6xMf NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true bc014i7354F36p NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false 0m8aHX5yF5muTQW NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false 8JNVrH3Lasa826 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true woiNv162mnSJ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true x6WK1U14M7IlWw NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true poE6hx8xV36vG NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false iStQPx6j8SvMc NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true 06Q47xVf1d5JSdb NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false e13dNAo71UXm4Yt1u NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false s3WL6smnb7 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true q6iS3txi22Rj22Ks4Dd NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false iEb04t2x333EF5wHoKRs6oKB NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false BwXBC7rU57 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false 31rhe NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false j2UTaANoWtpw2co6Nj3bR2UG NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true b NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true 07Hofhidd5ClnNx8jTl1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true pq2i0NL1cRlR3CpAj082 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true N334idEn4hyyO64 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false Xi7kOTT NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true 4A7p4HkPm01W0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true 8Fx0J88 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true Q0PCmMLk NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true i6G060 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false M3Vcm3o NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false eIyS41R32 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false 0siU5JLRoUBPi88Kenqg4 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false qI8k4Mf NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false 16qqkM5M66EMI3uWjWy NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false 1AQR8H78mO7jyb2PBF NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false fVgv88OvQR1BB7toX NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true 7GCfB5odqYDW1gq7iBWJ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true 1w7DPjq NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true 41PLN7aXgP57M4Rr3 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false uHkBp64 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true A30e7a8ia36g25YQc8xTXBgB NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true 7e6ntfBnB0m82i6k83 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true Pc18F2c6iW766Vd NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 false 4c2KT50dog5 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:15.892 8 true oibQ623k5v33kBUK8Q NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +8801.0 NULL NULL false 5712We1FSa -8801.0 17602.0 13.0 -8801.0 NULL NULL -8801.0 NULL 9745613.5639 8801.0 +14460.0 NULL NULL true hQAra -14460.0 28920.0 12.0 -14460.0 NULL NULL -14460.0 NULL 9734295.5639 14460.0 +-7196.0 1969-12-31 15:59:54.133 11 NULL NULL 7196.0 -14392.0 -4.0 7196.0 11.0 11 7196.0 13012660188 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:57.86 -52 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -52.0 -52 7196.0 1368083028 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:11.36 -53 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -53.0 -53 7196.0 71962864647 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:00.381 -2 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -2.0 -2 7196.0 -1206817104 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:04.233 26 NULL NULL 7196.0 -14392.0 -4.0 7196.0 26.0 26 7196.0 -15783340898 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:55.667 56 NULL NULL 7196.0 -14392.0 -4.0 7196.0 56.0 56 7196.0 -120146991496 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:13.231 53 NULL NULL 7196.0 -14392.0 -4.0 7196.0 53.0 53 7196.0 -36144071012 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:45.518 47 NULL NULL 7196.0 -14392.0 -4.0 7196.0 47.0 47 7196.0 81143089746 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:50.265 3 NULL NULL 7196.0 -14392.0 -4.0 7196.0 3.0 3 7196.0 -5006530458 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:13.787 24 NULL NULL 7196.0 -14392.0 -4.0 7196.0 24.0 24 7196.0 38316668352 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:51.009 -49 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -49.0 -49 7196.0 NULL 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:51.561 -35 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -35.0 -35 7196.0 -70617762705 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:06.848 -18 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -18.0 -18 7196.0 1982664288 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:52.969 -27 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -27.0 -27 7196.0 8967759183 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:13.816 31 NULL NULL 7196.0 -14392.0 -4.0 7196.0 31.0 31 7196.0 -56470642871 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:57.011 42 NULL NULL 7196.0 -14392.0 -4.0 7196.0 42.0 42 7196.0 -23099469372 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:53.686 -39 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -39.0 -39 7196.0 45315380682 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:08.418 41 NULL NULL 7196.0 -14392.0 -4.0 7196.0 41.0 41 7196.0 32453141435 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:44.292 -23 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -23.0 -23 7196.0 46033183457 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:08.373 60 NULL NULL 7196.0 -14392.0 -4.0 7196.0 60.0 60 7196.0 -119905930860 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:49.326 39 NULL NULL 7196.0 -14392.0 -4.0 7196.0 39.0 39 7196.0 -30362271264 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:48.929 -12 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -12.0 -12 7196.0 14774939436 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:01.22 -62 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -62.0 -62 7196.0 -103567870178 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:54.776 10 NULL NULL 7196.0 -14392.0 -4.0 7196.0 10.0 10 7196.0 -6713016290 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:15.923 15 NULL NULL 7196.0 -14392.0 -4.0 7196.0 15.0 15 7196.0 6481300020 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:55.492 14 NULL NULL 7196.0 -14392.0 -4.0 7196.0 14.0 14 7196.0 23828505764 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:11.703 -29 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -29.0 -29 7196.0 10213273940 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:53.145 -24 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -24.0 -24 7196.0 -19898664000 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:10.915 39 NULL NULL 7196.0 -14392.0 -4.0 7196.0 39.0 39 7196.0 -14094881658 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:15.188 -21 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -21.0 -21 7196.0 38372734386 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:56.135 -17 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -17.0 -17 7196.0 8662474406 9777607.5639 -7196.0 +-7196.0 1969-12-31 15:59:50.462 56 NULL NULL 7196.0 -14392.0 -4.0 7196.0 56.0 56 7196.0 -118616357552 9777607.5639 -7196.0 +-7196.0 1969-12-31 16:00:01.088 -16 NULL NULL 7196.0 -14392.0 -4.0 7196.0 -16.0 -16 7196.0 -7507617424 9777607.5639 -7196.0 +NULL 1969-12-31 16:00:02.351 11 true 70070HP7Kb8Lrj NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true s456h8r2b0jAt4Ni3qopHCxS NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false woeLEb NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false gk0kJenBW237uQoxGBx36 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false 0rtl1C NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true 1V07gCB41Psbr5xtLiK4E NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true a3EhVU6Wuy7ycJ7wY7h2gv NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true F8iVJQQdC6O4 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true 8s0kR1e4QVV7QO NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true kfUgQ2uGN8a NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false 6a421YV NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true 16L335OgyOKH4565 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false G2s1ly NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true Nmt6E360X6dpX58CR2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true 8tVuiCkFtGW5KX NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true ySAfuiG2vJNn5TR5 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true gjsL355dId0aH1mj0yGky1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true 6t557nSSrg1s0Q NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true N2Jfon7dyCN2Pmm1JA NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true 3Fhv1QY7Y776eQ38a NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false SN5NB5L3gpe2RtR2w50sNAd NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false M7xB374ixGAp NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true II1600yobW7p NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false y605nF0K3mMoM75j NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false w6173j NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false H5alUwndRKm NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false ve4Pgoehe6vhmYVLpP NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true yc2pX4jTI0xKh5xTys NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true 6AmfdSoTPmVvXdgM8CP20sx NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true cd6Xc861fDCGe NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true qlspyY30jeWkAcB1ptQ4co0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false l3r8T4QgT63 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false K11m3K43m5XFX40RJm1q NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true 5NM44RohO4r6 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false Bgk2cxNJk7f4rMmW38Dl3S1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true LP5AMypx5 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 true Bsi3VIb NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false V2NEmm6d0kLFGa5s01k NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false g552y0x1B4n NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false eicMhR0nJt12OH7IO2651bO NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +NULL 1969-12-31 16:00:02.351 11 false 1j3rth56N41X17c1S NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +11619.0 NULL NULL false lJ63qx87BLmdMfa -11619.0 23238.0 6.0 -11619.0 NULL NULL -11619.0 NULL 9739977.5639 11619.0 +12520.0 NULL NULL false S7UM6KgdxTofi6rwXBFa2a -12520.0 25040.0 26.0 -12520.0 NULL NULL -12520.0 NULL 9738175.5639 12520.0 +13167.0 NULL NULL true 4gBPJa -13167.0 26334.0 0.0 -13167.0 NULL NULL -13167.0 NULL 9736881.5639 13167.0 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_11.q.out b/ql/src/test/results/clientpositive/tez/vectorization_11.q.out new file mode 100644 index 000000000000..078bbe8f07d3 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_11.q.out @@ -0,0 +1,76 @@ +PREHOOK: query: SELECT cstring1, + cboolean1, + cdouble, + ctimestamp1, + (-3728 * csmallint), + (cdouble - 9763215.5639), + (-(cdouble)), + ((-(cdouble)) + 6981), + (cdouble * -5638.15) +FROM alltypesorc +WHERE ((cstring2 = cstring1) + OR ((ctimestamp1 IS NULL) + AND (cstring1 LIKE '%a'))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cstring1, + cboolean1, + cdouble, + ctimestamp1, + (-3728 * csmallint), + (cdouble - 9763215.5639), + (-(cdouble)), + ((-(cdouble)) + 6981), + (cdouble * -5638.15) +FROM alltypesorc +WHERE ((cstring2 = cstring1) + OR ((ctimestamp1 IS NULL) + AND (cstring1 LIKE '%a'))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +JRN4nLo30dv0bRtsrJa true -4319.0 NULL 16101232 -9767534.5639 4319.0 11300.0 2.4351169849999998E7 +Sd8C6q6L7l72qsa false 5306.0 NULL -19780768 -9757909.5639 -5306.0 1675.0 -2.99160239E7 +0AP3HERf5Ra true 5045.0 NULL -18807760 -9758170.5639 -5045.0 1936.0 -2.844446675E7 +a true 12004.0 NULL -44750912 -9751211.5639 -12004.0 -5023.0 -6.76803526E7 +oTh026tl2Ena false -11198.0 NULL 41746144 -9774413.5639 11198.0 18179.0 6.3136003699999996E7 +1MJ884f1w6B38WBeya false -2575.0 NULL 9599600 -9765790.5639 2575.0 9556.0 1.4518236249999998E7 +0MPx71oMa false 6644.0 NULL -24768832 -9756571.5639 -6644.0 337.0 -3.7459868599999994E7 +067wD7F8YQ8h32jPa true -16012.0 NULL 59692736 -9779227.5639 16012.0 22993.0 9.02780578E7 +5xaNVvLa true 2315.0 NULL -8630320 -9760900.5639 -2315.0 4666.0 -1.305231725E7 +3B3ubgg3B6a true 14468.0 NULL -53936704 -9748747.5639 -14468.0 -7487.0 -8.157275419999999E7 +G5n81R5jjsG5Gp58vqNa false -3597.0 NULL 13409616 -9766812.5639 3597.0 10578.0 2.0280425549999997E7 +Vb8ub0i0Maa true -9883.0 NULL 36843824 -9773098.5639 9883.0 16864.0 5.5721836449999996E7 +QTTWGUR2P2b08Dn62ea false -16086.0 NULL 59968608 -9779301.5639 16086.0 23067.0 9.069528089999999E7 +60S63VPytWwf5Hu6j75cHa false -4739.0 NULL 17666992 -9767954.5639 4739.0 11720.0 2.6719192849999998E7 +5ctB5Don6vvjSc6a false -1786.0 NULL 6658208 -9765001.5639 1786.0 8767.0 1.0069735899999999E7 +5712We1FSa false 8801.0 NULL -32810128 -9754414.5639 -8801.0 -1820.0 -4.962135815E7 +7C1L24VM7Ya true 4122.0 NULL -15366816 -9759093.5639 -4122.0 2859.0 -2.3240454299999997E7 +FWCW47mXs2a true -6839.0 NULL 25495792 -9770054.5639 6839.0 13820.0 3.8559307849999994E7 +47x5248dXuiqta true -12888.0 NULL 48046464 -9776103.5639 12888.0 19869.0 7.266447719999999E7 +a false 3350.0 NULL -12488800 -9759865.5639 -3350.0 3631.0 -1.88878025E7 +w62rRn0DnCSWJ1ht6qWa false -5638.15 NULL 958096 -9768853.7139 5638.15 12619.15 3.1788735422499996E7 +hQAra true 14460.0 NULL -53906880 -9748755.5639 -14460.0 -7479.0 -8.1527649E7 +f3oGa8ByjMs5eo7462S84Aa false 4278.0 NULL -15948384 -9758937.5639 -4278.0 2703.0 -2.41200057E7 +LAFo0rFpPj1aW8Js4Scpa true 2719.0 NULL -10136432 -9760496.5639 -2719.0 4262.0 -1.533012985E7 +055VA1s2XC7q70aD8S0PLpa true -12485.0 NULL 46544080 -9775700.5639 12485.0 19466.0 7.039230275E7 +iS4P5128HY44wa false 3890.0 NULL -14501920 -9759325.5639 -3890.0 3091.0 -2.19324035E7 +lJ63qx87BLmdMfa false 11619.0 NULL -43315632 -9751596.5639 -11619.0 -4638.0 -6.5509664849999994E7 +a true -2944.0 NULL 10975232 -9766159.5639 2944.0 9925.0 1.65987136E7 +bBAKio7bAmQq7vIlsc8H14a true 1949.0 NULL -7265872 -9761266.5639 -1949.0 5032.0 -1.098875435E7 +L057p1HPpJsmA3a true -9542.0 NULL 35572576 -9772757.5639 9542.0 16523.0 5.37992273E7 +S7UM6KgdxTofi6rwXBFa2a false 12520.0 NULL -46674560 -9750695.5639 -12520.0 -5539.0 -7.0589638E7 +4gBPJa true 13167.0 NULL -49086576 -9750048.5639 -13167.0 -6186.0 -7.423752105E7 +Tt484a true 754.0 NULL -2810912 -9762461.5639 -754.0 6227.0 -4251165.1 +PMoJ1NvQoAm5a true 539.0 NULL -2009392 -9762676.5639 -539.0 6442.0 -3038962.8499999996 +kro4Xu41bB7hiFa false -3277.0 NULL 12216656 -9766492.5639 3277.0 10258.0 1.8476217549999997E7 +a true 4991.0 NULL -18606448 -9758224.5639 -4991.0 1990.0 -2.814000665E7 +G7Ve8Px6a7J0DafBodF8JMma false -1291.0 NULL 4812848 -9764506.5639 1291.0 8272.0 7278851.649999999 +OHG2wWD83Ba false 6914.0 NULL -25775392 -9756301.5639 -6914.0 67.0 -3.8982169099999994E7 +DUSKf88a false 6764.0 NULL -25216192 -9756451.5639 -6764.0 217.0 -3.8136446599999994E7 +hnq6hkAfna true 5926.0 NULL -22092128 -9757289.5639 -5926.0 1055.0 -3.34116769E7 +K7tGy146ydka false -1236.0 NULL 4607808 -9764451.5639 1236.0 8217.0 6968753.399999999 +eNsh5tYa false NULL NULL NULL NULL NULL NULL NULL +a true -5905.0 NULL 22013840 -9769120.5639 5905.0 12886.0 3.3293275749999996E7 +dun2EEixI701imr3d6a true -8352.0 NULL 31136256 -9771567.5639 8352.0 15333.0 4.70898288E7 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_16.q.out b/ql/src/test/results/clientpositive/tez/vectorization_16.q.out new file mode 100644 index 000000000000..5d18b83db34e --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_16.q.out @@ -0,0 +1,666 @@ +PREHOOK: query: EXPLAIN +SELECT cstring1, + cdouble, + ctimestamp1, + (cdouble - 9763215.5639), + (-((cdouble - 9763215.5639))), + COUNT(cdouble), + STDDEV_SAMP(cdouble), + (-(STDDEV_SAMP(cdouble))), + (STDDEV_SAMP(cdouble) * COUNT(cdouble)), + MIN(cdouble), + (9763215.5639 / cdouble), + (COUNT(cdouble) / -1.389), + STDDEV_SAMP(cdouble) +FROM alltypesorc +WHERE ((cstring2 LIKE '%b%') + AND ((cdouble >= -1.389) + OR (cstring1 < 'a'))) +GROUP BY cstring1, cdouble, ctimestamp1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT cstring1, + cdouble, + ctimestamp1, + (cdouble - 9763215.5639), + (-((cdouble - 9763215.5639))), + COUNT(cdouble), + STDDEV_SAMP(cdouble), + (-(STDDEV_SAMP(cdouble))), + (STDDEV_SAMP(cdouble) * COUNT(cdouble)), + MIN(cdouble), + (9763215.5639 / cdouble), + (COUNT(cdouble) / -1.389), + STDDEV_SAMP(cdouble) +FROM alltypesorc +WHERE ((cstring2 LIKE '%b%') + AND ((cdouble >= -1.389) + OR (cstring1 < 'a'))) +GROUP BY cstring1, cdouble, ctimestamp1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((cstring2 like '%b%') and ((cdouble >= -1.389) or (cstring1 < 'a'))) (type: boolean) + Statistics: Num rows: 4096 Data size: 125745 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cstring1 (type: string), cdouble (type: double), ctimestamp1 (type: timestamp) + outputColumnNames: cstring1, cdouble, ctimestamp1 + Statistics: Num rows: 4096 Data size: 125745 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(cdouble), stddev_samp(cdouble), min(cdouble) + keys: cstring1 (type: string), cdouble (type: double), ctimestamp1 (type: timestamp) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 4096 Data size: 125745 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: double), _col2 (type: timestamp) + sort order: +++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: double), _col2 (type: timestamp) + Statistics: Num rows: 4096 Data size: 125745 Basic stats: COMPLETE Column stats: NONE + value expressions: _col3 (type: bigint), _col4 (type: struct), _col5 (type: double) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0), stddev_samp(VALUE._col1), min(VALUE._col2) + keys: KEY._col0 (type: string), KEY._col1 (type: double), KEY._col2 (type: timestamp) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 2048 Data size: 62872 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: double), _col2 (type: timestamp), (_col1 - 9763215.5639) (type: double), (- (_col1 - 9763215.5639)) (type: double), _col3 (type: bigint), _col4 (type: double), (- _col4) (type: double), (_col4 * _col3) (type: double), _col5 (type: double), (9763215.5639 / _col1) (type: double), (_col3 / -1.389) (type: double), _col4 (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12 + Statistics: Num rows: 2048 Data size: 62872 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2048 Data size: 62872 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cstring1, + cdouble, + ctimestamp1, + (cdouble - 9763215.5639), + (-((cdouble - 9763215.5639))), + COUNT(cdouble), + STDDEV_SAMP(cdouble), + (-(STDDEV_SAMP(cdouble))), + (STDDEV_SAMP(cdouble) * COUNT(cdouble)), + MIN(cdouble), + (9763215.5639 / cdouble), + (COUNT(cdouble) / -1.389), + STDDEV_SAMP(cdouble) +FROM alltypesorc +WHERE ((cstring2 LIKE '%b%') + AND ((cdouble >= -1.389) + OR (cstring1 < 'a'))) +GROUP BY cstring1, cdouble, ctimestamp1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cstring1, + cdouble, + ctimestamp1, + (cdouble - 9763215.5639), + (-((cdouble - 9763215.5639))), + COUNT(cdouble), + STDDEV_SAMP(cdouble), + (-(STDDEV_SAMP(cdouble))), + (STDDEV_SAMP(cdouble) * COUNT(cdouble)), + MIN(cdouble), + (9763215.5639 / cdouble), + (COUNT(cdouble) / -1.389), + STDDEV_SAMP(cdouble) +FROM alltypesorc +WHERE ((cstring2 LIKE '%b%') + AND ((cdouble >= -1.389) + OR (cstring1 < 'a'))) +GROUP BY cstring1, cdouble, ctimestamp1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL 15601.0 1969-12-31 15:59:43.919 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:44.07 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:44.179 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:44.394 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:44.477 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:44.568 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:44.571 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:44.708 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:44.782 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:45.816 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:46.114 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:46.82 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:46.953 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:47.134 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:47.406 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:47.511 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:47.616 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:47.975 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:48.052 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:48.299 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:48.429 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:48.552 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:48.679 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:48.943 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:49.331 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:49.896 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:50.345 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:50.66 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:51.104 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:51.265 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:51.413 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:51.596 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:51.637 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:52.076 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:52.311 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:52.326 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:52.357 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:52.587 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:53.038 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:53.583 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:53.584 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:53.635 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:54.024 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:54.116 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:54.334 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:54.342 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:54.454 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:54.583 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:54.994 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:55.411 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:55.847 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:55.989 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:55.998 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:56.068 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:56.338 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:56.806 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:56.858 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:56.913 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:56.97 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:57.215 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:57.261 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:57.28 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:57.386 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:57.524 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:57.678 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:57.729 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:57.932 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:58.134 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:58.279 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:58.343 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 15:59:58.752 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.025 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.054 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.108 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.122 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.123 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.182 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.206 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.326 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.396 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.476 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.523 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.545 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.547 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.648 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.699 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.708 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.741 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.88 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.931 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:00.953 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:01.057 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:01.153 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:01.714 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:02.12 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:02.215 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:02.285 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:02.6 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:02.742 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:02.894 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:02.92 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:02.925 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:03.174 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:03.273 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:03.351 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:03.366 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:03.512 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:03.722 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:04.063 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:04.149 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:04.254 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:04.259 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:04.52 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:04.687 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:04.745 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:04.964 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:05.027 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:05.132 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:05.327 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:05.334 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:05.617 -9747614.5639 9747614.5639 2 0.0 -0.0 0.0 15601.0 625.8070356964297 -1.4398848092152627 0.0 +NULL 15601.0 1969-12-31 16:00:05.83 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:06.051 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:06.692 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:07.844 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:08.176 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:08.252 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:08.368 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:08.607 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:08.868 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:08.948 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:09.357 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:09.473 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:09.582 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:09.697 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:10.045 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:10.132 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:10.173 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:10.259 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:10.649 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:10.738 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:10.898 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:10.957 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:10.983 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:12.205 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:12.498 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:12.848 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:12.853 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:12.948 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:13.029 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:13.183 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:13.503 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:13.801 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:13.955 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:14.452 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:14.565 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:14.733 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:14.747 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:14.903 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:15.39 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:15.805 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:16.076 -9747614.5639 9747614.5639 1 0.0 -0.0 0.0 15601.0 625.8070356964297 -0.7199424046076314 0.0 +NULL 15601.0 1969-12-31 16:00:16.279 -9747614.5639 9747614.5639 2 0.0 -0.0 0.0 15601.0 625.8070356964297 -1.4398848092152627 0.0 +00iT08 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +02VRbSC5I NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +03n0QGH NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +04w7DF25lHW4 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +060EnWLmWE4K8Pv NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +0Apbh7X08i2JyMK NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +0EIL81O NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +0S3XIH2NDeS0xS NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +0TN06s2WtHc NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +0cg0haOcvRSlXg36n2k3k4 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +0eBe1 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +0iqrc5 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +0lhcglI NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +0m8aHX5yF5muTQW NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +0y7AJ4Mgm5KvSXXPh2802 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +12Y88CFE3600p4daxwcd1x NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +12YH5vxufod8Wu1R NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +12yT2agBjx3yQ NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +14272peG NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +15cWEp2JVNf8 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +164334b43QNUJ NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +16L335OgyOKH4565 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +16P2kxk NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +18330cCeptCu564M15 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1NydRD5y5o3 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1cO0m NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1cVy44 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1f4h0JU667ht28ergbmQ42 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1gDXGG5x1D1v67 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1gdr1s14ckUm4h0A6Qj NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1hy4qfv NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1j80NSLbNMdIc2H3R01D703 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1meQ3kXTFFWELpid NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1nnwS4QL88H4N4NItBY7Nje NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1pxO53oqqBm2 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +1sJei0Gh NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +216N1n3bRv NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +21UE6fJyy NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +21k073eUyWivL NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +225vmIW8L75bEWVwFc NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +22RO52O0M1M01M0Uk74eGx NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +24IGcUngY NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +252YCGI2DXxpdm7 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +25l26587m1fsM43r NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +25w0iMiN06MP NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +278v67J NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2FBdToh5748vG3p1f4A2Koql NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2Is2C874 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2Kkk1q2T8Wfedft NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2MCek73Rwx NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2MXQgy3CnV528om4I77x51i7 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2OQAraVYMghEPUOfSU8YV3 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2UTX78oBg574jiOyOy2 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2W4Kg220OcCy065HG60k6e NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2diFRgr78diK6rSl0J NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2fbAP8EJ4D5sArmrfUo3r NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2g07108CQP0nN6tb NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2h2qsp14cr NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2j2W3xc42VkSq4Nh NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2jU3jtuGteBoe0Cmf3gr NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2sJpP82Tgm NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2tV7k NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2vXyUmN8p0lFrAjL1q3wOB6 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2wgUNj08KLsG4wks06 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +2yK4Bx76O NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +31H4o7hC07b NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +32t5QB82iY3 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +33woPLwH3MFmK NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +38Y7wt NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3Bm0J3xwvp NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3Fhv1QY7Y776eQ38a NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3G0hB0J4W5 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3KS55 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3N1o1bou84BHA70 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3Qm5PpAGbhf8NkWHJPv NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3SaS218squQ6hlv5H76M0C7p NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3StDSaH7 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3abOQ1oI NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3d1IDSME4v0F0LJbBr NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3h8mD2F76eq4mS NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3ocGWW4eY55A NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3r3sDvfUkG0yTP3LnX5mNQRr NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +3y1D3A7yxnQenJs NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +40CP0hDas6g7m NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +40PQ82QY6 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +42NY72w NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +435oSIASgSON6 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +46Y3G8Rf12bRc7KcY NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +48xYJd1 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4A7p4HkPm01W0 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4E4kmNOo5dbi25IJPfr05To NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4FANhS2t7p58VJ NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4KhrrQ0nJ7bMNTvhSCA NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4LQe2Pd4m640E58XFA NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4Mk3721iRh6 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4QL5UDAU0u7 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4SLME5xxs7k NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4UtjbA8bV4lkm NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4Y6F2QEy0v68 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4dogOB620W83nFvbfA3H5su NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4eFGE3dwF5 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4fNIOF6ul NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4jGPKNFY4TP2K8Gw NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4kMasVoB7lX1wc5i64bNk NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4l6OX60y NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4s0J04m4B52 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4v3613837dytHDDLO NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4y5o6RndF NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4yAo7t54rr50u6Vci3p NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +4yCd7wSAHaHQj5f70x NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +54GiCgon04NXfnms6b5WRj3W NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +570Sgf1L12mIrag2hICI51t NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +57vi3IQLIES0Q16OTuiC4Hf7 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +58hP5c4e3S68K72k1tO1Edw NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5NM44RohO4r6 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5TVADgO1Sm3 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5UbQg8TK4M8M71HeMyjKE46W NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5Uh3u36dO NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5UuE7jmo6vi40e7 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5Vd7QcLbL4c1d3Xb38G NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5VexJO NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5Vypcl14RV5OcLe NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5b38BDVq7FrK342c0iI2w26H NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5b5ILkyshcQJ04 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5bd5T5FEdOrYRW00bvs NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5g8SC6Ol3gb0433c0B6 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5h04mA3qHKIDx05St0NNx NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5if5K NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5kiN628ldFC6 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5mPiHh NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +5ps7e8 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +603r01G4J NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +60KqhA NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +62iCPoy17 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +64Vxl8QS NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +678iebWrL34TlW1 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +68k8JcLTRwf8X2P7nE4X NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +68ri6 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6IWllEnT NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6Mf2X0s3 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6Ob80MBP350rI275 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6Pkr6mt6rI3Cno71h1EPb NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6PpbCyjf6c88b NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6V57hA NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6WRFtUnuF3scFWKkY4h782J NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6Weo4BXewS0 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6e5Vk3f3pMdefo NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6h6Kk4v030PNPj3Kc NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6mQ6vL4d NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6o50QhXglfo0TlCF NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6oAU0mBFKtwXOIAp7Yqi75H7 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6p0GBdNQ2l5m15T NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6qdYTwkc3L5LGy NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +6xn1INe8xSG0487IUAaMYRH1 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +707R5coSE4fhbU4ptKS1Y NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +71027fBh8760gbL7aF4K NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +716Tk0iWs7Y NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +74w2cGm0 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +758SskfjqM6DdFRN0a NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +75nB4HFf6o8qwf7gRdfNL NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +763gCfCExoaB1yJmP NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +767fOfF1Oj8fyOv6YFI16rM NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +76Xl5E7ttiejsqcvfJmtNB0 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +77IBEt1Or1c24vWPvigS3w13 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +78Pqc5 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +7A80ue3836206PwI4 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +7AJH2574A48M0I1wN NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +7Dl7rr2aa2bfovt1yny5v NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +7GeACqY0R NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +7OnIvTMO27Hksu6 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +7SND06C NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +7i03i80 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +7p5eY6u03Oc NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +7wH3hBKdO55Xq3gEEe0 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +82If7B6m5DWsXE8LE NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +886wwGvXf6 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +88dJOgqIlfUA411 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8F0hWV76XxO87NUJ7 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8F3j56 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8H81KcrcWG4xB NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8JNVrH3Lasa826 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8Pa8a8MJ24 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8QWCbCQMIc3bsI7 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8RYSCOw18284ncYbFjG2kq6 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8cn0K NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8k5161277021n NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8qG35U66qmjIeLy5Iir6Yy21 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8qhEui604mB8 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8r4JLW NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8x0kI0603QJ6sd0404n NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8xML5SQm27gN NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +8yLnMOGxRK4e0Nff NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +A1h6G3bgyRxxvyhyWhVL NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +A30e7a8ia36g25YQc8xTXBgB NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +A4T1b NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +A72HPe7U2Ss24o0mmt58YXMm NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +A74OqWUyE2kkH1o0Y NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +ALpMVq8Q6P01w6 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +AfW67EWaHMIQ7yvfqHRUwB NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +AmYxfSOBdJv8B48l0VAeeI NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Anj0oF NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +AtJMWIQ0TN4v1Vrj1pHI NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +BRL163CF0o NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +BYt5Ww10GR12r8jQffd25Q NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Bb2AdwWmQOcwJhqF NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Bu1QtYr5sfcMxyD2c650GW NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Byv03ok NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +C3s1RP5q7vW4B NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +CEIf818kp62v NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +CbQNlJb76sx257 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +CbULhCEo3m8Q357 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +CoMlAAYdRSe NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +CpJNPe416g82r NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +CtU2PW66tBCk0swxglxDIp2F NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +D6BS618N87J NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +DS4iDURlsq418pFh8 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Df7N7eedkot NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +DfTvU1F4hkNd5lJ4FGSe NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +DglR0T NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +E4JEjNiE NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +EX3K4E0EI1YiI1x NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Eo3tUJICSn2 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +EqAU5Jit8kJfgutgf0U7Ren5 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +EqUT4hfjoX45 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Fe4Bfs NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Fj7LiN85m NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +GS7Sinl7k2srPHIdC7xsu NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +GVsdgDhg NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +GY0R5v7a8x43DO5 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +H4fFjtoak NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +HA1yh NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Hf8123hK0 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +HfdKopI NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +I1be6JuP8HeaA8UI8c NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +I2p1w NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +I357kVmhkel010Hs16 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +I35E0Rr2 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +I884R85q1kn NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +IGG1BJ NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +IViYKd NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +IW8oEsDH0V0rY5U NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +IifFS03pnGO NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Iit87iX NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +IorWR NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +J6S681J6JPB2SD6Uc08U1 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +JH051GV4O3FyM7 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +JPrU65giKMJpNd0611w4qcF NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +JXySu NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Jj21024T2xdn6 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Jm1d3h3OxQE NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +JrReU7qfE NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Js07yFa2qnrfVU1j2e3 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +JvGVOip65N3hgA NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +KCaXaJvGKfj1tr NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +KDr0tMRnCJJIBA84 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +KIXnc1tg5tx7JUmV14 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +KKQ82Pvc NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +KXvq4OfKW641X0d4WHM2md0 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Kft68MpoAc4tLMS2ck3 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +KxewntCJ0mlktP NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +L0if56g18jb2G4ThBy8FLD NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +L417R4I8nG6Mps NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +L64VGc NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +LAi381BGdEy78j4ke NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +LCDBN0aaC17yk5kx8bq NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +LHow6beTFmm4fPjj43Qy NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +LKRvI78ReJ6OGetwpvK NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +LT14Ev NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +LXmcL8DQ616e NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +LdiBaUk NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +M3e586V3688s64J7j NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +M4HtnssfQiEAD0jYL6 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +M5TxI32kgu NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +M7xB374ixGAp NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +MCL83EIwhTq5L3clV2S1c8Q NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +MJ7Ej4tBYS8l2mK NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +MP6mdTJr380 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +MWoHbU5I00oL7X86882y8cou NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +MXefAh62BQEYn6T54AuUf NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Mk4tWJvwrb NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +MveCxn2pneC75WCdN76kovr NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +N17J6bKt243 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +N6BMOr83ecL NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +N6Dh6XreCWb0aA4nmDnFOO NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +N8222wByj NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +NABd3KhjjaVfcj2Q7SJ46 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Nmt6E360X6dpX58CR2 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +O2U2c43Dx4QtYQ3ynA1CLGI3 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +O65HL NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +OLq35YO3U NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +OSBq0b NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +OSc0r NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +OgARV6n1iMYIW1VUm1ybG NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Or43Y6lI NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +OxfCar17 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +P4shXtBlvn NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +PADsH06 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +PLFB86o84end3tdsS2hVL NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +PWAPwbw NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Pcj70ddpJ0iD NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +PnD8l5 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Q31pMN30tPv010W0U2h1s124 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Q72e8c NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +QOwp866GD0E0g3nwq NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +QRQRpg NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +QSdVNqav1efvKUht5o3N6 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +QT8H3G133r01VKlM3P45iP NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Qfy07 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Qgoscb7 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +R0mjxoFLf4 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +R875Td3QD NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +R8B6PMUCp8Fuw NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +RG57safmo8UjXo4c1230u NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +RVa8teOcCN NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +RaVXc0k4i2X NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +ReN3066RXtQ3 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +RsDHrL27QLW NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +S2XuI4SnrfBF NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Sf0Oqe1G NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +SrPY18L7FKBp8WO NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Sw74GCctTG3OmA1S330EC NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +T3qQxO7gFwJNh4Mb3 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +TD01cg4gOr1msv1b NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +TiI8AiopSL NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +To6s02tm NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +TrVt3076w4QSXF83Io NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Tt1BcY8q3welBr7o22KI3jF NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +U16wryUI NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +U83eH0Y8P1 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +UAx76nB02256 NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +UQv8T28745qO62T NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +UtFC8i5 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +V2075fV NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +V630OaEm NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +VAv3o4ihQU0V87NMwfyg31 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +ViqXS6s88N1yr14lj7I NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Vp5I58Cls2jANj NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +VqxF5T5p2bx7R1d4DB NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +WT37Vm67A7YcqB NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +WYv3r54T7Ct4h607XnR NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +WnN1oFEwhY4Heri3J7Jp8St NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +WxJ1m2qV553MQ5vgJG8cj NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +X1cNlHRHJ5h6H8qs832 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +X5pO0i1Yd6055F5FPNY NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +X81pl2c1Y NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +XA0uP5c61MU NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +XBfrKWaX68o7HCfKf NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +XOypj8 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +XWuYuk5qpn5Khs3764E56 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +XtF80FdC1a3Uw22G6GIPr NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Xtw4eM002sS1101p NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Xw6nBW1A205Rv7rE NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +XyG3M688p4eP46 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Y8q0gMXFDD4qo2nSC8 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +YCY6SM1FK83x0XYANbo NULL 1969-12-31 16:00:15.892 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +YRLL1E NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +YY7Ji0cFe7R1 NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +Ytgl8 NULL 1969-12-31 16:00:08.451 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL +YwV7DVLB0kut0S5p NULL 1969-12-31 16:00:02.351 NULL NULL 0 NULL NULL NULL NULL NULL -0.0 NULL diff --git a/ql/src/test/results/clientpositive/tez/vectorization_2.q.out b/ql/src/test/results/clientpositive/tez/vectorization_2.q.out new file mode 100644 index 000000000000..709a75f2abe7 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_2.q.out @@ -0,0 +1,49 @@ +PREHOOK: query: SELECT AVG(csmallint), + (AVG(csmallint) % -563), + (AVG(csmallint) + 762), + SUM(cfloat), + VAR_POP(cbigint), + (-(VAR_POP(cbigint))), + (SUM(cfloat) - AVG(csmallint)), + COUNT(*), + (-((SUM(cfloat) - AVG(csmallint)))), + (VAR_POP(cbigint) - 762), + MIN(ctinyint), + ((-(VAR_POP(cbigint))) + MIN(ctinyint)), + AVG(cdouble), + (((-(VAR_POP(cbigint))) + MIN(ctinyint)) - SUM(cfloat)) +FROM alltypesorc +WHERE (((ctimestamp1 < ctimestamp2) + AND ((cstring2 LIKE 'b%') + AND (cfloat <= -5638.15))) + OR ((cdouble < ctinyint) + AND ((-10669 != ctimestamp2) + OR (359 > cint)))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT AVG(csmallint), + (AVG(csmallint) % -563), + (AVG(csmallint) + 762), + SUM(cfloat), + VAR_POP(cbigint), + (-(VAR_POP(cbigint))), + (SUM(cfloat) - AVG(csmallint)), + COUNT(*), + (-((SUM(cfloat) - AVG(csmallint)))), + (VAR_POP(cbigint) - 762), + MIN(ctinyint), + ((-(VAR_POP(cbigint))) + MIN(ctinyint)), + AVG(cdouble), + (((-(VAR_POP(cbigint))) + MIN(ctinyint)) - SUM(cfloat)) +FROM alltypesorc +WHERE (((ctimestamp1 < ctimestamp2) + AND ((cstring2 LIKE 'b%') + AND (cfloat <= -5638.15))) + OR ((cdouble < ctinyint) + AND ((-10669 != ctimestamp2) + OR (359 > cint)))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-5646.467075892857 -16.467075892856883 -4884.467075892857 -2839.634998679161 1.49936299222378778E18 -1.49936299222378778E18 2806.832077213696 3584 -2806.832077213696 1.49936299222378701E18 -64 -1.49936299222378778E18 -5650.1297631138395 -1.49936299222378496E18 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_3.q.out b/ql/src/test/results/clientpositive/tez/vectorization_3.q.out new file mode 100644 index 000000000000..d797835299c6 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_3.q.out @@ -0,0 +1,55 @@ +WARNING: Comparing a bigint and a double may result in a loss of precision. +WARNING: Comparing a bigint and a double may result in a loss of precision. +PREHOOK: query: SELECT STDDEV_SAMP(csmallint), + (STDDEV_SAMP(csmallint) - 10.175), + STDDEV_POP(ctinyint), + (STDDEV_SAMP(csmallint) * (STDDEV_SAMP(csmallint) - 10.175)), + (-(STDDEV_POP(ctinyint))), + (STDDEV_SAMP(csmallint) % 79.553), + (-((STDDEV_SAMP(csmallint) * (STDDEV_SAMP(csmallint) - 10.175)))), + STDDEV_SAMP(cfloat), + (-(STDDEV_SAMP(csmallint))), + SUM(cfloat), + ((-((STDDEV_SAMP(csmallint) * (STDDEV_SAMP(csmallint) - 10.175)))) / (STDDEV_SAMP(csmallint) - 10.175)), + (-((STDDEV_SAMP(csmallint) - 10.175))), + AVG(cint), + (-3728 - STDDEV_SAMP(csmallint)), + STDDEV_POP(cint), + (AVG(cint) / STDDEV_SAMP(cfloat)) +FROM alltypesorc +WHERE (((cint <= cfloat) + AND ((79.553 != cbigint) + AND (ctimestamp2 = -29071))) + OR ((cbigint > cdouble) + AND ((79.553 <= csmallint) + AND (ctimestamp1 > ctimestamp2)))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT STDDEV_SAMP(csmallint), + (STDDEV_SAMP(csmallint) - 10.175), + STDDEV_POP(ctinyint), + (STDDEV_SAMP(csmallint) * (STDDEV_SAMP(csmallint) - 10.175)), + (-(STDDEV_POP(ctinyint))), + (STDDEV_SAMP(csmallint) % 79.553), + (-((STDDEV_SAMP(csmallint) * (STDDEV_SAMP(csmallint) - 10.175)))), + STDDEV_SAMP(cfloat), + (-(STDDEV_SAMP(csmallint))), + SUM(cfloat), + ((-((STDDEV_SAMP(csmallint) * (STDDEV_SAMP(csmallint) - 10.175)))) / (STDDEV_SAMP(csmallint) - 10.175)), + (-((STDDEV_SAMP(csmallint) - 10.175))), + AVG(cint), + (-3728 - STDDEV_SAMP(csmallint)), + STDDEV_POP(cint), + (AVG(cint) / STDDEV_SAMP(cfloat)) +FROM alltypesorc +WHERE (((cint <= cfloat) + AND ((79.553 != cbigint) + AND (ctimestamp2 = -29071))) + OR ((cbigint > cdouble) + AND ((79.553 <= csmallint) + AND (ctimestamp1 > ctimestamp2)))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +0.0 -10.175 34.287285216637066 -0.0 -34.287285216637066 0.0 0.0 34.34690095515641 -0.0 197.89499950408936 -0.0 10.175 NULL -3728.0 NULL NULL diff --git a/ql/src/test/results/clientpositive/tez/vectorization_4.q.out b/ql/src/test/results/clientpositive/tez/vectorization_4.q.out new file mode 100644 index 000000000000..0d6829f6d887 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_4.q.out @@ -0,0 +1,49 @@ +PREHOOK: query: SELECT SUM(cint), + (SUM(cint) * -563), + (-3728 + SUM(cint)), + STDDEV_POP(cdouble), + (-(STDDEV_POP(cdouble))), + AVG(cdouble), + ((SUM(cint) * -563) % SUM(cint)), + (((SUM(cint) * -563) % SUM(cint)) / AVG(cdouble)), + VAR_POP(cdouble), + (-((((SUM(cint) * -563) % SUM(cint)) / AVG(cdouble)))), + ((-3728 + SUM(cint)) - (SUM(cint) * -563)), + MIN(ctinyint), + MIN(ctinyint), + (MIN(ctinyint) * (-((((SUM(cint) * -563) % SUM(cint)) / AVG(cdouble))))) +FROM alltypesorc +WHERE (((csmallint >= cint) + OR ((-89010 >= ctinyint) + AND (cdouble > 79.553))) + OR ((-563 != cbigint) + AND ((ctinyint != cbigint) + OR (-3728 >= cdouble)))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT SUM(cint), + (SUM(cint) * -563), + (-3728 + SUM(cint)), + STDDEV_POP(cdouble), + (-(STDDEV_POP(cdouble))), + AVG(cdouble), + ((SUM(cint) * -563) % SUM(cint)), + (((SUM(cint) * -563) % SUM(cint)) / AVG(cdouble)), + VAR_POP(cdouble), + (-((((SUM(cint) * -563) % SUM(cint)) / AVG(cdouble)))), + ((-3728 + SUM(cint)) - (SUM(cint) * -563)), + MIN(ctinyint), + MIN(ctinyint), + (MIN(ctinyint) * (-((((SUM(cint) * -563) % SUM(cint)) / AVG(cdouble))))) +FROM alltypesorc +WHERE (((csmallint >= cint) + OR ((-89010 >= ctinyint) + AND (cdouble > 79.553))) + OR ((-563 != cbigint) + AND ((ctinyint != cbigint) + OR (-3728 >= cdouble)))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-493101012745 277615870175435 -493101016473 136727.7868296355 -136727.7868296355 2298.5515807767374 0 0.0 1.8694487691330246E10 -0.0 -278108971191908 -64 -64 0.0 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_5.q.out b/ql/src/test/results/clientpositive/tez/vectorization_5.q.out new file mode 100644 index 000000000000..914a62687218 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_5.q.out @@ -0,0 +1,43 @@ +PREHOOK: query: SELECT MAX(csmallint), + (MAX(csmallint) * -75), + COUNT(*), + ((MAX(csmallint) * -75) / COUNT(*)), + (6981 * MAX(csmallint)), + MIN(csmallint), + (-(MIN(csmallint))), + (197 % ((MAX(csmallint) * -75) / COUNT(*))), + SUM(cint), + MAX(ctinyint), + (-(MAX(ctinyint))), + ((-(MAX(ctinyint))) + MAX(ctinyint)) +FROM alltypesorc +WHERE (((cboolean2 IS NOT NULL) + AND (cstring1 LIKE '%b%')) + OR ((ctinyint = cdouble) + AND ((ctimestamp2 IS NOT NULL) + AND (cstring2 LIKE 'a')))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT MAX(csmallint), + (MAX(csmallint) * -75), + COUNT(*), + ((MAX(csmallint) * -75) / COUNT(*)), + (6981 * MAX(csmallint)), + MIN(csmallint), + (-(MIN(csmallint))), + (197 % ((MAX(csmallint) * -75) / COUNT(*))), + SUM(cint), + MAX(ctinyint), + (-(MAX(ctinyint))), + ((-(MAX(ctinyint))) + MAX(ctinyint)) +FROM alltypesorc +WHERE (((cboolean2 IS NOT NULL) + AND (cstring1 LIKE '%b%')) + OR ((ctinyint = cdouble) + AND ((ctimestamp2 IS NOT NULL) + AND (cstring2 LIKE 'a')))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +16343 -1225725 1070 -1145.53738317757 114090483 -16307 16307 197.0 -26853917571 11 -11 0 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_6.q.out b/ql/src/test/results/clientpositive/tez/vectorization_6.q.out new file mode 100644 index 000000000000..d73274fc5b37 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_6.q.out @@ -0,0 +1,1620 @@ +PREHOOK: query: SELECT cboolean1, + cfloat, + cstring1, + (988888 * csmallint), + (-(csmallint)), + (-(cfloat)), + (-26.28 / cfloat), + (cfloat * 359), + (cint % ctinyint), + (-(cdouble)), + (ctinyint - -75), + (762 * (cint % ctinyint)) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND ((((cboolean1 <= 0) + AND (cboolean2 >= cboolean1)) + OR ((cbigint IS NOT NULL) + AND ((cstring2 LIKE '%a') + OR (cfloat <= -257)))))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cboolean1, + cfloat, + cstring1, + (988888 * csmallint), + (-(csmallint)), + (-(cfloat)), + (-26.28 / cfloat), + (cfloat * 359), + (cint % ctinyint), + (-(cdouble)), + (ctinyint - -75), + (762 * (cint % ctinyint)) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND ((((cboolean1 <= 0) + AND (cboolean2 >= cboolean1)) + OR ((cbigint IS NOT NULL) + AND ((cstring2 LIKE '%a') + OR (cfloat <= -257)))))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL 16.0 NULL -197777600 200 -16.0 -1.6425 5744.0 NULL 200.0 91 NULL +NULL -44.0 NULL -197777600 200 44.0 0.5972727272727273 -15796.0 NULL 200.0 31 NULL +NULL 34.0 NULL -197777600 200 -34.0 -0.7729411764705882 12206.0 NULL 200.0 109 NULL +NULL 4.0 NULL -197777600 200 -4.0 -6.57 1436.0 NULL 200.0 79 NULL +NULL 29.0 NULL -197777600 200 -29.0 -0.9062068965517242 10411.0 NULL 200.0 104 NULL +NULL 10.0 NULL -197777600 200 -10.0 -2.628 3590.0 NULL 200.0 85 NULL +NULL -34.0 NULL -197777600 200 34.0 0.7729411764705882 -12206.0 NULL 200.0 41 NULL +NULL 59.0 NULL -197777600 200 -59.0 -0.44542372881355935 21181.0 NULL 200.0 134 NULL +NULL -62.0 NULL -197777600 200 62.0 0.4238709677419355 -22258.0 NULL 200.0 13 NULL +NULL -36.0 NULL -197777600 200 36.0 0.73 -12924.0 NULL 200.0 39 NULL +NULL 10.0 NULL -197777600 200 -10.0 -2.628 3590.0 NULL 200.0 85 NULL +NULL -38.0 NULL -197777600 200 38.0 0.6915789473684211 -13642.0 NULL 200.0 37 NULL +NULL -43.0 NULL -197777600 200 43.0 0.6111627906976744 -15437.0 NULL 200.0 32 NULL +false -51.0 LFgU5WT87C2yJ4W4YU0r8Pp NULL NULL 51.0 0.5152941176470588 -18309.0 -25 NULL 24 -19050 +false -51.0 75bFXC7TqGo1SEaYAx4C58m NULL NULL 51.0 0.5152941176470588 -18309.0 NULL NULL 24 NULL +false -51.0 v3p153e2bSkGS70v04G NULL NULL 51.0 0.5152941176470588 -18309.0 3 NULL 24 2286 +false -51.0 0pOH7A4O8aQ37NuBqn NULL NULL 51.0 0.5152941176470588 -18309.0 32 NULL 24 24384 +false -51.0 8ShAFcD734S8Q26WjMwpq0Q NULL NULL 51.0 0.5152941176470588 -18309.0 39 NULL 24 29718 +false -51.0 t32s57Cjt4a250qQgVNAB5T NULL NULL 51.0 0.5152941176470588 -18309.0 -30 NULL 24 -22860 +false -51.0 M152O NULL NULL 51.0 0.5152941176470588 -18309.0 -44 NULL 24 -33528 +false -51.0 FgJ7Hft6845s1766oyt82q NULL NULL 51.0 0.5152941176470588 -18309.0 28 NULL 24 21336 +false -51.0 XWIExC7NI3bqu6VhR14g2 NULL NULL 51.0 0.5152941176470588 -18309.0 -40 NULL 24 -30480 +false -51.0 2diFRgr78diK6rSl0J NULL NULL 51.0 0.5152941176470588 -18309.0 22 NULL 24 16764 +false -51.0 21UE6fJyy NULL NULL 51.0 0.5152941176470588 -18309.0 -40 NULL 24 -30480 +false -51.0 H3bTj310QaL012cPe NULL NULL 51.0 0.5152941176470588 -18309.0 3 NULL 24 2286 +false -51.0 7342q5oFQL8QIl7cO NULL NULL 51.0 0.5152941176470588 -18309.0 -41 NULL 24 -31242 +false -51.0 m4eSLx4qihVg1e32 NULL NULL 51.0 0.5152941176470588 -18309.0 -3 NULL 24 -2286 +false -51.0 Tqar00A NULL NULL 51.0 0.5152941176470588 -18309.0 -49 NULL 24 -37338 +false -51.0 mC4mr NULL NULL 51.0 0.5152941176470588 -18309.0 -42 NULL 24 -32004 +false -51.0 2vtmB0qNlHlGV15P1p NULL NULL 51.0 0.5152941176470588 -18309.0 -31 NULL 24 -23622 +false -51.0 2wbgE0Yo1RX82H2sp4f1l5 NULL NULL 51.0 0.5152941176470588 -18309.0 -47 NULL 24 -35814 +false -51.0 H8mh48T7 NULL NULL 51.0 0.5152941176470588 -18309.0 27 NULL 24 20574 +false -51.0 U616In80F54RI NULL NULL 51.0 0.5152941176470588 -18309.0 41 NULL 24 31242 +false -51.0 BuSLb058f2 NULL NULL 51.0 0.5152941176470588 -18309.0 4 NULL 24 3048 +false -51.0 OSc0r NULL NULL 51.0 0.5152941176470588 -18309.0 -50 NULL 24 -38100 +false -51.0 75KN62a2iAf0j5Jol77wH7 NULL NULL 51.0 0.5152941176470588 -18309.0 -25 NULL 24 -19050 +false -51.0 66Mx4v NULL NULL 51.0 0.5152941176470588 -18309.0 -11 NULL 24 -8382 +false -51.0 XOypj8 NULL NULL 51.0 0.5152941176470588 -18309.0 48 NULL 24 36576 +false -51.0 61eT82N24 NULL NULL 51.0 0.5152941176470588 -18309.0 30 NULL 24 22860 +false -51.0 lVfv3fD1jn532h3K67H NULL NULL 51.0 0.5152941176470588 -18309.0 28 NULL 24 21336 +false -51.0 J1an665U NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 wXbLC0LS2bFf12f1ljC NULL NULL 51.0 0.5152941176470588 -18309.0 49 NULL 24 37338 +false -51.0 j0L50J2e82 NULL NULL 51.0 0.5152941176470588 -18309.0 -16 NULL 24 -12192 +false -51.0 KDr0tMRnCJJIBA84 NULL NULL 51.0 0.5152941176470588 -18309.0 -16 NULL 24 -12192 +false -51.0 71KN0p4NhE4xm4ixm NULL NULL 51.0 0.5152941176470588 -18309.0 -29 NULL 24 -22098 +false -51.0 Yc6gaH2OFF7cymt8q23Fr NULL NULL 51.0 0.5152941176470588 -18309.0 -20 NULL 24 -15240 +false -51.0 T0Y8Vi41EYW4CpQ6Hg1Xg30w NULL NULL 51.0 0.5152941176470588 -18309.0 33 NULL 24 25146 +false -51.0 Egf7KV7TeT NULL NULL 51.0 0.5152941176470588 -18309.0 -33 NULL 24 -25146 +false -51.0 LIJuG07tfqoLu8K NULL NULL 51.0 0.5152941176470588 -18309.0 -42 NULL 24 -32004 +false -51.0 uUTO41xk6VyqYPh NULL NULL 51.0 0.5152941176470588 -18309.0 34 NULL 24 25908 +false -51.0 8AqHq NULL NULL 51.0 0.5152941176470588 -18309.0 -1 NULL 24 -762 +false -51.0 gl03UrAU4bWrOvqwwf NULL NULL 51.0 0.5152941176470588 -18309.0 42 NULL 24 32004 +false -51.0 i330V4Y0Lm4ajyKqM1X2Y NULL NULL 51.0 0.5152941176470588 -18309.0 14 NULL 24 10668 +false -51.0 v3U315C36UQ4oEW NULL NULL 51.0 0.5152941176470588 -18309.0 18 NULL 24 13716 +false -51.0 p4WmTkrM NULL NULL 51.0 0.5152941176470588 -18309.0 1 NULL 24 762 +false -51.0 642LsMiNArr0ufitL3l7RCU7 NULL NULL 51.0 0.5152941176470588 -18309.0 2 NULL 24 1524 +false -51.0 DWNvg304j4KTMEs2174Cy1 NULL NULL 51.0 0.5152941176470588 -18309.0 -11 NULL 24 -8382 +false -51.0 44vcS2S5wu684R05fq01fu NULL NULL 51.0 0.5152941176470588 -18309.0 -33 NULL 24 -25146 +false -51.0 eu3X5Qfp4sHv5H NULL NULL 51.0 0.5152941176470588 -18309.0 -35 NULL 24 -26670 +false -51.0 YdG61y00526u5 NULL NULL 51.0 0.5152941176470588 -18309.0 45 NULL 24 34290 +false -51.0 0pOTqi3O44rEnGQ NULL NULL 51.0 0.5152941176470588 -18309.0 -25 NULL 24 -19050 +false -51.0 32cB3f NULL NULL 51.0 0.5152941176470588 -18309.0 34 NULL 24 25908 +false -51.0 c300w5 NULL NULL 51.0 0.5152941176470588 -18309.0 5 NULL 24 3810 +false -51.0 iR76SEs2C4V NULL NULL 51.0 0.5152941176470588 -18309.0 -34 NULL 24 -25908 +false -51.0 ss2PoJAipj6B1tn75O NULL NULL 51.0 0.5152941176470588 -18309.0 -49 NULL 24 -37338 +false -51.0 r17jGvc7gR NULL NULL 51.0 0.5152941176470588 -18309.0 -9 NULL 24 -6858 +false -51.0 5G1Xp277YJRklEO5kHx NULL NULL 51.0 0.5152941176470588 -18309.0 30 NULL 24 22860 +false -51.0 yRtwkNoJ5b6x0HJ0fxP NULL NULL 51.0 0.5152941176470588 -18309.0 -42 NULL 24 -32004 +false -51.0 XA0uP5c61MU NULL NULL 51.0 0.5152941176470588 -18309.0 -30 NULL 24 -22860 +false -51.0 KcGTq8B5161je52Gm NULL NULL 51.0 0.5152941176470588 -18309.0 30 NULL 24 22860 +false -51.0 U83eH0Y8P1 NULL NULL 51.0 0.5152941176470588 -18309.0 -33 NULL 24 -25146 +false -51.0 Y1gVqivH NULL NULL 51.0 0.5152941176470588 -18309.0 24 NULL 24 18288 +false -51.0 8Jvom23dkWvvqv81DY5Ub3 NULL NULL 51.0 0.5152941176470588 -18309.0 0 NULL 24 0 +false -51.0 o4N6pL88S2G2p78 NULL NULL 51.0 0.5152941176470588 -18309.0 8 NULL 24 6096 +false -51.0 18330cCeptCu564M15 NULL NULL 51.0 0.5152941176470588 -18309.0 34 NULL 24 25908 +false -51.0 MDKi1SBx5l6Sb NULL NULL 51.0 0.5152941176470588 -18309.0 48 NULL 24 36576 +false -51.0 545Gtyb6TO01J NULL NULL 51.0 0.5152941176470588 -18309.0 9 NULL 24 6858 +false -51.0 osFqC3JV6i1rRxe NULL NULL 51.0 0.5152941176470588 -18309.0 -27 NULL 24 -20574 +false -51.0 07rw6mP4WPoYcTNy1R NULL NULL 51.0 0.5152941176470588 -18309.0 -50 NULL 24 -38100 +false -51.0 8v3WfTYF315bFL NULL NULL 51.0 0.5152941176470588 -18309.0 -31 NULL 24 -23622 +false -51.0 gXu3tUhVtYp NULL NULL 51.0 0.5152941176470588 -18309.0 -24 NULL 24 -18288 +false -51.0 Iv4nCgiva NULL NULL 51.0 0.5152941176470588 -18309.0 7 NULL 24 5334 +false -51.0 PWAPwbw NULL NULL 51.0 0.5152941176470588 -18309.0 48 NULL 24 36576 +false -51.0 Iit87iX NULL NULL 51.0 0.5152941176470588 -18309.0 -34 NULL 24 -25908 +false -51.0 28KA13CH50X3tB0 NULL NULL 51.0 0.5152941176470588 -18309.0 15 NULL 24 11430 +false -51.0 GlCK4Dw7uIb1bsY NULL NULL 51.0 0.5152941176470588 -18309.0 26 NULL 24 19812 +false -51.0 Y1vK3 NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 5OtqBAUJVYmw824aXp7 NULL NULL 51.0 0.5152941176470588 -18309.0 12 NULL 24 9144 +false -51.0 p35H22v36j NULL NULL 51.0 0.5152941176470588 -18309.0 -18 NULL 24 -13716 +false -51.0 50f35 NULL NULL 51.0 0.5152941176470588 -18309.0 25 NULL 24 19050 +false -51.0 x8IaCF6n4u NULL NULL 51.0 0.5152941176470588 -18309.0 -12 NULL 24 -9144 +false -51.0 Sf0Oqe1G NULL NULL 51.0 0.5152941176470588 -18309.0 -40 NULL 24 -30480 +false -51.0 P23cQyt NULL NULL 51.0 0.5152941176470588 -18309.0 8 NULL 24 6096 +false -51.0 6CwqchP12fO3J5Y NULL NULL 51.0 0.5152941176470588 -18309.0 -34 NULL 24 -25908 +false -51.0 8qVY4hgVfu4JW41cTi NULL NULL 51.0 0.5152941176470588 -18309.0 41 NULL 24 31242 +false -51.0 1ev82P6 NULL NULL 51.0 0.5152941176470588 -18309.0 -37 NULL 24 -28194 +false -51.0 55xSuTYE4361 NULL NULL 51.0 0.5152941176470588 -18309.0 9 NULL 24 6858 +false -51.0 wyxhxSCxs5 NULL NULL 51.0 0.5152941176470588 -18309.0 45 NULL 24 34290 +false -51.0 34N4EY63M1GFWuW0boW NULL NULL 51.0 0.5152941176470588 -18309.0 49 NULL 24 37338 +false -51.0 2oSudUNUX6 NULL NULL 51.0 0.5152941176470588 -18309.0 -35 NULL 24 -26670 +false -51.0 Kft68MpoAc4tLMS2ck3 NULL NULL 51.0 0.5152941176470588 -18309.0 -4 NULL 24 -3048 +false -51.0 wiMnfM1vb8WE0427eQ5Y6oJ5 NULL NULL 51.0 0.5152941176470588 -18309.0 -6 NULL 24 -4572 +true -51.0 7V65Eih84lc86QMJ2O NULL NULL 51.0 0.5152941176470588 -18309.0 -15 NULL 24 -11430 +false -51.0 TYkMYn1v6giCqpy30s NULL NULL 51.0 0.5152941176470588 -18309.0 -47 NULL 24 -35814 +false -51.0 121307nh6r0H31Mg NULL NULL 51.0 0.5152941176470588 -18309.0 10 NULL 24 7620 +false -51.0 YPJn4lAy8rr58 NULL NULL 51.0 0.5152941176470588 -18309.0 26 NULL 24 19812 +false -51.0 aY3tpnr6wfvmWMG0U881 NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 KjAOvl4yBG7Rw7d NULL NULL 51.0 0.5152941176470588 -18309.0 -31 NULL 24 -23622 +false -51.0 EUl4i NULL NULL 51.0 0.5152941176470588 -18309.0 -46 NULL 24 -35052 +false -51.0 Oj17D50M3suPXf1J22R NULL NULL 51.0 0.5152941176470588 -18309.0 18 NULL 24 13716 +false -51.0 30J4VggeJfk6l24Wj3Q28 NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 74DT3mMTYm2eEjo3 NULL NULL 51.0 0.5152941176470588 -18309.0 -30 NULL 24 -22860 +false -51.0 10TYIE5S35U6dj3N NULL NULL 51.0 0.5152941176470588 -18309.0 -32 NULL 24 -24384 +false -51.0 4i11T6y6lT4073XW46yaalO NULL NULL 51.0 0.5152941176470588 -18309.0 47 NULL 24 35814 +false -51.0 MjLlK02ifGBIrla0EE NULL NULL 51.0 0.5152941176470588 -18309.0 -15 NULL 24 -11430 +false -51.0 J8p4pS3A8G75Ct2 NULL NULL 51.0 0.5152941176470588 -18309.0 13 NULL 24 9906 +false -51.0 VTJ74SnX0NTD2P234T55P5J NULL NULL 51.0 0.5152941176470588 -18309.0 23 NULL 24 17526 +false -51.0 6h6Kk4v030PNPj3Kc NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 2j6rY0poRw58s4ov2h NULL NULL 51.0 0.5152941176470588 -18309.0 50 NULL 24 38100 +false -51.0 vmD7YLtKX0c4y2uU NULL NULL 51.0 0.5152941176470588 -18309.0 10 NULL 24 7620 +false -51.0 48s0Wy10k NULL NULL 51.0 0.5152941176470588 -18309.0 18 NULL 24 13716 +false -51.0 SgVxsU2832X4w NULL NULL 51.0 0.5152941176470588 -18309.0 -11 NULL 24 -8382 +false -51.0 c61B47I604gymFJ NULL NULL 51.0 0.5152941176470588 -18309.0 NULL NULL 24 NULL +true -51.0 4Mk3721iRh6 NULL NULL 51.0 0.5152941176470588 -18309.0 8 NULL 24 6096 +false -51.0 MXefAh62BQEYn6T54AuUf NULL NULL 51.0 0.5152941176470588 -18309.0 -42 NULL 24 -32004 +false -51.0 eBRuEI2 NULL NULL 51.0 0.5152941176470588 -18309.0 4 NULL 24 3048 +false -51.0 2W4Kg220OcCy065HG60k6e NULL NULL 51.0 0.5152941176470588 -18309.0 -46 NULL 24 -35052 +false -51.0 a1N8y NULL NULL 51.0 0.5152941176470588 -18309.0 -48 NULL 24 -36576 +false -51.0 10 NULL NULL 51.0 0.5152941176470588 -18309.0 37 NULL 24 28194 +false -51.0 8cC24gh NULL NULL 51.0 0.5152941176470588 -18309.0 -4 NULL 24 -3048 +false -51.0 igMQ8 NULL NULL 51.0 0.5152941176470588 -18309.0 -7 NULL 24 -5334 +false -51.0 G6KW4uOD55dfWK NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 A43eyp8856SP83 NULL NULL 51.0 0.5152941176470588 -18309.0 -8 NULL 24 -6096 +false -51.0 pm52t42Yfhm NULL NULL 51.0 0.5152941176470588 -18309.0 31 NULL 24 23622 +false -51.0 J637uL7i0V6x NULL NULL 51.0 0.5152941176470588 -18309.0 37 NULL 24 28194 +false -51.0 DPdyR NULL NULL 51.0 0.5152941176470588 -18309.0 17 NULL 24 12954 +false -51.0 gVS43C76q67h70Yi NULL NULL 51.0 0.5152941176470588 -18309.0 -22 NULL 24 -16764 +false -51.0 Sm7i8BB NULL NULL 51.0 0.5152941176470588 -18309.0 -18 NULL 24 -13716 +false -51.0 V630OaEm NULL NULL 51.0 0.5152941176470588 -18309.0 -35 NULL 24 -26670 +false -51.0 f8bmVVkEd2TmeFy7wKq11 NULL NULL 51.0 0.5152941176470588 -18309.0 -27 NULL 24 -20574 +false -51.0 4GEqmyTpaQ NULL NULL 51.0 0.5152941176470588 -18309.0 -23 NULL 24 -17526 +false -51.0 5C26Uu6I1Dd7e1xcwSi0FR0 NULL NULL 51.0 0.5152941176470588 -18309.0 34 NULL 24 25908 +false -51.0 EThN3q3g4GbNl1hj1DI6M NULL NULL 51.0 0.5152941176470588 -18309.0 34 NULL 24 25908 +false -51.0 OUUn180cqH5Gf1sO NULL NULL 51.0 0.5152941176470588 -18309.0 0 NULL 24 0 +false -51.0 2gaHj NULL NULL 51.0 0.5152941176470588 -18309.0 8 NULL 24 6096 +false -51.0 A6F00275L4jx8tNc NULL NULL 51.0 0.5152941176470588 -18309.0 21 NULL 24 16002 +false -51.0 iINw0m NULL NULL 51.0 0.5152941176470588 -18309.0 -34 NULL 24 -25908 +false -51.0 TxE436GJgq7 NULL NULL 51.0 0.5152941176470588 -18309.0 -3 NULL 24 -2286 +false -51.0 4I23s0o7xIji73bi3y74T5ql NULL NULL 51.0 0.5152941176470588 -18309.0 3 NULL 24 2286 +false -51.0 8U0bLsWq8444DJ5TW NULL NULL 51.0 0.5152941176470588 -18309.0 -23 NULL 24 -17526 +false -51.0 RigNg NULL NULL 51.0 0.5152941176470588 -18309.0 33 NULL 24 25146 +false -51.0 uD02Qi4 NULL NULL 51.0 0.5152941176470588 -18309.0 48 NULL 24 36576 +false -51.0 7X8C04JN7LRyG NULL NULL 51.0 0.5152941176470588 -18309.0 46 NULL 24 35052 +false -51.0 78Mf2pj8fKk5Sq2L8 NULL NULL 51.0 0.5152941176470588 -18309.0 -25 NULL 24 -19050 +false -51.0 oA5OK2dVknje1w7uS3862Da5 NULL NULL 51.0 0.5152941176470588 -18309.0 28 NULL 24 21336 +true -51.0 4Mn8007R4LoxG NULL NULL 51.0 0.5152941176470588 -18309.0 18 NULL 24 13716 +false -51.0 13AA4buw5j0xj33Fie0FAl5 NULL NULL 51.0 0.5152941176470588 -18309.0 8 NULL 24 6096 +false -51.0 vAHn7p7mxOGYk30547 NULL NULL 51.0 0.5152941176470588 -18309.0 36 NULL 24 27432 +false -51.0 Jk1t16oBoeM0CCry7XQvR37h NULL NULL 51.0 0.5152941176470588 -18309.0 NULL NULL 24 NULL +false -51.0 6e5Vk3f3pMdefo NULL NULL 51.0 0.5152941176470588 -18309.0 -2 NULL 24 -1524 +false -51.0 YXy2ny NULL NULL 51.0 0.5152941176470588 -18309.0 -22 NULL 24 -16764 +false -51.0 1BA21MegTTKR67HG3 NULL NULL 51.0 0.5152941176470588 -18309.0 5 NULL 24 3810 +false -51.0 Wbf0Mio NULL NULL 51.0 0.5152941176470588 -18309.0 23 NULL 24 17526 +false -51.0 BhVBA NULL NULL 51.0 0.5152941176470588 -18309.0 12 NULL 24 9144 +false -51.0 5oUu102B4tP7 NULL NULL 51.0 0.5152941176470588 -18309.0 -8 NULL 24 -6096 +false -51.0 8RYSCOw18284ncYbFjG2kq6 NULL NULL 51.0 0.5152941176470588 -18309.0 -36 NULL 24 -27432 +false -51.0 1kYyjHtA0 NULL NULL 51.0 0.5152941176470588 -18309.0 -2 NULL 24 -1524 +false -51.0 kbT07u8ct NULL NULL 51.0 0.5152941176470588 -18309.0 14 NULL 24 10668 +false -51.0 shMOr3b8w1F4F38D4wih0 NULL NULL 51.0 0.5152941176470588 -18309.0 -28 NULL 24 -21336 +false -51.0 6Mf2X0s3 NULL NULL 51.0 0.5152941176470588 -18309.0 20 NULL 24 15240 +false -51.0 e15NrPMW0E8yCvPO4DN NULL NULL 51.0 0.5152941176470588 -18309.0 -8 NULL 24 -6096 +false -51.0 0o5aasUct374Q NULL NULL 51.0 0.5152941176470588 -18309.0 -16 NULL 24 -12192 +false -51.0 JC6BaR5i7 NULL NULL 51.0 0.5152941176470588 -18309.0 -9 NULL 24 -6858 +false -51.0 u8aUOdI0tuGW6xmxsKM18l NULL NULL 51.0 0.5152941176470588 -18309.0 28 NULL 24 21336 +false -51.0 OGXnr5s0B NULL NULL 51.0 0.5152941176470588 -18309.0 6 NULL 24 4572 +false -51.0 LXs6Xx05R8n6Yg NULL NULL 51.0 0.5152941176470588 -18309.0 -18 NULL 24 -13716 +false -51.0 5bd5T5FEdOrYRW00bvs NULL NULL 51.0 0.5152941176470588 -18309.0 20 NULL 24 15240 +false -51.0 pWxC5d20ub50yq8EJ8qpQ4h NULL NULL 51.0 0.5152941176470588 -18309.0 39 NULL 24 29718 +false -51.0 3cT82 NULL NULL 51.0 0.5152941176470588 -18309.0 -40 NULL 24 -30480 +false -51.0 U70UOCk8B7pI7k NULL NULL 51.0 0.5152941176470588 -18309.0 -13 NULL 24 -9906 +false -51.0 LADu77ed6bPf NULL NULL 51.0 0.5152941176470588 -18309.0 -7 NULL 24 -5334 +false -51.0 Exp3Ic8q2g8D2i347 NULL NULL 51.0 0.5152941176470588 -18309.0 14 NULL 24 10668 +false -51.0 2M106hVFEhu NULL NULL 51.0 0.5152941176470588 -18309.0 -29 NULL 24 -22098 +false -51.0 u85A6B NULL NULL 51.0 0.5152941176470588 -18309.0 -43 NULL 24 -32766 +false -51.0 74nRe6WYOO7MD7632BOS NULL NULL 51.0 0.5152941176470588 -18309.0 14 NULL 24 10668 +false -51.0 Jqk7D0nwmvre2d1AnH8qL5vl NULL NULL 51.0 0.5152941176470588 -18309.0 11 NULL 24 8382 +false -51.0 E1iWm444b NULL NULL 51.0 0.5152941176470588 -18309.0 26 NULL 24 19812 +false -51.0 UtriJV4U5N2J7M NULL NULL 51.0 0.5152941176470588 -18309.0 0 NULL 24 0 +false -51.0 8xML5SQm27gN NULL NULL 51.0 0.5152941176470588 -18309.0 29 NULL 24 22098 +false -51.0 pBO8hHxcSeJh28 NULL NULL 51.0 0.5152941176470588 -18309.0 11 NULL 24 8382 +false -51.0 tjRnqs104Dh NULL NULL 51.0 0.5152941176470588 -18309.0 26 NULL 24 19812 +false -51.0 3e0MAK75O1V4Vw2mNM1UiX23 NULL NULL 51.0 0.5152941176470588 -18309.0 12 NULL 24 9144 +false -51.0 P5X6554E66k NULL NULL 51.0 0.5152941176470588 -18309.0 46 NULL 24 35052 +false -51.0 ViqXS6s88N1yr14lj7I NULL NULL 51.0 0.5152941176470588 -18309.0 42 NULL 24 32004 +false -51.0 r2uhJH3 NULL NULL 51.0 0.5152941176470588 -18309.0 NULL NULL 24 NULL +false -51.0 WUQQRWTJ1wK1H4 NULL NULL 51.0 0.5152941176470588 -18309.0 16 NULL 24 12192 +false -51.0 gcGG4GVX7MxDB50GG7Mk NULL NULL 51.0 0.5152941176470588 -18309.0 33 NULL 24 25146 +false -51.0 6xm3103e5OE0C82nL3G NULL NULL 51.0 0.5152941176470588 -18309.0 -24 NULL 24 -18288 +false -51.0 w13G1635lvs30qJavVn NULL NULL 51.0 0.5152941176470588 -18309.0 9 NULL 24 6858 +false -51.0 G2P1ogIIyMgo6j2a27egS NULL NULL 51.0 0.5152941176470588 -18309.0 37 NULL 24 28194 +false -51.0 yW5M2tWxQ3NHs1 NULL NULL 51.0 0.5152941176470588 -18309.0 -34 NULL 24 -25908 +false -51.0 d8W5CN1kB6O6ovPhy1C3M NULL NULL 51.0 0.5152941176470588 -18309.0 47 NULL 24 35814 +false -51.0 WGPA8WlP5X NULL NULL 51.0 0.5152941176470588 -18309.0 13 NULL 24 9906 +false -51.0 I6FvRp84S2UGHl8orYl NULL NULL 51.0 0.5152941176470588 -18309.0 26 NULL 24 19812 +false -51.0 e8HP8Yt7uoB NULL NULL 51.0 0.5152941176470588 -18309.0 -8 NULL 24 -6096 +false -51.0 yif2md2VvY NULL NULL 51.0 0.5152941176470588 -18309.0 -23 NULL 24 -17526 +false -51.0 n2nf0ncE1Vj NULL NULL 51.0 0.5152941176470588 -18309.0 -41 NULL 24 -31242 +false -51.0 EAP1B57a5132algoul51 NULL NULL 51.0 0.5152941176470588 -18309.0 45 NULL 24 34290 +false -51.0 7BojnC3DIBmmGo8 NULL NULL 51.0 0.5152941176470588 -18309.0 -23 NULL 24 -17526 +false -51.0 IIX7QoB77864R6qOfLfhNJI4 NULL NULL 51.0 0.5152941176470588 -18309.0 3 NULL 24 2286 +false -51.0 o7H1gvt5G6 NULL NULL 51.0 0.5152941176470588 -18309.0 -39 NULL 24 -29718 +false -51.0 3wlj3rr4GuYKMG6QxL64jT NULL NULL 51.0 0.5152941176470588 -18309.0 -19 NULL 24 -14478 +false -51.0 TgS6dAlI2w4y NULL NULL 51.0 0.5152941176470588 -18309.0 -49 NULL 24 -37338 +false -51.0 KCaXaJvGKfj1tr NULL NULL 51.0 0.5152941176470588 -18309.0 -17 NULL 24 -12954 +false -51.0 HP824Y7lQ7bvAhrEx NULL NULL 51.0 0.5152941176470588 -18309.0 10 NULL 24 7620 +false -51.0 vA254Q0K7g NULL NULL 51.0 0.5152941176470588 -18309.0 -6 NULL 24 -4572 +false -51.0 HjA52J2d64r1fFmBITy1 NULL NULL 51.0 0.5152941176470588 -18309.0 -4 NULL 24 -3048 +false -51.0 34P6jvO10s66T30S NULL NULL 51.0 0.5152941176470588 -18309.0 50 NULL 24 38100 +false -51.0 12yT2agBjx3yQ NULL NULL 51.0 0.5152941176470588 -18309.0 -45 NULL 24 -34290 +false -51.0 30u668e NULL NULL 51.0 0.5152941176470588 -18309.0 32 NULL 24 24384 +false -51.0 Mn25o4t044QATs NULL NULL 51.0 0.5152941176470588 -18309.0 3 NULL 24 2286 +false -51.0 o78FOQh4Cb NULL NULL 51.0 0.5152941176470588 -18309.0 -40 NULL 24 -30480 +false -51.0 p77RYLpx2u NULL NULL 51.0 0.5152941176470588 -18309.0 0 NULL 24 0 +false -51.0 2X0XRt20B70F7B NULL NULL 51.0 0.5152941176470588 -18309.0 -20 NULL 24 -15240 +false -51.0 UA0H368kj NULL NULL 51.0 0.5152941176470588 -18309.0 -1 NULL 24 -762 +false -51.0 Yssb82rdfylDv4K NULL NULL 51.0 0.5152941176470588 -18309.0 NULL NULL 24 NULL +false -51.0 i1P3Wlat5EnBugL24oS4I3 NULL NULL 51.0 0.5152941176470588 -18309.0 -19 NULL 24 -14478 +false -51.0 fkA37sOkxCp44hlIKV NULL NULL 51.0 0.5152941176470588 -18309.0 34 NULL 24 25908 +false -51.0 rLL8VlwJ0P NULL NULL 51.0 0.5152941176470588 -18309.0 33 NULL 24 25146 +false -51.0 71027fBh8760gbL7aF4K NULL NULL 51.0 0.5152941176470588 -18309.0 8 NULL 24 6096 +false -51.0 PnD8l5 NULL NULL 51.0 0.5152941176470588 -18309.0 -37 NULL 24 -28194 +false -51.0 37p34Jc2nloL NULL NULL 51.0 0.5152941176470588 -18309.0 14 NULL 24 10668 +false -51.0 c23S6Ky4w7Ld21lAbB NULL NULL 51.0 0.5152941176470588 -18309.0 -29 NULL 24 -22098 +false -51.0 Wp8cr NULL NULL 51.0 0.5152941176470588 -18309.0 22 NULL 24 16764 +false -51.0 2g07108CQP0nN6tb NULL NULL 51.0 0.5152941176470588 -18309.0 -15 NULL 24 -11430 +false -51.0 60fNYu4mIaX7cI4y NULL NULL 51.0 0.5152941176470588 -18309.0 9 NULL 24 6858 +false -51.0 L0MMUTo8C5rj NULL NULL 51.0 0.5152941176470588 -18309.0 -29 NULL 24 -22098 +false -51.0 Ytgl8 NULL NULL 51.0 0.5152941176470588 -18309.0 30 NULL 24 22860 +false -51.0 ss NULL NULL 51.0 0.5152941176470588 -18309.0 -43 NULL 24 -32766 +false -51.0 gfML7L7et NULL NULL 51.0 0.5152941176470588 -18309.0 -50 NULL 24 -38100 +false -51.0 0OHV13 NULL NULL 51.0 0.5152941176470588 -18309.0 -3 NULL 24 -2286 +true -51.0 xjk22HQH0F0E161 NULL NULL 51.0 0.5152941176470588 -18309.0 -34 NULL 24 -25908 +false -51.0 1M4eTm8OcOW2dAMV2V5slS1 NULL NULL 51.0 0.5152941176470588 -18309.0 -37 NULL 24 -28194 +false -51.0 j1lyplu58dBa NULL NULL 51.0 0.5152941176470588 -18309.0 -26 NULL 24 -19812 +false -51.0 ah6jo34tl NULL NULL 51.0 0.5152941176470588 -18309.0 15 NULL 24 11430 +false -51.0 fbR231f NULL NULL 51.0 0.5152941176470588 -18309.0 -13 NULL 24 -9906 +false -51.0 e6F51mDOrN481rfhqk67lF40 NULL NULL 51.0 0.5152941176470588 -18309.0 -36 NULL 24 -27432 +false -51.0 lBoQXomNtF2131ymAFCB NULL NULL 51.0 0.5152941176470588 -18309.0 -16 NULL 24 -12192 +false -51.0 84L7MdH7 NULL NULL 51.0 0.5152941176470588 -18309.0 28 NULL 24 21336 +false -51.0 ugwHoBG4yXt5uEB NULL NULL 51.0 0.5152941176470588 -18309.0 -42 NULL 24 -32004 +false -51.0 3HhL08q56583 NULL NULL 51.0 0.5152941176470588 -18309.0 20 NULL 24 15240 +false -51.0 L4nk83x6pU NULL NULL 51.0 0.5152941176470588 -18309.0 3 NULL 24 2286 +false -51.0 k7i5RkMq88H0s NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 61shR2LjQ NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 W4MsK1d70i NULL NULL 51.0 0.5152941176470588 -18309.0 38 NULL 24 28956 +false -51.0 V04OvF27208o NULL NULL 51.0 0.5152941176470588 -18309.0 30 NULL 24 22860 +false -51.0 QOwp866GD0E0g3nwq NULL NULL 51.0 0.5152941176470588 -18309.0 5 NULL 24 3810 +false -51.0 sU1VhRD0P3w47WU66 NULL NULL 51.0 0.5152941176470588 -18309.0 8 NULL 24 6096 +false -51.0 DqpcjoX3m2h4hj4721T2M NULL NULL 51.0 0.5152941176470588 -18309.0 -40 NULL 24 -30480 +false -51.0 RY01bhu1p0G NULL NULL 51.0 0.5152941176470588 -18309.0 12 NULL 24 9144 +false -51.0 O656pe22AVUYD1OG8O4 NULL NULL 51.0 0.5152941176470588 -18309.0 35 NULL 24 26670 +false -51.0 nF0c6J04lo3lD0GhK8b7n3g NULL NULL 51.0 0.5152941176470588 -18309.0 0 NULL 24 0 +false -51.0 4MUYUYLAD7d0lk70NJjc6LB6 NULL NULL 51.0 0.5152941176470588 -18309.0 -16 NULL 24 -12192 +false -51.0 nSa8Lur3OP NULL NULL 51.0 0.5152941176470588 -18309.0 -6 NULL 24 -4572 +false -51.0 IifFS03pnGO NULL NULL 51.0 0.5152941176470588 -18309.0 -45 NULL 24 -34290 +false -51.0 G86cmDjPo3 NULL NULL 51.0 0.5152941176470588 -18309.0 -26 NULL 24 -19812 +false -51.0 l1Syw NULL NULL 51.0 0.5152941176470588 -18309.0 22 NULL 24 16764 +false -51.0 2yK4Bx76O NULL NULL 51.0 0.5152941176470588 -18309.0 25 NULL 24 19050 +false -51.0 JH051GV4O3FyM7 NULL NULL 51.0 0.5152941176470588 -18309.0 50 NULL 24 38100 +false -51.0 N5sqt2k NULL NULL 51.0 0.5152941176470588 -18309.0 -23 NULL 24 -17526 +false -51.0 vG0u7vdbry6JR4K4B743G3 NULL NULL 51.0 0.5152941176470588 -18309.0 -4 NULL 24 -3048 +false -51.0 4fSnp6 NULL NULL 51.0 0.5152941176470588 -18309.0 43 NULL 24 32766 +false -51.0 R8EqThU NULL NULL 51.0 0.5152941176470588 -18309.0 -15 NULL 24 -11430 +false -51.0 tK61Btt3Vqln1aL8R NULL NULL 51.0 0.5152941176470588 -18309.0 25 NULL 24 19050 +false -51.0 54T2y NULL NULL 51.0 0.5152941176470588 -18309.0 4 NULL 24 3048 +false -51.0 nbcHJDu3 NULL NULL 51.0 0.5152941176470588 -18309.0 -12 NULL 24 -9144 +false -51.0 UfUD41M7m NULL NULL 51.0 0.5152941176470588 -18309.0 50 NULL 24 38100 +false -51.0 o4lvY20511w0EOX3P3I82p63 NULL NULL 51.0 0.5152941176470588 -18309.0 45 NULL 24 34290 +false -51.0 IXMkdqJHU46dVte76I3Cy36m NULL NULL 51.0 0.5152941176470588 -18309.0 39 NULL 24 29718 +false -51.0 FO81NX2MQ1Tv2 NULL NULL 51.0 0.5152941176470588 -18309.0 -36 NULL 24 -27432 +false -51.0 p34e30llmRd014J10sp NULL NULL 51.0 0.5152941176470588 -18309.0 25 NULL 24 19050 +false -51.0 xOjXs4YxT7sGOtEDP3l8HBN6 NULL NULL 51.0 0.5152941176470588 -18309.0 49 NULL 24 37338 +false -51.0 XeI6xQ2v1E NULL NULL 51.0 0.5152941176470588 -18309.0 -9 NULL 24 -6858 +false -51.0 Osyki0P18kNjc2k5 NULL NULL 51.0 0.5152941176470588 -18309.0 36 NULL 24 27432 +false -51.0 lo8y7 NULL NULL 51.0 0.5152941176470588 -18309.0 31 NULL 24 23622 +false -51.0 bU42b017V0K1G5v1L3B NULL NULL 51.0 0.5152941176470588 -18309.0 -39 NULL 24 -29718 +false -51.0 f6WR6jF NULL NULL 51.0 0.5152941176470588 -18309.0 -12 NULL 24 -9144 +false -51.0 T0Gq3D4N50YY48AG8OQBqTU NULL NULL 51.0 0.5152941176470588 -18309.0 32 NULL 24 24384 +false -51.0 ac38VdOhD4a0 NULL NULL 51.0 0.5152941176470588 -18309.0 45 NULL 24 34290 +false -51.0 R20lxgp NULL NULL 51.0 0.5152941176470588 -18309.0 42 NULL 24 32004 +false -51.0 38XES7ME0108oTOlH1I7BiWn NULL NULL 51.0 0.5152941176470588 -18309.0 -30 NULL 24 -22860 +false -51.0 5h04mA3qHKIDx05St0NNx NULL NULL 51.0 0.5152941176470588 -18309.0 34 NULL 24 25908 +false -51.0 QS5W14A NULL NULL 51.0 0.5152941176470588 -18309.0 27 NULL 24 20574 +false -51.0 2MCek73Rwx NULL NULL 51.0 0.5152941176470588 -18309.0 18 NULL 24 13716 +false -51.0 85cpPHm5B0GD NULL NULL 51.0 0.5152941176470588 -18309.0 -24 NULL 24 -18288 +false -51.0 1t2c87D721uxcFhn2 NULL NULL 51.0 0.5152941176470588 -18309.0 -50 NULL 24 -38100 +false -51.0 2x14G717LqcPA7Ic5 NULL NULL 51.0 0.5152941176470588 -18309.0 NULL NULL 24 NULL +false -51.0 4Cf7gWmeh3Gw3bHx50iT2 NULL NULL 51.0 0.5152941176470588 -18309.0 33 NULL 24 25146 +false -51.0 KJmChr2CEaA NULL NULL 51.0 0.5152941176470588 -18309.0 -1 NULL 24 -762 +false -51.0 886wwGvXf6 NULL NULL 51.0 0.5152941176470588 -18309.0 -47 NULL 24 -35814 +false -51.0 1R480AiLgVaTEIcn3hUy8X NULL NULL 51.0 0.5152941176470588 -18309.0 27 NULL 24 20574 +false -51.0 8Pa8a8MJ24 NULL NULL 51.0 0.5152941176470588 -18309.0 20 NULL 24 15240 +false -51.0 thN7LFe7EQ5A74m3s0 NULL NULL 51.0 0.5152941176470588 -18309.0 6 NULL 24 4572 +false -51.0 ktJI200FR0TY4Oq NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 8l433e5J6I0fj0PM NULL NULL 51.0 0.5152941176470588 -18309.0 -50 NULL 24 -38100 +false -51.0 b4ntuTq8cuj0E66Gakn NULL NULL 51.0 0.5152941176470588 -18309.0 -33 NULL 24 -25146 +false -51.0 MFH46gf1UMw2xqJS6VO820 NULL NULL 51.0 0.5152941176470588 -18309.0 24 NULL 24 18288 +false -51.0 451H003P8UYu2 NULL NULL 51.0 0.5152941176470588 -18309.0 19 NULL 24 14478 +false -51.0 pJ8yNFwgS57SUhSORhpcu NULL NULL 51.0 0.5152941176470588 -18309.0 50 NULL 24 38100 +false -51.0 CqdMb86r52TC3NgM187 NULL NULL 51.0 0.5152941176470588 -18309.0 -35 NULL 24 -26670 +false -51.0 FdnoO3o3TWb NULL NULL 51.0 0.5152941176470588 -18309.0 -28 NULL 24 -21336 +false -51.0 WnN1oFEwhY4Heri3J7Jp8St NULL NULL 51.0 0.5152941176470588 -18309.0 -39 NULL 24 -29718 +false -51.0 678iebWrL34TlW1 NULL NULL 51.0 0.5152941176470588 -18309.0 -18 NULL 24 -13716 +false -51.0 V5O0Paqve81yx8E223UpK17 NULL NULL 51.0 0.5152941176470588 -18309.0 2 NULL 24 1524 +false -51.0 OyQm637Y8T5223y1Ha20q70G NULL NULL 51.0 0.5152941176470588 -18309.0 28 NULL 24 21336 +false -51.0 4RpFMC366k71GL1j5Xd5 NULL NULL 51.0 0.5152941176470588 -18309.0 25 NULL 24 19050 +false -51.0 2dU734cvN0P2k65CE NULL NULL 51.0 0.5152941176470588 -18309.0 -14 NULL 24 -10668 +false -51.0 iD4A3pEIP5pkv3 NULL NULL 51.0 0.5152941176470588 -18309.0 -35 NULL 24 -26670 +false -51.0 B350G70tUHdR4F5331F NULL NULL 51.0 0.5152941176470588 -18309.0 11 NULL 24 8382 +false -51.0 5BkJb NULL NULL 51.0 0.5152941176470588 -18309.0 -45 NULL 24 -34290 +false -51.0 rQHT5hx NULL NULL 51.0 0.5152941176470588 -18309.0 -43 NULL 24 -32766 +false -51.0 LSGQPxLff8bpk NULL NULL 51.0 0.5152941176470588 -18309.0 -27 NULL 24 -20574 +false -51.0 f448c4T81BR NULL NULL 51.0 0.5152941176470588 -18309.0 -17 NULL 24 -12954 +false -51.0 0YAn3Qyo NULL NULL 51.0 0.5152941176470588 -18309.0 3 NULL 24 2286 +false -51.0 Ej05nrdc8CVXYu1Axy6W NULL NULL 51.0 0.5152941176470588 -18309.0 -28 NULL 24 -21336 +false -51.0 6Dnq5hvbkk NULL NULL 51.0 0.5152941176470588 -18309.0 -23 NULL 24 -17526 +false -51.0 8Y7yHw NULL NULL 51.0 0.5152941176470588 -18309.0 13 NULL 24 9906 +false -51.0 xA37f0CS8837b3uDhW7IJV0 NULL NULL 51.0 0.5152941176470588 -18309.0 43 NULL 24 32766 +false -51.0 KXvq4OfKW641X0d4WHM2md0 NULL NULL 51.0 0.5152941176470588 -18309.0 35 NULL 24 26670 +false -51.0 2eJegODpls2LBS2vAFl1OvQ NULL NULL 51.0 0.5152941176470588 -18309.0 -23 NULL 24 -17526 +false -51.0 Bu1QtYr5sfcMxyD2c650GW NULL NULL 51.0 0.5152941176470588 -18309.0 -26 NULL 24 -19812 +false -51.0 SCh73 NULL NULL 51.0 0.5152941176470588 -18309.0 9 NULL 24 6858 +false -51.0 AfW67EWaHMIQ7yvfqHRUwB NULL NULL 51.0 0.5152941176470588 -18309.0 -6 NULL 24 -4572 +false -51.0 D300Wwybt50R66GNV NULL NULL 51.0 0.5152941176470588 -18309.0 19 NULL 24 14478 +false -51.0 M5857hgh7234V88EX NULL NULL 51.0 0.5152941176470588 -18309.0 32 NULL 24 24384 +false -51.0 7M515cSr37Sj NULL NULL 51.0 0.5152941176470588 -18309.0 14 NULL 24 10668 +false -51.0 wVwuQ6dkmkcLxtfK8haA NULL NULL 51.0 0.5152941176470588 -18309.0 26 NULL 24 19812 +false -51.0 tKyw2O2N NULL NULL 51.0 0.5152941176470588 -18309.0 -45 NULL 24 -34290 +false -51.0 gcnk28ttRLv13O3ms6p10y NULL NULL 51.0 0.5152941176470588 -18309.0 31 NULL 24 23622 +false -51.0 BLyBF45iOWdg58oNy NULL NULL 51.0 0.5152941176470588 -18309.0 45 NULL 24 34290 +false -51.0 ffT4cTjYf2NJ NULL NULL 51.0 0.5152941176470588 -18309.0 -36 NULL 24 -27432 +false -51.0 oE25GuI6446Hq06G4f NULL NULL 51.0 0.5152941176470588 -18309.0 -26 NULL 24 -19812 +false -51.0 e8Yq6dHfa7d61IgPcKrO NULL NULL 51.0 0.5152941176470588 -18309.0 9 NULL 24 6858 +false -51.0 EXWsAOlGYtb053ExF6u5FLyb NULL NULL 51.0 0.5152941176470588 -18309.0 5 NULL 24 3810 +false -51.0 O3k76JCgFN83d58REWNvt243 NULL NULL 51.0 0.5152941176470588 -18309.0 0 NULL 24 0 +false -51.0 CoMlAAYdRSe NULL NULL 51.0 0.5152941176470588 -18309.0 -45 NULL 24 -34290 +true -51.0 gtulO7xHeSn NULL NULL 51.0 0.5152941176470588 -18309.0 42 NULL 24 32004 +false -51.0 l01UYMiq51W8G4LJtEp86mD7 NULL NULL 51.0 0.5152941176470588 -18309.0 16 NULL 24 12192 +false -51.0 K31Po8dhUXDBDt NULL NULL 51.0 0.5152941176470588 -18309.0 26 NULL 24 19812 +false -51.0 5d4rPb72As3cr1UU04go8 NULL NULL 51.0 0.5152941176470588 -18309.0 -24 NULL 24 -18288 +false -51.0 JVCOfSTVb NULL NULL 51.0 0.5152941176470588 -18309.0 0 NULL 24 0 +false -51.0 b NULL NULL 51.0 0.5152941176470588 -18309.0 -2 NULL 24 -1524 +false -51.0 72PfIF567Op NULL NULL 51.0 0.5152941176470588 -18309.0 39 NULL 24 29718 +false -51.0 0CkUHn44bl6xbyYLk NULL NULL 51.0 0.5152941176470588 -18309.0 0 NULL 24 0 +false -51.0 r7JrMe NULL NULL 51.0 0.5152941176470588 -18309.0 26 NULL 24 19812 +false -51.0 73yDbT5WqsMNEB7FmJ3h NULL NULL 51.0 0.5152941176470588 -18309.0 -22 NULL 24 -16764 +false -51.0 U3pW0g NULL NULL 51.0 0.5152941176470588 -18309.0 -29 NULL 24 -22098 +false -51.0 00iT08 NULL NULL 51.0 0.5152941176470588 -18309.0 28 NULL 24 21336 +false -51.0 Sd20gdOoONPhK2OX4 NULL NULL 51.0 0.5152941176470588 -18309.0 -37 NULL 24 -28194 +false -51.0 Yts214m8mDhRw4F2d56 NULL NULL 51.0 0.5152941176470588 -18309.0 37 NULL 24 28194 +false -51.0 1324Nbqc0C7h6niurp77wT NULL NULL 51.0 0.5152941176470588 -18309.0 -35 NULL 24 -26670 +false -51.0 Bq245sjauEPf NULL NULL 51.0 0.5152941176470588 -18309.0 38 NULL 24 28956 +false -51.0 62JFFg7GbAn1 NULL NULL 51.0 0.5152941176470588 -18309.0 -30 NULL 24 -22860 +false -51.0 4W6pl6oLfgN0ax NULL NULL 51.0 0.5152941176470588 -18309.0 27 NULL 24 20574 +true -51.0 M76D058tDDD25v3g NULL NULL 51.0 0.5152941176470588 -18309.0 -45 NULL 24 -34290 +false -51.0 1JGq6EC86Lc67B NULL NULL 51.0 0.5152941176470588 -18309.0 -26 NULL 24 -19812 +false -51.0 D5SANA44B8Jm NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 5K4lM3GNCDNNA4H5H NULL NULL 51.0 0.5152941176470588 -18309.0 -14 NULL 24 -10668 +false -51.0 nVp18XV4iVW217Vr4hb NULL NULL 51.0 0.5152941176470588 -18309.0 39 NULL 24 29718 +false -51.0 IFDa6Y1D4JuF50F2su708Wt NULL NULL 51.0 0.5152941176470588 -18309.0 47 NULL 24 35814 +false -51.0 4LQe2Pd4m640E58XFA NULL NULL 51.0 0.5152941176470588 -18309.0 -13 NULL 24 -9906 +false -51.0 Dtsb7s36eASJVh1Xi32K NULL NULL 51.0 0.5152941176470588 -18309.0 -9 NULL 24 -6858 +false -51.0 jXQPXUOT6OR75ChPwBr NULL NULL 51.0 0.5152941176470588 -18309.0 25 NULL 24 19050 +false -51.0 40PQ82QY6 NULL NULL 51.0 0.5152941176470588 -18309.0 -2 NULL 24 -1524 +false -51.0 33cr1j NULL NULL 51.0 0.5152941176470588 -18309.0 -16 NULL 24 -12192 +false -51.0 8PpV88OGb NULL NULL 51.0 0.5152941176470588 -18309.0 39 NULL 24 29718 +true -51.0 q0YasY0Y17250cD NULL NULL 51.0 0.5152941176470588 -18309.0 -1 NULL 24 -762 +false -51.0 p8CvcP7et NULL NULL 51.0 0.5152941176470588 -18309.0 4 NULL 24 3048 +false -51.0 060EnWLmWE4K8Pv NULL NULL 51.0 0.5152941176470588 -18309.0 -19 NULL 24 -14478 +false -51.0 LrOMx3GjUHE614W7s36tp NULL NULL 51.0 0.5152941176470588 -18309.0 -2 NULL 24 -1524 +false -51.0 12YH5vxufod8Wu1R NULL NULL 51.0 0.5152941176470588 -18309.0 -7 NULL 24 -5334 +false -51.0 2G6B67cu1BUqRd3I52Ug20 NULL NULL 51.0 0.5152941176470588 -18309.0 -7 NULL 24 -5334 +false -51.0 3SaS218squQ6hlv5H76M0C7p NULL NULL 51.0 0.5152941176470588 -18309.0 22 NULL 24 16764 +false -51.0 2E41VxRBT043Jn6Ggf4no0O NULL NULL 51.0 0.5152941176470588 -18309.0 18 NULL 24 13716 +false -51.0 nuIwy NULL NULL 51.0 0.5152941176470588 -18309.0 -16 NULL 24 -12192 +false -51.0 nvj0X NULL NULL 51.0 0.5152941176470588 -18309.0 42 NULL 24 32004 +false -51.0 KM06o1 NULL NULL 51.0 0.5152941176470588 -18309.0 -17 NULL 24 -12954 +false -51.0 HA1yh NULL NULL 51.0 0.5152941176470588 -18309.0 -17 NULL 24 -12954 +false -51.0 0S3XIH2NDeS0xS NULL NULL 51.0 0.5152941176470588 -18309.0 1 NULL 24 762 +false -51.0 72M1iL43IC7n NULL NULL 51.0 0.5152941176470588 -18309.0 44 NULL 24 33528 +false -51.0 d5gs2s6trx20upPuW3SAi4o NULL NULL 51.0 0.5152941176470588 -18309.0 -11 NULL 24 -8382 +false -51.0 2iVjtVVhM8R57oy NULL NULL 51.0 0.5152941176470588 -18309.0 34 NULL 24 25908 +false -51.0 VLVJ2YFurner0i58drukgj NULL NULL 51.0 0.5152941176470588 -18309.0 -47 NULL 24 -35814 +false -51.0 a5MyXRAIwPX1CO3w53Rar8wf NULL NULL 51.0 0.5152941176470588 -18309.0 -12 NULL 24 -9144 +false -51.0 c7j0PI24L0M27GoF43v4Ucf NULL NULL 51.0 0.5152941176470588 -18309.0 21 NULL 24 16002 +false -51.0 dv4kivc NULL NULL 51.0 0.5152941176470588 -18309.0 -4 NULL 24 -3048 +false -51.0 CJIO2 NULL NULL 51.0 0.5152941176470588 -18309.0 -48 NULL 24 -36576 +false -51.0 s038hX0U8 NULL NULL 51.0 0.5152941176470588 -18309.0 16 NULL 24 12192 +true -51.0 VfD3Byd4aV358l12 NULL NULL 51.0 0.5152941176470588 -18309.0 -6 NULL 24 -4572 +false -51.0 hANtHaOf NULL NULL 51.0 0.5152941176470588 -18309.0 -31 NULL 24 -23622 +false -51.0 jXpBexSQ3hC342hdkv NULL NULL 51.0 0.5152941176470588 -18309.0 33 NULL 24 25146 +false -51.0 702XRI NULL NULL 51.0 0.5152941176470588 -18309.0 10 NULL 24 7620 +false -51.0 w7PV8VhGA NULL NULL 51.0 0.5152941176470588 -18309.0 41 NULL 24 31242 +false -51.0 hw7e2oF7 NULL NULL 51.0 0.5152941176470588 -18309.0 35 NULL 24 26670 +false -51.0 n2L2mKJgQ08uGWsrgC30T NULL NULL 51.0 0.5152941176470588 -18309.0 -11 NULL 24 -8382 +false -51.0 m7i5sn7r0 NULL NULL 51.0 0.5152941176470588 -18309.0 -49 NULL 24 -37338 +false -51.0 15w3qCVPlsGoqbi1 NULL NULL 51.0 0.5152941176470588 -18309.0 -48 NULL 24 -36576 +false -51.0 VF8w7AjS6 NULL NULL 51.0 0.5152941176470588 -18309.0 48 NULL 24 36576 +false -51.0 U68Np7DCKJO8 NULL NULL 51.0 0.5152941176470588 -18309.0 -33 NULL 24 -25146 +false -51.0 4l6OX60y NULL NULL 51.0 0.5152941176470588 -18309.0 13 NULL 24 9906 +false -51.0 IblvAnYcnAwTiEM NULL NULL 51.0 0.5152941176470588 -18309.0 -47 NULL 24 -35814 +false -51.0 23R287wx8g5N22kp034161 NULL NULL 51.0 0.5152941176470588 -18309.0 -31 NULL 24 -23622 +false -51.0 O1fW6627aJkal NULL NULL 51.0 0.5152941176470588 -18309.0 13 NULL 24 9906 +false -51.0 A71P2rA NULL NULL 51.0 0.5152941176470588 -18309.0 46 NULL 24 35052 +false -51.0 8d4D1 NULL NULL 51.0 0.5152941176470588 -18309.0 -46 NULL 24 -35052 +false -51.0 tC57X NULL NULL 51.0 0.5152941176470588 -18309.0 -44 NULL 24 -33528 +false -51.0 qNaAh8CdJxxTG8y0 NULL NULL 51.0 0.5152941176470588 -18309.0 -27 NULL 24 -20574 +false -51.0 32OjMMVB54jv35 NULL NULL 51.0 0.5152941176470588 -18309.0 4 NULL 24 3048 +false -51.0 ljrUp5jPP3u6Y5i NULL NULL 51.0 0.5152941176470588 -18309.0 36 NULL 24 27432 +false -51.0 FGx13w3IFFT718DDr5 NULL NULL 51.0 0.5152941176470588 -18309.0 -22 NULL 24 -16764 +false -51.0 651rcX4uUheL07lI5m7 NULL NULL 51.0 0.5152941176470588 -18309.0 -18 NULL 24 -13716 +false -51.0 IbgbUvP5 NULL NULL 51.0 0.5152941176470588 -18309.0 -5 NULL 24 -3810 +false -51.0 rphq0n30wctykU8E NULL NULL 51.0 0.5152941176470588 -18309.0 43 NULL 24 32766 +false -51.0 2NR62NFR5 NULL NULL 51.0 0.5152941176470588 -18309.0 49 NULL 24 37338 +false -51.0 xJTkdBR4QU NULL NULL 51.0 0.5152941176470588 -18309.0 42 NULL 24 32004 +true -51.0 PYSh3CD1vxxH3Aq2B NULL NULL 51.0 0.5152941176470588 -18309.0 11 NULL 24 8382 +false -51.0 1Lh6Uoq3WhNtOqQHu7WN7U NULL NULL 51.0 0.5152941176470588 -18309.0 -22 NULL 24 -16764 +false -51.0 0TN06s2WtHc NULL NULL 51.0 0.5152941176470588 -18309.0 -45 NULL 24 -34290 +false -51.0 Ad4KRAdOpE25j1BV NULL NULL 51.0 0.5152941176470588 -18309.0 -19 NULL 24 -14478 +false -51.0 sohL07P3D1W3aqMu2i NULL NULL 51.0 0.5152941176470588 -18309.0 10 NULL 24 7620 +false -51.0 04Yu8RntCU7amJtj NULL NULL 51.0 0.5152941176470588 -18309.0 -50 NULL 24 -38100 +false -51.0 Yv7NbK3bBtLv2oCp7g622yO NULL NULL 51.0 0.5152941176470588 -18309.0 -45 NULL 24 -34290 +false -51.0 EPCRx8ObNv51rOF NULL NULL 51.0 0.5152941176470588 -18309.0 -9 NULL 24 -6858 +false -51.0 jin5N37sI8CpGW3x8X2v2 NULL NULL 51.0 0.5152941176470588 -18309.0 16 NULL 24 12192 +false -51.0 8eiti74gc5m01xyMKSjUIx NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 xgPW6tMwuNv67I0q2227 NULL NULL 51.0 0.5152941176470588 -18309.0 16 NULL 24 12192 +false -51.0 T5eOivl6F4ew1 NULL NULL 51.0 0.5152941176470588 -18309.0 1 NULL 24 762 +false -51.0 QRq4fxOau2jef55O5X1 NULL NULL 51.0 0.5152941176470588 -18309.0 -27 NULL 24 -20574 +false -51.0 y3VheNURDylWr0mse3mv0 NULL NULL 51.0 0.5152941176470588 -18309.0 -2 NULL 24 -1524 +false -51.0 en63YvV2PB76duGPhyLQa NULL NULL 51.0 0.5152941176470588 -18309.0 25 NULL 24 19050 +false -51.0 Yas32KF NULL NULL 51.0 0.5152941176470588 -18309.0 30 NULL 24 22860 +false -51.0 t6Y38CKxB3keFFwxHN1eQh NULL NULL 51.0 0.5152941176470588 -18309.0 7 NULL 24 5334 +false -51.0 TlU343q2ha8vt NULL NULL 51.0 0.5152941176470588 -18309.0 -5 NULL 24 -3810 +false -51.0 1o5T8oXJi5CAYe8540C NULL NULL 51.0 0.5152941176470588 -18309.0 -20 NULL 24 -15240 +false -51.0 F10SR3l5836pq7TCfYeGrEl1 NULL NULL 51.0 0.5152941176470588 -18309.0 -45 NULL 24 -34290 +false -51.0 lcL6t NULL NULL 51.0 0.5152941176470588 -18309.0 -47 NULL 24 -35814 +false -51.0 3FXmaPtM8 NULL NULL 51.0 0.5152941176470588 -18309.0 41 NULL 24 31242 +false -51.0 1cVy44 NULL NULL 51.0 0.5152941176470588 -18309.0 30 NULL 24 22860 +false -51.0 H8LCu4M2u4f1S NULL NULL 51.0 0.5152941176470588 -18309.0 -28 NULL 24 -21336 +false -51.0 84O1C65C5k88bI7i4 NULL NULL 51.0 0.5152941176470588 -18309.0 NULL NULL 24 NULL +false -51.0 3h8mD2F76eq4mS NULL NULL 51.0 0.5152941176470588 -18309.0 -14 NULL 24 -10668 +false -51.0 8G82H54442m0AjgH3a4h NULL NULL 51.0 0.5152941176470588 -18309.0 42 NULL 24 32004 +false -51.0 2YOJT4Sveu NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 Das7E73 NULL NULL 51.0 0.5152941176470588 -18309.0 -20 NULL 24 -15240 +false -51.0 0863bBy3dkL74WtiERo3L NULL NULL 51.0 0.5152941176470588 -18309.0 -41 NULL 24 -31242 +false -51.0 d3yQbTLvpGyi0 NULL NULL 51.0 0.5152941176470588 -18309.0 16 NULL 24 12192 +false -51.0 216N1n3bRv NULL NULL 51.0 0.5152941176470588 -18309.0 -10 NULL 24 -7620 +false -51.0 3hF4a683G4Vc2N1 NULL NULL 51.0 0.5152941176470588 -18309.0 -38 NULL 24 -28956 +false -51.0 IwT2y4ak76hu1BgGDSKuI NULL NULL 51.0 0.5152941176470588 -18309.0 43 NULL 24 32766 +false -51.0 kih3Q NULL NULL 51.0 0.5152941176470588 -18309.0 -25 NULL 24 -19050 +false -51.0 CbULhCEo3m8Q357 NULL NULL 51.0 0.5152941176470588 -18309.0 48 NULL 24 36576 +false -51.0 oAYFcgT5 NULL NULL 51.0 0.5152941176470588 -18309.0 -11 NULL 24 -8382 +false -51.0 FBWY8rR466Y NULL NULL 51.0 0.5152941176470588 -18309.0 -11 NULL 24 -8382 +false -51.0 rreK1Bk70JwRIV3sQJEg NULL NULL 51.0 0.5152941176470588 -18309.0 40 NULL 24 30480 +false -51.0 EqUT4hfjoX45 NULL NULL 51.0 0.5152941176470588 -18309.0 16 NULL 24 12192 +false -51.0 s1K04o1 NULL NULL 51.0 0.5152941176470588 -18309.0 -5 NULL 24 -3810 +false -51.0 5a7WjXX5w1bkc8hv8Xx5LM NULL NULL 51.0 0.5152941176470588 -18309.0 -16 NULL 24 -12192 +false -51.0 K2mrUY NULL NULL 51.0 0.5152941176470588 -18309.0 -43 NULL 24 -32766 +false -51.0 5f0u27Q1PvB1gCMn NULL NULL 51.0 0.5152941176470588 -18309.0 27 NULL 24 20574 +false -51.0 vvT8tpW518 NULL NULL 51.0 0.5152941176470588 -18309.0 -43 NULL 24 -32766 +false -51.0 M462UC NULL NULL 51.0 0.5152941176470588 -18309.0 -21 NULL 24 -16002 +false -51.0 2p0iX031016VDNb6KWJ NULL NULL 51.0 0.5152941176470588 -18309.0 -25 NULL 24 -19050 +false -51.0 KB3sgv2UcA152 NULL NULL 51.0 0.5152941176470588 -18309.0 -39 NULL 24 -29718 +false -51.0 M5TxI32kgu NULL NULL 51.0 0.5152941176470588 -18309.0 -39 NULL 24 -29718 +false -51.0 nhv8Bo2VCHouwa01x1 NULL NULL 51.0 0.5152941176470588 -18309.0 -43 NULL 24 -32766 +false -51.0 47xesJJ32Ia NULL NULL 51.0 0.5152941176470588 -18309.0 22 NULL 24 16764 +false -51.0 UFwddOjC38Fj NULL NULL 51.0 0.5152941176470588 -18309.0 -25 NULL 24 -19050 +false -51.0 EY2fCS NULL NULL 51.0 0.5152941176470588 -18309.0 19 NULL 24 14478 +false -51.0 ss NULL NULL 51.0 0.5152941176470588 -18309.0 -4 NULL 24 -3048 +false -51.0 TD01cg4gOr1msv1b NULL NULL 51.0 0.5152941176470588 -18309.0 22 NULL 24 16764 +false -51.0 80K4C NULL NULL 51.0 0.5152941176470588 -18309.0 3 NULL 24 2286 +false -51.0 4v3613837dytHDDLO NULL NULL 51.0 0.5152941176470588 -18309.0 42 NULL 24 32004 +false -51.0 aD88uS2N8DmqPlvjOa7F46i7 NULL NULL 51.0 0.5152941176470588 -18309.0 -38 NULL 24 -28956 +false -51.0 DS4iDURlsq418pFh8 NULL NULL 51.0 0.5152941176470588 -18309.0 -14 NULL 24 -10668 +false -51.0 plmMo28a0B5CtT63uC NULL NULL 51.0 0.5152941176470588 -18309.0 -44 NULL 24 -33528 +false -51.0 OBbyvnMMUh1iJ80EKnx178 NULL NULL 51.0 0.5152941176470588 -18309.0 15 NULL 24 11430 +false -51.0 8VOMo4k2fVr88MuEw72V6N NULL NULL 51.0 0.5152941176470588 -18309.0 22 NULL 24 16764 +false -51.0 Xc3mi NULL NULL 51.0 0.5152941176470588 -18309.0 -2 NULL 24 -1524 +false -51.0 tyt5Bwxxe NULL NULL 51.0 0.5152941176470588 -18309.0 47 NULL 24 35814 +false -51.0 2H45o NULL NULL 51.0 0.5152941176470588 -18309.0 -48 NULL 24 -36576 +false -51.0 M4O8OkhX3T1D2MMuf2Pm NULL NULL 51.0 0.5152941176470588 -18309.0 23 NULL 24 17526 +false -51.0 0f4422CBSl NULL NULL 51.0 0.5152941176470588 -18309.0 -40 NULL 24 -30480 +false -51.0 00MmJs1fiJp37y60mj4Ej8 NULL NULL 51.0 0.5152941176470588 -18309.0 -43 NULL 24 -32766 +false -51.0 hyi44EO7Eqi4QI1qQ7h NULL NULL 51.0 0.5152941176470588 -18309.0 18 NULL 24 13716 +false -51.0 M0J1l7pujAvtkGH NULL NULL 51.0 0.5152941176470588 -18309.0 32 NULL 24 24384 +false -51.0 4Y6F2QEy0v68 NULL NULL 51.0 0.5152941176470588 -18309.0 -43 NULL 24 -32766 +false -51.0 8nrs8SX553uTd63hTJ NULL NULL 51.0 0.5152941176470588 -18309.0 26 NULL 24 19812 +false -51.0 vgd8P8Ff1n NULL NULL 51.0 0.5152941176470588 -18309.0 -31 NULL 24 -23622 +false -51.0 Hf8123hK0 NULL NULL 51.0 0.5152941176470588 -18309.0 -24 NULL 24 -18288 +false -51.0 K4Npj34S8iAOa6qRd7y88Sb NULL NULL 51.0 0.5152941176470588 -18309.0 -12 NULL 24 -9144 +false -51.0 361M8OmUcKBPrFTcY5 NULL NULL 51.0 0.5152941176470588 -18309.0 -45 NULL 24 -34290 +false -51.0 F13clAHtHaUN2t6wLxE7S3T NULL NULL 51.0 0.5152941176470588 -18309.0 -47 NULL 24 -35814 +false -51.0 VDTWq NULL NULL 51.0 0.5152941176470588 -18309.0 -48 NULL 24 -36576 +false -51.0 sodtQ7I41ON4 NULL NULL 51.0 0.5152941176470588 -18309.0 -16 NULL 24 -12192 +false -51.0 DM3fMIDl770Nt083jjTQ2Uh NULL NULL 51.0 0.5152941176470588 -18309.0 0 NULL 24 0 +false -51.0 0EU2GSKN4svnsv NULL NULL 51.0 0.5152941176470588 -18309.0 -33 NULL 24 -25146 +false -51.0 IWNnWp4jmtO78 NULL NULL 51.0 0.5152941176470588 -18309.0 29 NULL 24 22098 +false -51.0 U7JukXmI NULL NULL 51.0 0.5152941176470588 -18309.0 46 NULL 24 35052 +false -51.0 WA6Cb1YeX7TOI7j3jnrh7W NULL NULL 51.0 0.5152941176470588 -18309.0 -46 NULL 24 -35052 +false -51.0 C6hoSE4L6NCrA NULL NULL 51.0 0.5152941176470588 -18309.0 -30 NULL 24 -22860 +false -51.0 62Q7DRed301Gx NULL NULL 51.0 0.5152941176470588 -18309.0 10 NULL 24 7620 +false -51.0 LgMBG6G3Oc5baLkjeP50i8 NULL NULL 51.0 0.5152941176470588 -18309.0 -47 NULL 24 -35814 +false -51.0 56EtJ6FmSp47bf0Jj NULL NULL 51.0 0.5152941176470588 -18309.0 -11 NULL 24 -8382 +false -51.0 6502UQ2Jb18nD7kNw NULL NULL 51.0 0.5152941176470588 -18309.0 -18 NULL 24 -13716 +false -51.0 6GpbwQ3mT NULL NULL 51.0 0.5152941176470588 -18309.0 -7 NULL 24 -5334 +true -51.0 S5RB5whaBLeLnMBAUm4oXX NULL NULL 51.0 0.5152941176470588 -18309.0 49 NULL 24 37338 +false -51.0 Ako362FErCK8F2v31h3Ns260 NULL NULL 51.0 0.5152941176470588 -18309.0 29 NULL 24 22098 +false -51.0 H8dq1J4bt18aF4W48 NULL NULL 51.0 0.5152941176470588 -18309.0 -38 NULL 24 -28956 +false -51.0 QgA6r86x0JrfdHuM NULL NULL 51.0 0.5152941176470588 -18309.0 21 NULL 24 16002 +false -51.0 d1N0u454kG87DN3o NULL NULL 51.0 0.5152941176470588 -18309.0 -27 NULL 24 -20574 +false -51.0 05oYA4ya5 NULL NULL 51.0 0.5152941176470588 -18309.0 -31 NULL 24 -23622 +false -51.0 wvd3uAAa01J6a6L NULL NULL 51.0 0.5152941176470588 -18309.0 -49 NULL 24 -37338 +false -51.0 J0VTT0R8t1JcxdoOO NULL NULL 51.0 0.5152941176470588 -18309.0 49 NULL 24 37338 +NULL -50.0 NULL -1752227496 -15601 50.0 0.5256000000000001 -17950.0 NULL -15601.0 25 NULL +NULL 35.0 NULL -1752227496 -15601 -35.0 -0.7508571428571429 12565.0 NULL -15601.0 110 NULL +NULL -12.0 NULL -1752227496 -15601 12.0 2.19 -4308.0 NULL -15601.0 63 NULL +NULL -23.0 NULL -1752227496 -15601 23.0 1.142608695652174 -8257.0 NULL -15601.0 52 NULL +NULL -22.0 NULL -1752227496 -15601 22.0 1.1945454545454546 -7898.0 NULL -15601.0 53 NULL +NULL 21.0 NULL -1752227496 -15601 -21.0 -1.2514285714285716 7539.0 NULL -15601.0 96 NULL +NULL -49.0 NULL -1752227496 -15601 49.0 0.5363265306122449 -17591.0 NULL -15601.0 26 NULL +NULL 30.0 NULL -1752227496 -15601 -30.0 -0.876 10770.0 NULL -15601.0 105 NULL +NULL -50.0 NULL -1752227496 -15601 50.0 0.5256000000000001 -17950.0 NULL -15601.0 25 NULL +NULL 55.0 NULL -1752227496 -15601 -55.0 -0.47781818181818186 19745.0 NULL -15601.0 130 NULL +NULL 29.0 NULL -1752227496 -15601 -29.0 -0.9062068965517242 10411.0 NULL -15601.0 104 NULL +NULL -42.0 NULL -1752227496 -15601 42.0 0.6257142857142858 -15078.0 NULL -15601.0 33 NULL +NULL -20.0 NULL -1752227496 -15601 20.0 1.314 -7180.0 NULL -15601.0 55 NULL +false 8.0 pCt10IJTv8 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 B7aMvVm446mg46CL NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 fIjNh3dt21cMWe8 NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 11Cjb3gHPUSjs1Dg3Co443SD NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 W4TEt52sKL0ndx4jeCahICDW NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 B26L6Qp134xe0wy0Si NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 OQQgFcOqtpjdsCCejbvAAi NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 Gb5w0aja8H NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 eDfHPeW364TY4A2Jhm NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 4jGPKNFY4TP2K8Gw NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 4Ma84C526OTHw0tbwxaQ NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 4hVoMF62WFn82 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 GY0R5v7a8x43DO5 NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 v74G5Gs3 NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 y0Mqh552G2 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 h3qJh214D NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 8Ie6o54y NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 65NJ5u6TD716OP4hB NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 Df7N7eedkot NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 QCqa3FP8v3D NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 dJ6UMgP76K8hC6dVfqFW NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 41OuKHD4wRu238388Cq NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 uj2wiF041GHx NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 6gG4WwoSJ887F15fK824g3e NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 674ILv3V2TxFqXP6wSbL NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 L15l8i5k558tBcDV20 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 0mrwaF7Lj8 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 LOP6Akks01gG1 NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 GV0Wt1N7Q NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 s3Vu3wtVYOJbHGMLQW1 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 D51v22DPjSeSplVUk NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 CjhiR NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 827237W7G6hlU0Y60L6Sm8 NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 40vWkNP0f6DJQu NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 8We4u3732apuHDPV NULL NULL -8.0 -3.285 2872.0 NULL NULL 83 NULL +false 8.0 1w6mvRv543W805LP NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 514eg00Ro1RtB8GGeUCHYAqS NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 I2p1w NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 vxwTTLWW2SR5u NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 Q6LDBb NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 0m8aHX5yF5muTQW NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 pHr8j7sK3hQqSGPT1L320R NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 B50OoxbIK NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 8JNVrH3Lasa826 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 10c4qt584m5y6uWT NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 UR4W5ynqpg NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 x5x535DWvIpVDYn NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 6xn1INe8xSG0487IUAaMYRH1 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 tm85HNL7au4na NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 F3u1yJaQywofxCCM4v4jScY NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 kM4k0y1fqwton NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 YE7I5JK87tW5 NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 2QJ1CmlPPD4fLq7 NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 a88x2Cl NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 3VK3CE7sganaEC NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 Kj0Rtt5r6bFQ2NGQ NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 w5bn2LhMiFin26r3 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 4p32f3dqm6X0Vyd NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 ifm05ON NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 0D6533 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 603r01G4J NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 5iRDem4pt4 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 1lxocR56Tc6bWcLf1GHE7 NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 Nf1SX4jg2f7nyT NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 s2y7T NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 Frlb0SoQ8 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 f62KPh6SmIy NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 v2xYG8X7P8HjL3n83 NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 7OnIvTMO27Hksu6 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 g0AoxG8FyF NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 6sB2kOb37 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 w001v23l5b6tau7H NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 eJROSNhugc3kQR7Pb NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 1N6BDpg65g6 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 miQXFj3fd8Uk388 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 0UR5vFxRwBc8qtO NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 0rNlSy15Xy1Sx NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 lsridF1nnI NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 sS4e8jrP NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 2x480cpEl NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 NaDO45Xxri3X NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 r1L2WTM NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 U3MM60y4t4Ykm NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 MRoENDT50CoGq45C NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 gY5CjIAG71Fh NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 M4HtnssfQiEAD0jYL6 NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 E1K2fsDf8P NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 iStQPx6j8SvMc NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 8vKN51JNM7 NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +true 8.0 3yeQxU NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 fn7k8uv2T7Ifrg NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 mLcj2Cd6L317mcE8Wyv5 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 E50C7d53L56 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 5mPiHh NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +true 8.0 t8Lh68DM18aEr4G7J7dX2Ee3 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 YNsNwqw8y7D65 NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 ytpx1RL8F2I NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 e13dNAo71UXm4Yt1u NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 n2W51l NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 82V4K75apw NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 jqhcD NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 x28I3iV5XV870TUy3Fww NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 kNAHl NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 LAi381BGdEy78j4ke NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 NSLFx NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 s3WL6smnb7 NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 NEGa0N8MJ2dnn3MKAfl6u NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 Q3F7MokUsoVf1xHYCorS NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 JXySu NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 KxewntCJ0mlktP NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 7o0LS1 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 oICOhMTtl6X2 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 04w7DF25lHW4 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 2p7ND20blG8t2cy1VRh16 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 Y3oJ30U4LUuen7U6JjfaexL6 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 E0E7P7p84ltGE4 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 Q31pMN30tPv010W0U2h1s124 NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 RJsFsi3a85svGBfT8 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 h85CHOY0SM0YA NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 05RA7lJ5odEHh13Uj8JkO15D NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 e005B5q NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 gew1eby3AlYSvPICC3 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 6FY0I4YdYA NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 oNWnPJA7QT NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 xO4e02k1jpEEwO80AwCHb4 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 iEb04t2x333EF5wHoKRs6oKB NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 SrPY18L7FKBp8WO NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 64IHiaxNk4lo NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 3EYb6FUI5ckmAd24bR7Juc0 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 BwXBC7rU57 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 556IHnw5U5QfD4 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 kKL0p8pvX01sGT0I5203v NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 uXFnovL64803 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 Xxk00X NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 C470S3c NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 qC2BA3oYp NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 M3jjDj4cJP3yk67GlPULUx NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 8o0l440qDP1 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 V5oM8YBx2Kq63oy0um7 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 pxUt0f57qNtt3 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 rye3kBRGod1su NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 X1haQ NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 W3h83yyQNOicy1k7lw0Rb6 NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 27pysB0Qg6oA8Cf4cjWChH7J NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 efnt3 NULL NULL -8.0 -3.285 2872.0 NULL NULL 83 NULL +false 8.0 mw3S8 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 vfY7008pQEkX2F315E NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 cU6HuP4A323 NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 Yj656R8h5j NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 37nx5s6QE3F NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 Kk7EsvD4vMj2ijUnhyW48 NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 J6S681J6JPB2SD6Uc08U1 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 4YW4ASjU70MkyO2biMUV6 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 31rhe NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 lc8t8231OXG6C7DMG7Lqh NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 2RbYGSs0tvc6C574BcmprP NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 j2UTaANoWtpw2co6Nj3bR2UG NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 67CifPaaWjudYUDTB0IU NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 5u0iXh2Y84QgUXkfi726oF0E NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 Jm1d3h3OxQE NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 83tP8 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 8xLnT NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 sE158DS55 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 O65HL NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 W8IM4inL46o67VXd NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 mli7064t5U NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 Tt1BcY8q3welBr7o22KI3jF NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 3LWXOlGelGXQu64Lxws NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 252YCGI2DXxpdm7 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 tKRUQ0e NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 Wu3285CX753 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 j2dqLVpEPr87jVGVotModCHd NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 1RH526 NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 418K4e01f6b NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 RsYTaV3rFO0kS2R4 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 ctL23E5x1d1 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 bI55nJLOusG5i NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 ImYiNP1Y0JoBfQLbd NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 jKOcSGq5CIGQK8wPD13l7 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 W114Au1ELrT7tRYnqE3MxCv NULL NULL -8.0 -3.285 2872.0 NULL NULL 83 NULL +false 8.0 h5M1D3a1q528tDjybg8 NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 I6Yl6OVpH65i NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 THh5lsUQ8a23g62 NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 8evw1sI852U4bid NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 6bnEapMI6L NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 vcw13dF2uJ6S5GEq3P1QV NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 1EQPbIb2Wc0v60b NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 22w42i7d7D2lhn6jfnlSN NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 AIqMWf4G31cTSrfl1M6VKm NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 3p52k8g15nQB2biT1bn7 NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 GX1nfv0HF8O3 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 Cd6HS76Hi77r7YGGH1 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 4UtjbA8bV4lkm NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 xqiJqgi4N1AR18yC464f1FC NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 x15jGM0RqU NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 1pxO53oqqBm2 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 Gn2Q3q7bvg6J56K NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 1nnwS4QL88H4N4NItBY7Nje NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 75RG2c8 NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 Xi7kOTT NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 nPy0TgiIloESA8nQ4Kkt2 NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 4W3748j3JCC NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 g0Kgv01XSAbU8u NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 J1kjNdL12V8 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 EqAU5Jit8kJfgutgf0U7Ren5 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 4E4kmNOo5dbi25IJPfr05To NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 3r3sDvfUkG0yTP3LnX5mNQRr NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 QJocgOK5m46i2F1rfSCy NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 GciA5Y0kP NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 HnxkMvjEL0rF NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 WhTuEkrt5Qrp5kj4xtFl8uW0 NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 Qk8f11O7Q NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 LHow6beTFmm4fPjj43Qy NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 1NydRD5y5o3 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 b0G65a66732y6yE65hQ0 NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 8TY873CPrH82JPwf NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 DuLQkL6 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 c61SOJvyi4PAdi0o NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 hM04012HKnNf8M7KhUi1x NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 R8B6PMUCp8Fuw NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 HcbsR51rXDw7016fVOt83YaX NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 5882EoppT NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 wO3YtYQ6XLp7w NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 RhOnR NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +true 8.0 H37833CDTytf1mp4 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 vkbGEG4q11J550U7u5EnSs NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 ryp70i8Er3IclwRg11 NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 Or43Y6lI NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 TBI20Ba2YuO44754E2BM NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 mpos7eNU1b3mj5 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 rWDAhu0jHF0kmKoFd4kr03 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 225vmIW8L75bEWVwFc NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 FdxyM7c NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 N7jXiULOjt7xH2SgHwC NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 jVV883J5rXAE5pI6qK NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 js4yrqYjb5asC5O48RlOoS NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 5Q5UxO88 NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 f60N6lQ1JF8TPt NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 3CrD10MgcCY1d5E21 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 M3Vcm3o NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 8jQqh182kkY6 NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 kN1P50L5yeSw NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 q8lY7m8OpG76x774s NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 q5k5l8H NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 pHBBhXH NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 M32Kp NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 eIyS41R32 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 djLQ52K3s5ReY3TQyWRl6 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 16T0Q0hg2 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 Qq3MD84DHC14CDiEGB7p04DO NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 LQd03j0RQEIsglKmjFPuYXJ2 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 EjY6DSn57x1v5h NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +true 8.0 6Ob80MBP350rI275 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 v0uSTRyX5A4W NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 0siU5JLRoUBPi88Kenqg4 NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 jxNdt4 NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 l35W8012cM77E227Ts NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 f3ylU62g8n4VsaJawXV88 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 5wpDt358nV NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 A3lqQ7ei3m008SlRm NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 s4LPR6Bg0j25SWD8 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 6kTCAoN08A NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 87Gan1I33d5v1 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 8lALowC26N0kJ371 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 yB5C57E21h4e5E NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 bP3R4cDVvx6t NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 p6umK8ea57Xg NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 5ealv0e6tmDnoS0bOmX NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 L8Xlx3485W3NxHr0q NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 d52Q4 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 8reJCOg48gHGHDs NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 G0PNHsT6RM4 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 XBfrKWaX68o7HCfKf NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 4dYt6bF5xfHG2v4Fd56P NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 2wgUNj08KLsG4wks06 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 3y1D3A7yxnQenJs NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 fFKkdcf NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 4eWh0BTSBEu2 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 h218Rb5gYs NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 yX1Yqh86o275cYKdoU38 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 V3xf5QPg7EABK NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 jdgDsOTsyP7Eev2471637 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 bO45EOf7qg NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 nk8ff5B5H5R7Si NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 AmPHc4NUg3HwJ NULL NULL -8.0 -3.285 2872.0 NULL NULL 83 NULL +false 8.0 7c4q8O8ft1FuY1Mbsme NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 N304RM2d NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 1d8jOa45wiiv NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 RG57safmo8UjXo4c1230u NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 RtaC46i4DIukN7svr21U46G0 NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 eAGNl00o8pA000I48 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 vuNP0Q21M NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 0KG4XT6262r NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 0A2k346GBQ NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 pguqNU5184b47aYi8g NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 4ieWq56f7mIjQNs783D NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 I0ac41cnFsVAkHmhupt NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 6shc3Y NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 Sw74GCctTG3OmA1S330EC NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 K630vaVf NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 7660JjSpC0gG NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 34oSgU32X NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 hO87j00S6nkbuEFh1rL5ie NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 A74P2VrP7Ao34C87cV8634 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 By4JbbLm4g1Kyq67Er NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 t78BN1 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 qI8k4Mf NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 Fj7LiN85m NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 36fFwTWHYaD563T4Yjx1 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 41xyA NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 xOSHRK0e6243CG0Q NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 uGVS4blOlUNnx176 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 OTjMvEr0QiygFX856t7FPPlu NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 3ConB NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 qreC048mFnygscYQ6DuPrw NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 nJl6242B6arixd4RTTp6wG3 NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 8X155 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 iB4VI NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 Lcat8FGEhBw NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 JxddK7Pl4VF48 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 7SNpQFhk20XW6LON1g NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 HJPWlb23N NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 s2N0j0FMB2k5hnMb NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 DJxhgDD0mIQeDgs8 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 vJ153TP7CVIC NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 3Ke6A1U847tV73 NULL NULL -8.0 -3.285 2872.0 NULL NULL 83 NULL +false 8.0 1u4j8lva4XKq NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 53db1o6XRU2CbwxytJFIg NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 G6M7256nG NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 16qqkM5M66EMI3uWjWy NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 410uuUJB7nKBg NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 41GNy4 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 jH7VH38C77M08h5GNPp8M NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 y500EnnROOM NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 wPdH65hLhV83741j NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 5k53084hr NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 00k3yt70n476d6UQA NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 818vxXu11 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 10V3pN5r5lI2qWl2lG103 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 GdT0mf0U4Q0Mc8AFsCJ6a61 NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 07x1c NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 OE4GQ84apBXD6 NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 3weWVXQv3HgolM52OI2J8NAn NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 0T08CcDm0fDWR25u NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 dPbX4jd1v47r1bB6506si NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 Q72e8c NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 8JNt8dc84gCJC0tN NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 1AQR8H78mO7jyb2PBF NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 N7ED661T508c1vmM NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 HnA5J NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 6qdYTwkc3L5LGy NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 jpl2ap113Lt8 NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 p575lXH8K2IMIQ4qjma87 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 VU42OCI8nDXA0M NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 2a388Phe6 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 NlXgOC4tik26lq0 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 5EkunkVdHYCBxI30D36L6oM NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 mUY26uA6E NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 qUY8Rl34NWRg NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 fBTrfOGxGui72 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 QSdVNqav1efvKUht5o3N6 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 7Sb0367 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 6Ferlt3M8 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 fVgv88OvQR1BB7toX NULL NULL -8.0 -3.285 2872.0 NULL NULL 83 NULL +false 8.0 mbc5yM1H41i NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 28DIm820euPTCMJxiNBtVF NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 aiWFqnj NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 G4XIV50v8Ncd3 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 Le1vfH NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 7WLVW6F4h71Dgk7 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 0un2h56KS7gYB37L NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 4YN58DH0Hhxv5Oc4 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 0uA7It5CJu16eJ4JS1uuxNJ NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 D47x12qBG7n82y NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 euqLv NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 6o50QhXglfo0TlCF NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 s8C16hIJCvCdrOg3q8a1Go NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 r72O13XI NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 sFRsqLf NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 MJ7Ej4tBYS8l2mK NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 JrReU7qfE NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 x4dhr4EV4J NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 AMW7A NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 mvl88OrMd5O2WYb NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 w6gGSU471 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 eKu2BS26qOY0 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 48fOGR7H6oNnh7m3Y NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 1P2TFQRLS8P NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 Md0yyD6nXB1OBFdM2Gc NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 33woPLwH3MFmK NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 LdiBaUk NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 M8YT251 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 AuQ7FrUgXua NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 5SJ2q18tk53g4SdDvlH3 NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 TrVt3076w4QSXF83Io NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 I1be6JuP8HeaA8UI8c NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 b NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 2251WSv5eA2l6WqesdKPM2 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 ijmD5iqIymg NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 b5GwV NULL NULL -8.0 -3.285 2872.0 NULL NULL 83 NULL +false 8.0 GS7Sinl7k2srPHIdC7xsu NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 Xtw4eM002sS1101p NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 W4G22U32r8Ck NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 CUa3sAF216u7IeQ NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 8rac067JIBxRah56sw NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 2tV7k NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 6n3S324AM NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 rG7eG0M6IOEb007BB4Ynts NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 d05ua0EQjlFMb NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 t6WHE0 NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 doI56Fdj4YgK3Q335155DC6 NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 5Uh3u36dO NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 Omn3514WtBGS26q10wG NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 wyxWr1DYsR15OYJWE6F NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 5b7222ls0wgFVAff7D NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 3D8duxU6ikxujMiA3a1s3C1 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 x8RcAb7i5eeGulx4U200AN8F NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 3kt58sfq NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 0y7AJ4Mgm5KvSXXPh2802 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 2wv4mHH5001Rlwe5vG NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 hRUvK70d5B4F NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 Y4040E2ykhl2ih58m55Pfyaq NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 n3ASjX44hdNqD7smp NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 iaD4Rnj1 NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 H4g4563WvqWkArS NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 uHkBp64 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 2H2X40NiXBIW2f NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 76Gi03D76LwH75q5Qm8641aE NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 Dxc5s8wD6v47 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 h15Uw8Uidj2K5OYWOqQ5 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 02v8WnLuYDos3Cq NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 gfkqq1a3n56XaYAB NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 02VRbSC5I NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 MqcMK622OR2 NULL NULL -8.0 -3.285 2872.0 NULL NULL 83 NULL +false 8.0 3ocGWW4eY55A NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 Ju5Gq3IN77dD3541425UN NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 Pjmv0I66 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 0Apbh7X08i2JyMK NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 C32YIF3mQaXSTkCV8D2u7L7 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 6bf1hDU2gvI NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 7vH6I81S0 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 2kQ5t0876n4JffOpftYceg5 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 K1gQm1u7ExEr NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 AASM5H55Q142monqAx3u NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 cd5iw78V2n8N0x NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 LfUyaaMR2 NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 5nDHTQtR7 NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 G82p1 NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 rdcFjbu0F7yQ3C NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 aEgURECDWj44 NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 uXAG5QG6m60Y NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 T0rmM12M1kobD2yqIsO NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 bWhq42DR5G1Ypd NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 pIO3OuP40U8U1i112A NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 d5I5x4dq6tFbftHT NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 3n72v2K42wYgtoeJrjhHnDm NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 hA4vIK10755e76nB NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 fCf8y2hv5UrvJR2i1mD0yuc NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 UQv8T28745qO62T NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 36E3s7M68N2 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 3Qn72niu1tSo14 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 865ub2nreG8h0r7 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 8k2NIi3tY7t68 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 5nV8bh0O NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 g28jQ233uRHM7JG5E4 NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 8GloEukQ0c68JDmnYL53 NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 M6567 NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 Iny0u NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 mv2XSjHre54gnF3hbv NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 q3XGm NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 74bXXWTpyU68 NULL NULL -8.0 -3.285 2872.0 NULL NULL 83 NULL +false 8.0 6V8Ok8kTDSE86D8h0q06qi NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 G0QdT8I4 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 CUaLDB NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 Uwyw8I50 NULL NULL -8.0 -3.285 2872.0 -5 NULL 83 -3810 +false 8.0 c2xCAAm6W24ho1Ett NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 f5elgJP3k07 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 kA0XH5C5 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 jqTYMlhRr2crw1Oo NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 GxsOc NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 vUum3jv NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 61b7h3g8gQVJjx NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 4c2KT50dog5 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 46aF585n7xBB NULL NULL -8.0 -3.285 2872.0 5 NULL 83 3810 +false 8.0 6olFV6c18IdYv6pBJG1 NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 nx6ptem0PKtsk07AIkoG5 NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 Y00YWUI2gXA NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 0sB8K NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 21177SI08X0RDP7y70pe157O NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 V746122yhMM3iEs NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 R6q656btrqQM6a5nQ4GcVg NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 N62KU05S73f5I0F77DK NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 2Amg22mSeD4C6OL64 NULL NULL -8.0 -3.285 2872.0 -4 NULL 83 -3048 +false 8.0 qFP23 NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 cb5LPuiF NULL NULL -8.0 -3.285 2872.0 -6 NULL 83 -4572 +false 8.0 RVa8teOcCN NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 Fh0xg4mjc7N4jCrkL NULL NULL -8.0 -3.285 2872.0 0 NULL 83 0 +false 8.0 W8A4i055 NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 G7IJs50P82Y5G4s1nH52Y2j NULL NULL -8.0 -3.285 2872.0 -2 NULL 83 -1524 +false 8.0 casvJ6NR NULL NULL -8.0 -3.285 2872.0 7 NULL 83 5334 +false 8.0 qJTKE1 NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 8eSO14 NULL NULL -8.0 -3.285 2872.0 -1 NULL 83 -762 +false 8.0 L47nqo NULL NULL -8.0 -3.285 2872.0 -7 NULL 83 -5334 +false 8.0 vHIBETRJieO3a6px NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +false 8.0 lqdd2uvmkyl4U1TYY3 NULL NULL -8.0 -3.285 2872.0 6 NULL 83 4572 +false 8.0 6EkcHQJ8dg NULL NULL -8.0 -3.285 2872.0 -3 NULL 83 -2286 +false 8.0 DGu7ynB5SM3A864nRD NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 164334b43QNUJ NULL NULL -8.0 -3.285 2872.0 3 NULL 83 2286 +false 8.0 drU0J0cDrY6S083r7T5Nd NULL NULL -8.0 -3.285 2872.0 4 NULL 83 3048 +false 8.0 a1sV4Se71EjpRn NULL NULL -8.0 -3.285 2872.0 2 NULL 83 1524 +false 8.0 iQq6r8j4suqBapdr7m35j NULL NULL -8.0 -3.285 2872.0 1 NULL 83 762 +NULL 57.0 NULL 1473896544 7196 -57.0 -0.4610526315789474 20463.0 NULL 7196.0 132 NULL +NULL -51.0 NULL 1473896544 7196 51.0 0.5152941176470588 -18309.0 NULL 7196.0 24 NULL +NULL -57.0 NULL 1473896544 7196 57.0 0.4610526315789474 -20463.0 NULL 7196.0 18 NULL +NULL -27.0 NULL 1473896544 7196 27.0 0.9733333333333334 -9693.0 NULL 7196.0 48 NULL +NULL 18.0 NULL 1473896544 7196 -18.0 -1.46 6462.0 NULL 7196.0 93 NULL +NULL 4.0 NULL 1473896544 7196 -4.0 -6.57 1436.0 NULL 7196.0 79 NULL +NULL 15.0 NULL 1473896544 7196 -15.0 -1.752 5385.0 NULL 7196.0 90 NULL +NULL 47.0 NULL 1473896544 7196 -47.0 -0.5591489361702128 16873.0 NULL 7196.0 122 NULL +NULL -14.0 NULL 1473896544 7196 14.0 1.8771428571428572 -5026.0 NULL 7196.0 61 NULL +NULL -28.0 NULL 1473896544 7196 28.0 0.9385714285714286 -10052.0 NULL 7196.0 47 NULL +NULL -26.0 NULL 1473896544 7196 26.0 1.0107692307692309 -9334.0 NULL 7196.0 49 NULL +NULL 32.0 NULL 1473896544 7196 -32.0 -0.82125 11488.0 NULL 7196.0 107 NULL +NULL 9.0 NULL 1473896544 7196 -9.0 -2.92 3231.0 NULL 7196.0 84 NULL +NULL 12.0 NULL 1473896544 7196 -12.0 -2.19 4308.0 NULL 7196.0 87 NULL +false 11.0 57WA7Sm6RuEiouyjK3 NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 MQ0fqWv7k48r6kw NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 bq7qevqgOC NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 KoTnkL5820App0hb NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 bGBcSi10VWt NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 PUn1YVC NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 pcnq40qUNuY54 NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 K55mHG1D07 NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 BYD32YqIWlOgNpL NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 6m476JFPvAvlp7KTyU5C NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 T6ubsbx62cmP NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 5tdqo738BN NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 JPh1g4nGHIT0 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 357GvGhVK0325aU NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 5b38BDVq7FrK342c0iI2w26H NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 20ub5m0Qgh NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 2j2W3xc42VkSq4Nh NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 u6aAurTkTTuKL3gU5s6b80SL NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 pPDa1 NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 gSJS1mpb5Khx8140U3 NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 s4q2UkuM0 NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 cv71a87hIMbVuJ2dAX NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 s5unq NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 6PpbCyjf6c88b NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 q4W42sg6k NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +true 11.0 ce6C1MhLw NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 m80sprxq3O4J4YC6gh NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 xbQqalYlo NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 10pO8p1LNx4Y NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 2v5Ux NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 iJloCx17VlmyNl881XJ8187 NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 47INeW44yvsne46Mu NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 FvrWP NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 v6lPjluh77k5 NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 kK8gg NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 5308t82fc4 NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 woeLEb NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 vRRg2BqTsJEV NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 HgP1PNA6gggV0v0L801 NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 HfAollgq3EG6 NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 Ni0502Nm8 NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 KFSPYD NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 TJ0dMNm6s44r77567jk5 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 bK1Ops664m7u46sIF7Cgn7 NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 GVsdgDhg NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 2SOiwMlQ55T05111LrY5 NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 gk0kJenBW237uQoxGBx36 NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 HN3I58 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 C1E8E3vVL16j NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 6ljwSqpl7n47 NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +true 11.0 bx3NrGJIw088yHD5461A NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 Rdj0Jt0pa8fLFYq24hu3UR NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 8Lh4G52x4 NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 mOofw7T57kng3V161Mg4YYK NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 bM34sI6W5h NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 FMVqyn08R5kuEv8 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 GEO5N1eUca NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 wM316f6NqGIkoP388j3F6 NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 tXve4IPACHEIJ5773oNyco24 NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 qx6dp6KHBQHn7U14fdd0Rbj NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 WML05unAVOf1F5IDw1S1Yv1 NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 RS1Ec5u4hvD NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 316t3Sw NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 8iX3Lj03 NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 70a3Xg NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 LKRvI78ReJ6OGetwpvK NULL NULL -11.0 -2.389090909090909 3949.0 NULL NULL 86 NULL +false 11.0 taaQ17IeHeH4rk2s0HeTKn NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 767fOfF1Oj8fyOv6YFI16rM NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 vu46n3nUvv7ls2K4k18tvw NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 0rtl1C NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 V0w3pYUxg4Pe85bSga6 NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 5Jm0c0pa7 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 1x1vyb NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 28131eU1pSKC35ADujoL NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 7s6O45GD7p4ASq08a26v8 NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 38TsU NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 2Wn3m7QhneidkMX1q NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 U16wryUI NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 Y8QG0P1v36K02sXHc84 NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 RyE4Y3w2gXf NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 4j16o2bV34xFa36 NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 2VBb0ATBqIx4n1Gm7W8 NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 xVIV6kFgqL8r1tcY37o0 NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 7Kp283Fa5 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 8v064ye21c NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 ioU8KlM6LHCw4V86C NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 5kiN628ldFC6 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 ai6nt5l5gCA3p71Q NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 31m1d3P3AD NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 My4DaO425f86c7 NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 rs1jgr3QXsF803w3Eu NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 PLFB86o84end3tdsS2hVL NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 M10C4DWJ0Gn NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 1q3IAyF41KDbkoUH0UF8d NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +true 11.0 yJ67FYA NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 c0gO7g27mjW4XEaUK1fXvEk NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 30S16Yv88FUQsDS2 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 5VexJO NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 4HuS7f55wM87e NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 rKJRy0v1t2MRedVl NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 THog3nx6pd1Bb NULL NULL -11.0 -2.389090909090909 3949.0 NULL NULL 86 NULL +false 11.0 6H2gys6m6qldIy4bENoFI NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 JLB7v50LP4KVsH2or1ih8821 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 68k8JcLTRwf8X2P7nE4X NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 RmHlM NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 181O0OJ0P36g7g37vM2M6 NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 3xN13QA1u4nP NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 26xX874ghxkA8bV NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 7Dl7rr2aa2bfovt1yny5v NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 1Jq7kLUa3loRL NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 BfGE56ef2ej NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 3abOQ1oI NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 0dtVL5IFPf NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 6lqfp6xy7uLrK1oqee NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 0iqrc5 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 ARECS NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 myW247hI5iQQ4U37x5hK NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 57vi3IQLIES0Q16OTuiC4Hf7 NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 FwMw41y68NnU0FGJ5k6 NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +true 11.0 M3qqxj71FawLd2slbwTO0 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 Xr1Lmw7g3730qA0N6n NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 BxH575uxOuCE6sxn6frt NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 xhAUptat NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 0OD14f5eu NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 MK45RAOe4Ugk4UJ0B NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 MP277gwYLn NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 SE70BON7C5PmaUdg NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 IorWR NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 p014F NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 2yd00UDPJUO37S4qfT0gHyg NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 ladcLQv2Hj7mc NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 wB06b612o55 NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 0IX8xRUO NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 R4MT4f5U NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 p568R4q2d3342ejH4 NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 Oyt670i0bysk650i2to NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 EQT56g5A73m3j NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 K3Ajb4l11HjWeEEnM02w NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 e035q4Ba4721NL1l NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 8TM0eO67oHDf3spTRmJ8k NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 6D8Kub2t61I80E6Qe8VkYW NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 5kX417RB64367vBw38XVJB44 NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 scPuaL7lo NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 X53h8r5nuFYOY3vop381283 NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 bq2VE4s1Ps NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 gj5IRDNe62057M NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 h6pSh1A3WMOI3eY4IxD NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 7a44BmyY6sULOArK1Jv65nnn NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 6k775i02NM8tHyWkkUSbb8O NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 7q0iMi2GDq0Q NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 Q3k1H7E0N8B0vl22437 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 vQ0a2oe83D2j36d375fkya NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 HtI02nss6t8S0fqH4vcLkCD NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 yOnsF4mFp NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 y4M5U7WAv4eCCp7 NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 We3CdnjxFCPE NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 6a421YV NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 tN335oXx NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 g2vI6MW2 NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 Y55ytQtGRN8l58131e NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 gv7hVe3 NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 02vDyIVT752 NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 er5IUhd505r0lT6sc20Tef5q NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 uRcc7 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 W0rvA4H1xn0xMG4uk0 NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 G2s1ly NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 1T1oN5BQ NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 dDf3se3j NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 tIyd6H2oamr52OU50 NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 wb5t2UC67jy84KejtAa0B3 NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 PKyDxRfT7OOR370M1u64Gb4 NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 j51d0i7u3KGhTKavw1C NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 w7rU1B5g1v1Nkit7A2ruWT NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 GHU6et8f3CY NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 n2d32Et NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 aEi5JQHQPd4Y8 NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 2oIGN5REv78NrkB5Id2u NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 B0bp3 NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 43gX6s3LEYUcX668Ig5y NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 PTl81NEYpvuKFBbxAOVh NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 7TSXOfbQHsNGLE NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 PrKs7TD0B7kj847u56pce NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 r3See3oscOt3uwN NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 Mk4tWJvwrb NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 ie83eEmqsGF834r4COpw7j NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 NGPH4Gm5Nq4e4Ub0D4S NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 pAyF06b56PDyJ8PM NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 ti12sx NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 2488b5alBL0PX1 NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 E4ekAO NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 jxkVe1YhhX3 NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 j60Kr2t1K NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 5e8nU8q6vy6hcskp844R8Kt NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 cTWO4kFIrl1n NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 JhS7I21kB6X43NB8U8 NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 M07G7IO4gFx1o NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +true 11.0 1kFnQ8Xw3 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 MpcgmXIn662H8 NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 78WeV1A4Fuo7mPSX NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 kPC4VEoqGJthyOfD1r82GId NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 54GiCgon04NXfnms6b5WRj3W NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 sr70JNPff15hD1sl8D NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 lg62eCuo58RSFPn5Va8va0vp NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 1F1K4Rd NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 b NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 oa1p31X62jj14cJ4 NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 NOl00pk86Qix8KT3QA0pva NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 46J0D1L5q4xsdl0 NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 P2o1Lq44s3 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 Y6net7wDJ2TVjq2u7H8aRCyA NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 CEGOy NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 O35aM54x2F07Uq0f NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 Iwu3T706wKyBs33 NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 El5RUByTr1xve1tM NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 YwV7DVLB0kut0S5p NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 ANpel663M NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 5sQ4qB4ML02YI5Jo NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 RlrTc NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 4eFGE3dwF5 NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 kXbBM1GFdKM NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 I12pYjar NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 bvg7bP3mln3ILuC888M5DEF NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 S7ilpQTm4W0w NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 MP6mdTJr380 NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 3fT7I6UC6 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 au3q16lrAbWbHFqF NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 uu20hX NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 41Uxbkbws7x1oN1M5I NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 N3ieX NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 7uEJE7MbCywRC46tr NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 7d4b5KTsS62wJ NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 7jtP3C204M33 NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 yRG7acYwS01a04X7XaW26B NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 etHtCC NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 8dDe31b5 NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 5BO6u6 NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 HkX7hlT2TK0Je7ersfx72o NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 Y5ls7N3Qy30h43866R3cL53 NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 2Mwn2qTjLVk NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 nlVvHbKNkU5I04XtkP6 NULL NULL -11.0 -2.389090909090909 3949.0 NULL NULL 86 NULL +false 11.0 2dj7o NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 KJeFD8m6cR26L NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 n6n772vXEk2CI05PPWhN NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 k3a17i1ndf NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 8ev7c4JiIUUM5R8yV30 NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 24jbgb42dtP NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 1N77rGXKwbO78axvICg8Gh8 NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 J3HnM2C4sNnO NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 C677g7qo071FQ4a NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 ngUkOdOBOk67o3mcc NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 72F3g4s43q208a2 NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 D2s2711 NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +true 11.0 1j80NSLbNMdIc2H3R01D703 NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 qPiV0J6QDu NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 0mokQ053qtj NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 R426VY66G3alY1rISv8 NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 cre3m4OHF4H4x7nM NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 M22umK0Q1S2Q80358P6 NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 B553840U1H2b1M06l6N81 NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 YjyfU613tjGy NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 1v6A2yY2i NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 NOg4pvkcNV838CleFwsNLnOK NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 77E8Xqg4LgN6ShBGOC4 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 pu2N7if4qfrnK5 NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 v0w25I0uVTf413Rar14 NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 4yAo7t54rr50u6Vci3p NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 2WKo5 NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 lE7AE0Cm NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +true 11.0 nqThW83 NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 KnmtSR55J731b NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 eoIG247 NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 mnfiV3 NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 40CP0hDas6g7m NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 0HxgXxO8E4kP4pBLH8qH NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 2d3tQdCGQN5k7u7S NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 tlH5St NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 651R8MJPy8jvOnu3d NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 0uu4FunxNR7iOvw7NyH7mo NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 B5ObAu54 NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 rqvN5KT0jA11w080At NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 2taQsaEJVXuJ NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 K05HlW2Kgr2Mdwr6 NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 64Vxl8QS NULL NULL -11.0 -2.389090909090909 3949.0 NULL NULL 86 NULL +false 11.0 6oAU0mBFKtwXOIAp7Yqi75H7 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 7Jg216IPQ2H7 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 frhe0 NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 SN5NB5L3gpe2RtR2w50sNAd NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 M7xB374ixGAp NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 2kechLGLtV1b2FK6h NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 A1g358aWFHPT06lWjso8OeQ NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 d8p1NiE467oJer5eVW2DBi NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 R70XMwQQS NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 l1xK7L0L6TjOPrB1tc NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 i7n1eoq1Iw3r5q3qI3464 NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 i0mx8w5HB8THd5N NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 8k1748I2BIW53LK8dmc NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +true 11.0 cUbphr2Or2aJQ0wNK3 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 U1aid52v NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 o8v1574KSnXlsC NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 g6VL0j3k7pEcBq0Hbsk NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 WKH6j0Dtb3VNsOa4uFq2v NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 O8YlG62p5C NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 VbPmiEv5SDp NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 7xh48cBvt34812U1at NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 M5MJdPI5Agcy5T NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 rW58d3yGN1w3XhS7hx3UK1yF NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 2a7V63IL7jK3o NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 ann6ipj6 NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 k7rg3Vw6IpwU6 NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 pL11U1oq48Oj202Wy2W7B NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 7CKu35ao6U121E3o NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 S1Oect6pTauCf8OiYQTgQG0 NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 KIXnc1tg5tx7JUmV14 NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 Q22Upqia NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 SeT3MaHfQ2 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 L64VGc NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 LG13x2kvfvoJ5p4650xdQPo NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 A74OqWUyE2kkH1o0Y NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 FjUt2ol81V3DS18I NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 6SxF1xVO NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 6s3xvhV71f7c6l0Y8 NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 F63t6sNxS3C0yBtcHAUU8 NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 MgMjEMssUEN1 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 y605nF0K3mMoM75j NULL NULL -11.0 -2.389090909090909 3949.0 NULL NULL 86 NULL +false 11.0 xuX0OPw NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 fKbw64QavqgbDL2t60s NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 M3aR2541oGHpP2mTt0d68 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 VFxw08l NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 8Bshk4eu870M3VyJ8c4D1upr NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 b NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 bQmm3Sk5f0ib NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 3H10xyM3GNP1 NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 3EdQS NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 WAE3FjRSY77c NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 e5YfpR NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 O56QsHRU7FCsDRCX5Ay2 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 6eeRVS85xD2q6Q8356 NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 5TVADgO1Sm3 NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 OXHevCW4J150lO46s031n NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 w6173j NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 rss1vw14N NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 IViYKd NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 3q00y4llsXx3Ao NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 mE6lh4Kb1O5F8UQ NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 7GeACqY0R NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 h301kgvvRS1JMq4S8dl NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 Nxd2HCv NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 2T6W6I7vsKk3j6Jx6Shkq3 NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 jO055kB85qLIyl5VJVkj8 NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 1H6wGP NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 1V26wN5LmrcPV NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 3afvyfFbo6GH6JS416cesO NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 6F8wR45s5ys8AkrBE17dn2oV NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 5CbP5V2x14qPOqL3J NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 H5alUwndRKm NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 Qc8i8a3TFBT7M4tb1GFhH NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 aGx8GQM1 NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 sx0fwIg8cKq7pu NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 yl7A1QkSCYHui8cwp4b1OW43 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 3mM337C NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 LiFH6M60q NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 nM5TO25VC7BK623 NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 ve4Pgoehe6vhmYVLpP NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 nc1y0EKQ51B4U0F06 NULL NULL -11.0 -2.389090909090909 3949.0 NULL NULL 86 NULL +false 11.0 2sF6Qdn5w5qO805cSaFV NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 UDXHJf5 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 2h2qsp14cr NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 f0QmOLoGtou7gq42fy01Brn NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 YLh18Tir3Ga NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 cp30v1 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 QDK4Rtj7CX01p NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 GPijCx2T8HpOF1dN6 NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 hl4w6g0LGTr2q7740MWXNhi6 NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 K2Hjg3 NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 jctXbMJ5l4ypSx0SMGFSQtF NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 xefguKKDB5IsOAO4uv132 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 7SgB6fRom0PLEjCH1 NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 75OuwM0O3qDy NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 QOev2x2w0723qyqs23d3k28 NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 r3CkPpt24 NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 8Q14Obe1sC82s2s10v44Pb NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 0FEc2M56c3aXrUw885 NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 2QNVLQqPARH24r6rb4 NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 LxX7UfG58X6b2TTCwkEyp6 NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 15cWEp2JVNf8 NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 WQj6R NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 awXW5ct NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 743510L4r5Npy NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 jU6BuS50j NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 hSb1x4 NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 vjtW5U2e1 NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 JUm3vwG65q33 NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 H6UGGj6Bq4n0Dxr NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 6lG12Lw NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 033ffm5082ng0V NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 FIVQ8 NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 0w0Kn7n NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 ShA4jlmOwF8u7kjN NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 ASm1a20I155Y NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 l3r8T4QgT63 NULL NULL -11.0 -2.389090909090909 3949.0 NULL NULL 86 NULL +false 11.0 8IkicjRJ21c054Id NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 0Y77KBQmKC14u NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 y6LhmEv NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 pn1RqShxA031bNd NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 2vXyUmN8p0lFrAjL1q3wOB6 NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 570Sgf1L12mIrag2hICI51t NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 Vk2Iv4mbULOS56roWfC3t8wE NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 1gdr1s14ckUm4h0A6Qj NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 MegDovU0eCg3fkXrbtkH NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 btgw707cKS2odwbePK2B NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 6mQ6vL4d NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 K11m3K43m5XFX40RJm1q NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 2BFlmLpq7F1O6 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 16P2kxk NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 WBCaAb0o2Lsob4aiUHhvDx NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 8E6m0haq3625pJ32EE NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 5FD1Pq2Me0754jnw64jq68 NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 7e8cuG44 NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 RFDIm4Is12 NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 KJBwt NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 t2Hlw6483gjNM4UmOetl44 NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 r1RYHxl1G1um8 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 u8vxgV6DeMarpPIoNRQK8555 NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 iASE7cWnCT4NRf NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 7g83b3nl NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 5ocI6aD NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 L7n644820 NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 YXbTksK2YAt32i4vi6xyT2 NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 l6E3G8 NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 xM1Gglkeqdcp2kE2v6ss5Cb NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 Bgk2cxNJk7f4rMmW38Dl3S1 NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 icCP7UDP0d1h5q NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 K5H5uc6M367aVUqW1QP72smC NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 bJQO0 NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 GCAqH7rTc5Jt1Rie02v NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 KymYC73 NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 c34CVGK345 NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 Xw6nBW1A205Rv7rE NULL NULL -11.0 -2.389090909090909 3949.0 NULL NULL 86 NULL +false 11.0 Hs1UjxW81 NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 fg7BpI NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 370Iao42Ne47KoMuv7L0GKqE NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 uo1oJ7l NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 sOLhNq8p65eoW8e46X12WL NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 P4shXtBlvn NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 41A0nYX72UOSfxO4053xy NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 BLoMwUJ51ns6pd NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 Kst24 NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 b3T1L5u7us8 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 7Xt47WK7fF0OYPUVU3Br2d7M NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 wcBrVnjG NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 1q6mOJMMOOaF1FraYJET8Y NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 y2d583F10vH NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 lEr1qTVVC1tC NULL NULL -11.0 -2.389090909090909 3949.0 0 NULL 86 0 +false 11.0 5E1p5y1HXY82QUbObgeA NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 ka4xX NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 T3qQxO7gFwJNh4Mb3 NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 VugB74M4f31f0 NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 2FBdToh5748vG3p1f4A2Koql NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 XBTRwI0J NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 6KG7M5SbVWfA8J2wYvDbR NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 V2NEmm6d0kLFGa5s01k NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 g552y0x1B4n NULL NULL -11.0 -2.389090909090909 3949.0 3 NULL 86 2286 +false 11.0 2W5VeOi75DI33He6HWk NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 Mekui5MM6PUU06e NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 6Weo4BXewS0 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 r7O5x3RuAB6v65VR2O71S3f3 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 7hCJ5yJvt0775jjgq8S0bX6W NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 02k5poW73QsWM NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 a7P5omBy NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 7i03i80 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 225M5e1OeEOu7v NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 YUKS3r4spEtph1kg7 NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 vN0g7Ptk7aTyTIH1cCt2sX6B NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 E6EfhWpAlcoU2hr NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 3Qm5PpAGbhf8NkWHJPv NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 jL3mXoEuM0B NULL NULL -11.0 -2.389090909090909 3949.0 10 NULL 86 7620 +false 11.0 GDW1pK2834Y NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 M45b3SlE5q5n NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 eicMhR0nJt12OH7IO2651bO NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 bX48CaI1txU5AGn2AmEuKj NULL NULL -11.0 -2.389090909090909 3949.0 -8 NULL 86 -6096 +false 11.0 e2m8waBVlVU NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 o1q75 NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 qAoGjP7q7r8p460I3aT5x7o NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 XSv8Ti8c NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 nClXBWi0y0f664ah3 NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 o6tgwEK05ls41D2fa NULL NULL -11.0 -2.389090909090909 3949.0 -5 NULL 86 -3810 +false 11.0 6OdmC8H5 NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 IBVBmf6H8vCc4n NULL NULL -11.0 -2.389090909090909 3949.0 1 NULL 86 762 +false 11.0 8QWCbCQMIc3bsI7 NULL NULL -11.0 -2.389090909090909 3949.0 -10 NULL 86 -7620 +false 11.0 B7P12uoI NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 ijU4c NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 B7grxpIo8Tf33RjGTg0 NULL NULL -11.0 -2.389090909090909 3949.0 -3 NULL 86 -2286 +false 11.0 1j3rth56N41X17c1S NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 65mIi6OLkWrv1iSiM1wia NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 H581dL8J4qjjb1DAPl NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 0w036Qnm3WkA73cw142j1l NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 QRQRpg NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 5O4amH0XK1mu8716 NULL NULL -11.0 -2.389090909090909 3949.0 -9 NULL 86 -6858 +false 11.0 6K78X NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 DBdP640m2jjC NULL NULL -11.0 -2.389090909090909 3949.0 9 NULL 86 6858 +false 11.0 OEfPnHnIYueoup NULL NULL -11.0 -2.389090909090909 3949.0 -7 NULL 86 -5334 +false 11.0 M70kEecXx1706B NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 H8PP4887 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 mXUG4lHU NULL NULL -11.0 -2.389090909090909 3949.0 -4 NULL 86 -3048 +false 11.0 3rDE5ohocdMweTS7gspnT3 NULL NULL -11.0 -2.389090909090909 3949.0 8 NULL 86 6096 +false 11.0 g8d0MGKWIe2r6wivyyl NULL NULL -11.0 -2.389090909090909 3949.0 -6 NULL 86 -4572 +false 11.0 28Oe6r21yux7Lk47 NULL NULL -11.0 -2.389090909090909 3949.0 -1 NULL 86 -762 +false 11.0 xTlDv24JYv4s NULL NULL -11.0 -2.389090909090909 3949.0 7 NULL 86 5334 +false 11.0 LR2AKy0dPt8vFdIV5760jriw NULL NULL -11.0 -2.389090909090909 3949.0 NULL NULL 86 NULL +false 11.0 meGb5 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 +false 11.0 mby00c NULL NULL -11.0 -2.389090909090909 3949.0 6 NULL 86 4572 +false 11.0 nI30tm7U55O0gI NULL NULL -11.0 -2.389090909090909 3949.0 4 NULL 86 3048 +false 11.0 KHtD2A2hp6OjFgS73gdgE NULL NULL -11.0 -2.389090909090909 3949.0 5 NULL 86 3810 +false 11.0 eQ80MW0h728I204P87YXc NULL NULL -11.0 -2.389090909090909 3949.0 -2 NULL 86 -1524 +false 11.0 d3o1712a03n20qvi62U7 NULL NULL -11.0 -2.389090909090909 3949.0 2 NULL 86 1524 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_decimal_date.q.out b/ql/src/test/results/clientpositive/tez/vectorization_decimal_date.q.out new file mode 100644 index 000000000000..c20033ccc13a --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_decimal_date.q.out @@ -0,0 +1,51 @@ +PREHOOK: query: CREATE TABLE date_decimal_test STORED AS ORC AS SELECT cint, cdouble, CAST (CAST (cint AS TIMESTAMP) AS DATE) AS cdate, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal FROM alltypesorc +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: database:default +PREHOOK: Output: default@date_decimal_test +POSTHOOK: query: CREATE TABLE date_decimal_test STORED AS ORC AS SELECT cint, cdouble, CAST (CAST (cint AS TIMESTAMP) AS DATE) AS cdate, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal FROM alltypesorc +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: database:default +POSTHOOK: Output: default@date_decimal_test +PREHOOK: query: EXPLAIN SELECT cdate, cdecimal from date_decimal_test where cint IS NOT NULL AND cdouble IS NOT NULL LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cdate, cdecimal from date_decimal_test where cint IS NOT NULL AND cdouble IS NOT NULL LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: date_decimal_test + Filter Operator + predicate: (cint is not null and cdouble is not null) (type: boolean) + Select Operator + expressions: cdate (type: date), cdecimal (type: decimal(20,10)) + outputColumnNames: _col0, _col1 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT cdate, cdecimal from date_decimal_test where cint IS NOT NULL AND cdouble IS NOT NULL LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@date_decimal_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdate, cdecimal from date_decimal_test where cint IS NOT NULL AND cdouble IS NOT NULL LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_decimal_test +#### A masked pattern was here #### +1970-01-06 -7959.5837837838 +1970-01-06 -2516.4135135135 +1970-01-06 -9445.0621621622 +1970-01-06 -5713.7459459459 +1970-01-06 8963.6405405405 +1970-01-06 4193.6243243243 +1970-01-06 2964.3864864865 +1970-01-06 -4673.2540540541 +1970-01-06 -9216.8945945946 +1970-01-06 -9287.3756756757 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_div0.q.out b/ql/src/test/results/clientpositive/tez/vectorization_div0.q.out new file mode 100644 index 000000000000..54b09d07ddb1 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_div0.q.out @@ -0,0 +1,485 @@ +PREHOOK: query: -- TODO: add more stuff here after HIVE-5918 is fixed, such as cbigint and constants +explain +select cdouble / 0.0 from alltypesorc limit 100 +PREHOOK: type: QUERY +POSTHOOK: query: -- TODO: add more stuff here after HIVE-5918 is fixed, such as cbigint and constants +explain +select cdouble / 0.0 from alltypesorc limit 100 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 100 + Processor Tree: + TableScan + alias: alltypesorc + Select Operator + expressions: (cdouble / 0.0) (type: double) + outputColumnNames: _col0 + Limit + Number of rows: 100 + ListSink + +PREHOOK: query: select cdouble / 0.0 from alltypesorc limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select cdouble / 0.0 from alltypesorc limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +PREHOOK: query: -- There are no zeros in the table, but there is 988888, so use it as zero + +-- TODO: add more stuff here after HIVE-5918 is fixed, such as cbigint and constants as numerators +explain +select (cbigint - 988888L) as s1, cdouble / (cbigint - 988888L) as s2, 1.2 / (cbigint - 988888L) +from alltypesorc where cbigint > 0 and cbigint < 100000000 order by s1, s2 limit 100 +PREHOOK: type: QUERY +POSTHOOK: query: -- There are no zeros in the table, but there is 988888, so use it as zero + +-- TODO: add more stuff here after HIVE-5918 is fixed, such as cbigint and constants as numerators +explain +select (cbigint - 988888L) as s1, cdouble / (cbigint - 988888L) as s2, 1.2 / (cbigint - 988888L) +from alltypesorc where cbigint > 0 and cbigint < 100000000 order by s1, s2 limit 100 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((cbigint > 0) and (cbigint < 100000000)) (type: boolean) + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (cbigint - 988888) (type: bigint), (cdouble / (cbigint - 988888)) (type: double), (1.2 / (cbigint - 988888)) (type: double) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: bigint), _col1 (type: double) + sort order: ++ + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + value expressions: _col2 (type: double) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: bigint), KEY.reducesinkkey1 (type: double), VALUE._col0 (type: double) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 100 + Statistics: Num rows: 100 Data size: 3000 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 100 Data size: 3000 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 100 + Processor Tree: + ListSink + +PREHOOK: query: select (cbigint - 988888L) as s1, cdouble / (cbigint - 988888L) as s2, 1.2 / (cbigint - 988888L) +from alltypesorc where cbigint > 0 and cbigint < 100000000 order by s1, s2 limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select (cbigint - 988888L) as s1, cdouble / (cbigint - 988888L) as s2, 1.2 / (cbigint - 988888L) +from alltypesorc where cbigint > 0 and cbigint < 100000000 order by s1, s2 limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-985319 NULL -1.21787969175465E-6 +-985319 2.0297994862577501E-4 -1.21787969175465E-6 +-63925 0.11256941728588189 -1.8771998435666796E-5 +0 NULL NULL +0 NULL NULL +0 NULL NULL +0 NULL NULL +0 NULL NULL +0 NULL NULL +0 NULL NULL +0 NULL NULL +0 NULL NULL +392309 NULL 3.05881333336732E-6 +673083 -0.010691103474608629 1.7828410463494101E-6 +2331159 NULL 5.147654021025593E-7 +2342037 NULL 5.123744842630582E-7 +3533105 -5.660743170667161E-5 3.3964459024002967E-7 +3768727 0.004139594085748318 3.184099033970887E-7 +4728619 NULL 2.5377388197272816E-7 +5391403 NULL 2.2257657236901044E-7 +7022666 -0.0010246820794268159 1.708752772807364E-7 +7470430 NULL 1.6063332365071354E-7 +8276429 NULL 1.4499006757624573E-7 +8286860 -8.683626850218298E-4 1.44807562816314E-7 +8299981 -8.669899364829872E-4 1.445786442161735E-7 +9247593 NULL 1.297634962957388E-7 +9821695 -7.326637611939691E-4 1.2217850381222386E-7 +10000738 0.001559984873116364 1.1999114465352456E-7 +10081828 0.0015474376273826532 1.190260337708598E-7 +10745355 -6.696847149303117E-4 1.1167616146697805E-7 +11127199 -1.797397530142132E-5 1.0784385180852791E-7 +11722580 NULL 1.023665438836843E-7 +12649396 NULL 9.486618965838368E-8 +13126214 -1.5236685917203544E-5 9.142011550322126E-8 +14042667 NULL 8.545385288991044E-8 +14943972 -1.3383322720358416E-5 8.02999363221505E-8 +16259022 NULL 7.380517721176587E-8 +16531556 -1.2098074736582569E-5 7.258844841949542E-8 +16596157 NULL 7.230589587697923E-8 +17058489 -1.1724367849930905E-5 7.034620709958544E-8 +17247320 -4.172242412154468E-4 6.957602688417679E-8 +19004427 8.209139901981786E-4 6.314318237534864E-8 +19498517 NULL 6.154314197331007E-8 +20165679 7.736411950224934E-4 5.95070466013071E-8 +20547875 NULL 5.840019953401507E-8 +23264783 NULL 5.158010715165492E-8 +23475527 6.645644206411213E-4 5.111706331448917E-8 +24379905 NULL 4.922086447834805E-8 +24514624 -2.935390728407664E-4 4.895037345871591E-8 +25154198 -2.860755091456305E-4 4.770575472133916E-8 +25245192 -7.922300610745999E-6 4.7533803664475993E-8 +26610943 NULL 4.509423059528556E-8 +27520143 5.668938566198584E-4 4.360442458456702E-8 +27818379 NULL 4.313694913711543E-8 +28400244 NULL 4.225315810666979E-8 +28698999 5.43607810153936E-4 4.18133050563889E-8 +28806400 -6.9429015774272385E-6 4.165740946456343E-8 +29920877 5.214085135271938E-4 4.010577631130264E-8 +33126539 NULL 3.622473207961749E-8 +34603086 NULL 3.467898787986713E-8 +35156265 NULL 3.413331876978399E-8 +35862260 NULL 3.346136021544654E-8 +36123797 -1.992038655294182E-4 3.321909931007529E-8 +36341671 -1.980096072082101E-4 3.301994561559924E-8 +36413215 -5.4925114412446145E-6 3.2955068647467685E-8 +36578596 4.2650625518814335E-4 3.280607052277239E-8 +36796441 -1.955623914823719E-4 3.2611849607955287E-8 +39723587 NULL 3.0208752296211316E-8 +39985709 -1.7996429674411925E-4 3.001072208073139E-8 +40018606 NULL 2.998605198791782E-8 +41003161 NULL 2.9266036342905367E-8 +41158231 3.790493328053871E-4 2.9155772025284565E-8 +41848817 NULL 2.8674645689506587E-8 +44047567 -1.633688416888043E-4 2.724327543448654E-8 +45125678 NULL 2.6592398234991615E-8 +45180154 NULL 2.6560334433565674E-8 +45717793 3.4124569399052136E-4 2.6247986205283355E-8 +46163162 NULL 2.5994753132378583E-8 +46525838 3.353190543284787E-4 2.5792120068852925E-8 +48626663 NULL 2.4677819244968545E-8 +49102701 -1.465499830650864E-4 2.4438574163160596E-8 +50300445 -1.4306036457530346E-4 2.3856647789100076E-8 +50929325 -1.412938420055636E-4 2.356206370298448E-8 +52422534 -1.3726921327381848E-4 2.2890919389741823E-8 +52667422 2.9621727070673783E-4 2.2784483356713376E-8 +52962061 2.945693522010029E-4 2.265772852004381E-8 +53695172 NULL 2.234837798824818E-8 +54760317 NULL 2.1913678841559662E-8 +55020655 2.835480602693661E-4 2.180999117513232E-8 +56102034 NULL 2.1389598815615135E-8 +56131313 NULL 2.13784416551952E-8 +56838351 -3.5187509222426247E-6 2.1112505533455745E-8 +56997841 -3.5089048372902406E-6 2.105342902374144E-8 +57778807 -1.2454393528755274E-4 2.076886080392764E-8 +58080381 NULL 2.0661021490199935E-8 +58307527 NULL 2.058053328174937E-8 +58536385 -1.2293208745295768E-4 2.0500070170031853E-8 +59347745 NULL 2.0219807846111087E-8 +60229567 NULL 1.992376933408802E-8 +60330397 NULL 1.9890470801974003E-8 +PREHOOK: query: -- There are no zeros in the table, but there is -200.0, so use it as zero + +explain +select (cdouble + 200.0) as s1, cbigint / (cdouble + 200.0) as s2, (cdouble + 200.0) / (cdouble + 200.0), cbigint / (cdouble + 200.0), 3 / (cdouble + 200.0), 1.2 / (cdouble + 200.0) +from alltypesorc where cdouble >= -500 and cdouble < -199 order by s1, s2 limit 100 +PREHOOK: type: QUERY +POSTHOOK: query: -- There are no zeros in the table, but there is -200.0, so use it as zero + +explain +select (cdouble + 200.0) as s1, cbigint / (cdouble + 200.0) as s2, (cdouble + 200.0) / (cdouble + 200.0), cbigint / (cdouble + 200.0), 3 / (cdouble + 200.0), 1.2 / (cdouble + 200.0) +from alltypesorc where cdouble >= -500 and cdouble < -199 order by s1, s2 limit 100 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((cdouble >= -500) and (cdouble < -199)) (type: boolean) + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (cdouble + 200.0) (type: double), (cbigint / (cdouble + 200.0)) (type: double), ((cdouble + 200.0) / (cdouble + 200.0)) (type: double), (3 / (cdouble + 200.0)) (type: double), (1.2 / (cdouble + 200.0)) (type: double) + outputColumnNames: _col0, _col1, _col2, _col4, _col5 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: double), _col1 (type: double) + sort order: ++ + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + value expressions: _col2 (type: double), _col4 (type: double), _col5 (type: double) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: double), KEY.reducesinkkey1 (type: double), VALUE._col0 (type: double), KEY.reducesinkkey1 (type: double), VALUE._col1 (type: double), VALUE._col2 (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 100 + Statistics: Num rows: 100 Data size: 3000 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 100 Data size: 3000 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 100 + Processor Tree: + ListSink + +PREHOOK: query: select (cdouble + 200.0) as s1, cbigint / (cdouble + 200.0) as s2, (cdouble + 200.0) / (cdouble + 200.0), cbigint / (cdouble + 200.0), 3 / (cdouble + 200.0), 1.2 / (cdouble + 200.0) +from alltypesorc where cdouble >= -500 and cdouble < -199 order by s1, s2 limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select (cdouble + 200.0) as s1, cbigint / (cdouble + 200.0) as s2, (cdouble + 200.0) / (cdouble + 200.0), cbigint / (cdouble + 200.0), 3 / (cdouble + 200.0), 1.2 / (cdouble + 200.0) +from alltypesorc where cdouble >= -500 and cdouble < -199 order by s1, s2 limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-292.0 NULL 1.0 NULL -0.010273972602739725 -0.00410958904109589 +-290.0 NULL 1.0 NULL -0.010344827586206896 -0.004137931034482759 +-289.0 NULL 1.0 NULL -0.010380622837370242 -0.004152249134948096 +-281.0 NULL 1.0 NULL -0.010676156583629894 -0.004270462633451957 +-279.0 NULL 1.0 NULL -0.010752688172043012 -0.004301075268817204 +-274.0 6888911.518248175 1.0 6888911.518248175 -0.010948905109489052 -0.00437956204379562 +-273.0 6028764.868131869 1.0 6028764.868131869 -0.01098901098901099 -0.004395604395604396 +-257.0 6404096.53307393 1.0 6404096.53307393 -0.011673151750972763 -0.004669260700389105 +-250.0 6583411.236 1.0 6583411.236 -0.012 -0.0048 +-247.0 NULL 1.0 NULL -0.012145748987854251 -0.004858299595141701 +-247.0 -7546669.174089069 1.0 -7546669.174089069 -0.012145748987854251 -0.004858299595141701 +-246.0 NULL 1.0 NULL -0.012195121951219513 -0.004878048780487805 +-237.0 NULL 1.0 NULL -0.012658227848101266 -0.005063291139240506 +-236.0 NULL 1.0 NULL -0.012711864406779662 -0.005084745762711864 +-229.0 7187130.170305677 1.0 7187130.170305677 -0.013100436681222707 -0.005240174672489083 +-228.0 8278779.631578947 1.0 8278779.631578947 -0.013157894736842105 -0.005263157894736842 +-225.0 NULL 1.0 NULL -0.013333333333333334 -0.005333333333333333 +-210.0 -8876320.40952381 1.0 -8876320.40952381 -0.014285714285714285 -0.005714285714285714 +-201.0 NULL 1.0 NULL -0.014925373134328358 -0.005970149253731343 +-199.0 NULL 1.0 NULL -0.01507537688442211 -0.006030150753768844 +-189.0 NULL 1.0 NULL -0.015873015873015872 -0.006349206349206349 +-188.0 NULL 1.0 NULL -0.015957446808510637 -0.006382978723404255 +-184.0 8944852.222826088 1.0 8944852.222826088 -0.016304347826086956 -0.006521739130434782 +-183.0 8993731.196721312 1.0 8993731.196721312 -0.01639344262295082 -0.006557377049180328 +-181.0 NULL 1.0 NULL -0.016574585635359115 -0.0066298342541436465 +-179.0 NULL 1.0 NULL -0.01675977653631285 -0.0067039106145251395 +-169.0 9738774.01775148 1.0 9738774.01775148 -0.01775147928994083 -0.007100591715976331 +-164.0 NULL 1.0 NULL -0.018292682926829267 -0.007317073170731707 +-161.0 NULL 1.0 NULL -0.018633540372670808 -0.007453416149068323 +-154.0 1.2256894519480519E7 1.0 1.2256894519480519E7 -0.01948051948051948 -0.007792207792207792 +-152.0 NULL 1.0 NULL -0.019736842105263157 -0.007894736842105263 +-148.0 NULL 1.0 NULL -0.02027027027027027 -0.008108108108108109 +-140.0 NULL 1.0 NULL -0.02142857142857143 -0.008571428571428572 +-138.0 NULL 1.0 NULL -0.021739130434782608 -0.008695652173913044 +-137.0 NULL 1.0 NULL -0.021897810218978103 -0.00875912408759124 +-132.0 NULL 1.0 NULL -0.022727272727272728 -0.00909090909090909 +-129.0 1.2758548906976745E7 1.0 1.2758548906976745E7 -0.023255813953488372 -0.009302325581395349 +-128.0 NULL 1.0 NULL -0.0234375 -0.009375 +-126.0 NULL 1.0 NULL -0.023809523809523808 -0.009523809523809523 +-126.0 -1.4793867349206349E7 1.0 -1.4793867349206349E7 -0.023809523809523808 -0.009523809523809523 +-116.0 NULL 1.0 NULL -0.02586206896551724 -0.010344827586206896 +-113.0 NULL 1.0 NULL -0.02654867256637168 -0.010619469026548672 +-113.0 -1.6495816690265486E7 1.0 -1.6495816690265486E7 -0.02654867256637168 -0.010619469026548672 +-96.0 NULL 1.0 NULL -0.03125 -0.012499999999999999 +-94.0 -1.9830077510638297E7 1.0 -1.9830077510638297E7 -0.031914893617021274 -0.01276595744680851 +-93.0 NULL 1.0 NULL -0.03225806451612903 -0.012903225806451613 +-77.0 2.4513789038961038E7 1.0 2.4513789038961038E7 -0.03896103896103896 -0.015584415584415584 +-69.0 2.735596747826087E7 1.0 2.735596747826087E7 -0.043478260869565216 -0.017391304347826087 +-62.0 NULL 1.0 NULL -0.04838709677419355 -0.01935483870967742 +-62.0 3.0444544451612905E7 1.0 3.0444544451612905E7 -0.04838709677419355 -0.01935483870967742 +-60.0 NULL 1.0 NULL -0.05 -0.02 +-57.0 -3.27022330877193E7 1.0 -3.27022330877193E7 -0.05263157894736842 -0.021052631578947368 +-49.0 3.35888328367347E7 1.0 3.35888328367347E7 -0.061224489795918366 -0.024489795918367346 +-46.0 3.577940889130435E7 1.0 3.577940889130435E7 -0.06521739130434782 -0.02608695652173913 +-38.0 4.3311916026315786E7 1.0 4.3311916026315786E7 -0.07894736842105263 -0.031578947368421054 +-28.0 5.878045746428572E7 1.0 5.878045746428572E7 -0.10714285714285714 -0.04285714285714286 +-28.0 6.741291985714285E7 1.0 6.741291985714285E7 -0.10714285714285714 -0.04285714285714286 +-21.0 8.988389314285715E7 1.0 8.988389314285715E7 -0.14285714285714285 -0.05714285714285714 +-20.0 NULL 1.0 NULL -0.15 -0.06 +-17.0 NULL 1.0 NULL -0.17647058823529413 -0.07058823529411765 +-12.0 -1.5533560716666666E8 1.0 -1.5533560716666666E8 -0.25 -0.09999999999999999 +-3.0 NULL 1.0 NULL -1.0 -0.39999999999999997 +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL +0.0 NULL NULL NULL NULL NULL diff --git a/ql/src/test/results/clientpositive/tez/vectorization_nested_udf.q.out b/ql/src/test/results/clientpositive/tez/vectorization_nested_udf.q.out new file mode 100644 index 000000000000..bca2d2a7c831 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_nested_udf.q.out @@ -0,0 +1,9 @@ +PREHOOK: query: SELECT SUM(abs(ctinyint)) from alltypesorc +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT SUM(abs(ctinyint)) from alltypesorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +261468 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_not.q.out b/ql/src/test/results/clientpositive/tez/vectorization_not.q.out new file mode 100644 index 000000000000..b5587ba4d064 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_not.q.out @@ -0,0 +1,58 @@ +WARNING: Comparing a bigint and a double may result in a loss of precision. +PREHOOK: query: SELECT AVG(cbigint), + (-(AVG(cbigint))), + (-6432 + AVG(cbigint)), + STDDEV_POP(cbigint), + (-((-6432 + AVG(cbigint)))), + ((-((-6432 + AVG(cbigint)))) + (-6432 + AVG(cbigint))), + VAR_SAMP(cbigint), + (-((-6432 + AVG(cbigint)))), + (-6432 + (-((-6432 + AVG(cbigint))))), + (-((-6432 + AVG(cbigint)))), + ((-((-6432 + AVG(cbigint)))) / (-((-6432 + AVG(cbigint))))), + COUNT(*), + SUM(cfloat), + (VAR_SAMP(cbigint) % STDDEV_POP(cbigint)), + (-(VAR_SAMP(cbigint))), + ((-((-6432 + AVG(cbigint)))) * (-(AVG(cbigint)))), + MIN(ctinyint), + (-(MIN(ctinyint))) +FROM alltypesorc +WHERE (((cstring2 LIKE '%b%') + OR ((79.553 != cint) + OR (NOT(cbigint >= cdouble)))) + OR ((ctinyint >= csmallint) + AND (NOT ((cboolean2 != 1) + OR (3569 != ctinyint))))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT AVG(cbigint), + (-(AVG(cbigint))), + (-6432 + AVG(cbigint)), + STDDEV_POP(cbigint), + (-((-6432 + AVG(cbigint)))), + ((-((-6432 + AVG(cbigint)))) + (-6432 + AVG(cbigint))), + VAR_SAMP(cbigint), + (-((-6432 + AVG(cbigint)))), + (-6432 + (-((-6432 + AVG(cbigint))))), + (-((-6432 + AVG(cbigint)))), + ((-((-6432 + AVG(cbigint)))) / (-((-6432 + AVG(cbigint))))), + COUNT(*), + SUM(cfloat), + (VAR_SAMP(cbigint) % STDDEV_POP(cbigint)), + (-(VAR_SAMP(cbigint))), + ((-((-6432 + AVG(cbigint)))) * (-(AVG(cbigint)))), + MIN(ctinyint), + (-(MIN(ctinyint))) +FROM alltypesorc +WHERE (((cstring2 LIKE '%b%') + OR ((79.553 != cint) + OR (NOT(cbigint >= cdouble)))) + OR ((ctinyint >= csmallint) + AND (NOT ((cboolean2 != 1) + OR (3569 != ctinyint))))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-3.875652215945533E8 3.875652215945533E8 -3.875716535945533E8 1.436387455459401E9 3.875716535945533E8 0.0 2.06347151720204902E18 3.875716535945533E8 3.875652215945533E8 3.875716535945533E8 1.0 10934 -37224.52399241924 1.0517370547117279E9 -2.06347151720204902E18 1.5020929380914048E17 -64 64 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_part.q.out b/ql/src/test/results/clientpositive/tez/vectorization_part.q.out new file mode 100644 index 000000000000..66facc9406fe --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_part.q.out @@ -0,0 +1,72 @@ +PREHOOK: query: CREATE TABLE alltypesorc_part(ctinyint tinyint, csmallint smallint, cint int, cbigint bigint, cfloat float, cdouble double, cstring1 string, cstring2 string, ctimestamp1 timestamp, ctimestamp2 timestamp, cboolean1 boolean, cboolean2 boolean) partitioned by (ds string) STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alltypesorc_part +POSTHOOK: query: CREATE TABLE alltypesorc_part(ctinyint tinyint, csmallint smallint, cint int, cbigint bigint, cfloat float, cdouble double, cstring1 string, cstring2 string, ctimestamp1 timestamp, ctimestamp2 timestamp, cboolean1 boolean, cboolean2 boolean) partitioned by (ds string) STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alltypesorc_part +PREHOOK: query: insert overwrite table alltypesorc_part partition (ds='2011') select * from alltypesorc limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@alltypesorc_part@ds=2011 +POSTHOOK: query: insert overwrite table alltypesorc_part partition (ds='2011') select * from alltypesorc limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@alltypesorc_part@ds=2011 +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2011).ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ] +PREHOOK: query: insert overwrite table alltypesorc_part partition (ds='2012') select * from alltypesorc limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@alltypesorc_part@ds=2012 +POSTHOOK: query: insert overwrite table alltypesorc_part partition (ds='2012') select * from alltypesorc limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@alltypesorc_part@ds=2012 +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ] +POSTHOOK: Lineage: alltypesorc_part PARTITION(ds=2012).ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ] +PREHOOK: query: select count(cdouble), cint from alltypesorc_part where ds='2011' group by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc_part +PREHOOK: Input: default@alltypesorc_part@ds=2011 +#### A masked pattern was here #### +POSTHOOK: query: select count(cdouble), cint from alltypesorc_part where ds='2011' group by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc_part +POSTHOOK: Input: default@alltypesorc_part@ds=2011 +#### A masked pattern was here #### +100 528534767 +PREHOOK: query: select count(*) from alltypesorc_part A join alltypesorc_part B on A.ds=B.ds +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc_part +PREHOOK: Input: default@alltypesorc_part@ds=2011 +PREHOOK: Input: default@alltypesorc_part@ds=2012 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from alltypesorc_part A join alltypesorc_part B on A.ds=B.ds +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc_part +POSTHOOK: Input: default@alltypesorc_part@ds=2011 +POSTHOOK: Input: default@alltypesorc_part@ds=2012 +#### A masked pattern was here #### +20000 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_pushdown.q.out b/ql/src/test/results/clientpositive/tez/vectorization_pushdown.q.out new file mode 100644 index 000000000000..e7b133f68ae4 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_pushdown.q.out @@ -0,0 +1,74 @@ +WARNING: Comparing a bigint and a double may result in a loss of precision. +PREHOOK: query: explain SELECT AVG(cbigint) FROM alltypesorc WHERE cbigint < cdouble +PREHOOK: type: QUERY +POSTHOOK: query: explain SELECT AVG(cbigint) FROM alltypesorc WHERE cbigint < cdouble +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + filterExpr: (cbigint < cdouble) (type: boolean) + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cbigint < cdouble) (type: boolean) + Statistics: Num rows: 4096 Data size: 125745 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cbigint (type: bigint) + outputColumnNames: cbigint + Statistics: Num rows: 4096 Data size: 125745 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: avg(cbigint) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + value expressions: _col0 (type: struct) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: avg(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: double) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +WARNING: Comparing a bigint and a double may result in a loss of precision. +PREHOOK: query: SELECT AVG(cbigint) FROM alltypesorc WHERE cbigint < cdouble +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT AVG(cbigint) FROM alltypesorc WHERE cbigint < cdouble +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-1.4670720493864927E9 diff --git a/ql/src/test/results/clientpositive/tez/vectorized_bucketmapjoin1.q.out b/ql/src/test/results/clientpositive/tez/vectorized_bucketmapjoin1.q.out new file mode 100644 index 000000000000..e00b7bbc1768 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorized_bucketmapjoin1.q.out @@ -0,0 +1,371 @@ +PREHOOK: query: create table vsmb_bucket_1(key int, value string) + CLUSTERED BY (key) + SORTED BY (key) INTO 1 BUCKETS + STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vsmb_bucket_1 +POSTHOOK: query: create table vsmb_bucket_1(key int, value string) + CLUSTERED BY (key) + SORTED BY (key) INTO 1 BUCKETS + STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vsmb_bucket_1 +PREHOOK: query: create table vsmb_bucket_2(key int, value string) + CLUSTERED BY (key) + SORTED BY (key) INTO 1 BUCKETS + STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vsmb_bucket_2 +POSTHOOK: query: create table vsmb_bucket_2(key int, value string) + CLUSTERED BY (key) + SORTED BY (key) INTO 1 BUCKETS + STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vsmb_bucket_2 +PREHOOK: query: create table vsmb_bucket_RC(key int, value string) + CLUSTERED BY (key) + SORTED BY (key) INTO 1 BUCKETS + STORED AS RCFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vsmb_bucket_RC +POSTHOOK: query: create table vsmb_bucket_RC(key int, value string) + CLUSTERED BY (key) + SORTED BY (key) INTO 1 BUCKETS + STORED AS RCFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vsmb_bucket_RC +PREHOOK: query: create table vsmb_bucket_TXT(key int, value string) + CLUSTERED BY (key) + SORTED BY (key) INTO 1 BUCKETS + STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vsmb_bucket_TXT +POSTHOOK: query: create table vsmb_bucket_TXT(key int, value string) + CLUSTERED BY (key) + SORTED BY (key) INTO 1 BUCKETS + STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vsmb_bucket_TXT +PREHOOK: query: insert into table vsmb_bucket_1 select cint, cstring1 from alltypesorc limit 2 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@vsmb_bucket_1 +POSTHOOK: query: insert into table vsmb_bucket_1 select cint, cstring1 from alltypesorc limit 2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@vsmb_bucket_1 +POSTHOOK: Lineage: vsmb_bucket_1.key SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: vsmb_bucket_1.value SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: insert into table vsmb_bucket_2 select cint, cstring1 from alltypesorc limit 2 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@vsmb_bucket_2 +POSTHOOK: query: insert into table vsmb_bucket_2 select cint, cstring1 from alltypesorc limit 2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@vsmb_bucket_2 +POSTHOOK: Lineage: vsmb_bucket_2.key SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: vsmb_bucket_2.value SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: insert into table vsmb_bucket_RC select cint, cstring1 from alltypesorc limit 2 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@vsmb_bucket_rc +POSTHOOK: query: insert into table vsmb_bucket_RC select cint, cstring1 from alltypesorc limit 2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@vsmb_bucket_rc +POSTHOOK: Lineage: vsmb_bucket_rc.key SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: vsmb_bucket_rc.value SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: insert into table vsmb_bucket_TXT select cint, cstring1 from alltypesorc limit 2 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@vsmb_bucket_txt +POSTHOOK: query: insert into table vsmb_bucket_TXT select cint, cstring1 from alltypesorc limit 2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@vsmb_bucket_txt +POSTHOOK: Lineage: vsmb_bucket_txt.key SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: vsmb_bucket_txt.value SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: explain +select /*+MAPJOIN(a)*/ * from vsmb_bucket_1 a join vsmb_bucket_2 b on a.key = b.key +PREHOOK: type: QUERY +POSTHOOK: query: explain +select /*+MAPJOIN(a)*/ * from vsmb_bucket_1 a join vsmb_bucket_2 b on a.key = b.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 2 Data size: 208 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 1 Data size: 104 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 1 Data size: 104 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Execution mode: vectorized + Map 3 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 2 Data size: 208 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 1 Data size: 104 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 1 Data size: 104 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {KEY.reducesinkkey0} {VALUE._col0} + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: string), _col5 (type: int), _col6 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select /*+MAPJOIN(a)*/ * from vsmb_bucket_1 a join vsmb_bucket_2 b on a.key = b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@vsmb_bucket_1 +PREHOOK: Input: default@vsmb_bucket_2 +#### A masked pattern was here #### +POSTHOOK: query: select /*+MAPJOIN(a)*/ * from vsmb_bucket_1 a join vsmb_bucket_2 b on a.key = b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vsmb_bucket_1 +POSTHOOK: Input: default@vsmb_bucket_2 +#### A masked pattern was here #### +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +PREHOOK: query: explain +select /*+MAPJOIN(b)*/ * from vsmb_bucket_1 a join vsmb_bucket_RC b on a.key = b.key +PREHOOK: type: QUERY +POSTHOOK: query: explain +select /*+MAPJOIN(b)*/ * from vsmb_bucket_1 a join vsmb_bucket_RC b on a.key = b.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 2 Data size: 50 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 1 Data size: 25 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 1 Data size: 25 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 3 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 2 Data size: 208 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 1 Data size: 104 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 1 Data size: 104 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {KEY.reducesinkkey0} {VALUE._col0} + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: string), _col5 (type: int), _col6 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select /*+MAPJOIN(b)*/ * from vsmb_bucket_1 a join vsmb_bucket_RC b on a.key = b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@vsmb_bucket_1 +PREHOOK: Input: default@vsmb_bucket_rc +#### A masked pattern was here #### +POSTHOOK: query: select /*+MAPJOIN(b)*/ * from vsmb_bucket_1 a join vsmb_bucket_RC b on a.key = b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vsmb_bucket_1 +POSTHOOK: Input: default@vsmb_bucket_rc +#### A masked pattern was here #### +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +PREHOOK: query: -- RC file does not yet provide the vectorized CommonRCFileformat out-of-the-box +-- explain +-- select /*+MAPJOIN(b)*/ * from vsmb_bucket_RC a join vsmb_bucket_2 b on a.key = b.key; +-- select /*+MAPJOIN(b)*/ * from vsmb_bucket_RC a join vsmb_bucket_2 b on a.key = b.key; + +explain +select /*+MAPJOIN(b)*/ * from vsmb_bucket_1 a join vsmb_bucket_TXT b on a.key = b.key +PREHOOK: type: QUERY +POSTHOOK: query: -- RC file does not yet provide the vectorized CommonRCFileformat out-of-the-box +-- explain +-- select /*+MAPJOIN(b)*/ * from vsmb_bucket_RC a join vsmb_bucket_2 b on a.key = b.key; +-- select /*+MAPJOIN(b)*/ * from vsmb_bucket_RC a join vsmb_bucket_2 b on a.key = b.key; + +explain +select /*+MAPJOIN(b)*/ * from vsmb_bucket_1 a join vsmb_bucket_TXT b on a.key = b.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 2 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 1 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 1 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 3 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 2 Data size: 208 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 1 Data size: 104 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 1 Data size: 104 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {KEY.reducesinkkey0} {VALUE._col0} + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: string), _col5 (type: int), _col6 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select /*+MAPJOIN(b)*/ * from vsmb_bucket_1 a join vsmb_bucket_TXT b on a.key = b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@vsmb_bucket_1 +PREHOOK: Input: default@vsmb_bucket_txt +#### A masked pattern was here #### +POSTHOOK: query: select /*+MAPJOIN(b)*/ * from vsmb_bucket_1 a join vsmb_bucket_TXT b on a.key = b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vsmb_bucket_1 +POSTHOOK: Input: default@vsmb_bucket_txt +#### A masked pattern was here #### +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p +528534767 cvLH6Eat2yFsyy7p 528534767 cvLH6Eat2yFsyy7p diff --git a/ql/src/test/results/clientpositive/tez/vectorized_case.q.out b/ql/src/test/results/clientpositive/tez/vectorized_case.q.out new file mode 100644 index 000000000000..449bdb80e847 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorized_case.q.out @@ -0,0 +1,95 @@ +PREHOOK: query: explain +select + csmallint, + case + when csmallint = 418 then "a" + when csmallint = 12205 then "b" + else "c" + end, + case csmallint + when 418 then "a" + when 12205 then "b" + else "c" + end +from alltypesorc +where csmallint = 418 +or csmallint = 12205 +or csmallint = 10583 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select + csmallint, + case + when csmallint = 418 then "a" + when csmallint = 12205 then "b" + else "c" + end, + case csmallint + when 418 then "a" + when 12205 then "b" + else "c" + end +from alltypesorc +where csmallint = 418 +or csmallint = 12205 +or csmallint = 10583 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: (((csmallint = 418) or (csmallint = 12205)) or (csmallint = 10583)) (type: boolean) + Select Operator + expressions: csmallint (type: smallint), CASE WHEN ((csmallint = 418)) THEN ('a') WHEN ((csmallint = 12205)) THEN ('b') ELSE ('c') END (type: string), CASE (csmallint) WHEN (418) THEN ('a') WHEN (12205) THEN ('b') ELSE ('c') END (type: string) + outputColumnNames: _col0, _col1, _col2 + ListSink + +PREHOOK: query: select + csmallint, + case + when csmallint = 418 then "a" + when csmallint = 12205 then "b" + else "c" + end, + case csmallint + when 418 then "a" + when 12205 then "b" + else "c" + end +from alltypesorc +where csmallint = 418 +or csmallint = 12205 +or csmallint = 10583 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select + csmallint, + case + when csmallint = 418 then "a" + when csmallint = 12205 then "b" + else "c" + end, + case csmallint + when 418 then "a" + when 12205 then "b" + else "c" + end +from alltypesorc +where csmallint = 418 +or csmallint = 12205 +or csmallint = 10583 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +12205 b b +10583 c c +418 a a +12205 b b diff --git a/ql/src/test/results/clientpositive/tez/vectorized_context.q.out b/ql/src/test/results/clientpositive/tez/vectorized_context.q.out new file mode 100644 index 000000000000..c7f056239303 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorized_context.q.out @@ -0,0 +1,338 @@ +PREHOOK: query: create table store(s_store_sk int, s_city string) +stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@store +POSTHOOK: query: create table store(s_store_sk int, s_city string) +stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@store +PREHOOK: query: insert overwrite table store +select cint, cstring1 +from alltypesorc +where cint not in ( +-3728, -563, 762, 6981, 253665376, 528534767, 626923679) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@store +POSTHOOK: query: insert overwrite table store +select cint, cstring1 +from alltypesorc +where cint not in ( +-3728, -563, 762, 6981, 253665376, 528534767, 626923679) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@store +POSTHOOK: Lineage: store.s_city SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: store.s_store_sk SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +PREHOOK: query: create table store_sales(ss_store_sk int, ss_hdemo_sk int, ss_net_profit double) +stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@store_sales +POSTHOOK: query: create table store_sales(ss_store_sk int, ss_hdemo_sk int, ss_net_profit double) +stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@store_sales +PREHOOK: query: insert overwrite table store_sales +select cint, cint, cdouble +from alltypesorc +where cint not in ( +-3728, -563, 762, 6981, 253665376, 528534767, 626923679) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@store_sales +POSTHOOK: query: insert overwrite table store_sales +select cint, cint, cdouble +from alltypesorc +where cint not in ( +-3728, -563, 762, 6981, 253665376, 528534767, 626923679) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@store_sales +POSTHOOK: Lineage: store_sales.ss_hdemo_sk SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_net_profit SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_store_sk SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +PREHOOK: query: create table household_demographics(hd_demo_sk int) +stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@household_demographics +POSTHOOK: query: create table household_demographics(hd_demo_sk int) +stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@household_demographics +PREHOOK: query: insert overwrite table household_demographics +select cint +from alltypesorc +where cint not in ( +-3728, -563, 762, 6981, 253665376, 528534767, 626923679) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@household_demographics +POSTHOOK: query: insert overwrite table household_demographics +select cint +from alltypesorc +where cint not in ( +-3728, -563, 762, 6981, 253665376, 528534767, 626923679) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@household_demographics +POSTHOOK: Lineage: household_demographics.hd_demo_sk SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +PREHOOK: query: explain +select store.s_city, ss_net_profit +from store_sales +JOIN store ON store_sales.ss_store_sk = store.s_store_sk +JOIN household_demographics ON store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +limit 100 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select store.s_city, ss_net_profit +from store_sales +JOIN store ON store_sales.ss_store_sk = store.s_store_sk +JOIN household_demographics ON store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +limit 100 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 2 <- Map 1 (BROADCAST_EDGE), Map 3 (BROADCAST_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: household_demographics + Statistics: Num rows: 6075 Data size: 24300 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: hd_demo_sk is not null (type: boolean) + Statistics: Num rows: 3038 Data size: 12152 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: hd_demo_sk (type: int) + sort order: + + Map-reduce partition columns: hd_demo_sk (type: int) + Statistics: Num rows: 3038 Data size: 12152 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Map 2 + Map Operator Tree: + TableScan + alias: store + Statistics: Num rows: 6075 Data size: 615632 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: s_store_sk is not null (type: boolean) + Statistics: Num rows: 3038 Data size: 307866 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {ss_hdemo_sk} {ss_net_profit} + 1 {s_city} + keys: + 0 ss_store_sk (type: int) + 1 s_store_sk (type: int) + outputColumnNames: _col1, _col2, _col7 + input vertices: + 0 Map 3 + Statistics: Num rows: 3341 Data size: 338652 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {_col2} {_col7} + 1 + keys: + 0 _col1 (type: int) + 1 hd_demo_sk (type: int) + outputColumnNames: _col2, _col7 + input vertices: + 1 Map 1 + Statistics: Num rows: 3675 Data size: 372517 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col7 (type: string), _col2 (type: double) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 3675 Data size: 372517 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 100 + Statistics: Num rows: 100 Data size: 10100 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 100 Data size: 10100 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + Map 3 + Map Operator Tree: + TableScan + alias: store_sales + Statistics: Num rows: 6075 Data size: 72736 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (ss_store_sk is not null and ss_hdemo_sk is not null) (type: boolean) + Statistics: Num rows: 1519 Data size: 18186 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 1519 Data size: 18186 Basic stats: COMPLETE Column stats: NONE + value expressions: ss_hdemo_sk (type: int), ss_net_profit (type: double) + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 100 + Processor Tree: + ListSink + +PREHOOK: query: select store.s_city, ss_net_profit +from store_sales +JOIN store ON store_sales.ss_store_sk = store.s_store_sk +JOIN household_demographics ON store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@household_demographics +PREHOOK: Input: default@store +PREHOOK: Input: default@store_sales +#### A masked pattern was here #### +POSTHOOK: query: select store.s_city, ss_net_profit +from store_sales +JOIN store ON store_sales.ss_store_sk = store.s_store_sk +JOIN household_demographics ON store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@household_demographics +POSTHOOK: Input: default@store +POSTHOOK: Input: default@store_sales +#### A masked pattern was here #### +LFgU5WT87C2yJ4W4YU0r8Pp NULL +v3p153e2bSkGS70v04G NULL +0pOH7A4O8aQ37NuBqn NULL +8ShAFcD734S8Q26WjMwpq0Q NULL +nOF31ehjY7ULCHMf NULL +t32s57Cjt4a250qQgVNAB5T NULL +nvO822k30OaH37Il NULL +M152O NULL +FgJ7Hft6845s1766oyt82q NULL +0ovL2T NULL +3e27C1jTdTQPdvCWi4if NULL +XWIExC7NI3bqu6VhR14g2 NULL +6g482F6IEbD2mKeLE153e0w NULL +2diFRgr78diK6rSl0J NULL +21UE6fJyy NULL +H3bTj310QaL012cPe NULL +7342q5oFQL8QIl7cO NULL +VkXY4IOSO NULL +4K1nnlkt7786Sq8x0ARXtr NULL +m4eSLx4qihVg1e32 NULL +OSBq0b NULL +aKbAu2WJV8HWHU6K1Ukq NULL +LcfhOxSVg68ACRvw1xC7LU NULL +AwVW3sV2gsM NULL +Tqar00A NULL +mC4mr NULL +YHVB0 NULL +2vtmB0qNlHlGV15P1p NULL +2wbgE0Yo1RX82H2sp4f1l5 NULL +BSmA3fAai62QpNjmL66y8d NULL +314nQ6nVj NULL +H8mh48T7 NULL +U616In80F54RI NULL +BuSLb058f2 NULL +OSc0r NULL +75KN62a2iAf0j5Jol77wH7 NULL +66Mx4v NULL +7SchQY2j74BW7dQNy5G5 NULL +FEefA NULL +P2DNeo00PA7DJF0 NULL +SMXqH NULL +6fB40r75kxeX3k10 NULL +AmYxfSOBdJv8B48l0VAeeI NULL +S87OO NULL +0EIL81O NULL +dG8B5PQ3b85U362G6huu NULL +XOypj8 NULL +61eT82N24 NULL +lVfv3fD1jn532h3K67H NULL +J1an665U NULL +Y6P8Ji868U7u8W3X2GHNiOLh NULL +wXbLC0LS2bFf12f1ljC NULL +j0L50J2e82 NULL +8EPG0Xi307qd NULL +04Y1mA17 NULL +lTLWdPg0yM0IgY76s70 NULL +KDr0tMRnCJJIBA84 NULL +71KN0p4NhE4xm4ixm NULL +u6HT8fTw6IgPf2 NULL +7WYO11kWn6fT2pOlh5sTDIwG NULL +Yc6gaH2OFF7cymt8q23Fr NULL +RQbQ5 NULL +75Y6J NULL +eUx01FREb2LD4kle4dpS NULL +T0Y8Vi41EYW4CpQ6Hg1Xg30w NULL +Egf7KV7TeT NULL +LIJuG07tfqoLu8K NULL +uUTO41xk6VyqYPh NULL +aEvOE7hUNO0d67AM3V7BwUCK NULL +8AqHq NULL +gl03UrAU4bWrOvqwwf NULL +NULL NULL +LX6QHG6sEmBAIbA6e6Am24 NULL +i330V4Y0Lm4ajyKqM1X2Y NULL +64K51WMTs NULL +iW12567av NULL +v3U315C36UQ4oEW NULL +niiH6MSNaSk4fRRb74o1y28c NULL +p4WmTkrM NULL +L1Q62u2 NULL +hnrm68NiEQCL4 NULL +fju0XS06MyUS7Nqk8P8 NULL +0VWukLt NULL +642LsMiNArr0ufitL3l7RCU7 NULL +DWNvg304j4KTMEs2174Cy1 NULL +DU1m68i1Q7W3 NULL +44vcS2S5wu684R05fq01fu NULL +eu3X5Qfp4sHv5H NULL +QbdFB1d7vfaM7 NULL +s43i4lU NULL +0pOTqi3O44rEnGQ NULL +32cB3f NULL +c300w5 NULL +w66f63n NULL +iR76SEs2C4V NULL +ss2PoJAipj6B1tn75O NULL +n3ner11ab4 NULL +r17jGvc7gR NULL +5G1Xp277YJRklEO5kHx NULL +B78T0SnxlCe5AQ522GBUf6c6 NULL +PREHOOK: query: drop table store +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@store +PREHOOK: Output: default@store +POSTHOOK: query: drop table store +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@store +POSTHOOK: Output: default@store +PREHOOK: query: drop table store_sales +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@store_sales +PREHOOK: Output: default@store_sales +POSTHOOK: query: drop table store_sales +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@store_sales +POSTHOOK: Output: default@store_sales +PREHOOK: query: drop table household_demographics +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@household_demographics +PREHOOK: Output: default@household_demographics +POSTHOOK: query: drop table household_demographics +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@household_demographics +POSTHOOK: Output: default@household_demographics diff --git a/ql/src/test/results/clientpositive/tez/vectorized_math_funcs.q.out b/ql/src/test/results/clientpositive/tez/vectorized_math_funcs.q.out new file mode 100644 index 000000000000..444b9e04b441 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorized_math_funcs.q.out @@ -0,0 +1,247 @@ +PREHOOK: query: -- Test math functions in vectorized mode to verify they run correctly end-to-end. + +explain +select + cdouble + ,Round(cdouble, 2) + ,Floor(cdouble) + ,Ceil(cdouble) + ,Rand() + ,Rand(98007) + ,Exp(ln(cdouble)) + ,Ln(cdouble) + ,Ln(cfloat) + ,Log10(cdouble) + -- Use log2 as a representative function to test all input types. + ,Log2(cdouble) + -- Use 15601.0 to test zero handling, as there are no zeroes in the table + ,Log2(cdouble - 15601.0) + ,Log2(cfloat) + ,Log2(cbigint) + ,Log2(cint) + ,Log2(csmallint) + ,Log2(ctinyint) + ,Log(2.0, cdouble) + ,Pow(log2(cdouble), 2.0) + ,Power(log2(cdouble), 2.0) + ,Sqrt(cdouble) + ,Sqrt(cbigint) + ,Bin(cbigint) + ,Hex(cdouble) + ,Conv(cbigint, 10, 16) + ,Abs(cdouble) + ,Abs(ctinyint) + ,Pmod(cint, 3) + ,Sin(cdouble) + ,Asin(cdouble) + ,Cos(cdouble) + ,ACos(cdouble) + ,Atan(cdouble) + ,Degrees(cdouble) + ,Radians(cdouble) + ,Positive(cdouble) + ,Positive(cbigint) + ,Negative(cdouble) + ,Sign(cdouble) + ,Sign(cbigint) + -- Test nesting + ,cos(-sin(log(cdouble)) + 3.14159) +from alltypesorc +-- limit output to a reasonably small number of rows +where cbigint % 500 = 0 +-- test use of a math function in the WHERE clause +and sin(cfloat) >= -1.0 +PREHOOK: type: QUERY +POSTHOOK: query: -- Test math functions in vectorized mode to verify they run correctly end-to-end. + +explain +select + cdouble + ,Round(cdouble, 2) + ,Floor(cdouble) + ,Ceil(cdouble) + ,Rand() + ,Rand(98007) + ,Exp(ln(cdouble)) + ,Ln(cdouble) + ,Ln(cfloat) + ,Log10(cdouble) + -- Use log2 as a representative function to test all input types. + ,Log2(cdouble) + -- Use 15601.0 to test zero handling, as there are no zeroes in the table + ,Log2(cdouble - 15601.0) + ,Log2(cfloat) + ,Log2(cbigint) + ,Log2(cint) + ,Log2(csmallint) + ,Log2(ctinyint) + ,Log(2.0, cdouble) + ,Pow(log2(cdouble), 2.0) + ,Power(log2(cdouble), 2.0) + ,Sqrt(cdouble) + ,Sqrt(cbigint) + ,Bin(cbigint) + ,Hex(cdouble) + ,Conv(cbigint, 10, 16) + ,Abs(cdouble) + ,Abs(ctinyint) + ,Pmod(cint, 3) + ,Sin(cdouble) + ,Asin(cdouble) + ,Cos(cdouble) + ,ACos(cdouble) + ,Atan(cdouble) + ,Degrees(cdouble) + ,Radians(cdouble) + ,Positive(cdouble) + ,Positive(cbigint) + ,Negative(cdouble) + ,Sign(cdouble) + ,Sign(cbigint) + -- Test nesting + ,cos(-sin(log(cdouble)) + 3.14159) +from alltypesorc +-- limit output to a reasonably small number of rows +where cbigint % 500 = 0 +-- test use of a math function in the WHERE clause +and sin(cfloat) >= -1.0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: (((cbigint % 500) = 0) and (sin(cfloat) >= -1.0)) (type: boolean) + Select Operator + expressions: cdouble (type: double), round(cdouble, 2) (type: double), floor(cdouble) (type: bigint), ceil(cdouble) (type: bigint), rand() (type: double), rand(98007) (type: double), exp(ln(cdouble)) (type: double), ln(cdouble) (type: double), ln(cfloat) (type: double), log10(cdouble) (type: double), log2(cdouble) (type: double), log2((cdouble - 15601.0)) (type: double), log2(cfloat) (type: double), log2(cbigint) (type: double), log2(cint) (type: double), log2(csmallint) (type: double), log2(ctinyint) (type: double), log(2.0, cdouble) (type: double), power(log2(cdouble), 2.0) (type: double), power(log2(cdouble), 2.0) (type: double), sqrt(cdouble) (type: double), sqrt(cbigint) (type: double), bin(cbigint) (type: string), hex(cdouble) (type: string), conv(cbigint, 10, 16) (type: string), abs(cdouble) (type: double), abs(ctinyint) (type: int), (cint pmod 3) (type: int), sin(cdouble) (type: double), asin(cdouble) (type: double), cos(cdouble) (type: double), acos(cdouble) (type: double), atan(cdouble) (type: double), degrees(cdouble) (type: double), radians(cdouble) (type: double), cdouble (type: double), cbigint (type: bigint), (- cdouble) (type: double), sign(cdouble) (type: double), sign(cbigint) (type: double), cos(((- sin(log(cdouble))) + 3.14159)) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35, _col36, _col37, _col38, _col39, _col40 + ListSink + +PREHOOK: query: select + cdouble + ,Round(cdouble, 2) + ,Floor(cdouble) + ,Ceil(cdouble) + -- Omit rand() from runtime test because it's nondeterministic. + -- ,Rand() + ,Rand(98007) + ,Exp(ln(cdouble)) + ,Ln(cdouble) + ,Ln(cfloat) + ,Log10(cdouble) + -- Use log2 as a representative function to test all input types. + ,Log2(cdouble) + -- Use 15601.0 to test zero handling, as there are no zeroes in the table + ,Log2(cdouble - 15601.0) + ,Log2(cfloat) + ,Log2(cbigint) + ,Log2(cint) + ,Log2(csmallint) + ,Log2(ctinyint) + ,Log(2.0, cdouble) + ,Pow(log2(cdouble), 2.0) + ,Power(log2(cdouble), 2.0) + ,Sqrt(cdouble) + ,Sqrt(cbigint) + ,Bin(cbigint) + ,Hex(cdouble) + ,Conv(cbigint, 10, 16) + ,Abs(cdouble) + ,Abs(ctinyint) + ,Pmod(cint, 3) + ,Sin(cdouble) + ,Asin(cdouble) + ,Cos(cdouble) + ,ACos(cdouble) + ,Atan(cdouble) + ,Degrees(cdouble) + ,Radians(cdouble) + ,Positive(cdouble) + ,Positive(cbigint) + ,Negative(cdouble) + ,Sign(cdouble) + ,Sign(cbigint) + -- Test nesting + ,cos(-sin(log(cdouble)) + 3.14159) +from alltypesorc +-- limit output to a reasonably small number of rows +where cbigint % 500 = 0 +-- test use of a math function in the WHERE clause +and sin(cfloat) >= -1.0 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select + cdouble + ,Round(cdouble, 2) + ,Floor(cdouble) + ,Ceil(cdouble) + -- Omit rand() from runtime test because it's nondeterministic. + -- ,Rand() + ,Rand(98007) + ,Exp(ln(cdouble)) + ,Ln(cdouble) + ,Ln(cfloat) + ,Log10(cdouble) + -- Use log2 as a representative function to test all input types. + ,Log2(cdouble) + -- Use 15601.0 to test zero handling, as there are no zeroes in the table + ,Log2(cdouble - 15601.0) + ,Log2(cfloat) + ,Log2(cbigint) + ,Log2(cint) + ,Log2(csmallint) + ,Log2(ctinyint) + ,Log(2.0, cdouble) + ,Pow(log2(cdouble), 2.0) + ,Power(log2(cdouble), 2.0) + ,Sqrt(cdouble) + ,Sqrt(cbigint) + ,Bin(cbigint) + ,Hex(cdouble) + ,Conv(cbigint, 10, 16) + ,Abs(cdouble) + ,Abs(ctinyint) + ,Pmod(cint, 3) + ,Sin(cdouble) + ,Asin(cdouble) + ,Cos(cdouble) + ,ACos(cdouble) + ,Atan(cdouble) + ,Degrees(cdouble) + ,Radians(cdouble) + ,Positive(cdouble) + ,Positive(cbigint) + ,Negative(cdouble) + ,Sign(cdouble) + ,Sign(cbigint) + -- Test nesting + ,cos(-sin(log(cdouble)) + 3.14159) +from alltypesorc +-- limit output to a reasonably small number of rows +where cbigint % 500 = 0 +-- test use of a math function in the WHERE clause +and sin(cfloat) >= -1.0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-200.0 -200.0 -200 -200 0.8199077823142826 NULL NULL NULL NULL NULL NULL NULL 30.57531565116074 NULL NULL NULL NULL NULL NULL NULL 39998.48747140321 1011111010111000011011101011000 2D3230302E30 5F5C3758 200.0 36 NULL 0.8732972972139946 NaN 0.4871876750070059 NaN -1.5657963684609384 -11459.155902616465 -3.490658503988659 -200.0 1599879000 200.0 -1.0 1.0 NULL +15601.0 15601.0 15601 15601 0.38656833237681376 15601.00000000001 9.65509029374725 NULL 4.193152436852078 13.929350886124324 NULL NULL NULL NULL 13.929350886124324 NULL 13.929350886124324 194.02681610877246 194.02681610877246 124.90396310766124 NULL 1111111111111111111111111111111110010001001101101010100000011000 31353630312E30 FFFFFFFF9136A818 15601.0 38 NULL -0.14856570831397706 NaN 0.9889025383288114 NaN 1.5707322283397571 893871.4561835973 272.2888166036353 15601.0 -1858689000 -15601.0 1.0 -1.0 -0.9740573096878733 +15601.0 15601.0 15601 15601 0.41161398527282966 15601.00000000001 9.65509029374725 NULL 4.193152436852078 13.929350886124324 NULL NULL 29.18993673432575 NULL 13.929350886124324 NULL 13.929350886124324 194.02681610877246 194.02681610877246 124.90396310766124 24747.04022706554 100100100000001011101000000000 31353630312E30 2480BA00 15601.0 5 NULL -0.14856570831397706 NaN 0.9889025383288114 NaN 1.5707322283397571 893871.4561835973 272.2888166036353 15601.0 612416000 -15601.0 1.0 1.0 -0.9740573096878733 +15601.0 15601.0 15601 15601 0.37807863784568585 15601.00000000001 9.65509029374725 3.871201010907891 4.193152436852078 13.929350886124324 NULL 5.584962500721157 NULL NULL 13.929350886124324 5.584962500721157 13.929350886124324 194.02681610877246 194.02681610877246 124.90396310766124 NULL 1111111111111111111111111111111111010000100101111100000100011000 31353630312E30 FFFFFFFFD097C118 15601.0 48 NULL -0.14856570831397706 NaN 0.9889025383288114 NaN 1.5707322283397571 893871.4561835973 272.2888166036353 15601.0 -795361000 -15601.0 1.0 -1.0 -0.9740573096878733 +NULL NULL NULL NULL 0.3336458983920575 NULL NULL 2.0794415416798357 NULL NULL NULL 3.0 29.693388204506274 29.58473549442715 NULL 3.0 NULL NULL NULL NULL 29464.580431426475 110011101111110001011111011100 NULL 33BF17DC NULL 8 1 NULL NULL NULL NULL NULL NULL NULL NULL 868161500 NULL NULL 1.0 NULL +NULL NULL NULL NULL 0.8681331660942196 NULL NULL 2.0794415416798357 NULL NULL NULL 3.0 NULL 29.730832334348488 NULL 3.0 NULL NULL NULL NULL NULL 1111111111111111111111111111111110010000111111111000101010111000 NULL FFFFFFFF90FF8AB8 NULL 8 0 NULL NULL NULL NULL NULL NULL NULL NULL -1862301000 NULL NULL -1.0 NULL +-7196.0 -7196.0 -7196 -7196 0.03951015606275099 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1111111111111111111111111111111110100000010101110101001001110000 2D373139362E30 FFFFFFFFA0575270 7196.0 59 NULL -0.9834787875028149 NaN -0.18102340879563897 NaN -1.5706573607035177 -412300.4293761404 -125.59389297351194 -7196.0 -1604890000 7196.0 -1.0 -1.0 NULL +-7196.0 -7196.0 -7196 -7196 0.9209252022050654 NULL NULL NULL NULL NULL NULL NULL 30.52255693577237 NULL NULL NULL NULL NULL NULL NULL 39273.76987252433 1011011111011111001100101001000 2D373139362E30 5BEF9948 7196.0 21 NULL -0.9834787875028149 NaN -0.18102340879563897 NaN -1.5706573607035177 -412300.4293761404 -125.59389297351194 -7196.0 1542429000 7196.0 -1.0 1.0 NULL +-7196.0 -7196.0 -7196 -7196 0.4533660450429132 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1111111111111111111111111111111110100011011110110101000010110100 2D373139362E30 FFFFFFFFA37B50B4 7196.0 14 NULL -0.9834787875028149 NaN -0.18102340879563897 NaN -1.5706573607035177 -412300.4293761404 -125.59389297351194 -7196.0 -1552199500 7196.0 -1.0 -1.0 NULL +-7196.0 -7196.0 -7196 -7196 0.14567136069921982 NULL NULL 4.07753744390572 NULL NULL NULL 5.882643049361842 NULL NULL NULL 5.882643049361842 NULL NULL NULL NULL NULL 1111111111111111111111111111111110111100001011110011111001111100 2D373139362E30 FFFFFFFFBC2F3E7C 7196.0 59 NULL -0.9834787875028149 NaN -0.18102340879563897 NaN -1.5706573607035177 -412300.4293761404 -125.59389297351194 -7196.0 -1137754500 7196.0 -1.0 -1.0 NULL +-7196.0 -7196.0 -7196 -7196 0.5264452612398715 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1111111111111111111111111111111110010001101110110101111010110100 2D373139362E30 FFFFFFFF91BB5EB4 7196.0 8 NULL -0.9834787875028149 NaN -0.18102340879563897 NaN -1.5706573607035177 -412300.4293761404 -125.59389297351194 -7196.0 -1849991500 7196.0 -1.0 -1.0 NULL +-7196.0 -7196.0 -7196 -7196 0.17837094616515647 NULL NULL 1.6094379124341003 NULL NULL NULL 2.321928094887362 NULL NULL NULL 2.321928094887362 NULL NULL NULL NULL NULL 1111111111111111111111111111111111000011011101110000111100110100 2D373139362E30 FFFFFFFFC3770F34 7196.0 5 NULL -0.9834787875028149 NaN -0.18102340879563897 NaN -1.5706573607035177 -412300.4293761404 -125.59389297351194 -7196.0 -1015607500 7196.0 -1.0 -1.0 NULL +-7196.0 -7196.0 -7196 -7196 0.5456857574763374 NULL NULL NULL NULL NULL NULL NULL 29.62699001935971 NULL NULL NULL NULL NULL NULL NULL 28794.287627930647 110001011010110011101011011000 2D373139362E30 316B3AD8 7196.0 24 NULL -0.9834787875028149 NaN -0.18102340879563897 NaN -1.5706573607035177 -412300.4293761404 -125.59389297351194 -7196.0 829111000 7196.0 -1.0 1.0 NULL +NULL NULL NULL NULL 0.282703740641956 NULL NULL 2.3978952727983707 NULL NULL NULL 3.4594316186372978 30.19990821555368 NULL NULL 3.4594316186372978 NULL NULL NULL NULL 35118.75567271711 1001001100000110001001110011000 NULL 49831398 NULL 11 1 NULL NULL NULL NULL NULL NULL NULL NULL 1233327000 NULL NULL 1.0 NULL diff --git a/ql/src/test/results/clientpositive/tez/vectorized_parquet.q.out b/ql/src/test/results/clientpositive/tez/vectorized_parquet.q.out new file mode 100644 index 000000000000..0607ceae4ecc --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorized_parquet.q.out @@ -0,0 +1,328 @@ +PREHOOK: query: create table if not exists alltypes_parquet ( + cint int, + ctinyint tinyint, + csmallint smallint, + cfloat float, + cdouble double, + cstring1 string) stored as parquet +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alltypes_parquet +POSTHOOK: query: create table if not exists alltypes_parquet ( + cint int, + ctinyint tinyint, + csmallint smallint, + cfloat float, + cdouble double, + cstring1 string) stored as parquet +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alltypes_parquet +PREHOOK: query: insert overwrite table alltypes_parquet + select cint, + ctinyint, + csmallint, + cfloat, + cdouble, + cstring1 + from alltypesorc +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@alltypes_parquet +POSTHOOK: query: insert overwrite table alltypes_parquet + select cint, + ctinyint, + csmallint, + cfloat, + cdouble, + cstring1 + from alltypesorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@alltypes_parquet +POSTHOOK: Lineage: alltypes_parquet.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ] +POSTHOOK: Lineage: alltypes_parquet.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ] +POSTHOOK: Lineage: alltypes_parquet.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: alltypes_parquet.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ] +POSTHOOK: Lineage: alltypes_parquet.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: alltypes_parquet.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ] +PREHOOK: query: explain select * + from alltypes_parquet + where cint = 528534767 + limit 10 +PREHOOK: type: QUERY +POSTHOOK: query: explain select * + from alltypes_parquet + where cint = 528534767 + limit 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypes_parquet + Filter Operator + predicate: (cint = 528534767) (type: boolean) + Select Operator + expressions: 528534767 (type: int), ctinyint (type: tinyint), csmallint (type: smallint), cfloat (type: float), cdouble (type: double), cstring1 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: select * + from alltypes_parquet + where cint = 528534767 + limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypes_parquet +#### A masked pattern was here #### +POSTHOOK: query: select * + from alltypes_parquet + where cint = 528534767 + limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypes_parquet +#### A masked pattern was here #### +528534767 -50 -13326 -50.0 -13326.0 cvLH6Eat2yFsyy7p +528534767 NULL -4213 NULL -4213.0 cvLH6Eat2yFsyy7p +528534767 -28 -15813 -28.0 -15813.0 cvLH6Eat2yFsyy7p +528534767 31 -9566 31.0 -9566.0 cvLH6Eat2yFsyy7p +528534767 -34 15007 -34.0 15007.0 cvLH6Eat2yFsyy7p +528534767 29 7021 29.0 7021.0 cvLH6Eat2yFsyy7p +528534767 31 4963 31.0 4963.0 cvLH6Eat2yFsyy7p +528534767 27 -7824 27.0 -7824.0 cvLH6Eat2yFsyy7p +528534767 -11 -15431 -11.0 -15431.0 cvLH6Eat2yFsyy7p +528534767 61 -15549 61.0 -15549.0 cvLH6Eat2yFsyy7p +PREHOOK: query: explain select ctinyint, + max(cint), + min(csmallint), + count(cstring1), + avg(cfloat), + stddev_pop(cdouble) + from alltypes_parquet + group by ctinyint +PREHOOK: type: QUERY +POSTHOOK: query: explain select ctinyint, + max(cint), + min(csmallint), + count(cstring1), + avg(cfloat), + stddev_pop(cdouble) + from alltypes_parquet + group by ctinyint +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypes_parquet + Statistics: Num rows: 12288 Data size: 73728 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ctinyint (type: tinyint), cint (type: int), csmallint (type: smallint), cstring1 (type: string), cfloat (type: float), cdouble (type: double) + outputColumnNames: ctinyint, cint, csmallint, cstring1, cfloat, cdouble + Statistics: Num rows: 12288 Data size: 73728 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(cint), min(csmallint), count(cstring1), avg(cfloat), stddev_pop(cdouble) + keys: ctinyint (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 12288 Data size: 73728 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint) + sort order: + + Map-reduce partition columns: _col0 (type: tinyint) + Statistics: Num rows: 12288 Data size: 73728 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: int), _col2 (type: smallint), _col3 (type: bigint), _col4 (type: struct), _col5 (type: struct) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0), min(VALUE._col1), count(VALUE._col2), avg(VALUE._col3), stddev_pop(VALUE._col4) + keys: KEY._col0 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 6144 Data size: 36864 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: tinyint), _col1 (type: int), _col2 (type: smallint), _col3 (type: bigint), _col4 (type: double), _col5 (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 6144 Data size: 36864 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6144 Data size: 36864 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select ctinyint, + max(cint), + min(csmallint), + count(cstring1), + avg(cfloat), + stddev_pop(cdouble) + from alltypes_parquet + group by ctinyint +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypes_parquet +#### A masked pattern was here #### +POSTHOOK: query: select ctinyint, + max(cint), + min(csmallint), + count(cstring1), + avg(cfloat), + stddev_pop(cdouble) + from alltypes_parquet + group by ctinyint +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypes_parquet +#### A masked pattern was here #### +NULL 1073418988 -16379 3115 NULL 305051.4870777435 +-64 626923679 -15920 21 -64.0 9254.456539277186 +-63 626923679 -12516 16 -63.0 9263.605837223322 +-62 626923679 -15992 24 -62.0 9004.593091474135 +-61 626923679 -15142 22 -61.0 9357.236187870849 +-60 626923679 -15792 24 -60.0 9892.656196775464 +-59 626923679 -15789 28 -59.0 9829.790704244733 +-58 626923679 -15169 20 -58.0 9549.096672008198 +-57 626923679 -14893 32 -57.0 8572.083461570477 +-56 626923679 -11999 33 -56.0 9490.842152672341 +-55 626923679 -13381 26 -55.0 9157.562103946742 +-54 626923679 -14815 23 -54.0 9614.154026896626 +-53 626923679 -15445 19 -53.0 9387.739325499799 +-52 626923679 -16369 30 -52.0 8625.06871423408 +-51 1073680599 -15734 1028 -51.0 9531.569305177045 +-50 626923679 -14320 27 -50.0 8548.827748002343 +-49 626923679 -14831 23 -49.0 9894.429191738676 +-48 626923679 -15462 26 -48.0 9913.883371354861 +-47 626923679 -16096 19 -47.0 9011.009178780589 +-46 626923679 -12427 21 -46.0 9182.943188188632 +-45 626923679 -15027 21 -45.0 8567.489593562543 +-44 626923679 -15667 21 -44.0 10334.01810499552 +-43 626923679 -15607 27 -43.0 8715.255026265124 +-42 626923679 -16025 14 -42.0 9692.646755759979 +-41 626923679 -12606 21 -41.0 9034.40949481481 +-40 626923679 -14678 23 -40.0 9883.334986561835 +-39 626923679 -15612 19 -39.0 9765.551806305297 +-38 626923679 -14914 28 -38.0 8767.375358291503 +-37 626923679 -14780 17 -37.0 10368.905538788269 +-36 626923679 -16208 23 -36.0 8773.547684436919 +-35 626923679 -16059 23 -35.0 10136.580492864763 +-34 626923679 -15450 29 -34.0 8708.243526705026 +-33 626923679 -12779 21 -33.0 8854.331159704514 +-32 626923679 -15866 25 -32.0 9535.546396775915 +-31 626923679 -15915 22 -31.0 9187.596784112568 +-30 626923679 -14863 23 -30.0 9193.941914019653 +-29 626923679 -14747 26 -29.0 9052.945656011721 +-28 626923679 -15813 20 -28.0 9616.869413270924 +-27 626923679 -14984 20 -27.0 8465.29660255097 +-26 626923679 -15686 15 -26.0 10874.523900405318 +-25 626923679 -15862 24 -25.0 9778.256724727018 +-24 626923679 -16311 26 -24.0 9386.736402961187 +-23 626923679 -16355 36 -23.345263230173213 9401.831290253447 +-22 626923679 -14701 22 -22.0 8809.230165774987 +-21 626923679 -16017 27 -21.0 9480.349236669877 +-20 626923679 -16126 24 -20.0 9868.92268080106 +-19 626923679 -15935 25 -19.0 9967.22240685782 +-18 626923679 -14863 24 -18.0 9638.430684071413 +-17 626923679 -15922 19 -17.0 9944.104273894172 +-16 626923679 -15154 21 -16.0 8884.207393686478 +-15 626923679 -16036 24 -15.0 9450.506254395024 +-14 626923679 -13884 22 -14.0 10125.818731386042 +-13 626923679 -15446 30 -13.0 8907.942987576693 +-12 626923679 -16373 22 -12.0 10173.15707541171 +-11 626923679 -15659 32 -11.0 10453.738567408038 +-10 626923679 -15384 28 -10.0 8850.451610567823 +-9 626923679 -15329 31 -9.0 8999.391457373968 +-8 626923679 -14678 18 -8.0 9976.831992670684 +-7 626923679 -14584 23 -7.0 9946.605446407746 +-6 626923679 -15980 30 -6.0 10262.829252317424 +-5 626923679 -15780 24 -5.0 10599.227726422314 +-4 626923679 -16207 21 -4.0 9682.726604102581 +-3 626923679 -13632 16 -3.0 8836.215573422822 +-2 626923679 -16277 20 -2.0 10800.090249507177 +-1 626923679 -15441 36 -1.0486250072717667 8786.246963933321 +0 626923679 -14254 24 0.0 10057.5018088718 +1 626923679 -14610 30 1.0 10016.486277900643 +2 626923679 -16227 25 2.0 10083.276127543355 +3 626923679 -16339 30 3.0 10483.526375885149 +4 626923679 -15999 29 4.0 9516.189702058042 +5 626923679 -16169 31 5.0 11114.001902469323 +6 626923679 -15948 30 6.0 9644.247255286113 +7 626923679 -15839 25 7.0 10077.151640330823 +8 1070764888 -15778 1034 8.0 9562.355155774725 +9 626923679 -13629 25 9.0 10157.217948808622 +10 626923679 -15887 26 10.0 9104.820520135108 +11 1072654057 -14696 1035 11.0 9531.018991371746 +12 626923679 -14642 18 12.0 9696.038286378725 +13 626923679 -14771 26 13.0 8128.265919972384 +14 626923679 -13367 28 14.0 9074.674998750581 +15 626923679 -16339 28 15.0 9770.473400901916 +16 626923679 -14001 26 16.0 10130.883606275334 +17 626923679 -16109 22 16.73235294865627 1353416.3383574807 +18 626923679 -15779 21 18.0 10820.004053788869 +19 626923679 -16049 21 19.0 9423.560227007669 +20 626923679 -15149 21 20.0 11161.893298093504 +21 626923679 -15931 23 21.0 9683.044864861204 +22 626923679 -16280 26 22.0 9693.155720861765 +23 626923679 -15514 24 23.0 8542.419116415425 +24 626923679 -15086 24 24.0 9661.203790645088 +25 626923679 -11349 23 25.0 8888.959012093468 +26 626923679 -14516 29 26.0 9123.125508880432 +27 626923679 -14965 24 27.0 9802.871860196345 +28 626923679 -14455 20 28.0 9283.289383115296 +29 626923679 -15892 16 29.0 9874.046501817154 +30 626923679 -14111 27 30.0 10066.520234676527 +31 626923679 -15960 24 31.0 10427.970184550613 +32 626923679 -14044 24 32.0 8376.464579403413 +33 626923679 -14642 29 40.61776386607777 1304429.5939037625 +34 626923679 -15059 28 34.0 8756.731536033676 +35 626923679 -16153 27 35.0 10351.008404963042 +36 626923679 -15912 20 36.0 9475.257975138164 +37 626923679 -12081 24 37.0 9017.860034890362 +38 626923679 -15248 29 38.0 9900.256257785535 +39 626923679 -14887 28 39.0 10513.343644635232 +40 626923679 -15861 22 40.0 9283.318678549174 +41 626923679 -13480 21 41.0 9016.291129937847 +42 626923679 -15834 28 42.0 10318.01399719996 +43 626923679 -15703 28 43.0 8757.796089055722 +44 626923679 -11185 16 44.0 9425.076634933797 +45 626923679 -15228 18 45.0 9459.968668643689 +46 626923679 -15187 22 46.0 9685.908173160062 +47 626923679 -16324 22 47.0 9822.220821743611 +48 626923679 -16372 29 48.0 10079.286173063345 +49 626923679 -15923 27 49.0 9850.111848934683 +50 626923679 -16236 21 50.0 9398.176197406601 +51 626923679 -15790 17 51.0 9220.075799194028 +52 626923679 -15450 20 52.0 9261.723648435052 +53 626923679 -16217 30 53.0 9895.247408969733 +54 626923679 -15245 16 54.0 9789.50878424882 +55 626923679 -15887 21 55.0 9826.38569192808 +56 626923679 -12631 21 56.0 8860.917133763547 +57 626923679 -15620 25 57.0 9413.99393840875 +58 626923679 -13627 20 58.0 9083.529665947459 +59 626923679 -16076 17 59.0 10117.44967077967 +60 626923679 -13606 23 60.0 8346.267436552042 +61 626923679 -15894 29 61.0 8785.714950987198 +62 626923679 -14307 17 62.0 9491.752726667326 diff --git a/ql/src/test/results/clientpositive/tez/vectorized_rcfile_columnar.q.out b/ql/src/test/results/clientpositive/tez/vectorized_rcfile_columnar.q.out new file mode 100644 index 000000000000..ee8959be947f --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorized_rcfile_columnar.q.out @@ -0,0 +1,62 @@ +PREHOOK: query: --This query must pass even when vectorized reader is not available for +--RC files. The query must fall back to the non-vector mode and run successfully. + +CREATE table columnTable (key STRING, value STRING) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS + INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@columnTable +POSTHOOK: query: --This query must pass even when vectorized reader is not available for +--RC files. The query must fall back to the non-vector mode and run successfully. + +CREATE table columnTable (key STRING, value STRING) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS + INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@columnTable +PREHOOK: query: FROM src +INSERT OVERWRITE TABLE columnTable SELECT src.key, src.value LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@columntable +POSTHOOK: query: FROM src +INSERT OVERWRITE TABLE columnTable SELECT src.key, src.value LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@columntable +POSTHOOK: Lineage: columntable.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: columntable.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: describe columnTable +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@columntable +POSTHOOK: query: describe columnTable +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@columntable +key string +value string +PREHOOK: query: SELECT key, value FROM columnTable ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@columntable +#### A masked pattern was here #### +POSTHOOK: query: SELECT key, value FROM columnTable ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@columntable +#### A masked pattern was here #### +165 val_165 +238 val_238 +255 val_255 +27 val_27 +278 val_278 +311 val_311 +409 val_409 +484 val_484 +86 val_86 +98 val_98 diff --git a/ql/src/test/results/clientpositive/tez/vectorized_string_funcs.q.out b/ql/src/test/results/clientpositive/tez/vectorized_string_funcs.q.out new file mode 100644 index 000000000000..0463d3160cf7 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorized_string_funcs.q.out @@ -0,0 +1,123 @@ +PREHOOK: query: -- Test string functions in vectorized mode to verify end-to-end functionality. + +explain +select + substr(cstring1, 1, 2) + ,substr(cstring1, 2) + ,lower(cstring1) + ,upper(cstring1) + ,ucase(cstring1) + ,length(cstring1) + ,trim(cstring1) + ,ltrim(cstring1) + ,rtrim(cstring1) + ,concat(cstring1, cstring2) + ,concat('>', cstring1) + ,concat(cstring1, '<') + ,concat(substr(cstring1, 1, 2), substr(cstring2, 1, 2)) +from alltypesorc +-- Limit the number of rows of output to a reasonable amount. +where cbigint % 237 = 0 +-- Test function use in the WHERE clause. +and length(substr(cstring1, 1, 2)) <= 2 +and cstring1 like '%' +PREHOOK: type: QUERY +POSTHOOK: query: -- Test string functions in vectorized mode to verify end-to-end functionality. + +explain +select + substr(cstring1, 1, 2) + ,substr(cstring1, 2) + ,lower(cstring1) + ,upper(cstring1) + ,ucase(cstring1) + ,length(cstring1) + ,trim(cstring1) + ,ltrim(cstring1) + ,rtrim(cstring1) + ,concat(cstring1, cstring2) + ,concat('>', cstring1) + ,concat(cstring1, '<') + ,concat(substr(cstring1, 1, 2), substr(cstring2, 1, 2)) +from alltypesorc +-- Limit the number of rows of output to a reasonable amount. +where cbigint % 237 = 0 +-- Test function use in the WHERE clause. +and length(substr(cstring1, 1, 2)) <= 2 +and cstring1 like '%' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: ((((cbigint % 237) = 0) and (length(substr(cstring1, 1, 2)) <= 2)) and (cstring1 like '%')) (type: boolean) + Select Operator + expressions: substr(cstring1, 1, 2) (type: string), substr(cstring1, 2) (type: string), lower(cstring1) (type: string), upper(cstring1) (type: string), upper(cstring1) (type: string), length(cstring1) (type: int), trim(cstring1) (type: string), ltrim(cstring1) (type: string), rtrim(cstring1) (type: string), concat(cstring1, cstring2) (type: string), concat('>', cstring1) (type: string), concat(cstring1, '<') (type: string), concat(substr(cstring1, 1, 2), substr(cstring2, 1, 2)) (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12 + ListSink + +PREHOOK: query: select + substr(cstring1, 1, 2) + ,substr(cstring1, 2) + ,lower(cstring1) + ,upper(cstring1) + ,ucase(cstring1) + ,length(cstring1) + ,trim(cstring1) + ,ltrim(cstring1) + ,rtrim(cstring1) + ,concat(cstring1, cstring2) + ,concat('>', cstring1) + ,concat(cstring1, '<') + ,concat(substr(cstring1, 1, 2), substr(cstring2, 1, 2)) +from alltypesorc +-- Limit the number of rows of output to a reasonable amount. +where cbigint % 237 = 0 +-- Test function use in the WHERE clause. +and length(substr(cstring1, 1, 2)) <= 2 +and cstring1 like '%' +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select + substr(cstring1, 1, 2) + ,substr(cstring1, 2) + ,lower(cstring1) + ,upper(cstring1) + ,ucase(cstring1) + ,length(cstring1) + ,trim(cstring1) + ,ltrim(cstring1) + ,rtrim(cstring1) + ,concat(cstring1, cstring2) + ,concat('>', cstring1) + ,concat(cstring1, '<') + ,concat(substr(cstring1, 1, 2), substr(cstring2, 1, 2)) +from alltypesorc +-- Limit the number of rows of output to a reasonable amount. +where cbigint % 237 = 0 +-- Test function use in the WHERE clause. +and length(substr(cstring1, 1, 2)) <= 2 +and cstring1 like '%' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +Vi iqXS6s88N1yr14lj7I viqxs6s88n1yr14lj7i VIQXS6S88N1YR14LJ7I VIQXS6S88N1YR14LJ7I 19 ViqXS6s88N1yr14lj7I ViqXS6s88N1yr14lj7I ViqXS6s88N1yr14lj7I ViqXS6s88N1yr14lj7ITh638b67kn8o >ViqXS6s88N1yr14lj7I ViqXS6s88N1yr14lj7I< ViTh +R4 4e7Gf r4e7gf R4E7GF R4E7GF 6 R4e7Gf R4e7Gf R4e7Gf R4e7GfPTBh56R3LS7L13sB4 >R4e7Gf R4e7Gf< R4PT +3g gubGh4J18TV 3gubgh4j18tv 3GUBGH4J18TV 3GUBGH4J18TV 12 3gubGh4J18TV 3gubGh4J18TV 3gubGh4J18TV 3gubGh4J18TVpJucOe4dN4R5XURJW8 >3gubGh4J18TV 3gubGh4J18TV< 3gpJ +EP PCRx8ObNv51rOF epcrx8obnv51rof EPCRX8OBNV51ROF EPCRX8OBNV51ROF 15 EPCRx8ObNv51rOF EPCRx8ObNv51rOF EPCRx8ObNv51rOF EPCRx8ObNv51rOFysaU2Xm11f715L0I35rut2 >EPCRx8ObNv51rOF EPCRx8ObNv51rOF< EPys +8e eiti74gc5m01xyMKSjUIx 8eiti74gc5m01xymksjuix 8EITI74GC5M01XYMKSJUIX 8EITI74GC5M01XYMKSJUIX 22 8eiti74gc5m01xyMKSjUIx 8eiti74gc5m01xyMKSjUIx 8eiti74gc5m01xyMKSjUIx 8eiti74gc5m01xyMKSjUIxI8x87Fm1J4hE8g4CWNo >8eiti74gc5m01xyMKSjUIx 8eiti74gc5m01xyMKSjUIx< 8eI8 +m0 0hbv1516qk8 m0hbv1516qk8 M0HBV1516QK8 M0HBV1516QK8 12 m0hbv1516qk8 m0hbv1516qk8 m0hbv1516qk8 m0hbv1516qk8N8i3sxF54C4x5h0 >m0hbv1516qk8 m0hbv1516qk8< m0N8 +uT T5e2 ut5e2 UT5E2 UT5E2 5 uT5e2 uT5e2 uT5e2 uT5e2SJp57VKYsDtA2r1Xb2H >uT5e2 uT5e2< uTSJ +l3 35W8012cM77E227Ts l35w8012cm77e227ts L35W8012CM77E227TS L35W8012CM77E227TS 18 l35W8012cM77E227Ts l35W8012cM77E227Ts l35W8012cM77E227Ts l35W8012cM77E227TsMH38bE >l35W8012cM77E227Ts l35W8012cM77E227Ts< l3MH +o1 1uPH5EflET5ts1RjSB74 o1uph5eflet5ts1rjsb74 O1UPH5EFLET5TS1RJSB74 O1UPH5EFLET5TS1RJSB74 21 o1uPH5EflET5ts1RjSB74 o1uPH5EflET5ts1RjSB74 o1uPH5EflET5ts1RjSB74 o1uPH5EflET5ts1RjSB74a1U3DRA788kW7I0UTF203 >o1uPH5EflET5ts1RjSB74 o1uPH5EflET5ts1RjSB74< o1a1 +Ix x8dXlDbC3S44L1FQJqpwa ix8dxldbc3s44l1fqjqpwa IX8DXLDBC3S44L1FQJQPWA IX8DXLDBC3S44L1FQJQPWA 22 Ix8dXlDbC3S44L1FQJqpwa Ix8dXlDbC3S44L1FQJqpwa Ix8dXlDbC3S44L1FQJqpwa Ix8dXlDbC3S44L1FQJqpwa8wQR4X28CiccBVXGqPL7 >Ix8dXlDbC3S44L1FQJqpwa Ix8dXlDbC3S44L1FQJqpwa< Ix8w +OT Tn0Dj2HiBi05Baq1Xt otn0dj2hibi05baq1xt OTN0DJ2HIBI05BAQ1XT OTN0DJ2HIBI05BAQ1XT 19 OTn0Dj2HiBi05Baq1Xt OTn0Dj2HiBi05Baq1Xt OTn0Dj2HiBi05Baq1Xt OTn0Dj2HiBi05Baq1XtAoQ21J1lQ27kYSmfA >OTn0Dj2HiBi05Baq1Xt OTn0Dj2HiBi05Baq1Xt< OTAo +a0 0P3sn1ihxJCsTLDb a0p3sn1ihxjcstldb A0P3SN1IHXJCSTLDB A0P3SN1IHXJCSTLDB 17 a0P3sn1ihxJCsTLDb a0P3sn1ihxJCsTLDb a0P3sn1ihxJCsTLDb a0P3sn1ihxJCsTLDbfT4Jlw38k8kmd6Dt1wv >a0P3sn1ihxJCsTLDb a0P3sn1ihxJCsTLDb< a0fT diff --git a/ql/src/test/results/clientpositive/vector_distinct_2.q.out b/ql/src/test/results/clientpositive/vector_distinct_2.q.out new file mode 100644 index 000000000000..0019f954ff2d --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_distinct_2.q.out @@ -0,0 +1,1859 @@ +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select distinct s, t from vectortab2korc +PREHOOK: type: QUERY +POSTHOOK: query: explain +select distinct s, t from vectortab2korc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: s (type: string), t (type: tinyint) + outputColumnNames: s, t + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: s (type: string), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: tinyint) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: tinyint) + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: tinyint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select distinct s, t from vectortab2korc +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select distinct s, t from vectortab2korc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### + NULL + -116 + -114 + -113 + -108 + -107 + -104 + -91 + -87 + -86 + -85 + -84 + -83 + -80 + -75 + -72 + -66 + -53 + -46 + -38 + -36 + -33 + -29 + -28 + -25 + -24 + -19 + -16 + -14 + -12 + -10 + -5 + -4 + -2 + 0 + 4 + 5 + 8 + 12 + 16 + 19 + 22 + 23 + 26 + 29 + 31 + 37 + 42 + 46 + 48 + 54 + 57 + 59 + 60 + 62 + 64 + 79 + 84 + 87 + 88 + 90 + 91 + 96 + 97 + 102 + 103 + 105 + 109 + 112 + 113 + 114 + 123 +american history NULL +american history -127 +american history -119 +american history -116 +american history -112 +american history -110 +american history -108 +american history -105 +american history -103 +american history -101 +american history -95 +american history -94 +american history -92 +american history -90 +american history -89 +american history -87 +american history -86 +american history -81 +american history -80 +american history -73 +american history -66 +american history -60 +american history -59 +american history -55 +american history -53 +american history -50 +american history -48 +american history -47 +american history -34 +american history -30 +american history -28 +american history -27 +american history -26 +american history -19 +american history -18 +american history -17 +american history -15 +american history -11 +american history -9 +american history 0 +american history 5 +american history 20 +american history 22 +american history 29 +american history 31 +american history 33 +american history 38 +american history 39 +american history 40 +american history 42 +american history 46 +american history 48 +american history 54 +american history 56 +american history 60 +american history 68 +american history 69 +american history 71 +american history 72 +american history 74 +american history 77 +american history 79 +american history 82 +american history 84 +american history 89 +american history 96 +american history 100 +american history 103 +american history 111 +american history 119 +american history 122 +american history 123 +biology NULL +biology -127 +biology -121 +biology -120 +biology -119 +biology -104 +biology -101 +biology -98 +biology -97 +biology -96 +biology -92 +biology -90 +biology -86 +biology -85 +biology -83 +biology -82 +biology -81 +biology -79 +biology -72 +biology -67 +biology -66 +biology -59 +biology -57 +biology -54 +biology -53 +biology -49 +biology -46 +biology -44 +biology -42 +biology -40 +biology -36 +biology -35 +biology -31 +biology -20 +biology -19 +biology -16 +biology -13 +biology -7 +biology -6 +biology -5 +biology 0 +biology 2 +biology 3 +biology 4 +biology 5 +biology 6 +biology 7 +biology 8 +biology 12 +biology 18 +biology 27 +biology 30 +biology 34 +biology 35 +biology 36 +biology 41 +biology 47 +biology 51 +biology 52 +biology 54 +biology 55 +biology 57 +biology 64 +biology 83 +biology 86 +biology 89 +biology 90 +biology 91 +biology 100 +biology 111 +biology 113 +biology 114 +biology 115 +biology 117 +biology 120 +biology 124 +chemistry NULL +chemistry -127 +chemistry -125 +chemistry -122 +chemistry -117 +chemistry -115 +chemistry -110 +chemistry -109 +chemistry -108 +chemistry -103 +chemistry -101 +chemistry -98 +chemistry -95 +chemistry -91 +chemistry -90 +chemistry -89 +chemistry -81 +chemistry -75 +chemistry -68 +chemistry -61 +chemistry -59 +chemistry -57 +chemistry -56 +chemistry -52 +chemistry -46 +chemistry -44 +chemistry -40 +chemistry -37 +chemistry -33 +chemistry -31 +chemistry -30 +chemistry -26 +chemistry -23 +chemistry -8 +chemistry -3 +chemistry -2 +chemistry 3 +chemistry 4 +chemistry 8 +chemistry 14 +chemistry 16 +chemistry 19 +chemistry 25 +chemistry 27 +chemistry 32 +chemistry 37 +chemistry 39 +chemistry 41 +chemistry 46 +chemistry 51 +chemistry 55 +chemistry 64 +chemistry 74 +chemistry 75 +chemistry 78 +chemistry 79 +chemistry 83 +chemistry 88 +chemistry 90 +chemistry 91 +chemistry 96 +chemistry 102 +chemistry 104 +chemistry 110 +chemistry 113 +chemistry 116 +chemistry 124 +chemistry 126 +debate NULL +debate -127 +debate -117 +debate -114 +debate -108 +debate -106 +debate -98 +debate -96 +debate -95 +debate -88 +debate -87 +debate -86 +debate -85 +debate -82 +debate -72 +debate -70 +debate -69 +debate -67 +debate -57 +debate -52 +debate -50 +debate -47 +debate -46 +debate -41 +debate -35 +debate -32 +debate -29 +debate -28 +debate -27 +debate -26 +debate -24 +debate -15 +debate -12 +debate -3 +debate 5 +debate 17 +debate 19 +debate 20 +debate 26 +debate 34 +debate 36 +debate 41 +debate 42 +debate 52 +debate 54 +debate 56 +debate 63 +debate 67 +debate 68 +debate 69 +debate 70 +debate 73 +debate 75 +debate 77 +debate 85 +debate 87 +debate 89 +debate 90 +debate 93 +debate 94 +debate 113 +debate 124 +education NULL +education -127 +education -125 +education -113 +education -111 +education -109 +education -105 +education -101 +education -98 +education -96 +education -93 +education -92 +education -89 +education -87 +education -86 +education -77 +education -72 +education -69 +education -64 +education -61 +education -55 +education -52 +education -44 +education -43 +education -38 +education -37 +education -36 +education -34 +education -28 +education -24 +education -15 +education -13 +education -9 +education 4 +education 12 +education 17 +education 27 +education 33 +education 34 +education 35 +education 38 +education 41 +education 45 +education 46 +education 49 +education 51 +education 53 +education 59 +education 61 +education 66 +education 73 +education 75 +education 77 +education 81 +education 82 +education 85 +education 89 +education 95 +education 102 +education 103 +education 110 +education 111 +education 113 +education 114 +education 116 +education 119 +education 125 +forestry NULL +forestry -126 +forestry -118 +forestry -116 +forestry -109 +forestry -105 +forestry -98 +forestry -95 +forestry -94 +forestry -83 +forestry -81 +forestry -80 +forestry -79 +forestry -77 +forestry -74 +forestry -73 +forestry -68 +forestry -58 +forestry -51 +forestry -50 +forestry -49 +forestry -42 +forestry -34 +forestry -23 +forestry -12 +forestry -11 +forestry -10 +forestry -8 +forestry -3 +forestry -1 +forestry 0 +forestry 7 +forestry 8 +forestry 11 +forestry 12 +forestry 19 +forestry 29 +forestry 31 +forestry 35 +forestry 37 +forestry 39 +forestry 40 +forestry 44 +forestry 45 +forestry 50 +forestry 51 +forestry 52 +forestry 55 +forestry 56 +forestry 71 +forestry 78 +forestry 79 +forestry 87 +forestry 90 +forestry 93 +forestry 94 +forestry 97 +forestry 102 +forestry 106 +forestry 107 +forestry 111 +forestry 115 +forestry 117 +forestry 120 +geology NULL +geology -124 +geology -117 +geology -115 +geology -112 +geology -108 +geology -106 +geology -101 +geology -100 +geology -96 +geology -94 +geology -84 +geology -82 +geology -80 +geology -79 +geology -75 +geology -72 +geology -68 +geology -59 +geology -57 +geology -54 +geology -53 +geology -50 +geology -48 +geology -35 +geology -34 +geology -32 +geology -31 +geology -30 +geology -23 +geology -21 +geology -18 +geology -16 +geology 1 +geology 4 +geology 5 +geology 6 +geology 9 +geology 14 +geology 18 +geology 21 +geology 23 +geology 26 +geology 28 +geology 31 +geology 33 +geology 37 +geology 38 +geology 49 +geology 58 +geology 72 +geology 82 +geology 84 +geology 86 +geology 89 +geology 92 +geology 93 +geology 95 +geology 100 +geology 101 +geology 102 +geology 116 +geology 121 +geology 124 +geology 127 +history NULL +history -125 +history -124 +history -105 +history -104 +history -103 +history -101 +history -98 +history -91 +history -90 +history -89 +history -79 +history -75 +history -67 +history -61 +history -58 +history -54 +history -42 +history -37 +history -34 +history -26 +history -24 +history -19 +history -18 +history -15 +history -12 +history -8 +history -5 +history -1 +history 1 +history 2 +history 7 +history 14 +history 18 +history 25 +history 50 +history 51 +history 52 +history 57 +history 58 +history 59 +history 61 +history 62 +history 71 +history 72 +history 73 +history 75 +history 78 +history 84 +history 92 +history 95 +history 98 +history 100 +history 108 +history 112 +history 113 +history 114 +history 126 +history 127 +industrial engineering NULL +industrial engineering -124 +industrial engineering -110 +industrial engineering -101 +industrial engineering -98 +industrial engineering -96 +industrial engineering -87 +industrial engineering -85 +industrial engineering -72 +industrial engineering -68 +industrial engineering -65 +industrial engineering -58 +industrial engineering -57 +industrial engineering -53 +industrial engineering -49 +industrial engineering -47 +industrial engineering -43 +industrial engineering -38 +industrial engineering -35 +industrial engineering -31 +industrial engineering -30 +industrial engineering -28 +industrial engineering -22 +industrial engineering -11 +industrial engineering -7 +industrial engineering -6 +industrial engineering -5 +industrial engineering -1 +industrial engineering 3 +industrial engineering 7 +industrial engineering 27 +industrial engineering 29 +industrial engineering 32 +industrial engineering 33 +industrial engineering 36 +industrial engineering 42 +industrial engineering 43 +industrial engineering 48 +industrial engineering 54 +industrial engineering 58 +industrial engineering 59 +industrial engineering 70 +industrial engineering 73 +industrial engineering 78 +industrial engineering 79 +industrial engineering 83 +industrial engineering 95 +industrial engineering 96 +industrial engineering 98 +industrial engineering 99 +industrial engineering 102 +industrial engineering 104 +industrial engineering 105 +industrial engineering 106 +industrial engineering 113 +industrial engineering 126 +joggying NULL +joggying -125 +joggying -121 +joggying -119 +joggying -110 +joggying -101 +joggying -100 +joggying -80 +joggying -79 +joggying -77 +joggying -76 +joggying -73 +joggying -69 +joggying -64 +joggying -62 +joggying -61 +joggying -57 +joggying -55 +joggying -48 +joggying -47 +joggying -43 +joggying -40 +joggying -30 +joggying -27 +joggying -24 +joggying -15 +joggying -14 +joggying -8 +joggying -1 +joggying 13 +joggying 20 +joggying 25 +joggying 26 +joggying 27 +joggying 28 +joggying 37 +joggying 43 +joggying 46 +joggying 48 +joggying 49 +joggying 52 +joggying 57 +joggying 61 +joggying 62 +joggying 69 +joggying 70 +joggying 72 +joggying 74 +joggying 80 +joggying 85 +joggying 87 +joggying 92 +joggying 93 +joggying 94 +joggying 97 +joggying 99 +joggying 104 +joggying 105 +joggying 118 +joggying 119 +joggying 121 +joggying 123 +joggying 125 +kindergarten NULL +kindergarten -126 +kindergarten -113 +kindergarten -106 +kindergarten -98 +kindergarten -95 +kindergarten -92 +kindergarten -79 +kindergarten -78 +kindergarten -75 +kindergarten -74 +kindergarten -69 +kindergarten -60 +kindergarten -59 +kindergarten -57 +kindergarten -54 +kindergarten -42 +kindergarten -40 +kindergarten -26 +kindergarten -18 +kindergarten -8 +kindergarten 10 +kindergarten 16 +kindergarten 18 +kindergarten 19 +kindergarten 23 +kindergarten 29 +kindergarten 37 +kindergarten 46 +kindergarten 48 +kindergarten 51 +kindergarten 52 +kindergarten 55 +kindergarten 61 +kindergarten 66 +kindergarten 69 +kindergarten 82 +kindergarten 84 +kindergarten 85 +kindergarten 86 +kindergarten 90 +kindergarten 92 +kindergarten 96 +kindergarten 100 +kindergarten 101 +kindergarten 109 +kindergarten 111 +kindergarten 116 +kindergarten 118 +kindergarten 120 +kindergarten 122 +kindergarten 127 +linguistics NULL +linguistics -127 +linguistics -122 +linguistics -113 +linguistics -101 +linguistics -90 +linguistics -89 +linguistics -87 +linguistics -86 +linguistics -78 +linguistics -77 +linguistics -73 +linguistics -70 +linguistics -69 +linguistics -68 +linguistics -67 +linguistics -53 +linguistics -52 +linguistics -41 +linguistics -34 +linguistics -28 +linguistics -22 +linguistics -20 +linguistics -17 +linguistics -16 +linguistics -14 +linguistics -13 +linguistics -12 +linguistics -6 +linguistics -4 +linguistics -2 +linguistics 0 +linguistics 1 +linguistics 3 +linguistics 6 +linguistics 7 +linguistics 10 +linguistics 11 +linguistics 18 +linguistics 33 +linguistics 37 +linguistics 42 +linguistics 44 +linguistics 50 +linguistics 53 +linguistics 64 +linguistics 67 +linguistics 72 +linguistics 73 +linguistics 83 +linguistics 89 +linguistics 93 +linguistics 96 +linguistics 98 +linguistics 100 +linguistics 113 +linguistics 115 +linguistics 123 +linguistics 125 +linguistics 126 +mathematics NULL +mathematics -127 +mathematics -124 +mathematics -122 +mathematics -120 +mathematics -118 +mathematics -117 +mathematics -103 +mathematics -101 +mathematics -100 +mathematics -99 +mathematics -98 +mathematics -95 +mathematics -91 +mathematics -88 +mathematics -81 +mathematics -79 +mathematics -77 +mathematics -75 +mathematics -66 +mathematics -57 +mathematics -52 +mathematics -50 +mathematics -49 +mathematics -46 +mathematics -45 +mathematics -40 +mathematics -33 +mathematics -31 +mathematics -21 +mathematics -19 +mathematics -7 +mathematics 0 +mathematics 3 +mathematics 6 +mathematics 10 +mathematics 22 +mathematics 23 +mathematics 25 +mathematics 32 +mathematics 35 +mathematics 38 +mathematics 39 +mathematics 46 +mathematics 48 +mathematics 50 +mathematics 53 +mathematics 55 +mathematics 56 +mathematics 58 +mathematics 59 +mathematics 62 +mathematics 63 +mathematics 65 +mathematics 76 +mathematics 79 +mathematics 80 +mathematics 82 +mathematics 87 +mathematics 92 +mathematics 98 +mathematics 102 +mathematics 107 +mathematics 111 +mathematics 114 +nap time NULL +nap time -122 +nap time -119 +nap time -115 +nap time -113 +nap time -104 +nap time -102 +nap time -101 +nap time -91 +nap time -85 +nap time -71 +nap time -61 +nap time -54 +nap time -49 +nap time -45 +nap time -41 +nap time -31 +nap time -15 +nap time -6 +nap time -4 +nap time -2 +nap time 0 +nap time 3 +nap time 6 +nap time 16 +nap time 23 +nap time 27 +nap time 31 +nap time 35 +nap time 42 +nap time 51 +nap time 52 +nap time 56 +nap time 62 +nap time 69 +nap time 70 +nap time 73 +nap time 76 +nap time 80 +nap time 89 +nap time 90 +nap time 92 +nap time 93 +nap time 98 +nap time 103 +nap time 104 +nap time 105 +nap time 107 +nap time 108 +nap time 118 +opthamology NULL +opthamology -122 +opthamology -121 +opthamology -118 +opthamology -111 +opthamology -99 +opthamology -97 +opthamology -91 +opthamology -86 +opthamology -82 +opthamology -79 +opthamology -78 +opthamology -77 +opthamology -75 +opthamology -73 +opthamology -63 +opthamology -59 +opthamology -55 +opthamology -49 +opthamology -48 +opthamology -44 +opthamology -35 +opthamology -33 +opthamology -30 +opthamology -28 +opthamology -27 +opthamology -24 +opthamology -22 +opthamology -18 +opthamology -17 +opthamology -14 +opthamology -8 +opthamology -5 +opthamology 4 +opthamology 5 +opthamology 21 +opthamology 39 +opthamology 41 +opthamology 48 +opthamology 49 +opthamology 52 +opthamology 53 +opthamology 55 +opthamology 68 +opthamology 69 +opthamology 74 +opthamology 76 +opthamology 77 +opthamology 79 +opthamology 81 +opthamology 84 +opthamology 87 +opthamology 88 +opthamology 89 +opthamology 92 +opthamology 96 +opthamology 97 +opthamology 100 +opthamology 104 +opthamology 117 +opthamology 120 +opthamology 122 +opthamology 125 +opthamology 127 +philosophy NULL +philosophy -125 +philosophy -121 +philosophy -119 +philosophy -115 +philosophy -110 +philosophy -105 +philosophy -103 +philosophy -100 +philosophy -99 +philosophy -95 +philosophy -93 +philosophy -92 +philosophy -80 +philosophy -78 +philosophy -77 +philosophy -69 +philosophy -68 +philosophy -61 +philosophy -56 +philosophy -55 +philosophy -53 +philosophy -52 +philosophy -51 +philosophy -50 +philosophy -40 +philosophy -39 +philosophy -27 +philosophy -26 +philosophy -25 +philosophy -17 +philosophy -11 +philosophy 8 +philosophy 20 +philosophy 21 +philosophy 22 +philosophy 29 +philosophy 31 +philosophy 34 +philosophy 38 +philosophy 41 +philosophy 43 +philosophy 45 +philosophy 48 +philosophy 64 +philosophy 67 +philosophy 68 +philosophy 73 +philosophy 83 +philosophy 96 +philosophy 98 +philosophy 104 +philosophy 108 +philosophy 117 +philosophy 118 +philosophy 120 +philosophy 123 +quiet hour NULL +quiet hour -127 +quiet hour -123 +quiet hour -121 +quiet hour -119 +quiet hour -114 +quiet hour -111 +quiet hour -105 +quiet hour -104 +quiet hour -88 +quiet hour -87 +quiet hour -76 +quiet hour -73 +quiet hour -68 +quiet hour -66 +quiet hour -65 +quiet hour -56 +quiet hour -55 +quiet hour -52 +quiet hour -50 +quiet hour -48 +quiet hour -45 +quiet hour -42 +quiet hour -41 +quiet hour -33 +quiet hour -31 +quiet hour -25 +quiet hour -14 +quiet hour -8 +quiet hour -1 +quiet hour 0 +quiet hour 6 +quiet hour 7 +quiet hour 8 +quiet hour 13 +quiet hour 21 +quiet hour 23 +quiet hour 29 +quiet hour 30 +quiet hour 33 +quiet hour 35 +quiet hour 38 +quiet hour 43 +quiet hour 58 +quiet hour 60 +quiet hour 66 +quiet hour 71 +quiet hour 74 +quiet hour 80 +quiet hour 82 +quiet hour 84 +quiet hour 93 +quiet hour 98 +quiet hour 110 +quiet hour 112 +quiet hour 115 +quiet hour 120 +quiet hour 121 +quiet hour 123 +religion NULL +religion -125 +religion -106 +religion -104 +religion -94 +religion -93 +religion -81 +religion -78 +religion -77 +religion -76 +religion -71 +religion -70 +religion -69 +religion -64 +religion -62 +religion -60 +religion -56 +religion -44 +religion -42 +religion -41 +religion -38 +religion -35 +religion -32 +religion -29 +religion -28 +religion -26 +religion -24 +religion -23 +religion -9 +religion -7 +religion -3 +religion 0 +religion 2 +religion 4 +religion 5 +religion 15 +religion 17 +religion 29 +religion 31 +religion 38 +religion 44 +religion 45 +religion 49 +religion 52 +religion 54 +religion 58 +religion 67 +religion 70 +religion 73 +religion 74 +religion 76 +religion 78 +religion 82 +religion 92 +religion 93 +religion 96 +religion 97 +religion 102 +religion 103 +religion 106 +religion 107 +religion 110 +religion 115 +religion 120 +religion 123 +religion 124 +study skills NULL +study skills -127 +study skills -126 +study skills -117 +study skills -107 +study skills -106 +study skills -100 +study skills -88 +study skills -86 +study skills -82 +study skills -81 +study skills -76 +study skills -73 +study skills -65 +study skills -52 +study skills -36 +study skills -33 +study skills -27 +study skills -26 +study skills -22 +study skills -17 +study skills -14 +study skills -13 +study skills -6 +study skills -5 +study skills -4 +study skills -3 +study skills -1 +study skills 2 +study skills 3 +study skills 18 +study skills 21 +study skills 23 +study skills 25 +study skills 28 +study skills 29 +study skills 30 +study skills 35 +study skills 39 +study skills 40 +study skills 47 +study skills 49 +study skills 50 +study skills 54 +study skills 55 +study skills 58 +study skills 62 +study skills 63 +study skills 66 +study skills 68 +study skills 72 +study skills 77 +study skills 80 +study skills 83 +study skills 92 +study skills 95 +study skills 96 +study skills 101 +study skills 106 +study skills 107 +study skills 110 +study skills 115 +study skills 119 +study skills 123 +topology NULL +topology -122 +topology -116 +topology -106 +topology -105 +topology -102 +topology -98 +topology -96 +topology -88 +topology -86 +topology -78 +topology -74 +topology -71 +topology -60 +topology -58 +topology -57 +topology -50 +topology -44 +topology -42 +topology -41 +topology -36 +topology -32 +topology -31 +topology -25 +topology -21 +topology -5 +topology -1 +topology 7 +topology 11 +topology 13 +topology 14 +topology 18 +topology 26 +topology 30 +topology 38 +topology 41 +topology 42 +topology 47 +topology 50 +topology 52 +topology 54 +topology 55 +topology 58 +topology 59 +topology 61 +topology 63 +topology 67 +topology 69 +topology 71 +topology 80 +topology 81 +topology 83 +topology 86 +topology 87 +topology 94 +topology 105 +topology 107 +topology 119 +topology 121 +topology 127 +undecided NULL +undecided -120 +undecided -118 +undecided -117 +undecided -116 +undecided -115 +undecided -114 +undecided -112 +undecided -105 +undecided -104 +undecided -96 +undecided -93 +undecided -90 +undecided -84 +undecided -83 +undecided -78 +undecided -69 +undecided -62 +undecided -53 +undecided -52 +undecided -51 +undecided -43 +undecided -41 +undecided -29 +undecided -28 +undecided -23 +undecided -19 +undecided -13 +undecided -10 +undecided -8 +undecided 0 +undecided 1 +undecided 7 +undecided 11 +undecided 13 +undecided 14 +undecided 27 +undecided 30 +undecided 33 +undecided 37 +undecided 45 +undecided 47 +undecided 50 +undecided 51 +undecided 56 +undecided 69 +undecided 76 +undecided 95 +undecided 97 +undecided 98 +undecided 111 +undecided 114 +undecided 119 +undecided 123 +undecided 124 +values clariffication NULL +values clariffication -123 +values clariffication -119 +values clariffication -114 +values clariffication -109 +values clariffication -108 +values clariffication -107 +values clariffication -105 +values clariffication -100 +values clariffication -98 +values clariffication -97 +values clariffication -95 +values clariffication -92 +values clariffication -90 +values clariffication -81 +values clariffication -75 +values clariffication -70 +values clariffication -69 +values clariffication -67 +values clariffication -63 +values clariffication -62 +values clariffication -60 +values clariffication -55 +values clariffication -51 +values clariffication -50 +values clariffication -48 +values clariffication -46 +values clariffication -42 +values clariffication -40 +values clariffication -38 +values clariffication -37 +values clariffication -31 +values clariffication -28 +values clariffication -8 +values clariffication -6 +values clariffication -5 +values clariffication 4 +values clariffication 8 +values clariffication 9 +values clariffication 10 +values clariffication 12 +values clariffication 14 +values clariffication 15 +values clariffication 21 +values clariffication 23 +values clariffication 30 +values clariffication 32 +values clariffication 42 +values clariffication 50 +values clariffication 53 +values clariffication 56 +values clariffication 57 +values clariffication 62 +values clariffication 70 +values clariffication 74 +values clariffication 80 +values clariffication 85 +values clariffication 92 +values clariffication 93 +values clariffication 96 +values clariffication 97 +values clariffication 98 +values clariffication 108 +values clariffication 118 +values clariffication 120 +values clariffication 122 +values clariffication 124 +values clariffication 126 +values clariffication 127 +wind surfing NULL +wind surfing -124 +wind surfing -121 +wind surfing -117 +wind surfing -116 +wind surfing -113 +wind surfing -111 +wind surfing -104 +wind surfing -102 +wind surfing -99 +wind surfing -98 +wind surfing -96 +wind surfing -83 +wind surfing -80 +wind surfing -78 +wind surfing -71 +wind surfing -65 +wind surfing -60 +wind surfing -57 +wind surfing -56 +wind surfing -42 +wind surfing -39 +wind surfing -38 +wind surfing -34 +wind surfing -31 +wind surfing -30 +wind surfing -21 +wind surfing -18 +wind surfing -14 +wind surfing -12 +wind surfing -8 +wind surfing -6 +wind surfing -2 +wind surfing 5 +wind surfing 11 +wind surfing 15 +wind surfing 16 +wind surfing 20 +wind surfing 21 +wind surfing 22 +wind surfing 26 +wind surfing 29 +wind surfing 33 +wind surfing 36 +wind surfing 37 +wind surfing 40 +wind surfing 41 +wind surfing 44 +wind surfing 45 +wind surfing 48 +wind surfing 52 +wind surfing 53 +wind surfing 54 +wind surfing 58 +wind surfing 59 +wind surfing 62 +wind surfing 63 +wind surfing 64 +wind surfing 66 +wind surfing 68 +wind surfing 71 +wind surfing 75 +wind surfing 78 +wind surfing 86 +wind surfing 88 +wind surfing 92 +wind surfing 96 +wind surfing 101 +wind surfing 102 +wind surfing 107 +wind surfing 108 +wind surfing 111 +wind surfing 112 +wind surfing 121 +xylophone band NULL +xylophone band -115 +xylophone band -112 +xylophone band -109 +xylophone band -104 +xylophone band -101 +xylophone band -98 +xylophone band -96 +xylophone band -94 +xylophone band -91 +xylophone band -78 +xylophone band -75 +xylophone band -72 +xylophone band -70 +xylophone band -68 +xylophone band -59 +xylophone band -46 +xylophone band -27 +xylophone band -26 +xylophone band -23 +xylophone band -15 +xylophone band -13 +xylophone band -10 +xylophone band -6 +xylophone band -3 +xylophone band -2 +xylophone band 0 +xylophone band 3 +xylophone band 6 +xylophone band 7 +xylophone band 9 +xylophone band 11 +xylophone band 14 +xylophone band 17 +xylophone band 19 +xylophone band 22 +xylophone band 23 +xylophone band 33 +xylophone band 36 +xylophone band 38 +xylophone band 40 +xylophone band 52 +xylophone band 60 +xylophone band 62 +xylophone band 77 +xylophone band 79 +xylophone band 84 +xylophone band 85 +xylophone band 88 +xylophone band 92 +xylophone band 94 +xylophone band 107 +xylophone band 108 +xylophone band 112 +xylophone band 118 +xylophone band 122 +xylophone band 123 +xylophone band 125 +xylophone band 127 +yard duty NULL +yard duty -127 +yard duty -115 +yard duty -114 +yard duty -109 +yard duty -103 +yard duty -102 +yard duty -100 +yard duty -98 +yard duty -93 +yard duty -91 +yard duty -88 +yard duty -86 +yard duty -85 +yard duty -82 +yard duty -76 +yard duty -62 +yard duty -61 +yard duty -57 +yard duty -53 +yard duty -51 +yard duty -50 +yard duty -49 +yard duty -48 +yard duty -46 +yard duty -45 +yard duty -44 +yard duty -33 +yard duty -28 +yard duty -27 +yard duty -21 +yard duty -19 +yard duty -17 +yard duty -15 +yard duty -1 +yard duty 8 +yard duty 9 +yard duty 10 +yard duty 15 +yard duty 18 +yard duty 22 +yard duty 25 +yard duty 28 +yard duty 30 +yard duty 34 +yard duty 42 +yard duty 48 +yard duty 53 +yard duty 55 +yard duty 57 +yard duty 60 +yard duty 64 +yard duty 65 +yard duty 78 +yard duty 86 +yard duty 90 +yard duty 102 +yard duty 105 +yard duty 110 +zync studies NULL +zync studies -127 +zync studies -117 +zync studies -116 +zync studies -111 +zync studies -105 +zync studies -103 +zync studies -102 +zync studies -94 +zync studies -90 +zync studies -83 +zync studies -79 +zync studies -78 +zync studies -68 +zync studies -61 +zync studies -58 +zync studies -57 +zync studies -54 +zync studies -52 +zync studies -50 +zync studies -45 +zync studies -40 +zync studies -39 +zync studies -38 +zync studies -37 +zync studies -36 +zync studies -35 +zync studies -34 +zync studies -33 +zync studies -32 +zync studies -27 +zync studies -26 +zync studies -21 +zync studies -20 +zync studies -12 +zync studies 1 +zync studies 7 +zync studies 9 +zync studies 11 +zync studies 15 +zync studies 19 +zync studies 31 +zync studies 37 +zync studies 48 +zync studies 59 +zync studies 63 +zync studies 70 +zync studies 87 +zync studies 90 +zync studies 91 +zync studies 98 +zync studies 99 +zync studies 100 +zync studies 116 +zync studies 120 diff --git a/ql/src/test/results/clientpositive/vector_groupby_3.q.out b/ql/src/test/results/clientpositive/vector_groupby_3.q.out new file mode 100644 index 000000000000..aff508298e3e --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_groupby_3.q.out @@ -0,0 +1,1862 @@ +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select s, t, max(b) from vectortab2korc group by s, t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select s, t, max(b) from vectortab2korc group by s, t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: s (type: string), t (type: tinyint), b (type: bigint) + outputColumnNames: s, t, b + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(b) + keys: s (type: string), t (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: tinyint) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: tinyint) + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + value expressions: _col2 (type: bigint) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0) + keys: KEY._col0 (type: string), KEY._col1 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: tinyint), _col2 (type: bigint) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select s, t, max(b) from vectortab2korc group by s, t +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select s, t, max(b) from vectortab2korc group by s, t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### + NULL 2714 + -116 8945302550165004288 + -114 1312 + -113 7569249672628789248 + -108 8939431770838810624 + -107 1906 + -104 8268875586442256384 + -91 3965 + -87 7078641038157643776 + -86 2862 + -85 -7139677575412686848 + -84 -7085247548404178944 + -83 8900351886974279680 + -80 -8938849835283677184 + -75 NULL + -72 9149216169284091904 + -66 3197 + -53 -8619303037130301440 + -46 -9080568167841226752 + -38 2933 + -36 -7512297136103800832 + -33 1075 + -29 8371939471056470016 + -28 -7292078334519894016 + -25 2262 + -24 898 + -19 9094945190752903168 + -16 -7673901622181953536 + -14 7983789401706094592 + -12 -7413317118463164416 + -10 8991442360387584000 + -5 3534 + -4 -9014145341570203648 + -2 8759184090543857664 + 0 8163948965373386752 + 4 7062382339142156288 + 5 -8703026916864802816 + 8 2905 + 12 2553 + 16 8983857919580209152 + 19 2201 + 22 9191943992860327936 + 23 NULL + 26 -7916510129632296960 + 29 8555933456197828608 + 31 2941 + 37 8143462899383345152 + 42 NULL + 46 3174 + 48 -8566856504746352640 + 54 -7242345057866285056 + 57 8230371298967609344 + 59 2494 + 60 -6986178228432322560 + 62 779 + 64 7368920486374989824 + 79 8736061027343859712 + 84 NULL + 87 797 + 88 8782900615468302336 + 90 2977 + 91 2193 + 96 -7866079955473989632 + 97 2017 + 102 -7036607470351654912 + 103 780 + 105 -7511952204985049088 + 109 1436 + 112 -7063777488249085952 + 113 8775009214012456960 + 114 1145 + 123 3625 +american history NULL 3555 +american history -127 1719 +american history -119 19 +american history -116 3812 +american history -112 7731443941834678272 +american history -110 -8989473881707921408 +american history -108 7359004378440146944 +american history -105 7870277756614623232 +american history -103 -6962271229404348416 +american history -101 7348598907182800896 +american history -95 NULL +american history -94 9119046173224370176 +american history -92 -7612455481940246528 +american history -90 1321 +american history -89 -7571293705217687552 +american history -87 -7536330682873937920 +american history -86 -8731068123910987776 +american history -81 2700 +american history -80 485 +american history -73 2487 +american history -66 -8368487814665895936 +american history -60 1566 +american history -59 3949 +american history -55 8407869317250220032 +american history -53 1955 +american history -50 7857878068300898304 +american history -48 -8016589197379289088 +american history -47 -8566940231897874432 +american history -34 4018 +american history -30 -8789178184387641344 +american history -28 -7720966287634112512 +american history -27 NULL +american history -26 -7057750467944931328 +american history -19 78 +american history -18 -8659643752269242368 +american history -17 2968 +american history -15 9048002942653710336 +american history -11 8714829359200747520 +american history -9 -8503342882470019072 +american history 0 6928080429732536320 +american history 5 135 +american history 20 -7037375807670501376 +american history 22 8467976965865799680 +american history 29 -8243487285852766208 +american history 31 -8007017894942638080 +american history 33 9043089884440068096 +american history 38 7061809776248545280 +american history 39 7922443154272395264 +american history 40 2886 +american history 42 8190967051000659968 +american history 46 8374321007870836736 +american history 48 6962726713896484864 +american history 54 -7784419454650843136 +american history 56 1890 +american history 60 3512 +american history 68 -8067243114610532352 +american history 69 -7199983995864711168 +american history 71 8698055291501543424 +american history 72 8551446856960942080 +american history 74 9038087402564657152 +american history 77 1837 +american history 79 -7542857121910046720 +american history 82 3980 +american history 84 2105 +american history 89 8806507556248731648 +american history 96 823 +american history 100 8760285623204290560 +american history 103 -7868306678534193152 +american history 111 522 +american history 119 8571268359622172672 +american history 122 7497276415392407552 +american history 123 -7488345684795342848 +biology NULL 9116137265342169088 +biology -127 1270 +biology -121 8109381965028548608 +biology -120 8388363436324085760 +biology -119 7054938591408996352 +biology -104 -8683802826440105984 +biology -101 -7198372044947275776 +biology -98 -8940944155843461120 +biology -97 -7827420207675105280 +biology -96 NULL +biology -92 1142 +biology -90 7775034125776363520 +biology -86 3755 +biology -85 -6935548339131138048 +biology -83 7232273749940838400 +biology -82 -7040248820505149440 +biology -81 NULL +biology -79 3566 +biology -72 -7915999634274369536 +biology -67 8532016240026279936 +biology -66 -7623047151287754752 +biology -59 7534042483076857856 +biology -57 7049773031131283456 +biology -54 -7319315187617587200 +biology -53 -6962292590214234112 +biology -49 NULL +biology -46 2241 +biology -44 2680 +biology -42 2469 +biology -40 -7469660864676585472 +biology -36 1489 +biology -35 2285 +biology -31 -9032650742739836928 +biology -20 7130159794259353600 +biology -19 -7442593976514420736 +biology -16 3960 +biology -13 2463 +biology -7 -8665218198816497664 +biology -6 888 +biology -5 808 +biology 0 523 +biology 2 -8387347109404286976 +biology 3 -9075486079396069376 +biology 4 482 +biology 5 7376467688511455232 +biology 6 -7797149520019062784 +biology 7 454 +biology 8 950 +biology 12 2492 +biology 18 -7255010240787030016 +biology 27 -9049720998034137088 +biology 30 835 +biology 34 2517 +biology 35 8017403886247927808 +biology 36 2539 +biology 41 7052226236896256000 +biology 47 3974 +biology 51 3728 +biology 52 9084402694981533696 +biology 54 -7330203470474985472 +biology 55 1785 +biology 57 9083704659251798016 +biology 64 2400 +biology 83 -8172827216441573376 +biology 86 3199 +biology 89 7747874976739016704 +biology 90 -7598782894648565760 +biology 91 -8131997716860526592 +biology 100 -8782213262837530624 +biology 111 6933731240564056064 +biology 113 664 +biology 114 1343 +biology 115 -7017212700635545600 +biology 117 120 +biology 120 3443 +biology 124 -6919476845891313664 +chemistry NULL 8854677881758162944 +chemistry -127 -7637755520917741568 +chemistry -125 3418 +chemistry -122 -8232763638546694144 +chemistry -117 8014986215157530624 +chemistry -115 3307 +chemistry -110 3430 +chemistry -109 -7624057992767782912 +chemistry -108 7255302164215013376 +chemistry -103 -8099313480512716800 +chemistry -101 2599 +chemistry -98 9005866015985713152 +chemistry -95 -7470307155642245120 +chemistry -91 9030480306789818368 +chemistry -90 1291 +chemistry -89 2968 +chemistry -81 -8664806103426252800 +chemistry -75 375 +chemistry -68 -8813211231120031744 +chemistry -61 -8021859935185928192 +chemistry -59 -7572262898020278272 +chemistry -57 -7362189611124563968 +chemistry -56 -7663293054873812992 +chemistry -52 4056 +chemistry -46 -7610137349734883328 +chemistry -44 7596563216912211968 +chemistry -40 4054 +chemistry -37 NULL +chemistry -33 7545689659010949120 +chemistry -31 -9080956291212132352 +chemistry -30 2001 +chemistry -26 -9178166810751909888 +chemistry -23 -8518060755719585792 +chemistry -8 8487573502287478784 +chemistry -3 3245 +chemistry -2 -7500200359698907136 +chemistry 3 2933 +chemistry 4 2138 +chemistry 8 873 +chemistry 14 7198687580227043328 +chemistry 16 7229607057201127424 +chemistry 19 NULL +chemistry 25 236 +chemistry 27 1826 +chemistry 32 1775 +chemistry 37 41 +chemistry 39 2663 +chemistry 41 8693036785094565888 +chemistry 46 1280 +chemistry 51 392 +chemistry 55 -8843859708698583040 +chemistry 64 9091085792947666944 +chemistry 74 837 +chemistry 75 3860 +chemistry 78 2476 +chemistry 79 8644602243484803072 +chemistry 83 1286 +chemistry 88 -8082793390939193344 +chemistry 90 7794244032613703680 +chemistry 91 3866 +chemistry 96 -7395343938785738752 +chemistry 102 -7907355742053883904 +chemistry 104 3609 +chemistry 110 NULL +chemistry 113 7149417430082027520 +chemistry 116 7768984605670604800 +chemistry 124 1914 +chemistry 126 9083076230151864320 +debate NULL 1777 +debate -127 8337549596011102208 +debate -117 -8269917980278980608 +debate -114 2085 +debate -108 2816 +debate -106 1948 +debate -98 8011602724663336960 +debate -96 8688483860094599168 +debate -95 1368 +debate -88 8345435427356090368 +debate -87 -8028910243475038208 +debate -86 1095 +debate -85 2341 +debate -82 NULL +debate -72 7720187583697502208 +debate -70 8928133990107881472 +debate -69 7948803266578161664 +debate -67 1521 +debate -57 -8581979259158929408 +debate -52 7947544013461512192 +debate -50 7061498706968428544 +debate -47 49 +debate -46 1234 +debate -41 -8856821118526734336 +debate -35 7062605127422894080 +debate -32 -7831320202242228224 +debate -29 -7476082621253402624 +debate -28 -8379109122834997248 +debate -27 3835 +debate -26 471 +debate -24 8554899472487596032 +debate -15 34 +debate -12 7682327310082531328 +debate -3 8519937082746634240 +debate 5 -8649711322250362880 +debate 17 8560526613401714688 +debate 19 8501910015960735744 +debate 20 -8832750849949892608 +debate 26 738 +debate 34 3060 +debate 36 7792036342592348160 +debate 41 7039820685967343616 +debate 42 8557218322962644992 +debate 52 -7637494527844343808 +debate 54 7534145866886782976 +debate 56 -7161165959057334272 +debate 63 1243 +debate 67 2692 +debate 68 8045070943673671680 +debate 69 -7822452149325094912 +debate 70 7534549597202194432 +debate 73 8372408423196270592 +debate 75 2463 +debate 77 1168 +debate 85 8822384228057604096 +debate 87 8146288732715196416 +debate 89 2089 +debate 90 9078604269481148416 +debate 93 455 +debate 94 -7506254246954500096 +debate 113 1995 +debate 124 3691 +education NULL 2903 +education -127 -8302817097848307712 +education -125 2214 +education -113 -8142667274351345664 +education -111 7296164580491075584 +education -109 8150115791664340992 +education -105 1066 +education -101 7165364563962191872 +education -98 1341 +education -96 -8022573309127000064 +education -93 7343171468838567936 +education -92 2811 +education -89 1999 +education -87 345 +education -86 8473699639908261888 +education -77 9148071980848742400 +education -72 3021 +education -69 2805 +education -64 6974475559697768448 +education -61 7917494645725765632 +education -55 7989119273552158720 +education -52 9050032047355125760 +education -44 -8219876839318716416 +education -43 3911 +education -38 3749 +education -37 923 +education -36 694 +education -34 -7707242953271500800 +education -28 7735566678126616576 +education -24 1509 +education -15 -6960947572095770624 +education -13 695 +education -9 928 +education 4 -8034414142083170304 +education 12 8454154705460666368 +education 17 2232 +education 27 -8454143651040444416 +education 33 -8488247955875618816 +education 34 379 +education 35 7473537548003352576 +education 38 -8244116388227104768 +education 41 7584007864107778048 +education 45 238 +education 46 7892281003266408448 +education 49 8461498293348065280 +education 51 -7623359796281999360 +education 53 -7600138468036386816 +education 59 7432998950057975808 +education 61 NULL +education 66 7652123583449161728 +education 73 -7185369278665605120 +education 75 9054887854393950208 +education 77 3206 +education 81 -6970396058557005824 +education 82 1058 +education 85 7961909238130270208 +education 89 3409 +education 95 3764 +education 102 7375521127126089728 +education 103 7384150968511315968 +education 110 7452756603516190720 +education 111 3824 +education 113 8994608999945125888 +education 114 1846 +education 116 -8930307926221807616 +education 119 7548958830580563968 +education 125 8577096957495025664 +forestry NULL 9123116008004288512 +forestry -126 9086905513121890304 +forestry -118 8272001752345690112 +forestry -116 7997694023324975104 +forestry -109 275 +forestry -105 2724 +forestry -98 3089 +forestry -95 2485 +forestry -94 -8051871680800120832 +forestry -83 2752 +forestry -81 -8922409715403112448 +forestry -80 1165 +forestry -79 1937 +forestry -77 1247 +forestry -74 1643 +forestry -73 -7228589258642194432 +forestry -68 -6988970700649168896 +forestry -58 7989160253372817408 +forestry -51 -9002912355472736256 +forestry -50 2283 +forestry -49 417 +forestry -42 268 +forestry -34 2524 +forestry -23 7790728456522784768 +forestry -12 -8205148279289085952 +forestry -11 9194388393453060096 +forestry -10 3962 +forestry -8 7955126053367119872 +forestry -3 1165 +forestry -1 -9071565764086521856 +forestry 0 -7603467428164009984 +forestry 7 3118 +forestry 8 7299197687217856512 +forestry 11 3467 +forestry 12 8160662610166194176 +forestry 19 -8760655406971863040 +forestry 29 -7831595638727565312 +forestry 31 3663 +forestry 35 1371 +forestry 37 950 +forestry 39 6933451028794925056 +forestry 40 -8763062627136864256 +forestry 44 -8559252110266564608 +forestry 45 8553195689344991232 +forestry 50 615 +forestry 51 2580 +forestry 52 8514851182589771776 +forestry 55 -9091113592821972992 +forestry 56 7418271723644403712 +forestry 71 8779711700787298304 +forestry 78 -7845896959112658944 +forestry 79 -7818454479651135488 +forestry 87 1981 +forestry 90 8829545979081744384 +forestry 93 1422 +forestry 94 -8469607298426437632 +forestry 97 -8845239510002753536 +forestry 102 255 +forestry 106 8570983266408103936 +forestry 107 999 +forestry 111 -7138415011665043456 +forestry 115 8573305425181941760 +forestry 117 -7120456708338688000 +forestry 120 7784169796350730240 +geology NULL 8171188598958407680 +geology -124 3190 +geology -117 3421 +geology -115 -8660149447361404928 +geology -112 1462 +geology -108 -8604758220106014720 +geology -106 -7661250850555633664 +geology -101 -7078068944081002496 +geology -100 3002 +geology -96 -6957946688477274112 +geology -94 268 +geology -84 -7511202710200885248 +geology -82 8817665768680906752 +geology -80 3446 +geology -79 1614 +geology -75 -7883252982752665600 +geology -72 8391785334471589888 +geology -68 -8203008052020879360 +geology -59 7621013099259527168 +geology -57 -7594824008626372608 +geology -54 -7328087811698909184 +geology -53 -6988811476286873600 +geology -50 8120593157178228736 +geology -48 1342 +geology -35 -7510418793070075904 +geology -34 8708845895460577280 +geology -32 7487538600082554880 +geology -31 871 +geology -30 -8127494999848919040 +geology -23 1537 +geology -21 91 +geology -18 7370803940448305152 +geology -16 8979012655944220672 +geology 1 -8870673219965001728 +geology 4 9020143715350814720 +geology 5 7784489776013295616 +geology 6 3203 +geology 9 -8379964450833367040 +geology 14 -8136227554401107968 +geology 18 3763 +geology 21 8850055384477401088 +geology 23 NULL +geology 26 -7145585429014888448 +geology 28 2183 +geology 31 1892 +geology 33 7689489436826804224 +geology 37 2762 +geology 38 -8395998375405912064 +geology 49 8854715632851345408 +geology 58 -8856151919723003904 +geology 72 2179 +geology 82 6967631925774639104 +geology 84 8316336224427483136 +geology 86 -9101953184875757568 +geology 89 1346 +geology 92 -7833618000492109824 +geology 93 NULL +geology 95 -7838598833900584960 +geology 100 7528074274555305984 +geology 101 7701723309715685376 +geology 102 -8297230235506343936 +geology 116 3073 +geology 121 213 +geology 124 7779486624537370624 +geology 127 -7703540456272994304 +history NULL 3231 +history -125 1856 +history -124 -8318886086186213376 +history -105 3701 +history -104 1769 +history -103 -7623405558242500608 +history -101 154 +history -98 2046 +history -91 1651 +history -90 65 +history -89 3418 +history -79 1796 +history -75 -8783777723063099392 +history -67 -7679894005808693248 +history -61 8325227661920133120 +history -58 8376440110255243264 +history -54 2393 +history -42 8987827141270880256 +history -37 3946 +history -34 -7192529627893858304 +history -26 NULL +history -24 3079 +history -19 1791 +history -18 3770 +history -15 2013 +history -12 154 +history -8 2187 +history -5 1667 +history -1 -8544299740525461504 +history 1 8637720762289659904 +history 2 7648729477297987584 +history 7 7647481735646363648 +history 14 6947488599548215296 +history 18 -7778829032042790912 +history 25 3866 +history 50 3874 +history 51 8135164922674872320 +history 52 -6921654334727036928 +history 57 3690 +history 58 3664 +history 59 7514552840617558016 +history 61 -8411282676082565120 +history 62 3024 +history 71 -8730803262481580032 +history 72 7099005292698550272 +history 73 2776 +history 75 -7547245548870025216 +history 78 -9102482277760983040 +history 84 -7162299524557471744 +history 92 921 +history 95 3769 +history 98 3588 +history 100 263 +history 108 -7800879252150779904 +history 112 -7419068456205385728 +history 113 3728 +history 114 289 +history 126 2810 +history 127 -7884460946615984128 +industrial engineering NULL 3060 +industrial engineering -124 3249 +industrial engineering -110 2560 +industrial engineering -101 -7617860842651017216 +industrial engineering -98 8368012468775608320 +industrial engineering -96 688 +industrial engineering -87 7486884806277611520 +industrial engineering -85 -7512289590991544320 +industrial engineering -72 3208 +industrial engineering -68 -9206329156028112896 +industrial engineering -65 9112400579327483904 +industrial engineering -58 650 +industrial engineering -57 -8521578237232529408 +industrial engineering -53 68 +industrial engineering -49 181 +industrial engineering -47 2911 +industrial engineering -43 504 +industrial engineering -38 -8581765103969312768 +industrial engineering -35 1726 +industrial engineering -31 1520 +industrial engineering -30 3472 +industrial engineering -28 724 +industrial engineering -22 -7540104552219860992 +industrial engineering -11 -7802538500225777664 +industrial engineering -7 2420 +industrial engineering -6 9185458640237641728 +industrial engineering -5 2485 +industrial engineering -1 8087737899452432384 +industrial engineering 3 3682 +industrial engineering 7 7573530789362262016 +industrial engineering 27 -8445801063348281344 +industrial engineering 29 3365 +industrial engineering 32 364 +industrial engineering 33 -7240213957902663680 +industrial engineering 36 1158 +industrial engineering 42 2506 +industrial engineering 43 3725 +industrial engineering 48 355 +industrial engineering 54 691 +industrial engineering 58 8195103847607967744 +industrial engineering 59 8808467247666241536 +industrial engineering 70 9091082386452684800 +industrial engineering 73 -7011425384222244864 +industrial engineering 78 -9136398397785948160 +industrial engineering 79 -8948335470186373120 +industrial engineering 83 NULL +industrial engineering 95 8192304692696383488 +industrial engineering 96 -7910019233726242816 +industrial engineering 98 -7524170566881329152 +industrial engineering 99 -9215144824304721920 +industrial engineering 102 2900 +industrial engineering 104 -8875546987176206336 +industrial engineering 105 8071961599867387904 +industrial engineering 106 878 +industrial engineering 113 1862 +industrial engineering 126 -6968892545529896960 +joggying NULL -8877053610728161280 +joggying -125 7823874904139849728 +joggying -121 3103 +joggying -119 2189 +joggying -110 -8870186814744420352 +joggying -101 -8675661101615489024 +joggying -100 7080269176324218880 +joggying -80 8254763178969915392 +joggying -79 -7939634346485858304 +joggying -77 7626715182847090688 +joggying -76 NULL +joggying -73 8011181697250631680 +joggying -69 7678790769408172032 +joggying -64 2373 +joggying -62 -8425998949410889728 +joggying -61 8687042963221159936 +joggying -57 8936639033158410240 +joggying -55 8208354137450766336 +joggying -48 8351163199364390912 +joggying -47 NULL +joggying -43 8323460620425330688 +joggying -40 3781 +joggying -30 2217 +joggying -27 2790 +joggying -24 -7083646746411720704 +joggying -15 -8658387566611996672 +joggying -14 -8358130693961195520 +joggying -8 8723248113030782976 +joggying -1 7844258063629852672 +joggying 13 8525894870444638208 +joggying 20 425 +joggying 25 1556 +joggying 26 2325 +joggying 27 1290 +joggying 28 -8858063395050110976 +joggying 37 -7378096180613840896 +joggying 43 7260908278294560768 +joggying 46 8905330479248064512 +joggying 48 1337 +joggying 49 -8047774491688255488 +joggying 52 2803 +joggying 57 8183233196086214656 +joggying 61 3253 +joggying 62 -8359839265974165504 +joggying 69 8302473563519950848 +joggying 70 1965 +joggying 72 976 +joggying 74 -7751265769984491520 +joggying 80 7454442625055145984 +joggying 85 7748799008146366464 +joggying 87 94 +joggying 92 7818464507324121088 +joggying 93 8416121695917498368 +joggying 94 7599019810193211392 +joggying 97 2565 +joggying 99 1863 +joggying 104 1864 +joggying 105 2002 +joggying 118 -8108693586698706944 +joggying 119 -7892780594910871552 +joggying 121 1987 +joggying 123 NULL +joggying 125 2842 +kindergarten NULL 6933001829416034304 +kindergarten -126 2509 +kindergarten -113 259 +kindergarten -106 -8103788088118018048 +kindergarten -98 982 +kindergarten -95 8983912573761167360 +kindergarten -92 NULL +kindergarten -79 -7751427073017544704 +kindergarten -78 7524958388842078208 +kindergarten -75 7017956982081404928 +kindergarten -74 -8632237187473088512 +kindergarten -69 1813 +kindergarten -60 7027529814236192768 +kindergarten -59 8991071342495531008 +kindergarten -57 -7949309059286163456 +kindergarten -54 8896237972875370496 +kindergarten -42 -7094827141662539776 +kindergarten -40 7084659344078970880 +kindergarten -26 7226360892091416576 +kindergarten -18 7696737688942567424 +kindergarten -8 -7420448501073051648 +kindergarten 10 3111 +kindergarten 16 7753882935005880320 +kindergarten 18 -7395553021620731904 +kindergarten 19 -8104684579106914304 +kindergarten 23 8871707618793996288 +kindergarten 29 3248 +kindergarten 37 3493 +kindergarten 46 958 +kindergarten 48 -8572949572756774912 +kindergarten 51 8543177193114779648 +kindergarten 52 8868529429494071296 +kindergarten 55 -7404057145074712576 +kindergarten 61 7710447533880614912 +kindergarten 66 2735 +kindergarten 69 73 +kindergarten 82 530 +kindergarten 84 7998357471114969088 +kindergarten 85 7926898770090491904 +kindergarten 86 NULL +kindergarten 90 8972161729142095872 +kindergarten 92 8716401555586727936 +kindergarten 96 -7429331808102899712 +kindergarten 100 108 +kindergarten 101 7166263463731421184 +kindergarten 109 2962 +kindergarten 111 2320 +kindergarten 116 9207927479837319168 +kindergarten 118 -7819437864839495680 +kindergarten 120 7779735136559579136 +kindergarten 122 -7079898537463537664 +kindergarten 127 2223 +linguistics NULL 8383159090746204160 +linguistics -127 -8896045754034978816 +linguistics -122 -7695491171376291840 +linguistics -113 7614435638888210432 +linguistics -101 -8017791189288869888 +linguistics -90 -7739424919198187520 +linguistics -89 8489735221193138176 +linguistics -87 2244 +linguistics -86 NULL +linguistics -78 8518454006987948032 +linguistics -77 7686992843032010752 +linguistics -73 -8916987977485312000 +linguistics -70 2277 +linguistics -69 -7104310188119834624 +linguistics -68 8184799300477943808 +linguistics -67 NULL +linguistics -53 NULL +linguistics -52 -8651641150831362048 +linguistics -41 1811 +linguistics -34 3958 +linguistics -28 7345991518378442752 +linguistics -22 8489584373231919104 +linguistics -20 7620183559667081216 +linguistics -17 9075404705968840704 +linguistics -16 2662 +linguistics -14 -9203804401302323200 +linguistics -13 7566273236152721408 +linguistics -12 NULL +linguistics -6 8145750910080745472 +linguistics -4 3789 +linguistics -2 -7501803640821456896 +linguistics 0 9023663198045544448 +linguistics 1 1386 +linguistics 3 7386087924003676160 +linguistics 6 8558000156325707776 +linguistics 7 9048297564833079296 +linguistics 10 2846 +linguistics 11 83 +linguistics 18 1261 +linguistics 33 1086 +linguistics 37 1777 +linguistics 42 9117063974299148288 +linguistics 44 9136548192574529536 +linguistics 50 9188173682239275008 +linguistics 53 1447 +linguistics 64 1704 +linguistics 67 -7201085131997011968 +linguistics 72 204 +linguistics 73 2502 +linguistics 83 NULL +linguistics 89 8116738401948377088 +linguistics 93 -7879864376629567488 +linguistics 96 803 +linguistics 98 7898670840507031552 +linguistics 100 3622 +linguistics 113 7217123582035116032 +linguistics 115 -6920172215209426944 +linguistics 123 7762823913046556672 +linguistics 125 1074 +linguistics 126 9067985867711291392 +mathematics NULL 9001907486943993856 +mathematics -127 -7158472098920390656 +mathematics -124 8290014929764040704 +mathematics -122 -7453525026342617088 +mathematics -120 3322 +mathematics -118 -6997233584896229376 +mathematics -117 2786 +mathematics -103 658 +mathematics -101 -8756989568739835904 +mathematics -100 7662037650719850496 +mathematics -99 NULL +mathematics -98 -7425160895830573056 +mathematics -95 490 +mathematics -91 8223732800007864320 +mathematics -88 -7115054815375073280 +mathematics -81 7753359568986636288 +mathematics -79 8111757081791733760 +mathematics -77 7581614118458335232 +mathematics -75 -7221474017515347968 +mathematics -66 -7894382303337832448 +mathematics -57 8219326436390821888 +mathematics -52 8435912708683087872 +mathematics -50 7746402369011277824 +mathematics -49 8156018594610790400 +mathematics -46 8210813831744118784 +mathematics -45 7237310132329488384 +mathematics -40 -8518258741831680000 +mathematics -33 7461153404961128448 +mathematics -31 681 +mathematics -21 -7661192563533062144 +mathematics -19 3159 +mathematics -7 8396433451610652672 +mathematics 0 8282648443538710528 +mathematics 3 -8887058200926093312 +mathematics 6 1701 +mathematics 10 7259955893466931200 +mathematics 22 6934570741217755136 +mathematics 23 7271887863395459072 +mathematics 25 -7333362172439035904 +mathematics 32 2073 +mathematics 35 -7558524160894427136 +mathematics 38 -7557017910095650816 +mathematics 39 2579 +mathematics 46 -7759425383684849664 +mathematics 48 1366 +mathematics 50 3029 +mathematics 53 7549858023389003776 +mathematics 55 2227 +mathematics 56 898 +mathematics 58 3830 +mathematics 59 7487338208419823616 +mathematics 62 883 +mathematics 63 8156782979767238656 +mathematics 65 1648 +mathematics 76 8927691194719174656 +mathematics 79 7871189141676998656 +mathematics 80 NULL +mathematics 82 1093 +mathematics 87 3707 +mathematics 92 -8754992450211692544 +mathematics 98 2398 +mathematics 102 690 +mathematics 107 8391407951622815744 +mathematics 111 2607 +mathematics 114 3094 +nap time NULL -8430283518005846016 +nap time -122 8660248367767076864 +nap time -119 2715 +nap time -115 -7576194692683563008 +nap time -113 8451612303224520704 +nap time -104 -7709958788604936192 +nap time -102 -6938706403992854528 +nap time -101 2229 +nap time -91 85 +nap time -85 3932 +nap time -71 9136234417125007360 +nap time -61 1524 +nap time -54 -8562524688907485184 +nap time -49 8079573715140485120 +nap time -45 7310869618402910208 +nap time -41 7801697837312884736 +nap time -31 939 +nap time -15 7401968422230032384 +nap time -6 7843804446688264192 +nap time -4 736 +nap time -2 8697823501349609472 +nap time 0 1940 +nap time 3 9064847977742032896 +nap time 6 7871554728617025536 +nap time 16 NULL +nap time 23 7432428551399669760 +nap time 27 1454 +nap time 31 6964585306125008896 +nap time 35 2689 +nap time 42 8652485812846567424 +nap time 51 -7881262505761710080 +nap time 52 2463 +nap time 56 -8240034910581153792 +nap time 62 NULL +nap time 69 NULL +nap time 70 66 +nap time 73 7782245855193874432 +nap time 76 -8543982423727128576 +nap time 80 2647 +nap time 89 -7888051992910274560 +nap time 90 7761834341179375616 +nap time 92 8540237852367446016 +nap time 93 -8203075743525806080 +nap time 98 7691062622443044864 +nap time 103 361 +nap time 104 7125231541858205696 +nap time 105 7045967493826387968 +nap time 107 9114850402293882880 +nap time 108 1189 +nap time 118 8910706980937261056 +opthamology NULL 8856674723376668672 +opthamology -122 9096395849845194752 +opthamology -121 3879 +opthamology -118 2072 +opthamology -111 8244041599171862528 +opthamology -99 -7875953567586451456 +opthamology -97 8752150411997356032 +opthamology -91 2255 +opthamology -86 -9066993118333706240 +opthamology -82 1606 +opthamology -79 -9117959922369060864 +opthamology -78 -7303847963918393344 +opthamology -77 8631515095562887168 +opthamology -75 8779073705407963136 +opthamology -73 908 +opthamology -63 470 +opthamology -59 3021 +opthamology -55 2177 +opthamology -49 8854495099223375872 +opthamology -48 -7877598807023386624 +opthamology -44 2675 +opthamology -35 2274 +opthamology -33 1613 +opthamology -30 8048726769133592576 +opthamology -28 8849475396952514560 +opthamology -27 3599 +opthamology -24 383 +opthamology -22 7718825401976684544 +opthamology -18 2393 +opthamology -17 -7629401308029976576 +opthamology -14 3235 +opthamology -8 7333512171174223872 +opthamology -5 7411793502161182720 +opthamology 4 9131533983989358592 +opthamology 5 130 +opthamology 21 7069729473166090240 +opthamology 39 2745 +opthamology 41 NULL +opthamology 48 3159 +opthamology 49 -7904188195431661568 +opthamology 52 -7081500255163727872 +opthamology 53 -7055760785575665664 +opthamology 55 2335 +opthamology 68 -8866442231663067136 +opthamology 69 2144 +opthamology 74 -7708932208121225216 +opthamology 76 -7647020450676146176 +opthamology 77 -6934304742087655424 +opthamology 79 1508 +opthamology 81 8920344895701393408 +opthamology 84 927 +opthamology 87 6924820982050758656 +opthamology 88 -8593419958317056000 +opthamology 89 -7978782649203228672 +opthamology 92 NULL +opthamology 96 -8418913260807217152 +opthamology 97 8935252708196999168 +opthamology 100 -7532751268425261056 +opthamology 104 1866 +opthamology 117 2835 +opthamology 120 -8340523561480437760 +opthamology 122 3462 +opthamology 125 965 +opthamology 127 412 +philosophy NULL 8759089349412847616 +philosophy -125 9199741683232399360 +philosophy -121 342 +philosophy -119 -8507279516485566464 +philosophy -115 1719 +philosophy -110 7471208109437304832 +philosophy -105 -7172594404186693632 +philosophy -103 8144552446127972352 +philosophy -100 -7603569103205916672 +philosophy -99 -8030058711611629568 +philosophy -95 3460 +philosophy -93 8720504651219001344 +philosophy -92 8649296591032172544 +philosophy -80 -7035132060308643840 +philosophy -78 1752 +philosophy -77 -7344947507044466688 +philosophy -69 2897 +philosophy -68 9185952983951343616 +philosophy -61 7271786885641666560 +philosophy -56 -7593363318079610880 +philosophy -55 3366 +philosophy -53 6987889924212203520 +philosophy -52 2824 +philosophy -51 2180 +philosophy -50 8875745082589929472 +philosophy -40 3478 +philosophy -39 1141 +philosophy -27 -8710298418608619520 +philosophy -26 -7344146703223496704 +philosophy -25 -7878145001776152576 +philosophy -17 -7515996202498473984 +philosophy -11 -7953426740065312768 +philosophy 8 -8088337436168830976 +philosophy 20 8290944180915871744 +philosophy 21 -7903158849011843072 +philosophy 22 7892026679115554816 +philosophy 29 2848 +philosophy 31 7659279803863146496 +philosophy 34 -7058986555327307776 +philosophy 38 7238339720750948352 +philosophy 41 8792059919353348096 +philosophy 43 3555 +philosophy 45 8362046808797306880 +philosophy 48 6991316084916879360 +philosophy 64 535 +philosophy 67 2715 +philosophy 68 1693 +philosophy 73 8283099811330506752 +philosophy 83 281 +philosophy 96 8682955459667951616 +philosophy 98 8613562211893919744 +philosophy 104 3541 +philosophy 108 6969599299897163776 +philosophy 117 2855 +philosophy 118 -7356685674003021824 +philosophy 120 -8300526097982226432 +philosophy 123 2140 +quiet hour NULL 7874764415950176256 +quiet hour -127 1099 +quiet hour -123 8769199243315814400 +quiet hour -121 7031339012080549888 +quiet hour -119 7608447395949109248 +quiet hour -114 8419958579638157312 +quiet hour -111 8424515140664360960 +quiet hour -105 918 +quiet hour -104 -7037638331316469760 +quiet hour -88 2919 +quiet hour -87 9182828596851990528 +quiet hour -76 -7792903881635938304 +quiet hour -73 8793387410919038976 +quiet hour -68 6982145326341423104 +quiet hour -66 383 +quiet hour -65 NULL +quiet hour -56 3567 +quiet hour -55 8569030475428511744 +quiet hour -52 8201303040648052736 +quiet hour -50 7998687089080467456 +quiet hour -48 8398862954249560064 +quiet hour -45 7378993334503694336 +quiet hour -42 NULL +quiet hour -41 7231399302953377792 +quiet hour -33 7637152193832886272 +quiet hour -31 -7744462446680375296 +quiet hour -25 NULL +quiet hour -14 997 +quiet hour -8 -7329767178250018816 +quiet hour -1 9085434340468473856 +quiet hour 0 7450416810848313344 +quiet hour 6 8795069490394882048 +quiet hour 7 2131 +quiet hour 8 -7265998318110711808 +quiet hour 13 2560 +quiet hour 21 -8293833565967810560 +quiet hour 23 1880 +quiet hour 29 2323 +quiet hour 30 9062227900376203264 +quiet hour 33 7528211148397944832 +quiet hour 35 -7046180371529351168 +quiet hour 38 2725 +quiet hour 43 8069531888205086720 +quiet hour 58 2461 +quiet hour 60 NULL +quiet hour 66 3770 +quiet hour 71 500 +quiet hour 74 -7902517224300036096 +quiet hour 80 7006803044329021440 +quiet hour 82 8853989376829833216 +quiet hour 84 8920533610804609024 +quiet hour 93 -7873753603299540992 +quiet hour 98 -9008631121684832256 +quiet hour 110 2186 +quiet hour 112 7436133434239229952 +quiet hour 115 1641 +quiet hour 120 919 +quiet hour 121 1506 +quiet hour 123 7800332581637259264 +religion NULL 7295502697317097472 +religion -125 2106 +religion -106 NULL +religion -104 820 +religion -94 9174894805640142848 +religion -93 491 +religion -81 8463868417649524736 +religion -78 7497306924248834048 +religion -77 NULL +religion -76 -8959796625322680320 +religion -71 296 +religion -70 -7461750143936897024 +religion -69 -7433265617153343488 +religion -64 -8430370933326536704 +religion -62 913 +religion -60 7700734109530767360 +religion -56 782 +religion -44 -8807361476639629312 +religion -42 -9213132862973829120 +religion -41 7266437490436341760 +religion -38 -8140349174954893312 +religion -35 7295926343524163584 +religion -32 1537 +religion -29 8221561626658881536 +religion -28 -8857335871148171264 +religion -26 1039 +religion -24 2194 +religion -23 3183 +religion -9 -8696162322976997376 +religion -7 -6968771079156654080 +religion -3 203 +religion 0 8996824426131390464 +religion 2 8995562121346260992 +religion 4 2803 +religion 5 -7159700138947862528 +religion 15 4088 +religion 17 1780 +religion 29 -7612466483992051712 +religion 31 1021 +religion 38 1751 +religion 44 -8509547439040757760 +religion 45 -8070535484085895168 +religion 49 8836228556823977984 +religion 52 7250237407877382144 +religion 54 9211455920344088576 +religion 58 3467 +religion 67 8113585123802529792 +religion 70 7919597361814577152 +religion 73 9053187076403060736 +religion 74 815 +religion 76 -7273694358642851840 +religion 78 -8051587217208967168 +religion 82 3119 +religion 92 2067 +religion 93 3848 +religion 96 -8317591428117274624 +religion 97 3456 +religion 102 -8471480409335513088 +religion 103 8815398225009967104 +religion 106 3058 +religion 107 3810 +religion 110 -7849504559236210688 +religion 115 -7712425776235274240 +religion 120 5 +religion 123 979 +religion 124 8899122608190930944 +study skills NULL 8201491077550874624 +study skills -127 -8559008501282832384 +study skills -126 3507 +study skills -117 -8400045653258444800 +study skills -107 8785153741735616512 +study skills -106 8002769767000145920 +study skills -100 -8962547695651323904 +study skills -88 2551 +study skills -86 3990 +study skills -82 NULL +study skills -81 612 +study skills -76 NULL +study skills -73 -8535957064499879936 +study skills -65 8332670681629106176 +study skills -52 3533 +study skills -36 -8485389240529354752 +study skills -33 -7213775605408178176 +study skills -27 961 +study skills -26 -9187662685618348032 +study skills -22 7204802700490858496 +study skills -17 3144 +study skills -14 3913 +study skills -13 7195454019231834112 +study skills -6 -7296096276653391872 +study skills -5 2412 +study skills -4 1094 +study skills -3 707 +study skills -1 7381659098423926784 +study skills 2 -7507578199583694848 +study skills 3 7291432593139507200 +study skills 18 743 +study skills 21 7274777328897802240 +study skills 23 8333523087360901120 +study skills 25 -8704234107608203264 +study skills 28 -8494118409594650624 +study skills 29 -7220731681653604352 +study skills 30 2637 +study skills 35 -7488415863027367936 +study skills 39 8897901899039473664 +study skills 40 3961 +study skills 47 -7049618574399692800 +study skills 49 -7326863346317598720 +study skills 50 7054271419461812224 +study skills 54 7128222874437238784 +study skills 55 1368 +study skills 58 -7030489936116252672 +study skills 62 8372588378498777088 +study skills 63 2512 +study skills 66 -7497303453253402624 +study skills 68 3725 +study skills 72 -8028275725610909696 +study skills 77 7354813692542304256 +study skills 80 -9078662294976061440 +study skills 83 -7779270198785875968 +study skills 92 3059 +study skills 95 7393308503950548992 +study skills 96 -8046189486447017984 +study skills 101 2295 +study skills 106 -8161047750470279168 +study skills 107 9132009829414584320 +study skills 110 -7998947380180819968 +study skills 115 7344029858387820544 +study skills 119 2264 +study skills 123 -7797151404935618560 +topology NULL 8639254009546055680 +topology -122 3941 +topology -116 -7964801953178091520 +topology -106 NULL +topology -105 -7824788571789279232 +topology -102 8783241818558193664 +topology -98 7212090742612467712 +topology -96 3568 +topology -88 -6975459232300236800 +topology -86 2515 +topology -78 7347732772348870656 +topology -74 8773222500321361920 +topology -71 4037 +topology -60 1493 +topology -58 2619 +topology -57 8895174927321243648 +topology -50 8168742078705262592 +topology -44 -8664374244449050624 +topology -42 2434 +topology -41 1153 +topology -36 3588 +topology -32 -8923529803981905920 +topology -31 -7330413050756235264 +topology -25 244 +topology -21 -8615168537390571520 +topology -5 1439 +topology -1 7391208370547269632 +topology 7 7339426767877390336 +topology 11 3333 +topology 13 8411494452500930560 +topology 14 8367680396909404160 +topology 18 -9189155542884474880 +topology 26 2218 +topology 30 2348 +topology 38 7410096605330227200 +topology 41 2608 +topology 42 8547243497773457408 +topology 47 7705445437881278464 +topology 50 NULL +topology 52 1899 +topology 54 7091300332052062208 +topology 55 -6935038507792801792 +topology 58 -7616522969329262592 +topology 59 7212016545671348224 +topology 61 1914 +topology 63 -8961059046745669632 +topology 67 3680 +topology 69 2358 +topology 71 812 +topology 80 4075 +topology 81 22 +topology 83 1477 +topology 86 294 +topology 87 8900180888218329088 +topology 94 8146492373537660928 +topology 105 462 +topology 107 112 +topology 119 8525336514806317056 +topology 121 7933040277013962752 +topology 127 -8835408234247168000 +undecided NULL 8811693967537774592 +undecided -120 7242751359672631296 +undecided -118 4078 +undecided -117 7086206629592252416 +undecided -116 7013693841855774720 +undecided -115 NULL +undecided -114 8761174805938331648 +undecided -112 367 +undecided -105 4030 +undecided -104 8625937019655200768 +undecided -96 7697541332524376064 +undecided -93 -7777884099756122112 +undecided -90 NULL +undecided -84 -9109392978217484288 +undecided -83 7175638927948562432 +undecided -78 -9157613004431998976 +undecided -69 3907 +undecided -62 -8914039133569400832 +undecided -53 1827 +undecided -52 3071 +undecided -51 481 +undecided -43 7491898395977523200 +undecided -41 7690986322714066944 +undecided -29 1774 +undecided -28 4024 +undecided -23 1371 +undecided -19 -8523434203900674048 +undecided -13 3823 +undecided -10 NULL +undecided -8 8470141334513098752 +undecided 0 7944741547145502720 +undecided 1 1671 +undecided 7 8269730157217062912 +undecided 11 9089435102788009984 +undecided 13 -7700203302632210432 +undecided 14 9190466190353661952 +undecided 27 3622 +undecided 30 1910 +undecided 33 -8465978403747037184 +undecided 37 -7507424948896415744 +undecided 45 -8335810316927213568 +undecided 47 -8503573595507761152 +undecided 50 7570474972934488064 +undecided 51 1545 +undecided 56 8583916402383601664 +undecided 69 -7140008543769042944 +undecided 76 8169878743136043008 +undecided 95 2821 +undecided 97 -7451660755269853184 +undecided 98 443 +undecided 111 9180098147855769600 +undecided 114 3006 +undecided 119 168 +undecided 123 1187 +undecided 124 7888238729321496576 +values clariffication NULL -7456869587112255488 +values clariffication -123 7412924364686458880 +values clariffication -119 NULL +values clariffication -114 7235109456886816768 +values clariffication -109 7909645665163804672 +values clariffication -108 -7246123871306244096 +values clariffication -107 8295110846998233088 +values clariffication -105 7555301305375858688 +values clariffication -100 1053 +values clariffication -98 -8013397854633648128 +values clariffication -97 8579974641030365184 +values clariffication -95 -8996954350906294272 +values clariffication -92 2011 +values clariffication -90 1423 +values clariffication -81 6996686091335884800 +values clariffication -75 2569 +values clariffication -70 3083 +values clariffication -69 -7329807949048193024 +values clariffication -67 169 +values clariffication -63 -6947955278050181120 +values clariffication -62 2712 +values clariffication -60 2971 +values clariffication -55 3904 +values clariffication -51 3637 +values clariffication -50 8199513544090730496 +values clariffication -48 7370078518278397952 +values clariffication -46 NULL +values clariffication -42 -7611584069753552896 +values clariffication -40 2942 +values clariffication -38 2991 +values clariffication -37 7581052107944361984 +values clariffication -31 763 +values clariffication -28 3352 +values clariffication -8 8148211378319933440 +values clariffication -6 2056 +values clariffication -5 3031 +values clariffication 4 489 +values clariffication 8 -8426531414463545344 +values clariffication 9 -8603817012434198528 +values clariffication 10 7186401810812059648 +values clariffication 12 8190539859890601984 +values clariffication 14 -8147405381260345344 +values clariffication 15 7575087487730196480 +values clariffication 21 NULL +values clariffication 23 3255 +values clariffication 30 9107991000536498176 +values clariffication 32 NULL +values clariffication 42 2020 +values clariffication 50 1983 +values clariffication 53 3887 +values clariffication 56 3608 +values clariffication 57 -7669169138124275712 +values clariffication 62 3910 +values clariffication 70 1287 +values clariffication 74 2533 +values clariffication 80 7220131672176058368 +values clariffication 85 2986 +values clariffication 92 -8490382417169408000 +values clariffication 93 7741854854673367040 +values clariffication 96 2625 +values clariffication 97 3858 +values clariffication 98 8515682078777081856 +values clariffication 108 1115 +values clariffication 118 -9022154842129547264 +values clariffication 120 6927260280037097472 +values clariffication 122 -9084940280061485056 +values clariffication 124 -9210275791460499456 +values clariffication 126 3673 +values clariffication 127 -8347088645602050048 +wind surfing NULL 7961515985722605568 +wind surfing -124 1048 +wind surfing -121 7164349895861829632 +wind surfing -117 1177 +wind surfing -116 1941 +wind surfing -113 4020 +wind surfing -111 8415171956168417280 +wind surfing -104 8666178591503564800 +wind surfing -102 1518 +wind surfing -99 7265141874315517952 +wind surfing -98 8457906374051020800 +wind surfing -96 3147 +wind surfing -83 1509 +wind surfing -80 3630 +wind surfing -78 -9088239683374350336 +wind surfing -71 1990 +wind surfing -65 1495 +wind surfing -60 601 +wind surfing -57 6926925215281774592 +wind surfing -56 7107604675626008576 +wind surfing -42 2619 +wind surfing -39 3554 +wind surfing -38 7410872053689794560 +wind surfing -34 -7535857766791577600 +wind surfing -31 -9105701280936501248 +wind surfing -30 3945 +wind surfing -21 NULL +wind surfing -18 -8117838333114212352 +wind surfing -14 7130306447560826880 +wind surfing -12 3974 +wind surfing -8 9016280522993975296 +wind surfing -6 -6951350560260784128 +wind surfing -2 661 +wind surfing 5 3286 +wind surfing 11 -9149719074367946752 +wind surfing 15 3940 +wind surfing 16 2193 +wind surfing 20 3703 +wind surfing 21 8004633750273925120 +wind surfing 22 -7055619148037554176 +wind surfing 26 -8746702976270385152 +wind surfing 29 1157 +wind surfing 33 1055 +wind surfing 36 1559 +wind surfing 37 7593521922173419520 +wind surfing 40 -8831091081349758976 +wind surfing 41 3722 +wind surfing 44 3462 +wind surfing 45 8287522765741301760 +wind surfing 48 7414865343000322048 +wind surfing 52 8524940073536954368 +wind surfing 53 1856 +wind surfing 54 8100036735858401280 +wind surfing 58 7517159036469575680 +wind surfing 59 3613 +wind surfing 62 -8330233444291084288 +wind surfing 63 501 +wind surfing 64 7490717730239250432 +wind surfing 66 -7840338174858199040 +wind surfing 68 8455496814886002688 +wind surfing 71 9085381906890203136 +wind surfing 75 8825059717746376704 +wind surfing 78 6923604860394528768 +wind surfing 86 9169248521377374208 +wind surfing 88 1132 +wind surfing 92 1530 +wind surfing 96 8142241016679735296 +wind surfing 101 -7848043121524228096 +wind surfing 102 2649 +wind surfing 107 1032 +wind surfing 108 8508401924853850112 +wind surfing 111 8000440057238052864 +wind surfing 112 7077311975029555200 +wind surfing 121 3579 +xylophone band NULL 3401 +xylophone band -115 -7000925438663041024 +xylophone band -112 -8705403811649355776 +xylophone band -109 -7804116532814151680 +xylophone band -104 3510 +xylophone band -101 2786 +xylophone band -98 7060236714847412224 +xylophone band -96 8984935029383389184 +xylophone band -94 -7380731416973295616 +xylophone band -91 914 +xylophone band -78 8222714144797368320 +xylophone band -75 3084 +xylophone band -72 -7642381493746483200 +xylophone band -70 -8270479187688816640 +xylophone band -68 -8768744394742235136 +xylophone band -59 1845 +xylophone band -46 -7052619594823221248 +xylophone band -27 618 +xylophone band -26 3397 +xylophone band -23 8837420822750314496 +xylophone band -15 -9051477157204770816 +xylophone band -13 8708232769657815040 +xylophone band -10 -7404052043914526720 +xylophone band -6 8410599906334097408 +xylophone band -3 2803 +xylophone band -2 -7989766326847807488 +xylophone band 0 2988 +xylophone band 3 8286706213485297664 +xylophone band 6 1676 +xylophone band 7 7065344324692443136 +xylophone band 9 -7262798781688651776 +xylophone band 11 7500716020874674176 +xylophone band 14 -7881351200983613440 +xylophone band 17 7778936842502275072 +xylophone band 19 2984 +xylophone band 22 -7551394356730339328 +xylophone band 23 7675009476762918912 +xylophone band 33 311 +xylophone band 36 -6917607783359897600 +xylophone band 38 3067 +xylophone band 40 8129551357032259584 +xylophone band 52 -7687052294777208832 +xylophone band 60 1541 +xylophone band 62 8365058996333953024 +xylophone band 77 9209153648361848832 +xylophone band 79 1307 +xylophone band 84 1398 +xylophone band 85 7592440105065308160 +xylophone band 88 584 +xylophone band 92 -7399631791131074560 +xylophone band 94 8643198489997254656 +xylophone band 107 -8357136656913686528 +xylophone band 108 2108 +xylophone band 112 7921639119138070528 +xylophone band 118 1728 +xylophone band 122 9207107990561972224 +xylophone band 123 8677794924343164928 +xylophone band 125 263 +xylophone band 127 NULL +yard duty NULL 1972 +yard duty -127 2719 +yard duty -115 8279056098670198784 +yard duty -114 3747 +yard duty -109 2791 +yard duty -103 -8659692318743314432 +yard duty -102 NULL +yard duty -100 7309156463509061632 +yard duty -98 7492436934952574976 +yard duty -93 NULL +yard duty -91 -7094189393339678720 +yard duty -88 8145745969573666816 +yard duty -86 3606 +yard duty -85 NULL +yard duty -82 -8191825921746305024 +yard duty -76 3563 +yard duty -62 71 +yard duty -61 -7541860097718902784 +yard duty -57 8059284960252731392 +yard duty -53 2843 +yard duty -51 -7686220526274502656 +yard duty -50 8220104397160169472 +yard duty -49 NULL +yard duty -48 9040958359122640896 +yard duty -46 8641221723991433216 +yard duty -45 9139805788041134080 +yard duty -44 1065 +yard duty -33 1075 +yard duty -28 -7444070205513138176 +yard duty -27 7199539820886958080 +yard duty -21 2092 +yard duty -19 8656571350884048896 +yard duty -17 NULL +yard duty -15 1481 +yard duty -1 -9012093603044245504 +yard duty 8 -7194281951646187520 +yard duty 9 -8345065519816695808 +yard duty 10 3212 +yard duty 15 8945004737083555840 +yard duty 18 3901 +yard duty 22 -7109790267244814336 +yard duty 25 1030 +yard duty 28 7220581538170413056 +yard duty 30 7394967727502467072 +yard duty 34 -7858505678035951616 +yard duty 42 3724 +yard duty 48 8780196485890555904 +yard duty 53 590 +yard duty 55 8417381121663746048 +yard duty 57 677 +yard duty 60 1781 +yard duty 64 -8084716955963252736 +yard duty 65 735 +yard duty 78 -8275337702906757120 +yard duty 86 2688 +yard duty 90 -7692192232238678016 +yard duty 102 2004 +yard duty 105 80 +yard duty 110 7153922334283776000 +zync studies NULL 8962097525980225536 +zync studies -127 3079 +zync studies -117 -9219066990552760320 +zync studies -116 1542 +zync studies -111 1681 +zync studies -105 8665969966920990720 +zync studies -103 8509508263705477120 +zync studies -102 8900545829211299840 +zync studies -94 2563 +zync studies -90 8160569434550403072 +zync studies -83 8213810702473183232 +zync studies -79 -7152177800841502720 +zync studies -78 8235179243092090880 +zync studies -68 1870 +zync studies -61 -6974654664348033024 +zync studies -58 -8859107121649893376 +zync studies -57 3213 +zync studies -54 8555948987770511360 +zync studies -52 3462 +zync studies -50 2016 +zync studies -45 -8300764106868350976 +zync studies -40 3244 +zync studies -39 8099215208813903872 +zync studies -38 2514 +zync studies -37 2412 +zync studies -36 412 +zync studies -35 9000633029632499712 +zync studies -34 579 +zync studies -33 -8086577583338061824 +zync studies -32 2540 +zync studies -27 7936149988210212864 +zync studies -26 -8453491903284994048 +zync studies -21 296 +zync studies -20 9104574294205636608 +zync studies -12 2325 +zync studies 1 3841 +zync studies 7 1127 +zync studies 9 2878 +zync studies 11 279 +zync studies 15 8731960288562044928 +zync studies 19 -8714995808835444736 +zync studies 31 2306 +zync studies 37 2979 +zync studies 48 2205 +zync studies 59 NULL +zync studies 63 -8877431933441327104 +zync studies 70 8294315622451740672 +zync studies 87 -9203942396257984512 +zync studies 90 2850 +zync studies 91 8091421389575282688 +zync studies 98 1252 +zync studies 99 1608 +zync studies 100 8536948829863198720 +zync studies 116 9073672806863790080 +zync studies 120 7845953007588401152 diff --git a/ql/src/test/results/clientpositive/vector_orderby_5.q.out b/ql/src/test/results/clientpositive/vector_orderby_5.q.out new file mode 100644 index 000000000000..aa4350077eb2 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_orderby_5.q.out @@ -0,0 +1,195 @@ +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select bo, max(b) from vectortab2korc group by bo order by bo desc +PREHOOK: type: QUERY +POSTHOOK: query: explain +select bo, max(b) from vectortab2korc group by bo order by bo desc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: bo (type: boolean), b (type: bigint) + outputColumnNames: bo, b + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(b) + keys: bo (type: boolean) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: + + Map-reduce partition columns: _col0 (type: boolean) + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0) + keys: KEY._col0 (type: boolean) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: boolean), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: - + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: boolean), VALUE._col0 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select bo, max(b) from vectortab2korc group by bo order by bo desc +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select bo, max(b) from vectortab2korc group by bo order by bo desc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +true 9211455920344088576 +false 9209153648361848832 +NULL 9180098147855769600 From e8958304a07cedf7c49ffd673f0d7603c005a04b Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Thu, 2 Oct 2014 21:33:40 +0000 Subject: [PATCH 054/339] HIVE-7695 : hive stats issue when insert query is appending data into table (Ashutosh Chauhan via Prashanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629074 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/metadata/Hive.java | 14 +-- .../queries/clientpositive/insert_into1.q | 12 ++- .../queries/clientpositive/insert_into2.q | 15 +++ .../alter_merge_stats_orc.q.out | 4 +- .../alter_partition_coltype.q.out | Bin 46673 -> 46673 bytes .../auto_sortmerge_join_5.q.out | Bin 35759 -> 35107 bytes .../clientpositive/bucketcontext_5.q.out | 8 -- .../clientpositive/bucketmapjoin1.q.out | 4 - .../clientpositive/bucketmapjoin4.q.out | 8 -- .../bucketmapjoin_negative.q.out | Bin 21379 -> 21271 bytes .../bucketmapjoin_negative2.q.out | Bin 24526 -> 24418 bytes .../bucketmapjoin_negative3.q.out | 36 ------- .../clientpositive/columnstats_tbllvl.q.out | Bin 22561 -> 22453 bytes .../display_colstats_tbllvl.q.out | Bin 27663 -> 27555 bytes .../dynpart_sort_opt_vectorization.q.out | 32 +++--- .../dynpart_sort_optimization.q.out | 32 +++--- .../results/clientpositive/insert_into1.q.out | 70 ++++++++++++- .../results/clientpositive/insert_into2.q.out | 93 +++++++++++++++++- .../results/clientpositive/insert_into4.q.out | 6 +- .../results/clientpositive/insert_into5.q.out | 6 +- .../clientpositive/mapjoin_test_outer.q.out | 4 +- .../test/results/clientpositive/stats11.q.out | 4 - .../temp_table_display_colstats_tbllvl.q.out | Bin 28174 -> 28066 bytes .../tez/alter_merge_stats_orc.q.out | 4 +- .../tez/auto_sortmerge_join_5.q.out | Bin 36632 -> 35840 bytes .../tez/dynpart_sort_opt_vectorization.q.out | 32 +++--- .../tez/dynpart_sort_optimization.q.out | 32 +++--- .../clientpositive/tez/insert_into1.q.out | 70 ++++++++++++- .../clientpositive/tez/insert_into2.q.out | 93 +++++++++++++++++- .../tez/vectorized_timestamp_funcs.q.out | 10 +- .../vectorized_timestamp_funcs.q.out | 10 +- 31 files changed, 432 insertions(+), 167 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index 0f7af9ac46aa..cbbe78139e23 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -1565,6 +1565,7 @@ public void loadTable(Path loadPath, String tableName, boolean replace, tbl.replaceFiles(loadPath, isSrcLocal); } else { tbl.copyFiles(loadPath, isSrcLocal, isAcid); + tbl.getParameters().put(StatsSetupConst.STATS_GENERATED_VIA_STATS_TASK, "true"); } try { @@ -1678,17 +1679,6 @@ public Partition getPartition(Table tbl, Map partSpec, return getPartition(tbl, partSpec, forceCreate, null, true); } - private static void clearPartitionStats(org.apache.hadoop.hive.metastore.api.Partition tpart) { - Map tpartParams = tpart.getParameters(); - if (tpartParams == null) { - return; - } - - for (String statType : StatsSetupConst.supportedStats) { - tpartParams.remove(statType); - } - } - /** * Returns partition metadata * @@ -1756,7 +1746,7 @@ public Partition getPartition(Table tbl, Map partSpec, throw new HiveException("new partition path should not be null or empty."); } tpart.getSd().setLocation(partPath); - clearPartitionStats(tpart); + tpart.getParameters().put(StatsSetupConst.STATS_GENERATED_VIA_STATS_TASK,"true"); String fullName = tbl.getTableName(); if (!org.apache.commons.lang.StringUtils.isEmpty(tbl.getDbName())) { fullName = tbl.getDbName() + "." + tbl.getTableName(); diff --git a/ql/src/test/queries/clientpositive/insert_into1.q b/ql/src/test/queries/clientpositive/insert_into1.q index edc65a442d09..f19506abf4c1 100644 --- a/ql/src/test/queries/clientpositive/insert_into1.q +++ b/ql/src/test/queries/clientpositive/insert_into1.q @@ -1,3 +1,4 @@ +set hive.compute.query.using.stats=true; DROP TABLE insert_into1; CREATE TABLE insert_into1 (key int, value string); @@ -7,14 +8,18 @@ INSERT INTO TABLE insert_into1 SELECT * from src LIMIT 100; SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into1 ) t; - +explain +select count(*) from insert_into1; +select count(*) from insert_into1; EXPLAIN INSERT INTO TABLE insert_into1 SELECT * FROM src LIMIT 100; INSERT INTO TABLE insert_into1 SELECT * FROM src LIMIT 100; SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into1 ) t; +explain SELECT COUNT(*) FROM insert_into1; +select count(*) from insert_into1; EXPLAIN INSERT OVERWRITE TABLE insert_into1 SELECT * FROM src LIMIT 10; INSERT OVERWRITE TABLE insert_into1 SELECT * FROM src LIMIT 10; @@ -22,5 +27,10 @@ SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into1 ) t; +explain +SELECT COUNT(*) FROM insert_into1; +select count(*) from insert_into1; DROP TABLE insert_into1; + +set hive.compute.query.using.stats=false; diff --git a/ql/src/test/queries/clientpositive/insert_into2.q b/ql/src/test/queries/clientpositive/insert_into2.q index 0cce9585a89e..1cbe391adfd0 100644 --- a/ql/src/test/queries/clientpositive/insert_into2.q +++ b/ql/src/test/queries/clientpositive/insert_into2.q @@ -1,3 +1,4 @@ +set hive.compute.query.using.stats=true; DROP TABLE insert_into2; CREATE TABLE insert_into2 (key int, value string) PARTITIONED BY (ds string); @@ -5,7 +6,12 @@ CREATE TABLE insert_into2 (key int, value string) EXPLAIN INSERT INTO TABLE insert_into2 PARTITION (ds='1') SELECT * FROM src LIMIT 100; INSERT INTO TABLE insert_into2 PARTITION (ds='1') SELECT * FROM src limit 100; +explain +select count (*) from insert_into2 where ds = '1'; +select count (*) from insert_into2 where ds = '1'; INSERT INTO TABLE insert_into2 PARTITION (ds='1') SELECT * FROM src limit 100; +explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='1'; SELECT COUNT(*) FROM insert_into2 WHERE ds='1'; SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into2 @@ -19,6 +25,9 @@ INSERT OVERWRITE TABLE insert_into2 PARTITION (ds='2') SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into2 ) t; +explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2'; +SELECT COUNT(*) FROM insert_into2 WHERE ds='2'; EXPLAIN INSERT OVERWRITE TABLE insert_into2 PARTITION (ds='2') SELECT * FROM src LIMIT 50; @@ -27,5 +36,11 @@ INSERT OVERWRITE TABLE insert_into2 PARTITION (ds='2') SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into2 ) t; +explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2'; +SELECT COUNT(*) FROM insert_into2 WHERE ds='2'; + DROP TABLE insert_into2; + +set hive.compute.query.using.stats=false; diff --git a/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out b/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out index f3b3e91f4eb8..f8486ade7d7f 100644 --- a/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out +++ b/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out @@ -247,8 +247,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 3 - numRows 500 - rawDataSize 47000 + numRows 1500 + rawDataSize 141000 totalSize 7488 #### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/alter_partition_coltype.q.out b/ql/src/test/results/clientpositive/alter_partition_coltype.q.out index 8fa65cb53d3f7c3b970772ab22f2b20ca2280e13..f71fa054303e5448032bf34935b67bc0c64d7b65 100644 GIT binary patch delta 101 zcmcckhUwxPrVXEGGa60aD5*HPZob0g1CoN19irGL|C3Z@G@e|jB)fUS94l5nBL$bl sl0=2#%&Jr?1>?z$fhLoA7A?jUHk%w!D>eCofW+k2i#s>3TfA5Z0O`>uR{#J2 delta 65 zcmcckhUwxPrVXEGPp({5&uBEcP)T<4ggI8MlLI#J0=bQWCX;yVCI{3?O}-!? PG5Pi4&duudpD delta 536 zcmZ2HiD~_GrVW!MRr5-7gYwIZ6%4o(P(V>)xl3Y6VsK_vs)E7fi;}XN7f6;evqP0n z4%89mMp6RePgclR*c|Uy%s9EF&Wx;0srY~%pkJ)_VrM?X-*zoyt avqJuH#?9x#*!c#)=Fc?nE+odl0SW-Jwy<0P diff --git a/ql/src/test/results/clientpositive/bucketcontext_5.q.out b/ql/src/test/results/clientpositive/bucketcontext_5.q.out index 085cce9f89e7..feb833d16efa 100644 --- a/ql/src/test/results/clientpositive/bucketcontext_5.q.out +++ b/ql/src/test/results/clientpositive/bucketcontext_5.q.out @@ -200,8 +200,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.bucket_big numFiles 2 - numRows 0 - rawDataSize 0 serialization.ddl struct bucket_big { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -222,8 +220,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.bucket_big numFiles 2 - numRows 0 - rawDataSize 0 serialization.ddl struct bucket_big { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -380,8 +376,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.bucket_big numFiles 2 - numRows 0 - rawDataSize 0 serialization.ddl struct bucket_big { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -402,8 +396,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.bucket_big numFiles 2 - numRows 0 - rawDataSize 0 serialization.ddl struct bucket_big { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe diff --git a/ql/src/test/results/clientpositive/bucketmapjoin1.q.out b/ql/src/test/results/clientpositive/bucketmapjoin1.q.out index 72a9173776b3..9a76f9481c07 100644 --- a/ql/src/test/results/clientpositive/bucketmapjoin1.q.out +++ b/ql/src/test/results/clientpositive/bucketmapjoin1.q.out @@ -601,8 +601,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.srcbucket_mapjoin numFiles 2 - numRows 0 - rawDataSize 0 serialization.ddl struct srcbucket_mapjoin { i32 key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -622,8 +620,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.srcbucket_mapjoin numFiles 2 - numRows 0 - rawDataSize 0 serialization.ddl struct srcbucket_mapjoin { i32 key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe diff --git a/ql/src/test/results/clientpositive/bucketmapjoin4.q.out b/ql/src/test/results/clientpositive/bucketmapjoin4.q.out index 1210bed7ac66..2af66a28c265 100644 --- a/ql/src/test/results/clientpositive/bucketmapjoin4.q.out +++ b/ql/src/test/results/clientpositive/bucketmapjoin4.q.out @@ -292,8 +292,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.srcbucket_mapjoin numFiles 2 - numRows 0 - rawDataSize 0 serialization.ddl struct srcbucket_mapjoin { i32 key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -313,8 +311,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.srcbucket_mapjoin numFiles 2 - numRows 0 - rawDataSize 0 serialization.ddl struct srcbucket_mapjoin { i32 key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -783,8 +779,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.srcbucket_mapjoin numFiles 2 - numRows 0 - rawDataSize 0 serialization.ddl struct srcbucket_mapjoin { i32 key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -804,8 +798,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.srcbucket_mapjoin numFiles 2 - numRows 0 - rawDataSize 0 serialization.ddl struct srcbucket_mapjoin { i32 key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe diff --git a/ql/src/test/results/clientpositive/bucketmapjoin_negative.q.out b/ql/src/test/results/clientpositive/bucketmapjoin_negative.q.out index 81814980d24cda26dadb0371747c814f9ef2cf79..258a9623a582ee60282be5e4f58ff891c1d89f46 100644 GIT binary patch delta 75 zcmZo(&NzJ;jvV$SlWGxft&3;Zi ajGKjwd>DbMrGTpCCg)3OZSFAcmj?isB^UPq diff --git a/ql/src/test/results/clientpositive/bucketmapjoin_negative2.q.out b/ql/src/test/results/clientpositive/bucketmapjoin_negative2.q.out index c2abc1c0a91966712e50caf5dd42186e35bbbeb7..d99f5b40476f2ee11862ad17dce01944b4173d79 100644 GIT binary patch delta 55 zcmX@NpYhQ?#tj}elPCD`O+MhsJz3Ae63n*O6bI6-lM@{ICcl&6+8kip%QX3dhSp|# Hhkkhgb!in? delta 75 zcmaE~kMZ1o#tj}elk=q|CZAT3ncNV?H+e%S_vDuvf|D=XYk>Lon&Lp(b+W%2-{f~P aT$^QVdzpY5q<|XaCSTCd+I-o*UmgI0AsuZ1 diff --git a/ql/src/test/results/clientpositive/bucketmapjoin_negative3.q.out b/ql/src/test/results/clientpositive/bucketmapjoin_negative3.q.out index c87b857200fa..40148af6a3e4 100644 --- a/ql/src/test/results/clientpositive/bucketmapjoin_negative3.q.out +++ b/ql/src/test/results/clientpositive/bucketmapjoin_negative3.q.out @@ -302,8 +302,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test1 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test1 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -324,8 +322,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test1 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test1 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -501,8 +497,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test2 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test2 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -523,8 +517,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test2 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test2 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -689,8 +681,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test1 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test1 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -711,8 +701,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test1 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test1 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -880,8 +868,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test1 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test1 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -902,8 +888,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test1 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test1 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -1071,8 +1055,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test1 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test1 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -1093,8 +1075,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test1 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test1 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -1262,8 +1242,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test1 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test1 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -1284,8 +1262,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test1 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test1 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -1453,8 +1429,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test2 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test2 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -1475,8 +1449,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test2 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test2 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -1644,8 +1616,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test2 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test2 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -1666,8 +1636,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test2 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test2 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -1835,8 +1803,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test3 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test3 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -1857,8 +1823,6 @@ STAGE PLANS: #### A masked pattern was here #### name default.test3 numFiles 3 - numRows 0 - rawDataSize 0 serialization.ddl struct test3 { string key, string value} serialization.format 1 serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe diff --git a/ql/src/test/results/clientpositive/columnstats_tbllvl.q.out b/ql/src/test/results/clientpositive/columnstats_tbllvl.q.out index d6fd01f1d931e3be317a45a00555ade7f6babcdd..b7987f4e563c79295ba39dc32f52175943c63b8a 100644 GIT binary patch delta 39 vcmZ3ufpP14#tnNVC-=+U0Ajw)*QFYmCr^;)oBUt$)a3J_tebP>w^{%IW)Bf} delta 104 zcmdnGo^jy@#tnNVRr5-7gYwIZ6%4o(P(V>)xl3Y6VsK_vs)E7hb&{nlTDX)dD4-|? Q8Z>#m-liw?y0@0f_&x1HfJjYv49wpvlUKF?$;Hc?4>9Gqy;9Q(siG_R#AF$n%W9? E020y@*8l(j delta 107 zcmZ2;|5IywY<{Yp#1V;1p_Vx6i}2{?vhxN7@S#^3Y42%qbjr6Tp@@>1DARQ Q1vDKFx^kPRt8jY)0DPw%od5s; diff --git a/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out b/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out index f3b3e91f4eb8..f8486ade7d7f 100644 --- a/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out +++ b/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out @@ -247,8 +247,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 3 - numRows 500 - rawDataSize 47000 + numRows 1500 + rawDataSize 141000 totalSize 7488 #### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_5.q.out b/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_5.q.out index e5e2793f64afbfed237c45f032e862fe20a7682f..d2385926656f61a2832a1af0c36ee6b4e5ed54ce 100644 GIT binary patch delta 120 zcmbO+kEvk>(*|GJ$p;ieCU3~^-&`Qa!@T)`VlT(!3B_TXH{{P@-aMiBALHhO2GzpI TLd`trTD~)Go*zw=qS+h(uR1l% delta 487 zcmZpe!8BtY(*|Ez&b-pxp#1V;1%t_sBBH!SiRCVdC5geARjCk>$qssan|o^?GP6S! zPL5ZTL{+xAF`SQSv$66tHew8$+*>O&S*Flzb3*PMJcdqg3^(5_Q+SVY^G^M0Vd@*4 X%tMTsgniyAN{l(Ad74^oTge3g&W@)a diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out index d5202172bb02..71e3eb5094ac 100644 --- a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out @@ -930,8 +930,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 2 - numRows 16 - rawDataSize 320 + numRows 32 + rawDataSize 640 totalSize 1348 #### A masked pattern was here #### @@ -974,8 +974,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 2 - numRows 3 - rawDataSize 60 + numRows 6 + rawDataSize 120 totalSize 1050 #### A masked pattern was here #### @@ -1018,8 +1018,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 2 - numRows 7 - rawDataSize 140 + numRows 14 + rawDataSize 280 totalSize 1166 #### A masked pattern was here #### @@ -1062,8 +1062,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 2 - numRows 3 - rawDataSize 60 + numRows 6 + rawDataSize 120 totalSize 1050 #### A masked pattern was here #### @@ -1105,8 +1105,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 8 - numRows 16 - rawDataSize 320 + numRows 32 + rawDataSize 640 totalSize 4340 #### A masked pattern was here #### @@ -1148,8 +1148,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 8 - numRows 3 - rawDataSize 60 + numRows 6 + rawDataSize 120 totalSize 2094 #### A masked pattern was here #### @@ -1191,8 +1191,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 8 - numRows 16 - rawDataSize 320 + numRows 32 + rawDataSize 640 totalSize 4326 #### A masked pattern was here #### @@ -1234,8 +1234,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 8 - numRows 3 - rawDataSize 60 + numRows 6 + rawDataSize 120 totalSize 2094 #### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out index 8c930950ab44..a69b814af4a6 100644 --- a/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization.q.out @@ -843,8 +843,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 2 - numRows 16 - rawDataSize 415 + numRows 32 + rawDataSize 830 totalSize 862 #### A masked pattern was here #### @@ -887,8 +887,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 2 - numRows 3 - rawDataSize 78 + numRows 6 + rawDataSize 156 totalSize 162 #### A masked pattern was here #### @@ -931,8 +931,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 2 - numRows 7 - rawDataSize 181 + numRows 14 + rawDataSize 362 totalSize 376 #### A masked pattern was here #### @@ -975,8 +975,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 2 - numRows 3 - rawDataSize 78 + numRows 6 + rawDataSize 156 totalSize 162 #### A masked pattern was here #### @@ -1018,8 +1018,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 8 - numRows 16 - rawDataSize 415 + numRows 32 + rawDataSize 830 totalSize 862 #### A masked pattern was here #### @@ -1061,8 +1061,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 8 - numRows 3 - rawDataSize 78 + numRows 6 + rawDataSize 156 totalSize 162 #### A masked pattern was here #### @@ -1104,8 +1104,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 8 - numRows 16 - rawDataSize 415 + numRows 32 + rawDataSize 830 totalSize 862 #### A masked pattern was here #### @@ -1147,8 +1147,8 @@ Protect Mode: None Partition Parameters: COLUMN_STATS_ACCURATE true numFiles 8 - numRows 3 - rawDataSize 78 + numRows 6 + rawDataSize 156 totalSize 162 #### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/tez/insert_into1.q.out b/ql/src/test/results/clientpositive/tez/insert_into1.q.out index 945d986e5d33..359470b7da78 100644 --- a/ql/src/test/results/clientpositive/tez/insert_into1.q.out +++ b/ql/src/test/results/clientpositive/tez/insert_into1.q.out @@ -104,6 +104,31 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@insert_into1 #### A masked pattern was here #### 10226524244 +PREHOOK: query: explain +select count(*) from insert_into1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select count(*) from insert_into1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: select count(*) from insert_into1 +PREHOOK: type: QUERY +PREHOOK: Input: default@insert_into1 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from insert_into1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@insert_into1 +#### A masked pattern was here #### +100 PREHOOK: query: EXPLAIN INSERT INTO TABLE insert_into1 SELECT * FROM src LIMIT 100 PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN INSERT INTO TABLE insert_into1 SELECT * FROM src LIMIT 100 @@ -198,11 +223,27 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@insert_into1 #### A masked pattern was here #### 20453048488 -PREHOOK: query: SELECT COUNT(*) FROM insert_into1 +PREHOOK: query: explain +SELECT COUNT(*) FROM insert_into1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT COUNT(*) FROM insert_into1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: select count(*) from insert_into1 PREHOOK: type: QUERY PREHOOK: Input: default@insert_into1 #### A masked pattern was here #### -POSTHOOK: query: SELECT COUNT(*) FROM insert_into1 +POSTHOOK: query: select count(*) from insert_into1 POSTHOOK: type: QUERY POSTHOOK: Input: default@insert_into1 #### A masked pattern was here #### @@ -301,6 +342,31 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@insert_into1 #### A masked pattern was here #### -826625916 +PREHOOK: query: explain +SELECT COUNT(*) FROM insert_into1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT COUNT(*) FROM insert_into1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: select count(*) from insert_into1 +PREHOOK: type: QUERY +PREHOOK: Input: default@insert_into1 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from insert_into1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@insert_into1 +#### A masked pattern was here #### +10 PREHOOK: query: DROP TABLE insert_into1 PREHOOK: type: DROPTABLE PREHOOK: Input: default@insert_into1 diff --git a/ql/src/test/results/clientpositive/tez/insert_into2.q.out b/ql/src/test/results/clientpositive/tez/insert_into2.q.out index a24ca973b079..6bfa25728da9 100644 --- a/ql/src/test/results/clientpositive/tez/insert_into2.q.out +++ b/ql/src/test/results/clientpositive/tez/insert_into2.q.out @@ -97,6 +97,31 @@ POSTHOOK: Input: default@src POSTHOOK: Output: default@insert_into2@ds=1 POSTHOOK: Lineage: insert_into2 PARTITION(ds=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: insert_into2 PARTITION(ds=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: explain +select count (*) from insert_into2 where ds = '1' +PREHOOK: type: QUERY +POSTHOOK: query: explain +select count (*) from insert_into2 where ds = '1' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: select count (*) from insert_into2 where ds = '1' +PREHOOK: type: QUERY +PREHOOK: Input: default@insert_into2 +#### A masked pattern was here #### +POSTHOOK: query: select count (*) from insert_into2 where ds = '1' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@insert_into2 +#### A masked pattern was here #### +100 PREHOOK: query: INSERT INTO TABLE insert_into2 PARTITION (ds='1') SELECT * FROM src limit 100 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -107,15 +132,29 @@ POSTHOOK: Input: default@src POSTHOOK: Output: default@insert_into2@ds=1 POSTHOOK: Lineage: insert_into2 PARTITION(ds=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: insert_into2 PARTITION(ds=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='1' +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='1' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + PREHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='1' PREHOOK: type: QUERY PREHOOK: Input: default@insert_into2 -PREHOOK: Input: default@insert_into2@ds=1 #### A masked pattern was here #### POSTHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='1' POSTHOOK: type: QUERY POSTHOOK: Input: default@insert_into2 -POSTHOOK: Input: default@insert_into2@ds=1 #### A masked pattern was here #### 200 PREHOOK: query: SELECT SUM(HASH(c)) FROM ( @@ -237,6 +276,31 @@ POSTHOOK: Input: default@insert_into2@ds=1 POSTHOOK: Input: default@insert_into2@ds=2 #### A masked pattern was here #### -36239931656 +PREHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +PREHOOK: type: QUERY +PREHOOK: Input: default@insert_into2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@insert_into2 +#### A masked pattern was here #### +100 PREHOOK: query: EXPLAIN INSERT OVERWRITE TABLE insert_into2 PARTITION (ds='2') SELECT * FROM src LIMIT 50 PREHOOK: type: QUERY @@ -341,6 +405,31 @@ POSTHOOK: Input: default@insert_into2@ds=1 POSTHOOK: Input: default@insert_into2@ds=2 #### A masked pattern was here #### -27100860056 +PREHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +PREHOOK: type: QUERY +PREHOOK: Input: default@insert_into2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@insert_into2 +#### A masked pattern was here #### +50 PREHOOK: query: DROP TABLE insert_into2 PREHOOK: type: DROPTABLE PREHOOK: Input: default@insert_into2 diff --git a/ql/src/test/results/clientpositive/tez/vectorized_timestamp_funcs.q.out b/ql/src/test/results/clientpositive/tez/vectorized_timestamp_funcs.q.out index 6d729bc55d9a..b5b74fb0c55e 100644 --- a/ql/src/test/results/clientpositive/tez/vectorized_timestamp_funcs.q.out +++ b/ql/src/test/results/clientpositive/tez/vectorized_timestamp_funcs.q.out @@ -545,15 +545,15 @@ STAGE PLANS: Map Operator Tree: TableScan alias: alltypesorc_wrong - Statistics: Num rows: 1 Data size: 103 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: to_unix_timestamp(stimestamp1) (type: bigint), year(stimestamp1) (type: int), month(stimestamp1) (type: int), day(stimestamp1) (type: int), dayofmonth(stimestamp1) (type: int), weekofyear(stimestamp1) (type: int), hour(stimestamp1) (type: int), minute(stimestamp1) (type: int), second(stimestamp1) (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 1 Data size: 103 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: bigint) sort order: + - Statistics: Num rows: 1 Data size: 103 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: int), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: int), _col8 (type: int) Execution mode: vectorized Reducer 2 @@ -561,10 +561,10 @@ STAGE PLANS: Select Operator expressions: KEY.reducesinkkey0 (type: bigint), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: int), VALUE._col3 (type: int), VALUE._col4 (type: int), VALUE._col5 (type: int), VALUE._col6 (type: int), VALUE._col7 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 1 Data size: 103 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 103 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/vectorized_timestamp_funcs.q.out b/ql/src/test/results/clientpositive/vectorized_timestamp_funcs.q.out index a233b87c9e23..efde414c79e6 100644 --- a/ql/src/test/results/clientpositive/vectorized_timestamp_funcs.q.out +++ b/ql/src/test/results/clientpositive/vectorized_timestamp_funcs.q.out @@ -519,25 +519,25 @@ STAGE PLANS: Map Operator Tree: TableScan alias: alltypesorc_wrong - Statistics: Num rows: 1 Data size: 103 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: to_unix_timestamp(stimestamp1) (type: bigint), year(stimestamp1) (type: int), month(stimestamp1) (type: int), day(stimestamp1) (type: int), dayofmonth(stimestamp1) (type: int), weekofyear(stimestamp1) (type: int), hour(stimestamp1) (type: int), minute(stimestamp1) (type: int), second(stimestamp1) (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 1 Data size: 103 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: bigint) sort order: + - Statistics: Num rows: 1 Data size: 103 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: int), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: int), _col8 (type: int) Execution mode: vectorized Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: bigint), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: int), VALUE._col3 (type: int), VALUE._col4 (type: int), VALUE._col5 (type: int), VALUE._col6 (type: int), VALUE._col7 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 1 Data size: 103 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 103 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat From 2d37485f1a53a298cf6c3ff987245b7052308fae Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Thu, 2 Oct 2014 21:35:51 +0000 Subject: [PATCH 055/339] HIVE-8318 : Null Scan optimizer throws exception when no partitions are selected (Ashutosh Chauhan via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629075 13f79535-47bb-0310-9956-ffa450edef68 --- .../physical/NullScanTaskDispatcher.java | 8 +++++++- .../clientpositive/optimize_nullscan.q | 4 ++++ .../clientpositive/optimize_nullscan.q.out | Bin 89690 -> 92394 bytes .../tez/optimize_nullscan.q.out | Bin 82704 -> 85727 bytes 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/NullScanTaskDispatcher.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/NullScanTaskDispatcher.java index 7fb2c4d64663..957c3273e2d1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/NullScanTaskDispatcher.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/NullScanTaskDispatcher.java @@ -102,13 +102,19 @@ private List getPathsForAlias(MapWork work, String alias) { } private void processAlias(MapWork work, String alias) { + List paths = getPathsForAlias(work, alias); + if (paths.isEmpty()) { + // partitioned table which don't select any partitions + // there are no paths to replace with fakePath + return; + } work.setUseOneNullRowInputFormat(true); // Change the alias partition desc PartitionDesc aliasPartn = work.getAliasToPartnInfo().get(alias); changePartitionToMetadataOnly(aliasPartn); - List paths = getPathsForAlias(work, alias); + for (String path : paths) { PartitionDesc partDesc = work.getPathToPartitionInfo().get(path); PartitionDesc newPartition = changePartitionToMetadataOnly(partDesc); diff --git a/ql/src/test/queries/clientpositive/optimize_nullscan.q b/ql/src/test/queries/clientpositive/optimize_nullscan.q index d06b89b6524f..61a71a284a7a 100644 --- a/ql/src/test/queries/clientpositive/optimize_nullscan.q +++ b/ql/src/test/queries/clientpositive/optimize_nullscan.q @@ -4,6 +4,10 @@ explain extended select key from src where false; select key from src where false; +explain extended +select count(key) from srcpart where 1=2 group by key; +select count(key) from srcpart where 1=2 group by key; + explain extended select * from (select key from src where false) a left outer join (select key from srcpart limit 0) b on a.key=b.key; select * from (select key from src where false) a left outer join (select key from srcpart limit 0) b on a.key=b.key; diff --git a/ql/src/test/results/clientpositive/optimize_nullscan.q.out b/ql/src/test/results/clientpositive/optimize_nullscan.q.out index ed81cd6559f4496cf067acf48517a8f0e2cf792f..fd77ad222ee8175e9794b798ee9332080ea2d195 100644 GIT binary patch delta 398 zcmcb$hxOG()(xFPldIx|r3(^^N)*a7Qj1a*3~h}R(u?v-3lx$n6|z$+ryE8yici1K z%BV0|SC|8&S^}5q$@7JSCr610Oy}Tal$bt;i;;V}2oGc9WQ`Pw$v!EflOH6rOg7jj zKlwhR?Bwg>d`gB~3P`{R$_w%Lj&~384-IgNGJF<$fr0IA@M Al>h($ delta 18 acmaELk@eOd)(xFP&62X)C1n{edIJDbHV0|| diff --git a/ql/src/test/results/clientpositive/tez/optimize_nullscan.q.out b/ql/src/test/results/clientpositive/tez/optimize_nullscan.q.out index 66c62ef45eb79b60e7543e4ed885da13545b341a..2af613403346d019d28184620007d3e84cf3ec1f 100644 GIT binary patch delta 420 zcmbQx#(IA)>xQo^lk0%ubCU5w}HTfl@uz@X?0unGp;Tb`B zA^zU+?m_;c0Zx%zlMisJF=wY%PG)41pBxu4d9qWa&*Z2H>$!kp#a0U5u913^4R@$c zPH1JD%syE8lli52CtrBL!e}^|XOhxngGt&znV8M@+&q}3ud`v4 zo?M{FH@Sb7;xt=E&B+(0cuZcP%{Tpk6r=of0ZvAt=>bZN{*whH{U-mJsx(<)n)>7m zPsJu*dl5VN0JHdH-nn=KOlq>+E2+s3{8^?;2s5fq_I)jZUk5jv)a3JTxu*9xF^Yk; OG@oVJewKyN*$x2s`HJBH delta 34 qcmcaVmvurL>xQo^lM4j%CksT2PM-f$Ve(rRj^+Zv?FE92`L+N8-3^=o From d58b98c3f24f74b6cf78ed512659487f0380f423 Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Thu, 2 Oct 2014 23:14:15 +0000 Subject: [PATCH 056/339] HIVE-8240: VectorColumnAssignFactory support for VARCHAR (Matt McCline, via Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629098 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 2 + .../vector/VectorColumnAssignFactory.java | 34 ++- .../queries/clientpositive/vector_char_4.q | 51 +++++ .../queries/clientpositive/vector_varchar_4.q | 51 +++++ .../clientpositive/tez/vector_char_4.q.out | 175 +++++++++++++++ .../clientpositive/tez/vector_varchar_4.q.out | 175 +++++++++++++++ .../clientpositive/vector_char_4.q.out | 202 ++++++++++++++++++ .../clientpositive/vector_varchar_4.q.out | 202 ++++++++++++++++++ 8 files changed, 890 insertions(+), 2 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/vector_char_4.q create mode 100644 ql/src/test/queries/clientpositive/vector_varchar_4.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_char_4.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_varchar_4.q.out create mode 100644 ql/src/test/results/clientpositive/vector_char_4.q.out create mode 100644 ql/src/test/results/clientpositive/vector_varchar_4.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 2b5c8821b6ea..f5d5155354a5 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -157,6 +157,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ update_two_cols.q,\ vector_between_in.q,\ vector_cast_constant.q,\ + vector_char_4.q,\ vector_char_simple.q,\ vector_data_types.q,\ vector_decimal_aggregate.q,\ @@ -168,6 +169,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vector_non_string_partition.q,\ vector_orderby_5.q,\ vector_string_concat.q,\ + vector_varchar_4.q,\ vector_varchar_simple.q,\ vectorization_0.q,\ vectorization_1.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java index e6e9d043e16a..14ef79e8bd7c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java @@ -24,7 +24,9 @@ import java.util.Map; import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.common.type.HiveChar; import org.apache.hadoop.hive.common.type.HiveDecimal; +import org.apache.hadoop.hive.common.type.HiveVarchar; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DateWritable; @@ -404,8 +406,7 @@ public void assignObjectValue(Object val, int destIndex) throws HiveException { public void assignObjectValue(Object val, int destIndex) throws HiveException { if (val == null) { assignNull(destIndex); - } - else { + } else { Text bw = (Text) val; byte[] bytes = bw.getBytes(); assignBytes(bytes, 0, bw.getLength(), destIndex); @@ -413,6 +414,35 @@ public void assignObjectValue(Object val, int destIndex) throws HiveException { } }.init(outputBatch, (BytesColumnVector) destCol); break; + case VARCHAR: + outVCA = new VectorBytesColumnAssign() { + @Override + public void assignObjectValue(Object val, int destIndex) throws HiveException { + if (val == null) { + assignNull(destIndex); + } else { + HiveVarchar hiveVarchar = (HiveVarchar) val; + byte[] bytes = hiveVarchar.getValue().getBytes(); + assignBytes(bytes, 0, bytes.length, destIndex); + } + } + }.init(outputBatch, (BytesColumnVector) destCol); + break; + case CHAR: + outVCA = new VectorBytesColumnAssign() { + @Override + public void assignObjectValue(Object val, int destIndex) throws HiveException { + if (val == null) { + assignNull(destIndex); + } else { + // We store CHAR type stripped of pads. + HiveChar hiveChar = (HiveChar) val; + byte[] bytes = hiveChar.getStrippedValue().getBytes(); + assignBytes(bytes, 0, bytes.length, destIndex); + } + } + }.init(outputBatch, (BytesColumnVector) destCol); + break; default: throw new HiveException("Incompatible Bytes vector column and primitive category " + category); diff --git a/ql/src/test/queries/clientpositive/vector_char_4.q b/ql/src/test/queries/clientpositive/vector_char_4.q new file mode 100644 index 000000000000..c824456faa68 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_char_4.q @@ -0,0 +1,51 @@ +SET hive.vectorized.execution.enabled=true; + +drop table if exists vectortab2k; +drop table if exists vectortab2korc; + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k; + +create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC; + +INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k; + +drop table if exists char_lazy_binary_columnar; +create table char_lazy_binary_columnar(ct char(10), csi char(10), ci char(20), cb char(30), cf char(20), cd char(20), cs char(50)) row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile; + +explain +insert overwrite table char_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc; + +-- insert overwrite table char_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc; + +-- select count(*) as cnt from char_lazy_binary_columnar group by cs order by cnt asc; \ No newline at end of file diff --git a/ql/src/test/queries/clientpositive/vector_varchar_4.q b/ql/src/test/queries/clientpositive/vector_varchar_4.q new file mode 100644 index 000000000000..c1e9c67b030d --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_varchar_4.q @@ -0,0 +1,51 @@ +SET hive.vectorized.execution.enabled=true; + +drop table if exists vectortab2k; +drop table if exists vectortab2korc; + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k; + +create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC; + +INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k; + +drop table if exists varchar_lazy_binary_columnar; +create table varchar_lazy_binary_columnar(vt varchar(10), vsi varchar(10), vi varchar(20), vb varchar(30), vf varchar(20),vd varchar(20),vs varchar(50)) row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile; + +explain +insert overwrite table varchar_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc; + +-- insert overwrite table varchar_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc; + +-- select count(*) as cnt from varchar_lazy_binary_columnar group by vs order by cnt asc; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/tez/vector_char_4.q.out b/ql/src/test/results/clientpositive/tez/vector_char_4.q.out new file mode 100644 index 000000000000..8daf377bb4c1 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_char_4.q.out @@ -0,0 +1,175 @@ +PREHOOK: query: drop table if exists vectortab2k +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists vectortab2k +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists vectortab2korc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists vectortab2korc +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: drop table if exists char_lazy_binary_columnar +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_lazy_binary_columnar +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table char_lazy_binary_columnar(ct char(10), csi char(10), ci char(20), cb char(30), cf char(20), cd char(20), cs char(50)) row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@char_lazy_binary_columnar +POSTHOOK: query: create table char_lazy_binary_columnar(ct char(10), csi char(10), ci char(20), cb char(30), cf char(20), cd char(20), cs char(50)) row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_lazy_binary_columnar +PREHOOK: query: explain +insert overwrite table char_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert overwrite table char_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: CAST( t AS CHAR(10) (type: char(10)), CAST( si AS CHAR(10) (type: char(10)), CAST( i AS CHAR(20) (type: char(20)), CAST( b AS CHAR(30) (type: char(30)), CAST( f AS CHAR(20) (type: char(20)), CAST( d AS CHAR(20) (type: char(20)), CAST( s AS CHAR(50) (type: char(50)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe + name: default.char_lazy_binary_columnar + Execution mode: vectorized + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe + name: default.char_lazy_binary_columnar + + Stage: Stage-3 + Stats-Aggr Operator + diff --git a/ql/src/test/results/clientpositive/tez/vector_varchar_4.q.out b/ql/src/test/results/clientpositive/tez/vector_varchar_4.q.out new file mode 100644 index 000000000000..02fa042f1244 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_varchar_4.q.out @@ -0,0 +1,175 @@ +PREHOOK: query: drop table if exists vectortab2k +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists vectortab2k +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists vectortab2korc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists vectortab2korc +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: drop table if exists varchar_lazy_binary_columnar +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_lazy_binary_columnar +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table varchar_lazy_binary_columnar(vt varchar(10), vsi varchar(10), vi varchar(20), vb varchar(30), vf varchar(20),vd varchar(20),vs varchar(50)) row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_lazy_binary_columnar +POSTHOOK: query: create table varchar_lazy_binary_columnar(vt varchar(10), vsi varchar(10), vi varchar(20), vb varchar(30), vf varchar(20),vd varchar(20),vs varchar(50)) row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_lazy_binary_columnar +PREHOOK: query: explain +insert overwrite table varchar_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert overwrite table varchar_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: CAST( t AS varchar(10)) (type: varchar(10)), CAST( si AS varchar(10)) (type: varchar(10)), CAST( i AS varchar(20)) (type: varchar(20)), CAST( b AS varchar(30)) (type: varchar(30)), CAST( f AS varchar(20)) (type: varchar(20)), CAST( d AS varchar(20)) (type: varchar(20)), CAST( s AS varchar(50)) (type: varchar(50)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe + name: default.varchar_lazy_binary_columnar + Execution mode: vectorized + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe + name: default.varchar_lazy_binary_columnar + + Stage: Stage-3 + Stats-Aggr Operator + diff --git a/ql/src/test/results/clientpositive/vector_char_4.q.out b/ql/src/test/results/clientpositive/vector_char_4.q.out new file mode 100644 index 000000000000..58988bfa0333 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_char_4.q.out @@ -0,0 +1,202 @@ +PREHOOK: query: drop table if exists vectortab2k +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists vectortab2k +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists vectortab2korc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists vectortab2korc +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: drop table if exists char_lazy_binary_columnar +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_lazy_binary_columnar +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table char_lazy_binary_columnar(ct char(10), csi char(10), ci char(20), cb char(30), cf char(20), cd char(20), cs char(50)) row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@char_lazy_binary_columnar +POSTHOOK: query: create table char_lazy_binary_columnar(ct char(10), csi char(10), ci char(20), cb char(30), cf char(20), cd char(20), cs char(50)) row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_lazy_binary_columnar +PREHOOK: query: explain +insert overwrite table char_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert overwrite table char_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-7 depends on stages: Stage-1 , consists of Stage-4, Stage-3, Stage-5 + Stage-4 + Stage-0 depends on stages: Stage-4, Stage-3, Stage-6 + Stage-2 depends on stages: Stage-0 + Stage-3 + Stage-5 + Stage-6 depends on stages: Stage-5 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: CAST( t AS CHAR(10) (type: char(10)), CAST( si AS CHAR(10) (type: char(10)), CAST( i AS CHAR(20) (type: char(20)), CAST( b AS CHAR(30) (type: char(30)), CAST( f AS CHAR(20) (type: char(20)), CAST( d AS CHAR(20) (type: char(20)), CAST( s AS CHAR(50) (type: char(50)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe + name: default.char_lazy_binary_columnar + Execution mode: vectorized + + Stage: Stage-7 + Conditional Operator + + Stage: Stage-4 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-0 + Move Operator + tables: + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe + name: default.char_lazy_binary_columnar + + Stage: Stage-2 + Stats-Aggr Operator + + Stage: Stage-3 + Merge File Operator + Map Operator Tree: + RCFile Merge Operator + merge level: block + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + + Stage: Stage-5 + Merge File Operator + Map Operator Tree: + RCFile Merge Operator + merge level: block + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + + Stage: Stage-6 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + diff --git a/ql/src/test/results/clientpositive/vector_varchar_4.q.out b/ql/src/test/results/clientpositive/vector_varchar_4.q.out new file mode 100644 index 000000000000..f7c9cd052a80 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_varchar_4.q.out @@ -0,0 +1,202 @@ +PREHOOK: query: drop table if exists vectortab2k +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists vectortab2k +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists vectortab2korc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists vectortab2korc +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: drop table if exists varchar_lazy_binary_columnar +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_lazy_binary_columnar +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table varchar_lazy_binary_columnar(vt varchar(10), vsi varchar(10), vi varchar(20), vb varchar(30), vf varchar(20),vd varchar(20),vs varchar(50)) row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_lazy_binary_columnar +POSTHOOK: query: create table varchar_lazy_binary_columnar(vt varchar(10), vsi varchar(10), vi varchar(20), vb varchar(30), vf varchar(20),vd varchar(20),vs varchar(50)) row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_lazy_binary_columnar +PREHOOK: query: explain +insert overwrite table varchar_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert overwrite table varchar_lazy_binary_columnar select t, si, i, b, f, d, s from vectortab2korc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-7 depends on stages: Stage-1 , consists of Stage-4, Stage-3, Stage-5 + Stage-4 + Stage-0 depends on stages: Stage-4, Stage-3, Stage-6 + Stage-2 depends on stages: Stage-0 + Stage-3 + Stage-5 + Stage-6 depends on stages: Stage-5 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: CAST( t AS varchar(10)) (type: varchar(10)), CAST( si AS varchar(10)) (type: varchar(10)), CAST( i AS varchar(20)) (type: varchar(20)), CAST( b AS varchar(30)) (type: varchar(30)), CAST( f AS varchar(20)) (type: varchar(20)), CAST( d AS varchar(20)) (type: varchar(20)), CAST( s AS varchar(50)) (type: varchar(50)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe + name: default.varchar_lazy_binary_columnar + Execution mode: vectorized + + Stage: Stage-7 + Conditional Operator + + Stage: Stage-4 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-0 + Move Operator + tables: + replace: true + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe + name: default.varchar_lazy_binary_columnar + + Stage: Stage-2 + Stats-Aggr Operator + + Stage: Stage-3 + Merge File Operator + Map Operator Tree: + RCFile Merge Operator + merge level: block + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + + Stage: Stage-5 + Merge File Operator + Map Operator Tree: + RCFile Merge Operator + merge level: block + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + + Stage: Stage-6 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + From bda68260c6e8e23d649d3797fe4d1afeb077d68d Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Fri, 3 Oct 2014 05:47:28 +0000 Subject: [PATCH 057/339] HIVE-6799: HiveServer2 needs to map kerberos name to local name before proxy check (Dilli Arumugam reviewed by Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629117 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hive/service/auth/HiveAuthFactory.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index dd0d7bdf15bb..83dd2e6116cd 100644 --- a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -23,6 +23,7 @@ import java.net.UnknownHostException; import java.util.HashMap; import java.util.Map; + import javax.security.auth.login.LoginException; import javax.security.sasl.Sasl; @@ -31,6 +32,7 @@ import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.security.authentication.util.KerberosName; import org.apache.hive.service.cli.HiveSQLException; import org.apache.hive.service.cli.thrift.ThriftCLIService; import org.apache.thrift.TProcessorFactory; @@ -289,7 +291,9 @@ public static void verifyProxyAccess(String realUser, String proxyUser, String i try { UserGroupInformation sessionUgi; if (ShimLoader.getHadoopShims().isSecurityEnabled()) { - sessionUgi = ShimLoader.getHadoopShims().createProxyUser(realUser); + KerberosName kerbName = new KerberosName(realUser); + String shortPrincipalName = kerbName.getServiceName(); + sessionUgi = ShimLoader.getHadoopShims().createProxyUser(shortPrincipalName); } else { sessionUgi = ShimLoader.getHadoopShims().createRemoteUser(realUser, null); } @@ -302,5 +306,5 @@ public static void verifyProxyAccess(String realUser, String proxyUser, String i "Failed to validate proxy privilege of " + realUser + " for " + proxyUser, e); } } - + } From 3e5b0626f1f7c43d47b76847b95149c70587cddb Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Fri, 3 Oct 2014 17:30:07 +0000 Subject: [PATCH 058/339] Revert HIVE-8271: Jackson incompatibility between hadoop-2.4 and hive-14 git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629269 13f79535-47bb-0310-9956-ffa450edef68 --- ql/pom.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ql/pom.xml b/ql/pom.xml index 1c26d19082d2..3507411652e1 100644 --- a/ql/pom.xml +++ b/ql/pom.xml @@ -638,10 +638,6 @@ com.esotericsoftware org.apache.hive.com.esotericsoftware - - org.codehaus.jackson - org.apache.hive.org.codehaus.jackson - From 5c11b8187e253fd0890b9537c50d3c22b9ba5a46 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Fri, 3 Oct 2014 18:00:41 +0000 Subject: [PATCH 059/339] HIVE-8322: VectorReduceSinkOperator: ClassCastException: ~StandardUnionObjectInspector cannot be cast to ~IntWritable (Matt McCline reviewed by Prasanth Jayachandran) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629273 13f79535-47bb-0310-9956-ffa450edef68 --- data/files/web_sales_2k | 2000 +++++++++++++++++ .../resources/testconfiguration.properties | 1 + .../exec/vector/VectorReduceSinkOperator.java | 499 +--- .../VectorExpressionWriterFactory.java | 25 + .../clientpositive/vector_count_distinct.q | 108 + .../tez/vector_count_distinct.q.out | 1366 +++++++++++ .../vector_count_distinct.q.out | 1360 +++++++++++ 7 files changed, 4897 insertions(+), 462 deletions(-) create mode 100644 data/files/web_sales_2k create mode 100644 ql/src/test/queries/clientpositive/vector_count_distinct.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_count_distinct.q.out create mode 100644 ql/src/test/results/clientpositive/vector_count_distinct.q.out diff --git a/data/files/web_sales_2k b/data/files/web_sales_2k new file mode 100644 index 000000000000..a1cbb21a8121 --- /dev/null +++ b/data/files/web_sales_2k @@ -0,0 +1,2000 @@ +2451383|73313|2451482|4591|83074|596485|1096|40907|85919|41329|1140|1351|43|4|4|5|6|1|57|33.59|59.45|38.04|1220.37|2168.28|1914.63|3388.65|50.95|1149.18|575.70|1019.10|1070.05|1594.80|1645.75|-895.53| +2451383|73313|2451411|3566|83074|596485|1096|40907|85919|41329|1140|1351|28|7|3|2|271|1|38|29.83|48.92|26.41|855.38|1003.58|1133.54|1858.96|30.10|0.00|910.86|1003.58|1033.68|1914.44|1944.54|-129.96| +2451383|73313|2451413|7286|83074|596485|1096|40907|85919|41329|1140|1351|58|28|10|5|300|1|32|49.72|107.89|97.10|345.28|3107.20|1591.04|3452.48|124.28|0.00|828.48|3107.20|3231.48|3935.68|4059.96|1516.16| +2451383|73313|2451393|2755|83074|596485|1096|40907|85919|41329|1140|1351|2|7|6|1|63|1|65|69.18|112.07|22.41|5827.90|1456.65|4496.70|7284.55|29.13|0.00|2476.50|1456.65|1485.78|3933.15|3962.28|-3040.05| +2451383|73313|2451502|2516|83074|596485|1096|40907|85919|41329|1140|1351|56|16|2|5|18|1|58|36.62|41.38|16.13|1464.50|935.54|2123.96|2400.04|84.19|0.00|167.62|935.54|1019.73|1103.16|1187.35|-1188.42| +2451383|73313|2451421|16966|83074|596485|1096|40907|85919|41329|1140|1351|50|7|2|2|185|1|90|72.05|161.39|27.43|12056.40|2468.70|6484.50|14525.10|74.06|0.00|4647.60|2468.70|2542.76|7116.30|7190.36|-4015.80| +2451383|73313|2451457|10402|83074|596485|1096|40907|85919|41329|1140|1351|56|16|16|3|293|1|15|83.92|174.55|69.82|1570.95|1047.30|1258.80|2618.25|20.94|0.00|392.70|1047.30|1068.24|1440.00|1460.94|-211.50| +2451383|73313|2451430|1735|83074|596485|1096|40907|85919|41329|1140|1351|25|19|14|3|202|1|16|45.27|128.56|68.13|966.88|1090.08|724.32|2056.96|87.20|0.00|370.24|1090.08|1177.28|1460.32|1547.52|365.76| +2451383|73313|2451458|15464|83074|596485|1096|40907|85919|41329|1140|1351|13|26|8|5|49|1|54|53.45|60.39|26.57|1826.28|1434.78|2886.30|3261.06|48.78|215.21|488.70|1219.57|1268.35|1708.27|1757.05|-1666.73| +2452625|34964|2452702|8925|42296|436090|2684|37278|57428|1487225|3907|30901|9|13|16|3|267|2|47|49.64|68.99|12.41|2659.26|583.27|2333.08|3242.53|52.49|0.00|1134.58|583.27|635.76|1717.85|1770.34|-1749.81| +2452625|34964|2452638|11041|42296|436090|2684|37278|57428|1487225|3907|30901|1|13|16|2|221|2|12|7.24|12.16|11.91|3.00|142.92|86.88|145.92|10.00|0.00|29.16|142.92|152.92|172.08|182.08|56.04| +2452625|34964|2452645|645|42296|436090|2684|37278|57428|1487225|3907|30901|15|21|7|5|246|2|6|45.21|67.36|30.31|222.30|181.86|271.26|404.16|16.36|0.00|185.88|181.86|198.22|367.74|384.10|-89.40| +2452625|34964|2452690|12453|42296|436090|2684|37278|57428|1487225|3907|30901|57|12|3|5|237|2|43|9.62|13.08|9.02|174.58|387.86|413.66|562.44|19.39|0.00|117.82|387.86|407.25|505.68|525.07|-25.80| +2452625|34964|2452707|13831|42296|436090|2684|37278|57428|1487225|3907|30901|18|19|1|2|223|2|57|35.95|62.55|43.78|1069.89|2495.46|2049.15|3565.35|224.59|0.00|962.16|2495.46|2720.05|3457.62|3682.21|446.31| +2452625|34964|2452640|9559|42296|436090|2684|37278|57428|1487225|3907|30901|6|21|6|4|72|2|93|65.80|152.65|29.00|11499.45|2697.00|6119.40|14196.45|215.76|0.00|7097.76|2697.00|2912.76|9794.76|10010.52|-3422.40| +2452625|34964|2452634|8085|42296|436090|2684|37278|57428|1487225|3907|30901|45|3|18|2|276|2|93|55.42|127.46|1.27|11735.67|118.11|5154.06|11853.78|4.72|0.00|1421.97|118.11|122.83|1540.08|1544.80|-5035.95| +2452625|34964|2452734|12081|42296|436090|2684|37278|57428|1487225|3907|30901|9|27|3|2|94|2|82|48.65|91.94|8.27|6860.94|678.14|3989.30|7539.08|13.56|0.00|2788.82|678.14|691.70|3466.96|3480.52|-3311.16| +2452625|34964|2452739|15739|42296|436090|2684|37278|57428|1487225|3907|30901|24|3|9|4|99|2|33|80.23|90.65|55.29|1166.88|1824.57|2647.59|2991.45|0.00|0.00|478.50|1824.57|1824.57|2303.07|2303.07|-823.02| +2451754|1529|2451801|17431|74800|1219525|3450|3375|84180|293885|5550|41475|49|8|2|2|259|3|65|5.37|10.31|2.06|536.25|133.90|349.05|670.15|7.47|9.37|26.65|124.53|132.00|151.18|158.65|-224.52| +2451754|1529|2451791|4694|74800|1219525|3450|3375|84180|293885|5550|41475|13|25|9|5|91|3|74|74.66|83.61|52.67|2289.56|3897.58|5524.84|6187.14|116.92|0.00|1546.60|3897.58|4014.50|5444.18|5561.10|-1627.26| +2451754|1529|2451814|2189|74800|1219525|3450|3375|84180|293885|5550|41475|8|26|3|4|18|3|26|77.15|198.27|109.04|2319.98|2835.04|2005.90|5155.02|36.28|2381.43|206.18|453.61|489.89|659.79|696.07|-1552.29| +2451754|1529|2451765|151|74800|1219525|3450|3375|84180|293885|5550|41475|23|7|3|5|167|3|25|99.00|292.05|262.84|730.25|6571.00|2475.00|7301.25|65.71|0.00|3285.50|6571.00|6636.71|9856.50|9922.21|4096.00| +2451754|1529|2451855|10793|74800|1219525|3450|3375|84180|293885|5550|41475|11|14|7|4|298|3|80|14.55|42.34|27.09|1220.00|2167.20|1164.00|3387.20|43.34|0.00|609.60|2167.20|2210.54|2776.80|2820.14|1003.20| +2451754|1529|2451862|12782|74800|1219525|3450|3375|84180|293885|5550|41475|20|2|13|4|275|3|54|64.58|160.80|120.60|2170.80|6512.40|3487.32|8683.20|586.11|0.00|3646.62|6512.40|7098.51|10159.02|10745.13|3025.08| +2451754|1529|2451809|15769|74800|1219525|3450|3375|84180|293885|5550|41475|35|17|20|1|162|3|30|54.81|81.11|22.71|1752.00|681.30|1644.30|2433.30|6.81|0.00|0.00|681.30|688.11|681.30|688.11|-963.00| +2451754|1529|2451782|5549|74800|1219525|3450|3375|84180|293885|5550|41475|29|26|6|3|170|3|19|87.13|170.77|155.40|292.03|2952.60|1655.47|3244.63|88.57|0.00|486.59|2952.60|3041.17|3439.19|3527.76|1297.13| +2451754|1529|2451760|12475|74800|1219525|3450|3375|84180|293885|5550|41475|44|11|16|4|232|3|29|86.36|90.67|68.90|631.33|1998.10|2504.44|2629.43|159.84|0.00|236.64|1998.10|2157.94|2234.74|2394.58|-506.34| +2451754|1529|2451812|5324|74800|1219525|3450|3375|84180|293885|5550|41475|26|26|4|4|277|3|2|4.21|10.90|0.54|20.72|1.08|8.42|21.80|0.07|0.00|5.88|1.08|1.15|6.96|7.03|-7.34| +2451754|1529|2451846|15686|74800|1219525|3450|3375|84180|293885|5550|41475|53|11|18|2|79|3|42|56.94|107.04|102.75|180.18|4315.50|2391.48|4495.68|43.15|0.00|1708.14|4315.50|4358.65|6023.64|6066.79|1924.02| +2451754|1529|2451858|12977|74800|1219525|3450|3375|84180|293885|5550|41475|26|14|12|1|50|3|91|88.66|242.04|183.95|5286.19|16739.45|8068.06|22025.64|502.18|0.00|0.00|16739.45|17241.63|16739.45|17241.63|8671.39| +2451754|1529|2451758|1874|74800|1219525|3450|3375|84180|293885|5550|41475|43|29|15|3|98|3|10|32.29|45.85|30.71|151.40|307.10|322.90|458.50|0.61|276.39|137.50|30.71|31.32|168.21|168.82|-292.19| +2451754|1529|2451801|8281|74800|1219525|3450|3375|84180|293885|5550|41475|26|1|18|5|59|3|1|66.29|174.34|137.72|36.62|137.72|66.29|174.34|4.62|71.61|45.32|66.11|70.73|111.43|116.05|-0.18| +2451754|1529|2451763|17867|74800|1219525|3450|3375|84180|293885|5550|41475|7|5|19|5|14|3|7|66.22|145.68|144.22|10.22|1009.54|463.54|1019.76|80.76|0.00|193.69|1009.54|1090.30|1203.23|1283.99|546.00| +2451754|1529|2451807|10760|74800|1219525|3450|3375|84180|293885|5550|41475|47|25|2|3|17|3|10|87.53|150.55|58.71|918.40|587.10|875.30|1505.50|27.12|135.03|316.10|452.07|479.19|768.17|795.29|-423.23| +2451483|77832|2451501|11842|89187|512359|4331|19456|87757|1249940|2525|37697|38|13|11|3|192|4|83|4.36|10.15|4.66|455.67|386.78|361.88|842.45|27.07|0.00|151.06|386.78|413.85|537.84|564.91|24.90| +2451483|77832|2451554|6718|89187|512359|4331|19456|87757|1249940|2525|37697|1|10|4|4|74|4|20|71.90|103.53|85.92|352.20|1718.40|1438.00|2070.60|154.65|0.00|227.60|1718.40|1873.05|1946.00|2100.65|280.40| +2451483|77832|2451542|3592|89187|512359|4331|19456|87757|1249940|2525|37697|38|20|12|5|201|4|26|81.47|126.27|27.77|2561.00|722.02|2118.22|3283.02|50.54|0.00|1411.54|722.02|772.56|2133.56|2184.10|-1396.20| +2451483|77832|2451563|14779|89187|512359|4331|19456|87757|1249940|2525|37697|16|22|12|2|125|4|32|30.81|40.05|22.02|576.96|704.64|985.92|1281.60|35.23|0.00|358.72|704.64|739.87|1063.36|1098.59|-281.28| +2451483|77832|2451593|5908|89187|512359|4331|19456|87757|1249940|2525|37697|55|8|2|1|93|4|44|68.96|143.43|61.67|3597.44|2713.48|3034.24|6310.92|135.67|0.00|0.00|2713.48|2849.15|2713.48|2849.15|-320.76| +2451483|77832|2451487|7636|89187|512359|4331|19456|87757|1249940|2525|37697|26|4|12|1|30|4|41|6.21|11.92|1.31|435.01|53.71|254.61|488.72|3.75|0.00|190.24|53.71|57.46|243.95|247.70|-200.90| +2451483|77832|2451487|520|89187|512359|4331|19456|87757|1249940|2525|37697|37|2|2|5|265|4|22|71.63|113.89|69.47|977.24|1528.34|1575.86|2505.58|137.55|0.00|1077.34|1528.34|1665.89|2605.68|2743.23|-47.52| +2451483|77832|2451569|12574|89187|512359|4331|19456|87757|1249940|2525|37697|13|16|11|5|202|4|51|43.92|94.86|52.17|2177.19|2660.67|2239.92|4837.86|102.17|106.42|1209.21|2554.25|2656.42|3763.46|3865.63|314.33| +2451483|77832|2451536|997|89187|512359|4331|19456|87757|1249940|2525|37697|20|26|20|3|159|4|50|15.41|17.41|6.26|557.50|313.00|770.50|870.50|9.20|159.63|330.50|153.37|162.57|483.87|493.07|-617.13| +2451483|77832|2451521|13090|89187|512359|4331|19456|87757|1249940|2525|37697|19|25|6|2|105|4|65|34.29|75.43|18.10|3726.45|1176.50|2228.85|4902.95|70.59|0.00|1176.50|1176.50|1247.09|2353.00|2423.59|-1052.35| +2451483|77832|2451518|1600|89187|512359|4331|19456|87757|1249940|2525|37697|46|13|3|1|249|4|37|35.86|89.29|0.00|3303.73|0.00|1326.82|3303.73|0.00|0.00|1090.02|0.00|0.00|1090.02|1090.02|-1326.82| +2451945|25492|2451977|16217|66395|1553493|1391|32089|22505|1123302|983|19681|31|1|6|1|166|5|57|69.75|192.51|102.03|5157.36|5815.71|3975.75|10973.07|174.47|0.00|2633.40|5815.71|5990.18|8449.11|8623.58|1839.96| +2451945|25492|2451960|14577|66395|1553493|1391|32089|22505|1123302|983|19681|55|17|20|1|252|5|50|42.11|58.95|46.57|619.00|2328.50|2105.50|2947.50|162.99|0.00|58.50|2328.50|2491.49|2387.00|2549.99|223.00| +2451945|25492|2452011|5559|66395|1553493|1391|32089|22505|1123302|983|19681|29|5|1|2|230|5|89|70.02|77.72|55.18|2006.06|4911.02|6231.78|6917.08|147.33|0.00|2766.12|4911.02|5058.35|7677.14|7824.47|-1320.76| +2451945|25492|2451956|8633|66395|1553493|1391|32089|22505|1123302|983|19681|21|9|19|3|220|5|69|21.00|24.36|13.64|739.68|941.16|1449.00|1680.84|9.41|0.00|487.14|941.16|950.57|1428.30|1437.71|-507.84| +2451945|25492|2451954|14617|66395|1553493|1391|32089|22505|1123302|983|19681|29|27|16|5|34|5|26|26.29|28.65|18.33|268.32|476.58|683.54|744.90|33.36|0.00|186.16|476.58|509.94|662.74|696.10|-206.96| +2451945|25492|2451949|11747|66395|1553493|1391|32089|22505|1123302|983|19681|51|1|9|4|62|5|94|66.79|165.63|66.25|9341.72|6227.50|6278.26|15569.22|560.47|0.00|2491.00|6227.50|6787.97|8718.50|9278.97|-50.76| +2451945|25492|2452018|7243|66395|1553493|1391|32089|22505|1123302|983|19681|29|21|14|5|133|5|37|16.03|20.67|0.62|741.85|22.94|593.11|764.79|0.00|0.00|367.04|22.94|22.94|389.98|389.98|-570.17| +2451945|25492|2452044|875|66395|1553493|1391|32089|22505|1123302|983|19681|35|17|10|1|35|5|51|10.48|30.18|23.84|323.34|1215.84|534.48|1539.18|23.58|36.47|122.91|1179.37|1202.95|1302.28|1325.86|644.89| +2451945|25492|2452046|6215|66395|1553493|1391|32089|22505|1123302|983|19681|57|19|8|4|170|5|45|67.42|113.26|41.90|3211.20|1885.50|3033.90|5096.70|56.56|0.00|2497.05|1885.50|1942.06|4382.55|4439.11|-1148.40| +2451945|25492|2452060|10215|66395|1553493|1391|32089|22505|1123302|983|19681|23|7|6|3|10|5|3|47.96|84.88|1.69|249.57|5.07|143.88|254.64|0.20|0.00|30.54|5.07|5.27|35.61|35.81|-138.81| +2451945|25492|2452065|7665|66395|1553493|1391|32089|22505|1123302|983|19681|49|13|2|4|36|5|71|68.25|152.19|4.56|10481.73|323.76|4845.75|10805.49|29.13|0.00|648.23|323.76|352.89|971.99|1001.12|-4521.99| +2451945|25492|2451997|9961|66395|1553493|1391|32089|22505|1123302|983|19681|59|3|7|2|54|5|57|25.26|42.18|2.53|2260.05|144.21|1439.82|2404.26|8.65|0.00|624.72|144.21|152.86|768.93|777.58|-1295.61| +2451945|25492|2451977|14731|66395|1553493|1391|32089|22505|1123302|983|19681|3|27|16|3|110|5|66|66.72|166.80|90.07|5064.18|5944.62|4403.52|11008.80|416.12|0.00|1651.32|5944.62|6360.74|7595.94|8012.06|1541.10| +2451945|25492|2452005|3175|66395|1553493|1391|32089|22505|1123302|983|19681|43|17|9|1|16|5|60|30.82|56.70|29.48|1633.20|1768.80|1849.20|3402.00|0.00|1715.73|475.80|53.07|53.07|528.87|528.87|-1796.13| +2451945|25492|2452002|6363|66395|1553493|1391|32089|22505|1123302|983|19681|3|21|7|1|112|5|13|19.64|34.17|17.76|213.33|230.88|255.32|444.21|6.92|0.00|75.40|230.88|237.80|306.28|313.20|-24.44| +2451945|25492|2451998|3273|66395|1553493|1391|32089|22505|1123302|983|19681|15|17|7|3|259|5|63|9.36|19.74|16.38|211.68|1031.94|589.68|1243.62|35.39|526.28|522.27|505.66|541.05|1027.93|1063.32|-84.02| +2451534|69300|2451633|4879|89701|202409|1164|31472|63718|215362|6843|25951|43|28|1|4|17|6|12|56.04|96.38|89.63|81.00|1075.56|672.48|1156.56|96.80|0.00|69.36|1075.56|1172.36|1144.92|1241.72|403.08| +2451534|69300|2451644|16009|89701|202409|1164|31472|63718|215362|6843|25951|16|25|10|4|18|6|73|36.58|41.70|35.44|456.98|2587.12|2670.34|3044.10|77.61|0.00|1247.57|2587.12|2664.73|3834.69|3912.30|-83.22| +2451534|69300|2451610|7712|89701|202409|1164|31472|63718|215362|6843|25951|58|28|10|5|277|6|91|48.63|65.16|3.25|5633.81|295.75|4425.33|5929.56|2.95|0.00|2489.76|295.75|298.70|2785.51|2788.46|-4129.58| +2451534|69300|2451651|11413|89701|202409|1164|31472|63718|215362|6843|25951|26|10|8|5|42|6|51|42.52|121.60|38.91|4217.19|1984.41|2168.52|6201.60|0.00|754.07|557.94|1230.34|1230.34|1788.28|1788.28|-938.18| +2451534|69300|2451639|14210|89701|202409|1164|31472|63718|215362|6843|25951|8|25|1|4|217|6|1|99.76|206.50|0.00|206.50|0.00|99.76|206.50|0.00|0.00|33.04|0.00|0.00|33.04|33.04|-99.76| +2451534|69300|2451583|6529|89701|202409|1164|31472|63718|215362|6843|25951|52|1|5|1|230|6|83|39.67|47.60|34.74|1067.38|2883.42|3292.61|3950.80|259.50|0.00|1026.71|2883.42|3142.92|3910.13|4169.63|-409.19| +2451534|69300|2451576|13015|89701|202409|1164|31472|63718|215362|6843|25951|37|13|5|3|91|6|63|97.02|121.27|103.07|1146.60|6493.41|6112.26|7640.01|12.98|6233.67|2597.49|259.74|272.72|2857.23|2870.21|-5852.52| +2451534|69300|2451604|15250|89701|202409|1164|31472|63718|215362|6843|25951|38|10|2|3|114|6|11|16.62|23.76|2.61|232.65|28.71|182.82|261.36|2.29|0.00|73.15|28.71|31.00|101.86|104.15|-154.11| +2451178|76807|2451181|12710|48271|1161066|3908|32303|96091|233980|782|16777|2|1|10|2|201|7|47|92.35|229.02|114.51|5381.97|5381.97|4340.45|10763.94|53.81|0.00|4843.35|5381.97|5435.78|10225.32|10279.13|1041.52| +2451178|76807|2451279|7555|48271|1161066|3908|32303|96091|233980|782|16777|1|16|4|2|100|7|44|52.52|126.04|122.25|166.76|5379.00|2310.88|5545.76|430.32|0.00|1219.68|5379.00|5809.32|6598.68|7029.00|3068.12| +2451178|76807|2451240|11416|48271|1161066|3908|32303|96091|233980|782|16777|10|2|15|1|27|7|87|4.47|4.82|3.85|84.39|334.95|388.89|419.34|30.14|0.00|108.75|334.95|365.09|443.70|473.84|-53.94| +2451178|76807|2451210|4856|48271|1161066|3908|32303|96091|233980|782|16777|16|10|3|5|267|7|9|70.18|106.67|44.80|556.83|403.20|631.62|960.03|0.00|249.98|470.34|153.22|153.22|623.56|623.56|-478.40| +2451178|76807|2451201|13342|48271|1161066|3908|32303|96091|233980|782|16777|49|1|20|1|95|7|13|49.14|63.88|31.94|415.22|415.22|638.82|830.44|6.56|87.19|215.80|328.03|334.59|543.83|550.39|-310.79| +2451178|76807|2451287|6628|48271|1161066|3908|32303|96091|233980|782|16777|16|20|6|3|250|7|52|51.52|79.85|59.08|1080.04|3072.16|2679.04|4152.20|0.00|0.00|2034.24|3072.16|3072.16|5106.40|5106.40|393.12| +2451178|76807|2451268|15808|48271|1161066|3908|32303|96091|233980|782|16777|1|8|19|5|24|7|1|64.29|145.93|135.71|10.22|135.71|64.29|145.93|0.00|0.00|72.96|135.71|135.71|208.67|208.67|71.42| +2451178|76807|2451243|1225|48271|1161066|3908|32303|96091|233980|782|16777|2|1|20|1|35|7|44|94.24|201.67|12.10|8341.08|532.40|4146.56|8873.48|21.29|0.00|4170.32|532.40|553.69|4702.72|4724.01|-3614.16| +2452190|51596|2452220|6047|77108|1572482|5456|22830|53825|1895897|5705|33479|41|29|19|3|244|8|76|55.63|72.31|54.23|1374.08|4121.48|4227.88|5495.56|82.42|0.00|164.16|4121.48|4203.90|4285.64|4368.06|-106.40| +2452190|51596|2452307|4603|77108|1572482|5456|22830|53825|1895897|5705|33479|49|21|20|1|15|8|33|31.08|66.20|35.74|1005.18|1179.42|1025.64|2184.60|106.14|0.00|633.27|1179.42|1285.56|1812.69|1918.83|153.78| +2452190|51596|2452216|7563|77108|1572482|5456|22830|53825|1895897|5705|33479|17|19|8|1|244|8|55|45.57|83.84|66.23|968.55|3642.65|2506.35|4611.20|218.55|0.00|1383.25|3642.65|3861.20|5025.90|5244.45|1136.30| +2452190|51596|2452213|9823|77108|1572482|5456|22830|53825|1895897|5705|33479|41|17|14|2|190|8|70|34.71|71.50|50.05|1501.50|3503.50|2429.70|5005.00|0.00|0.00|2051.70|3503.50|3503.50|5555.20|5555.20|1073.80| +2452190|51596|2452242|2247|77108|1572482|5456|22830|53825|1895897|5705|33479|7|13|17|5|60|8|10|28.39|67.00|7.37|596.30|73.70|283.90|670.00|1.47|0.00|180.90|73.70|75.17|254.60|256.07|-210.20| +2452190|51596|2452221|13143|77108|1572482|5456|22830|53825|1895897|5705|33479|59|21|2|3|157|8|87|88.69|201.32|30.19|14888.31|2626.53|7716.03|17514.84|0.00|0.00|1050.09|2626.53|2626.53|3676.62|3676.62|-5089.50| +2452190|51596|2452276|6545|77108|1572482|5456|22830|53825|1895897|5705|33479|25|15|13|3|173|8|22|46.33|81.54|44.84|807.40|986.48|1019.26|1793.88|49.32|0.00|807.18|986.48|1035.80|1793.66|1842.98|-32.78| +2452190|51596|2452305|12675|77108|1572482|5456|22830|53825|1895897|5705|33479|21|3|13|4|148|8|96|79.34|204.69|83.92|11593.92|8056.32|7616.64|19650.24|644.50|0.00|392.64|8056.32|8700.82|8448.96|9093.46|439.68| +2452190|51596|2452267|14961|77108|1572482|5456|22830|53825|1895897|5705|33479|53|19|13|1|169|8|91|44.37|108.70|61.95|4254.25|5637.45|4037.67|9891.70|56.37|0.00|197.47|5637.45|5693.82|5834.92|5891.29|1599.78| +2452190|51596|2452309|9843|77108|1572482|5456|22830|53825|1895897|5705|33479|1|17|4|2|197|8|44|70.93|75.18|10.52|2845.04|462.88|3120.92|3307.92|36.66|4.62|1223.64|458.26|494.92|1681.90|1718.56|-2662.66| +2452190|51596|2452211|2351|77108|1572482|5456|22830|53825|1895897|5705|33479|7|11|18|5|42|8|33|54.70|140.03|137.22|92.73|4528.26|1805.10|4620.99|90.56|0.00|2079.33|4528.26|4618.82|6607.59|6698.15|2723.16| +2452190|51596|2452243|9519|77108|1572482|5456|22830|53825|1895897|5705|33479|33|29|3|1|286|8|59|25.18|37.01|0.37|2161.76|21.83|1485.62|2183.59|0.74|3.27|567.58|18.56|19.30|586.14|586.88|-1467.06| +2452190|51596|2452305|8767|77108|1572482|5456|22830|53825|1895897|5705|33479|17|23|5|3|28|8|64|5.57|7.07|1.83|335.36|117.12|356.48|452.48|0.82|105.40|153.60|11.72|12.54|165.32|166.14|-344.76| +2452190|51596|2452192|7747|77108|1572482|5456|22830|53825|1895897|5705|33479|9|5|11|4|207|8|44|58.29|112.49|22.49|3960.00|989.56|2564.76|4949.56|89.06|0.00|247.28|989.56|1078.62|1236.84|1325.90|-1575.20| +2452190|51596|2452242|5899|77108|1572482|5456|22830|53825|1895897|5705|33479|51|9|17|4|108|8|93|18.56|18.93|3.97|1391.28|369.21|1726.08|1760.49|0.00|0.00|704.01|369.21|369.21|1073.22|1073.22|-1356.87| +2450900|56256|2450988|6169|12676|1815460|4197|8581|21248|1833962|39|14023|4|19|10|2|174|9|16|96.14|256.69|10.26|3942.88|164.16|1538.24|4107.04|0.00|0.00|2053.44|164.16|164.16|2217.60|2217.60|-1374.08| +2450900|56256|2450943|11930|12676|1815460|4197|8581|21248|1833962|39|14023|14|20|17|5|36|9|29|76.54|210.48|134.70|2197.62|3906.30|2219.66|6103.92|156.25|0.00|365.98|3906.30|4062.55|4272.28|4428.53|1686.64| +2450900|56256|2450988|9517|12676|1815460|4197|8581|21248|1833962|39|14023|7|4|2|4|293|9|75|77.80|126.03|113.42|945.75|8506.50|5835.00|9452.25|58.69|2637.01|2646.00|5869.49|5928.18|8515.49|8574.18|34.49| +2450900|56256|2451000|9637|12676|1815460|4197|8581|21248|1833962|39|14023|10|13|11|2|153|9|92|47.71|59.16|33.12|2395.68|3047.04|4389.32|5442.72|60.94|0.00|2012.96|3047.04|3107.98|5060.00|5120.94|-1342.28| +2450900|56256|2450994|13790|12676|1815460|4197|8581|21248|1833962|39|14023|28|16|6|5|217|9|30|84.41|243.10|126.41|3500.70|3792.30|2532.30|7293.00|303.38|0.00|802.20|3792.30|4095.68|4594.50|4897.88|1260.00| +2450900|56256|2450983|14032|12676|1815460|4197|8581|21248|1833962|39|14023|46|7|4|4|131|9|94|93.91|145.56|1.45|13546.34|136.30|8827.54|13682.64|8.17|0.00|2325.56|136.30|144.47|2461.86|2470.03|-8691.24| +2450900|56256|2450902|5780|12676|1815460|4197|8581|21248|1833962|39|14023|32|28|13|3|256|9|79|74.37|135.35|102.86|2566.71|8125.94|5875.23|10692.65|162.51|0.00|1496.26|8125.94|8288.45|9622.20|9784.71|2250.71| +2450900|56256|2451020|8896|12676|1815460|4197|8581|21248|1833962|39|14023|26|14|9|3|267|9|6|10.40|24.85|12.92|71.58|77.52|62.40|149.10|1.55|0.00|41.70|77.52|79.07|119.22|120.77|15.12| +2450900|56256|2450989|5962|12676|1815460|4197|8581|21248|1833962|39|14023|50|7|12|5|178|9|19|34.34|72.11|26.68|863.17|506.92|652.46|1370.09|10.13|0.00|287.66|506.92|517.05|794.58|804.71|-145.54| +2450900|56256|2450971|12166|12676|1815460|4197|8581|21248|1833962|39|14023|31|19|1|5|186|9|10|51.43|153.77|59.97|938.00|599.70|514.30|1537.70|5.99|0.00|445.90|599.70|605.69|1045.60|1051.59|85.40| +2450900|56256|2450922|10303|12676|1815460|4197|8581|21248|1833962|39|14023|4|16|18|2|73|9|50|43.85|83.31|4.99|3916.00|249.50|2192.50|4165.50|7.48|0.00|999.50|249.50|256.98|1249.00|1256.48|-1943.00| +2450900|56256|2450994|4864|12676|1815460|4197|8581|21248|1833962|39|14023|2|10|13|2|184|9|32|6.05|7.19|3.37|122.24|107.84|193.60|230.08|8.62|0.00|78.08|107.84|116.46|185.92|194.54|-85.76| +2450900|56256|2450975|15307|12676|1815460|4197|8581|21248|1833962|39|14023|20|28|9|3|80|9|19|99.99|266.97|248.28|355.11|4717.32|1899.81|5072.43|94.34|0.00|1115.87|4717.32|4811.66|5833.19|5927.53|2817.51| +2450900|56256|2450906|9236|12676|1815460|4197|8581|21248|1833962|39|14023|46|20|18|2|69|9|63|21.25|23.16|21.53|102.69|1356.39|1338.75|1459.08|40.69|0.00|116.55|1356.39|1397.08|1472.94|1513.63|17.64| +2450900|56256|2450980|16741|12676|1815460|4197|8581|21248|1833962|39|14023|40|7|17|2|140|9|5|2.57|5.37|2.04|16.65|10.20|12.85|26.85|0.30|0.00|7.20|10.20|10.50|17.40|17.70|-2.65| +2451821|29187|2451843|6797|1204|1306794|31|21268|98174|67833|6132|42569|56|2|5|3|11|10|39|15.52|43.61|30.52|510.51|1190.28|605.28|1700.79|0.00|1047.44|135.72|142.84|142.84|278.56|278.56|-462.44| +2451821|29187|2451839|13951|1204|1306794|31|21268|98174|67833|6132|42569|55|2|6|5|14|10|11|28.39|52.52|47.79|52.03|525.69|312.29|577.72|15.77|0.00|254.10|525.69|541.46|779.79|795.56|213.40| +2451821|29187|2451902|6146|1204|1306794|31|21268|98174|67833|6132|42569|1|26|17|5|143|10|11|18.69|34.95|19.92|165.33|219.12|205.59|384.45|6.57|0.00|3.74|219.12|225.69|222.86|229.43|13.53| +2451821|29187|2451823|4937|1204|1306794|31|21268|98174|67833|6132|42569|8|17|3|5|44|10|78|70.93|90.08|36.93|4145.70|2880.54|5532.54|7026.24|57.61|0.00|280.80|2880.54|2938.15|3161.34|3218.95|-2652.00| +2451821|29187|2451932|15797|1204|1306794|31|21268|98174|67833|6132|42569|23|1|3|5|14|10|17|18.29|28.71|19.23|161.16|326.91|310.93|488.07|16.34|0.00|4.76|326.91|343.25|331.67|348.01|15.98| +2451821|29187|2451926|12637|1204|1306794|31|21268|98174|67833|6132|42569|53|29|10|3|53|10|62|47.55|87.01|52.20|2158.22|3236.40|2948.10|5394.62|258.91|0.00|2697.00|3236.40|3495.31|5933.40|6192.31|288.30| +2451821|29187|2451904|6605|1204|1306794|31|21268|98174|67833|6132|42569|23|11|7|3|2|10|50|22.47|29.88|21.51|418.50|1075.50|1123.50|1494.00|10.75|0.00|702.00|1075.50|1086.25|1777.50|1788.25|-48.00| +2451821|29187|2451878|10915|1204|1306794|31|21268|98174|67833|6132|42569|20|8|19|3|197|10|77|32.04|54.78|23.00|2447.06|1771.00|2467.08|4218.06|88.55|0.00|1771.00|1771.00|1859.55|3542.00|3630.55|-696.08| +2451821|29187|2451828|2450|1204|1306794|31|21268|98174|67833|6132|42569|14|5|8|5|25|10|5|32.51|88.10|0.00|440.50|0.00|162.55|440.50|0.00|0.00|92.50|0.00|0.00|92.50|92.50|-162.55| +2451879|60291|2451988|11383|77402|480194|5386|17778|12527|1601689|4554|4946|38|11|2|3|61|11|90|7.65|11.16|5.91|472.50|531.90|688.50|1004.40|10.63|0.00|0.00|531.90|542.53|531.90|542.53|-156.60| +2451879|60291|2451965|5690|77402|480194|5386|17778|12527|1601689|4554|4946|55|11|11|4|104|11|80|17.07|40.28|24.57|1256.80|1965.60|1365.60|3222.40|137.59|0.00|1385.60|1965.60|2103.19|3351.20|3488.79|600.00| +2451879|60291|2451917|1729|77402|480194|5386|17778|12527|1601689|4554|4946|47|11|8|5|162|11|84|74.02|184.30|49.76|11301.36|4179.84|6217.68|15481.20|83.59|0.00|1392.72|4179.84|4263.43|5572.56|5656.15|-2037.84| +2451879|60291|2451963|6401|77402|480194|5386|17778|12527|1601689|4554|4946|35|19|2|4|143|11|35|84.47|192.59|136.73|1955.10|4785.55|2956.45|6740.65|28.71|4067.71|1347.85|717.84|746.55|2065.69|2094.40|-2238.61| +2451879|60291|2451990|13879|77402|480194|5386|17778|12527|1601689|4554|4946|25|23|11|3|32|11|81|35.78|81.22|30.05|4144.77|2434.05|2898.18|6578.82|0.00|973.62|2630.88|1460.43|1460.43|4091.31|4091.31|-1437.75| +2451879|60291|2451881|16559|77402|480194|5386|17778|12527|1601689|4554|4946|13|14|12|3|57|11|61|23.14|68.26|25.25|2623.61|1540.25|1411.54|4163.86|34.50|677.71|124.44|862.54|897.04|986.98|1021.48|-549.00| +2451879|60291|2451978|11587|77402|480194|5386|17778|12527|1601689|4554|4946|2|20|20|4|278|11|63|37.68|55.76|10.59|2845.71|667.17|2373.84|3512.88|33.35|0.00|983.43|667.17|700.52|1650.60|1683.95|-1706.67| +2451879|60291|2451984|2701|77402|480194|5386|17778|12527|1601689|4554|4946|43|7|16|3|100|11|9|55.58|58.91|49.48|84.87|445.32|500.22|530.19|35.62|0.00|100.71|445.32|480.94|546.03|581.65|-54.90| +2451879|60291|2451928|7520|77402|480194|5386|17778|12527|1601689|4554|4946|26|19|3|1|42|11|91|65.31|146.94|58.77|8023.47|5348.07|5943.21|13371.54|106.96|0.00|3476.20|5348.07|5455.03|8824.27|8931.23|-595.14| +2451879|60291|2451909|8285|77402|480194|5386|17778|12527|1601689|4554|4946|5|1|19|2|235|11|6|50.74|121.77|118.11|21.96|708.66|304.44|730.62|21.25|0.00|21.90|708.66|729.91|730.56|751.81|404.22| +2452251|49599|2452366|13601|96115|1463304|93|17729|4676|601676|3343|35332|17|23|5|3|21|12|88|9.73|21.60|15.98|494.56|1406.24|856.24|1900.80|6.18|1251.55|893.20|154.69|160.87|1047.89|1054.07|-701.55| +2452251|49599|2452351|10743|96115|1463304|93|17729|4676|601676|3343|35332|23|5|4|3|299|12|41|40.16|107.22|42.88|2637.94|1758.08|1646.56|4396.02|158.22|0.00|219.76|1758.08|1916.30|1977.84|2136.06|111.52| +2452251|49599|2452338|97|96115|1463304|93|17729|4676|601676|3343|35332|21|11|4|2|60|12|39|33.74|70.17|20.34|1943.37|793.26|1315.86|2736.63|8.32|674.27|492.57|118.99|127.31|611.56|619.88|-1196.87| +2452251|49599|2452325|1747|96115|1463304|93|17729|4676|601676|3343|35332|55|7|20|3|59|12|80|11.10|11.10|10.10|80.00|808.00|888.00|888.00|8.08|0.00|408.00|808.00|816.08|1216.00|1224.08|-80.00| +2452251|49599|2452359|11851|96115|1463304|93|17729|4676|601676|3343|35332|55|21|4|4|117|12|8|39.57|96.15|17.30|630.80|138.40|316.56|769.20|4.15|0.00|253.76|138.40|142.55|392.16|396.31|-178.16| +2452251|49599|2452369|2425|96115|1463304|93|17729|4676|601676|3343|35332|45|9|20|2|27|12|65|31.71|58.98|13.56|2952.30|881.40|2061.15|3833.70|61.69|0.00|1379.95|881.40|943.09|2261.35|2323.04|-1179.75| +2452251|49599|2452330|10011|96115|1463304|93|17729|4676|601676|3343|35332|19|7|8|4|23|12|26|41.97|101.14|42.47|1525.42|1104.22|1091.22|2629.64|77.29|0.00|157.56|1104.22|1181.51|1261.78|1339.07|13.00| +2452251|49599|2452317|17899|96115|1463304|93|17729|4676|601676|3343|35332|55|11|14|5|83|12|60|36.20|36.92|5.90|1861.20|354.00|2172.00|2215.20|14.16|0.00|243.60|354.00|368.16|597.60|611.76|-1818.00| +2452251|49599|2452338|8655|96115|1463304|93|17729|4676|601676|3343|35332|5|9|17|2|274|12|60|22.51|55.82|22.88|1976.40|1372.80|1350.60|3349.20|27.45|0.00|602.40|1372.80|1400.25|1975.20|2002.65|22.20| +2451351|75714|2451415|5839|62682|719464|6293|46322|46110|1632520|5162|2391|49|1|4|5|86|13|14|61.61|90.56|72.44|253.68|1014.16|862.54|1267.84|40.56|0.00|215.46|1014.16|1054.72|1229.62|1270.18|151.62| +2451351|75714|2451450|15520|62682|719464|6293|46322|46110|1632520|5162|2391|7|13|20|1|39|13|60|99.12|195.26|85.91|6561.00|5154.60|5947.20|11715.60|8.76|4278.31|5506.20|876.29|885.05|6382.49|6391.25|-5070.91| +2451351|75714|2451401|13735|62682|719464|6293|46322|46110|1632520|5162|2391|16|13|5|3|264|13|50|60.92|69.44|26.38|2153.00|1319.00|3046.00|3472.00|118.71|0.00|416.50|1319.00|1437.71|1735.50|1854.21|-1727.00| +2451351|75714|2451432|7954|62682|719464|6293|46322|46110|1632520|5162|2391|58|22|17|4|281|13|33|24.77|39.63|13.47|863.28|444.51|817.41|1307.79|31.11|0.00|326.70|444.51|475.62|771.21|802.32|-372.90| +2451351|75714|2451470|15424|62682|719464|6293|46322|46110|1632520|5162|2391|52|22|14|4|154|13|11|17.78|26.13|25.34|8.69|278.74|195.58|287.43|19.51|0.00|83.27|278.74|298.25|362.01|381.52|83.16| +2451351|75714|2451411|3235|62682|719464|6293|46322|46110|1632520|5162|2391|20|25|12|4|206|13|45|26.47|33.61|11.76|983.25|529.20|1191.15|1512.45|0.37|523.90|604.80|5.30|5.67|610.10|610.47|-1185.85| +2451351|75714|2451442|16711|62682|719464|6293|46322|46110|1632520|5162|2391|32|25|6|4|22|13|78|48.82|83.97|71.37|982.80|5566.86|3807.96|6549.66|55.66|0.00|1113.06|5566.86|5622.52|6679.92|6735.58|1758.90| +2451351|75714|2451377|13172|62682|719464|6293|46322|46110|1632520|5162|2391|13|4|19|2|208|13|23|85.64|108.76|26.10|1901.18|600.30|1969.72|2501.48|36.01|0.00|0.00|600.30|636.31|600.30|636.31|-1369.42| +2451351|75714|2451354|10610|62682|719464|6293|46322|46110|1632520|5162|2391|26|26|7|5|90|13|22|73.91|108.64|56.49|1147.30|1242.78|1626.02|2390.08|14.91|1056.36|740.74|186.42|201.33|927.16|942.07|-1439.60| +2452224|44494|2452292|3255|85452|861000|2948|39343|23682|678237|1587|16335|3|11|10|4|175|14|77|80.72|151.75|100.15|3973.20|7711.55|6215.44|11684.75|154.23|0.00|4907.21|7711.55|7865.78|12618.76|12772.99|1496.11| +2452224|44494|2452253|5667|85452|861000|2948|39343|23682|678237|1587|16335|23|9|18|1|247|14|20|66.38|106.87|101.52|107.00|2030.40|1327.60|2137.40|182.73|0.00|384.60|2030.40|2213.13|2415.00|2597.73|702.80| +2452224|44494|2452337|9797|85452|861000|2948|39343|23682|678237|1587|16335|49|7|6|5|204|14|62|10.82|24.88|2.73|1373.30|169.26|670.84|1542.56|1.69|0.00|107.88|169.26|170.95|277.14|278.83|-501.58| +2452224|44494|2452333|9305|85452|861000|2948|39343|23682|678237|1587|16335|11|25|20|2|184|14|36|78.32|127.66|14.04|4090.32|505.44|2819.52|4595.76|20.21|0.00|1194.84|505.44|525.65|1700.28|1720.49|-2314.08| +2452224|44494|2452272|12933|85452|861000|2948|39343|23682|678237|1587|16335|15|13|9|3|57|14|82|60.20|89.09|68.59|1681.00|5624.38|4936.40|7305.38|281.21|0.00|2702.72|5624.38|5905.59|8327.10|8608.31|687.98| +2452224|44494|2452272|9991|85452|861000|2948|39343|23682|678237|1587|16335|21|9|9|3|47|14|54|18.34|36.12|4.69|1697.22|253.26|990.36|1950.48|10.13|0.00|838.62|253.26|263.39|1091.88|1102.01|-737.10| +2452224|44494|2452322|13531|85452|861000|2948|39343|23682|678237|1587|16335|33|21|18|2|106|14|47|48.25|127.86|52.42|3545.68|2463.74|2267.75|6009.42|73.91|0.00|480.34|2463.74|2537.65|2944.08|3017.99|195.99| +2452224|44494|2452275|17957|85452|861000|2948|39343|23682|678237|1587|16335|35|15|18|3|98|14|21|77.06|97.86|17.61|1685.25|369.81|1618.26|2055.06|7.39|0.00|267.12|369.81|377.20|636.93|644.32|-1248.45| +2452224|44494|2452341|2195|85452|861000|2948|39343|23682|678237|1587|16335|25|17|12|5|138|14|33|69.15|132.07|101.69|1002.54|3355.77|2281.95|4358.31|268.46|0.00|2048.31|3355.77|3624.23|5404.08|5672.54|1073.82| +2452224|44494|2452334|12055|85452|861000|2948|39343|23682|678237|1587|16335|17|13|18|1|24|14|17|39.48|93.56|43.97|843.03|747.49|671.16|1590.52|52.32|0.00|699.72|747.49|799.81|1447.21|1499.53|76.33| +2452224|44494|2452310|14737|85452|861000|2948|39343|23682|678237|1587|16335|23|11|13|2|101|14|89|76.89|180.69|83.11|8684.62|7396.79|6843.21|16081.41|147.93|0.00|3055.37|7396.79|7544.72|10452.16|10600.09|553.58| +2452224|44494|2452252|8823|85452|861000|2948|39343|23682|678237|1587|16335|9|9|15|5|245|14|21|85.86|179.44|111.25|1431.99|2336.25|1803.06|3768.24|70.08|0.00|866.67|2336.25|2406.33|3202.92|3273.00|533.19| +2452224|44494|2452271|13363|85452|861000|2948|39343|23682|678237|1587|16335|25|19|14|3|82|14|63|37.23|80.41|53.87|1672.02|3393.81|2345.49|5065.83|57.01|543.00|1063.44|2850.81|2907.82|3914.25|3971.26|505.32| +2452224|44494|2452326|10351|85452|861000|2948|39343|23682|678237|1587|16335|3|13|2|2|262|14|55|76.31|110.64|61.95|2677.95|3407.25|4197.05|6085.20|68.14|0.00|2920.50|3407.25|3475.39|6327.75|6395.89|-789.80| +2452224|44494|2452334|9733|85452|861000|2948|39343|23682|678237|1587|16335|59|13|14|1|208|14|51|62.40|133.53|26.70|5448.33|1361.70|3182.40|6810.03|81.70|0.00|3404.76|1361.70|1443.40|4766.46|4848.16|-1820.70| +2452224|44494|2452280|2585|85452|861000|2948|39343|23682|678237|1587|16335|21|17|14|2|287|14|95|23.49|46.74|1.86|4263.60|176.70|2231.55|4440.30|7.06|0.00|2220.15|176.70|183.76|2396.85|2403.91|-2054.85| +2451405|67593|2451414|8326|363|3898|586|36874|85171|612056|5032|41320|28|14|11|4|257|15|45|60.01|106.21|105.14|48.15|4731.30|2700.45|4779.45|141.93|0.00|1433.70|4731.30|4873.23|6165.00|6306.93|2030.85| +2451405|67593|2451508|11812|363|3898|586|36874|85171|612056|5032|41320|49|14|4|2|3|15|71|16.54|20.67|6.20|1027.37|440.20|1174.34|1467.57|35.21|0.00|308.14|440.20|475.41|748.34|783.55|-734.14| +2451405|67593|2451459|13489|363|3898|586|36874|85171|612056|5032|41320|4|2|18|4|283|15|21|83.67|190.76|87.74|2163.42|1842.54|1757.07|4005.96|110.55|0.00|1361.85|1842.54|1953.09|3204.39|3314.94|85.47| +2451405|67593|2451517|11924|363|3898|586|36874|85171|612056|5032|41320|56|2|15|3|221|15|56|49.27|104.45|47.00|3217.20|2632.00|2759.12|5849.20|131.60|0.00|2632.00|2632.00|2763.60|5264.00|5395.60|-127.12| +2451405|67593|2451455|12512|363|3898|586|36874|85171|612056|5032|41320|25|19|7|4|91|15|62|32.09|74.76|12.70|3847.72|787.40|1989.58|4635.12|15.74|0.00|2131.56|787.40|803.14|2918.96|2934.70|-1202.18| +2451405|67593|2451490|6355|363|3898|586|36874|85171|612056|5032|41320|31|19|14|5|149|15|57|73.99|181.27|74.32|6096.15|4236.24|4217.43|10332.39|254.17|0.00|3202.83|4236.24|4490.41|7439.07|7693.24|18.81| +2451405|67593|2451449|2542|363|3898|586|36874|85171|612056|5032|41320|1|26|7|5|53|15|100|57.64|69.74|39.75|2999.00|3975.00|5764.00|6974.00|318.00|0.00|139.00|3975.00|4293.00|4114.00|4432.00|-1789.00| +2451405|67593|2451518|4933|363|3898|586|36874|85171|612056|5032|41320|1|26|17|2|120|15|56|16.59|21.73|13.68|450.80|766.08|929.04|1216.88|61.28|0.00|72.80|766.08|827.36|838.88|900.16|-162.96| +2451405|67593|2451454|7576|363|3898|586|36874|85171|612056|5032|41320|7|10|11|3|298|15|28|7.92|14.41|13.11|36.40|367.08|221.76|403.48|3.67|0.00|68.32|367.08|370.75|435.40|439.07|145.32| +2451405|67593|2451506|14248|363|3898|586|36874|85171|612056|5032|41320|44|22|1|3|122|15|94|4.94|12.25|3.06|863.86|287.64|464.36|1151.50|0.00|0.00|79.90|287.64|287.64|367.54|367.54|-176.72| +2451405|67593|2451426|3151|363|3898|586|36874|85171|612056|5032|41320|26|26|14|4|224|15|74|24.48|66.58|64.58|148.00|4778.92|1811.52|4926.92|95.57|0.00|2315.46|4778.92|4874.49|7094.38|7189.95|2967.40| +2451405|67593|2451475|6506|363|3898|586|36874|85171|612056|5032|41320|2|13|15|5|98|15|5|46.13|63.19|1.89|306.50|9.45|230.65|315.95|0.00|9.16|6.30|0.29|0.29|6.59|6.59|-230.36| +2452342|70397|2452347|15786|21567|477008|4096|3937|43522|468964|2307|36195|49|6|1|4|147|16|59|87.34|133.63|44.09|5282.86|2601.31|5153.06|7884.17|208.10|0.00|1813.07|2601.31|2809.41|4414.38|4622.48|-2551.75| +2452342|70397|2452432|16849|21567|477008|4096|3937|43522|468964|2307|36195|15|1|17|5|86|16|37|14.92|22.23|11.11|411.44|411.07|552.04|822.51|10.19|156.20|279.35|254.87|265.06|534.22|544.41|-297.17| +2452342|70397|2452402|5107|21567|477008|4096|3937|43522|468964|2307|36195|42|24|13|4|52|16|54|24.87|64.91|36.99|1507.68|1997.46|1342.98|3505.14|139.82|0.00|1086.48|1997.46|2137.28|3083.94|3223.76|654.48| +2452342|70397|2452406|1146|21567|477008|4096|3937|43522|468964|2307|36195|6|27|8|4|160|16|59|41.64|65.79|55.92|582.33|3299.28|2456.76|3881.61|32.99|0.00|232.46|3299.28|3332.27|3531.74|3564.73|842.52| +2452342|70397|2452379|8895|21567|477008|4096|3937|43522|468964|2307|36195|37|7|6|3|123|16|2|94.72|115.55|80.88|69.34|161.76|189.44|231.10|9.70|0.00|50.84|161.76|171.46|212.60|222.30|-27.68| +2452342|70397|2452425|10447|21567|477008|4096|3937|43522|468964|2307|36195|49|24|16|3|137|16|29|80.40|149.54|44.86|3035.72|1300.94|2331.60|4336.66|91.06|0.00|737.18|1300.94|1392.00|2038.12|2129.18|-1030.66| +2452342|70397|2452378|13224|21567|477008|4096|3937|43522|468964|2307|36195|39|27|18|2|146|16|57|59.56|109.59|31.78|4435.17|1811.46|3394.92|6246.63|108.68|0.00|1124.04|1811.46|1920.14|2935.50|3044.18|-1583.46| +2452342|70397|2452423|5721|21567|477008|4096|3937|43522|468964|2307|36195|36|9|12|4|146|16|22|50.53|55.58|3.33|1149.50|73.26|1111.66|1222.76|0.02|72.52|232.32|0.74|0.76|233.06|233.08|-1110.92| +2452386|7275|2452453|14461|93708|166860|5612|38411|33483|816413|3114|37113|51|30|7|1|245|17|14|28.04|62.52|38.76|332.64|542.64|392.56|875.28|23.17|211.62|437.64|331.02|354.19|768.66|791.83|-61.54| +2452386|7275|2452466|13263|93708|166860|5612|38411|33483|816413|3114|37113|33|7|11|3|115|17|64|53.31|100.22|51.11|3143.04|3271.04|3411.84|6414.08|196.26|0.00|1667.20|3271.04|3467.30|4938.24|5134.50|-140.80| +2452386|7275|2452501|4512|93708|166860|5612|38411|33483|816413|3114|37113|21|25|2|1|280|17|13|98.13|255.13|35.71|2852.46|464.23|1275.69|3316.69|9.28|0.00|1658.28|464.23|473.51|2122.51|2131.79|-811.46| +2452386|7275|2452449|5703|93708|166860|5612|38411|33483|816413|3114|37113|30|30|12|2|239|17|82|34.74|98.66|6.90|7524.32|565.80|2848.68|8090.12|50.92|0.00|3639.98|565.80|616.72|4205.78|4256.70|-2282.88| +2452386|7275|2452413|16303|93708|166860|5612|38411|33483|816413|3114|37113|21|9|9|3|197|17|100|59.08|76.21|10.66|6555.00|1066.00|5908.00|7621.00|63.96|0.00|3505.00|1066.00|1129.96|4571.00|4634.96|-4842.00| +2452386|7275|2452387|6657|93708|166860|5612|38411|33483|816413|3114|37113|21|12|8|3|88|17|20|78.32|151.15|75.57|1511.60|1511.40|1566.40|3023.00|30.22|0.00|665.00|1511.40|1541.62|2176.40|2206.62|-55.00| +2452386|7275|2452404|972|93708|166860|5612|38411|33483|816413|3114|37113|48|9|16|2|188|17|82|78.80|187.54|61.88|10304.12|5074.16|6461.60|15378.28|202.96|0.00|922.50|5074.16|5277.12|5996.66|6199.62|-1387.44| +2452386|7275|2452441|14377|93708|166860|5612|38411|33483|816413|3114|37113|7|19|6|5|21|17|90|79.43|114.37|18.29|8647.20|1646.10|7148.70|10293.30|98.76|0.00|0.00|1646.10|1744.86|1646.10|1744.86|-5502.60| +2452386|7275|2452438|14581|93708|166860|5612|38411|33483|816413|3114|37113|39|18|11|3|232|17|7|58.74|61.67|6.16|388.57|43.12|411.18|431.69|0.97|23.71|176.96|19.41|20.38|196.37|197.34|-391.77| +2451422|33648|2451514|2096|4238|1802467|6743|172|86677|1630659|4106|17182|43|22|19|4|169|18|97|45.06|130.67|53.57|7478.70|5196.29|4370.82|12674.99|103.92|0.00|6337.01|5196.29|5300.21|11533.30|11637.22|825.47| +2451422|33648|2451484|15748|4238|1802467|6743|172|86677|1630659|4106|17182|14|10|1|1|261|18|77|72.83|135.46|27.09|8344.49|2085.93|5607.91|10430.42|0.00|0.00|2294.60|2085.93|2085.93|4380.53|4380.53|-3521.98| +2451422|33648|2451468|667|4238|1802467|6743|172|86677|1630659|4106|17182|49|13|9|1|186|18|70|29.06|60.15|10.82|3453.10|757.40|2034.20|4210.50|8.48|651.36|631.40|106.04|114.52|737.44|745.92|-1928.16| +2451422|33648|2451446|3130|4238|1802467|6743|172|86677|1630659|4106|17182|26|13|20|3|166|18|83|2.78|6.28|4.64|136.12|385.12|230.74|521.24|30.80|0.00|9.96|385.12|415.92|395.08|425.88|154.38| +2451422|33648|2451510|3979|4238|1802467|6743|172|86677|1630659|4106|17182|46|19|6|2|268|18|100|94.73|161.04|27.37|13367.00|2737.00|9473.00|16104.00|82.11|0.00|322.00|2737.00|2819.11|3059.00|3141.11|-6736.00| +2451422|33648|2451488|14911|4238|1802467|6743|172|86677|1630659|4106|17182|40|19|16|5|51|18|12|87.76|200.09|148.06|624.36|1776.72|1053.12|2401.08|35.53|0.00|192.00|1776.72|1812.25|1968.72|2004.25|723.60| +2451422|33648|2451425|8533|4238|1802467|6743|172|86677|1630659|4106|17182|16|2|5|3|131|18|62|40.23|48.67|19.46|1811.02|1206.52|2494.26|3017.54|48.26|0.00|271.56|1206.52|1254.78|1478.08|1526.34|-1287.74| +2451422|33648|2451527|14008|4238|1802467|6743|172|86677|1630659|4106|17182|7|20|8|3|265|18|52|6.61|10.90|8.61|119.08|447.72|343.72|566.80|18.17|188.04|135.72|259.68|277.85|395.40|413.57|-84.04| +2451422|33648|2451429|16834|4238|1802467|6743|172|86677|1630659|4106|17182|32|20|12|3|254|18|78|50.44|89.27|1.78|6824.22|138.84|3934.32|6963.06|8.33|0.00|2018.64|138.84|147.17|2157.48|2165.81|-3795.48| +2452616|42506|2452627|6168|57659|1154202|7098|44794|66274|257323|2776|72|33|12|2|3|137|19|77|45.57|61.97|28.50|2577.19|2194.50|3508.89|4771.69|65.83|0.00|381.15|2194.50|2260.33|2575.65|2641.48|-1314.39| +2452616|42506|2452672|13206|57659|1154202|7098|44794|66274|257323|2776|72|39|6|6|4|42|19|7|89.03|121.08|107.76|93.24|754.32|623.21|847.56|15.08|0.00|364.42|754.32|769.40|1118.74|1133.82|131.11| +2452616|42506|2452629|1614|57659|1154202|7098|44794|66274|257323|2776|72|21|24|16|5|181|19|94|5.59|5.81|4.88|87.42|458.72|525.46|546.14|0.00|0.00|109.04|458.72|458.72|567.76|567.76|-66.74| +2452616|42506|2452679|5625|57659|1154202|7098|44794|66274|257323|2776|72|3|1|10|2|51|19|80|26.60|36.70|0.73|2877.60|58.40|2128.00|2936.00|4.67|0.00|997.60|58.40|63.07|1056.00|1060.67|-2069.60| +2452616|42506|2452710|4725|57659|1154202|7098|44794|66274|257323|2776|72|33|19|3|1|192|19|64|48.61|72.91|10.93|3966.72|699.52|3111.04|4666.24|0.00|125.91|652.80|573.61|573.61|1226.41|1226.41|-2537.43| +2452616|42506|2452631|3513|57659|1154202|7098|44794|66274|257323|2776|72|57|12|16|1|36|19|7|10.98|28.43|25.87|17.92|181.09|76.86|199.01|12.67|0.00|71.61|181.09|193.76|252.70|265.37|104.23| +2452616|42506|2452715|8749|57659|1154202|7098|44794|66274|257323|2776|72|25|30|17|4|21|19|5|12.83|31.17|7.79|116.90|38.95|64.15|155.85|0.77|0.00|71.65|38.95|39.72|110.60|111.37|-25.20| +2452616|42506|2452730|7059|57659|1154202|7098|44794|66274|257323|2776|72|45|13|1|5|229|19|13|24.50|69.09|68.39|9.10|889.07|318.50|898.17|8.89|0.00|8.97|889.07|897.96|898.04|906.93|570.57| +2452616|42506|2452692|14997|57659|1154202|7098|44794|66274|257323|2776|72|37|9|1|2|203|19|51|86.10|102.45|61.47|2089.98|3134.97|4391.10|5224.95|31.34|0.00|1149.03|3134.97|3166.31|4284.00|4315.34|-1256.13| +2452616|42506|2452728|9345|57659|1154202|7098|44794|66274|257323|2776|72|43|13|12|2|89|19|51|7.02|9.89|5.73|212.16|292.23|358.02|504.39|2.92|0.00|166.26|292.23|295.15|458.49|461.41|-65.79| +2452616|42506|2452721|6288|57659|1154202|7098|44794|66274|257323|2776|72|19|24|4|3|265|19|52|41.66|112.06|45.94|3438.24|2388.88|2166.32|5827.12|71.66|0.00|465.92|2388.88|2460.54|2854.80|2926.46|222.56| +2452616|42506|2452653|17221|57659|1154202|7098|44794|66274|257323|2776|72|13|25|9|5|121|19|100|2.60|4.13|0.41|372.00|41.00|260.00|413.00|2.05|0.00|152.00|41.00|43.05|193.00|195.05|-219.00| +2452616|42506|2452639|7623|57659|1154202|7098|44794|66274|257323|2776|72|55|1|1|4|84|19|24|24.55|49.10|12.76|872.16|306.24|589.20|1178.40|6.12|0.00|365.28|306.24|312.36|671.52|677.64|-282.96| +2452616|42506|2452665|9475|57659|1154202|7098|44794|66274|257323|2776|72|27|27|7|2|300|19|62|41.84|122.59|84.58|2356.62|5243.96|2594.08|7600.58|367.07|0.00|2736.06|5243.96|5611.03|7980.02|8347.09|2649.88| +2452616|42506|2452725|17175|57659|1154202|7098|44794|66274|257323|2776|72|37|7|9|4|169|19|43|26.54|70.06|25.92|1898.02|1114.56|1141.22|3012.58|11.14|0.00|1174.76|1114.56|1125.70|2289.32|2300.46|-26.66| +2451576|44795|2451594|10861|76619|942296|2020|13697|44747|484545|5528|1605|19|5|19|2|275|20|68|48.01|52.81|7.92|3052.52|538.56|3264.68|3591.08|48.47|0.00|1328.04|538.56|587.03|1866.60|1915.07|-2726.12| +2451576|44795|2451679|11627|76619|942296|2020|13697|44747|484545|5528|1605|43|25|14|5|129|20|55|7.39|18.03|5.22|704.55|287.10|406.45|991.65|17.22|0.00|277.20|287.10|304.32|564.30|581.52|-119.35| +2451576|44795|2451598|9169|76619|942296|2020|13697|44747|484545|5528|1605|11|23|8|4|7|20|15|73.98|221.94|137.60|1265.10|2064.00|1109.70|3329.10|61.92|0.00|366.15|2064.00|2125.92|2430.15|2492.07|954.30| +2451576|44795|2451690|16862|76619|942296|2020|13697|44747|484545|5528|1605|49|2|19|1|90|20|81|53.11|152.42|74.68|6296.94|6049.08|4301.91|12346.02|60.49|0.00|6049.08|6049.08|6109.57|12098.16|12158.65|1747.17| +2451576|44795|2451607|17935|76619|942296|2020|13697|44747|484545|5528|1605|8|7|13|2|98|20|1|59.35|135.31|13.53|121.78|13.53|59.35|135.31|1.21|0.00|60.88|13.53|14.74|74.41|75.62|-45.82| +2451576|44795|2451633|12731|76619|942296|2020|13697|44747|484545|5528|1605|7|13|20|3|46|20|69|81.98|237.74|16.64|15255.90|1148.16|5656.62|16404.06|103.33|0.00|5413.05|1148.16|1251.49|6561.21|6664.54|-4508.46| +2451576|44795|2451644|12902|76619|942296|2020|13697|44747|484545|5528|1605|35|7|20|1|52|20|97|5.42|13.49|0.00|1308.53|0.00|525.74|1308.53|0.00|0.00|549.02|0.00|0.00|549.02|549.02|-525.74| +2451576|44795|2451629|4214|76619|942296|2020|13697|44747|484545|5528|1605|38|7|8|2|286|20|93|30.19|47.70|19.08|2661.66|1774.44|2807.67|4436.10|29.27|798.49|2173.41|975.95|1005.22|3149.36|3178.63|-1831.72| +2451576|44795|2451682|182|76619|942296|2020|13697|44747|484545|5528|1605|29|14|14|2|220|20|98|73.29|199.34|63.78|13284.88|6250.44|7182.42|19535.32|125.00|0.00|5078.36|6250.44|6375.44|11328.80|11453.80|-931.98| +2451576|44795|2451601|13207|76619|942296|2020|13697|44747|484545|5528|1605|55|8|2|4|206|20|26|61.93|114.57|25.20|2323.62|655.20|1610.18|2978.82|39.31|0.00|804.18|655.20|694.51|1459.38|1498.69|-954.98| +2451576|44795|2451641|17396|76619|942296|2020|13697|44747|484545|5528|1605|49|17|13|2|111|20|36|38.67|100.15|76.11|865.44|2739.96|1392.12|3605.40|219.19|0.00|1153.44|2739.96|2959.15|3893.40|4112.59|1347.84| +2451576|44795|2451586|11947|76619|942296|2020|13697|44747|484545|5528|1605|49|26|20|4|25|20|11|9.24|13.95|0.13|152.02|1.43|101.64|153.45|0.04|0.00|16.83|1.43|1.47|18.26|18.30|-100.21| +2452580|26067|2452637|8988|94484|771125|5366|44407|94484|771125|5366|44407|9|18|20|4|208|21|96|95.27|191.49|44.04|14155.20|4227.84|9145.92|18383.04|253.67|0.00|1469.76|4227.84|4481.51|5697.60|5951.27|-4918.08| +2452580|26067|2452626|4747|94484|771125|5366|44407|94484|771125|5366|44407|55|21|14|5|13|21|54|40.63|63.38|62.11|68.58|3353.94|2194.02|3422.52|167.69|0.00|684.18|3353.94|3521.63|4038.12|4205.81|1159.92| +2452580|26067|2452696|5886|94484|771125|5366|44407|94484|771125|5366|44407|27|27|7|2|30|21|25|51.53|53.07|19.10|849.25|477.50|1288.25|1326.75|15.66|85.95|344.75|391.55|407.21|736.30|751.96|-896.70| +2452580|26067|2452613|12723|94484|771125|5366|44407|94484|771125|5366|44407|24|9|5|5|28|21|33|29.50|71.98|1.43|2328.15|47.19|973.50|2375.34|0.00|0.00|23.43|47.19|47.19|70.62|70.62|-926.31| +2452580|26067|2452625|297|94484|771125|5366|44407|94484|771125|5366|44407|48|12|1|3|125|21|84|4.13|4.25|3.23|85.68|271.32|346.92|357.00|5.42|0.00|85.68|271.32|276.74|357.00|362.42|-75.60| +2452580|26067|2452665|2941|94484|771125|5366|44407|94484|771125|5366|44407|25|24|8|2|293|21|39|43.71|47.64|33.82|538.98|1318.98|1704.69|1857.96|10.28|290.17|408.72|1028.81|1039.09|1437.53|1447.81|-675.88| +2452580|26067|2452661|16111|94484|771125|5366|44407|94484|771125|5366|44407|33|15|16|4|182|21|21|14.11|36.54|16.80|414.54|352.80|296.31|767.34|28.22|0.00|329.91|352.80|381.02|682.71|710.93|56.49| +2452580|26067|2452687|15121|94484|771125|5366|44407|94484|771125|5366|44407|13|6|19|5|51|21|77|92.60|99.08|13.87|6561.17|1067.99|7130.20|7629.16|67.49|224.27|2440.90|843.72|911.21|3284.62|3352.11|-6286.48| +2452580|26067|2452586|16717|94484|771125|5366|44407|94484|771125|5366|44407|42|25|12|4|273|21|41|20.34|39.05|28.50|432.55|1168.50|833.94|1601.05|105.16|0.00|0.00|1168.50|1273.66|1168.50|1273.66|334.56| +2451176|80914|2451251|6176|11428|674591|5401|8164|93398|771622|4900|42910|22|28|1|2|153|22|94|11.47|30.62|2.75|2619.78|258.50|1078.18|2878.28|10.34|0.00|517.94|258.50|268.84|776.44|786.78|-819.68| +2451176|80914|2451181|16384|11428|674591|5401|8164|93398|771622|4900|42910|40|4|15|2|249|22|73|70.12|100.27|56.15|3220.76|4098.95|5118.76|7319.71|204.94|0.00|1170.92|4098.95|4303.89|5269.87|5474.81|-1019.81| +2451176|80914|2451197|2276|11428|674591|5401|8164|93398|771622|4900|42910|22|28|18|1|264|22|60|28.39|38.61|38.22|23.40|2293.20|1703.40|2316.60|45.86|0.00|648.60|2293.20|2339.06|2941.80|2987.66|589.80| +2451176|80914|2451241|9493|11428|674591|5401|8164|93398|771622|4900|42910|58|20|19|5|208|22|48|25.97|61.28|60.66|29.76|2911.68|1246.56|2941.44|145.58|0.00|911.52|2911.68|3057.26|3823.20|3968.78|1665.12| +2451176|80914|2451252|2288|11428|674591|5401|8164|93398|771622|4900|42910|52|10|8|5|79|22|23|17.12|49.30|31.05|419.75|714.15|393.76|1133.90|0.00|0.00|238.05|714.15|714.15|952.20|952.20|320.39| +2451176|80914|2451245|338|11428|674591|5401|8164|93398|771622|4900|42910|20|26|10|3|189|22|77|46.14|114.42|62.93|3964.73|4845.61|3552.78|8810.34|145.36|0.00|880.88|4845.61|4990.97|5726.49|5871.85|1292.83| +2451176|80914|2451188|10759|11428|674591|5401|8164|93398|771622|4900|42910|22|16|16|3|120|22|61|54.61|82.46|8.24|4527.42|502.64|3331.21|5030.06|13.47|165.87|1156.56|336.77|350.24|1493.33|1506.80|-2994.44| +2451176|80914|2451243|3160|11428|674591|5401|8164|93398|771622|4900|42910|46|1|18|5|232|22|56|31.95|75.08|24.02|2859.36|1345.12|1789.20|4204.48|80.70|0.00|1513.12|1345.12|1425.82|2858.24|2938.94|-444.08| +2451176|80914|2451214|7922|11428|674591|5401|8164|93398|771622|4900|42910|2|16|16|5|67|22|17|12.11|19.98|7.19|217.43|122.23|205.87|339.66|9.77|0.00|108.63|122.23|132.00|230.86|240.63|-83.64| +2451176|80914|2451252|7130|11428|674591|5401|8164|93398|771622|4900|42910|34|28|5|2|292|22|95|93.80|153.83|0.00|14613.85|0.00|8911.00|14613.85|0.00|0.00|4529.60|0.00|0.00|4529.60|4529.60|-8911.00| +2451176|80914|2451265|8936|11428|674591|5401|8164|93398|771622|4900|42910|38|10|5|4|10|22|69|60.00|169.20|59.22|7588.62|4086.18|4140.00|11674.80|94.79|1716.19|2451.57|2369.99|2464.78|4821.56|4916.35|-1770.01| +2451176|80914|2451205|4015|11428|674591|5401|8164|93398|771622|4900|42910|52|10|12|1|160|22|41|16.08|47.75|14.32|1370.63|587.12|659.28|1957.75|46.96|0.00|489.13|587.12|634.08|1076.25|1123.21|-72.16| +2451176|80914|2451184|5860|11428|674591|5401|8164|93398|771622|4900|42910|44|16|15|3|34|22|96|75.08|191.45|72.75|11395.20|6984.00|7207.68|18379.20|139.68|0.00|8453.76|6984.00|7123.68|15437.76|15577.44|-223.68| +2451103|82709|2451163|2984|49487|1494913|1492|10871|87709|790511|3455|14834|32|28|3|1|279|23|28|93.59|181.56|137.98|1220.24|3863.44|2620.52|5083.68|0.00|0.00|1575.84|3863.44|3863.44|5439.28|5439.28|1242.92| +2451103|82709|2451211|3211|49487|1494913|1492|10871|87709|790511|3455|14834|52|14|16|4|85|23|17|76.74|177.26|141.80|602.82|2410.60|1304.58|3013.42|216.95|0.00|903.89|2410.60|2627.55|3314.49|3531.44|1106.02| +2451103|82709|2451194|13238|49487|1494913|1492|10871|87709|790511|3455|14834|40|14|15|2|269|23|65|72.31|84.60|21.99|4069.65|1429.35|4700.15|5499.00|85.76|0.00|2529.15|1429.35|1515.11|3958.50|4044.26|-3270.80| +2451103|82709|2451122|17275|49487|1494913|1492|10871|87709|790511|3455|14834|19|19|20|5|227|23|98|28.06|46.57|35.39|1095.64|3468.22|2749.88|4563.86|0.00|0.00|1003.52|3468.22|3468.22|4471.74|4471.74|718.34| +2451103|82709|2451150|9319|49487|1494913|1492|10871|87709|790511|3455|14834|40|14|5|2|299|23|44|26.04|27.34|9.29|794.20|408.76|1145.76|1202.96|36.78|0.00|384.56|408.76|445.54|793.32|830.10|-737.00| +2451103|82709|2451181|15206|49487|1494913|1492|10871|87709|790511|3455|14834|13|20|5|2|136|23|43|97.87|275.01|239.25|1537.68|10287.75|4208.41|11825.43|102.87|0.00|1773.75|10287.75|10390.62|12061.50|12164.37|6079.34| +2451103|82709|2451210|17566|49487|1494913|1492|10871|87709|790511|3455|14834|52|7|11|3|55|23|66|39.45|108.09|19.45|5850.24|1283.70|2603.70|7133.94|51.34|0.00|998.58|1283.70|1335.04|2282.28|2333.62|-1320.00| +2451103|82709|2451204|10165|49487|1494913|1492|10871|87709|790511|3455|14834|56|25|4|3|212|23|67|73.95|91.69|57.76|2273.31|3869.92|4954.65|6143.23|154.79|0.00|2579.50|3869.92|4024.71|6449.42|6604.21|-1084.73| +2451103|82709|2451209|10820|49487|1494913|1492|10871|87709|790511|3455|14834|14|10|11|4|224|23|89|30.66|80.94|1.61|7060.37|143.29|2728.74|7203.66|2.86|0.00|575.83|143.29|146.15|719.12|721.98|-2585.45| +2451103|82709|2451197|5684|49487|1494913|1492|10871|87709|790511|3455|14834|1|19|12|4|46|23|42|83.16|216.21|30.26|7809.90|1270.92|3492.72|9080.82|50.83|0.00|272.16|1270.92|1321.75|1543.08|1593.91|-2221.80| +2451103|82709|2451149|17750|49487|1494913|1492|10871|87709|790511|3455|14834|34|22|6|3|137|23|69|57.14|124.56|39.85|5844.99|2749.65|3942.66|8594.64|27.49|0.00|2320.47|2749.65|2777.14|5070.12|5097.61|-1193.01| +2451103|82709|2451165|13312|49487|1494913|1492|10871|87709|790511|3455|14834|7|19|6|5|21|23|35|76.29|226.58|149.54|2696.40|5233.90|2670.15|7930.30|366.37|0.00|1110.20|5233.90|5600.27|6344.10|6710.47|2563.75| +2451103|82709|2451200|6910|49487|1494913|1492|10871|87709|790511|3455|14834|32|13|20|3|226|23|92|28.87|66.11|57.51|791.20|5290.92|2656.04|6082.12|476.18|0.00|1398.40|5290.92|5767.10|6689.32|7165.50|2634.88| +2451103|82709|2451158|8020|49487|1494913|1492|10871|87709|790511|3455|14834|20|8|9|3|10|23|40|55.03|69.88|69.88|0.00|2795.20|2201.20|2795.20|195.66|0.00|866.40|2795.20|2990.86|3661.60|3857.26|594.00| +2451103|82709|2451178|494|49487|1494913|1492|10871|87709|790511|3455|14834|32|8|16|4|232|23|11|16.33|23.84|20.74|34.10|228.14|179.63|262.24|0.00|0.00|65.56|228.14|228.14|293.70|293.70|48.51| +2451103|82709|2451198|15157|49487|1494913|1492|10871|87709|790511|3455|14834|19|7|5|4|240|23|95|24.25|45.83|4.12|3962.45|391.40|2303.75|4353.85|31.31|0.00|1131.45|391.40|422.71|1522.85|1554.16|-1912.35| +2452102|35718|2452189|141|9167|1219556|4698|9887|29071|1421648|5454|5396|19|3|1|5|269|24|89|72.85|135.50|89.43|4100.23|7959.27|6483.65|12059.50|557.14|0.00|2532.05|7959.27|8516.41|10491.32|11048.46|1475.62| +2452102|35718|2452140|1327|9167|1219556|4698|9887|29071|1421648|5454|5396|59|27|11|5|139|24|61|63.48|128.22|57.69|4302.33|3519.09|3872.28|7821.42|70.38|0.00|3050.00|3519.09|3589.47|6569.09|6639.47|-353.19| +2452102|35718|2452179|247|9167|1219556|4698|9887|29071|1421648|5454|5396|19|25|6|4|172|24|52|57.06|81.02|34.02|2444.00|1769.04|2967.12|4213.04|7.43|1662.89|1853.28|106.15|113.58|1959.43|1966.86|-2860.97| +2452102|35718|2452105|4679|9167|1219556|4698|9887|29071|1421648|5454|5396|5|29|7|4|111|24|92|62.22|138.75|79.08|5489.64|7275.36|5724.24|12765.00|436.52|0.00|1403.92|7275.36|7711.88|8679.28|9115.80|1551.12| +2452102|35718|2452222|13961|9167|1219556|4698|9887|29071|1421648|5454|5396|41|5|5|4|286|24|11|28.90|45.95|11.94|374.11|131.34|317.90|505.45|3.94|0.00|4.95|131.34|135.28|136.29|140.23|-186.56| +2452102|35718|2452214|4113|9167|1219556|4698|9887|29071|1421648|5454|5396|5|29|20|5|277|24|72|14.58|32.22|24.48|557.28|1762.56|1049.76|2319.84|105.75|0.00|69.12|1762.56|1868.31|1831.68|1937.43|712.80| +2452102|35718|2452157|5759|9167|1219556|4698|9887|29071|1421648|5454|5396|15|1|4|5|123|24|70|26.61|54.55|0.00|3818.50|0.00|1862.70|3818.50|0.00|0.00|801.50|0.00|0.00|801.50|801.50|-1862.70| +2452102|35718|2452188|14839|9167|1219556|4698|9887|29071|1421648|5454|5396|9|1|14|2|40|24|94|17.65|48.18|22.64|2400.76|2128.16|1659.10|4528.92|37.24|1596.12|1720.20|532.04|569.28|2252.24|2289.48|-1127.06| +2452102|35718|2452207|5397|9167|1219556|4698|9887|29071|1421648|5454|5396|11|29|1|5|79|24|87|43.68|63.33|23.43|3471.30|2038.41|3800.16|5509.71|11.00|937.66|1873.11|1100.75|1111.75|2973.86|2984.86|-2699.41| +2452102|35718|2452116|17291|9167|1219556|4698|9887|29071|1421648|5454|5396|45|9|17|4|244|24|5|90.67|216.70|82.34|671.80|411.70|453.35|1083.50|12.14|168.79|21.65|242.91|255.05|264.56|276.70|-210.44| +2452102|35718|2452214|12895|9167|1219556|4698|9887|29071|1421648|5454|5396|27|25|5|4|116|24|51|97.78|158.40|128.30|1535.10|6543.30|4986.78|8078.40|588.89|0.00|2261.85|6543.30|7132.19|8805.15|9394.04|1556.52| +2452102|35718|2452138|4231|9167|1219556|4698|9887|29071|1421648|5454|5396|13|21|5|1|120|24|31|41.49|90.86|33.61|1774.75|1041.91|1286.19|2816.66|52.09|0.00|27.90|1041.91|1094.00|1069.81|1121.90|-244.28| +2452102|35718|2452111|13283|9167|1219556|4698|9887|29071|1421648|5454|5396|49|25|4|2|30|24|37|21.11|39.89|31.51|310.06|1165.87|781.07|1475.93|69.95|0.00|545.75|1165.87|1235.82|1711.62|1781.57|384.80| +2452102|35718|2452114|2645|9167|1219556|4698|9887|29071|1421648|5454|5396|39|5|3|1|289|24|77|48.80|136.15|34.03|7863.24|2620.31|3757.60|10483.55|235.82|0.00|4193.42|2620.31|2856.13|6813.73|7049.55|-1137.29| +2452377|62495|2452440|10213|47151|1504206|2061|34363|10761|431235|5575|39430|6|6|3|3|63|25|32|19.66|22.21|2.22|639.68|71.04|629.12|710.72|5.68|0.00|42.56|71.04|76.72|113.60|119.28|-558.08| +2452377|62495|2452409|7221|47151|1504206|2061|34363|10761|431235|5575|39430|21|13|20|3|99|25|2|58.24|112.98|76.82|72.32|153.64|116.48|225.96|10.75|0.00|2.24|153.64|164.39|155.88|166.63|37.16| +2452377|62495|2452469|5673|47151|1504206|2061|34363|10761|431235|5575|39430|12|27|2|5|285|25|43|61.06|164.86|112.10|2268.68|4820.30|2625.58|7088.98|0.00|0.00|425.27|4820.30|4820.30|5245.57|5245.57|2194.72| +2452377|62495|2452471|7197|47151|1504206|2061|34363|10761|431235|5575|39430|30|27|3|2|138|25|12|67.06|80.47|64.37|193.20|772.44|804.72|965.64|26.57|108.14|463.44|664.30|690.87|1127.74|1154.31|-140.42| +2452377|62495|2452475|3379|47151|1504206|2061|34363|10761|431235|5575|39430|7|13|17|2|127|25|26|30.08|45.12|24.81|528.06|645.06|782.08|1173.12|29.35|225.77|410.54|419.29|448.64|829.83|859.18|-362.79| +2452377|62495|2452378|5790|47151|1504206|2061|34363|10761|431235|5575|39430|33|3|20|5|190|25|73|50.03|124.57|28.65|7002.16|2091.45|3652.19|9093.61|104.57|0.00|818.33|2091.45|2196.02|2909.78|3014.35|-1560.74| +2452377|62495|2452460|5571|47151|1504206|2061|34363|10761|431235|5575|39430|21|3|6|5|231|25|22|88.96|152.12|3.04|3279.76|66.88|1957.12|3346.64|6.01|0.00|1639.66|66.88|72.89|1706.54|1712.55|-1890.24| +2452377|62495|2452441|13332|47151|1504206|2061|34363|10761|431235|5575|39430|7|1|8|5|232|25|50|57.17|160.07|67.22|4642.50|3361.00|2858.50|8003.50|33.61|0.00|1440.50|3361.00|3394.61|4801.50|4835.11|502.50| +2452377|62495|2452452|4761|47151|1504206|2061|34363|10761|431235|5575|39430|13|30|16|4|295|25|93|88.00|150.48|109.85|3778.59|10216.05|8184.00|13994.64|0.00|0.00|2658.87|10216.05|10216.05|12874.92|12874.92|2032.05| +2452377|62495|2452437|4549|47151|1504206|2061|34363|10761|431235|5575|39430|36|3|16|2|81|25|29|68.48|169.14|3.38|4807.04|98.02|1985.92|4905.06|1.00|81.35|931.77|16.67|17.67|948.44|949.44|-1969.25| +2452377|62495|2452441|4833|47151|1504206|2061|34363|10761|431235|5575|39430|49|25|1|1|134|25|78|82.00|89.38|54.52|2719.08|4252.56|6396.00|6971.64|212.62|0.00|2369.64|4252.56|4465.18|6622.20|6834.82|-2143.44| +2452377|62495|2452425|7099|47151|1504206|2061|34363|10761|431235|5575|39430|24|21|13|5|204|25|47|60.04|144.69|34.72|5168.59|1631.84|2821.88|6800.43|130.54|0.00|1359.71|1631.84|1762.38|2991.55|3122.09|-1190.04| +2452377|62495|2452483|5472|47151|1504206|2061|34363|10761|431235|5575|39430|51|30|14|3|252|25|1|78.44|228.26|15.97|212.29|15.97|78.44|228.26|1.18|1.11|95.86|14.86|16.04|110.72|111.90|-63.58| +2451287|82606|2451312|3586|95407|970818|2582|4346|54186|951760|2438|21402|2|2|12|2|32|26|81|22.29|40.79|33.03|628.56|2675.43|1805.49|3303.99|80.26|0.00|1090.26|2675.43|2755.69|3765.69|3845.95|869.94| +2451287|82606|2451303|1528|95407|970818|2582|4346|54186|951760|2438|21402|56|7|9|4|169|26|92|38.04|101.94|61.16|3751.76|5626.72|3499.68|9378.48|56.26|0.00|3938.52|5626.72|5682.98|9565.24|9621.50|2127.04| +2451287|82606|2451343|2494|95407|970818|2582|4346|54186|951760|2438|21402|25|8|7|4|228|26|55|50.21|55.73|16.16|2176.35|888.80|2761.55|3065.15|35.55|0.00|1501.50|888.80|924.35|2390.30|2425.85|-1872.75| +2451287|82606|2451355|1042|95407|970818|2582|4346|54186|951760|2438|21402|49|4|14|5|96|26|85|71.87|176.80|14.14|13826.10|1201.90|6108.95|15028.00|48.07|0.00|6160.80|1201.90|1249.97|7362.70|7410.77|-4907.05| +2451287|82606|2451295|5878|95407|970818|2582|4346|54186|951760|2438|21402|19|16|5|4|140|26|31|64.70|84.75|55.93|893.42|1733.83|2005.70|2627.25|104.02|0.00|604.19|1733.83|1837.85|2338.02|2442.04|-271.87| +2451287|82606|2451304|8710|95407|970818|2582|4346|54186|951760|2438|21402|16|1|10|2|171|26|34|56.10|141.37|52.30|3028.38|1778.20|1907.40|4806.58|34.14|640.15|1393.66|1138.05|1172.19|2531.71|2565.85|-769.35| +2451287|82606|2451360|13885|95407|970818|2582|4346|54186|951760|2438|21402|2|28|8|4|257|26|79|13.35|18.28|10.23|635.95|808.17|1054.65|1444.12|0.00|783.92|173.01|24.25|24.25|197.26|197.26|-1030.40| +2451287|82606|2451395|3788|95407|970818|2582|4346|54186|951760|2438|21402|2|14|14|5|176|26|15|56.43|62.07|41.58|307.35|623.70|846.45|931.05|18.21|168.39|102.30|455.31|473.52|557.61|575.82|-391.14| +2451287|82606|2451392|17788|95407|970818|2582|4346|54186|951760|2438|21402|49|8|5|5|275|26|6|33.83|99.12|25.77|440.10|154.62|202.98|594.72|12.36|0.00|285.42|154.62|166.98|440.04|452.40|-48.36| +2451287|82606|2451399|2090|95407|970818|2582|4346|54186|951760|2438|21402|46|26|1|1|208|26|69|88.19|179.90|8.99|11792.79|620.31|6085.11|12413.10|6.20|0.00|2854.53|620.31|626.51|3474.84|3481.04|-5464.80| +2451287|82606|2451405|10462|95407|970818|2582|4346|54186|951760|2438|21402|58|2|11|3|82|26|12|16.74|43.69|13.54|361.80|162.48|200.88|524.28|9.74|0.00|230.64|162.48|172.22|393.12|402.86|-38.40| +2451287|82606|2451362|4612|95407|970818|2582|4346|54186|951760|2438|21402|52|28|20|3|263|26|3|89.46|104.66|36.63|204.09|109.89|268.38|313.98|9.89|0.00|119.31|109.89|119.78|229.20|239.09|-158.49| +2451287|82606|2451407|15325|95407|970818|2582|4346|54186|951760|2438|21402|1|28|12|4|283|26|56|42.81|65.92|36.25|1661.52|2030.00|2397.36|3691.52|20.30|0.00|1291.92|2030.00|2050.30|3321.92|3342.22|-367.36| +2451287|82606|2451342|16459|95407|970818|2582|4346|54186|951760|2438|21402|32|16|8|5|149|26|54|67.29|91.51|90.59|49.68|4891.86|3633.66|4941.54|195.67|0.00|1531.44|4891.86|5087.53|6423.30|6618.97|1258.20| +2451287|82606|2451317|14662|95407|970818|2582|4346|54186|951760|2438|21402|55|20|17|3|246|26|36|47.37|132.16|9.25|4424.76|333.00|1705.32|4757.76|26.64|0.00|1950.48|333.00|359.64|2283.48|2310.12|-1372.32| +2451287|82606|2451306|5942|95407|970818|2582|4346|54186|951760|2438|21402|13|28|10|3|173|26|44|62.57|162.05|9.72|6702.52|427.68|2753.08|7130.20|17.10|0.00|213.84|427.68|444.78|641.52|658.62|-2325.40| +2450884|35444|2450962|8684|31979|1234440|4901|13715|46998|1484245|5851|33912|52|28|13|4|182|27|33|94.47|225.78|56.44|5588.22|1862.52|3117.51|7450.74|55.13|484.25|1191.96|1378.27|1433.40|2570.23|2625.36|-1739.24| +2450884|35444|2450948|10546|31979|1234440|4901|13715|46998|1484245|5851|33912|50|4|17|4|278|27|2|42.83|116.92|12.86|208.12|25.72|85.66|233.84|2.31|0.00|56.12|25.72|28.03|81.84|84.15|-59.94| +2450884|35444|2450918|14170|31979|1234440|4901|13715|46998|1484245|5851|33912|20|8|9|3|197|27|77|28.35|44.22|2.21|3234.77|170.17|2182.95|3404.94|0.00|0.00|135.52|170.17|170.17|305.69|305.69|-2012.78| +2450884|35444|2450928|12086|31979|1234440|4901|13715|46998|1484245|5851|33912|56|4|14|5|59|27|11|27.78|36.94|4.80|353.54|52.80|305.58|406.34|4.75|0.00|186.89|52.80|57.55|239.69|244.44|-252.78| +2450884|35444|2450947|11474|31979|1234440|4901|13715|46998|1484245|5851|33912|22|4|14|3|29|27|15|47.22|76.49|64.25|183.60|963.75|708.30|1147.35|0.00|0.00|195.00|963.75|963.75|1158.75|1158.75|255.45| +2450884|35444|2450888|6254|31979|1234440|4901|13715|46998|1484245|5851|33912|31|20|9|4|259|27|36|8.88|15.00|11.70|118.80|421.20|319.68|540.00|25.27|0.00|178.20|421.20|446.47|599.40|624.67|101.52| +2450884|35444|2450937|8206|31979|1234440|4901|13715|46998|1484245|5851|33912|14|13|6|3|207|27|86|71.43|127.14|16.52|9513.32|1420.72|6142.98|10934.04|28.41|0.00|983.84|1420.72|1449.13|2404.56|2432.97|-4722.26| +2450884|35444|2450889|2260|31979|1234440|4901|13715|46998|1484245|5851|33912|13|1|5|2|246|27|61|21.60|28.29|25.17|190.32|1535.37|1317.60|1725.69|15.35|0.00|275.72|1535.37|1550.72|1811.09|1826.44|217.77| +2450884|35444|2450940|12544|31979|1234440|4901|13715|46998|1484245|5851|33912|8|26|3|5|4|27|25|49.73|70.61|34.59|900.50|864.75|1243.25|1765.25|34.59|0.00|229.25|864.75|899.34|1094.00|1128.59|-378.50| +2450884|35444|2450984|13010|31979|1234440|4901|13715|46998|1484245|5851|33912|2|22|9|4|266|27|49|32.26|71.93|69.05|141.12|3383.45|1580.74|3524.57|23.68|1015.03|140.63|2368.42|2392.10|2509.05|2532.73|787.68| +2450884|35444|2450914|2648|31979|1234440|4901|13715|46998|1484245|5851|33912|22|13|2|5|225|27|51|30.34|39.13|13.69|1297.44|698.19|1547.34|1995.63|55.85|0.00|0.00|698.19|754.04|698.19|754.04|-849.15| +2450884|35444|2450887|17770|31979|1234440|4901|13715|46998|1484245|5851|33912|56|28|1|2|3|27|67|35.92|65.01|5.85|3963.72|391.95|2406.64|4355.67|7.83|0.00|1175.85|391.95|399.78|1567.80|1575.63|-2014.69| +2450884|35444|2450927|9118|31979|1234440|4901|13715|46998|1484245|5851|33912|8|13|12|4|216|27|66|68.00|85.68|40.26|2997.72|2657.16|4488.00|5654.88|239.14|0.00|678.48|2657.16|2896.30|3335.64|3574.78|-1830.84| +2450884|35444|2450929|7588|31979|1234440|4901|13715|46998|1484245|5851|33912|25|1|16|4|2|27|11|4.36|10.07|2.21|86.46|24.31|47.96|110.77|1.21|0.00|6.60|24.31|25.52|30.91|32.12|-23.65| +2450884|35444|2450973|17959|31979|1234440|4901|13715|46998|1484245|5851|33912|8|22|16|5|294|27|14|21.94|56.60|35.09|301.14|491.26|307.16|792.40|44.21|0.00|118.86|491.26|535.47|610.12|654.33|184.10| +2450884|35444|2450952|11053|31979|1234440|4901|13715|46998|1484245|5851|33912|4|26|15|3|234|27|14|24.32|51.55|38.66|180.46|541.24|340.48|721.70|48.71|0.00|180.32|541.24|589.95|721.56|770.27|200.76| +2451039|62333|2451050|11522|24997|871580|6163|36746|10052|1758318|4848|35431|7|19|16|2|298|28|30|66.66|189.98|182.38|228.00|5471.40|1999.80|5699.40|273.57|0.00|56.70|5471.40|5744.97|5528.10|5801.67|3471.60| +2451039|62333|2451062|11197|24997|871580|6163|36746|10052|1758318|4848|35431|16|10|6|3|260|28|33|44.85|64.13|28.21|1185.36|930.93|1480.05|2116.29|83.78|0.00|169.29|930.93|1014.71|1100.22|1184.00|-549.12| +2451039|62333|2451109|17164|24997|871580|6163|36746|10052|1758318|4848|35431|1|26|10|1|69|28|56|85.54|148.83|104.18|2500.40|5834.08|4790.24|8334.48|233.36|0.00|1833.44|5834.08|6067.44|7667.52|7900.88|1043.84| +2451039|62333|2451113|4058|24997|871580|6163|36746|10052|1758318|4848|35431|43|14|14|2|183|28|63|15.93|30.90|27.19|233.73|1712.97|1003.59|1946.70|137.03|0.00|856.17|1712.97|1850.00|2569.14|2706.17|709.38| +2451039|62333|2451155|11881|24997|871580|6163|36746|10052|1758318|4848|35431|25|2|11|5|209|28|28|84.48|119.11|39.30|2234.68|1100.40|2365.44|3335.08|55.02|0.00|800.24|1100.40|1155.42|1900.64|1955.66|-1265.04| +2451039|62333|2451043|3721|24997|871580|6163|36746|10052|1758318|4848|35431|58|7|18|2|256|28|89|97.81|97.81|86.07|1044.86|7660.23|8705.09|8705.09|536.21|0.00|1914.39|7660.23|8196.44|9574.62|10110.83|-1044.86| +2451039|62333|2451155|7190|24997|871580|6163|36746|10052|1758318|4848|35431|46|19|19|5|14|28|1|99.95|175.91|66.84|109.07|66.84|99.95|175.91|0.19|47.45|33.42|19.39|19.58|52.81|53.00|-80.56| +2451039|62333|2451122|286|24997|871580|6163|36746|10052|1758318|4848|35431|26|20|15|2|219|28|39|62.06|73.23|8.78|2513.55|342.42|2420.34|2855.97|0.00|219.14|771.03|123.28|123.28|894.31|894.31|-2297.06| +2451039|62333|2451074|1519|24997|871580|6163|36746|10052|1758318|4848|35431|14|28|12|2|269|28|34|71.14|165.75|109.39|1916.24|3719.26|2418.76|5635.50|0.00|0.00|56.10|3719.26|3719.26|3775.36|3775.36|1300.50| +2451039|62333|2451118|9403|24997|871580|6163|36746|10052|1758318|4848|35431|38|22|4|3|235|28|74|74.71|132.98|117.02|1181.04|8659.48|5528.54|9840.52|173.18|0.00|196.10|8659.48|8832.66|8855.58|9028.76|3130.94| +2451039|62333|2451087|5353|24997|871580|6163|36746|10052|1758318|4848|35431|56|20|16|1|33|28|75|45.15|130.93|60.22|5303.25|4516.50|3386.25|9819.75|0.00|0.00|687.00|4516.50|4516.50|5203.50|5203.50|1130.25| +2451039|62333|2451048|13004|24997|871580|6163|36746|10052|1758318|4848|35431|19|26|18|2|93|28|25|45.99|57.48|27.01|761.75|675.25|1149.75|1437.00|54.02|0.00|43.00|675.25|729.27|718.25|772.27|-474.50| +2452220|41441|2452320|11879|57028|556763|1298|3033|18962|1496846|5391|47079|17|13|12|2|45|29|91|39.18|64.25|34.69|2689.96|3156.79|3565.38|5846.75|220.97|0.00|1695.33|3156.79|3377.76|4852.12|5073.09|-408.59| +2452220|41441|2452314|17021|57028|556763|1298|3033|18962|1496846|5391|47079|15|7|20|3|239|29|37|60.58|164.77|74.14|3353.31|2743.18|2241.46|6096.49|1.64|2578.58|1340.88|164.60|166.24|1505.48|1507.12|-2076.86| +2452220|41441|2452229|4193|57028|556763|1298|3033|18962|1496846|5391|47079|31|21|19|2|95|29|82|23.49|50.97|45.36|460.02|3719.52|1926.18|4179.54|185.97|0.00|208.28|3719.52|3905.49|3927.80|4113.77|1793.34| +2452220|41441|2452281|13269|57028|556763|1298|3033|18962|1496846|5391|47079|25|9|17|2|244|29|55|34.69|39.19|36.44|151.25|2004.20|1907.95|2155.45|27.05|1463.06|172.15|541.14|568.19|713.29|740.34|-1366.81| +2452220|41441|2452285|12889|57028|556763|1298|3033|18962|1496846|5391|47079|53|3|17|5|220|29|49|22.48|56.64|24.35|1582.21|1193.15|1101.52|2775.36|107.38|0.00|999.11|1193.15|1300.53|2192.26|2299.64|91.63| +2452220|41441|2452279|12911|57028|556763|1298|3033|18962|1496846|5391|47079|5|15|20|5|120|29|89|97.71|276.51|218.44|5168.23|19441.16|8696.19|24609.39|0.00|0.00|2460.85|19441.16|19441.16|21902.01|21902.01|10744.97| +2452220|41441|2452256|5731|57028|556763|1298|3033|18962|1496846|5391|47079|3|29|11|4|107|29|56|96.93|107.59|71.00|2049.04|3976.00|5428.08|6025.04|155.06|874.72|1204.56|3101.28|3256.34|4305.84|4460.90|-2326.80| +2452220|41441|2452337|3275|57028|556763|1298|3033|18962|1496846|5391|47079|3|5|7|3|262|29|27|73.21|201.32|16.10|5000.94|434.70|1976.67|5435.64|13.04|0.00|652.05|434.70|447.74|1086.75|1099.79|-1541.97| +2452220|41441|2452276|12777|57028|556763|1298|3033|18962|1496846|5391|47079|33|29|16|2|115|29|87|97.21|228.44|43.40|16098.48|3775.80|8457.27|19874.28|226.54|0.00|7353.24|3775.80|4002.34|11129.04|11355.58|-4681.47| +2452220|41441|2452282|2765|57028|556763|1298|3033|18962|1496846|5391|47079|9|11|7|3|279|29|9|95.82|248.17|213.42|312.75|1920.78|862.38|2233.53|172.87|0.00|960.39|1920.78|2093.65|2881.17|3054.04|1058.40| +2451150|41465|2451252|13568|73211|866401|5991|7181|36734|1886542|798|2788|1|19|6|2|21|30|98|40.69|90.33|56.90|3276.14|5576.20|3987.62|8852.34|111.52|0.00|1061.34|5576.20|5687.72|6637.54|6749.06|1588.58| +2451150|41465|2451178|9163|73211|866401|5991|7181|36734|1886542|798|2788|28|7|3|2|241|30|83|76.03|146.73|111.51|2923.26|9255.33|6310.49|12178.59|283.21|6108.51|1460.80|3146.82|3430.03|4607.62|4890.83|-3163.67| +2451150|41465|2451255|16190|73211|866401|5991|7181|36734|1886542|798|2788|22|26|3|5|267|30|35|8.53|12.53|10.90|57.05|381.50|298.55|438.55|34.33|0.00|12.95|381.50|415.83|394.45|428.78|82.95| +2451150|41465|2451192|5546|73211|866401|5991|7181|36734|1886542|798|2788|43|26|13|5|147|30|34|91.37|161.72|9.70|5168.68|329.80|3106.58|5498.48|9.89|0.00|824.50|329.80|339.69|1154.30|1164.19|-2776.78| +2451150|41465|2451184|4009|73211|866401|5991|7181|36734|1886542|798|2788|28|4|14|5|253|30|85|17.11|35.41|8.85|2257.60|752.25|1454.35|3009.85|6.92|406.21|270.30|346.04|352.96|616.34|623.26|-1108.31| +2451150|41465|2451198|9025|73211|866401|5991|7181|36734|1886542|798|2788|4|19|14|1|105|30|50|97.54|258.48|18.09|12019.50|904.50|4877.00|12924.00|54.27|0.00|1550.50|904.50|958.77|2455.00|2509.27|-3972.50| +2451150|41465|2451257|9368|73211|866401|5991|7181|36734|1886542|798|2788|8|25|11|1|134|30|71|39.71|41.29|12.79|2023.50|908.09|2819.41|2931.59|81.72|0.00|1406.51|908.09|989.81|2314.60|2396.32|-1911.32| +2451150|41465|2451235|7987|73211|866401|5991|7181|36734|1886542|798|2788|43|10|20|4|228|30|37|81.68|93.11|42.83|1860.36|1584.71|3022.16|3445.07|79.23|0.00|413.29|1584.71|1663.94|1998.00|2077.23|-1437.45| +2451150|41465|2451187|4868|73211|866401|5991|7181|36734|1886542|798|2788|49|22|16|3|160|30|73|63.15|153.45|104.34|3585.03|7616.82|4609.95|11201.85|457.00|0.00|3584.30|7616.82|8073.82|11201.12|11658.12|3006.87| +2451150|41465|2451240|3460|73211|866401|5991|7181|36734|1886542|798|2788|8|22|12|4|289|30|14|14.06|16.59|3.64|181.30|50.96|196.84|232.26|0.15|45.86|88.20|5.10|5.25|93.30|93.45|-191.74| +2451037|54024|2451081|13742|29544|1314548|5952|34556|18322|1519490|6768|24572|40|4|15|2|39|31|10|1.41|3.10|1.67|14.30|16.70|14.10|31.00|0.00|0.00|10.20|16.70|16.70|26.90|26.90|2.60| +2451037|54024|2451154|9745|29544|1314548|5952|34556|18322|1519490|6768|24572|44|22|4|3|152|31|66|97.80|226.89|176.97|3294.72|11680.02|6454.80|14974.74|467.20|0.00|6588.78|11680.02|12147.22|18268.80|18736.00|5225.22| +2451037|54024|2451130|15829|29544|1314548|5952|34556|18322|1519490|6768|24572|56|22|15|3|254|31|27|37.83|101.00|9.09|2481.57|245.43|1021.41|2727.00|2.74|211.06|1090.80|34.37|37.11|1125.17|1127.91|-987.04| +2451037|54024|2451095|16804|29544|1314548|5952|34556|18322|1519490|6768|24572|40|28|19|3|207|31|94|42.95|113.81|73.97|3744.96|6953.18|4037.30|10698.14|66.75|3615.65|3209.16|3337.53|3404.28|6546.69|6613.44|-699.77| +2451037|54024|2451139|9320|29544|1314548|5952|34556|18322|1519490|6768|24572|34|26|20|4|265|31|34|85.40|245.09|117.64|4333.30|3999.76|2903.60|8333.06|279.98|0.00|3749.86|3999.76|4279.74|7749.62|8029.60|1096.16| +2451037|54024|2451065|8722|29544|1314548|5952|34556|18322|1519490|6768|24572|16|10|16|3|103|31|33|59.36|163.24|163.24|0.00|5386.92|1958.88|5386.92|323.21|0.00|269.28|5386.92|5710.13|5656.20|5979.41|3428.04| +2451037|54024|2451092|16910|29544|1314548|5952|34556|18322|1519490|6768|24572|37|10|16|1|126|31|69|13.02|28.12|12.65|1067.43|872.85|898.38|1940.28|24.78|253.12|115.92|619.73|644.51|735.65|760.43|-278.65| +2451037|54024|2451150|12733|29544|1314548|5952|34556|18322|1519490|6768|24572|58|22|11|3|115|31|68|16.39|39.33|6.68|2220.20|454.24|1114.52|2674.44|18.16|0.00|801.72|454.24|472.40|1255.96|1274.12|-660.28| +2451037|54024|2451117|7844|29544|1314548|5952|34556|18322|1519490|6768|24572|22|26|9|1|216|31|21|88.24|231.18|152.57|1650.81|3203.97|1853.04|4854.78|0.00|0.00|339.78|3203.97|3203.97|3543.75|3543.75|1350.93| +2451037|54024|2451104|13897|29544|1314548|5952|34556|18322|1519490|6768|24572|28|13|6|3|27|31|37|72.48|118.14|115.77|87.69|4283.49|2681.76|4371.18|133.64|2056.07|261.96|2227.42|2361.06|2489.38|2623.02|-454.34| +2451037|54024|2451132|13141|29544|1314548|5952|34556|18322|1519490|6768|24572|2|19|18|1|64|31|48|32.40|97.20|89.42|373.44|4292.16|1555.20|4665.60|128.76|0.00|792.96|4292.16|4420.92|5085.12|5213.88|2736.96| +2451037|54024|2451125|3916|29544|1314548|5952|34556|18322|1519490|6768|24572|20|1|1|1|241|31|20|7.63|10.22|4.29|118.60|85.80|152.60|204.40|6.00|0.00|94.00|85.80|91.80|179.80|185.80|-66.80| +2451037|54024|2451110|15034|29544|1314548|5952|34556|18322|1519490|6768|24572|8|13|2|4|66|31|24|92.87|157.87|0.00|3788.88|0.00|2228.88|3788.88|0.00|0.00|1742.88|0.00|0.00|1742.88|1742.88|-2228.88| +2451379|64549|2451383|8041|67273|1005447|3621|28548|7907|1111442|1023|4797|19|26|15|1|130|32|89|28.90|60.69|57.65|270.56|5130.85|2572.10|5401.41|102.61|0.00|1566.40|5130.85|5233.46|6697.25|6799.86|2558.75| +2451379|64549|2451470|2894|67273|1005447|3621|28548|7907|1111442|1023|4797|4|4|3|1|116|32|68|38.55|67.07|30.18|2508.52|2052.24|2621.40|4560.76|61.56|0.00|2188.92|2052.24|2113.80|4241.16|4302.72|-569.16| +2451379|64549|2451395|12158|67273|1005447|3621|28548|7907|1111442|1023|4797|14|22|13|2|68|32|19|28.69|81.76|23.71|1102.95|450.49|545.11|1553.44|18.01|0.00|776.72|450.49|468.50|1227.21|1245.22|-94.62| +2451379|64549|2451482|16754|67273|1005447|3621|28548|7907|1111442|1023|4797|10|4|20|2|114|32|6|82.63|122.29|100.27|132.12|601.62|495.78|733.74|12.03|0.00|300.78|601.62|613.65|902.40|914.43|105.84| +2451379|64549|2451496|14227|67273|1005447|3621|28548|7907|1111442|1023|4797|43|13|15|5|128|32|22|51.82|123.84|108.97|327.14|2397.34|1140.04|2724.48|95.89|0.00|980.76|2397.34|2493.23|3378.10|3473.99|1257.30| +2451379|64549|2451442|3043|67273|1005447|3621|28548|7907|1111442|1023|4797|7|22|3|4|262|32|25|55.48|159.22|156.03|79.75|3900.75|1387.00|3980.50|351.06|0.00|875.50|3900.75|4251.81|4776.25|5127.31|2513.75| +2451379|64549|2451471|2078|67273|1005447|3621|28548|7907|1111442|1023|4797|20|14|8|5|202|32|85|86.33|224.45|181.80|3625.25|15453.00|7338.05|19078.25|199.34|8808.21|8775.40|6644.79|6844.13|15420.19|15619.53|-693.26| +2451379|64549|2451414|4274|67273|1005447|3621|28548|7907|1111442|1023|4797|43|26|6|3|50|32|40|38.71|99.48|42.77|2268.40|1710.80|1548.40|3979.20|17.10|0.00|1949.60|1710.80|1727.90|3660.40|3677.50|162.40| +2451379|64549|2451478|14438|67273|1005447|3621|28548|7907|1111442|1023|4797|1|8|16|2|1|32|81|82.74|226.70|36.27|15424.83|2937.87|6701.94|18362.70|235.02|0.00|7528.14|2937.87|3172.89|10466.01|10701.03|-3764.07| +2451379|64549|2451497|3046|67273|1005447|3621|28548|7907|1111442|1023|4797|2|7|3|5|227|32|40|59.52|94.63|67.18|1098.00|2687.20|2380.80|3785.20|80.61|0.00|1703.20|2687.20|2767.81|4390.40|4471.01|306.40| +2451379|64549|2451428|1933|67273|1005447|3621|28548|7907|1111442|1023|4797|55|22|13|4|248|32|3|24.49|29.14|4.95|72.57|14.85|73.47|87.42|0.29|0.00|19.23|14.85|15.14|34.08|34.37|-58.62| +2451379|64549|2451462|15937|67273|1005447|3621|28548|7907|1111442|1023|4797|4|13|11|5|169|32|37|92.05|273.38|49.20|8294.66|1820.40|3405.85|10115.06|163.83|0.00|1213.60|1820.40|1984.23|3034.00|3197.83|-1585.45| +2451379|64549|2451391|11521|67273|1005447|3621|28548|7907|1111442|1023|4797|56|10|3|5|117|32|54|48.67|123.13|102.19|1130.76|5518.26|2628.18|6649.02|386.27|0.00|1130.22|5518.26|5904.53|6648.48|7034.75|2890.08| +2451517|31608|2451570|8431|88444|869059|5674|16336|33131|1695169|4228|25643|20|1|1|3|218|33|86|95.64|159.71|71.86|7555.10|6179.96|8225.04|13735.06|308.99|0.00|5905.62|6179.96|6488.95|12085.58|12394.57|-2045.08| +2451517|31608|2451536|12926|88444|869059|5674|16336|33131|1695169|4228|25643|37|10|20|4|78|33|3|23.57|31.34|14.10|51.72|42.30|70.71|94.02|2.53|0.00|5.64|42.30|44.83|47.94|50.47|-28.41| +2451517|31608|2451576|16490|88444|869059|5674|16336|33131|1695169|4228|25643|44|25|16|4|112|33|31|98.28|283.04|246.24|1140.80|7633.44|3046.68|8774.24|152.66|0.00|1666.87|7633.44|7786.10|9300.31|9452.97|4586.76| +2451517|31608|2451612|7090|88444|869059|5674|16336|33131|1695169|4228|25643|31|4|20|4|151|33|26|58.85|73.56|38.98|899.08|1013.48|1530.10|1912.56|60.80|0.00|382.46|1013.48|1074.28|1395.94|1456.74|-516.62| +2451517|31608|2451582|5407|88444|869059|5674|16336|33131|1695169|4228|25643|28|7|13|2|211|33|21|83.48|170.29|103.87|1394.82|2181.27|1753.08|3576.09|65.43|0.00|1179.99|2181.27|2246.70|3361.26|3426.69|428.19| +2451517|31608|2451631|1807|88444|869059|5674|16336|33131|1695169|4228|25643|16|1|20|2|201|33|87|99.48|239.74|33.56|17937.66|2919.72|8654.76|20857.38|184.52|613.14|10428.69|2306.58|2491.10|12735.27|12919.79|-6348.18| +2451517|31608|2451566|17581|88444|869059|5674|16336|33131|1695169|4228|25643|20|7|10|3|179|33|84|12.17|33.22|12.62|1730.40|1060.08|1022.28|2790.48|63.60|0.00|641.76|1060.08|1123.68|1701.84|1765.44|37.80| +2451517|31608|2451570|3673|88444|869059|5674|16336|33131|1695169|4228|25643|10|26|15|3|241|33|11|79.96|188.70|7.54|1992.76|82.94|879.56|2075.70|2.48|0.00|498.08|82.94|85.42|581.02|583.50|-796.62| +2451517|31608|2451583|14282|88444|869059|5674|16336|33131|1695169|4228|25643|37|28|11|2|176|33|7|36.32|70.46|54.95|108.57|384.65|254.24|493.22|3.84|0.00|177.52|384.65|388.49|562.17|566.01|130.41| +2451517|31608|2451519|3955|88444|869059|5674|16336|33131|1695169|4228|25643|13|25|16|2|135|33|65|73.89|191.37|99.51|5970.90|6468.15|4802.85|12439.05|517.45|0.00|3233.75|6468.15|6985.60|9701.90|10219.35|1665.30| +2451517|31608|2451610|9076|88444|869059|5674|16336|33131|1695169|4228|25643|10|7|2|5|208|33|57|98.95|131.60|121.07|600.21|6900.99|5640.15|7501.20|621.08|0.00|2550.18|6900.99|7522.07|9451.17|10072.25|1260.84| +2451517|31608|2451621|7544|88444|869059|5674|16336|33131|1695169|4228|25643|46|19|16|2|118|33|8|50.93|58.56|43.92|117.12|351.36|407.44|468.48|3.51|0.00|4.64|351.36|354.87|356.00|359.51|-56.08| +2451328|78353|2451355|5629|56679|1142880|1081|39282|47435|1683458|1885|16086|7|25|2|1|70|34|5|85.54|100.93|52.48|242.25|262.40|427.70|504.65|13.12|0.00|80.70|262.40|275.52|343.10|356.22|-165.30| +2451328|78353|2451388|1348|56679|1142880|1081|39282|47435|1683458|1885|16086|26|2|17|5|213|34|41|28.24|78.78|41.75|1518.23|1711.75|1157.84|3229.98|17.11|0.00|1130.37|1711.75|1728.86|2842.12|2859.23|553.91| +2451328|78353|2451367|2266|56679|1142880|1081|39282|47435|1683458|1885|16086|19|10|15|4|93|34|77|66.31|174.39|125.56|3759.91|9668.12|5105.87|13428.03|386.72|0.00|6176.17|9668.12|10054.84|15844.29|16231.01|4562.25| +2451328|78353|2451401|7195|56679|1142880|1081|39282|47435|1683458|1885|16086|40|7|4|2|110|34|96|41.23|77.92|77.14|74.88|7405.44|3958.08|7480.32|148.10|0.00|3665.28|7405.44|7553.54|11070.72|11218.82|3447.36| +2451328|78353|2451420|13102|56679|1142880|1081|39282|47435|1683458|1885|16086|38|8|3|3|216|34|94|18.44|25.81|10.84|1407.18|1018.96|1733.36|2426.14|10.18|0.00|581.86|1018.96|1029.14|1600.82|1611.00|-714.40| +2451328|78353|2451421|7993|56679|1142880|1081|39282|47435|1683458|1885|16086|10|7|2|5|141|34|55|71.17|196.42|143.38|2917.20|7885.90|3914.35|10803.10|315.43|0.00|431.75|7885.90|8201.33|8317.65|8633.08|3971.55| +2451328|78353|2451386|13804|56679|1142880|1081|39282|47435|1683458|1885|16086|46|19|9|5|201|34|52|52.68|150.66|75.33|3917.16|3917.16|2739.36|7834.32|9.40|3760.47|1174.68|156.69|166.09|1331.37|1340.77|-2582.67| +2451328|78353|2451355|136|56679|1142880|1081|39282|47435|1683458|1885|16086|1|28|9|5|214|34|48|59.41|141.39|57.96|4004.64|2782.08|2851.68|6786.72|111.28|0.00|610.56|2782.08|2893.36|3392.64|3503.92|-69.60| +2451328|78353|2451400|8824|56679|1142880|1081|39282|47435|1683458|1885|16086|37|13|15|3|241|34|26|90.63|265.54|249.60|414.44|6489.60|2356.38|6904.04|124.60|259.58|2209.22|6230.02|6354.62|8439.24|8563.84|3873.64| +2451328|78353|2451406|4708|56679|1142880|1081|39282|47435|1683458|1885|16086|20|8|19|3|47|34|70|81.95|117.18|17.57|6972.70|1229.90|5736.50|8202.60|110.69|0.00|574.00|1229.90|1340.59|1803.90|1914.59|-4506.60| +2451328|78353|2451409|15313|56679|1142880|1081|39282|47435|1683458|1885|16086|16|2|12|5|235|34|29|31.69|62.74|55.21|218.37|1601.09|919.01|1819.46|0.00|0.00|873.19|1601.09|1601.09|2474.28|2474.28|682.08| +2451328|78353|2451417|10262|56679|1142880|1081|39282|47435|1683458|1885|16086|19|10|2|3|241|34|15|88.55|170.90|54.68|1743.30|820.20|1328.25|2563.50|65.61|0.00|640.80|820.20|885.81|1461.00|1526.61|-508.05| +2451328|78353|2451415|14864|56679|1142880|1081|39282|47435|1683458|1885|16086|13|14|19|2|108|34|98|84.37|165.36|71.10|9237.48|6967.80|8268.26|16205.28|124.02|766.45|486.08|6201.35|6325.37|6687.43|6811.45|-2066.91| +2451889|42440|2451936|12247|90495|1378316|3290|31464|32170|1831235|5680|41854|50|13|15|3|144|35|82|48.03|73.96|22.92|4185.28|1879.44|3938.46|6064.72|18.79|0.00|2789.64|1879.44|1898.23|4669.08|4687.87|-2059.02| +2451889|42440|2451938|4739|90495|1378316|3290|31464|32170|1831235|5680|41854|43|2|2|2|62|35|3|88.91|130.69|3.92|380.31|11.76|266.73|392.07|0.35|0.00|137.22|11.76|12.11|148.98|149.33|-254.97| +2451889|42440|2451892|13304|90495|1378316|3290|31464|32170|1831235|5680|41854|25|26|15|1|257|35|10|25.49|52.76|12.13|406.30|121.30|254.90|527.60|2.42|0.00|58.00|121.30|123.72|179.30|181.72|-133.60| +2451889|42440|2451922|12923|90495|1378316|3290|31464|32170|1831235|5680|41854|14|2|16|2|81|35|15|29.09|73.59|11.03|938.40|165.45|436.35|1103.85|3.07|62.87|132.45|102.58|105.65|235.03|238.10|-333.77| +2451889|42440|2451982|17189|90495|1378316|3290|31464|32170|1831235|5680|41854|14|5|18|1|281|35|32|84.10|206.04|30.90|5604.48|988.80|2691.20|6593.28|79.10|0.00|725.12|988.80|1067.90|1713.92|1793.02|-1702.40| +2451889|42440|2451906|9506|90495|1378316|3290|31464|32170|1831235|5680|41854|41|5|18|3|138|35|37|70.28|200.29|104.15|3557.18|3853.55|2600.36|7410.73|38.53|0.00|222.00|3853.55|3892.08|4075.55|4114.08|1253.19| +2451889|42440|2451952|16405|90495|1378316|3290|31464|32170|1831235|5680|41854|53|8|16|2|135|35|95|13.14|29.82|19.08|1020.30|1812.60|1248.30|2832.90|36.25|0.00|1217.90|1812.60|1848.85|3030.50|3066.75|564.30| +2451889|42440|2451944|10424|90495|1378316|3290|31464|32170|1831235|5680|41854|53|23|20|5|80|35|82|18.11|34.77|3.47|2566.60|284.54|1485.02|2851.14|8.53|0.00|1197.20|284.54|293.07|1481.74|1490.27|-1200.48| +2451889|42440|2451983|13165|90495|1378316|3290|31464|32170|1831235|5680|41854|8|19|18|3|131|35|16|77.39|152.45|44.21|1731.84|707.36|1238.24|2439.20|0.00|0.00|341.44|707.36|707.36|1048.80|1048.80|-530.88| +2451889|42440|2451965|11816|90495|1378316|3290|31464|32170|1831235|5680|41854|50|11|16|1|96|35|65|8.32|20.96|11.73|599.95|762.45|540.80|1362.40|0.00|0.00|558.35|762.45|762.45|1320.80|1320.80|221.65| +2451889|42440|2451932|13645|90495|1378316|3290|31464|32170|1831235|5680|41854|29|8|12|2|169|35|4|41.77|125.31|71.42|215.56|285.68|167.08|501.24|25.71|0.00|10.00|285.68|311.39|295.68|321.39|118.60| +2451889|42440|2452008|12920|90495|1378316|3290|31464|32170|1831235|5680|41854|35|25|18|3|28|35|51|43.08|62.89|53.45|481.44|2725.95|2197.08|3207.39|81.77|0.00|256.53|2725.95|2807.72|2982.48|3064.25|528.87| +2451889|42440|2451943|8045|90495|1378316|3290|31464|32170|1831235|5680|41854|38|14|13|3|53|35|94|94.33|275.44|82.63|18124.14|7767.22|8867.02|25891.36|39.61|3805.93|5695.46|3961.29|4000.90|9656.75|9696.36|-4905.73| +2451889|42440|2451933|2234|90495|1378316|3290|31464|32170|1831235|5680|41854|31|11|13|3|110|35|38|84.90|135.84|71.99|2426.30|2735.62|3226.20|5161.92|27.35|0.00|980.40|2735.62|2762.97|3716.02|3743.37|-490.58| +2451973|61232|2452037|3687|32782|1743944|5506|19115|59321|467323|7048|23010|49|9|8|1|141|36|83|86.21|154.31|58.63|7941.44|4866.29|7155.43|12807.73|145.98|0.00|2689.20|4866.29|5012.27|7555.49|7701.47|-2289.14| +2451973|61232|2452089|791|32782|1743944|5506|19115|59321|467323|7048|23010|19|1|2|3|244|36|76|92.79|172.58|31.06|10755.52|2360.56|7052.04|13116.08|165.23|0.00|130.72|2360.56|2525.79|2491.28|2656.51|-4691.48| +2451973|61232|2452014|731|32782|1743944|5506|19115|59321|467323|7048|23010|33|13|7|5|300|36|33|72.55|161.06|80.53|2657.49|2657.49|2394.15|5314.98|53.14|0.00|1700.49|2657.49|2710.63|4357.98|4411.12|263.34| +2451973|61232|2452008|8293|32782|1743944|5506|19115|59321|467323|7048|23010|33|29|16|4|235|36|17|2.31|5.12|1.02|69.70|17.34|39.27|87.04|1.56|0.00|35.53|17.34|18.90|52.87|54.43|-21.93| +2451973|61232|2452083|2707|32782|1743944|5506|19115|59321|467323|7048|23010|59|25|6|4|52|36|77|13.47|15.35|5.06|792.33|389.62|1037.19|1181.95|19.48|0.00|0.00|389.62|409.10|389.62|409.10|-647.57| +2451973|61232|2452060|4817|32782|1743944|5506|19115|59321|467323|7048|23010|59|7|8|2|136|36|62|88.75|154.42|146.69|479.26|9094.78|5502.50|9574.04|90.94|0.00|1722.98|9094.78|9185.72|10817.76|10908.70|3592.28| +2451973|61232|2452060|1287|32782|1743944|5506|19115|59321|467323|7048|23010|41|25|12|4|266|36|8|3.01|3.79|2.84|7.60|22.72|24.08|30.32|0.07|21.81|5.12|0.91|0.98|6.03|6.10|-23.17| +2451973|61232|2452032|14255|32782|1743944|5506|19115|59321|467323|7048|23010|41|21|4|4|27|36|53|35.38|68.99|36.56|1718.79|1937.68|1875.14|3656.47|135.63|0.00|1279.42|1937.68|2073.31|3217.10|3352.73|62.54| +2451973|61232|2452058|17607|32782|1743944|5506|19115|59321|467323|7048|23010|17|11|10|2|34|36|75|40.94|81.47|3.25|5866.50|243.75|3070.50|6110.25|0.00|0.00|1710.75|243.75|243.75|1954.50|1954.50|-2826.75| +2451973|61232|2452092|2657|32782|1743944|5506|19115|59321|467323|7048|23010|59|1|19|5|41|36|100|28.71|81.82|5.72|7610.00|572.00|2871.00|8182.00|5.37|34.32|572.00|537.68|543.05|1109.68|1115.05|-2333.32| +2451973|61232|2451979|12139|32782|1743944|5506|19115|59321|467323|7048|23010|3|23|12|2|42|36|53|71.93|98.54|47.29|2716.25|2506.37|3812.29|5222.62|0.00|0.00|1252.92|2506.37|2506.37|3759.29|3759.29|-1305.92| +2451973|61232|2451984|12193|32782|1743944|5506|19115|59321|467323|7048|23010|29|17|16|3|120|36|65|17.34|28.09|16.01|785.20|1040.65|1127.10|1825.85|31.21|0.00|54.60|1040.65|1071.86|1095.25|1126.46|-86.45| +2451973|61232|2452038|8799|32782|1743944|5506|19115|59321|467323|7048|23010|19|25|3|1|209|36|55|27.25|77.39|17.02|3320.35|936.10|1498.75|4256.45|65.52|0.00|978.45|936.10|1001.62|1914.55|1980.07|-562.65| +2451973|61232|2452010|13993|32782|1743944|5506|19115|59321|467323|7048|23010|15|29|9|1|283|36|95|86.47|225.68|173.77|4931.45|16508.15|8214.65|21439.60|660.32|0.00|1286.30|16508.15|17168.47|17794.45|18454.77|8293.50| +2451540|67832|2451558|16492|9872|1545781|4443|21952|9872|1545781|4443|21952|8|10|4|5|16|37|61|81.13|180.10|151.28|1758.02|9228.08|4948.93|10986.10|184.56|0.00|1098.61|9228.08|9412.64|10326.69|10511.25|4279.15| +2451540|67832|2451621|7573|9872|1545781|4443|21952|9872|1545781|4443|21952|4|1|9|5|198|37|100|9.51|25.86|25.08|78.00|2508.00|951.00|2586.00|50.16|0.00|206.00|2508.00|2558.16|2714.00|2764.16|1557.00| +2451540|67832|2451606|12754|9872|1545781|4443|21952|9872|1545781|4443|21952|13|2|7|4|234|37|97|8.74|17.65|15.17|240.56|1471.49|847.78|1712.05|0.00|0.00|342.41|1471.49|1471.49|1813.90|1813.90|623.71| +2451540|67832|2451574|160|9872|1545781|4443|21952|9872|1545781|4443|21952|7|7|14|4|274|37|67|7.84|11.36|3.18|548.06|213.06|525.28|761.12|10.65|0.00|288.77|213.06|223.71|501.83|512.48|-312.22| +2451540|67832|2451622|8320|9872|1545781|4443|21952|9872|1545781|4443|21952|34|7|20|4|105|37|51|64.03|125.49|27.60|4992.39|1407.60|3265.53|6399.99|126.68|0.00|959.82|1407.60|1534.28|2367.42|2494.10|-1857.93| +2451540|67832|2451656|3481|9872|1545781|4443|21952|9872|1545781|4443|21952|20|7|10|3|29|37|23|45.25|132.58|62.31|1616.21|1433.13|1040.75|3049.34|57.32|0.00|213.44|1433.13|1490.45|1646.57|1703.89|392.38| +2451540|67832|2451609|913|9872|1545781|4443|21952|9872|1545781|4443|21952|22|25|14|5|286|37|65|64.72|152.09|13.68|8996.65|889.20|4206.80|9885.85|17.78|0.00|4745.00|889.20|906.98|5634.20|5651.98|-3317.60| +2451540|67832|2451579|6655|9872|1545781|4443|21952|9872|1545781|4443|21952|20|7|4|2|87|37|28|39.63|53.10|40.35|357.00|1129.80|1109.64|1486.80|45.19|0.00|416.08|1129.80|1174.99|1545.88|1591.07|20.16| +2451540|67832|2451638|16921|9872|1545781|4443|21952|9872|1545781|4443|21952|43|19|15|3|281|37|26|82.12|167.52|155.79|304.98|4050.54|2135.12|4355.52|283.53|0.00|1175.98|4050.54|4334.07|5226.52|5510.05|1915.42| +2451540|67832|2451600|4333|9872|1545781|4443|21952|9872|1545781|4443|21952|7|10|18|5|72|37|69|22.87|45.74|5.03|2808.99|347.07|1578.03|3156.06|27.76|0.00|251.85|347.07|374.83|598.92|626.68|-1230.96| +2451540|67832|2451622|1357|9872|1545781|4443|21952|9872|1545781|4443|21952|46|16|7|2|227|37|5|23.05|50.47|45.42|25.25|227.10|115.25|252.35|6.81|0.00|111.00|227.10|233.91|338.10|344.91|111.85| +2451540|67832|2451558|572|9872|1545781|4443|21952|9872|1545781|4443|21952|13|20|5|2|196|37|73|84.68|116.85|85.30|2303.15|6226.90|6181.64|8530.05|373.61|0.00|3752.93|6226.90|6600.51|9979.83|10353.44|45.26| +2451540|67832|2451651|13006|9872|1545781|4443|21952|9872|1545781|4443|21952|19|26|11|5|19|37|80|66.87|106.32|42.52|5104.00|3401.60|5349.60|8505.60|102.04|0.00|509.60|3401.60|3503.64|3911.20|4013.24|-1948.00| +2451540|67832|2451657|15260|9872|1545781|4443|21952|9872|1545781|4443|21952|44|10|19|2|128|37|62|61.83|127.36|81.51|2842.70|5053.62|3833.46|7896.32|0.00|0.00|3316.38|5053.62|5053.62|8370.00|8370.00|1220.16| +2451540|67832|2451647|17144|9872|1545781|4443|21952|9872|1545781|4443|21952|40|2|13|4|245|37|11|17.89|48.12|17.32|338.80|190.52|196.79|529.32|1.90|0.00|79.31|190.52|192.42|269.83|271.73|-6.27| +2451540|67832|2451586|1510|9872|1545781|4443|21952|9872|1545781|4443|21952|43|10|20|4|41|37|25|13.02|23.69|10.89|320.00|272.25|325.50|592.25|8.16|0.00|100.50|272.25|280.41|372.75|380.91|-53.25| +2451706|58174|2451794|3050|87550|500431|2112|46593|56646|1344568|36|41670|19|8|20|3|133|38|80|53.70|56.92|41.55|1229.60|3324.00|4296.00|4553.60|265.92|0.00|136.00|3324.00|3589.92|3460.00|3725.92|-972.00| +2451706|58174|2451816|5960|87550|500431|2112|46593|56646|1344568|36|41670|29|14|8|1|91|38|77|81.68|120.88|84.61|2792.79|6514.97|6289.36|9307.76|195.44|0.00|1023.33|6514.97|6710.41|7538.30|7733.74|225.61| +2451706|58174|2451771|13355|87550|500431|2112|46593|56646|1344568|36|41670|32|5|2|3|254|38|65|57.53|65.58|34.75|2003.95|2258.75|3739.45|4262.70|0.00|0.00|681.85|2258.75|2258.75|2940.60|2940.60|-1480.70| +2451706|58174|2451773|4837|87550|500431|2112|46593|56646|1344568|36|41670|25|29|17|4|231|38|81|27.99|53.18|13.82|3188.16|1119.42|2267.19|4307.58|37.27|705.23|732.24|414.19|451.46|1146.43|1183.70|-1853.00| +2451706|58174|2451823|2807|87550|500431|2112|46593|56646|1344568|36|41670|50|7|5|3|231|38|60|95.90|226.32|83.73|8555.40|5023.80|5754.00|13579.20|43.20|2863.56|0.00|2160.24|2203.44|2160.24|2203.44|-3593.76| +2451706|58174|2451760|668|87550|500431|2112|46593|56646|1344568|36|41670|53|5|16|4|222|38|90|40.03|70.45|19.72|4565.70|1774.80|3602.70|6340.50|124.23|0.00|2536.20|1774.80|1899.03|4311.00|4435.23|-1827.90| +2451706|58174|2451725|8147|87550|500431|2112|46593|56646|1344568|36|41670|14|14|15|2|202|38|63|23.04|66.35|45.78|1295.91|2884.14|1451.52|4180.05|93.44|547.98|501.48|2336.16|2429.60|2837.64|2931.08|884.64| +2451706|58174|2451803|8467|87550|500431|2112|46593|56646|1344568|36|41670|13|19|13|1|199|38|61|1.68|2.03|1.38|39.65|84.18|102.48|123.83|0.00|0.00|6.10|84.18|84.18|90.28|90.28|-18.30| +2451706|58174|2451811|15536|87550|500431|2112|46593|56646|1344568|36|41670|43|7|3|5|17|38|20|84.56|235.92|75.49|3208.60|1509.80|1691.20|4718.40|30.19|0.00|2170.40|1509.80|1539.99|3680.20|3710.39|-181.40| +2451771|7639|2451841|8414|59990|963621|852|10083|35808|780901|1776|10207|35|7|10|3|59|39|55|24.63|53.20|17.55|1960.75|965.25|1354.65|2926.00|38.61|0.00|409.20|965.25|1003.86|1374.45|1413.06|-389.40| +2451771|7639|2451845|12727|59990|963621|852|10083|35808|780901|1776|10207|1|29|12|4|6|39|51|14.23|34.00|15.98|919.02|814.98|725.73|1734.00|57.04|0.00|797.64|814.98|872.02|1612.62|1669.66|89.25| +2451771|7639|2451812|2453|59990|963621|852|10083|35808|780901|1776|10207|59|7|1|5|279|39|79|81.48|190.66|173.50|1355.64|13706.50|6436.92|15062.14|137.06|0.00|6325.53|13706.50|13843.56|20032.03|20169.09|7269.58| +2451771|7639|2451780|11585|59990|963621|852|10083|35808|780901|1776|10207|5|25|3|3|43|39|15|2.97|7.90|1.65|93.75|24.75|44.55|118.50|1.23|0.00|31.95|24.75|25.98|56.70|57.93|-19.80| +2451771|7639|2451833|15116|59990|963621|852|10083|35808|780901|1776|10207|53|29|16|4|92|39|54|42.66|102.81|45.23|3109.32|2442.42|2303.64|5551.74|122.12|0.00|1498.50|2442.42|2564.54|3940.92|4063.04|138.78| +2451771|7639|2451786|7105|59990|963621|852|10083|35808|780901|1776|10207|17|25|17|3|32|39|37|54.94|154.38|1.54|5655.08|56.98|2032.78|5712.06|0.56|0.00|1770.45|56.98|57.54|1827.43|1827.99|-1975.80| +2451771|7639|2451823|3059|59990|963621|852|10083|35808|780901|1776|10207|49|8|5|5|65|39|88|69.90|118.83|39.21|7006.56|3450.48|6151.20|10457.04|138.01|0.00|418.00|3450.48|3588.49|3868.48|4006.49|-2700.72| +2451771|7639|2451861|13933|59990|963621|852|10083|35808|780901|1776|10207|11|26|12|5|8|39|77|62.72|149.27|16.41|10230.22|1263.57|4829.44|11493.79|15.03|1048.76|2643.41|214.81|229.84|2858.22|2873.25|-4614.63| +2451771|7639|2451824|13271|59990|963621|852|10083|35808|780901|1776|10207|31|19|14|3|112|39|34|52.75|132.40|54.28|2656.08|1845.52|1793.50|4501.60|110.73|0.00|1935.62|1845.52|1956.25|3781.14|3891.87|52.02| +2451771|7639|2451825|3371|59990|963621|852|10083|35808|780901|1776|10207|14|11|7|3|249|39|57|89.30|173.24|51.97|6912.39|2962.29|5090.10|9874.68|177.73|0.00|592.23|2962.29|3140.02|3554.52|3732.25|-2127.81| +2451771|7639|2451878|9725|59990|963621|852|10083|35808|780901|1776|10207|13|29|10|3|46|39|35|86.33|219.27|114.02|3683.75|3990.70|3021.55|7674.45|39.90|0.00|2378.95|3990.70|4030.60|6369.65|6409.55|969.15| +2451771|7639|2451834|745|59990|963621|852|10083|35808|780901|1776|10207|20|23|3|1|262|39|44|77.85|159.59|135.65|1053.36|5968.60|3425.40|7021.96|84.75|1730.89|3300.00|4237.71|4322.46|7537.71|7622.46|812.31| +2451771|7639|2451788|31|59990|963621|852|10083|35808|780901|1776|10207|2|1|3|2|194|39|100|21.26|35.50|0.35|3515.00|35.00|2126.00|3550.00|2.45|0.00|497.00|35.00|37.45|532.00|534.45|-2091.00| +2451771|7639|2451852|17555|59990|963621|852|10083|35808|780901|1776|10207|47|7|14|2|117|39|15|87.02|127.91|0.00|1918.65|0.00|1305.30|1918.65|0.00|0.00|0.00|0.00|0.00|0.00|0.00|-1305.30| +2451771|7639|2451845|2315|59990|963621|852|10083|35808|780901|1776|10207|56|19|4|5|269|39|17|42.71|70.04|49.72|345.44|845.24|726.07|1190.68|67.61|0.00|35.70|845.24|912.85|880.94|948.55|119.17| +2451771|7639|2451821|10237|59990|963621|852|10083|35808|780901|1776|10207|20|29|2|4|13|39|90|59.60|107.28|80.46|2413.80|7241.40|5364.00|9655.20|651.72|0.00|2413.80|7241.40|7893.12|9655.20|10306.92|1877.40| +2452232|81936|2452241|14203|16812|1614684|1803|33675|8730|781278|1291|27963|53|3|4|4|294|40|92|24.49|57.30|27.50|2741.60|2530.00|2253.08|5271.60|75.90|0.00|579.60|2530.00|2605.90|3109.60|3185.50|276.92| +2452232|81936|2452302|7355|16812|1614684|1803|33675|8730|781278|1291|27963|39|29|10|5|90|40|15|42.87|100.31|62.19|571.80|932.85|643.05|1504.65|0.93|914.19|315.90|18.66|19.59|334.56|335.49|-624.39| +2452232|81936|2452308|14733|16812|1614684|1803|33675|8730|781278|1291|27963|53|21|12|1|300|40|25|74.12|146.75|127.67|477.00|3191.75|1853.00|3668.75|127.67|0.00|807.00|3191.75|3319.42|3998.75|4126.42|1338.75| +2452232|81936|2452284|1275|16812|1614684|1803|33675|8730|781278|1291|27963|17|13|15|3|31|40|80|57.49|166.14|142.88|1860.80|11430.40|4599.20|13291.20|800.12|0.00|4784.80|11430.40|12230.52|16215.20|17015.32|6831.20| +2452232|81936|2452318|12561|16812|1614684|1803|33675|8730|781278|1291|27963|33|9|3|3|246|40|59|32.09|74.12|9.63|3804.91|568.17|1893.31|4373.08|45.45|0.00|961.70|568.17|613.62|1529.87|1575.32|-1325.14| +2452232|81936|2452252|3205|16812|1614684|1803|33675|8730|781278|1291|27963|1|5|5|4|76|40|87|97.37|127.55|42.09|7435.02|3661.83|8471.19|11096.85|183.09|0.00|3661.83|3661.83|3844.92|7323.66|7506.75|-4809.36| +2452232|81936|2452327|5783|16812|1614684|1803|33675|8730|781278|1291|27963|25|5|6|1|49|40|63|75.34|89.65|31.37|3671.64|1976.31|4746.42|5647.95|158.10|0.00|1072.89|1976.31|2134.41|3049.20|3207.30|-2770.11| +2452232|81936|2452346|2551|16812|1614684|1803|33675|8730|781278|1291|27963|43|9|1|4|210|40|24|52.53|123.44|104.92|444.48|2518.08|1260.72|2962.56|176.26|0.00|888.72|2518.08|2694.34|3406.80|3583.06|1257.36| +2452232|81936|2452307|105|16812|1614684|1803|33675|8730|781278|1291|27963|15|21|4|2|110|40|21|5.29|7.67|1.68|125.79|35.28|111.09|161.07|0.00|0.00|69.09|35.28|35.28|104.37|104.37|-75.81| +2452232|81936|2452294|14913|16812|1614684|1803|33675|8730|781278|1291|27963|13|1|12|1|297|40|78|25.29|55.13|20.94|2666.82|1633.32|1972.62|4300.14|6.86|1290.32|859.56|343.00|349.86|1202.56|1209.42|-1629.62| +2452232|81936|2452287|12283|16812|1614684|1803|33675|8730|781278|1291|27963|45|23|14|3|295|40|43|85.42|122.15|98.94|998.03|4254.42|3673.06|5252.45|170.17|0.00|1050.49|4254.42|4424.59|5304.91|5475.08|581.36| +2452232|81936|2452341|457|16812|1614684|1803|33675|8730|781278|1291|27963|33|21|12|1|217|40|25|62.96|160.54|77.05|2087.25|1926.25|1574.00|4013.50|0.00|0.00|1284.25|1926.25|1926.25|3210.50|3210.50|352.25| +2452232|81936|2452236|14863|16812|1614684|1803|33675|8730|781278|1291|27963|27|17|4|4|174|40|74|99.04|251.56|218.85|2420.54|16194.90|7328.96|18615.44|0.00|0.00|2792.02|16194.90|16194.90|18986.92|18986.92|8865.94| +2452232|81936|2452281|16639|16812|1614684|1803|33675|8730|781278|1291|27963|43|3|2|2|295|40|18|13.05|15.52|11.48|72.72|206.64|234.90|279.36|2.04|2.06|66.96|204.58|206.62|271.54|273.58|-30.32| +2452232|81936|2452310|17059|16812|1614684|1803|33675|8730|781278|1291|27963|11|27|2|2|285|40|45|29.82|36.38|20.00|737.10|900.00|1341.90|1637.10|35.28|459.00|229.05|441.00|476.28|670.05|705.33|-900.90| +2452232|81936|2452339|10589|16812|1614684|1803|33675|8730|781278|1291|27963|53|7|11|3|145|40|76|30.31|60.01|40.20|1505.56|3055.20|2303.56|4560.76|91.65|0.00|1003.20|3055.20|3146.85|4058.40|4150.05|751.64| +2451695|44895|2451749|7655|77062|920710|4805|35253|84180|554438|1797|34645|8|7|10|4|218|41|5|8.40|19.57|3.32|81.25|16.60|42.00|97.85|0.49|0.00|28.35|16.60|17.09|44.95|45.44|-25.40| +2451695|44895|2451780|13928|77062|920710|4805|35253|84180|554438|1797|34645|11|26|9|2|165|41|83|88.07|214.89|79.50|11237.37|6598.50|7309.81|17835.87|461.89|0.00|3744.96|6598.50|7060.39|10343.46|10805.35|-711.31| +2451695|44895|2451804|4763|77062|920710|4805|35253|84180|554438|1797|34645|37|25|17|1|295|41|40|21.24|28.67|21.21|298.40|848.40|849.60|1146.80|25.45|0.00|217.60|848.40|873.85|1066.00|1091.45|-1.20| +2451695|44895|2451735|2305|77062|920710|4805|35253|84180|554438|1797|34645|31|14|7|1|35|41|15|51.21|139.29|30.64|1629.75|459.60|768.15|2089.35|27.57|0.00|626.70|459.60|487.17|1086.30|1113.87|-308.55| +2451695|44895|2451745|16801|77062|920710|4805|35253|84180|554438|1797|34645|37|5|17|4|248|41|19|13.01|16.00|1.92|267.52|36.48|247.19|304.00|0.00|35.75|152.00|0.73|0.73|152.73|152.73|-246.46| +2451695|44895|2451705|8315|77062|920710|4805|35253|84180|554438|1797|34645|50|14|20|5|97|41|62|12.02|16.58|8.29|513.98|513.98|745.24|1027.96|35.97|0.00|431.52|513.98|549.95|945.50|981.47|-231.26| +2451695|44895|2451735|6833|77062|920710|4805|35253|84180|554438|1797|34645|56|11|3|3|80|41|15|50.82|95.03|68.42|399.15|1026.30|762.30|1425.45|41.05|0.00|399.00|1026.30|1067.35|1425.30|1466.35|264.00| +2451695|44895|2451751|17527|77062|920710|4805|35253|84180|554438|1797|34645|56|14|14|5|266|41|25|53.52|80.28|62.61|441.75|1565.25|1338.00|2007.00|46.95|0.00|441.50|1565.25|1612.20|2006.75|2053.70|227.25| +2451695|44895|2451768|9673|77062|920710|4805|35253|84180|554438|1797|34645|29|23|2|4|236|41|95|6.85|9.59|1.05|811.30|99.75|650.75|911.05|1.99|0.00|218.50|99.75|101.74|318.25|320.24|-551.00| +2451695|44895|2451755|15757|77062|920710|4805|35253|84180|554438|1797|34645|2|25|1|2|270|41|28|14.49|22.60|9.26|373.52|259.28|405.72|632.80|20.74|0.00|107.52|259.28|280.02|366.80|387.54|-146.44| +2451695|44895|2451792|16676|77062|920710|4805|35253|84180|554438|1797|34645|53|14|9|5|34|41|36|59.88|78.44|47.84|1101.60|1722.24|2155.68|2823.84|86.11|0.00|847.08|1722.24|1808.35|2569.32|2655.43|-433.44| +2451695|44895|2451748|3134|77062|920710|4805|35253|84180|554438|1797|34645|11|8|14|3|242|41|81|53.84|129.21|10.33|9629.28|836.73|4361.04|10466.01|33.46|0.00|3453.03|836.73|870.19|4289.76|4323.22|-3524.31| +2451695|44895|2451756|16637|77062|920710|4805|35253|84180|554438|1797|34645|53|29|20|5|150|41|59|37.38|43.73|41.98|103.25|2476.82|2205.42|2580.07|99.07|0.00|489.70|2476.82|2575.89|2966.52|3065.59|271.40| +2451695|44895|2451729|3865|77062|920710|4805|35253|84180|554438|1797|34645|37|17|12|2|265|41|28|90.88|238.10|40.47|5533.64|1133.16|2544.64|6666.80|79.32|0.00|2800.00|1133.16|1212.48|3933.16|4012.48|-1411.48| +2451695|44895|2451760|3164|77062|920710|4805|35253|84180|554438|1797|34645|11|19|14|5|179|41|35|9.44|23.50|13.86|337.40|485.10|330.40|822.50|19.40|0.00|8.05|485.10|504.50|493.15|512.55|154.70| +2451131|72439|2451172|5929|65471|863021|1371|10921|59379|860833|2324|37874|7|4|19|5|231|42|17|25.72|46.81|41.19|95.54|700.23|437.24|795.77|1.68|616.20|119.34|84.03|85.71|203.37|205.05|-353.21| +2451131|72439|2451207|8590|65471|863021|1371|10921|59379|860833|2324|37874|49|19|8|3|108|42|7|79.50|87.45|26.23|428.54|183.61|556.50|612.15|3.08|132.19|110.18|51.42|54.50|161.60|164.68|-505.08| +2451131|72439|2451251|3091|65471|863021|1371|10921|59379|860833|2324|37874|40|1|4|2|107|42|98|1.12|1.93|0.77|113.68|75.46|109.76|189.14|3.01|0.00|63.70|75.46|78.47|139.16|142.17|-34.30| +2451131|72439|2451200|12508|65471|863021|1371|10921|59379|860833|2324|37874|16|4|17|1|45|42|52|41.04|92.34|30.47|3217.24|1584.44|2134.08|4801.68|126.75|0.00|671.84|1584.44|1711.19|2256.28|2383.03|-549.64| +2451131|72439|2451201|16081|65471|863021|1371|10921|59379|860833|2324|37874|25|14|16|1|46|42|14|73.48|117.56|43.49|1036.98|608.86|1028.72|1645.84|3.16|529.70|674.66|79.16|82.32|753.82|756.98|-949.56| +2451131|72439|2451219|14503|65471|863021|1371|10921|59379|860833|2324|37874|25|20|19|4|102|42|76|53.02|127.24|0.00|9670.24|0.00|4029.52|9670.24|0.00|0.00|3093.96|0.00|0.00|3093.96|3093.96|-4029.52| +2451131|72439|2451215|5014|65471|863021|1371|10921|59379|860833|2324|37874|44|1|19|2|18|42|8|43.48|86.96|26.08|487.04|208.64|347.84|695.68|10.43|0.00|278.24|208.64|219.07|486.88|497.31|-139.20| +2451131|72439|2451152|3364|65471|863021|1371|10921|59379|860833|2324|37874|16|10|16|3|223|42|71|94.86|175.49|59.66|8223.93|4235.86|6735.06|12459.79|84.71|0.00|6105.29|4235.86|4320.57|10341.15|10425.86|-2499.20| +2451939|48209|2451994|11871|92793|1723260|6174|24241|88257|297951|136|38603|27|23|3|1|269|43|14|46.91|85.84|16.30|973.56|228.20|656.74|1201.76|0.18|209.94|132.16|18.26|18.44|150.42|150.60|-638.48| +2451939|48209|2451966|9141|92793|1723260|6174|24241|88257|297951|136|38603|1|5|5|2|219|43|19|52.65|61.60|14.78|889.58|280.82|1000.35|1170.40|25.27|0.00|315.97|280.82|306.09|596.79|622.06|-719.53| +2451939|48209|2452057|12785|92793|1723260|6174|24241|88257|297951|136|38603|49|11|17|3|219|43|8|6.43|9.51|5.42|32.72|43.36|51.44|76.08|3.90|0.00|4.56|43.36|47.26|47.92|51.82|-8.08| +2451939|48209|2451979|9201|92793|1723260|6174|24241|88257|297951|136|38603|49|27|10|4|145|43|51|43.09|50.41|40.83|488.58|2082.33|2197.59|2570.91|145.76|0.00|1208.19|2082.33|2228.09|3290.52|3436.28|-115.26| +2451939|48209|2451954|551|92793|1723260|6174|24241|88257|297951|136|38603|7|3|10|3|79|43|100|86.90|114.70|73.40|4130.00|7340.00|8690.00|11470.00|42.57|5211.40|4014.00|2128.60|2171.17|6142.60|6185.17|-6561.40| +2451939|48209|2451950|349|92793|1723260|6174|24241|88257|297951|136|38603|39|19|7|4|204|43|30|56.32|78.84|19.71|1773.90|591.30|1689.60|2365.20|41.39|0.00|236.40|591.30|632.69|827.70|869.09|-1098.30| +2451939|48209|2452055|17201|92793|1723260|6174|24241|88257|297951|136|38603|5|11|19|2|165|43|61|62.21|179.16|46.58|8087.38|2841.38|3794.81|10928.76|28.41|0.00|5027.01|2841.38|2869.79|7868.39|7896.80|-953.43| +2451939|48209|2452009|385|92793|1723260|6174|24241|88257|297951|136|38603|15|15|18|5|225|43|74|57.16|106.31|15.94|6687.38|1179.56|4229.84|7866.94|1.76|1144.17|314.50|35.39|37.15|349.89|351.65|-4194.45| +2451134|80873|2451161|17071|97122|1431191|2060|19329|57166|125023|2336|15605|31|7|19|2|222|44|16|69.46|163.23|19.58|2298.40|313.28|1111.36|2611.68|25.06|0.00|26.08|313.28|338.34|339.36|364.42|-798.08| +2451134|80873|2451173|5578|97122|1431191|2060|19329|57166|125023|2336|15605|1|28|19|1|200|44|60|90.06|230.55|209.80|1245.00|12588.00|5403.60|13833.00|251.76|0.00|1936.20|12588.00|12839.76|14524.20|14775.96|7184.40| +2451134|80873|2451193|973|97122|1431191|2060|19329|57166|125023|2336|15605|19|16|8|2|103|44|53|65.28|129.90|120.80|482.30|6402.40|3459.84|6884.70|128.04|0.00|1583.11|6402.40|6530.44|7985.51|8113.55|2942.56| +2451134|80873|2451190|3820|97122|1431191|2060|19329|57166|125023|2336|15605|43|26|19|1|193|44|10|80.30|165.41|107.51|579.00|1075.10|803.00|1654.10|83.21|150.51|827.00|924.59|1007.80|1751.59|1834.80|121.59| +2451134|80873|2451229|3223|97122|1431191|2060|19329|57166|125023|2336|15605|19|20|12|1|127|44|27|83.59|242.41|116.35|3403.62|3141.45|2256.93|6545.07|94.24|0.00|1832.49|3141.45|3235.69|4973.94|5068.18|884.52| +2451134|80873|2451217|14728|97122|1431191|2060|19329|57166|125023|2336|15605|16|28|1|5|266|44|23|50.49|122.18|21.99|2304.37|505.77|1161.27|2810.14|19.82|257.94|1095.95|247.83|267.65|1343.78|1363.60|-913.44| +2451134|80873|2451222|3889|97122|1431191|2060|19329|57166|125023|2336|15605|2|13|2|2|239|44|52|96.16|190.39|91.38|5148.52|4751.76|5000.32|9900.28|237.58|0.00|1187.68|4751.76|4989.34|5939.44|6177.02|-248.56| +2451134|80873|2451223|13294|97122|1431191|2060|19329|57166|125023|2336|15605|52|13|20|3|233|44|28|47.87|102.92|26.75|2132.76|749.00|1340.36|2881.76|5.24|644.14|1412.04|104.86|110.10|1516.90|1522.14|-1235.50| +2451134|80873|2451211|139|97122|1431191|2060|19329|57166|125023|2336|15605|8|8|8|1|21|44|36|20.77|39.04|3.51|1279.08|126.36|747.72|1405.44|10.10|0.00|351.36|126.36|136.46|477.72|487.82|-621.36| +2451150|39372|2451203|8912|39927|464905|4730|16108|60212|1659758|1889|40114|20|1|1|3|278|45|94|76.32|135.84|103.23|3065.34|9703.62|7174.08|12768.96|291.10|0.00|1786.94|9703.62|9994.72|11490.56|11781.66|2529.54| +2451150|39372|2451237|14362|39927|464905|4730|16108|60212|1659758|1889|40114|14|1|11|4|227|45|47|2.20|2.31|1.15|54.52|54.05|103.40|108.57|2.70|0.00|31.02|54.05|56.75|85.07|87.77|-49.35| +2451150|39372|2451249|1502|39927|464905|4730|16108|60212|1659758|1889|40114|38|19|20|5|167|45|25|86.71|234.98|129.23|2643.75|3230.75|2167.75|5874.50|32.30|0.00|117.25|3230.75|3263.05|3348.00|3380.30|1063.00| +2451150|39372|2451164|10166|39927|464905|4730|16108|60212|1659758|1889|40114|1|28|12|4|6|45|3|85.74|168.05|31.92|408.39|95.76|257.22|504.15|3.83|0.00|191.55|95.76|99.59|287.31|291.14|-161.46| +2451150|39372|2451233|7315|39927|464905|4730|16108|60212|1659758|1889|40114|13|25|16|2|158|45|33|50.34|61.91|9.28|1736.79|306.24|1661.22|2043.03|21.43|0.00|408.54|306.24|327.67|714.78|736.21|-1354.98| +2451150|39372|2451188|10448|39927|464905|4730|16108|60212|1659758|1889|40114|16|19|11|2|230|45|97|38.73|89.85|85.35|436.50|8278.95|3756.81|8715.45|82.78|0.00|2352.25|8278.95|8361.73|10631.20|10713.98|4522.14| +2451150|39372|2451167|2414|39927|464905|4730|16108|60212|1659758|1889|40114|7|26|4|4|14|45|26|53.43|110.06|3.30|2775.76|85.80|1389.18|2861.56|0.00|5.14|1258.92|80.66|80.66|1339.58|1339.58|-1308.52| +2451150|39372|2451261|11431|39927|464905|4730|16108|60212|1659758|1889|40114|58|16|11|5|149|45|76|60.25|160.26|80.13|6089.88|6089.88|4579.00|12179.76|16.44|4445.61|4750.00|1644.27|1660.71|6394.27|6410.71|-2934.73| +2452004|58928|2452009|515|81081|164538|2395|11052|47597|1141632|3070|1327|5|1|12|5|281|46|14|21.02|49.81|44.33|76.72|620.62|294.28|697.34|12.41|0.00|264.88|620.62|633.03|885.50|897.91|326.34| +2452004|58928|2452036|4843|81081|164538|2395|11052|47597|1141632|3070|1327|59|29|7|2|277|46|19|62.38|84.21|30.31|1024.10|575.89|1185.22|1599.99|46.07|0.00|783.94|575.89|621.96|1359.83|1405.90|-609.33| +2452004|58928|2452051|3385|81081|164538|2395|11052|47597|1141632|3070|1327|17|25|4|5|69|46|13|3.52|8.55|8.03|6.76|104.39|45.76|111.15|5.21|0.00|6.63|104.39|109.60|111.02|116.23|58.63| +2452004|58928|2452114|1441|81081|164538|2395|11052|47597|1141632|3070|1327|27|19|19|3|67|46|59|14.65|31.64|28.79|168.15|1698.61|864.35|1866.76|0.00|0.00|709.18|1698.61|1698.61|2407.79|2407.79|834.26| +2452004|58928|2452033|1791|81081|164538|2395|11052|47597|1141632|3070|1327|7|21|11|3|138|46|62|36.49|105.09|11.55|5799.48|716.10|2262.38|6515.58|50.12|0.00|65.10|716.10|766.22|781.20|831.32|-1546.28| +2452004|58928|2452035|11565|81081|164538|2395|11052|47597|1141632|3070|1327|33|7|18|2|16|46|46|42.48|72.64|60.29|568.10|2773.34|1954.08|3341.44|55.46|0.00|1302.72|2773.34|2828.80|4076.06|4131.52|819.26| +2452004|58928|2452081|11099|81081|164538|2395|11052|47597|1141632|3070|1327|7|9|3|4|45|46|90|61.80|130.39|19.55|9975.60|1759.50|5562.00|11735.10|158.35|0.00|585.90|1759.50|1917.85|2345.40|2503.75|-3802.50| +2452004|58928|2452094|12233|81081|164538|2395|11052|47597|1141632|3070|1327|57|19|1|5|246|46|89|54.96|146.74|96.84|4441.10|8618.76|4891.44|13059.86|444.72|1206.62|4309.38|7412.14|7856.86|11721.52|12166.24|2520.70| +2452004|58928|2452006|13719|81081|164538|2395|11052|47597|1141632|3070|1327|49|1|7|3|49|46|99|26.43|47.83|43.52|426.69|4308.48|2616.57|4735.17|86.16|0.00|141.57|4308.48|4394.64|4450.05|4536.21|1691.91| +2452004|58928|2452029|5447|81081|164538|2395|11052|47597|1141632|3070|1327|25|19|20|2|197|46|96|24.79|26.52|25.45|102.72|2443.20|2379.84|2545.92|48.86|0.00|75.84|2443.20|2492.06|2519.04|2567.90|63.36| +2452004|58928|2452083|9161|81081|164538|2395|11052|47597|1141632|3070|1327|43|13|9|1|163|46|69|76.67|86.63|65.83|1435.20|4542.27|5290.23|5977.47|234.38|635.91|2689.62|3906.36|4140.74|6595.98|6830.36|-1383.87| +2452004|58928|2452112|11823|81081|164538|2395|11052|47597|1141632|3070|1327|29|21|7|3|179|46|65|87.93|177.61|42.62|8774.35|2770.30|5715.45|11544.65|83.10|0.00|4271.15|2770.30|2853.40|7041.45|7124.55|-2945.15| +2452004|58928|2452110|15015|81081|164538|2395|11052|47597|1141632|3070|1327|55|13|3|2|258|46|47|33.51|45.23|28.49|786.78|1339.03|1574.97|2125.81|80.34|0.00|722.39|1339.03|1419.37|2061.42|2141.76|-235.94| +2452004|58928|2452020|6013|81081|164538|2395|11052|47597|1141632|3070|1327|53|3|4|4|54|46|23|4.36|8.19|3.19|115.00|73.37|100.28|188.37|2.20|0.00|41.40|73.37|75.57|114.77|116.97|-26.91| +2451533|33585|2451542|10142|76684|1465338|6439|14293|32665|1518423|6749|20203|7|13|3|1|32|47|91|98.12|195.25|117.15|7107.10|10660.65|8928.92|17767.75|95.94|1066.06|5329.87|9594.59|9690.53|14924.46|15020.40|665.67| +2451533|33585|2451572|15604|76684|1465338|6439|14293|32665|1518423|6749|20203|49|1|17|3|72|47|10|4.55|8.19|0.73|74.60|7.30|45.50|81.90|0.07|0.00|17.10|7.30|7.37|24.40|24.47|-38.20| +2451533|33585|2451553|1456|76684|1465338|6439|14293|32665|1518423|6749|20203|50|13|11|2|183|47|12|7.67|18.79|10.14|103.80|121.68|92.04|225.48|3.65|0.00|108.12|121.68|125.33|229.80|233.45|29.64| +2451533|33585|2451555|1297|76684|1465338|6439|14293|32665|1518423|6749|20203|55|2|13|4|215|47|87|43.05|121.83|65.78|4876.35|5722.86|3745.35|10599.21|400.60|0.00|635.10|5722.86|6123.46|6357.96|6758.56|1977.51| +2451533|33585|2451635|4952|76684|1465338|6439|14293|32665|1518423|6749|20203|40|20|18|5|235|47|38|22.24|64.94|41.56|888.44|1579.28|845.12|2467.72|78.96|0.00|1159.76|1579.28|1658.24|2739.04|2818.00|734.16| +2451533|33585|2451634|8497|76684|1465338|6439|14293|32665|1518423|6749|20203|13|14|19|5|41|47|58|3.32|6.04|5.97|4.06|346.26|192.56|350.32|11.63|55.40|41.76|290.86|302.49|332.62|344.25|98.30| +2451533|33585|2451621|44|76684|1465338|6439|14293|32665|1518423|6749|20203|26|2|10|3|49|47|24|4.61|8.75|0.61|195.36|14.64|110.64|210.00|1.31|0.00|69.12|14.64|15.95|83.76|85.07|-96.00| +2451533|33585|2451579|7444|76684|1465338|6439|14293|32665|1518423|6749|20203|58|1|15|4|163|47|4|90.91|113.63|31.81|327.28|127.24|363.64|454.52|8.90|0.00|168.16|127.24|136.14|295.40|304.30|-236.40| +2451533|33585|2451644|9674|76684|1465338|6439|14293|32665|1518423|6749|20203|19|8|10|3|193|47|67|2.83|6.19|0.24|398.65|16.08|189.61|414.73|0.48|0.00|57.62|16.08|16.56|73.70|74.18|-173.53| +2451439|19447|2451495|2968|83448|868542|4036|13577|76051|209298|4059|9200|8|20|7|1|172|48|40|55.26|147.54|116.55|1239.60|4662.00|2210.40|5901.60|419.58|0.00|530.80|4662.00|5081.58|5192.80|5612.38|2451.60| +2451439|19447|2451510|16682|83448|868542|4036|13577|76051|209298|4059|9200|52|2|14|1|8|48|61|86.80|165.78|48.07|7180.31|2932.27|5294.80|10112.58|80.93|909.00|3640.48|2023.27|2104.20|5663.75|5744.68|-3271.53| +2451439|19447|2451535|11158|83448|868542|4036|13577|76051|209298|4059|9200|43|19|18|4|27|48|55|96.71|278.52|272.94|306.90|15011.70|5319.05|15318.60|900.70|0.00|7199.50|15011.70|15912.40|22211.20|23111.90|9692.65| +2451439|19447|2451497|178|83448|868542|4036|13577|76051|209298|4059|9200|14|16|10|1|162|48|88|65.09|102.19|85.83|1439.68|7553.04|5727.92|8992.72|226.59|0.00|3686.32|7553.04|7779.63|11239.36|11465.95|1825.12| +2451439|19447|2451538|17092|83448|868542|4036|13577|76051|209298|4059|9200|2|2|12|2|242|48|80|3.23|6.33|2.34|319.20|187.20|258.40|506.40|0.26|174.09|222.40|13.11|13.37|235.51|235.77|-245.29| +2451439|19447|2451465|9268|83448|868542|4036|13577|76051|209298|4059|9200|38|25|19|5|151|48|25|60.97|63.40|24.09|982.75|602.25|1524.25|1585.00|48.18|0.00|63.25|602.25|650.43|665.50|713.68|-922.00| +2451439|19447|2451542|9910|83448|868542|4036|13577|76051|209298|4059|9200|52|4|9|5|171|48|20|84.82|199.32|41.85|3149.40|837.00|1696.40|3986.40|14.56|351.54|597.80|485.46|500.02|1083.26|1097.82|-1210.94| +2451439|19447|2451450|17834|83448|868542|4036|13577|76051|209298|4059|9200|7|25|5|4|273|48|100|25.69|45.72|2.74|4298.00|274.00|2569.00|4572.00|16.44|0.00|2011.00|274.00|290.44|2285.00|2301.44|-2295.00| +2451439|19447|2451490|17704|83448|868542|4036|13577|76051|209298|4059|9200|50|20|13|3|40|48|4|34.27|92.18|21.20|283.92|84.80|137.08|368.72|7.63|0.00|99.52|84.80|92.43|184.32|191.95|-52.28| +2451439|19447|2451485|16357|83448|868542|4036|13577|76051|209298|4059|9200|37|25|4|5|226|48|35|83.90|100.68|27.18|2572.50|951.30|2936.50|3523.80|57.07|0.00|1515.15|951.30|1008.37|2466.45|2523.52|-1985.20| +2451439|19447|2451528|7276|83448|868542|4036|13577|76051|209298|4059|9200|19|4|6|4|259|48|4|31.95|51.12|20.95|120.68|83.80|127.80|204.48|5.86|0.00|94.04|83.80|89.66|177.84|183.70|-44.00| +2451439|19447|2451507|17149|83448|868542|4036|13577|76051|209298|4059|9200|26|19|6|5|111|48|42|79.67|137.82|59.26|3299.52|2488.92|3346.14|5788.44|199.11|0.00|1273.44|2488.92|2688.03|3762.36|3961.47|-857.22| +2451439|19447|2451555|14000|83448|868542|4036|13577|76051|209298|4059|9200|52|19|13|3|26|48|49|21.45|58.12|27.31|1509.69|1338.19|1051.05|2847.88|0.00|0.00|113.68|1338.19|1338.19|1451.87|1451.87|287.14| +2451439|19447|2451466|17306|83448|868542|4036|13577|76051|209298|4059|9200|13|26|11|3|245|48|41|65.98|141.19|0.00|5788.79|0.00|2705.18|5788.79|0.00|0.00|578.51|0.00|0.00|578.51|578.51|-2705.18| +2451439|19447|2451554|4916|83448|868542|4036|13577|76051|209298|4059|9200|58|28|17|2|224|48|19|15.99|42.05|24.80|327.75|471.20|303.81|798.95|18.84|0.00|207.67|471.20|490.04|678.87|697.71|167.39| +2451439|19447|2451511|7819|83448|868542|4036|13577|76051|209298|4059|9200|22|16|3|5|97|48|29|24.69|48.88|5.37|1261.79|155.73|716.01|1417.52|0.00|0.00|269.12|155.73|155.73|424.85|424.85|-560.28| +2452291|9182|2452394|1281|74159|77626|3940|49054|71649|1811922|2702|9816|45|30|7|4|141|49|65|43.80|47.74|15.75|2079.35|1023.75|2847.00|3103.10|10.23|0.00|589.55|1023.75|1033.98|1613.30|1623.53|-1823.25| +2452291|9182|2452346|12033|74159|77626|3940|49054|71649|1811922|2702|9816|3|27|6|3|57|49|24|15.33|31.73|23.16|205.68|555.84|367.92|761.52|8.00|466.90|251.28|88.94|96.94|340.22|348.22|-278.98| +2452291|9182|2452392|10713|74159|77626|3940|49054|71649|1811922|2702|9816|18|1|16|3|83|49|40|71.16|183.59|38.55|5801.60|1542.00|2846.40|7343.60|92.52|0.00|440.40|1542.00|1634.52|1982.40|2074.92|-1304.40| +2452291|9182|2452381|1861|74159|77626|3940|49054|71649|1811922|2702|9816|27|27|11|1|51|49|56|42.41|51.31|49.77|86.24|2787.12|2374.96|2873.36|83.61|0.00|1149.12|2787.12|2870.73|3936.24|4019.85|412.16| +2452291|9182|2452389|17913|74159|77626|3940|49054|71649|1811922|2702|9816|21|30|19|3|87|49|32|68.14|196.24|49.06|4709.76|1569.92|2180.48|6279.68|0.00|0.00|2009.28|1569.92|1569.92|3579.20|3579.20|-610.56| +2452291|9182|2452318|17973|74159|77626|3940|49054|71649|1811922|2702|9816|9|7|6|3|257|49|14|77.88|144.07|36.01|1512.84|504.14|1090.32|2016.98|25.20|0.00|1008.42|504.14|529.34|1512.56|1537.76|-586.18| +2452291|9182|2452395|6399|74159|77626|3940|49054|71649|1811922|2702|9816|27|9|16|4|105|49|25|24.75|48.01|4.80|1080.25|120.00|618.75|1200.25|7.20|0.00|588.00|120.00|127.20|708.00|715.20|-498.75| +2452291|9182|2452350|13365|74159|77626|3940|49054|71649|1811922|2702|9816|27|1|8|3|45|49|81|65.92|166.11|134.54|2557.17|10897.74|5339.52|13454.91|762.84|0.00|5650.56|10897.74|11660.58|16548.30|17311.14|5558.22| +2452291|9182|2452382|9816|74159|77626|3940|49054|71649|1811922|2702|9816|1|1|11|1|181|49|22|96.03|189.17|3.78|4078.58|83.16|2112.66|4161.74|0.83|0.00|166.32|83.16|83.99|249.48|250.31|-2029.50| +2452291|9182|2452294|8883|74159|77626|3940|49054|71649|1811922|2702|9816|37|24|2|2|12|49|91|42.85|53.13|42.50|967.33|3867.50|3899.35|4834.83|142.32|2088.45|1111.11|1779.05|1921.37|2890.16|3032.48|-2120.30| +2452291|9182|2452340|6372|74159|77626|3940|49054|71649|1811922|2702|9816|9|21|20|1|112|49|20|97.01|186.25|80.08|2123.40|1601.60|1940.20|3725.00|144.14|0.00|782.20|1601.60|1745.74|2383.80|2527.94|-338.60| +2452291|9182|2452305|10083|74159|77626|3940|49054|71649|1811922|2702|9816|45|15|13|3|226|49|5|62.93|71.11|17.77|266.70|88.85|314.65|355.55|7.99|0.00|88.85|88.85|96.84|177.70|185.69|-225.80| +2452291|9182|2452329|7494|74159|77626|3940|49054|71649|1811922|2702|9816|6|12|19|5|158|49|20|37.84|55.24|5.52|994.40|110.40|756.80|1104.80|0.00|37.53|110.40|72.87|72.87|183.27|183.27|-683.93| +2452586|44689|2452649|1647|99181|380076|4171|7866|75251|339248|2151|19446|13|12|12|1|10|50|66|22.44|48.47|21.32|1791.90|1407.12|1481.04|3199.02|0.00|0.00|671.22|1407.12|1407.12|2078.34|2078.34|-73.92| +2452586|44689|2452666|4338|99181|380076|4171|7866|75251|339248|2151|19446|37|12|16|3|20|50|34|56.07|164.28|67.35|3295.62|2289.90|1906.38|5585.52|206.09|0.00|2457.52|2289.90|2495.99|4747.42|4953.51|383.52| +2452586|44689|2452698|11691|99181|380076|4171|7866|75251|339248|2151|19446|7|13|17|2|120|50|41|85.28|160.32|17.63|5850.29|722.83|3496.48|6573.12|28.91|0.00|3220.55|722.83|751.74|3943.38|3972.29|-2773.65| +2452586|44689|2452612|7927|99181|380076|4171|7866|75251|339248|2151|19446|27|25|2|3|17|50|20|75.71|80.25|52.96|545.80|1059.20|1514.20|1605.00|57.19|105.92|176.40|953.28|1010.47|1129.68|1186.87|-560.92| +2452586|44689|2452604|543|99181|380076|4171|7866|75251|339248|2151|19446|31|19|1|5|59|50|14|85.93|118.58|101.97|232.54|1427.58|1203.02|1660.12|114.20|0.00|464.80|1427.58|1541.78|1892.38|2006.58|224.56| +2452586|44689|2452645|6390|99181|380076|4171|7866|75251|339248|2151|19446|13|15|6|2|25|50|59|76.14|85.27|0.85|4980.78|50.15|4492.26|5030.93|2.00|0.00|1257.29|50.15|52.15|1307.44|1309.44|-4442.11| +2452586|44689|2452644|6151|99181|380076|4171|7866|75251|339248|2151|19446|42|3|20|3|176|50|28|65.64|183.13|139.17|1230.88|3896.76|1837.92|5127.64|77.93|0.00|717.64|3896.76|3974.69|4614.40|4692.33|2058.84| +2452586|44689|2452639|10747|99181|380076|4171|7866|75251|339248|2151|19446|48|1|18|2|89|50|18|11.78|15.07|8.28|122.22|149.04|212.04|271.26|0.00|0.00|78.66|149.04|149.04|227.70|227.70|-63.00| +2451876|17566|2451956|8201|31908|1837229|2550|26718|54961|1074489|5881|25249|5|2|1|3|82|51|88|51.83|51.83|5.70|4059.44|501.60|4561.04|4561.04|25.08|0.00|1550.56|501.60|526.68|2052.16|2077.24|-4059.44| +2451876|17566|2451957|2687|31908|1837229|2550|26718|54961|1074489|5881|25249|56|29|1|4|280|51|33|98.35|116.05|27.85|2910.60|919.05|3245.55|3829.65|0.00|0.00|1033.89|919.05|919.05|1952.94|1952.94|-2326.50| +2451876|17566|2451989|7226|31908|1837229|2550|26718|54961|1074489|5881|25249|19|26|8|2|26|51|47|90.57|120.45|110.81|453.08|5208.07|4256.79|5661.15|260.40|0.00|2037.92|5208.07|5468.47|7245.99|7506.39|951.28| +2451876|17566|2451906|4313|31908|1837229|2550|26718|54961|1074489|5881|25249|23|1|3|2|261|51|97|5.40|16.03|7.69|808.98|745.93|523.80|1554.91|29.83|0.00|481.12|745.93|775.76|1227.05|1256.88|222.13| +2451876|17566|2451891|8105|31908|1837229|2550|26718|54961|1074489|5881|25249|53|5|16|2|215|51|48|99.64|102.62|37.96|3103.68|1822.08|4782.72|4925.76|0.00|400.85|1132.80|1421.23|1421.23|2554.03|2554.03|-3361.49| +2451876|17566|2451926|11180|31908|1837229|2550|26718|54961|1074489|5881|25249|50|25|20|2|214|51|33|71.60|158.23|30.06|4229.61|991.98|2362.80|5221.59|59.51|0.00|1775.07|991.98|1051.49|2767.05|2826.56|-1370.82| +2451876|17566|2451897|13339|31908|1837229|2550|26718|54961|1074489|5881|25249|49|7|6|3|40|51|24|84.73|249.10|42.34|4962.24|1016.16|2033.52|5978.40|25.30|172.74|1972.80|843.42|868.72|2816.22|2841.52|-1190.10| +2451876|17566|2451888|10244|31908|1837229|2550|26718|54961|1074489|5881|25249|59|8|7|2|124|51|72|40.11|89.84|17.96|5175.36|1293.12|2887.92|6468.48|38.79|0.00|0.00|1293.12|1331.91|1293.12|1331.91|-1594.80| +2451876|17566|2451891|10115|31908|1837229|2550|26718|54961|1074489|5881|25249|26|7|7|2|57|51|51|27.21|67.75|0.00|3455.25|0.00|1387.71|3455.25|0.00|0.00|587.01|0.00|0.00|587.01|587.01|-1387.71| +2451876|17566|2451888|14384|31908|1837229|2550|26718|54961|1074489|5881|25249|25|14|13|5|60|51|85|81.44|190.56|190.56|0.00|16197.60|6922.40|16197.60|1457.78|0.00|5668.65|16197.60|17655.38|21866.25|23324.03|9275.20| +2451876|17566|2451927|8915|31908|1837229|2550|26718|54961|1074489|5881|25249|13|7|14|1|258|51|31|86.29|89.74|39.48|1558.06|1223.88|2674.99|2781.94|36.71|0.00|500.65|1223.88|1260.59|1724.53|1761.24|-1451.11| +2451876|17566|2451984|12025|31908|1837229|2550|26718|54961|1074489|5881|25249|50|11|3|3|140|51|38|86.64|160.28|36.86|4689.96|1400.68|3292.32|6090.64|56.02|0.00|121.60|1400.68|1456.70|1522.28|1578.30|-1891.64| +2451876|17566|2451931|3950|31908|1837229|2550|26718|54961|1074489|5881|25249|25|23|11|2|46|51|66|54.50|113.36|113.36|0.00|7481.76|3597.00|7481.76|523.72|0.00|523.38|7481.76|8005.48|8005.14|8528.86|3884.76| +2452301|48530|2452380|17928|80393|184753|1913|39826|71596|197177|3259|13619|9|3|2|4|226|52|7|27.24|35.41|24.07|79.38|168.49|190.68|247.87|0.00|121.31|4.90|47.18|47.18|52.08|52.08|-143.50| +2452301|48530|2452408|7254|80393|184753|1913|39826|71596|197177|3259|13619|42|15|5|2|269|52|31|61.74|98.16|84.41|426.25|2616.71|1913.94|3042.96|157.00|654.17|1308.20|1962.54|2119.54|3270.74|3427.74|48.60| +2452301|48530|2452346|4341|80393|184753|1913|39826|71596|197177|3259|13619|25|21|12|5|231|52|28|32.59|62.57|32.53|841.12|910.84|912.52|1751.96|61.20|145.73|122.36|765.11|826.31|887.47|948.67|-147.41| +2452301|48530|2452329|17148|80393|184753|1913|39826|71596|197177|3259|13619|27|9|6|2|68|52|43|16.40|21.64|0.86|893.54|36.98|705.20|930.52|2.95|0.00|288.10|36.98|39.93|325.08|328.03|-668.22| +2452301|48530|2452336|12138|80393|184753|1913|39826|71596|197177|3259|13619|7|18|14|4|47|52|98|66.56|133.12|50.58|8088.92|4956.84|6522.88|13045.76|99.13|0.00|6000.54|4956.84|5055.97|10957.38|11056.51|-1566.04| +2452301|48530|2452357|4842|80393|184753|1913|39826|71596|197177|3259|13619|27|15|15|2|126|52|86|11.22|25.02|21.26|323.36|1828.36|964.92|2151.72|91.41|0.00|408.50|1828.36|1919.77|2236.86|2328.27|863.44| +2452301|48530|2452363|16311|80393|184753|1913|39826|71596|197177|3259|13619|30|3|19|1|46|52|64|70.26|89.93|73.74|1036.16|4719.36|4496.64|5755.52|0.00|0.00|1093.12|4719.36|4719.36|5812.48|5812.48|222.72| +2452301|48530|2452406|2331|80393|184753|1913|39826|71596|197177|3259|13619|33|13|14|4|201|52|61|17.47|48.91|13.20|2178.31|805.20|1065.67|2983.51|32.20|0.00|298.29|805.20|837.40|1103.49|1135.69|-260.47| +2452301|48530|2452388|17394|80393|184753|1913|39826|71596|197177|3259|13619|31|21|19|4|79|52|76|48.57|96.16|69.23|2046.68|5261.48|3691.32|7308.16|315.68|0.00|145.92|5261.48|5577.16|5407.40|5723.08|1570.16| +2452301|48530|2452394|7717|80393|184753|1913|39826|71596|197177|3259|13619|30|24|6|5|257|52|42|12.06|20.14|16.31|160.86|685.02|506.52|845.88|13.70|0.00|329.70|685.02|698.72|1014.72|1028.42|178.50| +2452301|48530|2452420|3585|80393|184753|1913|39826|71596|197177|3259|13619|21|12|11|4|104|52|74|7.00|19.25|18.67|42.92|1381.58|518.00|1424.50|69.07|0.00|355.94|1381.58|1450.65|1737.52|1806.59|863.58| +2452301|48530|2452355|12798|80393|184753|1913|39826|71596|197177|3259|13619|31|24|11|2|53|52|67|73.74|85.53|16.25|4641.76|1088.75|4940.58|5730.51|65.32|0.00|1833.12|1088.75|1154.07|2921.87|2987.19|-3851.83| +2452301|48530|2452369|13914|80393|184753|1913|39826|71596|197177|3259|13619|36|7|20|1|255|52|80|34.04|69.44|8.33|4888.80|666.40|2723.20|5555.20|59.97|0.00|2166.40|666.40|726.37|2832.80|2892.77|-2056.80| +2452301|48530|2452346|1536|80393|184753|1913|39826|71596|197177|3259|13619|33|21|5|2|196|52|72|23.71|34.37|6.53|2004.48|470.16|1707.12|2474.64|42.31|0.00|172.80|470.16|512.47|642.96|685.27|-1236.96| +2452301|48530|2452351|3312|80393|184753|1913|39826|71596|197177|3259|13619|57|19|18|4|87|52|10|47.43|71.14|58.33|128.10|583.30|474.30|711.40|23.33|0.00|135.10|583.30|606.63|718.40|741.73|109.00| +2452301|48530|2452363|5139|80393|184753|1913|39826|71596|197177|3259|13619|37|9|1|2|293|52|40|33.47|68.94|20.68|1930.40|827.20|1338.80|2757.60|74.44|0.00|1158.00|827.20|901.64|1985.20|2059.64|-511.60| +2451691|45951|2451809|1417|54041|1071263|5732|49354|42172|1238469|3067|31889|32|17|14|1|98|53|48|39.94|113.82|48.94|3114.24|2349.12|1917.12|5463.36|46.98|0.00|2021.28|2349.12|2396.10|4370.40|4417.38|432.00| +2451691|45951|2451705|13189|54041|1071263|5732|49354|42172|1238469|3067|31889|13|1|15|4|103|53|35|20.49|37.49|23.61|485.80|826.35|717.15|1312.15|0.00|0.00|314.65|826.35|826.35|1141.00|1141.00|109.20| +2451691|45951|2451722|5285|54041|1071263|5732|49354|42172|1238469|3067|31889|29|25|4|5|46|53|36|73.45|164.52|105.29|2132.28|3790.44|2644.20|5922.72|54.58|2880.73|2013.48|909.71|964.29|2923.19|2977.77|-1734.49| +2451691|45951|2451777|14582|54041|1071263|5732|49354|42172|1238469|3067|31889|37|1|3|5|7|53|38|44.37|100.71|56.39|1684.16|2142.82|1686.06|3826.98|0.00|0.00|344.28|2142.82|2142.82|2487.10|2487.10|456.76| +2451691|45951|2451705|16154|54041|1071263|5732|49354|42172|1238469|3067|31889|37|26|12|2|142|53|97|55.62|140.71|46.43|9145.16|4503.71|5395.14|13648.87|0.00|0.00|5322.39|4503.71|4503.71|9826.10|9826.10|-891.43| +2451691|45951|2451703|14507|54041|1071263|5732|49354|42172|1238469|3067|31889|13|1|5|2|186|53|83|57.56|123.75|122.51|102.92|10168.33|4777.48|10271.25|711.78|0.00|3388.89|10168.33|10880.11|13557.22|14269.00|5390.85| +2451691|45951|2451719|8843|54041|1071263|5732|49354|42172|1238469|3067|31889|55|5|5|2|249|53|26|11.63|25.58|24.04|40.04|625.04|302.38|665.08|18.75|0.00|166.14|625.04|643.79|791.18|809.93|322.66| +2451691|45951|2451705|2435|54041|1071263|5732|49354|42172|1238469|3067|31889|35|11|7|3|189|53|38|5.89|13.84|3.46|394.44|131.48|223.82|525.92|2.76|39.44|73.34|92.04|94.80|165.38|168.14|-131.78| +2452594|39658|2452689|10080|17082|911361|4040|39519|83234|1635849|1956|19435|3|7|6|3|100|54|39|54.46|84.41|70.90|526.89|2765.10|2123.94|3291.99|221.20|0.00|296.01|2765.10|2986.30|3061.11|3282.31|641.16| +2452594|39658|2452638|15561|17082|911361|4040|39519|83234|1635849|1956|19435|49|7|16|3|107|54|18|80.04|226.51|38.50|3384.18|693.00|1440.72|4077.18|0.00|200.97|1263.78|492.03|492.03|1755.81|1755.81|-948.69| +2452594|39658|2452614|14373|17082|911361|4040|39519|83234|1635849|1956|19435|43|7|16|1|33|54|45|66.53|90.48|42.52|2158.20|1913.40|2993.85|4071.60|153.07|0.00|814.05|1913.40|2066.47|2727.45|2880.52|-1080.45| +2452594|39658|2452661|3228|17082|911361|4040|39519|83234|1635849|1956|19435|7|12|18|5|102|54|58|33.83|73.41|24.22|2853.02|1404.76|1962.14|4257.78|42.14|0.00|808.52|1404.76|1446.90|2213.28|2255.42|-557.38| +2452594|39658|2452670|14709|17082|911361|4040|39519|83234|1635849|1956|19435|12|27|12|5|38|54|85|94.67|131.59|65.79|5593.00|5592.15|8046.95|11185.15|167.76|0.00|4250.00|5592.15|5759.91|9842.15|10009.91|-2454.80| +2452594|39658|2452658|13281|17082|911361|4040|39519|83234|1635849|1956|19435|1|1|14|2|190|54|87|98.33|232.05|215.80|1413.75|18774.60|8554.71|20188.35|1284.18|4505.90|4239.51|14268.70|15552.88|18508.21|19792.39|5713.99| +2452594|39658|2452603|4905|17082|911361|4040|39519|83234|1635849|1956|19435|45|3|11|2|156|54|82|39.36|104.69|39.78|5322.62|3261.96|3227.52|8584.58|0.00|0.00|600.24|3261.96|3261.96|3862.20|3862.20|34.44| +2452594|39658|2452599|13983|17082|911361|4040|39519|83234|1635849|1956|19435|54|9|6|4|255|54|5|59.63|119.26|9.54|548.60|47.70|298.15|596.30|0.95|0.00|262.35|47.70|48.65|310.05|311.00|-250.45| +2452594|39658|2452666|15555|17082|911361|4040|39519|83234|1635849|1956|19435|21|24|20|3|149|54|77|44.08|52.45|47.20|404.25|3634.40|3394.16|4038.65|0.00|0.00|847.77|3634.40|3634.40|4482.17|4482.17|240.24| +2451788|53647|2451904|2129|9887|1273192|5650|4555|63252|1721892|5176|41681|37|17|6|3|270|55|3|72.56|214.77|133.15|244.86|399.45|217.68|644.31|31.95|0.00|122.40|399.45|431.40|521.85|553.80|181.77| +2451788|53647|2451791|17666|9887|1273192|5650|4555|63252|1721892|5176|41681|7|17|7|5|220|55|62|80.41|159.21|113.03|2863.16|7007.86|4985.42|9871.02|0.00|0.00|2862.54|7007.86|7007.86|9870.40|9870.40|2022.44| +2451788|53647|2451903|6559|9887|1273192|5650|4555|63252|1721892|5176|41681|49|19|15|5|235|55|28|50.96|137.08|5.48|3684.80|153.44|1426.88|3838.24|7.67|0.00|575.68|153.44|161.11|729.12|736.79|-1273.44| +2451788|53647|2451849|15277|9887|1273192|5650|4555|63252|1721892|5176|41681|19|13|4|1|21|55|19|28.96|77.61|23.28|1032.27|442.32|550.24|1474.59|8.84|0.00|265.24|442.32|451.16|707.56|716.40|-107.92| +2451788|53647|2451859|8378|9887|1273192|5650|4555|63252|1721892|5176|41681|14|19|2|4|136|55|57|70.89|192.82|179.32|769.50|10221.24|4040.73|10990.74|0.00|0.00|4176.39|10221.24|10221.24|14397.63|14397.63|6180.51| +2451788|53647|2451843|10471|9887|1273192|5650|4555|63252|1721892|5176|41681|55|19|9|3|7|55|100|80.00|94.40|19.82|7458.00|1982.00|8000.00|9440.00|59.46|0.00|1604.00|1982.00|2041.46|3586.00|3645.46|-6018.00| +2451788|53647|2451877|12053|9887|1273192|5650|4555|63252|1721892|5176|41681|44|11|19|2|82|55|72|33.05|56.51|44.07|895.68|3173.04|2379.60|4068.72|158.65|0.00|1667.52|3173.04|3331.69|4840.56|4999.21|793.44| +2451788|53647|2451898|5401|9887|1273192|5650|4555|63252|1721892|5176|41681|31|26|5|3|1|55|93|2.16|2.70|1.05|153.45|97.65|200.88|251.10|2.92|0.00|16.74|97.65|100.57|114.39|117.31|-103.23| +2451788|53647|2451876|16082|9887|1273192|5650|4555|63252|1721892|5176|41681|53|20|8|2|159|55|62|14.92|16.56|10.10|400.52|626.20|925.04|1026.72|43.83|0.00|451.36|626.20|670.03|1077.56|1121.39|-298.84| +2451788|53647|2451886|11165|9887|1273192|5650|4555|63252|1721892|5176|41681|53|13|17|5|150|55|96|74.35|179.18|173.80|516.48|16684.80|7137.60|17201.28|333.69|0.00|3783.36|16684.80|17018.49|20468.16|20801.85|9547.20| +2451788|53647|2451885|12013|9887|1273192|5650|4555|63252|1721892|5176|41681|50|11|9|4|59|55|26|96.74|155.75|10.90|3766.10|283.40|2515.24|4049.50|17.00|0.00|1538.68|283.40|300.40|1822.08|1839.08|-2231.84| +2451788|53647|2451858|17660|9887|1273192|5650|4555|63252|1721892|5176|41681|44|7|15|1|157|55|73|39.00|79.17|43.54|2600.99|3178.42|2847.00|5779.41|254.27|0.00|2715.60|3178.42|3432.69|5894.02|6148.29|331.42| +2451788|53647|2451866|6979|9887|1273192|5650|4555|63252|1721892|5176|41681|17|29|11|4|220|55|44|56.84|91.51|68.63|1006.72|3019.72|2500.96|4026.44|150.98|0.00|483.12|3019.72|3170.70|3502.84|3653.82|518.76| +2451788|53647|2451809|11509|9887|1273192|5650|4555|63252|1721892|5176|41681|8|14|11|4|294|55|94|93.40|243.77|63.38|16956.66|5957.72|8779.60|22914.38|59.57|0.00|8248.50|5957.72|6017.29|14206.22|14265.79|-2821.88| +2451788|53647|2451847|10085|9887|1273192|5650|4555|63252|1721892|5176|41681|14|26|3|4|235|55|35|54.20|81.30|7.31|2589.65|255.85|1897.00|2845.50|7.67|0.00|512.05|255.85|263.52|767.90|775.57|-1641.15| +2450832|77425|2450877|7783|91077|845709|341|42573|63692|506079|4916|45195|19|22|11|3|32|56|90|43.05|68.01|0.68|6059.70|61.20|3874.50|6120.90|1.22|0.00|1774.80|61.20|62.42|1836.00|1837.22|-3813.30| +2450832|77425|2450940|2336|91077|845709|341|42573|63692|506079|4916|45195|8|28|15|5|225|56|81|41.30|89.62|68.11|1742.31|5516.91|3345.30|7259.22|496.52|0.00|2032.29|5516.91|6013.43|7549.20|8045.72|2171.61| +2450832|77425|2450839|15643|91077|845709|341|42573|63692|506079|4916|45195|32|16|11|3|75|56|83|55.35|148.89|116.13|2719.08|9638.79|4594.05|12357.87|192.77|0.00|370.18|9638.79|9831.56|10008.97|10201.74|5044.74| +2450832|77425|2450917|16540|91077|845709|341|42573|63692|506079|4916|45195|14|13|6|5|34|56|57|60.02|158.45|134.68|1354.89|7676.76|3421.14|9031.65|460.60|0.00|541.50|7676.76|8137.36|8218.26|8678.86|4255.62| +2450832|77425|2450862|17467|91077|845709|341|42573|63692|506079|4916|45195|58|10|2|3|84|56|100|73.38|109.33|22.95|8638.00|2295.00|7338.00|10933.00|2.29|2249.10|1639.00|45.90|48.19|1684.90|1687.19|-7292.10| +2450832|77425|2450844|11918|91077|845709|341|42573|63692|506079|4916|45195|49|8|2|4|86|56|86|19.69|58.47|11.10|4073.82|954.60|1693.34|5028.42|85.91|0.00|2162.04|954.60|1040.51|3116.64|3202.55|-738.74| +2450832|77425|2450873|15670|91077|845709|341|42573|63692|506079|4916|45195|34|22|16|5|114|56|39|35.66|67.04|52.29|575.25|2039.31|1390.74|2614.56|40.78|0.00|522.60|2039.31|2080.09|2561.91|2602.69|648.57| +2450832|77425|2450937|2203|91077|845709|341|42573|63692|506079|4916|45195|25|13|1|2|296|56|42|94.50|120.01|63.60|2369.22|2671.20|3969.00|5040.42|45.67|2163.67|1360.80|507.53|553.20|1868.33|1914.00|-3461.47| +2450832|77425|2450881|748|91077|845709|341|42573|63692|506079|4916|45195|56|16|9|4|39|56|73|21.98|51.65|29.44|1621.33|2149.12|1604.54|3770.45|42.98|0.00|602.98|2149.12|2192.10|2752.10|2795.08|544.58| +2450832|77425|2450836|13480|91077|845709|341|42573|63692|506079|4916|45195|49|7|20|4|278|56|79|91.52|175.71|144.08|2498.77|11382.32|7230.08|13881.09|0.00|0.00|1248.99|11382.32|11382.32|12631.31|12631.31|4152.24| +2451251|30422|2451275|985|15972|27168|411|4807|80022|1239567|4842|45685|58|8|10|5|20|57|53|96.07|221.92|199.72|1176.60|10585.16|5091.71|11761.76|635.10|0.00|3645.87|10585.16|11220.26|14231.03|14866.13|5493.45| +2451251|30422|2451360|1765|15972|27168|411|4807|80022|1239567|4842|45685|10|13|8|4|250|57|23|12.07|15.32|14.40|21.16|331.20|277.61|352.36|6.62|0.00|155.02|331.20|337.82|486.22|492.84|53.59| +2451251|30422|2451320|17870|15972|27168|411|4807|80022|1239567|4842|45685|32|10|5|1|10|57|62|84.90|141.78|32.60|6769.16|2021.20|5263.80|8790.36|121.27|0.00|438.96|2021.20|2142.47|2460.16|2581.43|-3242.60| +2451251|30422|2451264|13990|15972|27168|411|4807|80022|1239567|4842|45685|28|22|2|4|289|57|51|96.36|102.14|77.62|1250.52|3958.62|4914.36|5209.14|106.88|2177.24|52.02|1781.38|1888.26|1833.40|1940.28|-3132.98| +2451251|30422|2451267|4466|15972|27168|411|4807|80022|1239567|4842|45685|44|14|10|5|150|57|40|39.22|114.91|57.45|2298.40|2298.00|1568.80|4596.40|68.94|0.00|1516.80|2298.00|2366.94|3814.80|3883.74|729.20| +2451251|30422|2451312|7999|15972|27168|411|4807|80022|1239567|4842|45685|34|13|16|5|274|57|56|70.51|198.83|105.37|5233.76|5900.72|3948.56|11134.48|354.04|0.00|445.20|5900.72|6254.76|6345.92|6699.96|1952.16| +2451251|30422|2451278|7358|15972|27168|411|4807|80022|1239567|4842|45685|32|7|11|3|175|57|14|57.41|99.31|82.42|236.46|1153.88|803.74|1390.34|0.00|0.00|625.52|1153.88|1153.88|1779.40|1779.40|350.14| +2451251|30422|2451335|9877|15972|27168|411|4807|80022|1239567|4842|45685|20|28|19|3|117|57|16|35.92|41.30|33.45|125.60|535.20|574.72|660.80|32.11|0.00|92.48|535.20|567.31|627.68|659.79|-39.52| +2451251|30422|2451330|11149|15972|27168|411|4807|80022|1239567|4842|45685|10|26|5|1|227|57|97|95.63|234.29|72.62|15681.99|7044.14|9276.11|22726.13|493.08|0.00|3862.54|7044.14|7537.22|10906.68|11399.76|-2231.97| +2451284|24184|2451287|1759|18917|614640|763|48039|54232|918925|6761|48084|1|19|6|5|141|58|74|20.42|33.89|7.11|1981.72|526.14|1511.08|2507.86|1.57|499.83|877.64|26.31|27.88|903.95|905.52|-1484.77| +2451284|24184|2451344|11342|18917|614640|763|48039|54232|918925|6761|48084|13|7|11|3|32|58|36|97.13|177.74|127.97|1791.72|4606.92|3496.68|6398.64|0.00|1520.28|2879.28|3086.64|3086.64|5965.92|5965.92|-410.04| +2451284|24184|2451386|6380|18917|614640|763|48039|54232|918925|6761|48084|56|28|1|2|153|58|1|19.35|35.60|7.83|27.77|7.83|19.35|35.60|0.07|0.00|10.68|7.83|7.90|18.51|18.58|-11.52| +2451284|24184|2451291|4376|18917|614640|763|48039|54232|918925|6761|48084|44|8|17|4|184|58|47|4.16|9.48|0.28|432.40|13.16|195.52|445.56|0.35|4.34|111.39|8.82|9.17|120.21|120.56|-186.70| +2451284|24184|2451319|17689|18917|614640|763|48039|54232|918925|6761|48084|26|14|2|1|163|58|57|64.09|66.65|55.98|608.19|3190.86|3653.13|3799.05|159.54|0.00|531.81|3190.86|3350.40|3722.67|3882.21|-462.27| +2451284|24184|2451291|2144|18917|614640|763|48039|54232|918925|6761|48084|20|20|4|2|260|58|40|73.71|114.25|82.26|1279.60|3290.40|2948.40|4570.00|98.71|0.00|319.60|3290.40|3389.11|3610.00|3708.71|342.00| +2451284|24184|2451403|5528|18917|614640|763|48039|54232|918925|6761|48084|52|4|19|2|208|58|26|89.45|222.73|184.86|984.62|4806.36|2325.70|5790.98|144.19|0.00|0.00|4806.36|4950.55|4806.36|4950.55|2480.66| +2451284|24184|2451403|13064|18917|614640|763|48039|54232|918925|6761|48084|26|7|17|2|20|58|13|72.56|203.89|73.40|1696.37|954.20|943.28|2650.57|47.71|0.00|795.08|954.20|1001.91|1749.28|1796.99|10.92| +2451284|24184|2451368|12380|18917|614640|763|48039|54232|918925|6761|48084|14|8|2|4|183|58|27|33.73|99.50|31.84|1826.82|859.68|910.71|2686.50|68.77|0.00|1262.52|859.68|928.45|2122.20|2190.97|-51.03| +2451284|24184|2451292|8167|18917|614640|763|48039|54232|918925|6761|48084|26|28|3|1|219|58|43|46.62|105.36|94.82|453.22|4077.26|2004.66|4530.48|203.86|0.00|45.15|4077.26|4281.12|4122.41|4326.27|2072.60| +2451284|24184|2451309|6302|18917|614640|763|48039|54232|918925|6761|48084|55|26|10|1|25|58|31|19.14|47.85|0.00|1483.35|0.00|593.34|1483.35|0.00|0.00|533.82|0.00|0.00|533.82|533.82|-593.34| +2451284|24184|2451346|3937|18917|614640|763|48039|54232|918925|6761|48084|10|8|4|5|159|58|30|65.83|117.17|9.37|3234.00|281.10|1974.90|3515.10|1.34|146.17|1405.80|134.93|136.27|1540.73|1542.07|-1839.97| +2451284|24184|2451350|17437|18917|614640|763|48039|54232|918925|6761|48084|58|1|12|3|124|58|62|4.19|5.40|1.94|214.52|120.28|259.78|334.80|7.21|0.00|156.86|120.28|127.49|277.14|284.35|-139.50| +2451484|62929|2451509|17162|33521|1812017|2960|29903|54903|853546|4685|35981|38|19|7|2|234|59|97|72.15|98.12|53.96|4283.52|5234.12|6998.55|9517.64|209.36|0.00|2474.47|5234.12|5443.48|7708.59|7917.95|-1764.43| +2451484|62929|2451596|14096|33521|1812017|2960|29903|54903|853546|4685|35981|38|26|8|4|93|59|72|30.97|39.95|30.36|690.48|2185.92|2229.84|2876.40|196.73|0.00|229.68|2185.92|2382.65|2415.60|2612.33|-43.92| +2451484|62929|2451572|13633|33521|1812017|2960|29903|54903|853546|4685|35981|34|14|8|3|38|59|30|26.19|41.64|36.64|150.00|1099.20|785.70|1249.20|87.93|0.00|224.70|1099.20|1187.13|1323.90|1411.83|313.50| +2451484|62929|2451582|1316|33521|1812017|2960|29903|54903|853546|4685|35981|50|8|17|1|168|59|12|92.35|121.90|81.67|482.76|980.04|1108.20|1462.80|78.40|0.00|614.28|980.04|1058.44|1594.32|1672.72|-128.16| +2451484|62929|2451563|13132|33521|1812017|2960|29903|54903|853546|4685|35981|32|4|2|3|157|59|88|85.97|132.39|38.39|8272.00|3378.32|7565.36|11650.32|135.13|0.00|2213.20|3378.32|3513.45|5591.52|5726.65|-4187.04| +2451484|62929|2451568|10658|33521|1812017|2960|29903|54903|853546|4685|35981|43|1|7|1|102|59|70|82.70|138.10|26.23|7830.90|1836.10|5789.00|9667.00|73.44|0.00|1159.90|1836.10|1909.54|2996.00|3069.44|-3952.90| +2451484|62929|2451531|1057|33521|1812017|2960|29903|54903|853546|4685|35981|25|14|6|1|136|59|53|38.90|114.75|97.53|912.66|5169.09|2061.70|6081.75|310.14|0.00|2249.85|5169.09|5479.23|7418.94|7729.08|3107.39| +2451484|62929|2451604|5918|33521|1812017|2960|29903|54903|853546|4685|35981|43|22|12|5|185|59|28|56.48|109.57|97.51|337.68|2730.28|1581.44|3067.96|191.11|0.00|920.36|2730.28|2921.39|3650.64|3841.75|1148.84| +2451484|62929|2451589|4420|33521|1812017|2960|29903|54903|853546|4685|35981|22|20|20|4|128|59|54|8.92|25.42|18.30|384.48|988.20|481.68|1372.68|19.76|0.00|178.20|988.20|1007.96|1166.40|1186.16|506.52| +2451484|62929|2451522|16933|33521|1812017|2960|29903|54903|853546|4685|35981|34|7|10|1|292|59|81|47.85|121.06|38.73|6668.73|3137.13|3875.85|9805.86|237.16|501.94|882.09|2635.19|2872.35|3517.28|3754.44|-1240.66| +2451060|34923|2451146|8629|4759|535841|6570|49652|1574|810653|3345|15274|40|14|12|4|73|60|42|6.80|17.34|14.56|116.76|611.52|285.60|728.28|36.69|0.00|57.96|611.52|648.21|669.48|706.17|325.92| +2451060|34923|2451151|1736|4759|535841|6570|49652|1574|810653|3345|15274|40|26|7|5|53|60|66|75.14|103.69|67.39|2395.80|4447.74|4959.24|6843.54|88.95|0.00|67.98|4447.74|4536.69|4515.72|4604.67|-511.50| +2451060|34923|2451068|6412|4759|535841|6570|49652|1574|810653|3345|15274|38|14|13|1|46|60|27|34.07|93.35|1.86|2470.23|50.22|919.89|2520.45|3.51|0.00|1083.78|50.22|53.73|1134.00|1137.51|-869.67| +2451060|34923|2451100|16339|4759|535841|6570|49652|1574|810653|3345|15274|7|14|2|3|207|60|99|15.08|17.34|14.91|240.57|1476.09|1492.92|1716.66|0.00|0.00|858.33|1476.09|1476.09|2334.42|2334.42|-16.83| +2451060|34923|2451110|1556|4759|535841|6570|49652|1574|810653|3345|15274|58|19|10|5|227|60|95|8.34|10.67|4.05|628.90|384.75|792.30|1013.65|23.08|0.00|384.75|384.75|407.83|769.50|792.58|-407.55| +2451060|34923|2451100|14683|4759|535841|6570|49652|1574|810653|3345|15274|16|20|16|3|280|60|18|26.23|71.34|23.54|860.40|423.72|472.14|1284.12|24.78|148.30|269.64|275.42|300.20|545.06|569.84|-196.72| +2451060|34923|2451098|5642|4759|535841|6570|49652|1574|810653|3345|15274|46|14|9|5|131|60|86|11.15|28.09|8.98|1643.46|772.28|958.90|2415.74|15.44|0.00|0.00|772.28|787.72|772.28|787.72|-186.62| +2451060|34923|2451101|10288|4759|535841|6570|49652|1574|810653|3345|15274|25|16|2|5|101|60|71|93.32|154.91|117.73|2639.78|8358.83|6625.72|10998.61|488.99|2925.59|2859.17|5433.24|5922.23|8292.41|8781.40|-1192.48| +2451060|34923|2451180|211|4759|535841|6570|49652|1574|810653|3345|15274|22|13|12|5|105|60|47|74.89|179.73|120.41|2788.04|5659.27|3519.83|8447.31|169.77|0.00|2787.57|5659.27|5829.04|8446.84|8616.61|2139.44| +2450821|49678|2450839|4424|85218|575823|828|14233|85218|575823|828|14233|10|22|1|2|46|61|8|58.27|117.70|1.17|932.24|9.36|466.16|941.60|0.30|1.68|423.68|7.68|7.98|431.36|431.66|-458.48| +2450821|49678|2450861|2311|85218|575823|828|14233|85218|575823|828|14233|8|20|17|1|52|61|3|41.26|49.51|14.85|103.98|44.55|123.78|148.53|3.56|0.00|60.87|44.55|48.11|105.42|108.98|-79.23| +2450821|49678|2450896|15494|85218|575823|828|14233|85218|575823|828|14233|43|25|14|5|106|61|10|64.43|169.45|138.94|305.10|1389.40|644.30|1694.50|0.00|0.00|474.40|1389.40|1389.40|1863.80|1863.80|745.10| +2450821|49678|2450858|8002|85218|575823|828|14233|85218|575823|828|14233|25|8|4|3|122|61|48|30.57|49.21|16.73|1559.04|803.04|1467.36|2362.08|48.90|104.39|519.36|698.65|747.55|1218.01|1266.91|-768.71| +2450821|49678|2450849|16477|85218|575823|828|14233|85218|575823|828|14233|1|26|17|5|53|61|50|41.35|124.05|96.75|1365.00|4837.50|2067.50|6202.50|387.00|0.00|1984.50|4837.50|5224.50|6822.00|7209.00|2770.00| +2450821|49678|2450904|10138|85218|575823|828|14233|85218|575823|828|14233|10|8|4|1|55|61|65|95.74|256.58|141.11|7505.55|9172.15|6223.10|16677.70|275.16|0.00|166.40|9172.15|9447.31|9338.55|9613.71|2949.05| +2450821|49678|2450839|8452|85218|575823|828|14233|85218|575823|828|14233|32|16|18|2|119|61|21|49.67|67.05|9.38|1211.07|196.98|1043.07|1408.05|5.90|0.00|563.22|196.98|202.88|760.20|766.10|-846.09| +2450821|49678|2450880|3343|85218|575823|828|14233|85218|575823|828|14233|50|19|14|5|119|61|32|42.65|96.38|79.99|524.48|2559.68|1364.80|3084.16|230.37|0.00|215.68|2559.68|2790.05|2775.36|3005.73|1194.88| +2450821|49678|2450859|17122|85218|575823|828|14233|85218|575823|828|14233|31|22|1|2|16|61|99|19.42|49.52|43.57|589.05|4313.43|1922.58|4902.48|86.26|0.00|1470.15|4313.43|4399.69|5783.58|5869.84|2390.85| +2450821|49678|2450924|13783|85218|575823|828|14233|85218|575823|828|14233|10|28|4|3|102|61|47|12.51|21.51|8.60|606.77|404.20|587.97|1010.97|16.16|0.00|90.71|404.20|420.36|494.91|511.07|-183.77| +2450821|49678|2450912|10184|85218|575823|828|14233|85218|575823|828|14233|20|16|7|3|206|61|67|61.72|135.16|112.18|1539.66|7516.06|4135.24|9055.72|526.12|0.00|3622.02|7516.06|8042.18|11138.08|11664.20|3380.82| +2450821|49678|2450935|2155|85218|575823|828|14233|85218|575823|828|14233|52|19|16|4|42|61|96|79.59|227.62|34.14|18574.08|3277.44|7640.64|21851.52|0.00|0.00|10925.76|3277.44|3277.44|14203.20|14203.20|-4363.20| +2450821|49678|2450861|5764|85218|575823|828|14233|85218|575823|828|14233|10|7|2|5|261|61|24|73.07|99.37|32.79|1597.92|786.96|1753.68|2384.88|31.47|0.00|786.96|786.96|818.43|1573.92|1605.39|-966.72| +2451505|60774|2451610|14443|85517|1119630|496|14209|56648|1762228|2101|47014|8|7|13|2|181|62|48|73.14|182.11|100.16|3933.60|4807.68|3510.72|8741.28|384.61|0.00|524.16|4807.68|5192.29|5331.84|5716.45|1296.96| +2451505|60774|2451597|9254|85517|1119630|496|14209|56648|1762228|2101|47014|8|16|13|2|231|62|68|19.89|27.64|23.77|263.16|1616.36|1352.52|1879.52|145.47|0.00|883.32|1616.36|1761.83|2499.68|2645.15|263.84| +2451505|60774|2451524|16075|85517|1119630|496|14209|56648|1762228|2101|47014|10|25|10|4|101|62|52|71.03|166.92|23.36|7465.12|1214.72|3693.56|8679.84|0.00|0.00|1909.44|1214.72|1214.72|3124.16|3124.16|-2478.84| +2451505|60774|2451517|1474|85517|1119630|496|14209|56648|1762228|2101|47014|31|22|18|1|277|62|27|15.73|42.62|32.81|264.87|885.87|424.71|1150.74|26.57|0.00|402.57|885.87|912.44|1288.44|1315.01|461.16| +2451505|60774|2451597|3532|85517|1119630|496|14209|56648|1762228|2101|47014|34|16|10|1|162|62|82|6.88|18.98|3.22|1292.32|264.04|564.16|1556.36|5.28|0.00|77.08|264.04|269.32|341.12|346.40|-300.12| +2451505|60774|2451620|16036|85517|1119630|496|14209|56648|1762228|2101|47014|1|16|10|3|86|62|35|37.25|76.73|42.96|1181.95|1503.60|1303.75|2685.55|75.18|0.00|590.80|1503.60|1578.78|2094.40|2169.58|199.85| +2451505|60774|2451517|6940|85517|1119630|496|14209|56648|1762228|2101|47014|56|4|7|1|15|62|5|36.93|55.02|31.91|115.55|159.55|184.65|275.10|0.00|0.00|112.75|159.55|159.55|272.30|272.30|-25.10| +2451505|60774|2451596|8252|85517|1119630|496|14209|56648|1762228|2101|47014|38|10|15|1|47|62|94|63.72|159.93|94.35|6164.52|8868.90|5989.68|15033.42|46.11|4257.07|5561.98|4611.83|4657.94|10173.81|10219.92|-1377.85| +2451500|66633|2451550|1702|53134|14005|4476|20147|38730|1354568|5113|9184|13|2|17|2|257|63|69|60.11|88.36|6.18|5670.42|426.42|4147.59|6096.84|8.52|0.00|1097.10|426.42|434.94|1523.52|1532.04|-3721.17| +2451500|66633|2451531|12037|53134|14005|4476|20147|38730|1354568|5113|9184|26|1|8|5|292|63|77|72.59|213.41|93.90|9202.27|7230.30|5589.43|16432.57|274.75|1735.27|5093.55|5495.03|5769.78|10588.58|10863.33|-94.40| +2451500|66633|2451577|7369|53134|14005|4476|20147|38730|1354568|5113|9184|32|14|9|5|281|63|30|31.03|43.44|38.22|156.60|1146.60|930.90|1303.20|8.48|722.35|364.80|424.25|432.73|789.05|797.53|-506.65| +2451500|66633|2451592|7378|53134|14005|4476|20147|38730|1354568|5113|9184|46|2|20|1|139|63|21|82.15|210.30|159.82|1060.08|3356.22|1725.15|4416.30|201.37|0.00|1589.70|3356.22|3557.59|4945.92|5147.29|1631.07| +2451500|66633|2451603|6536|53134|14005|4476|20147|38730|1354568|5113|9184|55|14|5|5|142|63|31|43.29|115.58|40.45|2329.03|1253.95|1341.99|3582.98|32.35|714.75|644.80|539.20|571.55|1184.00|1216.35|-802.79| +2451500|66633|2451616|15130|53134|14005|4476|20147|38730|1354568|5113|9184|26|19|16|4|5|63|53|63.95|171.38|128.53|2271.05|6812.09|3389.35|9083.14|272.48|0.00|1271.47|6812.09|7084.57|8083.56|8356.04|3422.74| +2451500|66633|2451577|14287|53134|14005|4476|20147|38730|1354568|5113|9184|46|16|4|4|114|63|68|46.08|98.61|46.34|3554.36|3151.12|3133.44|6705.48|126.04|0.00|2145.40|3151.12|3277.16|5296.52|5422.56|17.68| +2451500|66633|2451597|799|53134|14005|4476|20147|38730|1354568|5113|9184|55|2|9|1|270|63|80|92.96|242.62|50.95|15333.60|4076.00|7436.80|19409.60|326.08|0.00|7957.60|4076.00|4402.08|12033.60|12359.68|-3360.80| +2451500|66633|2451582|16402|53134|14005|4476|20147|38730|1354568|5113|9184|31|20|16|3|243|63|66|43.62|88.11|51.10|2442.66|3372.60|2878.92|5815.26|0.00|0.00|1860.54|3372.60|3372.60|5233.14|5233.14|493.68| +2451500|66633|2451511|15430|53134|14005|4476|20147|38730|1354568|5113|9184|52|22|17|2|140|63|14|91.59|262.86|202.40|846.44|2833.60|1282.26|3680.04|170.01|0.00|1508.78|2833.60|3003.61|4342.38|4512.39|1551.34| +2451500|66633|2451517|2630|53134|14005|4476|20147|38730|1354568|5113|9184|50|26|5|3|61|63|50|16.33|42.78|39.35|171.50|1967.50|816.50|2139.00|108.01|767.32|342.00|1200.18|1308.19|1542.18|1650.19|383.68| +2451500|66633|2451503|4636|53134|14005|4476|20147|38730|1354568|5113|9184|1|1|18|3|8|63|84|37.17|97.01|77.60|1630.44|6518.40|3122.28|8148.84|391.10|0.00|407.40|6518.40|6909.50|6925.80|7316.90|3396.12| +2451073|44810|2451090|3319|782|1915675|4968|10214|77544|1088240|5246|17339|34|25|18|3|95|64|17|13.85|15.23|1.67|230.52|28.39|235.45|258.91|1.70|0.00|67.15|28.39|30.09|95.54|97.24|-207.06| +2451073|44810|2451158|14062|782|1915675|4968|10214|77544|1088240|5246|17339|43|10|20|4|228|64|80|26.74|58.02|30.17|2228.00|2413.60|2139.20|4641.60|72.40|0.00|2273.60|2413.60|2486.00|4687.20|4759.60|274.40| +2451073|44810|2451178|4930|782|1915675|4968|10214|77544|1088240|5246|17339|46|10|8|3|65|64|87|48.02|129.65|50.56|6880.83|4398.72|4177.74|11279.55|87.97|0.00|2029.71|4398.72|4486.69|6428.43|6516.40|220.98| +2451073|44810|2451140|5008|782|1915675|4968|10214|77544|1088240|5246|17339|10|20|6|4|19|64|51|38.61|44.40|22.64|1109.76|1154.64|1969.11|2264.40|46.18|0.00|814.98|1154.64|1200.82|1969.62|2015.80|-814.47| +2451073|44810|2451176|7285|782|1915675|4968|10214|77544|1088240|5246|17339|19|28|10|5|300|64|96|44.34|91.34|71.24|1929.60|6839.04|4256.64|8768.64|478.73|0.00|3506.88|6839.04|7317.77|10345.92|10824.65|2582.40| +2451073|44810|2451171|10772|782|1915675|4968|10214|77544|1088240|5246|17339|43|7|3|5|47|64|27|16.39|22.94|7.79|409.05|210.33|442.53|619.38|2.10|0.00|129.87|210.33|212.43|340.20|342.30|-232.20| +2451073|44810|2451122|238|782|1915675|4968|10214|77544|1088240|5246|17339|14|10|4|2|120|64|76|23.26|47.91|33.05|1129.36|2511.80|1767.76|3641.16|75.35|0.00|728.08|2511.80|2587.15|3239.88|3315.23|744.04| +2451073|44810|2451131|14348|782|1915675|4968|10214|77544|1088240|5246|17339|25|8|4|3|115|64|31|41.17|87.69|14.90|2256.49|461.90|1276.27|2718.39|12.56|147.80|815.30|314.10|326.66|1129.40|1141.96|-962.17| +2451072|31719|2451182|12742|26772|378122|5919|6069|88160|1267011|1719|33916|28|22|12|4|176|65|59|14.71|17.94|0.53|1027.19|31.27|867.89|1058.46|0.93|0.00|73.75|31.27|32.20|105.02|105.95|-836.62| +2451072|31719|2451108|14242|26772|378122|5919|6069|88160|1267011|1719|33916|28|28|15|3|188|65|57|65.79|185.52|89.04|5499.36|5075.28|3750.03|10574.64|101.50|0.00|3701.01|5075.28|5176.78|8776.29|8877.79|1325.25| +2451072|31719|2451088|604|26772|378122|5919|6069|88160|1267011|1719|33916|16|10|13|5|20|65|66|60.18|158.27|14.24|9505.98|939.84|3971.88|10445.82|56.39|0.00|312.84|939.84|996.23|1252.68|1309.07|-3032.04| +2451072|31719|2451154|7054|26772|378122|5919|6069|88160|1267011|1719|33916|16|2|8|4|170|65|16|1.79|5.10|2.24|45.76|35.84|28.64|81.60|1.43|0.00|40.80|35.84|37.27|76.64|78.07|7.20| +2451072|31719|2451121|2317|26772|378122|5919|6069|88160|1267011|1719|33916|31|10|16|1|36|65|7|28.33|54.39|11.96|297.01|83.72|198.31|380.73|0.07|76.18|41.86|7.54|7.61|49.40|49.47|-190.77| +2451072|31719|2451156|5776|26772|378122|5919|6069|88160|1267011|1719|33916|55|4|18|3|205|65|67|29.45|55.36|7.19|3227.39|481.73|1973.15|3709.12|28.90|0.00|259.29|481.73|510.63|741.02|769.92|-1491.42| +2451072|31719|2451075|12526|26772|378122|5919|6069|88160|1267011|1719|33916|19|7|18|2|46|65|64|10.38|25.22|4.03|1356.16|257.92|664.32|1614.08|1.70|87.69|807.04|170.23|171.93|977.27|978.97|-494.09| +2451072|31719|2451174|12316|26772|378122|5919|6069|88160|1267011|1719|33916|44|20|2|3|231|65|58|28.90|61.55|44.93|963.96|2605.94|1676.20|3569.90|234.53|0.00|749.36|2605.94|2840.47|3355.30|3589.83|929.74| +2451072|31719|2451082|1952|26772|378122|5919|6069|88160|1267011|1719|33916|8|2|12|4|129|65|40|93.48|193.50|158.67|1393.20|6346.80|3739.20|7740.00|444.27|0.00|2322.00|6346.80|6791.07|8668.80|9113.07|2607.60| +2451072|31719|2451185|12106|26772|378122|5919|6069|88160|1267011|1719|33916|16|2|12|2|55|65|96|40.38|105.39|66.39|3744.00|6373.44|3876.48|10117.44|0.00|0.00|404.16|6373.44|6373.44|6777.60|6777.60|2496.96| +2451072|31719|2451118|5893|26772|378122|5919|6069|88160|1267011|1719|33916|52|14|6|2|78|65|68|62.77|134.95|9.44|8534.68|641.92|4268.36|9176.60|38.51|0.00|2660.84|641.92|680.43|3302.76|3341.27|-3626.44| +2451072|31719|2451088|13250|26772|378122|5919|6069|88160|1267011|1719|33916|25|4|10|5|190|65|63|80.84|164.10|19.69|9097.83|1240.47|5092.92|10338.30|0.00|0.00|4341.96|1240.47|1240.47|5582.43|5582.43|-3852.45| +2451334|82725|2451344|11893|97747|570993|2639|24285|28739|188604|6823|26022|50|20|16|1|116|66|24|19.98|43.35|0.86|1019.76|20.64|479.52|1040.40|1.85|0.00|478.56|20.64|22.49|499.20|501.05|-458.88| +2451334|82725|2451381|1832|97747|570993|2639|24285|28739|188604|6823|26022|10|1|6|1|249|66|27|49.18|121.47|40.08|2197.53|1082.16|1327.86|3279.69|26.62|638.47|787.05|443.69|470.31|1230.74|1257.36|-884.17| +2451334|82725|2451356|17270|97747|570993|2639|24285|28739|188604|6823|26022|26|1|18|3|195|66|60|30.05|61.30|52.71|515.40|3162.60|1803.00|3678.00|0.00|0.00|882.60|3162.60|3162.60|4045.20|4045.20|1359.60| +2451334|82725|2451346|17582|97747|570993|2639|24285|28739|188604|6823|26022|7|20|5|2|196|66|7|2.47|4.59|0.78|26.67|5.46|17.29|32.13|0.05|2.83|7.00|2.63|2.68|9.63|9.68|-14.66| +2451334|82725|2451414|17662|97747|570993|2639|24285|28739|188604|6823|26022|37|22|8|1|44|66|42|74.77|198.14|160.49|1581.30|6740.58|3140.34|8321.88|5.39|6470.95|1331.40|269.63|275.02|1601.03|1606.42|-2870.71| +2451334|82725|2451454|3098|97747|570993|2639|24285|28739|188604|6823|26022|49|1|10|1|35|66|94|17.90|51.19|50.67|48.88|4762.98|1682.60|4811.86|428.66|0.00|529.22|4762.98|5191.64|5292.20|5720.86|3080.38| +2451334|82725|2451412|4201|97747|570993|2639|24285|28739|188604|6823|26022|19|26|15|4|70|66|73|39.86|40.25|28.17|881.84|2056.41|2909.78|2938.25|0.00|0.00|1145.37|2056.41|2056.41|3201.78|3201.78|-853.37| +2451334|82725|2451437|715|97747|570993|2639|24285|28739|188604|6823|26022|10|16|12|5|18|66|91|32.27|40.66|15.85|2257.71|1442.35|2936.57|3700.06|13.55|86.54|665.21|1355.81|1369.36|2021.02|2034.57|-1580.76| +2451334|82725|2451353|2410|97747|570993|2639|24285|28739|188604|6823|26022|37|7|19|4|199|66|81|23.28|67.27|65.92|109.35|5339.52|1885.68|5448.87|427.16|0.00|1089.45|5339.52|5766.68|6428.97|6856.13|3453.84| +2451334|82725|2451384|5395|97747|570993|2639|24285|28739|188604|6823|26022|7|2|3|4|35|66|47|74.21|110.57|105.04|259.91|4936.88|3487.87|5196.79|246.84|0.00|1558.99|4936.88|5183.72|6495.87|6742.71|1449.01| +2451334|82725|2451409|13192|97747|570993|2639|24285|28739|188604|6823|26022|1|19|9|3|7|66|15|29.03|63.86|5.74|871.80|86.10|435.45|957.90|4.30|0.00|316.05|86.10|90.40|402.15|406.45|-349.35| +2451334|82725|2451355|2180|97747|570993|2639|24285|28739|188604|6823|26022|44|20|2|5|268|66|89|7.96|9.63|7.41|197.58|659.49|708.44|857.07|6.59|0.00|33.82|659.49|666.08|693.31|699.90|-48.95| +2451871|52842|2451877|5653|862|752153|4691|20829|1777|1782422|3196|25334|53|11|15|4|280|67|35|18.04|33.55|14.09|681.10|493.15|631.40|1174.25|4.93|0.00|457.80|493.15|498.08|950.95|955.88|-138.25| +2451871|52842|2451902|16922|862|752153|4691|20829|1777|1782422|3196|25334|29|11|17|5|46|67|11|62.05|84.38|2.53|900.35|27.83|682.55|928.18|0.00|0.00|389.73|27.83|27.83|417.56|417.56|-654.72| +2451871|52842|2451885|5545|862|752153|4691|20829|1777|1782422|3196|25334|26|14|2|1|290|67|47|20.16|38.30|9.95|1332.45|467.65|947.52|1800.10|9.35|0.00|647.66|467.65|477.00|1115.31|1124.66|-479.87| +2451871|52842|2451950|12067|862|752153|4691|20829|1777|1782422|3196|25334|19|7|8|4|23|67|18|19.92|59.36|40.36|342.00|726.48|358.56|1068.48|5.81|653.83|256.32|72.65|78.46|328.97|334.78|-285.91| +2451871|52842|2451955|10259|862|752153|4691|20829|1777|1782422|3196|25334|41|20|11|1|71|67|38|88.90|149.35|116.49|1248.68|4426.62|3378.20|5675.30|88.53|0.00|1816.02|4426.62|4515.15|6242.64|6331.17|1048.42| +2451871|52842|2451968|7339|862|752153|4691|20829|1777|1782422|3196|25334|8|29|8|3|1|67|36|67.81|84.76|78.82|213.84|2837.52|2441.16|3051.36|170.25|0.00|1281.24|2837.52|3007.77|4118.76|4289.01|396.36| +2451871|52842|2451891|4406|862|752153|4691|20829|1777|1782422|3196|25334|7|25|2|1|160|67|11|75.10|190.75|162.13|314.82|1783.43|826.10|2098.25|0.00|0.00|860.20|1783.43|1783.43|2643.63|2643.63|957.33| +2451871|52842|2451953|10022|862|752153|4691|20829|1777|1782422|3196|25334|26|1|18|3|225|67|68|76.76|98.25|93.33|334.56|6346.44|5219.68|6681.00|441.71|825.03|2337.84|5521.41|5963.12|7859.25|8300.96|301.73| +2451871|52842|2451881|9539|862|752153|4691|20829|1777|1782422|3196|25334|14|14|18|5|15|67|67|55.03|106.20|6.37|6688.61|426.79|3687.01|7115.40|21.33|0.00|995.62|426.79|448.12|1422.41|1443.74|-3260.22| +2451871|52842|2451907|12617|862|752153|4691|20829|1777|1782422|3196|25334|37|5|17|1|225|67|81|91.76|128.46|110.47|1457.19|8948.07|7432.56|10405.26|243.38|2863.38|4786.29|6084.69|6328.07|10870.98|11114.36|-1347.87| +2451871|52842|2451966|6175|862|752153|4691|20829|1777|1782422|3196|25334|31|5|20|4|241|67|10|26.54|31.58|6.94|246.40|69.40|265.40|315.80|0.69|0.00|60.00|69.40|70.09|129.40|130.09|-196.00| +2451871|52842|2451898|4814|862|752153|4691|20829|1777|1782422|3196|25334|59|19|20|5|40|67|16|44.60|119.97|37.19|1324.48|595.04|713.60|1919.52|11.90|0.00|844.48|595.04|606.94|1439.52|1451.42|-118.56| +2451871|52842|2451900|4322|862|752153|4691|20829|1777|1782422|3196|25334|55|2|13|4|88|67|10|24.47|49.67|49.67|0.00|496.70|244.70|496.70|0.00|0.00|4.90|496.70|496.70|501.60|501.60|252.00| +2451871|52842|2451883|15929|862|752153|4691|20829|1777|1782422|3196|25334|56|29|11|2|183|67|35|99.45|124.31|88.26|1261.75|3089.10|3480.75|4350.85|278.01|0.00|1696.80|3089.10|3367.11|4785.90|5063.91|-391.65| +2451871|52842|2451989|8369|862|752153|4691|20829|1777|1782422|3196|25334|31|17|9|2|152|67|5|97.24|216.84|86.73|650.55|433.65|486.20|1084.20|17.34|0.00|520.40|433.65|450.99|954.05|971.39|-52.55| +2451111|7790|2451145|16916|34219|956323|827|44131|96141|526889|2843|7347|56|7|16|1|26|68|9|36.11|81.60|38.35|389.25|345.15|324.99|734.40|20.70|0.00|58.68|345.15|365.85|403.83|424.53|20.16| +2451111|7790|2451168|15382|34219|956323|827|44131|96141|526889|2843|7347|31|7|9|4|162|68|3|59.37|143.08|123.04|60.12|369.12|178.11|429.24|8.08|99.66|154.50|269.46|277.54|423.96|432.04|91.35| +2451111|7790|2451148|3664|34219|956323|827|44131|96141|526889|2843|7347|38|19|10|5|190|68|43|4.78|11.28|8.00|141.04|344.00|205.54|485.04|20.64|0.00|154.80|344.00|364.64|498.80|519.44|138.46| +2451111|7790|2451144|13448|34219|956323|827|44131|96141|526889|2843|7347|44|13|1|5|259|68|18|44.75|115.00|57.50|1035.00|1035.00|805.50|2070.00|72.45|0.00|496.80|1035.00|1107.45|1531.80|1604.25|229.50| +2451111|7790|2451219|17134|34219|956323|827|44131|96141|526889|2843|7347|16|7|12|5|155|68|90|35.34|100.01|2.00|8820.90|180.00|3180.60|9000.90|10.80|0.00|2790.00|180.00|190.80|2970.00|2980.80|-3000.60| +2451111|7790|2451209|6670|34219|956323|827|44131|96141|526889|2843|7347|55|22|6|5|84|68|4|38.27|61.23|60.61|2.48|242.44|153.08|244.92|0.24|237.59|41.60|4.85|5.09|46.45|46.69|-148.23| +2451111|7790|2451197|283|34219|956323|827|44131|96141|526889|2843|7347|4|4|13|3|250|68|31|66.00|143.88|58.99|2631.59|1828.69|2046.00|4460.28|164.58|0.00|1070.43|1828.69|1993.27|2899.12|3063.70|-217.31| +2451111|7790|2451203|13963|34219|956323|827|44131|96141|526889|2843|7347|20|8|12|1|220|68|37|35.05|101.29|87.10|525.03|3222.70|1296.85|3747.73|0.00|0.00|74.74|3222.70|3222.70|3297.44|3297.44|1925.85| +2451111|7790|2451220|3607|34219|956323|827|44131|96141|526889|2843|7347|43|1|7|3|109|68|72|55.53|126.05|1.26|8984.88|90.72|3998.16|9075.60|1.81|0.00|181.44|90.72|92.53|272.16|273.97|-3907.44| +2451111|7790|2451195|908|34219|956323|827|44131|96141|526889|2843|7347|28|25|4|2|203|68|90|66.09|138.78|29.14|9867.60|2622.60|5948.10|12490.20|26.22|0.00|2747.70|2622.60|2648.82|5370.30|5396.52|-3325.50| +2451111|7790|2451119|11198|34219|956323|827|44131|96141|526889|2843|7347|38|8|17|2|64|68|22|45.23|117.14|114.79|51.70|2525.38|995.06|2577.08|101.01|0.00|1004.96|2525.38|2626.39|3530.34|3631.35|1530.32| +2451111|7790|2451171|4136|34219|956323|827|44131|96141|526889|2843|7347|16|16|19|4|129|68|84|25.23|66.60|33.30|2797.20|2797.20|2119.32|5594.40|139.86|0.00|614.88|2797.20|2937.06|3412.08|3551.94|677.88| +2451111|7790|2451114|5320|34219|956323|827|44131|96141|526889|2843|7347|58|2|14|1|188|68|69|71.68|177.76|110.21|4660.95|7604.49|4945.92|12265.44|182.50|5323.14|3556.95|2281.35|2463.85|5838.30|6020.80|-2664.57| +2451111|7790|2451160|6368|34219|956323|827|44131|96141|526889|2843|7347|20|28|6|5|281|68|38|5.19|7.57|2.72|184.30|103.36|197.22|287.66|1.03|0.00|68.78|103.36|104.39|172.14|173.17|-93.86| +2451887|75024|2451965|11261|64487|1617286|3238|36037|38806|1840690|5987|25986|19|11|15|1|250|69|64|55.44|99.23|45.64|3429.76|2920.96|3548.16|6350.72|175.25|0.00|888.96|2920.96|3096.21|3809.92|3985.17|-627.20| +2451887|75024|2451937|14857|64487|1617286|3238|36037|38806|1840690|5987|25986|47|2|20|5|183|69|67|44.05|123.34|13.56|7355.26|908.52|2951.35|8263.78|36.34|0.00|1487.40|908.52|944.86|2395.92|2432.26|-2042.83| +2451887|75024|2451917|17383|64487|1617286|3238|36037|38806|1840690|5987|25986|2|2|2|5|295|69|38|61.16|101.52|89.33|463.22|3394.54|2324.08|3857.76|4.07|3292.70|1465.66|101.84|105.91|1567.50|1571.57|-2222.24| +2451887|75024|2451965|53|64487|1617286|3238|36037|38806|1840690|5987|25986|1|23|3|4|135|69|76|16.82|25.90|20.72|393.68|1574.72|1278.32|1968.40|15.74|0.00|98.04|1574.72|1590.46|1672.76|1688.50|296.40| +2451887|75024|2451908|9902|64487|1617286|3238|36037|38806|1840690|5987|25986|55|19|12|1|113|69|95|37.28|65.98|36.28|2821.50|3446.60|3541.60|6268.10|21.36|2378.15|1190.35|1068.45|1089.81|2258.80|2280.16|-2473.15| +2451887|75024|2451892|4103|64487|1617286|3238|36037|38806|1840690|5987|25986|23|1|3|5|277|69|54|41.12|80.18|7.21|3940.38|389.34|2220.48|4329.72|0.00|0.00|1428.30|389.34|389.34|1817.64|1817.64|-1831.14| +2451887|75024|2451954|15599|64487|1617286|3238|36037|38806|1840690|5987|25986|55|1|4|4|77|69|27|35.53|83.85|47.79|973.62|1290.33|959.31|2263.95|64.51|0.00|837.54|1290.33|1354.84|2127.87|2192.38|331.02| +2451887|75024|2451896|8509|64487|1617286|3238|36037|38806|1840690|5987|25986|29|25|8|3|268|69|22|22.84|63.72|59.89|84.26|1317.58|502.48|1401.84|92.23|0.00|42.02|1317.58|1409.81|1359.60|1451.83|815.10| +2451887|75024|2451954|13148|64487|1617286|3238|36037|38806|1840690|5987|25986|19|2|4|1|68|69|30|57.10|91.36|82.22|274.20|2466.60|1713.00|2740.80|172.66|0.00|794.70|2466.60|2639.26|3261.30|3433.96|753.60| +2451887|75024|2451975|17030|64487|1617286|3238|36037|38806|1840690|5987|25986|32|23|20|5|230|69|73|89.79|154.43|105.01|3607.66|7665.73|6554.67|11273.39|459.94|0.00|2141.82|7665.73|8125.67|9807.55|10267.49|1111.06| +2451973|69074|2451989|13799|18177|860787|2597|32760|84347|736031|4943|13106|51|29|17|1|215|70|42|5.71|16.67|13.33|140.28|559.86|239.82|700.14|0.00|67.18|168.00|492.68|492.68|660.68|660.68|252.86| +2451973|69074|2452044|7633|18177|860787|2597|32760|84347|736031|4943|13106|25|19|7|2|264|70|2|69.25|165.50|152.26|26.48|304.52|138.50|331.00|15.22|0.00|6.62|304.52|319.74|311.14|326.36|166.02| +2451973|69074|2451986|7721|18177|860787|2597|32760|84347|736031|4943|13106|1|7|20|3|179|70|27|74.91|140.83|70.41|1901.34|1901.07|2022.57|3802.41|171.09|0.00|684.18|1901.07|2072.16|2585.25|2756.34|-121.50| +2451973|69074|2452085|10441|18177|860787|2597|32760|84347|736031|4943|13106|57|27|19|4|149|70|13|79.90|120.64|119.43|15.73|1552.59|1038.70|1568.32|62.10|0.00|219.44|1552.59|1614.69|1772.03|1834.13|513.89| +2451973|69074|2452020|2911|18177|860787|2597|32760|84347|736031|4943|13106|21|29|9|5|184|70|8|78.72|109.42|93.00|131.36|744.00|629.76|875.36|14.88|0.00|175.04|744.00|758.88|919.04|933.92|114.24| +2451973|69074|2451980|9355|18177|860787|2597|32760|84347|736031|4943|13106|21|25|5|2|266|70|2|12.04|31.18|11.84|38.68|23.68|24.08|62.36|0.71|0.00|23.68|23.68|24.39|47.36|48.07|-0.40| +2451973|69074|2452062|1819|18177|860787|2597|32760|84347|736031|4943|13106|47|11|11|3|268|70|36|4.70|13.63|0.00|490.68|0.00|169.20|490.68|0.00|0.00|73.44|0.00|0.00|73.44|73.44|-169.20| +2451973|69074|2451998|8945|18177|860787|2597|32760|84347|736031|4943|13106|45|17|8|2|73|70|86|13.92|16.70|1.16|1336.44|99.76|1197.12|1436.20|0.00|0.00|617.48|99.76|99.76|717.24|717.24|-1097.36| +2451973|69074|2452053|6473|18177|860787|2597|32760|84347|736031|4943|13106|59|1|12|3|244|70|23|63.23|186.52|93.26|2144.98|2144.98|1454.29|4289.96|128.69|0.00|1158.28|2144.98|2273.67|3303.26|3431.95|690.69| +2451973|69074|2452038|3261|18177|860787|2597|32760|84347|736031|4943|13106|29|19|5|5|235|70|81|26.34|47.67|0.00|3861.27|0.00|2133.54|3861.27|0.00|0.00|463.32|0.00|0.00|463.32|463.32|-2133.54| +2451973|69074|2452013|4767|18177|860787|2597|32760|84347|736031|4943|13106|25|15|13|1|76|70|82|7.62|10.13|3.24|564.98|265.68|624.84|830.66|1.75|90.33|165.64|175.35|177.10|340.99|342.74|-449.49| +2451348|41853|2451456|16196|48452|1550645|1991|43784|15572|1372301|6669|48462|40|13|13|4|55|71|16|67.06|103.94|86.27|282.72|1380.32|1072.96|1663.04|0.00|0.00|332.48|1380.32|1380.32|1712.80|1712.80|307.36| +2451348|41853|2451452|8570|48452|1550645|1991|43784|15572|1372301|6669|48462|2|8|11|4|300|71|28|82.63|111.55|24.54|2436.28|687.12|2313.64|3123.40|54.96|0.00|437.08|687.12|742.08|1124.20|1179.16|-1626.52| +2451348|41853|2451444|10940|48452|1550645|1991|43784|15572|1372301|6669|48462|2|10|10|4|258|71|20|62.98|64.23|35.96|565.40|719.20|1259.60|1284.60|21.57|0.00|603.60|719.20|740.77|1322.80|1344.37|-540.40| +2451348|41853|2451438|8035|48452|1550645|1991|43784|15572|1372301|6669|48462|22|16|3|2|284|71|27|6.48|6.93|0.06|185.49|1.62|174.96|187.11|0.08|0.00|11.07|1.62|1.70|12.69|12.77|-173.34| +2451348|41853|2451468|4918|48452|1550645|1991|43784|15572|1372301|6669|48462|46|2|13|4|245|71|70|62.89|96.85|49.39|3322.20|3457.30|4402.30|6779.50|103.71|0.00|1355.90|3457.30|3561.01|4813.20|4916.91|-945.00| +2451348|41853|2451378|14281|48452|1550645|1991|43784|15572|1372301|6669|48462|44|26|15|4|40|71|70|65.38|179.79|145.62|2391.90|10193.40|4576.60|12585.30|0.00|0.00|628.60|10193.40|10193.40|10822.00|10822.00|5616.80| +2451348|41853|2451446|10939|48452|1550645|1991|43784|15572|1372301|6669|48462|8|1|17|3|229|71|9|99.54|287.67|198.49|802.62|1786.41|895.86|2589.03|7.68|1018.25|1268.55|768.16|775.84|2036.71|2044.39|-127.70| +2451348|41853|2451396|14474|48452|1550645|1991|43784|15572|1372301|6669|48462|56|19|1|4|230|71|14|36.18|41.24|31.34|138.60|438.76|506.52|577.36|30.71|0.00|63.42|438.76|469.47|502.18|532.89|-67.76| +2451348|41853|2451371|13408|48452|1550645|1991|43784|15572|1372301|6669|48462|28|2|12|4|129|71|14|36.63|105.49|50.63|768.04|708.82|512.82|1476.86|21.26|0.00|472.50|708.82|730.08|1181.32|1202.58|196.00| +2451348|41853|2451436|2527|48452|1550645|1991|43784|15572|1372301|6669|48462|32|16|11|3|278|71|85|70.71|178.89|114.48|5474.85|9730.80|6010.35|15205.65|326.95|1556.92|1064.20|8173.88|8500.83|9238.08|9565.03|2163.53| +2451348|41853|2451423|11995|48452|1550645|1991|43784|15572|1372301|6669|48462|46|20|15|2|46|71|45|31.55|93.70|46.85|2108.25|2108.25|1419.75|4216.50|84.33|0.00|843.30|2108.25|2192.58|2951.55|3035.88|688.50| +2451348|41853|2451359|2012|48452|1550645|1991|43784|15572|1372301|6669|48462|32|16|18|2|6|71|35|8.79|10.54|5.58|173.60|195.30|307.65|368.90|7.81|0.00|84.70|195.30|203.11|280.00|287.81|-112.35| +2451348|41853|2451354|11714|48452|1550645|1991|43784|15572|1372301|6669|48462|43|13|12|5|255|71|53|52.37|101.59|28.44|3876.95|1507.32|2775.61|5384.27|120.58|0.00|968.84|1507.32|1627.90|2476.16|2596.74|-1268.29| +2452129|70279|2452216|6577|90064|644490|6116|46095|90064|644490|6116|46095|51|19|7|1|105|72|23|69.02|195.32|187.50|179.86|4312.50|1587.46|4492.36|4.31|4226.25|1931.54|86.25|90.56|2017.79|2022.10|-1501.21| +2452129|70279|2452223|6831|90064|644490|6116|46095|90064|644490|6116|46095|47|21|18|5|2|72|100|95.29|141.02|66.27|7475.00|6627.00|9529.00|14102.00|596.43|0.00|282.00|6627.00|7223.43|6909.00|7505.43|-2902.00| +2452129|70279|2452235|5997|90064|644490|6116|46095|90064|644490|6116|46095|13|19|3|3|116|72|6|31.86|75.50|53.60|131.40|321.60|191.16|453.00|25.72|0.00|95.10|321.60|347.32|416.70|442.42|130.44| +2452129|70279|2452192|8669|90064|644490|6116|46095|90064|644490|6116|46095|37|1|13|5|277|72|52|34.99|74.17|57.11|887.12|2969.72|1819.48|3856.84|237.57|0.00|1426.88|2969.72|3207.29|4396.60|4634.17|1150.24| +2452129|70279|2452187|599|90064|644490|6116|46095|90064|644490|6116|46095|39|25|19|2|128|72|43|69.38|165.12|51.18|4899.42|2200.74|2983.34|7100.16|198.06|0.00|1703.66|2200.74|2398.80|3904.40|4102.46|-782.60| +2452129|70279|2452178|7013|90064|644490|6116|46095|90064|644490|6116|46095|57|25|20|2|214|72|14|42.79|50.92|36.15|206.78|506.10|599.06|712.88|20.95|156.89|85.54|349.21|370.16|434.75|455.70|-249.85| +2452129|70279|2452131|2405|90064|644490|6116|46095|90064|644490|6116|46095|57|13|5|3|271|72|38|21.33|46.92|2.34|1694.04|88.92|810.54|1782.96|0.88|0.00|320.72|88.92|89.80|409.64|410.52|-721.62| +2452129|70279|2452141|12447|90064|644490|6116|46095|90064|644490|6116|46095|45|1|9|2|182|72|10|6.46|19.12|14.14|49.80|141.40|64.60|191.20|5.65|0.00|66.90|141.40|147.05|208.30|213.95|76.80| +2452129|70279|2452249|2677|90064|644490|6116|46095|90064|644490|6116|46095|55|7|7|3|149|72|82|66.14|190.48|102.85|7185.66|8433.70|5423.48|15619.36|337.34|0.00|7497.26|8433.70|8771.04|15930.96|16268.30|3010.22| +2452228|66853|2452245|2337|92090|1415581|3519|18210|49682|1303843|330|41821|23|27|3|5|57|73|51|80.92|216.05|183.64|1652.91|9365.64|4126.92|11018.55|655.59|0.00|4296.75|9365.64|10021.23|13662.39|14317.98|5238.72| +2452228|66853|2452335|15643|92090|1415581|3519|18210|49682|1303843|330|41821|15|9|19|1|153|73|53|3.08|8.90|7.20|90.10|381.60|163.24|471.70|26.71|0.00|112.89|381.60|408.31|494.49|521.20|218.36| +2452228|66853|2452312|16541|92090|1415581|3519|18210|49682|1303843|330|41821|41|3|3|4|275|73|68|69.65|160.89|130.32|2078.76|8861.76|4736.20|10940.52|177.23|0.00|2734.96|8861.76|9038.99|11596.72|11773.95|4125.56| +2452228|66853|2452268|17467|92090|1415581|3519|18210|49682|1303843|330|41821|23|9|5|3|88|73|10|6.80|17.88|17.70|1.80|177.00|68.00|178.80|12.39|0.00|3.50|177.00|189.39|180.50|192.89|109.00| +2452228|66853|2452283|11919|92090|1415581|3519|18210|49682|1303843|330|41821|49|23|16|5|174|73|37|74.08|108.15|70.29|1400.82|2600.73|2740.96|4001.55|52.01|0.00|79.92|2600.73|2652.74|2680.65|2732.66|-140.23| +2452228|66853|2452316|15671|92090|1415581|3519|18210|49682|1303843|330|41821|29|7|3|2|31|73|12|55.64|153.56|52.21|1216.20|626.52|667.68|1842.72|0.00|0.00|55.20|626.52|626.52|681.72|681.72|-41.16| +2452228|66853|2452237|2203|92090|1415581|3519|18210|49682|1303843|330|41821|3|9|18|1|254|73|91|56.53|137.93|53.79|7656.74|4894.89|5144.23|12551.63|293.69|0.00|2007.46|4894.89|5188.58|6902.35|7196.04|-249.34| +2452228|66853|2452321|749|92090|1415581|3519|18210|49682|1303843|330|41821|51|27|2|3|271|73|65|28.20|31.30|18.46|834.60|1199.90|1833.00|2034.50|35.99|0.00|81.25|1199.90|1235.89|1281.15|1317.14|-633.10| +2452228|66853|2452320|13481|92090|1415581|3519|18210|49682|1303843|330|41821|13|27|14|1|201|73|15|51.67|88.35|13.25|1126.50|198.75|775.05|1325.25|0.00|0.00|119.25|198.75|198.75|318.00|318.00|-576.30| +2452562|82677|2452639|14736|2199|133121|4043|37765|3979|20382|4978|35500|45|1|19|2|258|74|24|91.85|194.72|118.77|1822.80|2850.48|2204.40|4673.28|171.02|0.00|1308.48|2850.48|3021.50|4158.96|4329.98|646.08| +2452562|82677|2452614|16410|2199|133121|4043|37765|3979|20382|4978|35500|57|9|18|4|150|74|9|28.82|72.33|20.97|462.24|188.73|259.38|650.97|16.98|0.00|123.66|188.73|205.71|312.39|329.37|-70.65| +2452562|82677|2452623|17329|2199|133121|4043|37765|3979|20382|4978|35500|9|3|2|2|212|74|55|37.45|60.66|2.42|3203.20|133.10|2059.75|3336.30|10.64|0.00|700.15|133.10|143.74|833.25|843.89|-1926.65| +2452562|82677|2452623|14535|2199|133121|4043|37765|3979|20382|4978|35500|60|21|5|1|37|74|95|65.05|152.86|105.47|4502.05|10019.65|6179.75|14521.70|400.78|0.00|4501.10|10019.65|10420.43|14520.75|14921.53|3839.90| +2452562|82677|2452636|17859|2199|133121|4043|37765|3979|20382|4978|35500|36|12|7|3|69|74|14|30.69|57.69|29.42|395.78|411.88|429.66|807.66|1.44|267.72|104.86|144.16|145.60|249.02|250.46|-285.50| +2452562|82677|2452602|463|2199|133121|4043|37765|3979|20382|4978|35500|42|6|8|3|265|74|7|33.43|61.51|60.27|8.68|421.89|234.01|430.57|33.75|0.00|25.83|421.89|455.64|447.72|481.47|187.88| +2452562|82677|2452610|4521|2199|133121|4043|37765|3979|20382|4978|35500|57|19|8|4|140|74|93|89.92|267.06|197.62|6457.92|18378.66|8362.56|24836.58|1286.50|0.00|6456.99|18378.66|19665.16|24835.65|26122.15|10016.10| +2452562|82677|2452650|13027|2199|133121|4043|37765|3979|20382|4978|35500|7|6|15|4|83|74|93|57.52|95.48|79.24|1510.32|7369.32|5349.36|8879.64|221.07|0.00|1597.74|7369.32|7590.39|8967.06|9188.13|2019.96| +2452562|82677|2452592|4476|2199|133121|4043|37765|3979|20382|4978|35500|21|13|3|4|85|74|69|42.30|64.71|20.06|3080.85|1384.14|2918.70|4464.99|55.36|0.00|1160.58|1384.14|1439.50|2544.72|2600.08|-1534.56| +2452497|48409|2452592|15625|32727|170314|1054|28641|45134|1247619|5708|34095|3|1|10|4|148|75|28|28.67|73.68|26.52|1320.48|742.56|802.76|2063.04|14.85|0.00|267.96|742.56|757.41|1010.52|1025.37|-60.20| +2452497|48409|2452617|15531|32727|170314|1054|28641|45134|1247619|5708|34095|45|9|17|4|41|75|1|69.82|203.87|112.12|91.75|112.12|69.82|203.87|4.48|0.00|16.30|112.12|116.60|128.42|132.90|42.30| +2452497|48409|2452609|9804|32727|170314|1054|28641|45134|1247619|5708|34095|19|6|16|1|79|75|66|45.59|85.70|40.27|2998.38|2657.82|3008.94|5656.20|79.73|0.00|2036.10|2657.82|2737.55|4693.92|4773.65|-351.12| +2452497|48409|2452523|4812|32727|170314|1054|28641|45134|1247619|5708|34095|45|1|16|4|2|75|69|94.01|175.79|82.62|6428.73|5700.78|6486.69|12129.51|228.03|0.00|2304.60|5700.78|5928.81|8005.38|8233.41|-785.91| +2452497|48409|2452507|8593|32727|170314|1054|28641|45134|1247619|5708|34095|51|21|16|1|259|75|63|73.12|131.61|92.12|2487.87|5803.56|4606.56|8291.43|174.10|0.00|0.00|5803.56|5977.66|5803.56|5977.66|1197.00| +2452497|48409|2452556|7383|32727|170314|1054|28641|45134|1247619|5708|34095|60|15|19|5|198|75|5|41.65|61.64|31.43|151.05|157.15|208.25|308.20|1.57|0.00|86.25|157.15|158.72|243.40|244.97|-51.10| +2452497|48409|2452535|1533|32727|170314|1054|28641|45134|1247619|5708|34095|57|15|14|3|42|75|84|33.23|79.41|76.23|267.12|6403.32|2791.32|6670.44|192.09|0.00|1600.20|6403.32|6595.41|8003.52|8195.61|3612.00| +2452497|48409|2452513|5143|32727|170314|1054|28641|45134|1247619|5708|34095|55|9|5|2|139|75|85|67.81|85.44|78.60|581.40|6681.00|5763.85|7262.40|0.00|2872.83|144.50|3808.17|3808.17|3952.67|3952.67|-1955.68| +2452497|48409|2452548|9108|32727|170314|1054|28641|45134|1247619|5708|34095|25|24|11|3|272|75|84|17.84|28.72|26.42|193.20|2219.28|1498.56|2412.48|177.54|0.00|1157.52|2219.28|2396.82|3376.80|3554.34|720.72| +2451713|63167|2451791|2120|39792|761829|2619|44256|64598|42136|273|11110|14|7|10|1|22|76|27|2.88|8.29|5.63|71.82|152.01|77.76|223.83|9.12|0.00|89.37|152.01|161.13|241.38|250.50|74.25| +2451713|63167|2451768|10111|39792|761829|2619|44256|64598|42136|273|11110|25|17|15|1|154|76|47|45.92|56.02|44.81|526.87|2106.07|2158.24|2632.94|42.12|0.00|894.88|2106.07|2148.19|3000.95|3043.07|-52.17| +2451713|63167|2451769|17725|39792|761829|2619|44256|64598|42136|273|11110|31|23|8|4|120|76|3|95.48|220.55|134.53|258.06|403.59|286.44|661.65|20.17|0.00|165.39|403.59|423.76|568.98|589.15|117.15| +2451713|63167|2451736|10034|39792|761829|2619|44256|64598|42136|273|11110|44|2|11|5|239|76|95|44.80|51.07|24.51|2523.20|2328.45|4256.00|4851.65|23.28|0.00|2036.80|2328.45|2351.73|4365.25|4388.53|-1927.55| +2451713|63167|2451772|7556|39792|761829|2619|44256|64598|42136|273|11110|53|23|14|4|11|76|88|58.87|148.94|1.48|12976.48|130.24|5180.56|13106.72|6.51|0.00|5242.16|130.24|136.75|5372.40|5378.91|-5050.32| +2451713|63167|2451728|9931|39792|761829|2619|44256|64598|42136|273|11110|32|20|8|2|9|76|35|41.56|44.88|16.15|1005.55|565.25|1454.60|1570.80|39.56|0.00|251.30|565.25|604.81|816.55|856.11|-889.35| +2451713|63167|2451785|3104|39792|761829|2619|44256|64598|42136|273|11110|26|20|8|3|295|76|6|65.00|68.25|51.87|98.28|311.22|390.00|409.50|12.44|0.00|114.66|311.22|323.66|425.88|438.32|-78.78| +2451713|63167|2451804|10039|39792|761829|2619|44256|64598|42136|273|11110|19|13|7|4|51|76|85|80.56|170.78|35.86|11468.20|3048.10|6847.60|14516.30|91.44|0.00|1741.65|3048.10|3139.54|4789.75|4881.19|-3799.50| +2451415|58912|2451496|5114|21966|1889753|3140|18927|22618|1818536|4688|14875|1|14|5|2|59|77|81|23.54|27.54|1.10|2141.64|89.10|1906.74|2230.74|2.67|0.00|780.03|89.10|91.77|869.13|871.80|-1817.64| +2451415|58912|2451489|11374|21966|1889753|3140|18927|22618|1818536|4688|14875|34|28|15|5|195|77|99|10.71|17.99|2.15|1568.16|212.85|1060.29|1781.01|14.89|0.00|462.33|212.85|227.74|675.18|690.07|-847.44| +2451415|58912|2451485|14284|21966|1889753|3140|18927|22618|1818536|4688|14875|43|20|10|2|151|77|19|39.97|52.76|3.16|942.40|60.04|759.43|1002.44|1.80|0.00|240.54|60.04|61.84|300.58|302.38|-699.39| +2451415|58912|2451524|7711|21966|1889753|3140|18927|22618|1818536|4688|14875|46|13|3|1|272|77|86|29.63|37.63|36.50|97.18|3139.00|2548.18|3236.18|251.12|0.00|420.54|3139.00|3390.12|3559.54|3810.66|590.82| +2451415|58912|2451535|8974|21966|1889753|3140|18927|22618|1818536|4688|14875|14|7|3|4|158|77|22|6.18|18.10|10.31|171.38|226.82|135.96|398.20|13.60|0.00|55.66|226.82|240.42|282.48|296.08|90.86| +2451415|58912|2451479|13370|21966|1889753|3140|18927|22618|1818536|4688|14875|13|20|5|4|293|77|44|96.31|276.40|38.69|10459.24|1702.36|4237.64|12161.60|85.11|0.00|4986.08|1702.36|1787.47|6688.44|6773.55|-2535.28| +2451415|58912|2451490|13900|21966|1889753|3140|18927|22618|1818536|4688|14875|32|1|12|1|87|77|45|2.78|3.36|0.70|119.70|31.50|125.10|151.20|1.89|0.00|10.35|31.50|33.39|41.85|43.74|-93.60| +2451415|58912|2451509|2014|21966|1889753|3140|18927|22618|1818536|4688|14875|46|2|10|5|213|77|11|71.24|213.00|176.79|398.31|1944.69|783.64|2343.00|155.57|0.00|984.06|1944.69|2100.26|2928.75|3084.32|1161.05| +2451415|58912|2451531|16210|21966|1889753|3140|18927|22618|1818536|4688|14875|37|19|1|2|216|77|12|99.79|237.50|232.75|57.00|2793.00|1197.48|2850.00|195.51|0.00|826.44|2793.00|2988.51|3619.44|3814.95|1595.52| +2451415|58912|2451437|16700|21966|1889753|3140|18927|22618|1818536|4688|14875|31|14|20|4|111|77|39|3.73|5.52|3.80|67.08|148.20|145.47|215.28|2.96|0.00|88.14|148.20|151.16|236.34|239.30|2.73| +2451415|58912|2451454|4490|21966|1889753|3140|18927|22618|1818536|4688|14875|7|10|18|2|259|77|89|30.01|33.01|29.04|353.33|2584.56|2670.89|2937.89|25.84|0.00|646.14|2584.56|2610.40|3230.70|3256.54|-86.33| +2451415|58912|2451478|13081|21966|1889753|3140|18927|22618|1818536|4688|14875|22|4|14|3|239|77|76|78.34|219.35|24.12|14837.48|1833.12|5953.84|16670.60|54.99|0.00|2666.84|1833.12|1888.11|4499.96|4554.95|-4120.72| +2451415|58912|2451434|14827|21966|1889753|3140|18927|22618|1818536|4688|14875|28|25|1|4|37|77|82|25.18|33.99|16.65|1421.88|1365.30|2064.76|2787.18|95.57|0.00|1281.66|1365.30|1460.87|2646.96|2742.53|-699.46| +2451415|58912|2451433|6271|21966|1889753|3140|18927|22618|1818536|4688|14875|44|2|8|2|133|77|37|71.18|170.12|134.39|1322.01|4972.43|2633.66|6294.44|99.44|0.00|2580.38|4972.43|5071.87|7552.81|7652.25|2338.77| +2451415|58912|2451432|8536|21966|1889753|3140|18927|22618|1818536|4688|14875|37|1|13|3|60|77|82|62.59|78.23|63.36|1219.34|5195.52|5132.38|6414.86|0.00|0.00|833.12|5195.52|5195.52|6028.64|6028.64|63.14| +2452521|43762|2452588|14743|45554|22294|3481|21421|54274|489532|4135|45322|31|6|7|1|225|78|79|64.22|151.55|25.76|9937.41|2035.04|5073.38|11972.45|142.45|0.00|4668.90|2035.04|2177.49|6703.94|6846.39|-3038.34| +2452521|43762|2452533|13944|45554|22294|3481|21421|54274|489532|4135|45322|42|18|7|3|26|78|37|97.45|277.73|272.17|205.72|10070.29|3605.65|10276.01|402.81|0.00|2157.84|10070.29|10473.10|12228.13|12630.94|6464.64| +2452521|43762|2452572|12499|45554|22294|3481|21421|54274|489532|4135|45322|49|30|12|2|232|78|93|80.37|111.71|82.66|2701.65|7687.38|7474.41|10389.03|0.00|0.00|3843.69|7687.38|7687.38|11531.07|11531.07|212.97| +2452521|43762|2452581|14359|45554|22294|3481|21421|54274|489532|4135|45322|3|21|13|2|84|78|63|93.71|236.14|226.69|595.35|14281.47|5903.73|14876.82|856.88|0.00|4164.93|14281.47|15138.35|18446.40|19303.28|8377.74| +2452521|43762|2452523|7284|45554|22294|3481|21421|54274|489532|4135|45322|31|7|12|5|35|78|14|70.49|143.79|4.31|1952.72|60.34|986.86|2013.06|0.00|0.00|140.84|60.34|60.34|201.18|201.18|-926.52| +2452521|43762|2452561|17269|45554|22294|3481|21421|54274|489532|4135|45322|3|1|13|2|171|78|22|58.15|126.18|105.99|444.18|2331.78|1279.30|2775.96|93.27|0.00|860.42|2331.78|2425.05|3192.20|3285.47|1052.48| +2452521|43762|2452538|1917|45554|22294|3481|21421|54274|489532|4135|45322|18|1|10|2|141|78|100|43.66|55.44|40.47|1497.00|4047.00|4366.00|5544.00|21.85|2954.31|1275.00|1092.69|1114.54|2367.69|2389.54|-3273.31| +2452521|43762|2452564|1554|45554|22294|3481|21421|54274|489532|4135|45322|48|30|19|3|4|78|69|11.85|31.40|26.37|347.07|1819.53|817.65|2166.60|37.84|873.37|563.04|946.16|984.00|1509.20|1547.04|128.51| +2452521|43762|2452597|11617|45554|22294|3481|21421|54274|489532|4135|45322|21|1|18|3|8|78|22|52.48|94.46|23.61|1558.70|519.42|1154.56|2078.12|10.38|0.00|124.52|519.42|529.80|643.94|654.32|-635.14| +2452521|43762|2452617|4495|45554|22294|3481|21421|54274|489532|4135|45322|1|19|2|1|203|78|72|72.49|138.45|34.61|7476.48|2491.92|5219.28|9968.40|0.00|0.00|2391.84|2491.92|2491.92|4883.76|4883.76|-2727.36| +2452521|43762|2452534|10669|45554|22294|3481|21421|54274|489532|4135|45322|30|24|9|4|236|78|77|40.98|86.05|63.67|1723.26|4902.59|3155.46|6625.85|392.20|0.00|662.20|4902.59|5294.79|5564.79|5956.99|1747.13| +2452521|43762|2452526|15780|45554|22294|3481|21421|54274|489532|4135|45322|21|13|3|2|288|78|83|64.71|110.00|38.50|5934.50|3195.50|5370.93|9130.00|63.91|0.00|2647.70|3195.50|3259.41|5843.20|5907.11|-2175.43| +2452521|43762|2452580|17544|45554|22294|3481|21421|54274|489532|4135|45322|54|25|2|3|227|78|26|66.54|135.07|109.40|667.42|2844.40|1730.04|3511.82|113.77|0.00|1545.18|2844.40|2958.17|4389.58|4503.35|1114.36| +2451535|77199|2451618|17995|81942|173188|4787|46833|81942|173188|4787|46833|58|28|10|5|270|79|72|67.23|201.01|116.58|6078.96|8393.76|4840.56|14472.72|587.56|0.00|6078.24|8393.76|8981.32|14472.00|15059.56|3553.20| +2451535|77199|2451581|2270|81942|173188|4787|46833|81942|173188|4787|46833|34|20|11|4|184|79|80|31.13|75.33|33.89|3315.20|2711.20|2490.40|6026.40|46.36|2196.07|360.80|515.13|561.49|875.93|922.29|-1975.27| +2451535|77199|2451624|1574|81942|173188|4787|46833|81942|173188|4787|46833|55|4|8|1|131|79|24|23.39|68.76|24.06|1072.80|577.44|561.36|1650.24|34.64|0.00|330.00|577.44|612.08|907.44|942.08|16.08| +2451535|77199|2451590|8932|81942|173188|4787|46833|81942|173188|4787|46833|7|1|11|3|195|79|21|31.41|78.21|43.79|722.82|919.59|659.61|1642.41|18.39|0.00|738.99|919.59|937.98|1658.58|1676.97|259.98| +2451535|77199|2451541|6610|81942|173188|4787|46833|81942|173188|4787|46833|22|20|20|4|188|79|15|25.21|41.59|28.69|193.50|430.35|378.15|623.85|0.00|0.00|162.15|430.35|430.35|592.50|592.50|52.20| +2451535|77199|2451609|7684|81942|173188|4787|46833|81942|173188|4787|46833|26|20|18|5|62|79|35|36.43|42.25|27.04|532.35|946.40|1275.05|1478.75|10.22|690.87|428.75|255.53|265.75|684.28|694.50|-1019.52| +2451535|77199|2451592|2456|81942|173188|4787|46833|81942|173188|4787|46833|55|14|18|3|195|79|10|28.97|57.36|0.57|567.90|5.70|289.70|573.60|0.28|0.00|57.30|5.70|5.98|63.00|63.28|-284.00| +2451535|77199|2451562|16660|81942|173188|4787|46833|81942|173188|4787|46833|1|13|16|5|214|79|70|12.83|22.45|20.87|110.60|1460.90|898.10|1571.50|14.60|0.00|314.30|1460.90|1475.50|1775.20|1789.80|562.80| +2451535|77199|2451619|1046|81942|173188|4787|46833|81942|173188|4787|46833|58|8|10|5|193|79|56|35.44|81.51|51.35|1688.96|2875.60|1984.64|4564.56|172.53|0.00|365.12|2875.60|3048.13|3240.72|3413.25|890.96| +2451535|77199|2451619|15106|81942|173188|4787|46833|81942|173188|4787|46833|1|14|18|3|38|79|91|42.84|80.53|33.82|4250.61|3077.62|3898.44|7328.23|75.70|553.97|2197.65|2523.65|2599.35|4721.30|4797.00|-1374.79| +2451535|77199|2451627|5564|81942|173188|4787|46833|81942|173188|4787|46833|14|25|11|1|111|79|74|12.01|32.42|7.45|1847.78|551.30|888.74|2399.08|19.29|165.39|695.60|385.91|405.20|1081.51|1100.80|-502.83| +2451535|77199|2451649|6667|81942|173188|4787|46833|81942|173188|4787|46833|16|19|8|4|57|79|79|42.16|86.00|4.30|6454.30|339.70|3330.64|6794.00|20.38|0.00|2649.66|339.70|360.08|2989.36|3009.74|-2990.94| +2451535|77199|2451647|12658|81942|173188|4787|46833|81942|173188|4787|46833|8|19|5|5|55|79|35|20.50|38.33|18.39|697.90|643.65|717.50|1341.55|10.04|476.30|80.15|167.35|177.39|247.50|257.54|-550.15| +2451535|77199|2451546|6452|81942|173188|4787|46833|81942|173188|4787|46833|28|14|1|4|77|79|55|50.17|110.37|86.08|1335.95|4734.40|2759.35|6070.35|426.09|0.00|1881.55|4734.40|5160.49|6615.95|7042.04|1975.05| +2450945|18919|2451064|10981|35692|452928|1811|48647|19010|1843359|2849|21685|37|28|11|2|123|80|73|81.35|159.44|28.69|9544.75|2094.37|5938.55|11639.12|18.63|230.38|3491.59|1863.99|1882.62|5355.58|5374.21|-4074.56| +2450945|18919|2450967|3040|35692|452928|1811|48647|19010|1843359|2849|21685|44|10|6|4|232|80|96|87.24|199.77|75.91|11890.56|7287.36|8375.04|19177.92|364.36|0.00|8246.40|7287.36|7651.72|15533.76|15898.12|-1087.68| +2450945|18919|2451006|16549|35692|452928|1811|48647|19010|1843359|2849|21685|1|25|5|2|229|80|18|90.24|158.82|115.93|772.02|2086.74|1624.32|2858.76|83.46|0.00|514.44|2086.74|2170.20|2601.18|2684.64|462.42| +2450945|18919|2450977|16306|35692|452928|1811|48647|19010|1843359|2849|21685|40|25|8|5|72|80|25|87.00|94.83|62.58|806.25|1564.50|2175.00|2370.75|62.58|0.00|237.00|1564.50|1627.08|1801.50|1864.08|-610.50| +2450945|18919|2451004|7606|35692|452928|1811|48647|19010|1843359|2849|21685|14|2|6|3|127|80|79|31.76|58.43|32.72|2031.09|2584.88|2509.04|4615.97|180.94|0.00|1107.58|2584.88|2765.82|3692.46|3873.40|75.84| +2450945|18919|2451060|17500|35692|452928|1811|48647|19010|1843359|2849|21685|50|7|15|1|194|80|90|11.50|29.09|11.34|1597.50|1020.60|1035.00|2618.10|81.64|0.00|314.10|1020.60|1102.24|1334.70|1416.34|-14.40| +2450945|18919|2450982|8419|35692|452928|1811|48647|19010|1843359|2849|21685|55|25|18|3|215|80|30|91.66|210.81|8.43|6071.40|252.90|2749.80|6324.30|10.11|0.00|2466.30|252.90|263.01|2719.20|2729.31|-2496.90| +2450945|18919|2451001|11504|35692|452928|1811|48647|19010|1843359|2849|21685|32|14|9|5|258|80|3|41.78|98.18|52.03|138.45|156.09|125.34|294.54|2.34|39.02|55.95|117.07|119.41|173.02|175.36|-8.27| +2450945|18919|2450966|8362|35692|452928|1811|48647|19010|1843359|2849|21685|37|13|5|5|128|80|76|1.01|1.23|0.25|74.48|19.00|76.76|93.48|0.76|0.00|46.36|19.00|19.76|65.36|66.12|-57.76| +2450945|18919|2450973|17227|35692|452928|1811|48647|19010|1843359|2849|21685|58|28|13|3|203|80|14|13.25|34.45|16.88|245.98|236.32|185.50|482.30|18.90|0.00|67.48|236.32|255.22|303.80|322.70|50.82| +2451499|69985|2451532|14104|99295|784813|5531|20202|23185|261525|5556|26274|1|1|1|3|218|81|55|48.37|92.38|9.23|4573.25|507.65|2660.35|5080.90|34.11|20.30|0.00|487.35|521.46|487.35|521.46|-2173.00| +2451499|69985|2451512|17002|99295|784813|5531|20202|23185|261525|5556|26274|7|14|5|2|126|81|100|76.39|176.46|155.28|2118.00|15528.00|7639.00|17646.00|621.12|0.00|2470.00|15528.00|16149.12|17998.00|18619.12|7889.00| +2451499|69985|2451529|4855|99295|784813|5531|20202|23185|261525|5556|26274|8|4|11|2|170|81|31|29.79|51.23|32.27|587.76|1000.37|923.49|1588.13|70.02|0.00|476.16|1000.37|1070.39|1476.53|1546.55|76.88| +2451499|69985|2451506|4369|99295|784813|5531|20202|23185|261525|5556|26274|4|7|18|4|60|81|59|88.07|226.33|43.00|10816.47|2537.00|5196.13|13353.47|0.00|0.00|2269.73|2537.00|2537.00|4806.73|4806.73|-2659.13| +2451499|69985|2451549|16040|99295|784813|5531|20202|23185|261525|5556|26274|34|4|18|5|115|81|36|42.03|82.37|7.41|2698.56|266.76|1513.08|2965.32|18.67|0.00|504.00|266.76|285.43|770.76|789.43|-1246.32| +2451499|69985|2451523|17599|99295|784813|5531|20202|23185|261525|5556|26274|50|14|20|5|277|81|7|48.19|143.60|63.18|562.94|442.26|337.33|1005.20|13.26|0.00|60.27|442.26|455.52|502.53|515.79|104.93| +2451499|69985|2451603|10174|99295|784813|5531|20202|23185|261525|5556|26274|19|2|14|1|151|81|56|67.76|84.02|21.84|3482.08|1223.04|3794.56|4705.12|97.84|0.00|1505.28|1223.04|1320.88|2728.32|2826.16|-2571.52| +2451499|69985|2451519|16180|99295|784813|5531|20202|23185|261525|5556|26274|44|28|17|4|111|81|8|32.81|95.80|45.98|398.56|367.84|262.48|766.40|22.07|0.00|383.20|367.84|389.91|751.04|773.11|105.36| +2451499|69985|2451547|10978|99295|784813|5531|20202|23185|261525|5556|26274|16|22|5|3|28|81|22|6.87|12.84|1.54|248.60|33.88|151.14|282.48|1.01|0.00|104.50|33.88|34.89|138.38|139.39|-117.26| +2451499|69985|2451588|10832|99295|784813|5531|20202|23185|261525|5556|26274|25|1|6|4|272|81|71|61.18|115.63|35.84|5665.09|2544.64|4343.78|8209.73|0.00|0.00|1231.14|2544.64|2544.64|3775.78|3775.78|-1799.14| +2451499|69985|2451505|10066|99295|784813|5531|20202|23185|261525|5556|26274|10|19|17|4|181|81|62|22.20|48.84|33.21|969.06|2059.02|1376.40|3028.08|0.00|0.00|1392.52|2059.02|2059.02|3451.54|3451.54|682.62| +2451499|69985|2451543|2539|99295|784813|5531|20202|23185|261525|5556|26274|55|13|6|5|34|81|18|28.74|57.76|46.78|197.64|842.04|517.32|1039.68|16.84|0.00|72.72|842.04|858.88|914.76|931.60|324.72| +2451499|69985|2451572|17101|99295|784813|5531|20202|23185|261525|5556|26274|37|16|12|2|182|81|71|32.15|86.16|18.95|4771.91|1345.45|2282.65|6117.36|107.63|0.00|672.37|1345.45|1453.08|2017.82|2125.45|-937.20| +2451499|69985|2451547|15265|99295|784813|5531|20202|23185|261525|5556|26274|14|19|12|4|129|81|97|82.95|181.66|167.12|1410.38|16210.64|8046.15|17621.02|1296.85|0.00|1584.98|16210.64|17507.49|17795.62|19092.47|8164.49| +2452050|48249|2452132|11503|55611|301065|119|31126|37013|61520|2288|9695|1|13|13|2|168|82|84|75.43|136.52|135.15|115.08|11352.60|6336.12|11467.68|234.99|8741.50|1031.52|2611.10|2846.09|3642.62|3877.61|-3725.02| +2452050|48249|2452147|5983|55611|301065|119|31126|37013|61520|2288|9695|35|11|17|3|39|82|75|88.75|118.03|86.16|2390.25|6462.00|6656.25|8852.25|323.10|0.00|3275.25|6462.00|6785.10|9737.25|10060.35|-194.25| +2452050|48249|2452136|4559|55611|301065|119|31126|37013|61520|2288|9695|29|17|10|1|155|82|62|79.36|161.10|16.11|8989.38|998.82|4920.32|9988.20|59.92|0.00|2396.92|998.82|1058.74|3395.74|3455.66|-3921.50| +2452050|48249|2452067|2393|55611|301065|119|31126|37013|61520|2288|9695|11|17|9|2|272|82|4|21.44|41.80|3.76|152.16|15.04|85.76|167.20|0.67|1.50|15.04|13.54|14.21|28.58|29.25|-72.22| +2452050|48249|2452132|10725|55611|301065|119|31126|37013|61520|2288|9695|51|1|16|1|136|82|55|29.56|54.09|48.68|297.55|2677.40|1625.80|2974.95|26.77|0.00|178.20|2677.40|2704.17|2855.60|2882.37|1051.60| +2452050|48249|2452161|14371|55611|301065|119|31126|37013|61520|2288|9695|55|3|9|1|233|82|71|11.34|30.16|25.33|342.93|1798.43|805.14|2141.36|143.87|0.00|770.35|1798.43|1942.30|2568.78|2712.65|993.29| +2452050|48249|2452156|2003|55611|301065|119|31126|37013|61520|2288|9695|13|13|7|4|44|82|87|70.32|82.27|76.51|501.12|6656.37|6117.84|7157.49|532.50|0.00|286.23|6656.37|7188.87|6942.60|7475.10|538.53| +2452050|48249|2452075|17851|55611|301065|119|31126|37013|61520|2288|9695|33|19|6|4|65|82|96|43.73|98.82|70.16|2751.36|6735.36|4198.08|9486.72|67.35|0.00|284.16|6735.36|6802.71|7019.52|7086.87|2537.28| +2452050|48249|2452085|6651|55611|301065|119|31126|37013|61520|2288|9695|17|9|1|2|83|82|21|17.57|18.97|8.91|211.26|187.11|368.97|398.37|3.74|0.00|159.18|187.11|190.85|346.29|350.03|-181.86| +2452050|48249|2452121|3715|55611|301065|119|31126|37013|61520|2288|9695|33|7|1|3|85|82|52|30.23|44.43|21.32|1201.72|1108.64|1571.96|2310.36|0.00|0.00|530.92|1108.64|1108.64|1639.56|1639.56|-463.32| +2452050|48249|2452079|13589|55611|301065|119|31126|37013|61520|2288|9695|3|5|7|3|299|82|61|50.15|117.85|56.56|3738.69|3450.16|3059.15|7188.85|310.51|0.00|1725.08|3450.16|3760.67|5175.24|5485.75|391.01| +2452339|12892|2452404|14904|2983|359033|683|37533|64757|1356958|4530|580|21|30|16|2|18|83|43|54.51|104.11|5.20|4253.13|223.60|2343.93|4476.73|0.00|0.00|402.48|223.60|223.60|626.08|626.08|-2120.33| +2452339|12892|2452342|15805|2983|359033|683|37533|64757|1356958|4530|580|1|1|11|3|98|83|25|34.43|40.62|9.74|772.00|243.50|860.75|1015.50|19.48|0.00|111.50|243.50|262.98|355.00|374.48|-617.25| +2452339|12892|2452430|12426|2983|359033|683|37533|64757|1356958|4530|580|36|7|17|3|269|83|54|56.58|92.22|9.22|4482.00|497.88|3055.32|4979.88|5.92|413.24|547.56|84.64|90.56|632.20|638.12|-2970.68| +2452339|12892|2452428|6852|2983|359033|683|37533|64757|1356958|4530|580|55|9|9|3|70|83|54|84.72|166.05|146.12|1076.22|7890.48|4574.88|8966.70|0.00|0.00|3945.24|7890.48|7890.48|11835.72|11835.72|3315.60| +2452339|12892|2452396|6093|2983|359033|683|37533|64757|1356958|4530|580|25|7|15|1|60|83|36|8.38|16.34|1.63|529.56|58.68|301.68|588.24|1.17|0.00|182.16|58.68|59.85|240.84|242.01|-243.00| +2452339|12892|2452450|4315|2983|359033|683|37533|64757|1356958|4530|580|42|18|20|3|26|83|73|18.35|40.18|29.33|792.05|2141.09|1339.55|2933.14|85.64|0.00|1289.91|2141.09|2226.73|3431.00|3516.64|801.54| +2452339|12892|2452391|5802|2983|359033|683|37533|64757|1356958|4530|580|7|1|5|4|186|83|97|49.55|111.98|6.71|10211.19|650.87|4806.35|10862.06|52.06|0.00|2280.47|650.87|702.93|2931.34|2983.40|-4155.48| +2452339|12892|2452422|9583|2983|359033|683|37533|64757|1356958|4530|580|1|15|2|4|216|83|46|85.54|205.29|192.97|566.72|8876.62|3934.84|9443.34|56.81|8166.49|2455.02|710.13|766.94|3165.15|3221.96|-3224.71| +2452339|12892|2452412|11775|2983|359033|683|37533|64757|1356958|4530|580|39|9|20|5|110|83|71|67.93|91.70|79.77|847.03|5663.67|4823.03|6510.70|0.00|0.00|1366.75|5663.67|5663.67|7030.42|7030.42|840.64| +2452339|12892|2452445|17749|2983|359033|683|37533|64757|1356958|4530|580|49|1|10|1|252|83|58|72.32|90.40|5.42|4928.84|314.36|4194.56|5243.20|0.00|216.90|733.70|97.46|97.46|831.16|831.16|-4097.10| +2452339|12892|2452411|1311|2983|359033|683|37533|64757|1356958|4530|580|43|15|17|3|289|83|82|86.28|258.84|10.35|20376.18|848.70|7074.96|21224.88|0.00|0.00|2546.92|848.70|848.70|3395.62|3395.62|-6226.26| +2452339|12892|2452374|10374|2983|359033|683|37533|64757|1356958|4530|580|60|24|17|4|191|83|68|47.61|111.40|83.55|1893.80|5681.40|3237.48|7575.20|454.51|0.00|757.52|5681.40|6135.91|6438.92|6893.43|2443.92| +2452339|12892|2452382|4753|2983|359033|683|37533|64757|1356958|4530|580|43|13|15|5|255|83|60|7.96|15.44|11.42|241.20|685.20|477.60|926.40|0.00|0.00|259.20|685.20|685.20|944.40|944.40|207.60| +2452339|12892|2452453|9564|2983|359033|683|37533|64757|1356958|4530|580|39|12|12|3|204|83|25|24.87|51.97|42.61|234.00|1065.25|621.75|1299.25|95.87|0.00|38.75|1065.25|1161.12|1104.00|1199.87|443.50| +2451121|45872|2451129|10498|36671|1428748|25|3702|22184|1122252|5580|10057|52|10|12|3|227|84|85|49.82|93.16|19.56|6256.00|1662.60|4234.70|7918.60|83.13|0.00|3959.30|1662.60|1745.73|5621.90|5705.03|-2572.10| +2451121|45872|2451233|13384|36671|1428748|25|3702|22184|1122252|5580|10057|22|20|20|4|218|84|50|24.08|58.51|18.13|2019.00|906.50|1204.00|2925.50|63.45|0.00|1023.50|906.50|969.95|1930.00|1993.45|-297.50| +2451121|45872|2451239|5200|36671|1428748|25|3702|22184|1122252|5580|10057|1|2|16|2|118|84|31|90.76|258.66|82.77|5452.59|2565.87|2813.56|8018.46|101.60|25.65|2405.29|2540.22|2641.82|4945.51|5047.11|-273.34| +2451121|45872|2451137|5443|36671|1428748|25|3702|22184|1122252|5580|10057|19|8|10|2|117|84|24|40.12|52.95|48.18|114.48|1156.32|962.88|1270.80|46.25|0.00|152.40|1156.32|1202.57|1308.72|1354.97|193.44| +2451121|45872|2451240|17638|36671|1428748|25|3702|22184|1122252|5580|10057|40|13|20|1|129|84|60|30.58|78.28|33.66|2677.20|2019.60|1834.80|4696.80|161.56|0.00|281.40|2019.60|2181.16|2301.00|2462.56|184.80| +2451121|45872|2451122|8791|36671|1428748|25|3702|22184|1122252|5580|10057|14|22|19|1|93|84|94|55.83|122.26|61.13|5746.22|5746.22|5248.02|11492.44|459.69|0.00|1493.66|5746.22|6205.91|7239.88|7699.57|498.20| +2451121|45872|2451163|13981|36671|1428748|25|3702|22184|1122252|5580|10057|38|28|10|2|277|84|98|29.69|35.33|25.08|1004.50|2457.84|2909.62|3462.34|49.15|0.00|830.06|2457.84|2506.99|3287.90|3337.05|-451.78| +2451121|45872|2451188|16586|36671|1428748|25|3702|22184|1122252|5580|10057|55|20|7|3|156|84|37|17.19|27.84|14.75|484.33|545.75|636.03|1030.08|5.45|0.00|185.37|545.75|551.20|731.12|736.57|-90.28| +2451121|45872|2451234|10358|36671|1428748|25|3702|22184|1122252|5580|10057|50|20|3|5|17|84|93|31.26|34.07|32.02|190.65|2977.86|2907.18|3168.51|59.55|0.00|728.19|2977.86|3037.41|3706.05|3765.60|70.68| +2451121|45872|2451234|4436|36671|1428748|25|3702|22184|1122252|5580|10057|2|19|5|3|78|84|61|10.28|28.98|8.40|1255.38|512.40|627.08|1767.78|25.82|143.47|300.12|368.93|394.75|669.05|694.87|-258.15| +2451121|45872|2451234|3698|36671|1428748|25|3702|22184|1122252|5580|10057|20|26|20|1|249|84|29|26.12|39.18|12.14|784.16|352.06|757.48|1136.22|17.60|0.00|420.21|352.06|369.66|772.27|789.87|-405.42| +2452497|65461|2452533|3763|96461|1344599|737|5275|76678|1083332|6889|17027|27|25|15|4|266|85|27|54.20|115.98|92.78|626.40|2505.06|1463.40|3131.46|40.58|1828.69|406.89|676.37|716.95|1083.26|1123.84|-787.03| +2452497|65461|2452557|2407|96461|1344599|737|5275|76678|1083332|6889|17027|60|30|20|5|180|85|29|15.04|29.92|15.55|416.73|450.95|436.16|867.68|31.56|0.00|407.74|450.95|482.51|858.69|890.25|14.79| +2452497|65461|2452502|6225|96461|1344599|737|5275|76678|1083332|6889|17027|3|1|20|4|208|85|33|90.72|192.32|151.93|1332.87|5013.69|2993.76|6346.56|0.00|0.00|2855.82|5013.69|5013.69|7869.51|7869.51|2019.93| +2452497|65461|2452558|6987|96461|1344599|737|5275|76678|1083332|6889|17027|9|19|15|5|62|85|91|3.87|7.23|4.04|290.29|367.64|352.17|657.93|33.08|0.00|203.84|367.64|400.72|571.48|604.56|15.47| +2452497|65461|2452541|11436|96461|1344599|737|5275|76678|1083332|6889|17027|42|24|3|4|262|85|26|65.75|75.61|51.41|629.20|1336.66|1709.50|1965.86|80.19|0.00|963.04|1336.66|1416.85|2299.70|2379.89|-372.84| +2452497|65461|2452510|7419|96461|1344599|737|5275|76678|1083332|6889|17027|36|18|7|3|26|85|9|70.40|119.68|119.68|0.00|1077.12|633.60|1077.12|64.62|0.00|387.72|1077.12|1141.74|1464.84|1529.46|443.52| +2452497|65461|2452546|9234|96461|1344599|737|5275|76678|1083332|6889|17027|9|21|20|1|52|85|76|23.72|36.29|29.75|497.04|2261.00|1802.72|2758.04|158.27|0.00|1241.08|2261.00|2419.27|3502.08|3660.35|458.28| +2452497|65461|2452522|13327|96461|1344599|737|5275|76678|1083332|6889|17027|24|7|16|3|130|85|57|62.93|173.68|145.89|1584.03|8315.73|3587.01|9899.76|131.38|1746.30|4850.70|6569.43|6700.81|11420.13|11551.51|2982.42| +2452497|65461|2452565|5881|96461|1344599|737|5275|76678|1083332|6889|17027|25|21|9|5|208|85|35|85.68|231.33|106.41|4372.20|3724.35|2998.80|8096.55|37.24|0.00|1052.45|3724.35|3761.59|4776.80|4814.04|725.55| +2452497|65461|2452504|3465|96461|1344599|737|5275|76678|1083332|6889|17027|15|18|20|3|109|85|7|16.15|44.41|18.20|183.47|127.40|113.05|310.87|10.19|0.00|6.16|127.40|137.59|133.56|143.75|14.35| +2452497|65461|2452504|7290|96461|1344599|737|5275|76678|1083332|6889|17027|60|24|17|4|11|85|69|98.55|111.36|16.70|6531.54|1152.30|6799.95|7683.84|11.52|0.00|2151.42|1152.30|1163.82|3303.72|3315.24|-5647.65| +2452497|65461|2452534|9801|96461|1344599|737|5275|76678|1083332|6889|17027|13|19|13|1|19|85|58|78.73|187.37|67.45|6955.36|3912.10|4566.34|10867.46|195.60|0.00|3477.10|3912.10|4107.70|7389.20|7584.80|-654.24| +2452497|65461|2452507|7959|96461|1344599|737|5275|76678|1083332|6889|17027|21|7|10|1|149|85|45|35.10|74.06|46.65|1233.45|2099.25|1579.50|3332.70|0.00|1196.57|1133.10|902.68|902.68|2035.78|2035.78|-676.82| +2452497|65461|2452581|4401|96461|1344599|737|5275|76678|1083332|6889|17027|7|30|19|3|237|85|53|75.46|141.11|118.53|1196.74|6282.09|3999.38|7478.83|56.53|4397.46|3514.96|1884.63|1941.16|5399.59|5456.12|-2114.75| +2451408|62038|2451502|3448|21094|1129773|5299|42378|21094|1129773|5299|42378|55|14|8|5|285|86|25|72.25|137.99|91.07|1173.00|2276.75|1806.25|3449.75|85.37|569.18|1724.75|1707.57|1792.94|3432.32|3517.69|-98.68| +2451408|62038|2451491|15367|21094|1129773|5299|42378|21094|1129773|5299|42378|55|13|13|2|108|86|29|83.60|181.41|14.51|4840.10|420.79|2424.40|5260.89|37.87|0.00|1052.12|420.79|458.66|1472.91|1510.78|-2003.61| +2451408|62038|2451525|16273|21094|1129773|5299|42378|21094|1129773|5299|42378|52|16|1|3|15|86|98|16.66|17.65|3.53|1383.76|345.94|1632.68|1729.70|0.00|0.00|414.54|345.94|345.94|760.48|760.48|-1286.74| +2451408|62038|2451427|3241|21094|1129773|5299|42378|21094|1129773|5299|42378|58|2|4|1|248|86|4|79.84|216.36|205.54|43.28|822.16|319.36|865.44|49.32|0.00|86.52|822.16|871.48|908.68|958.00|502.80| +2451408|62038|2451502|8605|21094|1129773|5299|42378|21094|1129773|5299|42378|38|1|9|2|25|86|86|83.21|232.15|71.96|13776.34|6188.56|7156.06|19964.90|183.80|4146.33|6587.60|2042.23|2226.03|8629.83|8813.63|-5113.83| +2451408|62038|2451461|3092|21094|1129773|5299|42378|21094|1129773|5299|42378|43|22|12|5|185|86|41|80.96|235.59|179.04|2318.55|7340.64|3319.36|9659.19|293.62|0.00|4443.17|7340.64|7634.26|11783.81|12077.43|4021.28| +2451408|62038|2451443|8834|21094|1129773|5299|42378|21094|1129773|5299|42378|43|14|14|5|116|86|53|56.87|79.04|32.40|2471.92|1717.20|3014.11|4189.12|137.37|0.00|1633.46|1717.20|1854.57|3350.66|3488.03|-1296.91| +2451408|62038|2451466|17228|21094|1129773|5299|42378|21094|1129773|5299|42378|10|26|5|3|234|86|76|37.99|94.59|33.10|4673.24|2515.60|2887.24|7188.84|50.31|0.00|430.92|2515.60|2565.91|2946.52|2996.83|-371.64| +2451408|62038|2451477|9988|21094|1129773|5299|42378|21094|1129773|5299|42378|55|20|4|5|163|86|30|90.13|228.93|169.40|1785.90|5082.00|2703.90|6867.90|204.29|1677.06|3090.30|3404.94|3609.23|6495.24|6699.53|701.04| +2451408|62038|2451453|16633|21094|1129773|5299|42378|21094|1129773|5299|42378|40|14|15|2|239|86|92|29.54|76.50|35.95|3730.60|3307.40|2717.68|7038.00|297.66|0.00|1336.76|3307.40|3605.06|4644.16|4941.82|589.72| +2451408|62038|2451497|16057|21094|1129773|5299|42378|21094|1129773|5299|42378|1|4|2|4|293|86|33|76.59|229.77|156.24|2426.49|5155.92|2527.47|7582.41|257.79|0.00|1743.72|5155.92|5413.71|6899.64|7157.43|2628.45| +2451408|62038|2451437|13754|21094|1129773|5299|42378|21094|1129773|5299|42378|20|10|1|4|104|86|19|73.94|158.23|129.74|541.31|2465.06|1404.86|3006.37|98.60|0.00|691.41|2465.06|2563.66|3156.47|3255.07|1060.20| +2451408|62038|2451436|14476|21094|1129773|5299|42378|21094|1129773|5299|42378|13|13|20|5|30|86|71|5.85|10.53|10.10|30.53|717.10|415.35|747.63|50.19|0.00|246.37|717.10|767.29|963.47|1013.66|301.75| +2452050|17840|2452089|927|49208|175411|6414|25017|84577|1855388|1626|43076|57|19|11|2|283|87|46|42.65|46.48|42.29|192.74|1945.34|1961.90|2138.08|77.81|0.00|277.84|1945.34|2023.15|2223.18|2300.99|-16.56| +2452050|17840|2452120|8415|49208|175411|6414|25017|84577|1855388|1626|43076|25|27|15|1|257|87|11|43.07|80.11|13.61|731.50|149.71|473.77|881.21|0.00|0.00|255.53|149.71|149.71|405.24|405.24|-324.06| +2452050|17840|2452147|12727|49208|175411|6414|25017|84577|1855388|1626|43076|35|23|9|1|220|87|52|89.77|266.61|218.62|2495.48|11368.24|4668.04|13863.72|0.00|6366.21|6377.28|5002.03|5002.03|11379.31|11379.31|333.99| +2452050|17840|2452153|2453|49208|175411|6414|25017|84577|1855388|1626|43076|53|17|8|5|52|87|92|75.61|124.00|58.28|6046.24|5361.76|6956.12|11408.00|53.61|0.00|4791.36|5361.76|5415.37|10153.12|10206.73|-1594.36| +2452050|17840|2452125|11585|49208|175411|6414|25017|84577|1855388|1626|43076|29|5|11|4|177|87|16|87.55|229.38|135.33|1504.80|2165.28|1400.80|3670.08|108.26|0.00|403.68|2165.28|2273.54|2568.96|2677.22|764.48| +2452050|17840|2452097|15117|49208|175411|6414|25017|84577|1855388|1626|43076|29|29|15|2|142|87|61|91.13|236.93|144.52|5637.01|8815.72|5558.93|14452.73|88.15|0.00|4624.41|8815.72|8903.87|13440.13|13528.28|3256.79| +2452050|17840|2452154|7105|49208|175411|6414|25017|84577|1855388|1626|43076|31|7|5|3|44|87|78|86.00|253.70|81.18|13456.56|6332.04|6708.00|19788.60|379.92|0.00|1978.86|6332.04|6711.96|8310.90|8690.82|-375.96| +2452050|17840|2452138|3059|49208|175411|6414|25017|84577|1855388|1626|43076|25|5|6|1|19|87|30|42.68|84.93|23.78|1834.50|713.40|1280.40|2547.90|6.06|592.12|942.60|121.28|127.34|1063.88|1069.94|-1159.12| +2452050|17840|2452066|13933|49208|175411|6414|25017|84577|1855388|1626|43076|39|13|14|1|118|87|89|91.71|104.54|22.99|7257.95|2046.11|8162.19|9304.06|102.30|0.00|1953.55|2046.11|2148.41|3999.66|4101.96|-6116.08| +2452050|17840|2452074|13271|49208|175411|6414|25017|84577|1855388|1626|43076|23|3|19|4|46|87|63|72.87|197.47|195.49|124.74|12315.87|4590.81|12440.61|0.00|2955.80|1741.32|9360.07|9360.07|11101.39|11101.39|4769.26| +2452050|17840|2452072|3371|49208|175411|6414|25017|84577|1855388|1626|43076|5|3|11|2|96|87|11|94.40|221.84|179.69|463.65|1976.59|1038.40|2440.24|28.46|553.44|365.97|1423.15|1451.61|1789.12|1817.58|384.75| +2452050|17840|2452122|9725|49208|175411|6414|25017|84577|1855388|1626|43076|13|5|6|2|95|87|27|69.30|120.58|13.26|2897.64|358.02|1871.10|3255.66|21.48|0.00|911.52|358.02|379.50|1269.54|1291.02|-1513.08| +2452050|17840|2452103|745|49208|175411|6414|25017|84577|1855388|1626|43076|13|9|6|2|8|87|67|61.18|176.81|104.31|4857.50|6988.77|4099.06|11846.27|628.98|0.00|1065.97|6988.77|7617.75|8054.74|8683.72|2889.71| +2452050|17840|2452070|31|49208|175411|6414|25017|84577|1855388|1626|43076|13|3|7|2|197|87|53|65.33|163.32|97.99|3462.49|5193.47|3462.49|8655.96|207.73|0.00|2510.08|5193.47|5401.20|7703.55|7911.28|1730.98| +2451375|59503|2451468|9092|74942|1114698|854|36610|76788|822852|3078|18834|50|20|6|1|266|88|54|94.76|276.69|146.64|7022.70|7918.56|5117.04|14941.26|0.00|0.00|5378.40|7918.56|7918.56|13296.96|13296.96|2801.52| +2451375|59503|2451407|14851|74942|1114698|854|36610|76788|822852|3078|18834|34|8|19|3|167|88|4|21.28|35.32|27.54|31.12|110.16|85.12|141.28|8.81|0.00|66.40|110.16|118.97|176.56|185.37|25.04| +2451375|59503|2451400|373|74942|1114698|854|36610|76788|822852|3078|18834|4|7|5|3|164|88|89|6.60|10.95|6.35|409.40|565.15|587.40|974.55|45.21|0.00|136.17|565.15|610.36|701.32|746.53|-22.25| +2451375|59503|2451401|6680|74942|1114698|854|36610|76788|822852|3078|18834|49|10|17|1|92|88|1|93.73|269.00|166.78|102.22|166.78|93.73|269.00|6.67|0.00|26.90|166.78|173.45|193.68|200.35|73.05| +2451375|59503|2451418|16792|74942|1114698|854|36610|76788|822852|3078|18834|20|2|3|1|222|88|93|42.11|82.53|48.69|3147.12|4528.17|3916.23|7675.29|181.12|0.00|3837.18|4528.17|4709.29|8365.35|8546.47|611.94| +2451375|59503|2451395|12230|74942|1114698|854|36610|76788|822852|3078|18834|55|26|7|3|39|88|3|38.33|110.00|23.10|260.70|69.30|114.99|330.00|2.07|0.00|102.30|69.30|71.37|171.60|173.67|-45.69| +2451375|59503|2451485|7939|74942|1114698|854|36610|76788|822852|3078|18834|32|13|4|4|284|88|71|17.52|26.63|5.59|1493.84|396.89|1243.92|1890.73|35.72|0.00|510.49|396.89|432.61|907.38|943.10|-847.03| +2451375|59503|2451462|692|74942|1114698|854|36610|76788|822852|3078|18834|55|16|3|2|51|88|6|62.28|66.63|18.65|287.88|111.90|373.68|399.78|5.59|0.00|119.88|111.90|117.49|231.78|237.37|-261.78| +2451375|59503|2451490|16327|74942|1114698|854|36610|76788|822852|3078|18834|13|19|20|3|93|88|66|40.39|64.22|37.88|1738.44|2500.08|2665.74|4238.52|150.00|0.00|1143.78|2500.08|2650.08|3643.86|3793.86|-165.66| +2451375|59503|2451459|871|74942|1114698|854|36610|76788|822852|3078|18834|14|8|2|4|93|88|56|24.16|55.08|31.94|1295.84|1788.64|1352.96|3084.48|16.63|125.20|554.96|1663.44|1680.07|2218.40|2235.03|310.48| +2451375|59503|2451457|9541|74942|1114698|854|36610|76788|822852|3078|18834|22|8|18|1|44|88|82|62.62|120.85|93.05|2279.60|7630.10|5134.84|9909.70|534.10|0.00|594.50|7630.10|8164.20|8224.60|8758.70|2495.26| +2451513|55518|2451541|17686|91083|39218|4953|48288|47292|749108|5493|41228|44|26|18|4|123|89|47|90.20|207.46|188.78|877.96|8872.66|4239.40|9750.62|377.97|2573.07|4582.50|6299.59|6677.56|10882.09|11260.06|2060.19| +2451513|55518|2451530|9146|91083|39218|4953|48288|47292|749108|5493|41228|1|7|7|5|193|89|57|59.85|96.95|22.29|4255.62|1270.53|3411.45|5526.15|76.23|0.00|2265.18|1270.53|1346.76|3535.71|3611.94|-2140.92| +2451513|55518|2451523|2116|91083|39218|4953|48288|47292|749108|5493|41228|32|16|4|4|114|89|11|3.04|7.90|4.10|41.80|45.10|33.44|86.90|2.70|0.00|41.69|45.10|47.80|86.79|89.49|11.66| +2451513|55518|2451515|6578|91083|39218|4953|48288|47292|749108|5493|41228|58|13|17|2|284|89|55|29.43|36.78|3.31|1840.85|182.05|1618.65|2022.90|1.82|0.00|485.10|182.05|183.87|667.15|668.97|-1436.60| +2451513|55518|2451577|14935|91083|39218|4953|48288|47292|749108|5493|41228|34|13|9|1|163|89|16|32.31|73.98|71.02|47.36|1136.32|516.96|1183.68|79.54|0.00|165.60|1136.32|1215.86|1301.92|1381.46|619.36| +2451513|55518|2451570|3484|91083|39218|4953|48288|47292|749108|5493|41228|16|22|2|5|65|89|59|93.42|184.03|90.17|5537.74|5320.03|5511.78|10857.77|266.00|0.00|4017.31|5320.03|5586.03|9337.34|9603.34|-191.75| +2451513|55518|2451624|2138|91083|39218|4953|48288|47292|749108|5493|41228|10|19|1|5|216|89|26|19.61|20.98|19.51|38.22|507.26|509.86|545.48|0.00|0.00|223.60|507.26|507.26|730.86|730.86|-2.60| +2451513|55518|2451597|14116|91083|39218|4953|48288|47292|749108|5493|41228|19|4|3|3|153|89|46|77.46|182.03|40.04|6531.54|1841.84|3563.16|8373.38|55.25|0.00|2176.72|1841.84|1897.09|4018.56|4073.81|-1721.32| +2451513|55518|2451599|2749|91083|39218|4953|48288|47292|749108|5493|41228|50|8|14|3|62|89|53|94.41|276.62|47.02|12168.80|2492.06|5003.73|14660.86|224.28|0.00|5717.64|2492.06|2716.34|8209.70|8433.98|-2511.67| +2451513|55518|2451592|5080|91083|39218|4953|48288|47292|749108|5493|41228|58|22|7|2|154|89|62|69.83|83.79|3.35|4987.28|207.70|4329.46|5194.98|16.61|0.00|0.00|207.70|224.31|207.70|224.31|-4121.76| +2451513|55518|2451593|6814|91083|39218|4953|48288|47292|749108|5493|41228|55|4|11|1|274|89|87|69.06|158.14|23.72|11694.54|2063.64|6008.22|13758.18|5.57|2001.73|6328.38|61.91|67.48|6390.29|6395.86|-5946.31| +2452274|6180|2452357|1873|87541|1076044|6500|12956|437|1493380|1124|1980|15|29|9|1|50|90|63|53.88|120.15|72.09|3027.78|4541.67|3394.44|7569.45|181.66|0.00|3708.81|4541.67|4723.33|8250.48|8432.14|1147.23| +2452274|6180|2452339|8519|87541|1076044|6500|12956|437|1493380|1124|1980|55|7|3|4|255|90|14|96.62|185.51|87.18|1376.62|1220.52|1352.68|2597.14|36.61|0.00|519.40|1220.52|1257.13|1739.92|1776.53|-132.16| +2452274|6180|2452391|7679|87541|1076044|6500|12956|437|1493380|1124|1980|33|7|1|3|205|90|70|76.07|126.27|1.26|8750.70|88.20|5324.90|8838.90|1.76|0.00|795.20|88.20|89.96|883.40|885.16|-5236.70| +2452274|6180|2452311|1597|87541|1076044|6500|12956|437|1493380|1124|1980|55|13|6|5|124|90|48|97.38|120.75|109.88|521.76|5274.24|4674.24|5796.00|0.00|0.00|2782.08|5274.24|5274.24|8056.32|8056.32|600.00| +2452274|6180|2452318|16025|87541|1076044|6500|12956|437|1493380|1124|1980|1|3|3|4|222|90|7|83.36|240.91|197.54|303.59|1382.78|583.52|1686.37|69.13|0.00|522.76|1382.78|1451.91|1905.54|1974.67|799.26| +2452274|6180|2452290|8603|87541|1076044|6500|12956|437|1493380|1124|1980|53|29|16|4|55|90|43|21.04|49.65|33.76|683.27|1451.68|904.72|2134.95|58.06|0.00|191.78|1451.68|1509.74|1643.46|1701.52|546.96| +2452274|6180|2452360|7791|87541|1076044|6500|12956|437|1493380|1124|1980|55|23|3|4|278|90|98|82.93|208.98|73.14|13312.32|7167.72|8127.14|20480.04|116.11|3297.15|5733.98|3870.57|3986.68|9604.55|9720.66|-4256.57| +2452274|6180|2452329|14505|87541|1076044|6500|12956|437|1493380|1124|1980|37|5|20|2|204|90|39|7.66|13.09|1.83|439.14|71.37|298.74|510.51|3.56|0.00|45.63|71.37|74.93|117.00|120.56|-227.37| +2452274|6180|2452368|4713|87541|1076044|6500|12956|437|1493380|1124|1980|57|25|4|3|62|90|7|17.68|33.76|33.42|2.38|233.94|123.76|236.32|0.00|0.00|75.60|233.94|233.94|309.54|309.54|110.18| +2452274|6180|2452356|1083|87541|1076044|6500|12956|437|1493380|1124|1980|3|11|17|1|145|90|73|26.38|36.40|15.65|1514.75|1142.45|1925.74|2657.20|62.37|102.82|690.58|1039.63|1102.00|1730.21|1792.58|-886.11| +2452274|6180|2452323|9071|87541|1076044|6500|12956|437|1493380|1124|1980|45|7|2|3|164|90|36|11.07|13.39|2.81|380.88|101.16|398.52|482.04|1.70|79.91|0.00|21.25|22.95|21.25|22.95|-377.27| +2452274|6180|2452315|1277|87541|1076044|6500|12956|437|1493380|1124|1980|47|21|11|3|145|90|42|78.09|102.29|81.83|859.32|3436.86|3279.78|4296.18|60.83|1409.11|1116.78|2027.75|2088.58|3144.53|3205.36|-1252.03| +2451398|35797|2451462|3367|90554|1506619|2684|23149|24539|640349|3297|32962|14|1|14|2|280|91|70|27.11|46.90|26.73|1411.90|1871.10|1897.70|3283.00|74.84|0.00|1181.60|1871.10|1945.94|3052.70|3127.54|-26.60| +2451398|35797|2451498|2122|90554|1506619|2684|23149|24539|640349|3297|32962|43|8|1|4|97|91|87|95.95|253.30|141.84|9697.02|12340.08|8347.65|22037.10|123.40|0.00|5728.95|12340.08|12463.48|18069.03|18192.43|3992.43| +2451398|35797|2451505|5426|90554|1506619|2684|23149|24539|640349|3297|32962|7|14|2|1|170|91|1|13.57|26.19|2.35|23.84|2.35|13.57|26.19|0.16|0.00|3.66|2.35|2.51|6.01|6.17|-11.22| +2451398|35797|2451435|7460|90554|1506619|2684|23149|24539|640349|3297|32962|31|13|8|4|123|91|39|92.49|94.33|66.03|1103.70|2575.17|3607.11|3678.87|231.76|0.00|36.66|2575.17|2806.93|2611.83|2843.59|-1031.94| +2451398|35797|2451478|8120|90554|1506619|2684|23149|24539|640349|3297|32962|25|13|1|5|109|91|80|35.51|100.49|42.20|4663.20|3376.00|2840.80|8039.20|135.04|0.00|2089.60|3376.00|3511.04|5465.60|5600.64|535.20| +2451398|35797|2451501|1906|90554|1506619|2684|23149|24539|640349|3297|32962|20|8|6|5|84|91|52|17.40|48.54|43.20|277.68|2246.40|904.80|2524.08|112.32|0.00|1034.80|2246.40|2358.72|3281.20|3393.52|1341.60| +2451398|35797|2451429|10436|90554|1506619|2684|23149|24539|640349|3297|32962|19|7|11|5|129|91|47|57.26|142.57|76.98|3082.73|3618.06|2691.22|6700.79|36.18|0.00|2278.09|3618.06|3654.24|5896.15|5932.33|926.84| +2451398|35797|2451509|5974|90554|1506619|2684|23149|24539|640349|3297|32962|10|19|1|5|269|91|75|3.81|6.47|5.17|97.50|387.75|285.75|485.25|2.94|314.07|130.50|73.68|76.62|204.18|207.12|-212.07| +2452210|33897|2452267|8255|73296|1855583|5070|8110|76380|1396321|524|48764|39|15|6|4|62|92|83|81.21|176.22|77.53|8191.27|6434.99|6740.43|14626.26|450.44|0.00|1169.47|6434.99|6885.43|7604.46|8054.90|-305.44| +2452210|33897|2452230|5221|73296|1855583|5070|8110|76380|1396321|524|48764|47|17|17|5|273|92|76|96.40|188.94|52.90|10339.04|4020.40|7326.40|14359.44|241.22|0.00|1292.00|4020.40|4261.62|5312.40|5553.62|-3306.00| +2452210|33897|2452273|7749|73296|1855583|5070|8110|76380|1396321|524|48764|23|29|18|1|77|92|38|16.92|36.20|3.62|1238.04|137.56|642.96|1375.60|4.12|0.00|632.70|137.56|141.68|770.26|774.38|-505.40| +2452210|33897|2452273|16029|73296|1855583|5070|8110|76380|1396321|524|48764|25|9|7|4|251|92|42|87.38|187.86|24.42|6864.48|1025.64|3669.96|7890.12|30.76|0.00|3234.84|1025.64|1056.40|4260.48|4291.24|-2644.32| +2452210|33897|2452289|17041|73296|1855583|5070|8110|76380|1396321|524|48764|21|25|15|5|72|92|91|1.53|1.63|1.51|10.92|137.41|139.23|148.33|4.12|0.00|38.22|137.41|141.53|175.63|179.75|-1.82| +2452210|33897|2452304|3193|73296|1855583|5070|8110|76380|1396321|524|48764|43|11|17|1|272|92|9|50.87|108.35|31.42|692.37|282.78|457.83|975.15|5.65|0.00|458.28|282.78|288.43|741.06|746.71|-175.05| +2452210|33897|2452327|2151|73296|1855583|5070|8110|76380|1396321|524|48764|29|27|20|4|168|92|91|48.95|127.75|16.60|10114.65|1510.60|4454.45|11625.25|45.31|0.00|930.02|1510.60|1555.91|2440.62|2485.93|-2943.85| +2452210|33897|2452256|17951|73296|1855583|5070|8110|76380|1396321|524|48764|27|15|2|3|177|92|37|45.72|67.66|6.76|2253.30|250.12|1691.64|2503.42|20.00|0.00|1101.49|250.12|270.12|1351.61|1371.61|-1441.52| +2452210|33897|2452328|9885|73296|1855583|5070|8110|76380|1396321|524|48764|33|21|2|3|67|92|46|67.06|80.47|72.42|370.30|3331.32|3084.76|3701.62|113.93|2065.41|407.10|1265.91|1379.84|1673.01|1786.94|-1818.85| +2452601|71061|2452606|1957|11894|1711901|355|23562|70838|1051564|5630|44884|39|19|3|3|296|93|21|93.55|198.32|71.39|2665.53|1499.19|1964.55|4164.72|0.00|0.00|1041.18|1499.19|1499.19|2540.37|2540.37|-465.36| +2452601|71061|2452610|2727|11894|1711901|355|23562|70838|1051564|5630|44884|15|19|12|4|219|93|46|21.36|33.74|29.69|186.30|1365.74|982.56|1552.04|13.65|0.00|713.92|1365.74|1379.39|2079.66|2093.31|383.18| +2452601|71061|2452666|17401|11894|1711901|355|23562|70838|1051564|5630|44884|12|19|1|5|59|93|9|28.50|61.56|59.71|16.65|537.39|256.50|554.04|48.36|0.00|160.65|537.39|585.75|698.04|746.40|280.89| +2452601|71061|2452672|7489|11894|1711901|355|23562|70838|1051564|5630|44884|49|13|9|3|230|93|46|88.52|185.89|76.21|5045.28|3505.66|4071.92|8550.94|280.45|0.00|4104.12|3505.66|3786.11|7609.78|7890.23|-566.26| +2452601|71061|2452624|11707|11894|1711901|355|23562|70838|1051564|5630|44884|55|7|17|3|156|93|72|1.22|3.41|2.01|100.80|144.72|87.84|245.52|8.68|0.00|19.44|144.72|153.40|164.16|172.84|56.88| +2452601|71061|2452617|1410|11894|1711901|355|23562|70838|1051564|5630|44884|57|1|13|5|90|93|100|82.83|223.64|187.85|3579.00|18785.00|8283.00|22364.00|1690.65|0.00|6038.00|18785.00|20475.65|24823.00|26513.65|10502.00| +2452601|71061|2452607|9013|11894|1711901|355|23562|70838|1051564|5630|44884|33|19|3|3|146|93|30|4.82|11.03|4.30|201.90|129.00|144.60|330.90|0.46|105.78|138.90|23.22|23.68|162.12|162.58|-121.38| +2452601|71061|2452655|9663|11894|1711901|355|23562|70838|1051564|5630|44884|42|9|9|3|77|93|4|84.68|186.29|50.29|544.00|201.16|338.72|745.16|15.61|6.03|312.96|195.13|210.74|508.09|523.70|-143.59| +2452601|71061|2452659|6690|11894|1711901|355|23562|70838|1051564|5630|44884|45|19|17|1|188|93|9|24.71|44.97|39.12|52.65|352.08|222.39|404.73|0.00|0.00|89.01|352.08|352.08|441.09|441.09|129.69| +2452601|71061|2452679|753|11894|1711901|355|23562|70838|1051564|5630|44884|12|27|2|2|255|93|51|84.32|145.03|140.67|222.36|7174.17|4300.32|7396.53|215.22|0.00|2292.45|7174.17|7389.39|9466.62|9681.84|2873.85| +2452601|71061|2452699|5985|11894|1711901|355|23562|70838|1051564|5630|44884|15|3|6|5|44|93|73|96.45|236.30|134.69|7417.53|9832.37|7040.85|17249.90|884.91|0.00|5174.97|9832.37|10717.28|15007.34|15892.25|2791.52| +2452601|71061|2452665|3759|11894|1711901|355|23562|70838|1051564|5630|44884|30|3|9|1|150|93|55|2.20|2.70|0.29|132.55|15.95|121.00|148.50|0.47|0.00|38.50|15.95|16.42|54.45|54.92|-105.05| +2452601|71061|2452711|13681|11894|1711901|355|23562|70838|1051564|5630|44884|39|15|6|4|212|93|17|51.89|91.84|62.45|499.63|1061.65|882.13|1561.28|10.61|0.00|733.72|1061.65|1072.26|1795.37|1805.98|179.52| +2452601|71061|2452690|13597|11894|1711901|355|23562|70838|1051564|5630|44884|27|6|19|3|254|93|43|66.20|114.52|91.61|985.13|3939.23|2846.60|4924.36|236.35|0.00|1428.03|3939.23|4175.58|5367.26|5603.61|1092.63| +2452601|71061|2452669|7113|11894|1711901|355|23562|70838|1051564|5630|44884|51|9|7|4|288|93|93|99.73|268.27|131.45|12724.26|12224.85|9274.89|24949.11|122.24|0.00|11725.44|12224.85|12347.09|23950.29|24072.53|2949.96| +2451033|74433|2451050|625|89077|352774|5271|21768|60926|1006342|5659|15356|43|20|3|2|264|94|87|47.91|52.70|2.63|4356.09|228.81|4168.17|4584.90|6.86|0.00|182.70|228.81|235.67|411.51|418.37|-3939.36| +2451033|74433|2451146|4345|89077|352774|5271|21768|60926|1006342|5659|15356|20|1|1|3|38|94|90|20.37|56.42|21.43|3149.10|1928.70|1833.30|5077.80|57.86|0.00|1269.00|1928.70|1986.56|3197.70|3255.56|95.40| +2451033|74433|2451129|4723|89077|352774|5271|21768|60926|1006342|5659|15356|46|2|20|5|63|94|4|75.98|103.33|43.39|239.76|173.56|303.92|413.32|12.14|0.00|136.36|173.56|185.70|309.92|322.06|-130.36| +2451033|74433|2451047|16598|89077|352774|5271|21768|60926|1006342|5659|15356|44|20|9|5|268|94|84|13.80|14.49|13.62|73.08|1144.08|1159.20|1217.16|91.52|0.00|486.36|1144.08|1235.60|1630.44|1721.96|-15.12| +2451033|74433|2451090|8126|89077|352774|5271|21768|60926|1006342|5659|15356|31|8|17|1|265|94|6|49.55|65.90|30.97|209.58|185.82|297.30|395.40|7.43|0.00|86.94|185.82|193.25|272.76|280.19|-111.48| +2451033|74433|2451043|9208|89077|352774|5271|21768|60926|1006342|5659|15356|1|19|19|5|74|94|25|78.43|104.31|84.49|495.50|2112.25|1960.75|2607.75|84.49|0.00|651.75|2112.25|2196.74|2764.00|2848.49|151.50| +2451033|74433|2451118|16892|89077|352774|5271|21768|60926|1006342|5659|15356|37|2|15|3|138|94|46|2.52|4.53|2.49|93.84|114.54|115.92|208.38|2.29|0.00|85.10|114.54|116.83|199.64|201.93|-1.38| +2451033|74433|2451116|11698|89077|352774|5271|21768|60926|1006342|5659|15356|32|22|17|2|237|94|34|55.77|72.50|29.72|1454.52|1010.48|1896.18|2465.00|10.10|0.00|468.18|1010.48|1020.58|1478.66|1488.76|-885.70| +2451033|74433|2451048|12202|89077|352774|5271|21768|60926|1006342|5659|15356|22|20|10|4|248|94|27|53.16|141.40|25.45|3130.65|687.15|1435.32|3817.80|61.84|0.00|381.78|687.15|748.99|1068.93|1130.77|-748.17| +2451033|74433|2451122|12794|89077|352774|5271|21768|60926|1006342|5659|15356|8|10|4|2|150|94|40|42.56|73.62|33.86|1590.40|1354.40|1702.40|2944.80|0.00|0.00|147.20|1354.40|1354.40|1501.60|1501.60|-348.00| +2451994|28063|2452030|11963|66345|115505|4218|9378|74719|1163832|2011|27971|21|9|19|5|264|95|85|25.61|58.39|49.04|794.75|4168.40|2176.85|4963.15|375.15|0.00|545.70|4168.40|4543.55|4714.10|5089.25|1991.55| +2451994|28063|2452080|7785|66345|115505|4218|9378|74719|1163832|2011|27971|59|29|3|1|39|95|51|47.21|66.09|5.94|3067.65|302.94|2407.71|3370.59|0.00|0.00|808.86|302.94|302.94|1111.80|1111.80|-2104.77| +2451994|28063|2452007|423|66345|115505|4218|9378|74719|1163832|2011|27971|19|5|16|4|162|95|52|80.50|212.52|89.25|6410.04|4641.00|4186.00|11051.04|232.05|0.00|5525.52|4641.00|4873.05|10166.52|10398.57|455.00| +2451994|28063|2451998|9279|66345|115505|4218|9378|74719|1163832|2011|27971|3|3|19|4|76|95|10|90.41|256.76|233.65|231.10|2336.50|904.10|2567.60|130.84|467.30|641.90|1869.20|2000.04|2511.10|2641.94|965.10| +2451994|28063|2452028|4647|66345|115505|4218|9378|74719|1163832|2011|27971|19|29|20|5|203|95|91|91.05|249.47|54.88|17707.69|4994.08|8285.55|22701.77|0.00|0.00|9307.48|4994.08|4994.08|14301.56|14301.56|-3291.47| +2451994|28063|2452063|11609|66345|115505|4218|9378|74719|1163832|2011|27971|39|3|17|4|294|95|70|27.23|48.19|25.54|1585.50|1787.80|1906.10|3373.30|0.00|214.53|235.90|1573.27|1573.27|1809.17|1809.17|-332.83| +2451994|28063|2452041|17461|66345|115505|4218|9378|74719|1163832|2011|27971|17|3|15|1|214|95|17|17.17|46.01|24.84|359.89|422.28|291.89|782.17|1.94|325.15|86.02|97.13|99.07|183.15|185.09|-194.76| +2451994|28063|2452069|5857|66345|115505|4218|9378|74719|1163832|2011|27971|15|15|8|3|278|95|61|83.76|226.15|90.46|8277.09|5518.06|5109.36|13795.15|379.64|772.52|6207.36|4745.54|5125.18|10952.90|11332.54|-363.82| +2451994|28063|2451998|15813|66345|115505|4218|9378|74719|1163832|2011|27971|23|19|8|3|251|95|75|90.47|264.17|184.91|5944.50|13868.25|6785.25|19812.75|554.73|0.00|6141.75|13868.25|14422.98|20010.00|20564.73|7083.00| +2451994|28063|2452101|3493|66345|115505|4218|9378|74719|1163832|2011|27971|3|5|1|2|73|95|23|42.55|69.35|6.24|1451.53|143.52|978.65|1595.05|8.61|0.00|270.94|143.52|152.13|414.46|423.07|-835.13| +2451994|28063|2452044|3201|66345|115505|4218|9378|74719|1163832|2011|27971|35|29|2|4|133|95|46|76.70|125.78|62.89|2892.94|2892.94|3528.20|5785.88|144.64|0.00|1330.32|2892.94|3037.58|4223.26|4367.90|-635.26| +2451994|28063|2452097|2515|66345|115505|4218|9378|74719|1163832|2011|27971|59|7|18|2|196|95|1|48.80|121.02|62.93|58.09|62.93|48.80|121.02|5.66|0.00|13.31|62.93|68.59|76.24|81.90|14.13| +2451994|28063|2452003|4185|66345|115505|4218|9378|74719|1163832|2011|27971|19|21|9|5|201|95|82|57.30|166.17|141.24|2044.26|11581.68|4698.60|13625.94|926.53|0.00|0.00|11581.68|12508.21|11581.68|12508.21|6883.08| +2451994|28063|2452082|15793|66345|115505|4218|9378|74719|1163832|2011|27971|15|11|17|5|233|95|69|9.73|17.80|4.45|921.15|307.05|671.37|1228.20|14.24|128.96|24.15|178.09|192.33|202.24|216.48|-493.28| +2451994|28063|2452107|11407|66345|115505|4218|9378|74719|1163832|2011|27971|35|9|19|1|160|95|88|83.98|152.00|147.44|401.28|12974.72|7390.24|13376.00|648.73|0.00|5885.44|12974.72|13623.45|18860.16|19508.89|5584.48| +2451153|47564|2451160|14839|11730|1455722|867|14059|94985|1532915|5188|44733|43|14|1|2|70|96|44|73.04|151.92|110.90|1804.88|4879.60|3213.76|6684.48|243.98|0.00|534.60|4879.60|5123.58|5414.20|5658.18|1665.84| +2451153|47564|2451238|5396|11730|1455722|867|14059|94985|1532915|5188|44733|34|2|3|4|5|96|1|31.17|70.44|10.56|59.88|10.56|31.17|70.44|0.52|0.00|21.13|10.56|11.08|31.69|32.21|-20.61| +2451153|47564|2451267|17290|11730|1455722|867|14059|94985|1532915|5188|44733|58|14|9|2|175|96|41|31.32|82.37|42.83|1621.14|1756.03|1284.12|3377.17|11.58|1176.54|1181.62|579.49|591.07|1761.11|1772.69|-704.63| +2451153|47564|2451206|12895|11730|1455722|867|14059|94985|1532915|5188|44733|8|8|2|2|139|96|32|69.25|85.87|82.43|110.08|2637.76|2216.00|2747.84|29.01|2057.45|164.80|580.31|609.32|745.11|774.12|-1635.69| +2451153|47564|2451202|4231|11730|1455722|867|14059|94985|1532915|5188|44733|1|20|14|4|184|96|25|63.03|158.83|38.11|3018.00|952.75|1575.75|3970.75|85.74|0.00|833.75|952.75|1038.49|1786.50|1872.24|-623.00| +2451153|47564|2451229|13282|11730|1455722|867|14059|94985|1532915|5188|44733|37|26|9|2|292|96|32|97.08|161.15|17.72|4589.76|567.04|3106.56|5156.80|39.69|0.00|2114.24|567.04|606.73|2681.28|2720.97|-2539.52| +2451153|47564|2451231|2644|11730|1455722|867|14059|94985|1532915|5188|44733|14|19|2|2|129|96|85|54.99|89.08|77.49|985.15|6586.65|4674.15|7571.80|395.19|0.00|1513.85|6586.65|6981.84|8100.50|8495.69|1912.50| +2451153|47564|2451269|13309|11730|1455722|867|14059|94985|1532915|5188|44733|50|2|8|4|110|96|28|5.29|13.06|4.70|234.08|131.60|148.12|365.68|3.94|0.00|87.64|131.60|135.54|219.24|223.18|-16.52| +2451153|47564|2451204|7669|11730|1455722|867|14059|94985|1532915|5188|44733|28|25|1|4|187|96|10|97.44|136.41|9.54|1268.70|95.40|974.40|1364.10|0.95|0.00|559.20|95.40|96.35|654.60|655.55|-879.00| +2451153|47564|2451250|4291|11730|1455722|867|14059|94985|1532915|5188|44733|2|7|3|5|257|96|23|61.56|110.19|69.41|937.94|1596.43|1415.88|2534.37|9.73|622.60|1190.94|973.83|983.56|2164.77|2174.50|-442.05| +2451153|47564|2451211|17960|11730|1455722|867|14059|94985|1532915|5188|44733|26|20|8|5|2|96|23|82.94|150.12|127.60|517.96|2934.80|1907.62|3452.76|234.78|0.00|103.50|2934.80|3169.58|3038.30|3273.08|1027.18| +2451153|47564|2451235|2564|11730|1455722|867|14059|94985|1532915|5188|44733|26|1|11|3|75|96|27|98.09|169.69|67.87|2749.14|1832.49|2648.43|4581.63|128.27|0.00|1740.96|1832.49|1960.76|3573.45|3701.72|-815.94| +2451153|47564|2451180|2956|11730|1455722|867|14059|94985|1532915|5188|44733|19|28|20|5|180|96|14|44.45|120.01|76.80|604.94|1075.20|622.30|1680.14|64.51|0.00|806.40|1075.20|1139.71|1881.60|1946.11|452.90| +2451153|47564|2451199|1820|11730|1455722|867|14059|94985|1532915|5188|44733|50|16|15|3|251|96|45|5.65|7.06|1.20|263.70|54.00|254.25|317.70|0.19|34.02|76.05|19.98|20.17|96.03|96.22|-234.27| +2451153|47564|2451170|15667|11730|1455722|867|14059|94985|1532915|5188|44733|20|19|2|4|226|96|43|2.61|4.01|2.24|76.11|96.32|112.23|172.43|1.21|76.09|55.04|20.23|21.44|75.27|76.48|-92.00| +2452499|43025|2452599|7215|12874|940613|5152|41644|73596|1392185|5261|24553|55|25|11|1|104|97|17|87.83|173.90|99.12|1271.26|1685.04|1493.11|2956.30|151.65|0.00|236.47|1685.04|1836.69|1921.51|2073.16|191.93| +2452499|43025|2452619|2490|12874|940613|5152|41644|73596|1392185|5261|24553|19|9|20|5|110|97|5|36.97|107.21|38.59|343.10|192.95|184.85|536.05|0.92|177.51|262.65|15.44|16.36|278.09|279.01|-169.41| +2452499|43025|2452597|12775|12874|940613|5152|41644|73596|1392185|5261|24553|37|6|7|3|82|97|21|53.32|86.37|23.31|1324.26|489.51|1119.72|1813.77|4.89|0.00|0.00|489.51|494.40|489.51|494.40|-630.21| +2452499|43025|2452510|16795|12874|940613|5152|41644|73596|1392185|5261|24553|9|6|1|4|57|97|7|52.27|59.58|5.95|375.41|41.65|365.89|417.06|1.87|10.41|8.33|31.24|33.11|39.57|41.44|-334.65| +2452499|43025|2452525|4854|12874|940613|5152|41644|73596|1392185|5261|24553|21|18|17|2|70|97|16|43.63|126.96|44.43|1320.48|710.88|698.08|2031.36|7.10|0.00|304.64|710.88|717.98|1015.52|1022.62|12.80| +2452499|43025|2452551|12751|12874|940613|5152|41644|73596|1392185|5261|24553|36|24|3|4|105|97|68|57.75|137.44|71.46|4486.64|4859.28|3927.00|9345.92|97.18|0.00|1308.32|4859.28|4956.46|6167.60|6264.78|932.28| +2452499|43025|2452616|1123|12874|940613|5152|41644|73596|1392185|5261|24553|42|3|6|5|224|97|71|37.79|65.37|55.56|696.51|3944.76|2683.09|4641.27|355.02|0.00|1484.61|3944.76|4299.78|5429.37|5784.39|1261.67| +2452499|43025|2452554|2493|12874|940613|5152|41644|73596|1392185|5261|24553|27|18|7|2|47|97|25|54.18|104.56|57.50|1176.50|1437.50|1354.50|2614.00|0.00|0.00|548.75|1437.50|1437.50|1986.25|1986.25|83.00| +2452499|43025|2452557|17769|12874|940613|5152|41644|73596|1392185|5261|24553|18|24|18|4|97|97|7|34.06|45.64|28.29|121.45|198.03|238.42|319.48|5.94|0.00|79.87|198.03|203.97|277.90|283.84|-40.39| +2451962|57038|2452053|5093|16297|370935|1573|7811|15799|667647|4125|13163|47|17|4|4|197|98|60|59.78|117.76|37.68|4804.80|2260.80|3586.80|7065.60|180.86|0.00|847.80|2260.80|2441.66|3108.60|3289.46|-1326.00| +2451962|57038|2452024|14793|16297|370935|1573|7811|15799|667647|4125|13163|49|25|11|2|150|98|61|23.45|34.94|12.92|1343.22|788.12|1430.45|2131.34|7.88|0.00|127.49|788.12|796.00|915.61|923.49|-642.33| +2451962|57038|2452012|7305|16297|370935|1573|7811|15799|667647|4125|13163|59|25|6|4|82|98|22|49.32|118.86|36.84|1804.44|810.48|1085.04|2614.92|8.10|0.00|601.26|810.48|818.58|1411.74|1419.84|-274.56| +2451962|57038|2452062|6135|16297|370935|1573|7811|15799|667647|4125|13163|19|25|16|4|52|98|22|44.85|69.96|23.08|1031.36|507.76|986.70|1539.12|0.00|0.00|384.78|507.76|507.76|892.54|892.54|-478.94| +2451962|57038|2452022|3583|16297|370935|1573|7811|15799|667647|4125|13163|31|5|7|1|68|98|7|86.36|217.62|145.80|502.74|1020.60|604.52|1523.34|0.00|0.00|411.25|1020.60|1020.60|1431.85|1431.85|416.08| +2451962|57038|2452000|11701|16297|370935|1573|7811|15799|667647|4125|13163|1|19|19|3|157|98|57|6.48|12.18|9.25|167.01|527.25|369.36|694.26|31.63|0.00|347.13|527.25|558.88|874.38|906.01|157.89| +2451962|57038|2452034|397|16297|370935|1573|7811|15799|667647|4125|13163|47|29|13|1|122|98|73|61.75|73.48|2.20|5203.44|160.60|4507.75|5364.04|11.24|0.00|321.20|160.60|171.84|481.80|493.04|-4347.15| +2451962|57038|2452041|8901|16297|370935|1573|7811|15799|667647|4125|13163|39|23|11|3|145|98|24|93.38|210.10|132.36|1865.76|3176.64|2241.12|5042.40|63.53|0.00|1512.72|3176.64|3240.17|4689.36|4752.89|935.52| +2451962|57038|2452011|4599|16297|370935|1573|7811|15799|667647|4125|13163|35|15|8|1|271|98|76|60.67|100.10|90.09|760.76|6846.84|4610.92|7607.60|547.74|0.00|380.00|6846.84|7394.58|7226.84|7774.58|2235.92| +2451962|57038|2452074|17183|16297|370935|1573|7811|15799|667647|4125|13163|5|9|17|1|258|98|71|92.33|141.26|46.61|6720.15|3309.31|6555.43|10029.46|99.27|0.00|802.30|3309.31|3408.58|4111.61|4210.88|-3246.12| +2451962|57038|2452080|13859|16297|370935|1573|7811|15799|667647|4125|13163|15|11|14|2|270|98|5|66.92|88.33|84.79|17.70|423.95|334.60|441.65|33.91|0.00|0.00|423.95|457.86|423.95|457.86|89.35| +2451962|57038|2452072|10529|16297|370935|1573|7811|15799|667647|4125|13163|57|9|14|5|136|98|33|99.49|143.26|97.41|1513.05|3214.53|3283.17|4727.58|12.53|1960.86|2221.89|1253.67|1266.20|3475.56|3488.09|-2029.50| +2451962|57038|2452071|9447|16297|370935|1573|7811|15799|667647|4125|13163|7|17|7|2|130|98|41|22.73|63.64|40.09|965.55|1643.69|931.93|2609.24|0.00|0.00|547.76|1643.69|1643.69|2191.45|2191.45|711.76| +2451543|25265|2451633|9364|19821|1761697|4373|3049|77876|54460|1124|31000|56|1|6|3|60|99|93|78.00|226.98|199.74|2533.32|18575.82|7254.00|21109.14|105.88|7987.60|6332.37|10588.22|10694.10|16920.59|17026.47|3334.22| +2451543|25265|2451629|13628|19821|1761697|4373|3049|77876|54460|1124|31000|55|25|11|1|14|99|62|25.08|50.66|40.52|628.68|2512.24|1554.96|3140.92|200.97|0.00|1067.64|2512.24|2713.21|3579.88|3780.85|957.28| +2451543|25265|2451562|12397|19821|1761697|4373|3049|77876|54460|1124|31000|2|10|17|3|219|99|42|48.19|137.34|105.75|1326.78|4441.50|2023.98|5768.28|0.00|1465.69|461.16|2975.81|2975.81|3436.97|3436.97|951.83| +2451543|25265|2451619|6244|19821|1761697|4373|3049|77876|54460|1124|31000|8|22|19|4|206|99|20|18.62|47.48|18.99|569.80|379.80|372.40|949.60|19.36|56.97|246.80|322.83|342.19|569.63|588.99|-49.57| +2451543|25265|2451640|13684|19821|1761697|4373|3049|77876|54460|1124|31000|58|22|14|4|191|99|5|35.16|60.82|55.34|27.40|276.70|175.80|304.10|24.90|0.00|149.00|276.70|301.60|425.70|450.60|100.90| +2451543|25265|2451655|6950|19821|1761697|4373|3049|77876|54460|1124|31000|52|19|6|4|185|99|29|70.39|175.97|131.97|1276.00|3827.13|2041.31|5103.13|153.08|0.00|1785.82|3827.13|3980.21|5612.95|5766.03|1785.82| +2451543|25265|2451653|1411|19821|1761697|4373|3049|77876|54460|1124|31000|44|10|19|5|218|99|64|79.63|137.75|26.17|7141.12|1674.88|5096.32|8816.00|133.99|0.00|881.28|1674.88|1808.87|2556.16|2690.15|-3421.44| +2451543|25265|2451600|10819|19821|1761697|4373|3049|77876|54460|1124|31000|31|14|20|5|7|99|71|16.54|34.56|16.58|1276.58|1177.18|1174.34|2453.76|58.85|0.00|490.61|1177.18|1236.03|1667.79|1726.64|2.84| +2451543|25265|2451662|11755|19821|1761697|4373|3049|77876|54460|1124|31000|46|14|2|3|297|99|45|73.53|183.08|148.29|1565.55|6673.05|3308.85|8238.60|266.92|0.00|3295.35|6673.05|6939.97|9968.40|10235.32|3364.20| +2451543|25265|2451600|4777|19821|1761697|4373|3049|77876|54460|1124|31000|32|1|5|4|103|99|86|35.37|78.52|8.63|6010.54|742.18|3041.82|6752.72|22.26|0.00|2565.38|742.18|764.44|3307.56|3329.82|-2299.64| +2451543|25265|2451643|10922|19821|1761697|4373|3049|77876|54460|1124|31000|10|25|10|2|94|99|87|91.98|102.09|66.35|3109.38|5772.45|8002.26|8881.83|387.90|923.59|976.14|4848.86|5236.76|5825.00|6212.90|-3153.40| +2451543|25265|2451568|11620|19821|1761697|4373|3049|77876|54460|1124|31000|1|28|19|3|87|99|46|11.57|20.13|13.08|324.30|601.68|532.22|925.98|6.73|517.44|287.04|84.24|90.97|371.28|378.01|-447.98| +2451489|45554|2451561|15598|87996|1424698|3447|49349|2066|1191653|1455|2957|34|2|6|3|277|100|21|27.35|77.40|33.28|926.52|698.88|574.35|1625.40|20.96|0.00|81.27|698.88|719.84|780.15|801.11|124.53| +2451489|45554|2451539|8509|87996|1424698|3447|49349|2066|1191653|1455|2957|56|2|5|1|34|100|80|43.50|76.56|48.23|2266.40|3858.40|3480.00|6124.80|192.92|0.00|2816.80|3858.40|4051.32|6675.20|6868.12|378.40| +2451489|45554|2451569|13148|87996|1424698|3447|49349|2066|1191653|1455|2957|37|2|12|2|25|100|76|99.78|189.58|45.49|10950.84|3457.24|7583.28|14408.08|69.14|0.00|1008.52|3457.24|3526.38|4465.76|4534.90|-4126.04| +2451489|45554|2451564|17030|87996|1424698|3447|49349|2066|1191653|1455|2957|1|7|17|5|223|100|59|3.45|9.48|1.32|481.44|77.88|203.55|559.32|1.55|0.00|257.24|77.88|79.43|335.12|336.67|-125.67| +2451489|45554|2451602|15322|87996|1424698|3447|49349|2066|1191653|1455|2957|8|10|10|1|55|100|89|61.04|87.28|9.60|6913.52|854.40|5432.56|7767.92|59.80|0.00|1165.01|854.40|914.20|2019.41|2079.21|-4578.16| +2451489|45554|2451552|724|87996|1424698|3447|49349|2066|1191653|1455|2957|46|16|4|1|181|100|99|63.05|162.66|58.55|10306.89|5796.45|6241.95|16103.34|64.92|4984.94|3380.85|811.51|876.43|4192.36|4257.28|-5430.44| +2451489|45554|2451609|1364|87996|1424698|3447|49349|2066|1191653|1455|2957|49|22|6|5|167|100|3|76.54|137.77|79.90|173.61|239.70|229.62|413.31|9.58|0.00|99.18|239.70|249.28|338.88|348.46|10.08| +2451489|45554|2451542|15442|87996|1424698|3447|49349|2066|1191653|1455|2957|2|14|4|5|139|100|71|13.07|36.20|23.89|874.01|1696.19|927.97|2570.20|84.80|0.00|796.62|1696.19|1780.99|2492.81|2577.61|768.22| +2451489|45554|2451532|1328|87996|1424698|3447|49349|2066|1191653|1455|2957|22|13|19|4|246|100|86|79.34|153.12|113.30|3424.52|9743.80|6823.24|13168.32|194.87|0.00|6320.14|9743.80|9938.67|16063.94|16258.81|2920.56| +2451489|45554|2451596|14347|87996|1424698|3447|49349|2066|1191653|1455|2957|40|20|1|1|71|100|21|61.75|160.55|97.93|1315.02|2056.53|1296.75|3371.55|185.08|0.00|640.50|2056.53|2241.61|2697.03|2882.11|759.78| +2452540|73343|2452639|16620|44578|1919699|2373|21094|44578|1919699|2373|21094|9|27|10|1|62|101|31|85.50|143.64|53.14|2805.50|1647.34|2650.50|4452.84|16.80|807.19|311.55|840.15|856.95|1151.70|1168.50|-1810.35| +2452540|73343|2452549|10699|44578|1919699|2373|21094|44578|1919699|2373|21094|51|7|15|1|187|101|4|92.93|104.08|55.16|195.68|220.64|371.72|416.32|19.85|0.00|174.84|220.64|240.49|395.48|415.33|-151.08| +2452540|73343|2452632|15708|44578|1919699|2373|21094|44578|1919699|2373|21094|55|27|10|4|145|101|22|51.47|91.61|83.36|181.50|1833.92|1132.34|2015.42|42.91|403.46|584.32|1430.46|1473.37|2014.78|2057.69|298.12| +2452540|73343|2452599|9795|44578|1919699|2373|21094|44578|1919699|2373|21094|48|24|13|4|292|101|50|29.22|56.39|27.63|1438.00|1381.50|1461.00|2819.50|13.81|0.00|817.50|1381.50|1395.31|2199.00|2212.81|-79.50| +2452540|73343|2452589|5989|44578|1919699|2373|21094|44578|1919699|2373|21094|33|12|8|2|139|101|28|29.97|89.91|50.34|1107.96|1409.52|839.16|2517.48|28.19|0.00|679.56|1409.52|1437.71|2089.08|2117.27|570.36| +2452540|73343|2452647|10687|44578|1919699|2373|21094|44578|1919699|2373|21094|55|1|7|3|116|101|19|86.14|221.37|177.09|841.32|3364.71|1636.66|4206.03|134.58|0.00|925.30|3364.71|3499.29|4290.01|4424.59|1728.05| +2452540|73343|2452598|13404|44578|1919699|2373|21094|44578|1919699|2373|21094|39|7|18|5|159|101|4|69.96|189.59|145.98|174.44|583.92|279.84|758.36|5.83|0.00|303.32|583.92|589.75|887.24|893.07|304.08| +2452540|73343|2452626|16807|44578|1919699|2373|21094|44578|1919699|2373|21094|13|13|10|3|143|101|73|49.90|139.72|81.03|4284.37|5915.19|3642.70|10199.56|414.06|0.00|3161.63|5915.19|6329.25|9076.82|9490.88|2272.49| +2452540|73343|2452599|16297|44578|1919699|2373|21094|44578|1919699|2373|21094|57|3|15|3|251|101|5|59.15|131.31|51.21|400.50|256.05|295.75|656.55|7.68|0.00|13.10|256.05|263.73|269.15|276.83|-39.70| +2451304|70566|2451368|2684|10393|1718135|1077|18819|16008|411354|845|13387|56|19|18|1|117|102|64|8.30|13.69|12.59|70.40|805.76|531.20|876.16|2.65|539.85|157.44|265.91|268.56|423.35|426.00|-265.29| +2451304|70566|2451380|16666|10393|1718135|1077|18819|16008|411354|845|13387|1|8|6|5|234|102|29|64.27|187.66|182.03|163.27|5278.87|1863.83|5442.14|316.73|0.00|2612.03|5278.87|5595.60|7890.90|8207.63|3415.04| +2451304|70566|2451368|7840|10393|1718135|1077|18819|16008|411354|845|13387|37|28|14|5|206|102|100|97.87|126.25|10.10|11615.00|1010.00|9787.00|12625.00|20.20|0.00|126.00|1010.00|1030.20|1136.00|1156.20|-8777.00| +2451304|70566|2451331|13642|10393|1718135|1077|18819|16008|411354|845|13387|28|10|10|1|55|102|68|70.29|194.00|64.02|8838.64|4353.36|4779.72|13192.00|0.00|1131.87|3034.16|3221.49|3221.49|6255.65|6255.65|-1558.23| +2451304|70566|2451368|11551|10393|1718135|1077|18819|16008|411354|845|13387|38|14|19|2|55|102|78|70.29|203.13|203.13|0.00|15844.14|5482.62|15844.14|950.64|0.00|5228.34|15844.14|16794.78|21072.48|22023.12|10361.52| +2451304|70566|2451310|8336|10393|1718135|1077|18819|16008|411354|845|13387|55|16|3|4|65|102|42|51.11|86.37|59.59|1124.76|2502.78|2146.62|3627.54|25.02|0.00|1704.78|2502.78|2527.80|4207.56|4232.58|356.16| +2451304|70566|2451408|12763|10393|1718135|1077|18819|16008|411354|845|13387|7|10|8|5|132|102|82|41.04|119.42|62.09|4701.06|5091.38|3365.28|9792.44|203.65|0.00|3525.18|5091.38|5295.03|8616.56|8820.21|1726.10| +2451304|70566|2451401|16840|10393|1718135|1077|18819|16008|411354|845|13387|28|1|4|5|56|102|48|18.86|51.29|17.43|1625.28|836.64|905.28|2461.92|41.83|0.00|1107.84|836.64|878.47|1944.48|1986.31|-68.64| +2451304|70566|2451389|1750|10393|1718135|1077|18819|16008|411354|845|13387|14|7|10|1|202|102|46|25.47|55.01|49.50|253.46|2277.00|1171.62|2530.46|50.54|1434.51|25.30|842.49|893.03|867.79|918.33|-329.13| +2451304|70566|2451393|1904|10393|1718135|1077|18819|16008|411354|845|13387|58|25|6|4|262|102|22|79.71|216.01|153.36|1378.30|3373.92|1753.62|4752.22|168.69|0.00|1140.48|3373.92|3542.61|4514.40|4683.09|1620.30| +2451304|70566|2451306|4153|10393|1718135|1077|18819|16008|411354|845|13387|37|8|8|4|300|102|66|40.18|73.93|27.35|3074.28|1805.10|2651.88|4879.38|0.00|0.00|390.06|1805.10|1805.10|2195.16|2195.16|-846.78| +2451304|70566|2451317|2420|10393|1718135|1077|18819|16008|411354|845|13387|37|4|20|4|98|102|98|79.64|166.44|6.65|15659.42|651.70|7804.72|16311.12|4.10|241.12|3261.44|410.58|414.68|3672.02|3676.12|-7394.14| +2451304|70566|2451357|14186|10393|1718135|1077|18819|16008|411354|845|13387|4|25|13|3|163|102|31|26.89|43.29|14.28|899.31|442.68|833.59|1341.99|4.42|0.00|630.54|442.68|447.10|1073.22|1077.64|-390.91| +2451801|66921|2451807|9499|49335|1467614|2693|31772|92727|1146590|5056|8982|25|1|9|2|265|103|63|67.89|105.90|31.77|4670.19|2001.51|4277.07|6671.70|60.04|0.00|1267.56|2001.51|2061.55|3269.07|3329.11|-2275.56| +2451801|66921|2451869|12812|49335|1467614|2693|31772|92727|1146590|5056|8982|13|11|15|2|236|103|38|11.96|22.72|22.49|8.74|854.62|454.48|863.36|59.82|0.00|379.62|854.62|914.44|1234.24|1294.06|400.14| +2451801|66921|2451913|15851|49335|1467614|2693|31772|92727|1146590|5056|8982|31|5|13|3|273|103|17|21.30|28.75|6.32|381.31|107.44|362.10|488.75|3.22|0.00|24.31|107.44|110.66|131.75|134.97|-254.66| +2451801|66921|2451818|13183|49335|1467614|2693|31772|92727|1146590|5056|8982|11|13|8|4|153|103|42|90.25|91.15|29.16|2603.58|1224.72|3790.50|3828.30|36.74|0.00|306.18|1224.72|1261.46|1530.90|1567.64|-2565.78| +2451801|66921|2451809|9577|49335|1467614|2693|31772|92727|1146590|5056|8982|2|13|5|3|271|103|53|24.93|29.91|16.15|729.28|855.95|1321.29|1585.23|8.55|0.00|443.61|855.95|864.50|1299.56|1308.11|-465.34| +2451801|66921|2451812|13781|49335|1467614|2693|31772|92727|1146590|5056|8982|2|8|8|1|141|103|34|67.19|124.97|77.48|1614.66|2634.32|2284.46|4248.98|56.90|1685.96|1317.16|948.36|1005.26|2265.52|2322.42|-1336.10| +2451801|66921|2451855|12643|49335|1467614|2693|31772|92727|1146590|5056|8982|59|26|1|5|109|103|80|38.90|93.36|41.07|4183.20|3285.60|3112.00|7468.80|165.59|1445.66|3360.80|1839.94|2005.53|5200.74|5366.33|-1272.06| +2451801|66921|2451853|697|49335|1467614|2693|31772|92727|1146590|5056|8982|31|8|14|3|32|103|45|97.50|206.70|128.15|3534.75|5766.75|4387.50|9301.50|0.00|0.00|4185.45|5766.75|5766.75|9952.20|9952.20|1379.25| +2451801|66921|2451806|8258|49335|1467614|2693|31772|92727|1146590|5056|8982|13|19|6|4|5|103|9|13.43|29.00|28.13|7.83|253.17|120.87|261.00|22.78|0.00|39.15|253.17|275.95|292.32|315.10|132.30| +2451801|66921|2451843|13649|49335|1467614|2693|31772|92727|1146590|5056|8982|11|19|4|5|209|103|10|11.20|24.19|20.31|38.80|203.10|112.00|241.90|4.06|0.00|53.20|203.10|207.16|256.30|260.36|91.10| +2451801|66921|2451868|10775|49335|1467614|2693|31772|92727|1146590|5056|8982|13|7|11|3|235|103|30|74.32|217.75|71.85|4377.00|2155.50|2229.60|6532.50|43.11|0.00|391.80|2155.50|2198.61|2547.30|2590.41|-74.10| +2451801|66921|2451821|4183|49335|1467614|2693|31772|92727|1146590|5056|8982|26|17|14|1|1|103|45|39.20|111.32|38.96|3256.20|1753.20|1764.00|5009.40|105.19|0.00|250.20|1753.20|1858.39|2003.40|2108.59|-10.80| +2451801|66921|2451876|11579|49335|1467614|2693|31772|92727|1146590|5056|8982|13|20|12|3|187|103|14|40.94|73.69|26.52|660.38|371.28|573.16|1031.66|3.71|0.00|92.82|371.28|374.99|464.10|467.81|-201.88| +2451801|66921|2451838|3997|49335|1467614|2693|31772|92727|1146590|5056|8982|8|8|12|2|229|103|36|67.84|107.86|4.31|3727.80|155.16|2442.24|3882.96|9.30|0.00|1669.32|155.16|164.46|1824.48|1833.78|-2287.08| +2451399|78997|2451452|2566|20053|1385627|1|45975|74401|1501553|5944|47518|25|16|5|1|117|104|66|19.51|25.36|20.54|318.12|1355.64|1287.66|1673.76|0.00|0.00|485.10|1355.64|1355.64|1840.74|1840.74|67.98| +2451399|78997|2451457|16580|20053|1385627|1|45975|74401|1501553|5944|47518|37|13|2|5|128|104|64|15.97|28.10|20.51|485.76|1312.64|1022.08|1798.40|65.63|0.00|449.28|1312.64|1378.27|1761.92|1827.55|290.56| +2451399|78997|2451473|7327|20053|1385627|1|45975|74401|1501553|5944|47518|50|20|3|5|250|104|45|15.18|16.84|0.50|735.30|22.50|683.10|757.80|1.35|0.00|280.35|22.50|23.85|302.85|304.20|-660.60| +2451399|78997|2451400|1975|20053|1385627|1|45975|74401|1501553|5944|47518|19|28|17|4|194|104|30|19.45|28.59|19.44|274.50|583.20|583.50|857.70|40.82|0.00|265.80|583.20|624.02|849.00|889.82|-0.30| +2451399|78997|2451488|7981|20053|1385627|1|45975|74401|1501553|5944|47518|10|28|11|5|109|104|93|57.81|126.60|86.08|3768.36|8005.44|5376.33|11773.80|80.05|0.00|5650.68|8005.44|8085.49|13656.12|13736.17|2629.11| +2451399|78997|2451419|5366|20053|1385627|1|45975|74401|1501553|5944|47518|13|20|15|4|83|104|20|71.81|113.45|38.57|1497.60|771.40|1436.20|2269.00|23.14|0.00|22.60|771.40|794.54|794.00|817.14|-664.80| +2451399|78997|2451460|836|20053|1385627|1|45975|74401|1501553|5944|47518|2|25|17|1|272|104|29|33.43|60.84|38.93|635.39|1128.97|969.47|1764.36|2.48|880.59|70.47|248.38|250.86|318.85|321.33|-721.09| +2451399|78997|2451415|28|20053|1385627|1|45975|74401|1501553|5944|47518|13|7|8|5|212|104|93|61.68|119.65|71.79|4450.98|6676.47|5736.24|11127.45|97.47|1802.64|3783.24|4873.83|4971.30|8657.07|8754.54|-862.41| +2451399|78997|2451505|15856|20053|1385627|1|45975|74401|1501553|5944|47518|44|4|16|4|162|104|43|46.75|67.32|28.27|1679.15|1215.61|2010.25|2894.76|97.24|0.00|781.31|1215.61|1312.85|1996.92|2094.16|-794.64| +2451399|78997|2451446|1808|20053|1385627|1|45975|74401|1501553|5944|47518|22|10|13|2|274|104|48|96.88|268.35|83.18|8888.16|3992.64|4650.24|12880.80|39.92|0.00|3219.84|3992.64|4032.56|7212.48|7252.40|-657.60| +2451399|78997|2451442|11455|20053|1385627|1|45975|74401|1501553|5944|47518|46|2|7|5|33|104|46|13.01|35.77|24.32|526.70|1118.72|598.46|1645.42|78.31|0.00|822.48|1118.72|1197.03|1941.20|2019.51|520.26| +2452631|48867|2452639|4227|53098|1635631|6517|3050|32917|1061448|5802|47535|30|18|3|2|51|105|61|79.32|134.05|50.93|5070.32|3106.73|4838.52|8177.05|186.40|0.00|3516.04|3106.73|3293.13|6622.77|6809.17|-1731.79| +2452631|48867|2452729|12030|53098|1635631|6517|3050|32917|1061448|5802|47535|54|19|6|4|72|105|68|43.97|58.04|9.28|3315.68|631.04|2989.96|3946.72|45.43|63.10|1736.04|567.94|613.37|2303.98|2349.41|-2422.02| +2452631|48867|2452667|6007|53098|1635631|6517|3050|32917|1061448|5802|47535|48|15|19|3|214|105|58|87.04|208.02|191.37|965.70|11099.46|5048.32|12065.16|332.98|0.00|2895.36|11099.46|11432.44|13994.82|14327.80|6051.14| +2452631|48867|2452667|16545|53098|1635631|6517|3050|32917|1061448|5802|47535|57|15|17|1|215|105|86|32.79|37.05|22.97|1210.88|1975.42|2819.94|3186.30|79.01|0.00|381.84|1975.42|2054.43|2357.26|2436.27|-844.52| +2452631|48867|2452709|3009|53098|1635631|6517|3050|32917|1061448|5802|47535|1|18|7|5|26|105|11|13.74|36.13|6.50|325.93|71.50|151.14|397.43|1.43|0.00|150.92|71.50|72.93|222.42|223.85|-79.64| +2452631|48867|2452672|10311|53098|1635631|6517|3050|32917|1061448|5802|47535|51|1|19|4|122|105|65|55.00|164.45|23.02|9192.95|1496.30|3575.00|10689.25|74.81|0.00|5130.45|1496.30|1571.11|6626.75|6701.56|-2078.70| +2452631|48867|2452724|14829|53098|1635631|6517|3050|32917|1061448|5802|47535|18|9|11|5|106|105|79|38.58|42.05|36.58|432.13|2889.82|3047.82|3321.95|115.59|0.00|1494.68|2889.82|3005.41|4384.50|4500.09|-158.00| +2452631|48867|2452677|253|53098|1635631|6517|3050|32917|1061448|5802|47535|37|21|3|5|227|105|16|50.94|69.27|16.62|842.40|265.92|815.04|1108.32|13.29|0.00|398.88|265.92|279.21|664.80|678.09|-549.12| +2451543|52256|2451607|7480|64090|1631987|5931|5828|68628|931425|4366|33910|46|4|15|2|99|106|2|58.91|174.37|31.38|285.98|62.76|117.82|348.74|1.58|40.16|83.68|22.60|24.18|106.28|107.86|-95.22| +2451543|52256|2451635|6049|64090|1631987|5931|5828|68628|931425|4366|33910|25|4|13|5|100|106|61|40.57|87.63|53.45|2084.98|3260.45|2474.77|5345.43|36.51|2738.77|53.07|521.68|558.19|574.75|611.26|-1953.09| +2451543|52256|2451610|12253|64090|1631987|5931|5828|68628|931425|4366|33910|26|22|13|4|105|106|38|27.85|37.59|5.26|1228.54|199.88|1058.30|1428.42|9.99|0.00|471.20|199.88|209.87|671.08|681.07|-858.42| +2451543|52256|2451597|14788|64090|1631987|5931|5828|68628|931425|4366|33910|32|14|19|5|131|106|99|60.39|169.69|6.78|16128.09|671.22|5978.61|16799.31|0.00|0.00|1175.13|671.22|671.22|1846.35|1846.35|-5307.39| +2451543|52256|2451660|15571|64090|1631987|5931|5828|68628|931425|4366|33910|25|13|4|3|132|106|7|59.17|130.17|0.00|911.19|0.00|414.19|911.19|0.00|0.00|346.22|0.00|0.00|346.22|346.22|-414.19| +2451543|52256|2451656|8302|64090|1631987|5931|5828|68628|931425|4366|33910|14|22|3|2|248|106|23|13.54|38.31|9.57|661.02|220.11|311.42|881.13|6.60|0.00|26.22|220.11|226.71|246.33|252.93|-91.31| +2451543|52256|2451574|4561|64090|1631987|5931|5828|68628|931425|4366|33910|4|26|12|3|271|106|70|72.72|212.34|188.98|1635.20|13228.60|5090.40|14863.80|132.28|0.00|1337.70|13228.60|13360.88|14566.30|14698.58|8138.20| +2451543|52256|2451559|5906|64090|1631987|5931|5828|68628|931425|4366|33910|7|28|3|4|235|106|17|93.18|165.86|14.92|2565.98|253.64|1584.06|2819.62|12.68|0.00|873.97|253.64|266.32|1127.61|1140.29|-1330.42| +2451543|52256|2451551|11128|64090|1631987|5931|5828|68628|931425|4366|33910|26|16|11|3|135|106|84|74.07|186.65|63.46|10347.96|5330.64|6221.88|15678.60|266.53|0.00|3762.36|5330.64|5597.17|9093.00|9359.53|-891.24| +2451543|52256|2451624|13357|64090|1631987|5931|5828|68628|931425|4366|33910|49|10|14|5|196|106|10|26.53|49.87|40.89|89.80|408.90|265.30|498.70|8.17|0.00|4.90|408.90|417.07|413.80|421.97|143.60| +2451543|52256|2451661|10306|64090|1631987|5931|5828|68628|931425|4366|33910|1|2|3|4|275|106|87|66.12|76.69|71.32|467.19|6204.84|5752.44|6672.03|62.04|0.00|1133.61|6204.84|6266.88|7338.45|7400.49|452.40| +2452514|44258|2452551|9702|84254|286093|2332|40971|56255|1211796|3288|16280|21|21|14|2|50|107|87|81.12|200.36|4.00|17083.32|348.00|7057.44|17431.32|0.00|0.00|8540.79|348.00|348.00|8888.79|8888.79|-6709.44| +2452514|44258|2452631|1641|84254|286093|2332|40971|56255|1211796|3288|16280|33|25|9|2|68|107|6|32.83|52.85|41.22|69.78|247.32|196.98|317.10|0.00|0.00|34.86|247.32|247.32|282.18|282.18|50.34| +2452514|44258|2452551|4099|84254|286093|2332|40971|56255|1211796|3288|16280|51|15|17|1|268|107|13|8.21|13.13|0.52|163.93|6.76|106.73|170.69|0.00|0.00|27.30|6.76|6.76|34.06|34.06|-99.97| +2452514|44258|2452582|8958|84254|286093|2332|40971|56255|1211796|3288|16280|45|24|11|2|256|107|68|68.75|76.31|67.15|622.88|4566.20|4675.00|5189.08|0.00|4246.56|2542.52|319.64|319.64|2862.16|2862.16|-4355.36| +2452514|44258|2452527|17131|84254|286093|2332|40971|56255|1211796|3288|16280|36|7|3|4|8|107|81|71.52|142.32|96.77|3689.55|7838.37|5793.12|11527.92|391.91|0.00|2536.11|7838.37|8230.28|10374.48|10766.39|2045.25| +2452514|44258|2452571|7831|84254|286093|2332|40971|56255|1211796|3288|16280|24|19|15|3|228|107|75|14.97|24.25|10.42|1037.25|781.50|1122.75|1818.75|31.26|0.00|836.25|781.50|812.76|1617.75|1649.01|-341.25| +2452514|44258|2452613|12825|84254|286093|2332|40971|56255|1211796|3288|16280|36|12|7|5|23|107|70|26.02|34.60|5.53|2034.90|387.10|1821.40|2422.00|27.09|0.00|1040.90|387.10|414.19|1428.00|1455.09|-1434.30| +2452514|44258|2452574|3745|84254|286093|2332|40971|56255|1211796|3288|16280|55|27|3|4|78|107|45|76.52|205.07|166.10|1753.65|7474.50|3443.40|9228.15|597.96|0.00|1476.45|7474.50|8072.46|8950.95|9548.91|4031.10| +2451262|36450|2451375|16|64734|1100959|1184|28609|89258|1248852|2084|47109|20|20|4|4|237|108|4|1.52|3.72|2.93|3.16|11.72|6.08|14.88|0.82|0.00|6.84|11.72|12.54|18.56|19.38|5.64| +2451262|36450|2451378|2408|64734|1100959|1184|28609|89258|1248852|2084|47109|50|2|8|4|80|108|42|57.11|100.51|2.01|4137.00|84.42|2398.62|4221.42|0.00|0.00|379.68|84.42|84.42|464.10|464.10|-2314.20| +2451262|36450|2451360|16178|64734|1100959|1184|28609|89258|1248852|2084|47109|37|28|18|4|130|108|90|22.11|55.93|50.33|504.00|4529.70|1989.90|5033.70|407.67|0.00|804.60|4529.70|4937.37|5334.30|5741.97|2539.80| +2451262|36450|2451305|11641|64734|1100959|1184|28609|89258|1248852|2084|47109|28|4|11|2|230|108|36|8.38|8.54|0.42|292.32|15.12|301.68|307.44|0.30|0.00|73.44|15.12|15.42|88.56|88.86|-286.56| +2451262|36450|2451354|1897|64734|1100959|1184|28609|89258|1248852|2084|47109|1|28|19|3|200|108|90|20.82|27.27|25.08|197.10|2257.20|1873.80|2454.30|180.57|0.00|564.30|2257.20|2437.77|2821.50|3002.07|383.40| +2451262|36450|2451281|1465|64734|1100959|1184|28609|89258|1248852|2084|47109|32|26|18|5|72|108|2|65.83|168.52|0.00|337.04|0.00|131.66|337.04|0.00|0.00|20.22|0.00|0.00|20.22|20.22|-131.66| +2451262|36450|2451344|16429|64734|1100959|1184|28609|89258|1248852|2084|47109|56|14|17|1|275|108|25|78.25|155.71|45.15|2764.00|1128.75|1956.25|3892.75|67.72|0.00|1868.50|1128.75|1196.47|2997.25|3064.97|-827.50| +2451262|36450|2451322|9544|64734|1100959|1184|28609|89258|1248852|2084|47109|40|4|12|4|16|108|12|59.96|137.90|119.97|215.16|1439.64|719.52|1654.80|86.37|0.00|463.32|1439.64|1526.01|1902.96|1989.33|720.12| +2451262|36450|2451348|5617|64734|1100959|1184|28609|89258|1248852|2084|47109|38|28|20|5|180|108|3|20.17|56.87|7.96|146.73|23.88|60.51|170.61|0.71|0.00|56.28|23.88|24.59|80.16|80.87|-36.63| +2451262|36450|2451285|10292|64734|1100959|1184|28609|89258|1248852|2084|47109|31|19|4|3|112|108|91|1.49|2.74|0.43|210.21|39.13|135.59|249.34|0.78|0.00|57.33|39.13|39.91|96.46|97.24|-96.46| +2451262|36450|2451378|14335|64734|1100959|1184|28609|89258|1248852|2084|47109|25|26|15|1|47|108|80|33.54|74.12|42.98|2491.20|3438.40|2683.20|5929.60|275.07|0.00|2016.00|3438.40|3713.47|5454.40|5729.47|755.20| +2451262|36450|2451334|2402|64734|1100959|1184|28609|89258|1248852|2084|47109|34|8|2|4|266|108|97|76.34|90.08|36.93|5155.55|3582.21|7404.98|8737.76|35.82|0.00|436.50|3582.21|3618.03|4018.71|4054.53|-3822.77| +2451734|36966|2451816|1841|44486|616499|6559|1019|74634|1620204|4752|3965|2|17|6|3|300|109|54|79.85|189.24|52.98|7358.04|2860.92|4311.90|10218.96|257.48|0.00|3474.36|2860.92|3118.40|6335.28|6592.76|-1450.98| +2451734|36966|2451784|9719|44486|616499|6559|1019|74634|1620204|4752|3965|50|29|1|2|273|109|36|61.67|178.84|110.88|2446.56|3991.68|2220.12|6438.24|319.33|0.00|3090.24|3991.68|4311.01|7081.92|7401.25|1771.56| +2451734|36966|2451768|17579|44486|616499|6559|1019|74634|1620204|4752|3965|26|29|6|2|205|109|48|18.39|45.60|39.21|306.72|1882.08|882.72|2188.80|37.64|0.00|678.24|1882.08|1919.72|2560.32|2597.96|999.36| +2451734|36966|2451848|7657|44486|616499|6559|1019|74634|1620204|4752|3965|26|25|2|1|280|109|60|22.50|46.80|19.18|1657.20|1150.80|1350.00|2808.00|67.66|184.12|0.00|966.68|1034.34|966.68|1034.34|-383.32| +2451734|36966|2451854|8921|44486|616499|6559|1019|74634|1620204|4752|3965|59|23|17|4|191|109|9|58.35|61.85|40.82|189.27|367.38|525.15|556.65|3.67|0.00|55.62|367.38|371.05|423.00|426.67|-157.77| +2451734|36966|2451853|10304|44486|616499|6559|1019|74634|1620204|4752|3965|35|7|3|4|135|109|62|47.58|56.14|25.82|1879.84|1600.84|2949.96|3480.68|64.03|0.00|835.14|1600.84|1664.87|2435.98|2500.01|-1349.12| +2451734|36966|2451801|17033|44486|616499|6559|1019|74634|1620204|4752|3965|44|2|14|3|112|109|83|25.29|58.41|35.04|1939.71|2908.32|2099.07|4848.03|145.41|0.00|678.11|2908.32|3053.73|3586.43|3731.84|809.25| +2451734|36966|2451811|17624|44486|616499|6559|1019|74634|1620204|4752|3965|47|11|15|2|109|109|69|11.22|32.08|27.58|310.50|1903.02|774.18|2213.52|20.55|875.38|287.73|1027.64|1048.19|1315.37|1335.92|253.46| +2451734|36966|2451751|16097|44486|616499|6559|1019|74634|1620204|4752|3965|59|26|11|5|139|109|32|44.18|69.80|23.03|1496.64|736.96|1413.76|2233.60|29.47|0.00|558.40|736.96|766.43|1295.36|1324.83|-676.80| +2451734|36966|2451763|5587|44486|616499|6559|1019|74634|1620204|4752|3965|56|20|20|2|114|109|26|73.70|168.03|166.34|43.94|4324.84|1916.20|4368.78|259.49|0.00|1572.74|4324.84|4584.33|5897.58|6157.07|2408.64| +2451734|36966|2451774|4003|44486|616499|6559|1019|74634|1620204|4752|3965|50|13|15|3|241|109|97|58.70|78.65|47.97|2975.96|4653.09|5693.90|7629.05|372.24|0.00|152.29|4653.09|5025.33|4805.38|5177.62|-1040.81| +2451734|36966|2451793|8551|44486|616499|6559|1019|74634|1620204|4752|3965|49|20|17|3|149|109|17|53.85|54.92|25.81|494.87|438.77|915.45|933.64|13.16|0.00|18.53|438.77|451.93|457.30|470.46|-476.68| +2451734|36966|2451804|14111|44486|616499|6559|1019|74634|1620204|4752|3965|55|1|17|5|26|109|33|14.68|42.86|30.85|396.33|1018.05|484.44|1414.38|20.36|0.00|254.43|1018.05|1038.41|1272.48|1292.84|533.61| +2451734|36966|2451754|14189|44486|616499|6559|1019|74634|1620204|4752|3965|35|11|4|4|277|109|70|20.80|41.60|2.08|2766.40|145.60|1456.00|2912.00|10.19|0.00|698.60|145.60|155.79|844.20|854.39|-1310.40| +2451734|36966|2451839|1970|44486|616499|6559|1019|74634|1620204|4752|3965|5|23|4|1|25|109|11|88.95|128.97|82.54|510.73|907.94|978.45|1418.67|45.39|0.00|0.00|907.94|953.33|907.94|953.33|-70.51| +2451734|36966|2451828|4805|44486|616499|6559|1019|74634|1620204|4752|3965|50|13|11|2|26|109|87|89.49|259.52|41.52|18966.00|3612.24|7785.63|22578.24|97.53|361.22|7676.01|3251.02|3348.55|10927.03|11024.56|-4534.61| +2451904|38622|2452018|9077|11364|1823136|508|280|1585|1022397|1196|2168|55|5|8|3|288|110|36|8.73|24.96|15.22|350.64|547.92|314.28|898.56|43.83|0.00|305.28|547.92|591.75|853.20|897.03|233.64| +2451904|38622|2451952|7544|11364|1823136|508|280|1585|1022397|1196|2168|53|20|12|1|67|110|46|94.91|282.83|280.00|130.18|12880.00|4365.86|13010.18|644.00|0.00|5203.98|12880.00|13524.00|18083.98|18727.98|8514.14| +2451904|38622|2451970|2309|11364|1823136|508|280|1585|1022397|1196|2168|35|23|3|4|98|110|18|93.44|231.73|222.46|166.86|4004.28|1681.92|4171.14|80.08|0.00|583.92|4004.28|4084.36|4588.20|4668.28|2322.36| +2451904|38622|2452021|13505|11364|1823136|508|280|1585|1022397|1196|2168|20|20|18|3|48|110|4|23.94|44.28|33.65|42.52|134.60|95.76|177.12|6.73|0.00|5.28|134.60|141.33|139.88|146.61|38.84| +2451904|38622|2451947|3020|11364|1823136|508|280|1585|1022397|1196|2168|8|25|4|2|293|110|93|63.14|70.71|0.70|6510.93|65.10|5872.02|6576.03|2.60|0.00|1709.34|65.10|67.70|1774.44|1777.04|-5806.92| +2451904|38622|2451963|1196|11364|1823136|508|280|1585|1022397|1196|2168|43|7|16|3|10|110|35|96.55|100.41|55.22|1581.65|1932.70|3379.25|3514.35|1.93|1836.06|1335.25|96.64|98.57|1431.89|1433.82|-3282.61| +2451904|38622|2451915|6331|11364|1823136|508|280|1585|1022397|1196|2168|11|17|5|3|34|110|90|69.39|172.08|86.04|7743.60|7743.60|6245.10|15487.20|542.05|0.00|1083.60|7743.60|8285.65|8827.20|9369.25|1498.50| +2451904|38622|2451968|968|11364|1823136|508|280|1585|1022397|1196|2168|50|1|9|4|182|110|9|30.38|49.82|49.82|0.00|448.38|273.42|448.38|13.45|0.00|197.28|448.38|461.83|645.66|659.11|174.96| +2451904|38622|2451959|13127|11364|1823136|508|280|1585|1022397|1196|2168|37|20|20|2|294|110|12|83.42|115.11|112.80|27.72|1353.60|1001.04|1381.32|40.60|0.00|469.56|1353.60|1394.20|1823.16|1863.76|352.56| +2451904|38622|2451963|6761|11364|1823136|508|280|1585|1022397|1196|2168|55|29|2|4|149|110|45|18.11|51.43|34.97|740.70|1573.65|814.95|2314.35|78.68|0.00|486.00|1573.65|1652.33|2059.65|2138.33|758.70| +2451904|38622|2452001|11630|11364|1823136|508|280|1585|1022397|1196|2168|17|8|18|4|247|110|53|95.41|209.90|159.52|2670.14|8454.56|5056.73|11124.70|338.18|0.00|2224.94|8454.56|8792.74|10679.50|11017.68|3397.83| +2451904|38622|2451975|15901|11364|1823136|508|280|1585|1022397|1196|2168|50|7|5|3|81|110|42|85.97|112.62|29.28|3500.28|1229.76|3610.74|4730.04|86.08|0.00|2081.10|1229.76|1315.84|3310.86|3396.94|-2380.98| +2451904|38622|2451974|17156|11364|1823136|508|280|1585|1022397|1196|2168|13|23|17|2|27|110|86|89.21|96.34|63.58|2817.36|5467.88|7672.06|8285.24|313.85|984.21|2070.88|4483.67|4797.52|6554.55|6868.40|-3188.39| +2452248|60861|2452283|14015|95403|1522037|5024|7658|52062|966341|5866|34900|15|11|4|2|113|111|5|2.28|6.36|6.16|1.00|30.80|11.40|31.80|0.30|0.00|15.90|30.80|31.10|46.70|47.00|19.40| +2452248|60861|2452284|5785|95403|1522037|5024|7658|52062|966341|5866|34900|53|5|16|2|88|111|10|3.19|4.68|0.65|40.30|6.50|31.90|46.80|0.13|0.00|6.00|6.50|6.63|12.50|12.63|-25.40| +2452248|60861|2452311|8125|95403|1522037|5024|7658|52062|966341|5866|34900|45|25|3|3|43|111|62|52.55|118.23|96.94|1319.98|6010.28|3258.10|7330.26|420.71|0.00|1979.04|6010.28|6430.99|7989.32|8410.03|2752.18| +2452248|60861|2452252|5099|95403|1522037|5024|7658|52062|966341|5866|34900|35|23|6|5|271|111|5|96.31|205.14|108.72|482.10|543.60|481.55|1025.70|5.43|0.00|0.00|543.60|549.03|543.60|549.03|62.05| +2452248|60861|2452320|6593|95403|1522037|5024|7658|52062|966341|5866|34900|45|25|13|5|260|111|93|97.38|282.40|220.27|5778.09|20485.11|9056.34|26263.20|409.70|0.00|9192.12|20485.11|20894.81|29677.23|30086.93|11428.77| +2452248|60861|2452346|11909|95403|1522037|5024|7658|52062|966341|5866|34900|49|3|16|3|300|111|19|4.25|6.03|1.92|78.09|36.48|80.75|114.57|0.50|19.69|37.62|16.79|17.29|54.41|54.91|-63.96| +2452248|60861|2452252|1219|95403|1522037|5024|7658|52062|966341|5866|34900|21|15|15|2|269|111|61|60.64|79.43|43.68|2180.75|2664.48|3699.04|4845.23|186.51|0.00|823.50|2664.48|2850.99|3487.98|3674.49|-1034.56| +2452248|60861|2452301|607|95403|1522037|5024|7658|52062|966341|5866|34900|9|23|9|4|236|111|28|98.39|225.31|6.75|6119.68|189.00|2754.92|6308.68|15.12|0.00|2901.92|189.00|204.12|3090.92|3106.04|-2565.92| +2452248|60861|2452328|2369|95403|1522037|5024|7658|52062|966341|5866|34900|7|7|14|4|274|111|52|1.53|4.08|0.81|170.04|42.12|79.56|212.16|0.84|0.00|22.88|42.12|42.96|65.00|65.84|-37.44| +2452248|60861|2452276|12715|95403|1522037|5024|7658|52062|966341|5866|34900|19|13|1|3|192|111|51|60.51|101.65|64.03|1918.62|3265.53|3086.01|5184.15|11.75|3069.59|1554.99|195.94|207.69|1750.93|1762.68|-2890.07| +2452248|60861|2452362|14245|95403|1522037|5024|7658|52062|966341|5866|34900|25|21|2|5|208|111|53|12.46|23.54|11.29|649.25|598.37|660.38|1247.62|47.86|0.00|162.18|598.37|646.23|760.55|808.41|-62.01| +2452248|60861|2452363|11263|95403|1522037|5024|7658|52062|966341|5866|34900|59|23|14|3|25|111|99|40.55|66.50|65.17|131.67|6451.83|4014.45|6583.50|63.22|3290.43|723.69|3161.40|3224.62|3885.09|3948.31|-853.05| +2451102|51665|2451114|3932|38145|706220|7095|3217|18735|1616489|5889|28764|20|22|20|3|149|112|77|33.03|36.00|1.80|2633.40|138.60|2543.31|2772.00|5.54|0.00|471.24|138.60|144.14|609.84|615.38|-2404.71| +2451102|51665|2451146|11294|38145|706220|7095|3217|18735|1616489|5889|28764|22|28|8|3|271|112|75|36.50|86.87|83.39|261.00|6254.25|2737.50|6515.25|562.88|0.00|1954.50|6254.25|6817.13|8208.75|8771.63|3516.75| +2451102|51665|2451207|8833|38145|706220|7095|3217|18735|1616489|5889|28764|13|28|6|4|212|112|22|86.95|149.55|0.00|3290.10|0.00|1912.90|3290.10|0.00|0.00|1348.82|0.00|0.00|1348.82|1348.82|-1912.90| +2451102|51665|2451200|9751|38145|706220|7095|3217|18735|1616489|5889|28764|2|28|8|1|181|112|14|23.44|30.94|16.08|208.04|225.12|328.16|433.16|6.75|0.00|0.00|225.12|231.87|225.12|231.87|-103.04| +2451102|51665|2451169|5707|38145|706220|7095|3217|18735|1616489|5889|28764|52|26|18|5|72|112|78|62.85|175.98|170.70|411.84|13314.60|4902.30|13726.44|197.05|3461.79|3568.50|9852.81|10049.86|13421.31|13618.36|4950.51| +2451102|51665|2451181|11576|38145|706220|7095|3217|18735|1616489|5889|28764|49|28|5|3|98|112|69|29.32|77.40|71.98|373.98|4966.62|2023.08|5340.60|71.51|1390.65|2029.29|3575.97|3647.48|5605.26|5676.77|1552.89| +2451102|51665|2451124|14108|38145|706220|7095|3217|18735|1616489|5889|28764|19|19|13|1|206|112|95|84.72|158.42|125.15|3160.65|11889.25|8048.40|15049.90|0.00|0.00|2558.35|11889.25|11889.25|14447.60|14447.60|3840.85| +2451102|51665|2451151|9788|38145|706220|7095|3217|18735|1616489|5889|28764|7|22|3|1|209|112|8|9.21|19.06|9.72|74.72|77.76|73.68|152.48|1.64|36.54|60.96|41.22|42.86|102.18|103.82|-32.46| +2451102|51665|2451130|578|38145|706220|7095|3217|18735|1616489|5889|28764|31|1|19|2|32|112|2|62.33|152.08|48.66|206.84|97.32|124.66|304.16|3.40|29.19|48.66|68.13|71.53|116.79|120.19|-56.53| +2451102|51665|2451189|721|38145|706220|7095|3217|18735|1616489|5889|28764|7|19|6|2|88|112|34|7.80|23.40|14.27|310.42|485.18|265.20|795.60|43.66|0.00|111.18|485.18|528.84|596.36|640.02|219.98| +2451102|51665|2451219|772|38145|706220|7095|3217|18735|1616489|5889|28764|4|8|7|4|94|112|54|18.72|25.64|5.38|1094.04|290.52|1010.88|1384.56|2.90|0.00|262.98|290.52|293.42|553.50|556.40|-720.36| +2451102|51665|2451159|2521|38145|706220|7095|3217|18735|1616489|5889|28764|19|16|18|2|66|112|3|97.95|225.28|148.68|229.80|446.04|293.85|675.84|19.00|129.35|195.99|316.69|335.69|512.68|531.68|22.84| +2451102|51665|2451174|11065|38145|706220|7095|3217|18735|1616489|5889|28764|31|10|6|1|36|112|21|19.69|27.76|26.92|17.64|565.32|413.49|582.96|11.30|0.00|5.67|565.32|576.62|570.99|582.29|151.83| +2451878|54989|2451916|17690|11575|599644|2113|44229|81040|173113|2036|26552|23|14|4|5|93|113|30|85.87|211.24|173.21|1140.90|5196.30|2576.10|6337.20|311.77|0.00|63.30|5196.30|5508.07|5259.60|5571.37|2620.20| +2451878|54989|2451933|6803|11575|599644|2113|44229|81040|173113|2036|26552|29|20|7|3|299|113|29|57.63|154.44|46.33|3135.19|1343.57|1671.27|4478.76|0.00|0.00|1074.74|1343.57|1343.57|2418.31|2418.31|-327.70| +2451878|54989|2451928|2059|11575|599644|2113|44229|81040|173113|2036|26552|38|25|3|3|223|113|54|4.79|10.15|9.54|32.94|515.16|258.66|548.10|1.13|401.82|180.36|113.34|114.47|293.70|294.83|-145.32| +2451878|54989|2451955|2675|11575|599644|2113|44229|81040|173113|2036|26552|49|23|12|2|169|113|6|77.77|174.98|69.99|629.94|419.94|466.62|1049.88|0.25|394.74|0.00|25.20|25.45|25.20|25.45|-441.42| +2451878|54989|2451945|3013|11575|599644|2113|44229|81040|173113|2036|26552|49|13|2|4|59|113|27|96.35|188.84|173.73|407.97|4690.71|2601.45|5098.68|281.44|0.00|1835.46|4690.71|4972.15|6526.17|6807.61|2089.26| +2451878|54989|2451952|17425|11575|599644|2113|44229|81040|173113|2036|26552|49|5|11|1|94|113|7|17.75|44.90|26.94|125.72|188.58|124.25|314.30|11.31|0.00|91.14|188.58|199.89|279.72|291.03|64.33| +2451878|54989|2451996|12950|11575|599644|2113|44229|81040|173113|2036|26552|14|11|14|5|203|113|75|10.67|16.53|10.57|447.00|792.75|800.25|1239.75|63.42|0.00|446.25|792.75|856.17|1239.00|1302.42|-7.50| +2451878|54989|2451950|455|11575|599644|2113|44229|81040|173113|2036|26552|43|14|4|5|296|113|51|96.52|126.44|63.22|3224.22|3224.22|4922.52|6448.44|128.96|0.00|386.58|3224.22|3353.18|3610.80|3739.76|-1698.30| +2451878|54989|2451965|4298|11575|599644|2113|44229|81040|173113|2036|26552|5|1|6|1|279|113|68|3.77|6.10|5.73|25.16|389.64|256.36|414.80|7.79|0.00|207.40|389.64|397.43|597.04|604.83|133.28| +2451878|54989|2451915|7639|11575|599644|2113|44229|81040|173113|2036|26552|29|25|1|1|14|113|54|10.56|30.30|5.75|1325.70|310.50|570.24|1636.20|1.86|124.20|408.78|186.30|188.16|595.08|596.94|-383.94| +2451878|54989|2451959|3359|11575|599644|2113|44229|81040|173113|2036|26552|44|2|14|3|232|113|51|73.77|178.52|7.14|8740.38|364.14|3762.27|9104.52|14.56|0.00|4278.90|364.14|378.70|4643.04|4657.60|-3398.13| +2451878|54989|2451922|14084|11575|599644|2113|44229|81040|173113|2036|26552|26|14|12|1|290|113|38|71.70|204.34|183.90|776.72|6988.20|2724.60|7764.92|209.64|0.00|2795.28|6988.20|7197.84|9783.48|9993.12|4263.60| +2451878|54989|2451937|16837|11575|599644|2113|44229|81040|173113|2036|26552|35|13|6|3|237|113|38|26.48|72.55|68.92|137.94|2618.96|1006.24|2756.90|0.00|497.60|358.34|2121.36|2121.36|2479.70|2479.70|1115.12| +2451878|54989|2451901|10831|11575|599644|2113|44229|81040|173113|2036|26552|17|23|5|3|111|113|81|59.30|116.82|68.92|3879.90|5582.52|4803.30|9462.42|502.42|0.00|283.50|5582.52|6084.94|5866.02|6368.44|779.22| +2452221|67128|2452253|10055|81152|1540093|1787|13481|21177|206842|2257|12351|29|3|2|4|16|114|64|58.78|88.75|6.21|5282.56|397.44|3761.92|5680.00|15.89|0.00|1817.60|397.44|413.33|2215.04|2230.93|-3364.48| +2452221|67128|2452339|5223|81152|1540093|1787|13481|21177|206842|2257|12351|5|1|12|5|131|114|39|88.29|183.64|167.11|644.67|6517.29|3443.31|7161.96|586.55|0.00|644.28|6517.29|7103.84|7161.57|7748.12|3073.98| +2452221|67128|2452313|14329|81152|1540093|1787|13481|21177|206842|2257|12351|25|23|1|2|16|114|21|97.11|247.63|240.20|156.03|5044.20|2039.31|5200.23|252.21|0.00|1715.91|5044.20|5296.41|6760.11|7012.32|3004.89| +2452221|67128|2452307|223|81152|1540093|1787|13481|21177|206842|2257|12351|49|23|9|4|266|114|42|82.60|246.97|22.22|9439.50|933.24|3469.20|10372.74|1.95|867.91|3215.52|65.33|67.28|3280.85|3282.80|-3403.87| +2452221|67128|2452243|12413|81152|1540093|1787|13481|21177|206842|2257|12351|21|5|5|2|2|114|35|67.82|185.82|65.03|4227.65|2276.05|2373.70|6503.70|182.08|0.00|780.15|2276.05|2458.13|3056.20|3238.28|-97.65| +2452221|67128|2452230|11599|81152|1540093|1787|13481|21177|206842|2257|12351|5|19|7|4|61|114|67|35.04|46.60|23.30|1561.10|1561.10|2347.68|3122.20|15.61|0.00|936.66|1561.10|1576.71|2497.76|2513.37|-786.58| +2452221|67128|2452297|8017|81152|1540093|1787|13481|21177|206842|2257|12351|49|25|11|4|120|114|61|22.02|42.05|9.67|1975.18|589.87|1343.22|2565.05|29.49|0.00|307.44|589.87|619.36|897.31|926.80|-753.35| +2452221|67128|2452271|2833|81152|1540093|1787|13481|21177|206842|2257|12351|33|13|17|2|157|114|23|69.64|114.20|91.36|525.32|2101.28|1601.72|2626.60|105.06|0.00|603.98|2101.28|2206.34|2705.26|2810.32|499.56| +2452221|67128|2452275|11175|81152|1540093|1787|13481|21177|206842|2257|12351|3|1|13|2|164|114|34|83.22|182.25|134.86|1611.26|4585.24|2829.48|6196.50|0.00|0.00|1053.32|4585.24|4585.24|5638.56|5638.56|1755.76| +2452221|67128|2452341|611|81152|1540093|1787|13481|21177|206842|2257|12351|57|19|4|5|6|114|5|53.98|121.99|50.01|359.90|250.05|269.90|609.95|22.50|0.00|134.15|250.05|272.55|384.20|406.70|-19.85| +2452221|67128|2452226|6647|81152|1540093|1787|13481|21177|206842|2257|12351|11|13|5|1|77|114|12|69.88|79.66|43.81|430.20|525.72|838.56|955.92|42.05|0.00|248.52|525.72|567.77|774.24|816.29|-312.84| +2452221|67128|2452234|5085|81152|1540093|1787|13481|21177|206842|2257|12351|25|13|1|5|199|114|49|54.72|154.31|138.87|756.56|6804.63|2681.28|7561.19|476.32|0.00|3478.02|6804.63|7280.95|10282.65|10758.97|4123.35| +2452221|67128|2452228|14537|81152|1540093|1787|13481|21177|206842|2257|12351|43|3|9|4|136|114|63|73.81|200.76|68.25|8348.13|4299.75|4650.03|12647.88|343.98|0.00|3667.86|4299.75|4643.73|7967.61|8311.59|-350.28| +2452221|67128|2452310|11373|81152|1540093|1787|13481|21177|206842|2257|12351|39|11|5|1|160|114|80|6.68|7.94|6.74|96.00|539.20|534.40|635.20|43.13|0.00|113.60|539.20|582.33|652.80|695.93|4.80| +2452221|67128|2452233|9291|81152|1540093|1787|13481|21177|206842|2257|12351|27|15|12|4|283|114|25|31.10|53.49|14.44|976.25|361.00|777.50|1337.25|0.00|0.00|173.75|361.00|361.00|534.75|534.75|-416.50| +2452221|67128|2452297|10619|81152|1540093|1787|13481|21177|206842|2257|12351|29|9|8|3|238|114|33|5.29|10.47|5.65|159.06|186.45|174.57|345.51|9.24|70.85|124.08|115.60|124.84|239.68|248.92|-58.97| +2451151|15600|2451221|11689|6582|1340820|5458|13649|79843|1871584|3563|34601|1|7|7|2|50|115|37|96.20|169.31|145.60|877.27|5387.20|3559.40|6264.47|215.48|0.00|62.53|5387.20|5602.68|5449.73|5665.21|1827.80| +2451151|15600|2451253|15208|6582|1340820|5458|13649|79843|1871584|3563|34601|31|28|4|5|289|115|92|71.31|110.53|51.94|5390.28|4778.48|6560.52|10168.76|382.27|0.00|406.64|4778.48|5160.75|5185.12|5567.39|-1782.04| +2451151|15600|2451257|4948|6582|1340820|5458|13649|79843|1871584|3563|34601|1|16|20|3|49|115|52|59.19|102.99|4.11|5141.76|213.72|3077.88|5355.48|6.41|0.00|2249.00|213.72|220.13|2462.72|2469.13|-2864.16| +2451151|15600|2451257|13024|6582|1340820|5458|13649|79843|1871584|3563|34601|50|10|6|1|276|115|49|55.13|135.06|90.49|2183.93|4434.01|2701.37|6617.94|177.36|0.00|727.65|4434.01|4611.37|5161.66|5339.02|1732.64| +2451151|15600|2451181|13054|6582|1340820|5458|13649|79843|1871584|3563|34601|26|20|8|2|159|115|6|49.20|126.44|69.54|341.40|417.24|295.20|758.64|25.03|0.00|22.74|417.24|442.27|439.98|465.01|122.04| +2451151|15600|2451270|1378|6582|1340820|5458|13649|79843|1871584|3563|34601|10|28|14|3|282|115|15|8.04|18.09|14.83|48.90|222.45|120.60|271.35|4.87|60.06|40.65|162.39|167.26|203.04|207.91|41.79| +2451151|15600|2451211|10928|6582|1340820|5458|13649|79843|1871584|3563|34601|40|25|8|3|5|115|49|74.34|155.37|138.27|837.90|6775.23|3642.66|7613.13|406.51|0.00|3121.30|6775.23|7181.74|9896.53|10303.04|3132.57| +2451151|15600|2451262|1732|6582|1340820|5458|13649|79843|1871584|3563|34601|16|14|14|3|12|115|51|25.73|72.30|29.64|2175.66|1511.64|1312.23|3687.30|75.58|0.00|1732.98|1511.64|1587.22|3244.62|3320.20|199.41| +2451151|15600|2451162|17470|6582|1340820|5458|13649|79843|1871584|3563|34601|46|26|4|4|104|115|9|43.24|79.12|46.68|291.96|420.12|389.16|712.08|4.20|0.00|291.87|420.12|424.32|711.99|716.19|30.96| +2451151|15600|2451209|658|6582|1340820|5458|13649|79843|1871584|3563|34601|28|1|17|3|109|115|21|48.83|105.96|90.06|333.90|1891.26|1025.43|2225.16|0.00|0.00|600.60|1891.26|1891.26|2491.86|2491.86|865.83| +2451151|15600|2451235|13201|6582|1340820|5458|13649|79843|1871584|3563|34601|58|26|18|2|176|115|77|84.71|223.63|169.95|4133.36|13086.15|6522.67|17219.51|467.17|6412.21|8092.70|6673.94|7141.11|14766.64|15233.81|151.27| +2451151|15600|2451175|14191|6582|1340820|5458|13649|79843|1871584|3563|34601|1|19|19|5|44|115|53|16.50|37.95|7.96|1589.47|421.88|874.50|2011.35|0.00|206.72|160.59|215.16|215.16|375.75|375.75|-659.34| +2451151|15600|2451186|11839|6582|1340820|5458|13649|79843|1871584|3563|34601|43|20|10|4|188|115|74|95.25|222.88|173.84|3628.96|12864.16|7048.50|16493.12|257.28|0.00|5442.70|12864.16|13121.44|18306.86|18564.14|5815.66| +2451151|15600|2451163|13180|6582|1340820|5458|13649|79843|1871584|3563|34601|52|14|2|3|177|115|31|96.58|114.93|108.03|213.90|3348.93|2993.98|3562.83|66.97|0.00|463.14|3348.93|3415.90|3812.07|3879.04|354.95| +2451151|15600|2451193|1960|6582|1340820|5458|13649|79843|1871584|3563|34601|34|19|9|3|67|115|9|5.05|12.97|10.50|22.23|94.50|45.45|116.73|7.56|0.00|17.46|94.50|102.06|111.96|119.52|49.05| +2451151|15600|2451262|2864|6582|1340820|5458|13649|79843|1871584|3563|34601|13|1|5|4|6|115|81|79.30|184.76|92.38|7482.78|7482.78|6423.30|14965.56|673.45|0.00|3591.54|7482.78|8156.23|11074.32|11747.77|1059.48| +2451547|19764|2451663|8971|83106|946511|7069|19627|71775|1898902|6548|40753|44|1|19|4|182|116|77|18.20|38.58|0.77|2911.37|59.29|1401.40|2970.66|1.54|42.09|890.89|17.20|18.74|908.09|909.63|-1384.20| +2451547|19764|2451636|15752|83106|946511|7069|19627|71775|1898902|6548|40753|53|13|20|3|23|116|5|94.88|268.51|220.17|241.70|1100.85|474.40|1342.55|36.54|187.14|416.15|913.71|950.25|1329.86|1366.40|439.31| +2451547|19764|2451566|1777|83106|946511|7069|19627|71775|1898902|6548|40753|35|1|11|1|114|116|92|85.47|113.67|0.00|10457.64|0.00|7863.24|10457.64|0.00|0.00|1777.44|0.00|0.00|1777.44|1777.44|-7863.24| +2451547|19764|2451664|65|83106|946511|7069|19627|71775|1898902|6548|40753|25|1|19|2|205|116|4|13.74|32.15|18.96|52.76|75.84|54.96|128.60|3.03|0.00|52.72|75.84|78.87|128.56|131.59|20.88| +2451547|19764|2451638|16640|83106|946511|7069|19627|71775|1898902|6548|40753|29|29|5|5|172|116|67|10.23|24.04|5.28|1256.92|353.76|685.41|1610.68|0.00|0.00|353.76|353.76|353.76|707.52|707.52|-331.65| +2451547|19764|2451631|2282|83106|946511|7069|19627|71775|1898902|6548|40753|44|29|4|1|215|116|59|46.24|79.53|73.96|328.63|4363.64|2728.16|4692.27|174.54|0.00|421.85|4363.64|4538.18|4785.49|4960.03|1635.48| +2451547|19764|2451555|12542|83106|946511|7069|19627|71775|1898902|6548|40753|20|23|13|4|135|116|91|70.09|84.80|13.56|6482.84|1233.96|6378.19|7716.80|111.05|0.00|3472.56|1233.96|1345.01|4706.52|4817.57|-5144.23| +2451547|19764|2451569|769|83106|946511|7069|19627|71775|1898902|6548|40753|11|29|11|5|289|116|81|25.55|73.07|27.76|3670.11|2248.56|2069.55|5918.67|202.37|0.00|2722.41|2248.56|2450.93|4970.97|5173.34|179.01| +2451547|19764|2451582|662|83106|946511|7069|19627|71775|1898902|6548|40753|32|5|12|3|217|116|17|71.80|142.16|98.09|749.19|1667.53|1220.60|2416.72|66.70|0.00|990.76|1667.53|1734.23|2658.29|2724.99|446.93| +2451547|19764|2451574|2222|83106|946511|7069|19627|71775|1898902|6548|40753|23|14|17|3|222|116|5|22.73|28.41|5.39|115.10|26.95|113.65|142.05|0.00|26.95|55.35|0.00|0.00|55.35|55.35|-113.65| +2451547|19764|2451622|10193|83106|946511|7069|19627|71775|1898902|6548|40753|7|2|10|1|19|116|68|58.31|72.88|40.81|2180.76|2775.08|3965.08|4955.84|23.31|2442.07|2477.92|333.01|356.32|2810.93|2834.24|-3632.07| +2451547|19764|2451632|3349|83106|946511|7069|19627|71775|1898902|6548|40753|56|13|2|5|218|116|11|67.39|139.49|37.66|1120.13|414.26|741.29|1534.39|4.14|0.00|751.85|414.26|418.40|1166.11|1170.25|-327.03| +2451547|19764|2451567|8795|83106|946511|7069|19627|71775|1898902|6548|40753|35|11|11|4|134|116|10|91.13|268.83|29.57|2392.60|295.70|911.30|2688.30|2.95|0.00|860.20|295.70|298.65|1155.90|1158.85|-615.60| +2451547|19764|2451564|6914|83106|946511|7069|19627|71775|1898902|6548|40753|19|29|7|4|261|116|92|10.89|11.21|8.74|227.24|804.08|1001.88|1031.32|24.12|0.00|370.76|804.08|828.20|1174.84|1198.96|-197.80| +2451547|19764|2451554|16121|83106|946511|7069|19627|71775|1898902|6548|40753|29|14|14|2|93|116|54|5.98|6.21|4.16|110.70|224.64|322.92|335.34|0.00|0.00|56.70|224.64|224.64|281.34|281.34|-98.28| +2451317|66696|2451406|2797|61015|1648533|2898|35663|37271|1401607|1064|29429|22|2|2|2|242|117|75|86.29|123.39|49.35|5553.00|3701.25|6471.75|9254.25|333.11|0.00|3423.75|3701.25|4034.36|7125.00|7458.11|-2770.50| +2451317|66696|2451347|14938|61015|1648533|2898|35663|37271|1401607|1064|29429|34|22|9|1|160|117|40|8.69|16.07|9.32|270.00|372.80|347.60|642.80|14.91|0.00|314.80|372.80|387.71|687.60|702.51|25.20| +2451317|66696|2451337|4669|61015|1648533|2898|35663|37271|1401607|1064|29429|1|19|12|4|143|117|67|93.18|127.65|114.88|855.59|7696.96|6243.06|8552.55|615.75|0.00|1368.14|7696.96|8312.71|9065.10|9680.85|1453.90| +2451317|66696|2451322|14833|61015|1648533|2898|35663|37271|1401607|1064|29429|31|28|14|3|162|117|78|92.26|261.09|46.99|16699.80|3665.22|7196.28|20365.02|293.21|0.00|4683.90|3665.22|3958.43|8349.12|8642.33|-3531.06| +2451317|66696|2451378|17842|61015|1648533|2898|35663|37271|1401607|1064|29429|16|8|4|5|219|117|45|56.17|106.72|26.68|3601.80|1200.60|2527.65|4802.40|5.88|612.30|1776.60|588.30|594.18|2364.90|2370.78|-1939.35| +2451317|66696|2451418|6958|61015|1648533|2898|35663|37271|1401607|1064|29429|2|28|1|2|280|117|20|8.49|21.47|12.88|171.80|257.60|169.80|429.40|23.18|0.00|128.80|257.60|280.78|386.40|409.58|87.80| +2451317|66696|2451386|11869|61015|1648533|2898|35663|37271|1401607|1064|29429|8|28|15|5|255|117|34|54.02|64.28|16.71|1617.38|568.14|1836.68|2185.52|22.72|0.00|393.38|568.14|590.86|961.52|984.24|-1268.54| +2451317|66696|2451395|7513|61015|1648533|2898|35663|37271|1401607|1064|29429|1|28|19|3|147|117|60|30.03|34.83|31.34|209.40|1880.40|1801.80|2089.80|75.21|0.00|647.40|1880.40|1955.61|2527.80|2603.01|78.60| +2451317|66696|2451337|9926|61015|1648533|2898|35663|37271|1401607|1064|29429|31|26|2|5|98|117|64|90.00|233.10|9.32|14321.92|596.48|5760.00|14918.40|0.00|0.00|894.72|596.48|596.48|1491.20|1491.20|-5163.52| +2451317|66696|2451434|8744|61015|1648533|2898|35663|37271|1401607|1064|29429|32|1|18|2|96|117|91|79.73|207.29|93.28|10374.91|8488.48|7255.43|18863.39|169.76|0.00|754.39|8488.48|8658.24|9242.87|9412.63|1233.05| +2451317|66696|2451425|6530|61015|1648533|2898|35663|37271|1401607|1064|29429|40|4|2|1|180|117|35|19.83|33.90|29.49|154.35|1032.15|694.05|1186.50|0.00|0.00|308.35|1032.15|1032.15|1340.50|1340.50|338.10| +2451317|66696|2451366|17455|61015|1648533|2898|35663|37271|1401607|1064|29429|31|4|20|2|121|117|39|33.25|81.13|18.65|2436.72|727.35|1296.75|3164.07|35.13|225.47|1265.55|501.88|537.01|1767.43|1802.56|-794.87| +2451317|66696|2451409|793|61015|1648533|2898|35663|37271|1401607|1064|29429|49|19|5|5|235|117|60|27.17|69.01|11.04|3478.20|662.40|1630.20|4140.60|59.61|0.00|207.00|662.40|722.01|869.40|929.01|-967.80| +2451317|66696|2451358|362|61015|1648533|2898|35663|37271|1401607|1064|29429|28|8|15|2|162|117|51|91.92|204.98|135.28|3554.70|6899.28|4687.92|10453.98|68.99|0.00|1358.64|6899.28|6968.27|8257.92|8326.91|2211.36| +2451870|79151|2451946|9835|4226|1085607|1388|46322|75166|750026|1665|30646|35|26|17|3|46|118|14|11.98|23.48|4.69|263.06|65.66|167.72|328.72|1.31|0.00|52.50|65.66|66.97|118.16|119.47|-102.06| +2451870|79151|2451929|16157|4226|1085607|1388|46322|75166|750026|1665|30646|35|7|10|1|292|118|6|79.47|185.95|130.16|334.74|780.96|476.82|1115.70|23.42|0.00|301.20|780.96|804.38|1082.16|1105.58|304.14| +2451870|79151|2451953|8821|4226|1085607|1388|46322|75166|750026|1665|30646|55|25|5|5|192|118|15|71.71|206.52|99.12|1611.00|1486.80|1075.65|3097.80|3.12|1442.19|619.50|44.61|47.73|664.11|667.23|-1031.04| +2451870|79151|2451923|6686|4226|1085607|1388|46322|75166|750026|1665|30646|38|19|20|5|220|118|100|97.11|200.04|120.02|8002.00|12002.00|9711.00|20004.00|600.10|0.00|800.00|12002.00|12602.10|12802.00|13402.10|2291.00| +2451870|79151|2451875|98|4226|1085607|1388|46322|75166|750026|1665|30646|20|13|16|2|168|118|8|11.00|15.07|6.32|70.00|50.56|88.00|120.56|3.53|0.00|1.20|50.56|54.09|51.76|55.29|-37.44| +2451870|79151|2451934|38|4226|1085607|1388|46322|75166|750026|1665|30646|29|8|5|5|282|118|43|91.73|185.29|131.55|2310.82|5656.65|3944.39|7967.47|0.00|0.00|796.36|5656.65|5656.65|6453.01|6453.01|1712.26| +2451870|79151|2451904|1871|4226|1085607|1388|46322|75166|750026|1665|30646|41|1|1|1|248|118|54|38.71|43.35|22.10|1147.50|1193.40|2090.34|2340.90|83.53|0.00|351.00|1193.40|1276.93|1544.40|1627.93|-896.94| +2451870|79151|2451938|2875|4226|1085607|1388|46322|75166|750026|1665|30646|56|8|8|4|210|118|96|96.34|147.40|48.64|9480.96|4669.44|9248.64|14150.40|140.08|0.00|3395.52|4669.44|4809.52|8064.96|8205.04|-4579.20| +2451870|79151|2451989|10195|4226|1085607|1388|46322|75166|750026|1665|30646|59|25|3|1|89|118|87|8.21|12.47|1.12|987.45|97.44|714.27|1084.89|6.82|0.00|466.32|97.44|104.26|563.76|570.58|-616.83| +2451870|79151|2451964|8318|4226|1085607|1388|46322|75166|750026|1665|30646|32|7|11|3|235|118|46|63.99|181.09|52.51|5914.68|2415.46|2943.54|8330.14|24.15|0.00|2915.48|2415.46|2439.61|5330.94|5355.09|-528.08| +2452461|65711|2452466|15306|67606|714813|6373|5933|51134|21027|7013|12173|60|18|11|5|262|119|12|58.95|176.85|56.59|1443.12|679.08|707.40|2122.20|9.37|522.89|148.44|156.19|165.56|304.63|314.00|-551.21| +2452461|65711|2452553|4584|67606|714813|6373|5933|51134|21027|7013|12173|9|21|14|2|110|119|15|15.18|44.32|41.66|39.90|624.90|227.70|664.80|43.74|0.00|272.55|624.90|668.64|897.45|941.19|397.20| +2452461|65711|2452515|1077|67606|714813|6373|5933|51134|21027|7013|12173|18|27|19|2|22|119|10|44.33|121.02|67.77|532.50|677.70|443.30|1210.20|60.99|0.00|254.10|677.70|738.69|931.80|992.79|234.40| +2452461|65711|2452499|15042|67606|714813|6373|5933|51134|21027|7013|12173|13|15|6|4|235|119|92|44.23|122.95|73.77|4524.56|6786.84|4069.16|11311.40|407.21|0.00|4524.56|6786.84|7194.05|11311.40|11718.61|2717.68| +2452461|65711|2452579|11179|67606|714813|6373|5933|51134|21027|7013|12173|6|30|4|1|245|119|63|8.67|13.61|1.90|737.73|119.70|546.21|857.43|3.59|0.00|274.05|119.70|123.29|393.75|397.34|-426.51| +2452461|65711|2452538|348|67606|714813|6373|5933|51134|21027|7013|12173|43|27|19|1|6|119|14|27.17|51.35|15.91|496.16|222.74|380.38|718.90|0.00|0.00|323.40|222.74|222.74|546.14|546.14|-157.64| +2452461|65711|2452465|14103|67606|714813|6373|5933|51134|21027|7013|12173|6|9|7|4|184|119|91|66.58|120.50|12.05|9868.95|1096.55|6058.78|10965.50|10.74|943.03|2082.99|153.52|164.26|2236.51|2247.25|-5905.26| +2452461|65711|2452580|3006|67606|714813|6373|5933|51134|21027|7013|12173|36|7|10|4|165|119|72|7.92|11.88|0.83|795.60|59.76|570.24|855.36|0.59|0.00|0.00|59.76|60.35|59.76|60.35|-510.48| +2452461|65711|2452465|12469|67606|714813|6373|5933|51134|21027|7013|12173|54|9|10|5|110|119|48|87.82|99.23|38.69|2905.92|1857.12|4215.36|4763.04|148.56|0.00|142.56|1857.12|2005.68|1999.68|2148.24|-2358.24| +2452461|65711|2452515|8575|67606|714813|6373|5933|51134|21027|7013|12173|25|9|17|2|214|119|37|95.91|117.01|94.77|822.88|3506.49|3548.67|4329.37|13.32|2174.02|2164.50|1332.47|1345.79|3496.97|3510.29|-2216.20| +2452461|65711|2452488|3564|67606|714813|6373|5933|51134|21027|7013|12173|43|1|13|2|231|119|76|71.78|203.13|154.37|3705.76|11732.12|5455.28|15437.88|469.28|0.00|4630.68|11732.12|12201.40|16362.80|16832.08|6276.84| +2452461|65711|2452525|9228|67606|714813|6373|5933|51134|21027|7013|12173|51|1|16|4|219|119|37|70.41|207.00|82.80|4595.40|3063.60|2605.17|7659.00|183.81|0.00|995.67|3063.60|3247.41|4059.27|4243.08|458.43| +2452461|65711|2452575|16519|67606|714813|6373|5933|51134|21027|7013|12173|19|13|17|4|21|119|63|97.04|284.32|51.17|14688.45|3223.71|6113.52|17912.16|0.00|0.00|357.84|3223.71|3223.71|3581.55|3581.55|-2889.81| +2451979|81904|2451991|12061|50537|854361|3432|42903|18273|1387425|516|43940|25|5|16|4|19|120|52|17.72|49.43|48.44|51.48|2518.88|921.44|2570.36|125.94|0.00|76.96|2518.88|2644.82|2595.84|2721.78|1597.44| +2451979|81904|2452055|9157|50537|854361|3432|42903|18273|1387425|516|43940|29|9|15|3|118|120|74|85.41|229.75|165.42|4760.42|12241.08|6320.34|17001.50|734.46|0.00|8330.18|12241.08|12975.54|20571.26|21305.72|5920.74| +2451979|81904|2452056|14811|50537|854361|3432|42903|18273|1387425|516|43940|3|1|3|2|104|120|86|27.37|37.77|27.94|845.38|2402.84|2353.82|3248.22|56.22|1778.10|324.22|624.74|680.96|948.96|1005.18|-1729.08| +2451979|81904|2451990|8697|50537|854361|3432|42903|18273|1387425|516|43940|37|3|15|5|138|120|48|17.33|24.43|0.48|1149.60|23.04|831.84|1172.64|0.69|0.00|363.36|23.04|23.73|386.40|387.09|-808.80| +2451979|81904|2452090|15917|50537|854361|3432|42903|18273|1387425|516|43940|23|5|11|2|73|120|52|16.87|44.19|29.60|758.68|1539.20|877.24|2297.88|0.00|0.00|459.16|1539.20|1539.20|1998.36|1998.36|661.96| +2451979|81904|2452042|14787|50537|854361|3432|42903|18273|1387425|516|43940|37|7|2|2|12|120|98|66.81|89.52|14.32|7369.60|1403.36|6547.38|8772.96|14.03|0.00|2455.88|1403.36|1417.39|3859.24|3873.27|-5144.02| +2451979|81904|2451989|4625|50537|854361|3432|42903|18273|1387425|516|43940|9|19|12|2|62|120|60|77.03|221.84|37.71|11047.80|2262.60|4621.80|13310.40|22.62|0.00|532.20|2262.60|2285.22|2794.80|2817.42|-2359.20| +2451979|81904|2452090|4381|50537|854361|3432|42903|18273|1387425|516|43940|47|7|4|4|117|120|94|49.72|112.86|51.91|5729.30|4879.54|4673.68|10608.84|48.79|0.00|5198.20|4879.54|4928.33|10077.74|10126.53|205.86| +2452131|5091|2452235|7107|84173|884481|5589|23897|73770|532206|2821|43529|53|9|13|1|89|121|14|67.59|181.81|125.44|789.18|1756.16|946.26|2545.34|17.56|0.00|1196.30|1756.16|1773.72|2952.46|2970.02|809.90| +2452131|5091|2452145|9677|84173|884481|5589|23897|73770|532206|2821|43529|35|21|4|2|290|121|39|81.77|191.34|40.18|5895.24|1567.02|3189.03|7462.26|62.68|0.00|596.70|1567.02|1629.70|2163.72|2226.40|-1622.01| +2452131|5091|2452140|11847|84173|884481|5589|23897|73770|532206|2821|43529|53|15|9|2|138|121|68|45.75|98.36|75.73|1538.84|5149.64|3111.00|6688.48|0.00|3038.28|1136.96|2111.36|2111.36|3248.32|3248.32|-999.64| +2452131|5091|2452229|10585|84173|884481|5589|23897|73770|532206|2821|43529|37|25|10|2|274|121|93|68.38|136.07|16.32|11136.75|1517.76|6359.34|12654.51|121.42|0.00|3036.45|1517.76|1639.18|4554.21|4675.63|-4841.58| +2452131|5091|2452135|17351|84173|884481|5589|23897|73770|532206|2821|43529|59|11|19|2|195|121|4|72.91|95.51|42.02|213.96|168.08|291.64|382.04|6.21|43.70|118.40|124.38|130.59|242.78|248.99|-167.26| +2452131|5091|2452133|11725|84173|884481|5589|23897|73770|532206|2821|43529|3|15|14|5|266|121|93|51.11|69.50|11.12|5429.34|1034.16|4753.23|6463.50|82.73|0.00|1034.16|1034.16|1116.89|2068.32|2151.05|-3719.07| +2452131|5091|2452214|8505|84173|884481|5589|23897|73770|532206|2821|43529|5|25|3|3|103|121|91|73.32|122.44|52.64|6351.80|4790.24|6672.12|11142.04|383.21|0.00|1001.91|4790.24|5173.45|5792.15|6175.36|-1881.88| +2452131|5091|2452154|10025|84173|884481|5589|23897|73770|532206|2821|43529|51|5|13|5|107|121|87|96.30|269.64|115.94|13371.90|10086.78|8378.10|23458.68|504.33|0.00|5394.87|10086.78|10591.11|15481.65|15985.98|1708.68| +2452131|5091|2452182|601|84173|884481|5589|23897|73770|532206|2821|43529|11|15|13|5|67|121|83|48.93|145.32|14.53|10855.57|1205.99|4061.19|12061.56|48.23|0.00|2532.33|1205.99|1254.22|3738.32|3786.55|-2855.20| +2451053|33607|2451171|2194|39352|1220992|5385|20625|6826|981636|4298|39891|32|4|9|3|224|122|28|2.57|4.00|3.36|17.92|94.08|71.96|112.00|2.70|60.21|41.44|33.87|36.57|75.31|78.01|-38.09| +2451053|33607|2451054|12055|39352|1220992|5385|20625|6826|981636|4298|39891|8|20|10|4|98|122|43|14.31|41.06|18.06|989.00|776.58|615.33|1765.58|7.76|0.00|794.21|776.58|784.34|1570.79|1578.55|161.25| +2451053|33607|2451125|14737|39352|1220992|5385|20625|6826|981636|4298|39891|50|2|18|1|207|122|80|34.63|48.48|12.60|2870.40|1008.00|2770.40|3878.40|80.64|0.00|775.20|1008.00|1088.64|1783.20|1863.84|-1762.40| +2451053|33607|2451117|8822|39352|1220992|5385|20625|6826|981636|4298|39891|44|22|11|5|182|122|9|6.26|16.90|14.19|24.39|127.71|56.34|152.10|2.55|0.00|59.31|127.71|130.26|187.02|189.57|71.37| +2451053|33607|2451101|13363|39352|1220992|5385|20625|6826|981636|4298|39891|10|26|19|2|262|122|81|93.90|246.95|133.35|9201.60|10801.35|7605.90|20002.95|216.02|0.00|9200.79|10801.35|11017.37|20002.14|20218.16|3195.45| +2451053|33607|2451085|10351|39352|1220992|5385|20625|6826|981636|4298|39891|28|20|17|3|59|122|59|20.05|32.48|19.81|747.53|1168.79|1182.95|1916.32|23.37|0.00|823.64|1168.79|1192.16|1992.43|2015.80|-14.16| +2451053|33607|2451154|9733|39352|1220992|5385|20625|6826|981636|4298|39891|44|10|9|5|248|122|98|97.33|115.82|63.70|5107.76|6242.60|9538.34|11350.36|561.83|0.00|3290.84|6242.60|6804.43|9533.44|10095.27|-3295.74| +2451053|33607|2451074|2584|39352|1220992|5385|20625|6826|981636|4298|39891|16|26|9|1|216|122|63|99.08|177.35|136.55|2570.40|8602.65|6242.04|11173.05|0.00|0.00|5586.21|8602.65|8602.65|14188.86|14188.86|2360.61| +2451053|33607|2451133|302|39352|1220992|5385|20625|6826|981636|4298|39891|7|26|17|5|300|122|98|64.44|119.85|20.37|9749.04|1996.26|6315.12|11745.30|39.92|0.00|4932.34|1996.26|2036.18|6928.60|6968.52|-4318.86| +2451053|33607|2451151|12247|39352|1220992|5385|20625|6826|981636|4298|39891|8|25|8|1|254|122|81|40.80|115.46|55.42|4863.24|4489.02|3304.80|9352.26|359.12|0.00|934.74|4489.02|4848.14|5423.76|5782.88|1184.22| +2451053|33607|2451138|4738|39352|1220992|5385|20625|6826|981636|4298|39891|7|19|16|5|51|122|60|90.07|165.72|79.54|5170.80|4772.40|5404.20|9943.20|95.44|0.00|3976.80|4772.40|4867.84|8749.20|8844.64|-631.80| +2451053|33607|2451082|13304|39352|1220992|5385|20625|6826|981636|4298|39891|22|2|2|2|32|122|82|13.66|19.39|13.37|493.64|1096.34|1120.12|1589.98|21.92|0.00|364.90|1096.34|1118.26|1461.24|1483.16|-23.78| +2452429|31055|2452504|10407|41018|354220|6622|33024|85953|1616450|4230|39032|1|24|10|3|246|123|47|99.62|268.97|142.55|5941.74|6699.85|4682.14|12641.59|359.11|2210.95|505.25|4488.90|4848.01|4994.15|5353.26|-193.24| +2452429|31055|2452499|15171|41018|354220|6622|33024|85953|1616450|4230|39032|42|9|19|3|77|123|56|98.90|148.35|5.93|7975.52|332.08|5538.40|8307.60|23.24|0.00|3821.44|332.08|355.32|4153.52|4176.76|-5206.32| +2452429|31055|2452541|3642|41018|354220|6622|33024|85953|1616450|4230|39032|18|9|14|3|92|123|60|62.95|124.64|18.69|6357.00|1121.40|3777.00|7478.40|100.92|0.00|3514.80|1121.40|1222.32|4636.20|4737.12|-2655.60| +2452429|31055|2452521|4827|41018|354220|6622|33024|85953|1616450|4230|39032|21|1|8|5|165|123|93|41.64|69.53|20.16|4591.41|1874.88|3872.52|6466.29|149.99|0.00|2974.14|1874.88|2024.87|4849.02|4999.01|-1997.64| +2452429|31055|2452440|6867|41018|354220|6622|33024|85953|1616450|4230|39032|3|3|19|4|69|123|99|69.84|203.93|87.68|11508.75|8680.32|6914.16|20189.07|86.80|0.00|1412.73|8680.32|8767.12|10093.05|10179.85|1766.16| +2452429|31055|2452467|783|41018|354220|6622|33024|85953|1616450|4230|39032|43|25|4|5|46|123|97|13.60|20.80|8.94|1150.42|867.18|1319.20|2017.60|16.12|598.35|241.53|268.83|284.95|510.36|526.48|-1050.37| +2452429|31055|2452524|13969|41018|354220|6622|33024|85953|1616450|4230|39032|54|3|20|5|123|123|77|76.71|182.56|16.43|12792.01|1265.11|5906.67|14057.12|25.30|0.00|843.15|1265.11|1290.41|2108.26|2133.56|-4641.56| +2452429|31055|2452474|3240|41018|354220|6622|33024|85953|1616450|4230|39032|51|13|5|1|17|123|86|57.01|151.64|54.59|8346.30|4694.74|4902.86|13041.04|93.89|0.00|129.86|4694.74|4788.63|4824.60|4918.49|-208.12| +2452429|31055|2452483|16521|41018|354220|6622|33024|85953|1616450|4230|39032|43|7|13|5|294|123|40|82.86|216.26|179.49|1470.80|7179.60|3314.40|8650.40|287.18|0.00|432.40|7179.60|7466.78|7612.00|7899.18|3865.20| +2452429|31055|2452468|3675|41018|354220|6622|33024|85953|1616450|4230|39032|19|9|20|5|267|123|100|31.86|95.26|35.24|6002.00|3524.00|3186.00|9526.00|140.96|0.00|1809.00|3524.00|3664.96|5333.00|5473.96|338.00| +2452429|31055|2452514|8334|41018|354220|6622|33024|85953|1616450|4230|39032|49|19|5|5|295|123|98|92.39|215.26|210.95|422.38|20673.10|9054.22|21095.48|0.00|20673.10|6117.16|0.00|0.00|6117.16|6117.16|-9054.22| +2452429|31055|2452545|16315|41018|354220|6622|33024|85953|1616450|4230|39032|33|12|8|5|199|123|35|61.86|153.41|128.86|859.25|4510.10|2165.10|5369.35|45.10|0.00|2577.05|4510.10|4555.20|7087.15|7132.25|2345.00| +2452429|31055|2452537|17239|41018|354220|6622|33024|85953|1616450|4230|39032|42|25|5|2|169|123|78|33.87|95.85|12.46|6504.42|971.88|2641.86|7476.30|18.27|515.09|74.10|456.79|475.06|530.89|549.16|-2185.07| +2452429|31055|2452495|14479|41018|354220|6622|33024|85953|1616450|4230|39032|12|12|6|1|66|123|72|68.35|114.14|52.50|4438.08|3780.00|4921.20|8218.08|37.80|0.00|3368.88|3780.00|3817.80|7148.88|7186.68|-1141.20| +2452429|31055|2452536|10893|41018|354220|6622|33024|85953|1616450|4230|39032|30|12|14|5|23|123|26|27.92|34.06|31.33|70.98|814.58|725.92|885.56|1.95|716.83|0.00|97.75|99.70|97.75|99.70|-628.17| +2451649|76443|2451717|8252|45329|493247|1612|24730|30670|1322511|6884|36049|14|20|17|5|43|124|81|96.71|107.34|50.44|4608.90|4085.64|7833.51|8694.54|81.71|0.00|2955.69|4085.64|4167.35|7041.33|7123.04|-3747.87| +2451649|76443|2451734|15266|45329|493247|1612|24730|30670|1322511|6884|36049|14|19|15|2|159|124|78|81.73|141.39|128.66|992.94|10035.48|6374.94|11028.42|642.27|2007.09|4190.16|8028.39|8670.66|12218.55|12860.82|1653.45| +2451649|76443|2451753|5378|45329|493247|1612|24730|30670|1322511|6884|36049|25|29|7|2|14|124|71|70.31|119.52|107.56|849.16|7636.76|4992.01|8485.92|534.57|0.00|3733.18|7636.76|8171.33|11369.94|11904.51|2644.75| +2451649|76443|2451684|13799|45329|493247|1612|24730|30670|1322511|6884|36049|32|20|12|1|37|124|19|23.15|58.10|51.12|132.62|971.28|439.85|1103.90|19.42|0.00|253.84|971.28|990.70|1225.12|1244.54|531.43| +2451649|76443|2451742|7633|45329|493247|1612|24730|30670|1322511|6884|36049|49|23|9|4|266|124|33|2.29|5.99|2.69|108.90|88.77|75.57|197.67|0.00|0.00|17.49|88.77|88.77|106.26|106.26|13.20| +2451649|76443|2451769|7721|45329|493247|1612|24730|30670|1322511|6884|36049|53|8|10|3|216|124|35|48.70|85.22|27.27|2028.25|954.45|1704.50|2982.70|19.08|0.00|268.10|954.45|973.53|1222.55|1241.63|-750.05| +2451649|76443|2451758|10441|45329|493247|1612|24730|30670|1322511|6884|36049|17|11|16|1|186|124|77|86.58|218.18|4.36|16464.14|335.72|6666.66|16799.86|23.50|0.00|4535.30|335.72|359.22|4871.02|4894.52|-6330.94| +2451649|76443|2451761|2911|45329|493247|1612|24730|30670|1322511|6884|36049|20|29|19|1|170|124|75|93.94|143.72|102.04|3126.00|7653.00|7045.50|10779.00|0.00|0.00|1616.25|7653.00|7653.00|9269.25|9269.25|607.50| +2451649|76443|2451721|9355|45329|493247|1612|24730|30670|1322511|6884|36049|55|7|10|1|135|124|72|70.21|186.75|69.09|8471.52|4974.48|5055.12|13446.00|0.00|1094.38|537.84|3880.10|3880.10|4417.94|4417.94|-1175.02| +2452638|39420|2452684|5293|97631|1563969|3907|20292|66901|1715954|4106|5644|42|1|4|4|107|125|86|55.31|74.66|18.66|4816.00|1604.76|4756.66|6420.76|112.33|0.00|2696.10|1604.76|1717.09|4300.86|4413.19|-3151.90| +2452638|39420|2452718|4293|97631|1563969|3907|20292|66901|1715954|4106|5644|51|7|2|5|208|125|4|48.69|124.64|89.74|139.60|358.96|194.76|498.56|32.30|0.00|94.72|358.96|391.26|453.68|485.98|164.20| +2452638|39420|2452758|17040|97631|1563969|3907|20292|66901|1715954|4106|5644|36|15|15|5|232|125|95|89.50|114.56|27.49|8271.65|2611.55|8502.50|10883.20|0.00|0.00|5223.10|2611.55|2611.55|7834.65|7834.65|-5890.95| +2452638|39420|2452663|15649|97631|1563969|3907|20292|66901|1715954|4106|5644|3|3|19|4|129|125|56|41.68|87.52|33.25|3039.12|1862.00|2334.08|4901.12|74.48|0.00|490.00|1862.00|1936.48|2352.00|2426.48|-472.08| +2452638|39420|2452648|2641|97631|1563969|3907|20292|66901|1715954|4106|5644|19|1|2|3|117|125|79|23.65|68.58|21.94|3684.56|1733.26|1868.35|5417.82|17.33|0.00|2599.89|1733.26|1750.59|4333.15|4350.48|-135.09| +2452638|39420|2452737|11760|97631|1563969|3907|20292|66901|1715954|4106|5644|39|13|11|3|35|125|87|25.59|69.60|47.32|1938.36|4116.84|2226.33|6055.20|188.96|2017.25|1089.24|2099.59|2288.55|3188.83|3377.79|-126.74| +2452638|39420|2452644|6513|97631|1563969|3907|20292|66901|1715954|4106|5644|55|21|11|1|184|125|15|93.42|262.51|249.38|196.95|3740.70|1401.30|3937.65|261.84|0.00|1023.75|3740.70|4002.54|4764.45|5026.29|2339.40| +2452638|39420|2452758|5023|97631|1563969|3907|20292|66901|1715954|4106|5644|18|12|3|5|87|125|54|11.48|18.82|17.31|81.54|934.74|619.92|1016.28|40.56|355.20|335.34|579.54|620.10|914.88|955.44|-40.38| +2452638|39420|2452641|4057|97631|1563969|3907|20292|66901|1715954|4106|5644|48|1|11|1|188|125|17|7.63|9.53|4.28|89.25|72.76|129.71|162.01|2.35|46.56|45.22|26.20|28.55|71.42|73.77|-103.51| +2452638|39420|2452644|14763|97631|1563969|3907|20292|66901|1715954|4106|5644|45|24|1|2|286|125|10|11.80|11.80|11.56|2.40|115.60|118.00|118.00|4.62|0.00|10.60|115.60|120.22|126.20|130.82|-2.40| +2452638|39420|2452756|5511|97631|1563969|3907|20292|66901|1715954|4106|5644|13|25|9|5|31|125|59|46.03|63.98|47.98|944.00|2830.82|2715.77|3774.82|141.54|0.00|37.17|2830.82|2972.36|2867.99|3009.53|115.05| +2451437|67067|2451521|4592|19818|827546|6474|9002|43306|10433|5739|44267|19|1|2|3|154|126|50|61.84|134.19|22.81|5569.00|1140.50|3092.00|6709.50|102.64|0.00|1341.50|1140.50|1243.14|2482.00|2584.64|-1951.50| +2451437|67067|2451518|5323|19818|827546|6474|9002|43306|10433|5739|44267|25|16|5|4|110|126|45|13.51|21.75|12.61|411.30|567.45|607.95|978.75|16.00|300.74|136.80|266.71|282.71|403.51|419.51|-341.24| +2451437|67067|2451507|5071|19818|827546|6474|9002|43306|10433|5739|44267|50|20|16|1|296|126|31|42.28|103.16|94.90|256.06|2941.90|1310.68|3197.96|147.09|0.00|383.47|2941.90|3088.99|3325.37|3472.46|1631.22| +2451437|67067|2451530|7237|19818|827546|6474|9002|43306|10433|5739|44267|8|20|10|1|255|126|47|31.99|90.85|27.25|2989.20|1280.75|1503.53|4269.95|51.23|0.00|1536.90|1280.75|1331.98|2817.65|2868.88|-222.78| +2451437|67067|2451485|208|19818|827546|6474|9002|43306|10433|5739|44267|19|16|8|5|89|126|81|82.85|190.55|60.97|10495.98|4938.57|6710.85|15434.55|24.19|4592.87|1543.05|345.70|369.89|1888.75|1912.94|-6365.15| +2451437|67067|2451538|9520|19818|827546|6474|9002|43306|10433|5739|44267|55|8|12|4|146|126|47|89.21|161.47|37.13|5843.98|1745.11|4192.87|7589.09|17.45|0.00|3642.50|1745.11|1762.56|5387.61|5405.06|-2447.76| +2451437|67067|2451497|5398|19818|827546|6474|9002|43306|10433|5739|44267|2|14|17|3|102|126|35|22.06|63.31|55.07|288.40|1927.45|772.10|2215.85|12.33|693.88|132.65|1233.57|1245.90|1366.22|1378.55|461.47| +2451437|67067|2451496|4069|19818|827546|6474|9002|43306|10433|5739|44267|13|22|10|3|253|126|47|4.14|8.65|8.21|20.68|385.87|194.58|406.55|15.43|0.00|56.87|385.87|401.30|442.74|458.17|191.29| +2451437|67067|2451443|421|19818|827546|6474|9002|43306|10433|5739|44267|38|10|15|4|160|126|74|91.08|163.94|113.11|3761.42|8370.14|6739.92|12131.56|83.70|0.00|6065.78|8370.14|8453.84|14435.92|14519.62|1630.22| +2451437|67067|2451490|4894|19818|827546|6474|9002|43306|10433|5739|44267|2|20|20|2|181|126|37|15.70|38.77|18.60|746.29|688.20|580.90|1434.49|0.00|178.93|214.97|509.27|509.27|724.24|724.24|-71.63| +2451437|67067|2451553|2756|19818|827546|6474|9002|43306|10433|5739|44267|34|13|13|2|48|126|21|88.46|252.99|252.99|0.00|5312.79|1857.66|5312.79|159.38|0.00|1753.08|5312.79|5472.17|7065.87|7225.25|3455.13| +2452573|49655|2452662|10329|36536|1243818|1147|30429|92749|712421|322|44404|45|24|11|2|166|127|24|55.33|66.39|1.32|1561.68|31.68|1327.92|1593.36|0.63|0.00|191.04|31.68|32.31|222.72|223.35|-1296.24| +2452573|49655|2452610|5991|36536|1243818|1147|30429|92749|712421|322|44404|9|3|16|3|150|127|53|98.83|158.12|121.75|1927.61|6452.75|5237.99|8380.36|387.16|0.00|837.93|6452.75|6839.91|7290.68|7677.84|1214.76| +2452573|49655|2452684|5154|36536|1243818|1147|30429|92749|712421|322|44404|15|18|10|1|72|127|75|69.96|115.43|63.48|3896.25|4761.00|5247.00|8657.25|95.22|0.00|3895.50|4761.00|4856.22|8656.50|8751.72|-486.00| +2452573|49655|2452587|12901|36536|1243818|1147|30429|92749|712421|322|44404|27|27|14|4|104|127|10|81.28|117.85|44.78|730.70|447.80|812.80|1178.50|9.85|250.76|0.00|197.04|206.89|197.04|206.89|-615.76| +2452573|49655|2452600|6282|36536|1243818|1147|30429|92749|712421|322|44404|33|25|19|3|114|127|11|6.54|16.02|12.01|44.11|132.11|71.94|176.22|0.00|0.00|79.20|132.11|132.11|211.31|211.31|60.17| +2452573|49655|2452629|8893|36536|1243818|1147|30429|92749|712421|322|44404|45|25|3|3|253|127|26|14.02|21.87|14.87|182.00|386.62|364.52|568.62|30.92|0.00|136.24|386.62|417.54|522.86|553.78|22.10| +2452573|49655|2452642|11097|36536|1243818|1147|30429|92749|712421|322|44404|36|15|5|2|52|127|47|59.18|127.82|97.14|1441.96|4565.58|2781.46|6007.54|319.59|0.00|1741.82|4565.58|4885.17|6307.40|6626.99|1784.12| +2452573|49655|2452648|4959|36536|1243818|1147|30429|92749|712421|322|44404|18|3|8|4|110|127|98|43.32|56.31|51.80|441.98|5076.40|4245.36|5518.38|0.00|3959.59|2482.34|1116.81|1116.81|3599.15|3599.15|-3128.55| +2452573|49655|2452591|13813|36536|1243818|1147|30429|92749|712421|322|44404|27|9|13|1|149|127|70|35.56|106.68|37.33|4854.50|2613.10|2489.20|7467.60|78.39|0.00|373.10|2613.10|2691.49|2986.20|3064.59|123.90| +2452573|49655|2452665|1704|36536|1243818|1147|30429|92749|712421|322|44404|54|21|2|3|127|127|67|69.86|145.30|21.79|8275.17|1459.93|4680.62|9735.10|26.57|131.39|2433.44|1328.54|1355.11|3761.98|3788.55|-3352.08| +2452573|49655|2452662|12037|36536|1243818|1147|30429|92749|712421|322|44404|6|3|11|5|276|127|78|41.49|121.56|13.37|8438.82|1042.86|3236.22|9481.68|73.00|0.00|1611.48|1042.86|1115.86|2654.34|2727.34|-2193.36| +2452573|49655|2452579|7369|36536|1243818|1147|30429|92749|712421|322|44404|13|3|7|4|144|127|36|10.76|22.70|17.47|188.28|628.92|387.36|817.20|6.28|0.00|106.20|628.92|635.20|735.12|741.40|241.56| +2452573|49655|2452594|7380|36536|1243818|1147|30429|92749|712421|322|44404|24|30|5|3|61|127|42|44.75|96.21|66.38|1252.86|2787.96|1879.50|4040.82|163.09|975.78|1373.82|1812.18|1975.27|3186.00|3349.09|-67.32| +2452573|49655|2452629|6537|36536|1243818|1147|30429|92749|712421|322|44404|27|15|15|4|66|127|54|79.87|201.27|114.72|4673.70|6194.88|4312.98|10868.58|247.79|0.00|977.94|6194.88|6442.67|7172.82|7420.61|1881.90| +2452573|49655|2452658|15132|36536|1243818|1147|30429|92749|712421|322|44404|33|12|2|1|17|127|40|62.50|91.87|61.55|1212.80|2462.00|2500.00|3674.80|147.72|0.00|1837.20|2462.00|2609.72|4299.20|4446.92|-38.00| +2451507|27019|2451616|1888|73673|1357529|4585|22488|41031|541222|103|26359|16|14|17|1|155|128|40|53.55|59.97|4.19|2231.20|167.60|2142.00|2398.80|5.02|0.00|1103.20|167.60|172.62|1270.80|1275.82|-1974.40| +2451507|27019|2451594|15220|73673|1357529|4585|22488|41031|541222|103|26359|8|22|19|3|70|128|86|96.09|197.94|156.37|3575.02|13447.82|8263.74|17022.84|451.84|2151.65|8170.86|11296.17|11748.01|19467.03|19918.87|3032.43| +2451507|27019|2451559|5954|73673|1357529|4585|22488|41031|541222|103|26359|26|13|13|1|39|128|83|49.69|59.62|47.09|1039.99|3908.47|4124.27|4948.46|273.59|0.00|890.59|3908.47|4182.06|4799.06|5072.65|-215.80| +2451507|27019|2451593|17528|73673|1357529|4585|22488|41031|541222|103|26359|25|14|13|3|203|128|46|25.06|58.38|54.29|188.14|2497.34|1152.76|2685.48|99.89|0.00|885.96|2497.34|2597.23|3383.30|3483.19|1344.58| +2451507|27019|2451603|9262|73673|1357529|4585|22488|41031|541222|103|26359|28|28|8|3|38|128|18|75.95|100.25|49.12|920.34|884.16|1367.10|1804.50|79.57|0.00|72.18|884.16|963.73|956.34|1035.91|-482.94| +2451507|27019|2451578|9505|73673|1357529|4585|22488|41031|541222|103|26359|8|28|5|5|45|128|100|14.84|31.46|22.33|913.00|2233.00|1484.00|3146.00|133.98|0.00|377.00|2233.00|2366.98|2610.00|2743.98|749.00| +2451507|27019|2451527|16570|73673|1357529|4585|22488|41031|541222|103|26359|22|7|13|5|114|128|66|49.50|126.72|17.74|7192.68|1170.84|3267.00|8363.52|2.10|1135.71|333.96|35.13|37.23|369.09|371.19|-3231.87| +2451507|27019|2451596|1838|73673|1357529|4585|22488|41031|541222|103|26359|19|25|9|5|271|128|40|30.16|84.74|40.67|1762.80|1626.80|1206.40|3389.60|0.00|764.59|1626.80|862.21|862.21|2489.01|2489.01|-344.19| +2451507|27019|2451609|4108|73673|1357529|4585|22488|41031|541222|103|26359|56|10|20|2|274|128|84|91.65|178.71|109.01|5854.80|9156.84|7698.60|15011.64|274.70|0.00|149.52|9156.84|9431.54|9306.36|9581.06|1458.24| +2451507|27019|2451516|16760|73673|1357529|4585|22488|41031|541222|103|26359|22|13|2|2|105|128|47|82.47|164.11|24.61|6556.50|1156.67|3876.09|7713.17|57.83|0.00|693.72|1156.67|1214.50|1850.39|1908.22|-2719.42| +2451507|27019|2451545|9781|73673|1357529|4585|22488|41031|541222|103|26359|13|4|9|5|51|128|30|61.20|137.08|102.81|1028.10|3084.30|1836.00|4112.40|12.33|2467.44|1562.70|616.86|629.19|2179.56|2191.89|-1219.14| +2451507|27019|2451586|6772|73673|1357529|4585|22488|41031|541222|103|26359|22|10|20|4|168|128|82|37.50|75.00|31.50|3567.00|2583.00|3075.00|6150.00|63.54|464.94|2275.50|2118.06|2181.60|4393.56|4457.10|-956.94| +2451507|27019|2451558|13226|73673|1357529|4585|22488|41031|541222|103|26359|38|7|18|2|9|128|70|74.93|76.42|55.02|1498.00|3851.40|5245.10|5349.40|231.08|0.00|2139.20|3851.40|4082.48|5990.60|6221.68|-1393.70| +2451507|27019|2451574|13741|73673|1357529|4585|22488|41031|541222|103|26359|7|22|17|5|163|128|96|8.16|14.03|3.92|970.56|376.32|783.36|1346.88|30.10|0.00|552.00|376.32|406.42|928.32|958.42|-407.04| +2451169|47837|2451262|4147|49745|1301217|6642|16514|61699|812066|2036|33108|32|14|6|2|288|129|81|63.77|114.14|77.61|2958.93|6286.41|5165.37|9245.34|0.00|0.00|0.00|6286.41|6286.41|6286.41|6286.41|1121.04| +2451169|47837|2451222|8116|49745|1301217|6642|16514|61699|812066|2036|33108|50|22|18|4|203|129|64|49.73|115.87|13.90|6526.08|889.60|3182.72|7415.68|71.16|0.00|519.04|889.60|960.76|1408.64|1479.80|-2293.12| +2451169|47837|2451193|358|49745|1301217|6642|16514|61699|812066|2036|33108|31|2|5|1|124|129|15|29.90|42.15|20.23|328.80|303.45|448.50|632.25|18.20|0.00|214.95|303.45|321.65|518.40|536.60|-145.05| +2451169|47837|2451289|8228|49745|1301217|6642|16514|61699|812066|2036|33108|55|7|20|3|209|129|97|2.96|3.46|0.38|298.76|36.86|287.12|335.62|0.00|0.00|136.77|36.86|36.86|173.63|173.63|-250.26| +2451169|47837|2451207|9274|49745|1301217|6642|16514|61699|812066|2036|33108|55|28|2|4|156|129|53|96.79|186.80|29.88|8316.76|1583.64|5129.87|9900.40|26.60|1140.22|1880.97|443.42|470.02|2324.39|2350.99|-4686.45| +2451169|47837|2451221|4906|49745|1301217|6642|16514|61699|812066|2036|33108|7|7|1|1|168|129|44|91.91|123.15|44.33|3468.08|1950.52|4044.04|5418.60|156.04|0.00|162.36|1950.52|2106.56|2112.88|2268.92|-2093.52| +2451169|47837|2451173|9457|49745|1301217|6642|16514|61699|812066|2036|33108|46|20|8|5|212|129|55|42.50|116.45|18.63|5380.10|1024.65|2337.50|6404.75|51.23|0.00|3202.10|1024.65|1075.88|4226.75|4277.98|-1312.85| +2451169|47837|2451192|3541|49745|1301217|6642|16514|61699|812066|2036|33108|16|16|9|4|279|129|88|48.84|79.12|26.90|4595.36|2367.20|4297.92|6962.56|86.64|923.20|2296.80|1444.00|1530.64|3740.80|3827.44|-2853.92| +2451169|47837|2451235|11912|49745|1301217|6642|16514|61699|812066|2036|33108|28|16|6|5|44|129|82|92.36|167.17|6.68|13160.18|547.76|7573.52|13707.94|16.43|0.00|684.70|547.76|564.19|1232.46|1248.89|-7025.76| +2451169|47837|2451285|16153|49745|1301217|6642|16514|61699|812066|2036|33108|2|25|14|5|196|129|22|29.98|58.46|16.95|913.22|372.90|659.56|1286.12|0.00|0.00|527.12|372.90|372.90|900.02|900.02|-286.66| +2451169|47837|2451170|4801|49745|1301217|6642|16514|61699|812066|2036|33108|55|16|20|1|192|129|11|43.31|112.60|70.93|458.37|780.23|476.41|1238.60|46.81|0.00|458.26|780.23|827.04|1238.49|1285.30|303.82| +2451169|47837|2451222|3608|49745|1301217|6642|16514|61699|812066|2036|33108|32|4|19|5|51|129|67|62.83|132.57|108.70|1599.29|7282.90|4209.61|8882.19|145.65|0.00|2575.48|7282.90|7428.55|9858.38|10004.03|3073.29| +2451169|47837|2451275|1087|49745|1301217|6642|16514|61699|812066|2036|33108|16|22|15|3|171|129|69|52.91|93.65|0.93|6397.68|64.17|3650.79|6461.85|1.28|0.00|580.98|64.17|65.45|645.15|646.43|-3586.62| +2451484|39865|2451569|16844|73522|91558|6041|17677|39744|890554|3879|32315|52|4|2|3|67|130|20|66.60|123.21|87.47|714.80|1749.40|1332.00|2464.20|17.49|0.00|689.80|1749.40|1766.89|2439.20|2456.69|417.40| +2451484|39865|2451503|16582|73522|91558|6041|17677|39744|890554|3879|32315|43|26|16|3|230|130|50|94.16|271.18|219.65|2576.50|10982.50|4708.00|13559.00|988.42|0.00|2440.50|10982.50|11970.92|13423.00|14411.42|6274.50| +2451484|39865|2451509|2371|73522|91558|6041|17677|39744|890554|3879|32315|55|20|7|5|133|130|54|78.63|142.32|83.96|3151.44|4533.84|4246.02|7685.28|317.36|0.00|460.62|4533.84|4851.20|4994.46|5311.82|287.82| +2451484|39865|2451591|826|73522|91558|6041|17677|39744|890554|3879|32315|56|16|19|2|152|130|43|67.48|153.17|145.51|329.38|6256.93|2901.64|6586.31|563.12|0.00|2107.43|6256.93|6820.05|8364.36|8927.48|3355.29| +2451484|39865|2451512|6379|73522|91558|6041|17677|39744|890554|3879|32315|43|2|2|2|212|130|91|43.90|107.99|24.83|7567.56|2259.53|3994.90|9827.09|79.08|1129.76|4323.41|1129.77|1208.85|5453.18|5532.26|-2865.13| +2451484|39865|2451502|10423|73522|91558|6041|17677|39744|890554|3879|32315|50|28|1|5|116|130|32|60.75|159.16|93.90|2088.32|3004.80|1944.00|5093.12|270.43|0.00|967.68|3004.80|3275.23|3972.48|4242.91|1060.80| +2451484|39865|2451566|17011|73522|91558|6041|17677|39744|890554|3879|32315|2|10|10|4|228|130|91|80.38|152.72|83.99|6254.43|7643.09|7314.58|13897.52|105.47|4127.26|6114.29|3515.83|3621.30|9630.12|9735.59|-3798.75| +2451484|39865|2451520|529|73522|91558|6041|17677|39744|890554|3879|32315|28|8|12|4|289|130|37|74.52|133.39|9.33|4590.22|345.21|2757.24|4935.43|3.45|0.00|394.79|345.21|348.66|740.00|743.45|-2412.03| +2451484|39865|2451532|1129|73522|91558|6041|17677|39744|890554|3879|32315|50|16|19|2|122|130|30|89.59|268.77|134.38|4031.70|4031.40|2687.70|8063.10|0.00|0.00|886.80|4031.40|4031.40|4918.20|4918.20|1343.70| +2451484|39865|2451516|7400|73522|91558|6041|17677|39744|890554|3879|32315|32|22|14|4|244|130|26|59.37|133.58|101.52|833.56|2639.52|1543.62|3473.08|52.79|0.00|1215.50|2639.52|2692.31|3855.02|3907.81|1095.90| +2451484|39865|2451509|16843|73522|91558|6041|17677|39744|890554|3879|32315|16|7|2|5|298|130|93|35.29|56.81|36.35|1902.78|3380.55|3281.97|5283.33|173.08|1216.99|1689.81|2163.56|2336.64|3853.37|4026.45|-1118.41| +2451484|39865|2451517|16298|73522|91558|6041|17677|39744|890554|3879|32315|56|28|4|5|26|130|94|11.64|13.03|3.64|882.66|342.16|1094.16|1224.82|0.00|0.00|73.32|342.16|342.16|415.48|415.48|-752.00| +2451484|39865|2451504|14311|73522|91558|6041|17677|39744|890554|3879|32315|8|28|2|2|262|130|98|45.38|132.50|17.22|11297.44|1687.56|4447.24|12985.00|54.67|320.63|1298.50|1366.93|1421.60|2665.43|2720.10|-3080.31| +2452171|78440|2452233|1567|9906|1805575|5597|7666|7721|1123492|2226|15895|41|19|9|1|240|131|41|3.34|6.04|1.32|193.52|54.12|136.94|247.64|3.24|0.00|46.74|54.12|57.36|100.86|104.10|-82.82| +2452171|78440|2452220|13073|9906|1805575|5597|7666|7721|1123492|2226|15895|45|25|3|3|193|131|46|43.56|88.42|35.36|2440.76|1626.56|2003.76|4067.32|113.85|0.00|1341.82|1626.56|1740.41|2968.38|3082.23|-377.20| +2452171|78440|2452275|3893|9906|1805575|5597|7666|7721|1123492|2226|15895|1|15|15|2|269|131|1|89.18|113.25|80.40|32.85|80.40|89.18|113.25|3.37|32.16|53.22|48.24|51.61|101.46|104.83|-40.94| +2452171|78440|2452218|11439|9906|1805575|5597|7666|7721|1123492|2226|15895|45|7|5|1|97|131|81|95.17|103.73|60.16|3529.17|4872.96|7708.77|8402.13|194.91|0.00|3780.27|4872.96|5067.87|8653.23|8848.14|-2835.81| +2452171|78440|2452191|12991|9906|1805575|5597|7666|7721|1123492|2226|15895|57|7|16|3|123|131|71|55.61|81.19|23.54|4093.15|1671.34|3948.31|5764.49|83.56|0.00|1268.06|1671.34|1754.90|2939.40|3022.96|-2276.97| +2452171|78440|2452191|13909|9906|1805575|5597|7666|7721|1123492|2226|15895|29|23|9|4|266|131|73|32.87|43.38|24.72|1362.18|1804.56|2399.51|3166.74|144.36|0.00|31.39|1804.56|1948.92|1835.95|1980.31|-594.95| +2452171|78440|2452228|3857|9906|1805575|5597|7666|7721|1123492|2226|15895|59|13|14|1|81|131|37|88.15|185.11|42.57|5273.98|1575.09|3261.55|6849.07|141.75|0.00|547.60|1575.09|1716.84|2122.69|2264.44|-1686.46| +2452171|78440|2452192|7119|9906|1805575|5597|7666|7721|1123492|2226|15895|9|3|19|1|150|131|90|43.18|94.56|30.25|5787.90|2722.50|3886.20|8510.40|190.57|0.00|594.90|2722.50|2913.07|3317.40|3507.97|-1163.70| +2452171|78440|2452262|1201|9906|1805575|5597|7666|7721|1123492|2226|15895|5|21|16|1|289|131|74|60.90|155.29|69.88|6320.34|5171.12|4506.60|11491.46|51.71|0.00|0.00|5171.12|5222.83|5171.12|5222.83|664.52| +2452171|78440|2452227|13061|9906|1805575|5597|7666|7721|1123492|2226|15895|41|17|10|3|109|131|8|27.90|33.20|11.62|172.64|92.96|223.20|265.60|0.19|86.45|0.00|6.51|6.70|6.51|6.70|-216.69| +2452171|78440|2452283|531|9906|1805575|5597|7666|7721|1123492|2226|15895|13|29|6|4|265|131|89|30.37|80.78|30.69|4458.01|2731.41|2702.93|7189.42|109.25|0.00|3594.71|2731.41|2840.66|6326.12|6435.37|28.48| +2451160|78790|2451174|8878|85582|1641083|5737|22038|30867|917433|94|15195|52|8|16|4|52|132|5|16.11|16.43|10.35|30.40|51.75|80.55|82.15|2.07|0.00|27.10|51.75|53.82|78.85|80.92|-28.80| +2451160|78790|2451203|427|85582|1641083|5737|22038|30867|917433|94|15195|32|25|9|5|278|132|54|80.19|225.33|67.59|8517.96|3649.86|4330.26|12167.82|4.37|3211.87|3041.82|437.99|442.36|3479.81|3484.18|-3892.27| +2451160|78790|2451173|571|85582|1641083|5737|22038|30867|917433|94|15195|16|7|19|4|102|132|54|90.56|166.63|78.31|4769.28|4228.74|4890.24|8998.02|338.29|0.00|1709.10|4228.74|4567.03|5937.84|6276.13|-661.50| +2451160|78790|2451188|8840|85582|1641083|5737|22038|30867|917433|94|15195|55|25|8|3|208|132|28|88.69|253.65|116.67|3835.44|3266.76|2483.32|7102.20|91.46|1437.37|1988.56|1829.39|1920.85|3817.95|3909.41|-653.93| +2451160|78790|2451257|10748|85582|1641083|5737|22038|30867|917433|94|15195|46|25|12|1|70|132|81|35.54|75.34|39.17|2929.77|3172.77|2878.74|6102.54|12.69|2918.94|2867.40|253.83|266.52|3121.23|3133.92|-2624.91| +2451160|78790|2451278|9238|85582|1641083|5737|22038|30867|917433|94|15195|56|22|15|5|28|132|72|78.57|78.57|54.99|1697.76|3959.28|5657.04|5657.04|0.00|0.00|1414.08|3959.28|3959.28|5373.36|5373.36|-1697.76| +2451160|78790|2451213|16954|85582|1641083|5737|22038|30867|917433|94|15195|14|25|11|1|201|132|90|68.77|176.05|137.31|3486.60|12357.90|6189.30|15844.50|129.75|8032.63|2376.00|4325.27|4455.02|6701.27|6831.02|-1864.03| +2451160|78790|2451185|3742|85582|1641083|5737|22038|30867|917433|94|15195|58|10|19|5|211|132|10|70.44|140.17|116.34|238.30|1163.40|704.40|1401.70|2.44|919.08|182.20|244.32|246.76|426.52|428.96|-460.08| +2451160|78790|2451167|14414|85582|1641083|5737|22038|30867|917433|94|15195|2|20|13|2|174|132|27|68.65|133.18|83.90|1330.56|2265.30|1853.55|3595.86|135.91|0.00|1294.38|2265.30|2401.21|3559.68|3695.59|411.75| +2451160|78790|2451210|4502|85582|1641083|5737|22038|30867|917433|94|15195|52|22|4|4|214|132|56|48.95|93.98|47.92|2579.36|2683.52|2741.20|5262.88|241.51|0.00|1368.08|2683.52|2925.03|4051.60|4293.11|-57.68| +2451160|78790|2451227|6430|85582|1641083|5737|22038|30867|917433|94|15195|32|10|15|4|273|132|2|75.74|185.56|144.73|81.66|289.46|151.48|371.12|0.00|289.46|96.48|0.00|0.00|96.48|96.48|-151.48| +2451160|78790|2451226|4480|85582|1641083|5737|22038|30867|917433|94|15195|40|2|16|2|111|132|87|67.05|178.35|67.77|9620.46|5895.99|5833.35|15516.45|117.91|0.00|7447.20|5895.99|6013.90|13343.19|13461.10|62.64| +2451160|78790|2451229|5980|85582|1641083|5737|22038|30867|917433|94|15195|13|19|13|3|236|132|20|72.51|135.59|75.93|1193.20|1518.60|1450.20|2711.80|78.96|531.51|1247.40|987.09|1066.05|2234.49|2313.45|-463.11| +2451160|78790|2451208|15370|85582|1641083|5737|22038|30867|917433|94|15195|1|14|2|1|50|132|62|53.48|102.68|88.30|891.56|5474.60|3315.76|6366.16|383.22|0.00|2355.38|5474.60|5857.82|7829.98|8213.20|2158.84| +2451162|50155|2451204|7408|26465|1196287|1309|33178|1049|231132|2291|30913|26|19|3|1|282|133|79|6.53|7.37|2.50|384.73|197.50|515.87|582.23|1.97|0.00|86.90|197.50|199.47|284.40|286.37|-318.37| +2451162|50155|2451198|15478|26465|1196287|1309|33178|1049|231132|2291|30913|28|10|7|3|152|133|47|45.04|75.66|12.10|2987.32|568.70|2116.88|3556.02|43.22|28.43|355.32|540.27|583.49|895.59|938.81|-1576.61| +2451162|50155|2451198|11923|26465|1196287|1309|33178|1049|231132|2291|30913|56|14|17|1|65|133|53|73.35|161.37|90.36|3763.53|4789.08|3887.55|8552.61|143.67|0.00|2479.87|4789.08|4932.75|7268.95|7412.62|901.53| +2451162|50155|2451163|16726|26465|1196287|1309|33178|1049|231132|2291|30913|49|2|19|1|180|133|25|60.40|83.35|13.33|1750.50|333.25|1510.00|2083.75|2.99|283.26|208.25|49.99|52.98|258.24|261.23|-1460.01| +2451162|50155|2451277|16465|26465|1196287|1309|33178|1049|231132|2291|30913|2|16|9|4|189|133|30|55.94|99.57|60.73|1165.20|1821.90|1678.20|2987.10|54.65|0.00|417.90|1821.90|1876.55|2239.80|2294.45|143.70| +2451162|50155|2451237|9865|26465|1196287|1309|33178|1049|231132|2291|30913|25|26|18|2|153|133|91|26.94|27.20|14.14|1188.46|1286.74|2451.54|2475.20|51.46|0.00|618.80|1286.74|1338.20|1905.54|1957.00|-1164.80| +2451162|50155|2451266|524|26465|1196287|1309|33178|1049|231132|2291|30913|56|25|10|4|251|133|6|77.74|167.14|66.85|601.74|401.10|466.44|1002.84|12.03|0.00|10.02|401.10|413.13|411.12|423.15|-65.34| +2451162|50155|2451186|11246|26465|1196287|1309|33178|1049|231132|2291|30913|8|14|4|5|153|133|61|48.39|70.16|13.33|3466.63|813.13|2951.79|4279.76|32.52|0.00|85.40|813.13|845.65|898.53|931.05|-2138.66| +2451162|50155|2451198|13405|26465|1196287|1309|33178|1049|231132|2291|30913|55|28|5|2|299|133|3|56.60|116.03|84.70|93.99|254.10|169.80|348.09|20.32|0.00|48.72|254.10|274.42|302.82|323.14|84.30| +2451162|50155|2451239|17929|26465|1196287|1309|33178|1049|231132|2291|30913|50|2|8|2|133|133|43|13.62|21.65|6.92|633.39|297.56|585.66|930.95|23.80|0.00|64.93|297.56|321.36|362.49|386.29|-288.10| +2452496|33301|2452594|16983|24050|1584970|1090|19610|46339|268737|5217|47337|18|3|18|4|57|134|9|53.69|141.74|109.13|293.49|982.17|483.21|1275.66|88.39|0.00|318.87|982.17|1070.56|1301.04|1389.43|498.96| +2452496|33301|2452578|3210|24050|1584970|1090|19610|46339|268737|5217|47337|1|25|18|5|72|134|37|10.21|26.95|2.15|917.60|79.55|377.77|997.15|3.97|0.00|448.44|79.55|83.52|527.99|531.96|-298.22| +2452496|33301|2452608|14835|24050|1584970|1090|19610|46339|268737|5217|47337|18|1|3|5|217|134|28|21.65|38.53|25.42|367.08|711.76|606.20|1078.84|49.82|0.00|237.16|711.76|761.58|948.92|998.74|105.56| +2452496|33301|2452542|3969|24050|1584970|1090|19610|46339|268737|5217|47337|30|27|6|5|64|134|37|91.49|118.02|82.61|1310.17|3056.57|3385.13|4366.74|244.52|0.00|960.52|3056.57|3301.09|4017.09|4261.61|-328.56| +2452496|33301|2452541|10519|24050|1584970|1090|19610|46339|268737|5217|47337|15|9|2|4|56|134|15|50.40|55.44|43.24|183.00|648.60|756.00|831.60|38.91|0.00|33.15|648.60|687.51|681.75|720.66|-107.40| +2452496|33301|2452538|8190|24050|1584970|1090|19610|46339|268737|5217|47337|6|25|6|4|269|134|71|83.10|177.00|162.84|1005.36|11561.64|5900.10|12567.00|809.31|0.00|4775.46|11561.64|12370.95|16337.10|17146.41|5661.54| +2452496|33301|2452514|3597|24050|1584970|1090|19610|46339|268737|5217|47337|15|1|14|2|250|134|36|11.07|28.44|6.82|778.32|245.52|398.52|1023.84|6.87|147.31|51.12|98.21|105.08|149.33|156.20|-300.31| +2452496|33301|2452533|5773|24050|1584970|1090|19610|46339|268737|5217|47337|37|25|14|3|249|134|23|49.88|112.72|51.85|1400.01|1192.55|1147.24|2592.56|83.47|0.00|103.50|1192.55|1276.02|1296.05|1379.52|45.31| +2452496|33301|2452593|8049|24050|1584970|1090|19610|46339|268737|5217|47337|19|3|14|4|91|134|80|2.65|5.22|1.30|313.60|104.00|212.00|417.60|5.20|0.00|74.40|104.00|109.20|178.40|183.60|-108.00| +2452496|33301|2452514|14611|24050|1584970|1090|19610|46339|268737|5217|47337|43|6|4|5|66|134|93|75.23|139.92|76.95|5856.21|7156.35|6996.39|13012.56|143.12|0.00|1431.27|7156.35|7299.47|8587.62|8730.74|159.96| +2452496|33301|2452587|12363|24050|1584970|1090|19610|46339|268737|5217|47337|57|9|18|4|157|134|29|71.94|146.75|105.66|1191.61|3064.14|2086.26|4255.75|30.64|0.00|468.06|3064.14|3094.78|3532.20|3562.84|977.88| +2452496|33301|2452502|14859|24050|1584970|1090|19610|46339|268737|5217|47337|27|13|13|1|272|134|91|36.50|51.10|0.51|4603.69|46.41|3321.50|4650.10|0.00|0.00|650.65|46.41|46.41|697.06|697.06|-3275.09| +2452496|33301|2452585|5515|24050|1584970|1090|19610|46339|268737|5217|47337|21|21|18|3|265|134|64|36.43|95.81|60.36|2268.80|3863.04|2331.52|6131.84|0.00|0.00|2697.60|3863.04|3863.04|6560.64|6560.64|1531.52| +2451510|43393|2451586|3632|26805|1783570|7088|21006|26805|1783570|7088|21006|37|14|17|1|185|135|40|90.27|178.73|71.49|4289.60|2859.60|3610.80|7149.20|142.98|0.00|2645.20|2859.60|3002.58|5504.80|5647.78|-751.20| +2451510|43393|2451623|6550|26805|1783570|7088|21006|26805|1783570|7088|21006|7|4|9|3|127|135|33|96.60|171.94|116.91|1815.99|3858.03|3187.80|5674.02|270.06|0.00|1248.06|3858.03|4128.09|5106.09|5376.15|670.23| +2451510|43393|2451561|7966|26805|1783570|7088|21006|26805|1783570|7088|21006|28|7|13|2|271|135|68|27.78|38.05|21.30|1139.00|1448.40|1889.04|2587.40|30.41|1013.88|25.84|434.52|464.93|460.36|490.77|-1454.52| +2451510|43393|2451528|5560|26805|1783570|7088|21006|26805|1783570|7088|21006|32|19|13|4|192|135|31|6.79|15.27|10.99|132.68|340.69|210.49|473.37|13.62|0.00|75.64|340.69|354.31|416.33|429.95|130.20| +2451510|43393|2451518|2264|26805|1783570|7088|21006|26805|1783570|7088|21006|2|4|14|5|276|135|78|49.78|117.48|78.71|3024.06|6139.38|3882.84|9163.44|122.78|0.00|2932.02|6139.38|6262.16|9071.40|9194.18|2256.54| +2451510|43393|2451545|8827|26805|1783570|7088|21006|26805|1783570|7088|21006|26|26|7|2|67|135|23|39.92|54.69|4.92|1144.71|113.16|918.16|1257.87|2.26|0.00|50.14|113.16|115.42|163.30|165.56|-805.00| +2451510|43393|2451579|17998|26805|1783570|7088|21006|26805|1783570|7088|21006|38|7|18|2|233|135|63|59.36|117.53|16.45|6368.04|1036.35|3739.68|7404.39|51.81|0.00|3331.44|1036.35|1088.16|4367.79|4419.60|-2703.33| +2451510|43393|2451560|4166|26805|1783570|7088|21006|26805|1783570|7088|21006|43|10|7|3|62|135|80|76.64|129.52|94.54|2798.40|7563.20|6131.20|10361.60|15.12|6806.88|3729.60|756.32|771.44|4485.92|4501.04|-5374.88| +2451510|43393|2451571|2008|26805|1783570|7088|21006|26805|1783570|7088|21006|37|28|8|4|160|135|100|14.12|37.41|5.61|3180.00|561.00|1412.00|3741.00|11.22|0.00|1496.00|561.00|572.22|2057.00|2068.22|-851.00| +2451510|43393|2451578|15340|26805|1783570|7088|21006|26805|1783570|7088|21006|14|26|20|1|242|135|13|31.35|56.74|17.58|509.08|228.54|407.55|737.62|18.28|0.00|7.28|228.54|246.82|235.82|254.10|-179.01| +2452127|43101|2452230|3231|77225|1147154|2683|41412|94282|1272679|5246|43975|35|5|5|5|212|136|83|15.22|26.48|6.62|1648.38|549.46|1263.26|2197.84|49.45|0.00|0.00|549.46|598.91|549.46|598.91|-713.80| +2452127|43101|2452222|1461|77225|1147154|2683|41412|94282|1272679|5246|43975|51|29|7|4|238|136|11|15.99|20.78|16.41|48.07|180.51|175.89|228.58|9.02|0.00|50.27|180.51|189.53|230.78|239.80|4.62| +2452127|43101|2452158|14849|77225|1147154|2683|41412|94282|1272679|5246|43975|21|29|19|3|177|136|88|73.33|183.32|86.16|8550.08|7582.08|6453.04|16132.16|303.28|0.00|322.08|7582.08|7885.36|7904.16|8207.44|1129.04| +2452127|43101|2452179|14413|77225|1147154|2683|41412|94282|1272679|5246|43975|47|17|17|2|10|136|19|72.84|108.53|107.44|20.71|2041.36|1383.96|2062.07|81.65|0.00|350.55|2041.36|2123.01|2391.91|2473.56|657.40| +2452127|43101|2452144|523|77225|1147154|2683|41412|94282|1272679|5246|43975|35|25|5|5|185|136|5|98.60|107.47|77.37|150.50|386.85|493.00|537.35|0.07|379.11|26.85|7.74|7.81|34.59|34.66|-485.26| +2452127|43101|2452225|13939|77225|1147154|2683|41412|94282|1272679|5246|43975|47|11|8|5|35|136|28|46.78|134.25|119.48|413.56|3345.44|1309.84|3759.00|66.90|0.00|1315.44|3345.44|3412.34|4660.88|4727.78|2035.60| +2452127|43101|2452185|13023|77225|1147154|2683|41412|94282|1272679|5246|43975|23|7|19|4|289|136|14|11.79|23.93|6.70|241.22|93.80|165.06|335.02|6.56|0.00|140.70|93.80|100.36|234.50|241.06|-71.26| +2452127|43101|2452218|6931|77225|1147154|2683|41412|94282|1272679|5246|43975|1|25|15|2|19|136|54|68.91|148.84|87.81|3295.62|4741.74|3721.14|8037.36|0.00|0.00|2973.78|4741.74|4741.74|7715.52|7715.52|1020.60| +2452127|43101|2452200|13627|77225|1147154|2683|41412|94282|1272679|5246|43975|31|3|18|4|170|136|68|38.14|51.48|2.57|3325.88|174.76|2593.52|3500.64|6.99|0.00|244.80|174.76|181.75|419.56|426.55|-2418.76| +2452127|43101|2452148|16787|77225|1147154|2683|41412|94282|1272679|5246|43975|45|21|2|5|28|136|55|74.66|194.86|68.20|6966.30|3751.00|4106.30|10717.30|37.51|0.00|1714.35|3751.00|3788.51|5465.35|5502.86|-355.30| +2452127|43101|2452183|6999|77225|1147154|2683|41412|94282|1272679|5246|43975|13|25|12|3|107|136|11|74.69|103.81|9.34|1039.17|102.74|821.59|1141.91|1.02|0.00|502.37|102.74|103.76|605.11|606.13|-718.85| +2452127|43101|2452202|14861|77225|1147154|2683|41412|94282|1272679|5246|43975|1|7|10|3|276|136|87|67.20|75.93|74.41|132.24|6473.67|5846.40|6605.91|0.00|0.00|990.06|6473.67|6473.67|7463.73|7463.73|627.27| +2452127|43101|2452145|6301|77225|1147154|2683|41412|94282|1272679|5246|43975|3|15|11|2|153|136|29|51.43|127.54|77.79|1442.75|2255.91|1491.47|3698.66|90.23|0.00|554.77|2255.91|2346.14|2810.68|2900.91|764.44| +2451446|79601|2451549|7072|72575|1638838|2701|11764|16255|1274557|6153|14016|31|8|4|3|2|137|83|81.38|145.67|53.89|7617.74|4472.87|6754.54|12090.61|14.76|3980.85|604.24|492.02|506.78|1096.26|1111.02|-6262.52| +2451446|79601|2451537|9826|72575|1638838|2701|11764|16255|1274557|6153|14016|52|7|14|1|168|137|38|16.93|46.38|6.02|1533.68|228.76|643.34|1762.44|4.39|155.55|193.80|73.21|77.60|267.01|271.40|-570.13| +2451446|79601|2451492|11614|72575|1638838|2701|11764|16255|1274557|6153|14016|43|4|4|5|239|137|57|64.87|95.35|89.62|326.61|5108.34|3697.59|5434.95|153.25|0.00|1847.37|5108.34|5261.59|6955.71|7108.96|1410.75| +2451446|79601|2451488|11680|72575|1638838|2701|11764|16255|1274557|6153|14016|13|25|12|3|167|137|17|77.08|134.11|127.40|114.07|2165.80|1310.36|2279.87|57.17|736.37|341.87|1429.43|1486.60|1771.30|1828.47|119.07| +2451446|79601|2451498|6304|72575|1638838|2701|11764|16255|1274557|6153|14016|20|4|15|5|272|137|83|24.53|58.62|53.93|389.27|4476.19|2035.99|4865.46|107.42|1790.47|826.68|2685.72|2793.14|3512.40|3619.82|649.73| +2451446|79601|2451528|13057|72575|1638838|2701|11764|16255|1274557|6153|14016|37|10|13|5|57|137|61|57.90|149.38|73.19|4647.59|4464.59|3531.90|9112.18|29.46|1517.96|546.56|2946.63|2976.09|3493.19|3522.65|-585.27| +2451446|79601|2451540|14845|72575|1638838|2701|11764|16255|1274557|6153|14016|1|19|12|4|226|137|94|11.50|17.13|7.53|902.40|707.82|1081.00|1610.22|29.30|382.22|466.24|325.60|354.90|791.84|821.14|-755.40| +2451446|79601|2451484|16472|72575|1638838|2701|11764|16255|1274557|6153|14016|44|25|16|1|149|137|50|36.31|84.23|32.84|2569.50|1642.00|1815.50|4211.50|147.78|0.00|1768.50|1642.00|1789.78|3410.50|3558.28|-173.50| +2451446|79601|2451546|1426|72575|1638838|2701|11764|16255|1274557|6153|14016|32|22|10|3|96|137|99|48.02|73.47|28.65|4437.18|2836.35|4753.98|7273.53|65.80|1191.26|2399.76|1645.09|1710.89|4044.85|4110.65|-3108.89| +2451446|79601|2451474|5671|72575|1638838|2701|11764|16255|1274557|6153|14016|19|2|17|4|61|137|75|45.67|87.22|27.91|4448.25|2093.25|3425.25|6541.50|146.52|0.00|1373.25|2093.25|2239.77|3466.50|3613.02|-1332.00| +2451446|79601|2451520|11464|72575|1638838|2701|11764|16255|1274557|6153|14016|22|1|13|5|44|137|27|10.10|11.71|0.81|294.30|21.87|272.70|316.17|0.00|0.00|88.29|21.87|21.87|110.16|110.16|-250.83| +2451446|79601|2451537|2293|72575|1638838|2701|11764|16255|1274557|6153|14016|28|22|9|1|93|137|32|96.08|282.47|115.81|5333.12|3705.92|3074.56|9039.04|333.53|0.00|0.00|3705.92|4039.45|3705.92|4039.45|631.36| +2451446|79601|2451537|15590|72575|1638838|2701|11764|16255|1274557|6153|14016|20|22|3|4|225|137|92|14.43|29.58|27.80|163.76|2557.60|1327.56|2721.36|0.00|0.00|652.28|2557.60|2557.60|3209.88|3209.88|1230.04| +2451446|79601|2451540|10411|72575|1638838|2701|11764|16255|1274557|6153|14016|49|19|15|2|152|137|92|70.81|124.62|93.46|2866.72|8598.32|6514.52|11465.04|601.88|0.00|2750.80|8598.32|9200.20|11349.12|11951.00|2083.80| +2451446|79601|2451524|5698|72575|1638838|2701|11764|16255|1274557|6153|14016|10|8|1|5|226|137|74|71.95|133.10|111.80|1576.20|8273.20|5324.30|9849.40|248.19|0.00|2954.82|8273.20|8521.39|11228.02|11476.21|2948.90| +2451446|79601|2451483|3778|72575|1638838|2701|11764|16255|1274557|6153|14016|7|22|7|5|283|137|12|26.23|68.46|27.38|492.96|328.56|314.76|821.52|3.28|0.00|16.32|328.56|331.84|344.88|348.16|13.80| +2451407|76320|2451438|997|93916|83515|6361|10760|99282|634616|51|5650|13|26|18|2|26|138|22|84.72|168.59|94.41|1631.96|2077.02|1863.84|3708.98|186.93|0.00|890.12|2077.02|2263.95|2967.14|3154.07|213.18| +2451407|76320|2451435|13090|93916|83515|6361|10760|99282|634616|51|5650|22|22|9|4|169|138|26|20.84|51.89|35.80|418.34|930.80|541.84|1349.14|16.47|381.62|26.78|549.18|565.65|575.96|592.43|7.34| +2451407|76320|2451469|1600|93916|83515|6361|10760|99282|634616|51|5650|31|19|4|3|299|138|93|82.22|216.23|99.46|10859.61|9249.78|7646.46|20109.39|462.48|0.00|7239.12|9249.78|9712.26|16488.90|16951.38|1603.32| +2451407|76320|2451457|9380|93916|83515|6361|10760|99282|634616|51|5650|1|22|3|4|255|138|46|89.26|142.81|14.28|5912.38|656.88|4105.96|6569.26|21.28|420.40|0.00|236.48|257.76|236.48|257.76|-3869.48| +2451407|76320|2451513|766|93916|83515|6361|10760|99282|634616|51|5650|38|7|15|4|143|138|54|77.16|228.39|162.15|3576.96|8756.10|4166.64|12333.06|612.92|0.00|3946.32|8756.10|9369.02|12702.42|13315.34|4589.46| +2451407|76320|2451468|2536|93916|83515|6361|10760|99282|634616|51|5650|34|7|20|1|142|138|19|10.87|21.19|5.29|302.10|100.51|206.53|402.61|2.95|2.01|193.23|98.50|101.45|291.73|294.68|-108.03| +2451407|76320|2451474|14446|93916|83515|6361|10760|99282|634616|51|5650|34|28|15|5|172|138|38|30.88|80.90|79.28|61.56|3012.64|1173.44|3074.20|150.63|0.00|1475.54|3012.64|3163.27|4488.18|4638.81|1839.20| +2451407|76320|2451451|7862|93916|83515|6361|10760|99282|634616|51|5650|16|16|2|2|265|138|55|87.45|190.64|40.03|8283.55|2201.65|4809.75|10485.20|198.14|0.00|419.10|2201.65|2399.79|2620.75|2818.89|-2608.10| +2451407|76320|2451500|6889|93916|83515|6361|10760|99282|634616|51|5650|8|26|6|5|267|138|96|13.85|27.70|19.66|771.84|1887.36|1329.60|2659.20|150.98|0.00|398.40|1887.36|2038.34|2285.76|2436.74|557.76| +2451407|76320|2451430|7396|93916|83515|6361|10760|99282|634616|51|5650|43|26|3|5|154|138|47|28.10|41.86|10.46|1475.80|491.62|1320.70|1967.42|9.83|0.00|235.94|491.62|501.45|727.56|737.39|-829.08| +2451407|76320|2451484|3692|93916|83515|6361|10760|99282|634616|51|5650|31|28|4|3|65|138|57|63.97|142.01|105.08|2105.01|5989.56|3646.29|8094.57|117.39|4312.48|2509.14|1677.08|1794.47|4186.22|4303.61|-1969.21| +2451407|76320|2451483|7729|93916|83515|6361|10760|99282|634616|51|5650|49|7|3|5|144|138|15|43.87|49.57|46.10|52.05|691.50|658.05|743.55|15.14|186.70|282.45|504.80|519.94|787.25|802.39|-153.25| +2451407|76320|2451429|10126|93916|83515|6361|10760|99282|634616|51|5650|28|10|7|3|249|138|74|30.05|82.33|22.22|4448.14|1644.28|2223.70|6092.42|16.44|1315.42|1278.72|328.86|345.30|1607.58|1624.02|-1894.84| +2451173|47364|2451265|17320|40917|915281|1292|32056|40917|915281|1292|32056|52|8|10|3|73|139|86|4.33|11.47|7.22|365.50|620.92|372.38|986.42|55.88|0.00|29.24|620.92|676.80|650.16|706.04|248.54| +2451173|47364|2451246|8758|40917|915281|1292|32056|40917|915281|1292|32056|10|8|11|2|83|139|31|62.00|161.20|64.48|2998.32|1998.88|1922.00|4997.20|43.17|919.48|749.58|1079.40|1122.57|1828.98|1872.15|-842.60| +2451173|47364|2451270|1760|40917|915281|1292|32056|40917|915281|1292|32056|34|20|14|4|297|139|92|48.93|123.30|16.02|9869.76|1473.84|4501.56|11343.60|14.73|0.00|5671.80|1473.84|1488.57|7145.64|7160.37|-3027.72| +2451173|47364|2451215|10550|40917|915281|1292|32056|40917|915281|1292|32056|14|2|13|4|95|139|5|7.04|11.89|4.87|35.10|24.35|35.20|59.45|0.00|10.47|5.35|13.88|13.88|19.23|19.23|-21.32| +2451173|47364|2451263|6721|40917|915281|1292|32056|40917|915281|1292|32056|44|8|7|4|41|139|53|32.23|93.14|24.21|3653.29|1283.13|1708.19|4936.42|89.81|0.00|2171.94|1283.13|1372.94|3455.07|3544.88|-425.06| +2451173|47364|2451243|9139|40917|915281|1292|32056|40917|915281|1292|32056|16|2|5|3|34|139|64|33.08|47.96|24.93|1473.92|1595.52|2117.12|3069.44|143.59|0.00|429.44|1595.52|1739.11|2024.96|2168.55|-521.60| +2451173|47364|2451192|7216|40917|915281|1292|32056|40917|915281|1292|32056|46|13|13|1|272|139|79|83.61|156.35|50.03|8399.28|3952.37|6605.19|12351.65|118.57|0.00|3087.32|3952.37|4070.94|7039.69|7158.26|-2652.82| +2451173|47364|2451268|13478|40917|915281|1292|32056|40917|915281|1292|32056|37|7|9|1|236|139|55|74.49|172.81|31.10|7794.05|1710.50|4096.95|9504.55|34.21|0.00|1995.95|1710.50|1744.71|3706.45|3740.66|-2386.45| +2451173|47364|2451210|14204|40917|915281|1292|32056|40917|915281|1292|32056|28|26|16|3|237|139|46|32.49|56.53|25.43|1430.60|1169.78|1494.54|2600.38|40.00|725.26|1144.02|444.52|484.52|1588.54|1628.54|-1050.02| +2451173|47364|2451201|3890|40917|915281|1292|32056|40917|915281|1292|32056|2|14|17|1|35|139|21|69.46|166.00|107.90|1220.10|2265.90|1458.66|3486.00|203.93|0.00|732.06|2265.90|2469.83|2997.96|3201.89|807.24| +2451173|47364|2451256|14821|40917|915281|1292|32056|40917|915281|1292|32056|19|8|17|2|27|139|42|71.14|92.48|41.61|2136.54|1747.62|2987.88|3884.16|0.00|0.00|660.24|1747.62|1747.62|2407.86|2407.86|-1240.26| +2451173|47364|2451287|2845|40917|915281|1292|32056|40917|915281|1292|32056|44|13|14|3|252|139|89|78.86|178.22|39.20|12372.78|3488.80|7018.54|15861.58|104.66|0.00|6661.65|3488.80|3593.46|10150.45|10255.11|-3529.74| +2451173|47364|2451270|9643|40917|915281|1292|32056|40917|915281|1292|32056|34|26|10|1|279|139|42|79.46|205.80|125.53|3371.34|5272.26|3337.32|8643.60|210.89|0.00|345.66|5272.26|5483.15|5617.92|5828.81|1934.94| +2451276|70169|2451310|12652|63405|1704417|5076|37288|40863|1306557|6818|8230|38|14|16|4|122|140|87|11.37|32.51|16.25|1414.62|1413.75|989.19|2828.37|56.55|0.00|678.60|1413.75|1470.30|2092.35|2148.90|424.56| +2451276|70169|2451320|10705|63405|1704417|5076|37288|40863|1306557|6818|8230|7|4|12|1|30|140|78|35.29|82.22|15.62|5194.80|1218.36|2752.62|6413.16|4.14|804.11|705.12|414.25|418.39|1119.37|1123.51|-2338.37| +2451276|70169|2451319|6464|63405|1704417|5076|37288|40863|1306557|6818|8230|31|14|13|5|37|140|38|38.53|108.26|51.96|2139.40|1974.48|1464.14|4113.88|98.72|0.00|1727.48|1974.48|2073.20|3701.96|3800.68|510.34| +2451276|70169|2451379|2666|63405|1704417|5076|37288|40863|1306557|6818|8230|49|19|12|2|249|140|58|66.57|153.11|102.58|2930.74|5949.64|3861.06|8880.38|178.48|0.00|1331.68|5949.64|6128.12|7281.32|7459.80|2088.58| +2451276|70169|2451342|9808|63405|1704417|5076|37288|40863|1306557|6818|8230|4|2|1|5|149|140|15|48.04|113.37|91.82|323.25|1377.30|720.60|1700.55|68.86|0.00|510.15|1377.30|1446.16|1887.45|1956.31|656.70| +2451276|70169|2451358|541|63405|1704417|5076|37288|40863|1306557|6818|8230|2|2|19|1|233|140|77|39.10|91.88|13.78|6013.70|1061.06|3010.70|7074.76|74.27|0.00|1272.81|1061.06|1135.33|2333.87|2408.14|-1949.64| +2451276|70169|2451282|1598|63405|1704417|5076|37288|40863|1306557|6818|8230|37|16|19|4|159|140|84|35.57|49.79|19.91|2509.92|1672.44|2987.88|4182.36|133.79|0.00|1463.28|1672.44|1806.23|3135.72|3269.51|-1315.44| +2451276|70169|2451366|7411|63405|1704417|5076|37288|40863|1306557|6818|8230|44|26|15|1|77|140|96|2.23|4.79|4.69|9.60|450.24|214.08|459.84|31.51|0.00|8.64|450.24|481.75|458.88|490.39|236.16| +2451276|70169|2451333|8707|63405|1704417|5076|37288|40863|1306557|6818|8230|55|26|10|3|189|140|74|3.13|7.35|3.67|272.32|271.58|231.62|543.90|10.86|0.00|195.36|271.58|282.44|466.94|477.80|39.96| +2451522|36372|2451625|1262|44953|692145|2184|14623|7461|1798094|1540|18732|20|14|2|4|126|141|87|74.94|110.16|76.01|2971.05|6612.87|6519.78|9583.92|66.12|0.00|1149.27|6612.87|6678.99|7762.14|7828.26|93.09| +2451522|36372|2451524|4552|44953|692145|2184|14623|7461|1798094|1540|18732|4|26|18|2|153|141|24|28.83|76.97|59.26|425.04|1422.24|691.92|1847.28|113.77|0.00|683.28|1422.24|1536.01|2105.52|2219.29|730.32| +2451522|36372|2451625|7510|44953|692145|2184|14623|7461|1798094|1540|18732|26|19|19|3|74|141|11|15.19|40.25|23.34|186.01|256.74|167.09|442.75|15.40|0.00|17.71|256.74|272.14|274.45|289.85|89.65| +2451522|36372|2451570|2588|44953|692145|2184|14623|7461|1798094|1540|18732|1|4|18|5|62|141|74|5.52|6.62|4.56|152.44|337.44|408.48|489.88|23.62|0.00|34.04|337.44|361.06|371.48|395.10|-71.04| +2451522|36372|2451562|17714|44953|692145|2184|14623|7461|1798094|1540|18732|38|22|4|1|138|141|75|27.37|59.94|25.77|2562.75|1932.75|2052.75|4495.50|154.62|0.00|1213.50|1932.75|2087.37|3146.25|3300.87|-120.00| +2451522|36372|2451588|14450|44953|692145|2184|14623|7461|1798094|1540|18732|37|4|7|1|255|141|3|16.66|28.65|19.19|28.38|57.57|49.98|85.95|2.87|0.00|12.87|57.57|60.44|70.44|73.31|7.59| +2451522|36372|2451593|15673|44953|692145|2184|14623|7461|1798094|1540|18732|37|20|3|2|24|141|37|19.78|45.88|6.42|1460.02|237.54|731.86|1697.56|19.00|0.00|50.69|237.54|256.54|288.23|307.23|-494.32| +2451522|36372|2451541|12982|44953|692145|2184|14623|7461|1798094|1540|18732|28|13|2|4|36|141|45|1.66|3.05|1.40|74.25|63.00|74.70|137.25|5.04|0.00|10.80|63.00|68.04|73.80|78.84|-11.70| +2451522|36372|2451593|11134|44953|692145|2184|14623|7461|1798094|1540|18732|56|26|2|5|15|141|70|44.92|125.77|114.45|792.40|8011.50|3144.40|8803.90|560.80|0.00|3345.30|8011.50|8572.30|11356.80|11917.60|4867.10| +2451522|36372|2451638|13561|44953|692145|2184|14623|7461|1798094|1540|18732|43|20|10|4|68|141|25|90.59|228.28|86.74|3538.50|2168.50|2264.75|5707.00|130.11|0.00|456.50|2168.50|2298.61|2625.00|2755.11|-96.25| +2451522|36372|2451628|8611|44953|692145|2184|14623|7461|1798094|1540|18732|43|4|17|3|299|141|38|38.48|114.67|41.28|2788.82|1568.64|1462.24|4357.46|141.17|0.00|1699.36|1568.64|1709.81|3268.00|3409.17|106.40| +2451522|36372|2451599|10580|44953|692145|2184|14623|7461|1798094|1540|18732|37|13|5|1|234|141|14|6.52|16.88|10.63|87.50|148.82|91.28|236.32|4.46|0.00|63.70|148.82|153.28|212.52|216.98|57.54| +2451522|36372|2451626|4174|44953|692145|2184|14623|7461|1798094|1540|18732|46|25|12|1|130|141|12|46.93|109.81|105.41|52.80|1264.92|563.16|1317.72|41.11|442.72|632.40|822.20|863.31|1454.60|1495.71|259.04| +2451463|59944|2451553|12019|75797|1297229|4708|26540|95939|1630780|6883|16315|10|2|8|4|163|142|68|59.12|112.32|44.92|4583.20|3054.56|4020.16|7637.76|183.27|0.00|3054.56|3054.56|3237.83|6109.12|6292.39|-965.60| +2451463|59944|2451553|14630|75797|1297229|4708|26540|95939|1630780|6883|16315|14|28|9|1|283|142|78|13.98|32.15|13.82|1429.74|1077.96|1090.44|2507.70|43.11|0.00|475.80|1077.96|1121.07|1553.76|1596.87|-12.48| +2451463|59944|2451474|2473|75797|1297229|4708|26540|95939|1630780|6883|16315|14|13|6|5|154|142|39|43.85|71.91|38.11|1318.20|1486.29|1710.15|2804.49|118.90|0.00|532.74|1486.29|1605.19|2019.03|2137.93|-223.86| +2451463|59944|2451507|11299|75797|1297229|4708|26540|95939|1630780|6883|16315|46|13|20|3|196|142|52|2.87|3.09|2.93|8.32|152.36|149.24|160.68|13.71|0.00|10.92|152.36|166.07|163.28|176.99|3.12| +2451463|59944|2451519|9601|75797|1297229|4708|26540|95939|1630780|6883|16315|46|25|15|4|296|142|78|42.17|125.66|106.81|1470.30|8331.18|3289.26|9801.48|83.31|0.00|195.78|8331.18|8414.49|8526.96|8610.27|5041.92| +2451463|59944|2451551|11623|75797|1297229|4708|26540|95939|1630780|6883|16315|56|4|4|3|269|142|6|22.31|32.34|15.19|102.90|91.14|133.86|194.04|7.29|0.00|56.22|91.14|98.43|147.36|154.65|-42.72| +2451463|59944|2451485|10672|75797|1297229|4708|26540|95939|1630780|6883|16315|52|16|8|5|29|142|5|9.97|10.56|4.75|29.05|23.75|49.85|52.80|1.18|0.00|10.00|23.75|24.93|33.75|34.93|-26.10| +2451463|59944|2451493|1108|75797|1297229|4708|26540|95939|1630780|6883|16315|55|1|1|4|144|142|70|55.02|79.22|16.63|4381.30|1164.10|3851.40|5545.40|81.48|0.00|387.80|1164.10|1245.58|1551.90|1633.38|-2687.30| +2451463|59944|2451558|4195|75797|1297229|4708|26540|95939|1630780|6883|16315|28|1|7|3|56|142|71|62.04|67.00|8.71|4138.59|618.41|4404.84|4757.00|49.47|0.00|428.13|618.41|667.88|1046.54|1096.01|-3786.43| +2450865|48676|2450952|17311|48483|754001|5119|47884|18240|1747351|5238|19203|56|26|12|2|292|143|64|4.19|10.81|7.13|235.52|456.32|268.16|691.84|36.50|0.00|145.28|456.32|492.82|601.60|638.10|188.16| +2450865|48676|2450952|17068|48483|754001|5119|47884|18240|1747351|5238|19203|28|26|10|4|258|143|93|81.48|204.51|14.31|17688.60|1330.83|7577.64|19019.43|39.92|0.00|3993.42|1330.83|1370.75|5324.25|5364.17|-6246.81| +2450865|48676|2450967|12394|48483|754001|5119|47884|18240|1747351|5238|19203|56|16|9|4|129|143|62|71.91|210.69|202.26|522.66|12540.12|4458.42|13062.78|250.80|0.00|5485.76|12540.12|12790.92|18025.88|18276.68|8081.70| +2450865|48676|2450980|16090|48483|754001|5119|47884|18240|1747351|5238|19203|56|1|13|2|284|143|32|83.92|227.42|13.64|6840.96|436.48|2685.44|7277.44|39.28|0.00|3201.92|436.48|475.76|3638.40|3677.68|-2248.96| +2450865|48676|2450896|10312|48483|754001|5119|47884|18240|1747351|5238|19203|25|1|16|4|159|143|33|33.26|64.52|27.09|1235.19|893.97|1097.58|2129.16|35.75|0.00|127.71|893.97|929.72|1021.68|1057.43|-203.61| +2450865|48676|2450899|6703|48483|754001|5119|47884|18240|1747351|5238|19203|56|14|20|4|201|143|19|91.91|163.59|75.25|1678.46|1429.75|1746.29|3108.21|42.89|0.00|497.23|1429.75|1472.64|1926.98|1969.87|-316.54| +2450865|48676|2450908|13696|48483|754001|5119|47884|18240|1747351|5238|19203|40|7|14|2|20|143|81|34.99|62.63|43.84|1521.99|3551.04|2834.19|5073.03|71.02|0.00|101.25|3551.04|3622.06|3652.29|3723.31|716.85| +2450865|48676|2450896|11968|48483|754001|5119|47884|18240|1747351|5238|19203|38|16|18|2|269|143|39|36.47|97.01|35.89|2383.68|1399.71|1422.33|3783.39|0.00|0.00|1702.35|1399.71|1399.71|3102.06|3102.06|-22.62| +2450865|48676|2450947|11644|48483|754001|5119|47884|18240|1747351|5238|19203|26|25|15|4|296|143|82|19.02|34.99|17.84|1406.30|1462.88|1559.64|2869.18|87.77|0.00|400.98|1462.88|1550.65|1863.86|1951.63|-96.76| +2450865|48676|2450929|14563|48483|754001|5119|47884|18240|1747351|5238|19203|2|22|15|3|238|143|79|11.97|27.53|9.91|1391.98|782.89|945.63|2174.87|28.18|78.28|43.45|704.61|732.79|748.06|776.24|-241.02| +2450865|48676|2450965|4063|48483|754001|5119|47884|18240|1747351|5238|19203|55|19|15|5|272|143|64|77.83|87.94|43.09|2870.40|2757.76|4981.12|5628.16|55.15|0.00|900.48|2757.76|2812.91|3658.24|3713.39|-2223.36| +2450865|48676|2450941|11176|48483|754001|5119|47884|18240|1747351|5238|19203|37|14|17|1|88|143|93|44.27|86.76|78.08|807.24|7261.44|4117.11|8068.68|290.45|0.00|1451.73|7261.44|7551.89|8713.17|9003.62|3144.33| +2450865|48676|2450893|415|48483|754001|5119|47884|18240|1747351|5238|19203|37|13|5|5|98|143|30|90.50|174.66|113.52|1834.20|3405.60|2715.00|5239.80|4.76|3167.20|2148.30|238.40|243.16|2386.70|2391.46|-2476.60| +2452386|42051|2452464|8028|78725|1440340|355|7970|2997|582809|2015|13630|49|13|9|1|193|144|77|8.94|26.46|1.32|1935.78|101.64|688.38|2037.42|3.04|0.00|40.04|101.64|104.68|141.68|144.72|-586.74| +2452386|42051|2452427|15504|78725|1440340|355|7970|2997|582809|2015|13630|37|3|12|5|25|144|23|91.34|203.68|85.54|2717.22|1967.42|2100.82|4684.64|157.39|0.00|936.79|1967.42|2124.81|2904.21|3061.60|-133.40| +2452386|42051|2452487|216|78725|1440340|355|7970|2997|582809|2015|13630|49|7|3|2|151|144|21|4.86|8.35|0.41|166.74|8.61|102.06|175.35|0.51|0.00|13.86|8.61|9.12|22.47|22.98|-93.45| +2452386|42051|2452387|11215|78725|1440340|355|7970|2997|582809|2015|13630|31|3|15|1|274|144|31|12.67|33.32|22.65|330.77|702.15|392.77|1032.92|21.06|0.00|51.46|702.15|723.21|753.61|774.67|309.38| +2452386|42051|2452395|6241|78725|1440340|355|7970|2997|582809|2015|13630|33|12|5|1|160|144|31|11.77|15.18|9.71|169.57|301.01|364.87|470.58|6.02|0.00|42.16|301.01|307.03|343.17|349.19|-63.86| +2452386|42051|2452437|15019|78725|1440340|355|7970|2997|582809|2015|13630|36|27|10|1|32|144|50|95.12|155.99|49.91|5304.00|2495.50|4756.00|7799.50|49.91|0.00|3743.50|2495.50|2545.41|6239.00|6288.91|-2260.50| +2452386|42051|2452471|12949|78725|1440340|355|7970|2997|582809|2015|13630|18|18|19|4|219|144|75|9.65|15.44|5.40|753.00|405.00|723.75|1158.00|24.30|0.00|57.75|405.00|429.30|462.75|487.05|-318.75| +2452386|42051|2452405|13543|78725|1440340|355|7970|2997|582809|2015|13630|19|3|7|2|144|144|62|51.50|87.55|18.38|4288.54|1139.56|3193.00|5428.10|68.37|0.00|759.50|1139.56|1207.93|1899.06|1967.43|-2053.44| +2452386|42051|2452443|14262|78725|1440340|355|7970|2997|582809|2015|13630|18|19|14|5|156|144|41|6.88|11.35|11.35|0.00|465.35|282.08|465.35|27.92|0.00|32.39|465.35|493.27|497.74|525.66|183.27| +2452386|42051|2452434|2893|78725|1440340|355|7970|2997|582809|2015|13630|3|21|10|4|98|144|73|84.75|207.63|99.66|7881.81|7275.18|6186.75|15156.99|582.01|0.00|3637.59|7275.18|7857.19|10912.77|11494.78|1088.43| +2452386|42051|2452449|12606|78725|1440340|355|7970|2997|582809|2015|13630|13|18|1|5|142|144|30|54.48|71.91|22.29|1488.60|668.70|1634.40|2157.30|40.12|0.00|819.60|668.70|708.82|1488.30|1528.42|-965.70| +2452386|42051|2452485|8877|78725|1440340|355|7970|2997|582809|2015|13630|49|6|18|3|168|144|73|89.92|196.02|3.92|14023.30|286.16|6564.16|14309.46|2.74|240.37|4006.24|45.79|48.53|4052.03|4054.77|-6518.37| +2452386|42051|2452447|13167|78725|1440340|355|7970|2997|582809|2015|13630|36|19|12|4|136|144|64|4.02|6.75|2.83|250.88|181.12|257.28|432.00|7.24|0.00|42.88|181.12|188.36|224.00|231.24|-76.16| +2451068|14277|2451102|3697|52028|1029431|3634|34237|20211|1754034|5693|27496|31|20|19|4|229|145|76|59.50|95.79|83.33|946.96|6333.08|4522.00|7280.04|63.33|0.00|1237.28|6333.08|6396.41|7570.36|7633.69|1811.08| +2451068|14277|2451120|12298|52028|1029431|3634|34237|20211|1754034|5693|27496|50|14|13|3|203|145|67|9.11|9.56|5.16|294.80|345.72|610.37|640.52|3.45|0.00|198.32|345.72|349.17|544.04|547.49|-264.65| +2451068|14277|2451074|17390|52028|1029431|3634|34237|20211|1754034|5693|27496|43|22|9|1|153|145|100|38.46|111.53|14.49|9704.00|1449.00|3846.00|11153.00|28.98|0.00|2342.00|1449.00|1477.98|3791.00|3819.98|-2397.00| +2451068|14277|2451185|3716|52028|1029431|3634|34237|20211|1754034|5693|27496|10|10|9|4|299|145|50|93.97|205.79|109.06|4836.50|5453.00|4698.50|10289.50|104.69|4144.28|411.50|1308.72|1413.41|1720.22|1824.91|-3389.78| +2451068|14277|2451117|1720|52028|1029431|3634|34237|20211|1754034|5693|27496|16|26|2|2|82|145|26|3.60|3.85|0.96|75.14|24.96|93.60|100.10|2.24|0.00|40.04|24.96|27.20|65.00|67.24|-68.64| +2451068|14277|2451185|14012|52028|1029431|3634|34237|20211|1754034|5693|27496|46|14|12|3|57|145|55|19.84|51.98|31.18|1144.00|1714.90|1091.20|2858.90|85.74|0.00|1343.65|1714.90|1800.64|3058.55|3144.29|623.70| +2451068|14277|2451088|7774|52028|1029431|3634|34237|20211|1754034|5693|27496|40|26|20|1|9|145|51|77.38|214.34|137.17|3935.67|6995.67|3946.38|10931.34|629.61|0.00|4591.02|6995.67|7625.28|11586.69|12216.30|3049.29| +2451068|14277|2451110|17458|52028|1029431|3634|34237|20211|1754034|5693|27496|34|14|8|3|248|145|21|80.69|238.84|40.60|4163.04|852.60|1694.49|5015.64|34.10|0.00|852.60|852.60|886.70|1705.20|1739.30|-841.89| +2451068|14277|2451168|13184|52028|1029431|3634|34237|20211|1754034|5693|27496|58|8|20|5|200|145|16|89.39|151.96|110.93|656.48|1774.88|1430.24|2431.36|124.24|0.00|170.08|1774.88|1899.12|1944.96|2069.20|344.64| +2451785|61675|2451879|11312|46466|649270|874|48878|59133|444907|5690|2094|17|19|4|5|209|146|83|29.39|76.12|22.83|4423.07|1894.89|2439.37|6317.96|113.69|0.00|2337.28|1894.89|2008.58|4232.17|4345.86|-544.48| +2451785|61675|2451902|1121|46466|649270|874|48878|59133|444907|5690|2094|11|29|17|1|215|146|95|20.77|43.40|42.09|124.45|3998.55|1973.15|4123.00|39.98|0.00|164.35|3998.55|4038.53|4162.90|4202.88|2025.40| +2451785|61675|2451893|9053|46466|649270|874|48878|59133|444907|5690|2094|29|2|19|1|203|146|58|24.01|51.14|2.55|2818.22|147.90|1392.58|2966.12|10.35|0.00|948.88|147.90|158.25|1096.78|1107.13|-1244.68| +2451785|61675|2451878|15176|46466|649270|874|48878|59133|444907|5690|2094|50|14|10|2|134|146|49|56.13|107.20|24.65|4044.95|1207.85|2750.37|5252.80|60.39|0.00|1470.49|1207.85|1268.24|2678.34|2738.73|-1542.52| +2451785|61675|2451900|13957|46466|649270|874|48878|59133|444907|5690|2094|23|13|2|2|292|146|85|39.05|40.22|7.23|2804.15|614.55|3319.25|3418.70|36.87|0.00|717.40|614.55|651.42|1331.95|1368.82|-2704.70| +2451785|61675|2451802|1115|46466|649270|874|48878|59133|444907|5690|2094|38|29|10|3|203|146|88|24.18|35.54|28.07|657.36|2470.16|2127.84|3127.52|28.65|1753.81|1219.68|716.35|745.00|1936.03|1964.68|-1411.49| +2451785|61675|2451803|17840|46466|649270|874|48878|59133|444907|5690|2094|47|14|12|4|133|146|29|30.18|37.12|26.72|301.60|774.88|875.22|1076.48|69.73|0.00|42.92|774.88|844.61|817.80|887.53|-100.34| +2451785|61675|2451867|5261|46466|649270|874|48878|59133|444907|5690|2094|11|11|16|3|193|146|13|36.18|101.66|55.91|594.75|726.83|470.34|1321.58|43.60|0.00|647.53|726.83|770.43|1374.36|1417.96|256.49| +2451785|61675|2451861|14900|46466|649270|874|48878|59133|444907|5690|2094|25|11|19|2|135|146|62|19.79|47.49|11.87|2208.44|735.94|1226.98|2944.38|44.15|0.00|823.98|735.94|780.09|1559.92|1604.07|-491.04| +2451785|61675|2451875|185|46466|649270|874|48878|59133|444907|5690|2094|47|2|3|4|65|146|67|28.65|79.64|46.19|2241.15|3094.73|1919.55|5335.88|123.78|0.00|853.58|3094.73|3218.51|3948.31|4072.09|1175.18| +2451785|61675|2451839|445|46466|649270|874|48878|59133|444907|5690|2094|41|14|5|2|59|146|58|81.38|116.37|60.51|3239.88|3509.58|4720.04|6749.46|140.38|0.00|607.26|3509.58|3649.96|4116.84|4257.22|-1210.46| +2451785|61675|2451865|17881|46466|649270|874|48878|59133|444907|5690|2094|35|17|20|3|109|146|47|28.66|77.66|66.01|547.55|3102.47|1347.02|3650.02|217.17|0.00|1751.69|3102.47|3319.64|4854.16|5071.33|1755.45| +2451785|61675|2451830|11513|46466|649270|874|48878|59133|444907|5690|2094|35|13|19|3|237|146|43|8.54|15.37|7.53|337.12|323.79|367.22|660.91|16.18|0.00|105.35|323.79|339.97|429.14|445.32|-43.43| +2451824|24644|2451847|8965|72367|462290|1813|11336|82689|1214313|3905|46628|23|7|6|1|153|147|64|1.62|2.49|1.64|54.40|104.96|103.68|159.36|5.24|0.00|31.36|104.96|110.20|136.32|141.56|1.28| +2451824|24644|2451940|6566|72367|462290|1813|11336|82689|1214313|3905|46628|47|7|7|5|20|147|92|41.64|117.00|52.65|5920.20|4843.80|3830.88|10764.00|48.43|0.00|2045.16|4843.80|4892.23|6888.96|6937.39|1012.92| +2451824|24644|2451853|14269|72367|462290|1813|11336|82689|1214313|3905|46628|11|11|16|3|283|147|97|68.73|155.32|90.08|6328.28|8737.76|6666.81|15066.04|87.37|0.00|6628.98|8737.76|8825.13|15366.74|15454.11|2070.95| +2451824|24644|2451904|236|72367|462290|1813|11336|82689|1214313|3905|46628|23|2|5|5|205|147|14|19.30|47.86|30.63|241.22|428.82|270.20|670.04|1.24|304.46|314.86|124.36|125.60|439.22|440.46|-145.84| +2451824|24644|2451832|9421|72367|462290|1813|11336|82689|1214313|3905|46628|1|13|13|4|295|147|38|38.83|85.81|80.66|195.70|3065.08|1475.54|3260.78|153.25|0.00|97.66|3065.08|3218.33|3162.74|3315.99|1589.54| +2451824|24644|2451827|15385|72367|462290|1813|11336|82689|1214313|3905|46628|32|26|1|3|72|147|58|55.64|105.15|5.25|5794.20|304.50|3227.12|6098.70|27.40|0.00|2439.48|304.50|331.90|2743.98|2771.38|-2922.62| +2451824|24644|2451885|9596|72367|462290|1813|11336|82689|1214313|3905|46628|37|17|16|1|16|147|61|75.98|171.71|84.13|5342.38|5131.93|4634.78|10474.31|256.59|0.00|4294.40|5131.93|5388.52|9426.33|9682.92|497.15| +2451824|24644|2451923|371|72367|462290|1813|11336|82689|1214313|3905|46628|7|1|1|3|188|147|72|13.65|23.75|14.48|667.44|1042.56|982.80|1710.00|58.38|208.51|700.56|834.05|892.43|1534.61|1592.99|-148.75| +2451824|24644|2451868|6662|72367|462290|1813|11336|82689|1214313|3905|46628|55|8|5|5|72|147|30|30.92|61.22|28.16|991.80|844.80|927.60|1836.60|25.34|0.00|128.40|844.80|870.14|973.20|998.54|-82.80| +2451824|24644|2451884|6434|72367|462290|1813|11336|82689|1214313|3905|46628|44|14|13|3|173|147|73|52.47|123.30|96.17|1980.49|7020.41|3830.31|9000.90|351.02|0.00|3690.15|7020.41|7371.43|10710.56|11061.58|3190.10| +2451824|24644|2451862|5291|72367|462290|1813|11336|82689|1214313|3905|46628|59|7|15|1|60|147|25|75.49|98.89|8.90|2249.75|222.50|1887.25|2472.25|12.77|40.05|346.00|182.45|195.22|528.45|541.22|-1704.80| +2451824|24644|2451853|5635|72367|462290|1813|11336|82689|1214313|3905|46628|43|13|2|2|292|147|19|75.50|221.97|128.74|1771.37|2446.06|1434.50|4217.43|220.14|0.00|1813.36|2446.06|2666.20|4259.42|4479.56|1011.56| +2451824|24644|2451848|3431|72367|462290|1813|11336|82689|1214313|3905|46628|23|29|11|4|250|147|89|24.60|58.05|6.96|4547.01|619.44|2189.40|5166.45|43.36|0.00|1704.35|619.44|662.80|2323.79|2367.15|-1569.96| +2452278|80559|2452283|16039|72570|1224887|5651|25215|25264|1016460|2307|40271|54|27|14|1|208|148|26|19.02|43.17|13.38|774.54|347.88|494.52|1122.42|31.30|0.00|100.88|347.88|379.18|448.76|480.06|-146.64| +2452278|80559|2452394|8241|72570|1224887|5651|25215|25264|1016460|2307|40271|9|1|4|2|153|148|52|66.94|101.07|39.41|3206.32|2049.32|3480.88|5255.64|102.46|0.00|472.68|2049.32|2151.78|2522.00|2624.46|-1431.56| +2452278|80559|2452298|9523|72570|1224887|5651|25215|25264|1016460|2307|40271|9|12|7|5|106|148|81|52.70|125.42|104.09|1727.73|8431.29|4268.70|10159.02|505.87|0.00|2031.48|8431.29|8937.16|10462.77|10968.64|4162.59| +2452278|80559|2452281|9307|72570|1224887|5651|25215|25264|1016460|2307|40271|51|21|16|1|56|148|6|73.22|199.15|119.49|477.96|716.94|439.32|1194.90|50.18|0.00|226.98|716.94|767.12|943.92|994.10|277.62| +2452278|80559|2452313|7068|72570|1224887|5651|25215|25264|1016460|2307|40271|18|9|8|4|60|148|42|77.60|176.92|102.61|3121.02|4309.62|3259.20|7430.64|0.00|0.00|2080.26|4309.62|4309.62|6389.88|6389.88|1050.42| +2452278|80559|2452330|13345|72570|1224887|5651|25215|25264|1016460|2307|40271|55|18|3|4|5|148|55|87.65|255.93|174.03|4504.50|9571.65|4820.75|14076.15|66.04|7370.17|5630.35|2201.48|2267.52|7831.83|7897.87|-2619.27| +2452278|80559|2452300|9567|72570|1224887|5651|25215|25264|1016460|2307|40271|18|7|16|1|56|148|76|87.68|207.80|116.36|6949.44|8843.36|6663.68|15792.80|795.90|0.00|7106.76|8843.36|9639.26|15950.12|16746.02|2179.68| +2452278|80559|2452299|15487|72570|1224887|5651|25215|25264|1016460|2307|40271|42|24|13|4|75|148|75|50.58|95.09|82.72|927.75|6204.00|3793.50|7131.75|186.12|0.00|1425.75|6204.00|6390.12|7629.75|7815.87|2410.50| +2452278|80559|2452378|13525|72570|1224887|5651|25215|25264|1016460|2307|40271|51|9|14|3|62|148|2|37.21|94.88|83.49|22.78|166.98|74.42|189.76|2.27|53.43|94.88|113.55|115.82|208.43|210.70|39.13| +2452278|80559|2452310|8016|72570|1224887|5651|25215|25264|1016460|2307|40271|15|25|18|3|201|148|28|53.87|142.75|44.25|2758.00|1239.00|1508.36|3997.00|99.12|0.00|1398.88|1239.00|1338.12|2637.88|2737.00|-269.36| +2452278|80559|2452397|4131|72570|1224887|5651|25215|25264|1016460|2307|40271|54|6|6|2|65|148|75|69.71|71.10|62.56|640.50|4692.00|5228.25|5332.50|71.31|3800.52|1706.25|891.48|962.79|2597.73|2669.04|-4336.77| +2452278|80559|2452377|12385|72570|1224887|5651|25215|25264|1016460|2307|40271|48|7|1|1|48|148|71|64.64|85.32|29.00|3998.72|2059.00|4589.44|6057.72|144.13|0.00|1574.78|2059.00|2203.13|3633.78|3777.91|-2530.44| +2452278|80559|2452328|17436|72570|1224887|5651|25215|25264|1016460|2307|40271|15|7|10|3|59|148|98|73.78|110.67|52.01|5748.68|5096.98|7230.44|10845.66|407.75|0.00|650.72|5096.98|5504.73|5747.70|6155.45|-2133.46| +2452278|80559|2452299|5767|72570|1224887|5651|25215|25264|1016460|2307|40271|13|13|7|5|240|148|79|98.03|134.30|37.60|7639.30|2970.40|7744.37|10609.70|0.00|0.00|4561.46|2970.40|2970.40|7531.86|7531.86|-4773.97| +2452278|80559|2452290|2607|72570|1224887|5651|25215|25264|1016460|2307|40271|49|15|18|3|68|148|40|37.50|58.12|39.52|744.00|1580.80|1500.00|2324.80|11.85|1343.68|232.40|237.12|248.97|469.52|481.37|-1262.88| +2452278|80559|2452347|6765|72570|1224887|5651|25215|25264|1016460|2307|40271|15|12|1|1|14|148|53|81.67|113.52|28.38|4512.42|1504.14|4328.51|6016.56|0.00|0.00|1323.41|1504.14|1504.14|2827.55|2827.55|-2824.37| +2452026|73416|2452058|12235|52162|1509084|406|29375|92842|110073|1788|21110|15|29|19|3|177|149|66|67.22|190.23|57.06|8789.22|3765.96|4436.52|12555.18|188.29|0.00|2259.84|3765.96|3954.25|6025.80|6214.09|-670.56| +2452026|73416|2452103|4825|52162|1509084|406|29375|92842|110073|1788|21110|5|21|16|1|146|149|43|6.46|11.49|6.20|227.47|266.60|277.78|494.07|5.33|0.00|212.42|266.60|271.93|479.02|484.35|-11.18| +2452026|73416|2452132|9105|52162|1509084|406|29375|92842|110073|1788|21110|39|7|8|2|286|149|45|8.61|10.41|8.84|70.65|397.80|387.45|468.45|19.89|0.00|9.00|397.80|417.69|406.80|426.69|10.35| +2452026|73416|2452045|10727|52162|1509084|406|29375|92842|110073|1788|21110|21|13|3|2|228|149|33|96.61|208.67|98.07|3649.80|3236.31|3188.13|6886.11|64.72|0.00|2341.02|3236.31|3301.03|5577.33|5642.05|48.18| +2452026|73416|2452136|15803|52162|1509084|406|29375|92842|110073|1788|21110|57|3|18|1|124|149|26|31.72|80.56|63.64|439.92|1654.64|824.72|2094.56|33.09|0.00|230.36|1654.64|1687.73|1885.00|1918.09|829.92| +2452026|73416|2452095|17695|52162|1509084|406|29375|92842|110073|1788|21110|31|13|8|4|190|149|54|38.77|51.17|23.02|1520.10|1243.08|2093.58|2763.18|62.15|0.00|1049.76|1243.08|1305.23|2292.84|2354.99|-850.50| +2452026|73416|2452134|11739|52162|1509084|406|29375|92842|110073|1788|21110|1|23|13|4|255|149|42|98.65|155.86|34.28|5106.36|1439.76|4143.30|6546.12|55.43|647.89|3142.02|791.87|847.30|3933.89|3989.32|-3351.43| +2452026|73416|2452094|6223|52162|1509084|406|29375|92842|110073|1788|21110|37|5|17|1|262|149|88|7.73|20.79|1.66|1683.44|146.08|680.24|1829.52|1.46|0.00|36.08|146.08|147.54|182.16|183.62|-534.16| +2452026|73416|2452130|14365|52162|1509084|406|29375|92842|110073|1788|21110|33|11|5|4|93|149|93|95.37|143.05|111.57|2927.64|10376.01|8869.41|13303.65|76.78|6536.88|5321.46|3839.13|3915.91|9160.59|9237.37|-5030.28| +2452233|70530|2452295|9553|89648|385896|4991|48086|89648|385896|4991|48086|13|21|15|2|136|150|13|57.27|166.65|96.65|910.00|1256.45|744.51|2166.45|62.82|0.00|433.29|1256.45|1319.27|1689.74|1752.56|511.94| +2452233|70530|2452271|1937|89648|385896|4991|48086|89648|385896|4991|48086|39|23|7|4|221|150|69|52.09|105.22|21.04|5808.42|1451.76|3594.21|7260.18|14.51|0.00|2177.64|1451.76|1466.27|3629.40|3643.91|-2142.45| +2452233|70530|2452278|8217|89648|385896|4991|48086|89648|385896|4991|48086|3|29|8|1|264|150|91|44.81|94.99|47.49|4322.50|4321.59|4077.71|8644.09|172.86|0.00|1209.39|4321.59|4494.45|5530.98|5703.84|243.88| +2452233|70530|2452308|2547|89648|385896|4991|48086|89648|385896|4991|48086|25|25|3|5|290|150|43|50.36|88.13|53.75|1478.34|2311.25|2165.48|3789.59|184.90|0.00|264.88|2311.25|2496.15|2576.13|2761.03|145.77| +2452233|70530|2452300|12485|89648|385896|4991|48086|89648|385896|4991|48086|7|29|6|2|198|150|3|36.53|81.46|78.20|9.78|234.60|109.59|244.38|9.38|0.00|122.19|234.60|243.98|356.79|366.17|125.01| +2452233|70530|2452351|7499|89648|385896|4991|48086|89648|385896|4991|48086|43|27|16|3|87|150|1|30.72|90.00|48.60|41.40|48.60|30.72|90.00|3.88|0.00|20.70|48.60|52.48|69.30|73.18|17.88| +2452233|70530|2452273|17169|89648|385896|4991|48086|89648|385896|4991|48086|11|13|18|4|3|150|53|61.79|164.36|37.80|6707.68|2003.40|3274.87|8711.08|40.06|0.00|2700.35|2003.40|2043.46|4703.75|4743.81|-1271.47| +2452233|70530|2452305|7593|89648|385896|4991|48086|89648|385896|4991|48086|19|7|8|4|263|150|28|69.76|76.03|14.44|1724.52|404.32|1953.28|2128.84|12.33|157.68|425.60|246.64|258.97|672.24|684.57|-1706.64| +2452233|70530|2452351|307|89648|385896|4991|48086|89648|385896|4991|48086|49|17|13|2|141|150|37|98.89|142.40|68.35|2739.85|2528.95|3658.93|5268.80|0.00|252.89|1369.74|2276.06|2276.06|3645.80|3645.80|-1382.87| +2452233|70530|2452254|11821|89648|385896|4991|48086|89648|385896|4991|48086|27|15|2|1|260|150|46|66.21|78.12|36.71|1904.86|1688.66|3045.66|3593.52|38.50|726.12|1760.42|962.54|1001.04|2722.96|2761.46|-2083.12| +2452233|70530|2452246|3265|89648|385896|4991|48086|89648|385896|4991|48086|19|23|11|3|235|150|100|96.52|103.27|58.86|4441.00|5886.00|9652.00|10327.00|176.58|0.00|3304.00|5886.00|6062.58|9190.00|9366.58|-3766.00| +2452233|70530|2452285|12505|89648|385896|4991|48086|89648|385896|4991|48086|51|21|9|2|155|150|100|88.42|104.33|44.86|5947.00|4486.00|8842.00|10433.00|17.04|2781.32|3025.00|1704.68|1721.72|4729.68|4746.72|-7137.32| +2452233|70530|2452237|1865|89648|385896|4991|48086|89648|385896|4991|48086|43|23|12|4|199|150|95|26.98|32.37|22.33|953.80|2121.35|2563.10|3075.15|0.00|0.00|1075.40|2121.35|2121.35|3196.75|3196.75|-441.75| +2452375|40728|2452426|816|72525|810179|6680|5934|57988|1517660|6190|39891|42|12|11|1|291|151|79|21.79|47.28|25.05|1756.17|1978.95|1721.41|3735.12|118.73|0.00|1531.02|1978.95|2097.68|3509.97|3628.70|257.54| +2452375|40728|2452475|8107|72525|810179|6680|5934|57988|1517660|6190|39891|45|1|9|5|198|151|90|67.31|183.08|16.47|14994.90|1482.30|6057.90|16477.20|88.93|0.00|5436.90|1482.30|1571.23|6919.20|7008.13|-4575.60| +2452375|40728|2452417|4458|72525|810179|6680|5934|57988|1517660|6190|39891|36|1|1|1|91|151|24|30.92|57.82|5.78|1248.96|138.72|742.08|1387.68|0.00|0.00|652.08|138.72|138.72|790.80|790.80|-603.36| +2452375|40728|2452433|13675|72525|810179|6680|5934|57988|1517660|6190|39891|24|25|7|1|115|151|80|65.44|184.54|140.25|3543.20|11220.00|5235.20|14763.20|224.40|0.00|3838.40|11220.00|11444.40|15058.40|15282.80|5984.80| +2452375|40728|2452380|14877|72525|810179|6680|5934|57988|1517660|6190|39891|27|21|8|3|205|151|57|78.36|171.60|85.80|4890.60|4890.60|4466.52|9781.20|129.11|3276.70|4792.56|1613.90|1743.01|6406.46|6535.57|-2852.62| +2452375|40728|2452462|9379|72525|810179|6680|5934|57988|1517660|6190|39891|7|1|18|5|22|151|55|5.84|10.04|5.32|259.60|292.60|321.20|552.20|6.67|125.81|115.50|166.79|173.46|282.29|288.96|-154.41| +2452375|40728|2452414|14551|72525|810179|6680|5934|57988|1517660|6190|39891|36|30|15|2|29|151|94|84.50|92.10|74.60|1645.00|7012.40|7943.00|8657.40|210.37|0.00|1731.48|7012.40|7222.77|8743.88|8954.25|-930.60| +2452375|40728|2452470|6343|72525|810179|6680|5934|57988|1517660|6190|39891|49|18|3|2|201|151|36|71.63|73.77|24.34|1779.48|876.24|2578.68|2655.72|52.57|0.00|531.00|876.24|928.81|1407.24|1459.81|-1702.44| +2452375|40728|2452474|17185|72525|810179|6680|5934|57988|1517660|6190|39891|12|24|1|5|219|151|46|54.82|130.47|121.33|420.44|5581.18|2521.72|6001.62|446.49|0.00|0.00|5581.18|6027.67|5581.18|6027.67|3059.46| +2452375|40728|2452495|9439|72525|810179|6680|5934|57988|1517660|6190|39891|54|3|7|4|204|151|55|8.08|15.99|13.59|132.00|747.45|444.40|879.45|2.69|717.55|360.25|29.90|32.59|390.15|392.84|-414.50| +2452375|40728|2452425|5611|72525|810179|6680|5934|57988|1517660|6190|39891|19|18|18|2|119|151|47|45.18|108.88|97.99|511.83|4605.53|2123.46|5117.36|322.38|0.00|665.05|4605.53|4927.91|5270.58|5592.96|2482.07| +2452375|40728|2452429|7650|72525|810179|6680|5934|57988|1517660|6190|39891|48|18|14|4|264|151|99|31.19|69.24|24.92|4387.68|2467.08|3087.81|6854.76|148.02|0.00|2192.85|2467.08|2615.10|4659.93|4807.95|-620.73| +2452375|40728|2452495|4813|72525|810179|6680|5934|57988|1517660|6190|39891|30|27|6|5|27|151|71|40.69|79.34|43.63|2535.41|3097.73|2888.99|5633.14|30.97|0.00|1858.78|3097.73|3128.70|4956.51|4987.48|208.74| +2452208|62293|2452220|3535|38675|1029091|7060|29029|47359|1106649|6136|21305|39|13|7|2|194|152|11|86.87|88.60|79.74|97.46|877.14|955.57|974.60|35.08|0.00|380.05|877.14|912.22|1257.19|1292.27|-78.43| +2452208|62293|2452268|15229|38675|1029091|7060|29029|47359|1106649|6136|21305|21|25|12|4|86|152|36|68.13|198.25|19.82|6423.48|713.52|2452.68|7137.00|57.08|0.00|2569.32|713.52|770.60|3282.84|3339.92|-1739.16| +2452208|62293|2452268|11183|38675|1029091|7060|29029|47359|1106649|6136|21305|9|5|14|2|20|152|9|13.19|24.79|19.08|51.39|171.72|118.71|223.11|3.70|109.90|62.46|61.82|65.52|124.28|127.98|-56.89| +2452208|62293|2452220|12851|38675|1029091|7060|29029|47359|1106649|6136|21305|59|9|7|2|297|152|3|75.52|154.81|24.76|390.15|74.28|226.56|464.43|0.74|0.00|208.98|74.28|75.02|283.26|284.00|-152.28| +2452208|62293|2452328|12657|38675|1029091|7060|29029|47359|1106649|6136|21305|29|21|10|1|225|152|8|13.11|37.62|1.88|285.92|15.04|104.88|300.96|0.90|0.00|51.12|15.04|15.94|66.16|67.06|-89.84| +2452208|62293|2452277|14315|38675|1029091|7060|29029|47359|1106649|6136|21305|45|23|14|1|228|152|52|62.42|121.71|26.77|4936.88|1392.04|3245.84|6328.92|4.45|1169.31|2278.12|222.73|227.18|2500.85|2505.30|-3023.11| +2452208|62293|2452302|12603|38675|1029091|7060|29029|47359|1106649|6136|21305|17|17|16|1|203|152|63|89.64|105.77|44.42|3865.05|2798.46|5647.32|6663.51|97.94|839.53|2131.92|1958.93|2056.87|4090.85|4188.79|-3688.39| +2452208|62293|2452304|14355|38675|1029091|7060|29029|47359|1106649|6136|21305|47|9|16|4|45|152|37|80.84|152.78|116.11|1356.79|4296.07|2991.08|5652.86|343.68|0.00|2543.75|4296.07|4639.75|6839.82|7183.50|1304.99| +2452208|62293|2452253|11285|38675|1029091|7060|29029|47359|1106649|6136|21305|53|23|14|1|11|152|54|48.95|97.41|89.61|421.20|4838.94|2643.30|5260.14|0.00|0.00|104.76|4838.94|4838.94|4943.70|4943.70|2195.64| +2451412|72051|2451496|5240|68664|7349|4434|9166|80155|1521653|4421|1953|2|22|12|4|79|153|26|60.89|88.89|15.11|1918.28|392.86|1583.14|2311.14|0.00|0.00|69.16|392.86|392.86|462.02|462.02|-1190.28| +2451412|72051|2451478|7052|68664|7349|4434|9166|80155|1521653|4421|1953|10|10|6|1|96|153|7|72.05|173.64|90.29|583.45|632.03|504.35|1215.48|50.56|0.00|449.68|632.03|682.59|1081.71|1132.27|127.68| +2451412|72051|2451456|5173|68664|7349|4434|9166|80155|1521653|4421|1953|44|26|15|4|100|153|72|41.09|42.32|22.42|1432.80|1614.24|2958.48|3047.04|112.99|0.00|578.88|1614.24|1727.23|2193.12|2306.11|-1344.24| +2451412|72051|2451448|12070|68664|7349|4434|9166|80155|1521653|4421|1953|14|20|17|5|73|153|44|76.98|88.52|40.71|2103.64|1791.24|3387.12|3894.88|0.00|0.00|778.80|1791.24|1791.24|2570.04|2570.04|-1595.88| +2451412|72051|2451414|3019|68664|7349|4434|9166|80155|1521653|4421|1953|22|10|7|3|99|153|16|79.99|99.98|76.98|368.00|1231.68|1279.84|1599.68|36.95|0.00|735.84|1231.68|1268.63|1967.52|2004.47|-48.16| +2451412|72051|2451438|6460|68664|7349|4434|9166|80155|1521653|4421|1953|7|26|14|1|231|153|97|68.04|142.88|11.43|12750.65|1108.71|6599.88|13859.36|55.43|0.00|5404.84|1108.71|1164.14|6513.55|6568.98|-5491.17| +2451412|72051|2451465|14239|68664|7349|4434|9166|80155|1521653|4421|1953|56|25|7|1|115|153|24|62.85|74.16|51.91|534.00|1245.84|1508.40|1779.84|0.00|0.00|160.08|1245.84|1245.84|1405.92|1405.92|-262.56| +2451412|72051|2451460|5491|68664|7349|4434|9166|80155|1521653|4421|1953|13|14|12|3|64|153|20|42.90|101.67|100.65|20.40|2013.00|858.00|2033.40|0.00|865.59|162.60|1147.41|1147.41|1310.01|1310.01|289.41| +2451412|72051|2451530|12964|68664|7349|4434|9166|80155|1521653|4421|1953|26|8|16|2|38|153|84|20.67|56.22|5.05|4298.28|424.20|1736.28|4722.48|25.45|0.00|849.24|424.20|449.65|1273.44|1298.89|-1312.08| +2452610|34471|2452712|16497|50874|30210|746|29682|50874|30210|746|29682|48|18|11|1|128|154|81|53.20|84.58|34.67|4042.71|2808.27|4309.20|6850.98|140.41|0.00|1575.45|2808.27|2948.68|4383.72|4524.13|-1500.93| +2452610|34471|2452686|7302|50874|30210|746|29682|50874|30210|746|29682|12|13|5|3|211|154|61|98.25|183.72|181.88|112.24|11094.68|5993.25|11206.92|110.94|0.00|4258.41|11094.68|11205.62|15353.09|15464.03|5101.43| +2452610|34471|2452651|7|50874|30210|746|29682|50874|30210|746|29682|9|12|14|5|256|154|39|88.90|93.34|8.40|3312.66|327.60|3467.10|3640.26|22.93|0.00|655.20|327.60|350.53|982.80|1005.73|-3139.50| +2452610|34471|2452653|2581|50874|30210|746|29682|50874|30210|746|29682|12|12|16|1|126|154|62|83.11|162.89|48.86|7069.86|3029.32|5152.82|10099.18|30.29|0.00|1110.42|3029.32|3059.61|4139.74|4170.03|-2123.50| +2452610|34471|2452671|12897|50874|30210|746|29682|50874|30210|746|29682|37|12|13|2|64|154|26|18.81|49.65|5.95|1136.20|154.70|489.06|1290.90|1.29|89.72|141.96|64.98|66.27|206.94|208.23|-424.08| +2452610|34471|2452679|15558|50874|30210|746|29682|50874|30210|746|29682|6|25|10|5|110|154|56|46.81|74.89|13.48|3438.96|754.88|2621.36|4193.84|22.64|0.00|2096.64|754.88|777.52|2851.52|2874.16|-1866.48| +2452610|34471|2452722|17946|50874|30210|746|29682|50874|30210|746|29682|45|6|13|5|70|154|20|80.61|90.28|49.65|812.60|993.00|1612.20|1805.60|39.72|0.00|415.20|993.00|1032.72|1408.20|1447.92|-619.20| +2452610|34471|2452712|17922|50874|30210|746|29682|50874|30210|746|29682|12|25|20|2|214|154|87|5.18|12.12|6.18|516.78|537.66|450.66|1054.44|43.01|0.00|400.20|537.66|580.67|937.86|980.87|87.00| +2451796|65903|2451824|8735|60125|95037|1149|35661|83535|140531|2844|3356|23|17|13|5|67|155|70|62.89|116.34|22.10|6596.80|1547.00|4402.30|8143.80|46.41|0.00|814.10|1547.00|1593.41|2361.10|2407.51|-2855.30| +2451796|65903|2451806|12599|60125|95037|1149|35661|83535|140531|2844|3356|23|20|7|3|52|155|54|70.64|113.02|56.51|3051.54|3051.54|3814.56|6103.08|61.03|0.00|2257.74|3051.54|3112.57|5309.28|5370.31|-763.02| +2451796|65903|2451841|5756|60125|95037|1149|35661|83535|140531|2844|3356|59|26|11|5|282|155|83|23.34|32.20|30.91|107.07|2565.53|1937.22|2672.60|55.41|1641.93|1015.09|923.60|979.01|1938.69|1994.10|-1013.62| +2451796|65903|2451843|2870|60125|95037|1149|35661|83535|140531|2844|3356|35|7|20|3|119|155|61|76.26|189.88|94.94|5791.34|5791.34|4651.86|11582.68|57.91|0.00|3126.86|5791.34|5849.25|8918.20|8976.11|1139.48| +2451796|65903|2451872|6965|60125|95037|1149|35661|83535|140531|2844|3356|53|20|5|1|30|155|41|99.28|163.81|153.98|403.03|6313.18|4070.48|6716.21|63.13|0.00|2887.63|6313.18|6376.31|9200.81|9263.94|2242.70| +2451796|65903|2451797|7031|60125|95037|1149|35661|83535|140531|2844|3356|19|1|12|1|117|155|46|78.02|193.48|106.41|4005.22|4894.86|3588.92|8900.08|160.55|2887.96|2402.58|2006.90|2167.45|4409.48|4570.03|-1582.02| +2451796|65903|2451881|16877|60125|95037|1149|35661|83535|140531|2844|3356|47|8|16|5|91|155|54|57.15|80.01|28.80|2765.34|1555.20|3086.10|4320.54|62.20|0.00|1598.40|1555.20|1617.40|3153.60|3215.80|-1530.90| +2451796|65903|2451867|17407|60125|95037|1149|35661|83535|140531|2844|3356|59|1|15|1|147|155|73|78.43|207.83|89.36|8648.31|6523.28|5725.39|15171.59|130.46|0.00|2427.25|6523.28|6653.74|8950.53|9080.99|797.89| +2451796|65903|2451879|12955|60125|95037|1149|35661|83535|140531|2844|3356|23|19|18|4|87|155|86|41.78|113.64|7.95|9089.34|683.70|3593.08|9773.04|0.00|560.63|585.66|123.07|123.07|708.73|708.73|-3470.01| +2451796|65903|2451862|8335|60125|95037|1149|35661|83535|140531|2844|3356|2|23|12|2|102|155|42|15.59|28.84|26.53|97.02|1114.26|654.78|1211.28|22.28|0.00|11.76|1114.26|1136.54|1126.02|1148.30|459.48| +2451796|65903|2451816|902|60125|95037|1149|35661|83535|140531|2844|3356|32|25|19|5|91|155|21|96.90|200.58|26.07|3664.71|547.47|2034.90|4212.18|49.27|0.00|1600.62|547.47|596.74|2148.09|2197.36|-1487.43| +2451796|65903|2451859|173|60125|95037|1149|35661|83535|140531|2844|3356|59|26|5|4|243|155|59|19.14|44.78|8.95|2113.97|528.05|1129.26|2642.02|21.12|0.00|1082.65|528.05|549.17|1610.70|1631.82|-601.21| +2451796|65903|2451841|8009|60125|95037|1149|35661|83535|140531|2844|3356|49|26|13|2|191|155|86|83.85|123.25|113.39|847.96|9751.54|7211.10|10599.50|682.60|0.00|2331.46|9751.54|10434.14|12083.00|12765.60|2540.44| +2451796|65903|2451842|7238|60125|95037|1149|35661|83535|140531|2844|3356|53|8|10|3|96|155|99|4.86|7.24|0.50|667.26|49.50|481.14|716.76|0.99|0.00|113.85|49.50|50.49|163.35|164.34|-431.64| +2451796|65903|2451913|1610|60125|95037|1149|35661|83535|140531|2844|3356|55|11|17|3|226|155|64|63.71|186.03|33.48|9763.20|2142.72|4077.44|11905.92|85.70|0.00|1547.52|2142.72|2228.42|3690.24|3775.94|-1934.72| +2451796|65903|2451859|13415|60125|95037|1149|35661|83535|140531|2844|3356|44|25|3|3|223|155|51|81.46|188.17|3.76|9404.91|191.76|4154.46|9596.67|0.00|0.00|575.79|191.76|191.76|767.55|767.55|-3962.70| +2451175|59206|2451210|15955|72140|959897|7|564|38687|399450|1341|32698|1|14|18|5|112|156|100|53.50|110.74|35.43|7531.00|3543.00|5350.00|11074.00|283.44|0.00|2436.00|3543.00|3826.44|5979.00|6262.44|-1807.00| +2451175|59206|2451279|11270|72140|959897|7|564|38687|399450|1341|32698|56|4|14|3|89|156|22|13.66|20.76|1.45|424.82|31.90|300.52|456.72|0.00|0.00|73.04|31.90|31.90|104.94|104.94|-268.62| +2451175|59206|2451266|9817|72140|959897|7|564|38687|399450|1341|32698|7|26|4|4|284|156|40|49.11|52.05|15.09|1478.40|603.60|1964.40|2082.00|0.00|0.00|1020.00|603.60|603.60|1623.60|1623.60|-1360.80| +2451175|59206|2451193|718|72140|959897|7|564|38687|399450|1341|32698|49|2|12|2|212|156|20|62.90|140.89|42.26|1972.60|845.20|1258.00|2817.80|0.00|845.20|253.60|0.00|0.00|253.60|253.60|-1258.00| +2451175|59206|2451187|15824|72140|959897|7|564|38687|399450|1341|32698|40|14|12|1|253|156|25|91.61|131.00|37.99|2325.25|949.75|2290.25|3275.00|28.49|0.00|1572.00|949.75|978.24|2521.75|2550.24|-1340.50| +2451175|59206|2451176|15080|72140|959897|7|564|38687|399450|1341|32698|7|26|7|2|217|156|20|10.53|17.26|6.38|217.60|127.60|210.60|345.20|10.20|0.00|103.40|127.60|137.80|231.00|241.20|-83.00| +2451175|59206|2451257|7676|72140|959897|7|564|38687|399450|1341|32698|4|20|19|2|192|156|53|80.61|200.71|28.09|9148.86|1488.77|4272.33|10637.63|0.00|0.00|2553.01|1488.77|1488.77|4041.78|4041.78|-2783.56| +2451175|59206|2451290|1093|72140|959897|7|564|38687|399450|1341|32698|1|26|14|4|104|156|40|47.51|128.27|41.04|3489.20|1641.60|1900.40|5130.80|147.74|0.00|0.00|1641.60|1789.34|1641.60|1789.34|-258.80| +2451175|59206|2451240|15853|72140|959897|7|564|38687|399450|1341|32698|38|19|3|3|176|156|4|12.35|36.55|27.04|38.04|108.16|49.40|146.20|1.08|0.00|21.92|108.16|109.24|130.08|131.16|58.76| +2451175|59206|2451268|7442|72140|959897|7|564|38687|399450|1341|32698|26|1|5|2|149|156|77|96.80|118.09|0.00|9092.93|0.00|7453.60|9092.93|0.00|0.00|272.58|0.00|0.00|272.58|272.58|-7453.60| +2451175|59206|2451248|11563|72140|959897|7|564|38687|399450|1341|32698|56|13|12|2|112|156|64|12.92|38.63|24.33|915.20|1557.12|826.88|2472.32|0.00|0.00|865.28|1557.12|1557.12|2422.40|2422.40|730.24| +2452629|20222|2452703|16539|16928|335672|1616|46360|64837|833823|592|18936|15|7|3|2|121|157|19|20.60|21.83|1.74|381.71|33.06|391.40|414.77|2.82|1.65|16.53|31.41|34.23|47.94|50.76|-359.99| +2452629|20222|2452664|17223|16928|335672|1616|46360|64837|833823|592|18936|42|9|6|2|38|157|34|3.31|5.95|2.79|107.44|94.86|112.54|202.30|2.84|0.00|68.68|94.86|97.70|163.54|166.38|-17.68| +2452629|20222|2452657|7705|16928|335672|1616|46360|64837|833823|592|18936|48|19|19|5|21|157|81|20.93|25.74|21.87|313.47|1771.47|1695.33|2084.94|88.57|0.00|396.09|1771.47|1860.04|2167.56|2256.13|76.14| +2452629|20222|2452687|9433|16928|335672|1616|46360|64837|833823|592|18936|31|19|17|1|248|157|44|39.02|70.23|35.11|1545.28|1544.84|1716.88|3090.12|92.69|0.00|1544.84|1544.84|1637.53|3089.68|3182.37|-172.04| +2452629|20222|2452701|16872|16928|335672|1616|46360|64837|833823|592|18936|45|19|17|4|31|157|56|46.83|55.72|16.15|2215.92|904.40|2622.48|3120.32|36.17|0.00|655.20|904.40|940.57|1559.60|1595.77|-1718.08| +2452629|20222|2452749|16431|16928|335672|1616|46360|64837|833823|592|18936|37|7|16|3|273|157|78|58.55|165.11|3.30|12621.18|257.40|4566.90|12878.58|4.94|175.03|772.20|82.37|87.31|854.57|859.51|-4484.53| +2452629|20222|2452743|14509|16928|335672|1616|46360|64837|833823|592|18936|12|7|15|3|134|157|31|84.21|119.57|44.24|2335.23|1371.44|2610.51|3706.67|109.71|0.00|148.18|1371.44|1481.15|1519.62|1629.33|-1239.07| +2452629|20222|2452655|8103|16928|335672|1616|46360|64837|833823|592|18936|36|19|19|3|150|157|23|36.69|75.94|20.50|1275.12|471.50|843.87|1746.62|23.57|0.00|87.17|471.50|495.07|558.67|582.24|-372.37| +2452629|20222|2452728|16869|16928|335672|1616|46360|64837|833823|592|18936|18|18|19|4|9|157|7|54.69|92.42|10.16|575.82|71.12|382.83|646.94|0.71|0.00|45.22|71.12|71.83|116.34|117.05|-311.71| +2452629|20222|2452688|1161|16928|335672|1616|46360|64837|833823|592|18936|12|7|5|1|97|157|98|12.17|18.37|4.77|1332.80|467.46|1192.66|1800.26|9.34|0.00|575.26|467.46|476.80|1042.72|1052.06|-725.20| +2452629|20222|2452647|6264|16928|335672|1616|46360|64837|833823|592|18936|55|27|10|1|92|157|91|40.61|82.43|14.01|6226.22|1274.91|3695.51|7501.13|21.03|854.18|749.84|420.73|441.76|1170.57|1191.60|-3274.78| +2452629|20222|2452735|17499|16928|335672|1616|46360|64837|833823|592|18936|33|12|2|1|280|157|42|53.16|136.08|91.17|1886.22|3829.14|2232.72|5715.36|229.74|0.00|2114.28|3829.14|4058.88|5943.42|6173.16|1596.42| +2452629|20222|2452663|5041|16928|335672|1616|46360|64837|833823|592|18936|60|25|16|2|195|157|64|26.19|33.26|32.59|42.88|2085.76|1676.16|2128.64|187.71|0.00|170.24|2085.76|2273.47|2256.00|2443.71|409.60| +2451522|64963|2451562|10736|60623|1003215|3407|39199|76905|174988|1422|27614|44|19|17|4|54|158|38|47.63|71.92|19.41|1995.38|737.58|1809.94|2732.96|22.12|0.00|163.78|737.58|759.70|901.36|923.48|-1072.36| +2451522|64963|2451554|9424|60623|1003215|3407|39199|76905|174988|1422|27614|49|7|13|2|31|158|35|7.76|10.47|10.26|7.35|359.10|271.60|366.45|21.54|0.00|76.65|359.10|380.64|435.75|457.29|87.50| +2451522|64963|2451525|5992|60623|1003215|3407|39199|76905|174988|1422|27614|50|14|20|2|254|158|33|88.82|256.68|89.83|5506.05|2964.39|2931.06|8470.44|148.21|0.00|2879.91|2964.39|3112.60|5844.30|5992.51|33.33| +2451522|64963|2451636|2384|60623|1003215|3407|39199|76905|174988|1422|27614|44|19|17|2|264|158|51|87.46|118.94|49.95|3518.49|2547.45|4460.46|6065.94|203.79|0.00|667.08|2547.45|2751.24|3214.53|3418.32|-1913.01| +2451522|64963|2451594|7891|60623|1003215|3407|39199|76905|174988|1422|27614|32|2|14|4|61|158|86|46.85|60.43|9.66|4366.22|830.76|4029.10|5196.98|41.53|0.00|1506.72|830.76|872.29|2337.48|2379.01|-3198.34| +2451522|64963|2451579|10786|60623|1003215|3407|39199|76905|174988|1422|27614|50|28|1|2|146|158|97|21.14|55.59|4.44|4961.55|430.68|2050.58|5392.23|6.20|120.59|1616.99|310.09|316.29|1927.08|1933.28|-1740.49| +2451522|64963|2451581|17659|60623|1003215|3407|39199|76905|174988|1422|27614|19|22|11|3|55|158|45|46.79|109.02|2.18|4807.80|98.10|2105.55|4905.90|3.92|0.00|245.25|98.10|102.02|343.35|347.27|-2007.45| +2451522|64963|2451529|9688|60623|1003215|3407|39199|76905|174988|1422|27614|28|26|6|5|57|158|51|71.80|145.03|1.45|7322.58|73.95|3661.80|7396.53|2.21|0.00|2736.66|73.95|76.16|2810.61|2812.82|-3587.85| +2451522|64963|2451527|13120|60623|1003215|3407|39199|76905|174988|1422|27614|50|26|9|2|285|158|65|33.49|98.12|8.83|5803.85|573.95|2176.85|6377.80|22.95|0.00|2614.30|573.95|596.90|3188.25|3211.20|-1602.90| +2451522|64963|2451567|8050|60623|1003215|3407|39199|76905|174988|1422|27614|40|20|4|4|4|158|53|39.09|44.17|9.27|1849.70|491.31|2071.77|2341.01|4.12|78.60|1029.79|412.71|416.83|1442.50|1446.62|-1659.06| +2451522|64963|2451637|991|60623|1003215|3407|39199|76905|174988|1422|27614|26|26|11|3|178|158|86|30.65|85.82|21.45|5535.82|1844.70|2635.90|7380.52|129.12|0.00|1623.68|1844.70|1973.82|3468.38|3597.50|-791.20| +2452559|49265|2452617|6342|28340|316285|4677|22222|52173|310686|3751|36496|9|15|1|4|137|159|40|78.13|217.98|67.57|6016.40|2702.80|3125.20|8719.20|162.16|0.00|3487.60|2702.80|2864.96|6190.40|6352.56|-422.40| +2452559|49265|2452583|15741|28340|316285|4677|22222|52173|310686|3751|36496|21|30|19|3|244|159|74|25.05|71.64|62.32|689.68|4611.68|1853.70|5301.36|0.00|0.00|211.64|4611.68|4611.68|4823.32|4823.32|2757.98| +2452559|49265|2452642|11773|28340|316285|4677|22222|52173|310686|3751|36496|7|12|15|2|169|159|24|47.50|139.17|48.70|2171.28|1168.80|1140.00|3340.08|81.81|0.00|1669.92|1168.80|1250.61|2838.72|2920.53|28.80| +2452559|49265|2452608|5167|28340|316285|4677|22222|52173|310686|3751|36496|24|18|6|3|263|159|28|80.05|176.11|176.11|0.00|4931.08|2241.40|4931.08|98.62|0.00|394.24|4931.08|5029.70|5325.32|5423.94|2689.68| +2452559|49265|2452608|11259|28340|316285|4677|22222|52173|310686|3751|36496|51|21|16|1|116|159|80|1.46|2.51|1.83|54.40|146.40|116.80|200.80|0.57|127.36|9.60|19.04|19.61|28.64|29.21|-97.76| +2452559|49265|2452620|9553|28340|316285|4677|22222|52173|310686|3751|36496|19|1|12|3|274|159|86|69.18|145.96|32.11|9791.10|2761.46|5949.48|12552.56|248.53|0.00|5648.48|2761.46|3009.99|8409.94|8658.47|-3188.02| +2452559|49265|2452602|1938|28340|316285|4677|22222|52173|310686|3751|36496|49|1|4|2|3|159|8|58.91|141.38|4.24|1097.12|33.92|471.28|1131.04|0.00|8.48|282.72|25.44|25.44|308.16|308.16|-445.84| +2452559|49265|2452561|8217|28340|316285|4677|22222|52173|310686|3751|36496|39|9|13|1|66|159|28|75.24|122.64|95.65|755.72|2678.20|2106.72|3433.92|107.12|0.00|1476.44|2678.20|2785.32|4154.64|4261.76|571.48| +2452559|49265|2452675|2547|28340|316285|4677|22222|52173|310686|3751|36496|48|7|7|2|260|159|97|57.82|139.92|36.37|10044.35|3527.89|5608.54|13572.24|0.00|0.00|4614.29|3527.89|3527.89|8142.18|8142.18|-2080.65| +2452559|49265|2452626|12486|28340|316285|4677|22222|52173|310686|3751|36496|48|21|1|1|71|159|53|51.91|138.59|2.77|7198.46|146.81|2751.23|7345.27|2.93|0.00|3672.37|146.81|149.74|3819.18|3822.11|-2604.42| +2452559|49265|2452654|7500|28340|316285|4677|22222|52173|310686|3751|36496|51|9|4|3|219|159|52|62.80|142.55|89.80|2743.00|4669.60|3265.60|7412.60|271.30|793.83|518.44|3875.77|4147.07|4394.21|4665.51|610.17| +2452559|49265|2452601|17169|28340|316285|4677|22222|52173|310686|3751|36496|7|18|7|2|250|159|45|15.75|19.53|18.94|26.55|852.30|708.75|878.85|51.13|0.00|228.15|852.30|903.43|1080.45|1131.58|143.55| +2452559|49265|2452633|7593|28340|316285|4677|22222|52173|310686|3751|36496|57|1|16|3|53|159|62|79.11|109.17|6.55|6362.44|406.10|4904.82|6768.54|4.06|0.00|676.42|406.10|410.16|1082.52|1086.58|-4498.72| +2452559|49265|2452647|307|28340|316285|4677|22222|52173|310686|3751|36496|31|30|4|5|19|159|71|18.86|41.30|15.28|1847.42|1084.88|1339.06|2932.30|21.69|0.00|673.79|1084.88|1106.57|1758.67|1780.36|-254.18| +2451496|74442|2451579|10408|39288|1913042|3949|40903|39288|1913042|3949|40903|32|10|5|4|63|160|87|62.62|162.81|89.54|6374.49|7789.98|5447.94|14164.47|623.19|0.00|5099.07|7789.98|8413.17|12889.05|13512.24|2342.04| +2451496|74442|2451536|14569|39288|1913042|3949|40903|39288|1913042|3949|40903|10|19|14|3|255|160|9|96.64|225.17|139.60|770.13|1256.40|869.76|2026.53|42.08|414.61|101.25|841.79|883.87|943.04|985.12|-27.97| +2451496|74442|2451521|1124|39288|1913042|3949|40903|39288|1913042|3949|40903|40|1|11|1|271|160|48|69.30|198.89|95.46|4964.64|4582.08|3326.40|9546.72|229.10|0.00|3627.36|4582.08|4811.18|8209.44|8438.54|1255.68| +2451496|74442|2451577|10562|39288|1913042|3949|40903|39288|1913042|3949|40903|49|16|3|2|268|160|77|35.63|67.69|29.10|2971.43|2240.70|2743.51|5212.13|156.84|0.00|2397.01|2240.70|2397.54|4637.71|4794.55|-502.81| +2451496|74442|2451521|15745|39288|1913042|3949|40903|39288|1913042|3949|40903|34|28|2|4|216|160|59|31.01|38.76|2.32|2149.96|136.88|1829.59|2286.84|4.10|0.00|457.25|136.88|140.98|594.13|598.23|-1692.71| +2451496|74442|2451503|15139|39288|1913042|3949|40903|39288|1913042|3949|40903|14|28|19|1|133|160|48|82.26|200.71|108.38|4431.84|5202.24|3948.48|9634.08|104.04|0.00|2601.12|5202.24|5306.28|7803.36|7907.40|1253.76| +2451496|74442|2451550|15625|39288|1913042|3949|40903|39288|1913042|3949|40903|56|10|16|1|283|160|83|78.04|113.15|53.18|4977.51|4413.94|6477.32|9391.45|308.97|0.00|4319.32|4413.94|4722.91|8733.26|9042.23|-2063.38| +2451496|74442|2451568|15530|39288|1913042|3949|40903|39288|1913042|3949|40903|8|26|13|2|71|160|65|28.20|72.75|32.73|2601.30|2127.45|1833.00|4728.75|42.54|0.00|378.30|2127.45|2169.99|2505.75|2548.29|294.45| +2451496|74442|2451516|9802|39288|1913042|3949|40903|39288|1913042|3949|40903|52|7|14|4|4|160|69|19.76|30.03|6.30|1637.37|434.70|1363.44|2072.07|4.34|0.00|289.80|434.70|439.04|724.50|728.84|-928.74| +2451496|74442|2451554|4810|39288|1913042|3949|40903|39288|1913042|3949|40903|32|28|6|4|2|160|56|36.13|83.82|38.55|2535.12|2158.80|2023.28|4693.92|34.54|431.76|1407.84|1727.04|1761.58|3134.88|3169.42|-296.24| +2451496|74442|2451591|8593|39288|1913042|3949|40903|39288|1913042|3949|40903|50|14|20|2|201|160|20|44.35|81.60|15.50|1322.00|310.00|887.00|1632.00|18.60|0.00|65.20|310.00|328.60|375.20|393.80|-577.00| +2451496|74442|2451530|7382|39288|1913042|3949|40903|39288|1913042|3949|40903|16|16|16|1|23|160|99|75.98|106.37|49.99|5581.62|4949.01|7522.02|10530.63|296.94|0.00|3053.16|4949.01|5245.95|8002.17|8299.11|-2573.01| +2451496|74442|2451614|1532|39288|1913042|3949|40903|39288|1913042|3949|40903|58|10|15|1|160|160|5|77.72|90.93|13.63|386.50|68.15|388.60|454.65|0.00|0.00|9.05|68.15|68.15|77.20|77.20|-320.45| +2451962|19052|2452058|9943|96248|810654|6660|31913|69550|1565406|731|1584|21|9|6|5|31|161|49|14.78|27.63|6.07|1056.44|297.43|724.22|1353.87|26.76|0.00|53.90|297.43|324.19|351.33|378.09|-426.79| +2451962|19052|2452079|5403|96248|810654|6660|31913|69550|1565406|731|1584|53|29|13|1|129|161|9|98.99|103.93|28.06|682.83|252.54|890.91|935.37|12.95|108.59|355.41|143.95|156.90|499.36|512.31|-746.96| +2451962|19052|2451979|11709|96248|810654|6660|31913|69550|1565406|731|1584|3|1|3|2|44|161|83|97.22|111.80|69.31|3526.67|5752.73|8069.26|9279.40|345.16|0.00|3525.84|5752.73|6097.89|9278.57|9623.73|-2316.53| +2451962|19052|2452035|2031|96248|810654|6660|31913|69550|1565406|731|1584|57|3|15|1|64|161|89|67.69|201.71|108.92|8258.31|9693.88|6024.41|17952.19|581.63|0.00|5923.84|9693.88|10275.51|15617.72|16199.35|3669.47| +2451962|19052|2452011|3459|96248|810654|6660|31913|69550|1565406|731|1584|5|29|14|1|88|161|41|47.30|102.16|66.40|1466.16|2722.40|1939.30|4188.56|217.79|0.00|753.58|2722.40|2940.19|3475.98|3693.77|783.10| +2451962|19052|2452011|14247|96248|810654|6660|31913|69550|1565406|731|1584|35|15|1|1|204|161|67|34.00|100.30|80.24|1344.02|5376.08|2278.00|6720.10|376.32|0.00|402.67|5376.08|5752.40|5778.75|6155.07|3098.08| +2451962|19052|2451995|12069|96248|810654|6660|31913|69550|1565406|731|1584|7|9|13|4|15|161|28|51.13|114.53|25.19|2501.52|705.32|1431.64|3206.84|16.64|289.18|609.28|416.14|432.78|1025.42|1042.06|-1015.50| +2451962|19052|2452030|10615|96248|810654|6660|31913|69550|1565406|731|1584|9|13|19|3|140|161|36|92.80|116.00|22.04|3382.56|793.44|3340.80|4176.00|0.00|0.00|1837.44|793.44|793.44|2630.88|2630.88|-2547.36| +2451962|19052|2452039|12313|96248|810654|6660|31913|69550|1565406|731|1584|17|1|10|4|81|161|74|24.43|66.69|43.34|1727.90|3207.16|1807.82|4935.06|224.50|0.00|1924.00|3207.16|3431.66|5131.16|5355.66|1399.34| +2451962|19052|2452011|17675|96248|810654|6660|31913|69550|1565406|731|1584|9|27|3|5|244|161|36|35.16|80.16|73.74|231.12|2654.64|1265.76|2885.76|79.63|0.00|1154.16|2654.64|2734.27|3808.80|3888.43|1388.88| +2451962|19052|2452061|1173|96248|810654|6660|31913|69550|1565406|731|1584|23|7|9|1|63|161|65|11.84|32.20|9.33|1486.55|606.45|769.60|2093.00|18.19|0.00|334.75|606.45|624.64|941.20|959.39|-163.15| +2451962|19052|2451964|4775|96248|810654|6660|31913|69550|1565406|731|1584|9|29|15|5|105|161|36|51.29|98.47|41.35|2056.32|1488.60|1846.44|3544.92|59.54|0.00|921.60|1488.60|1548.14|2410.20|2469.74|-357.84| +2451962|19052|2452021|5503|96248|810654|6660|31913|69550|1565406|731|1584|49|13|6|5|184|161|26|28.25|41.52|28.23|345.54|733.98|734.50|1079.52|14.67|0.00|183.30|733.98|748.65|917.28|931.95|-0.52| +2451962|19052|2451980|7043|96248|810654|6660|31913|69550|1565406|731|1584|9|11|17|3|189|161|65|20.21|28.69|20.08|559.65|1305.20|1313.65|1864.85|0.00|0.00|745.55|1305.20|1305.20|2050.75|2050.75|-8.45| +2451962|19052|2451988|15833|96248|810654|6660|31913|69550|1565406|731|1584|51|9|14|1|235|161|77|68.67|153.13|22.96|10023.09|1767.92|5287.59|11791.01|141.43|0.00|2475.55|1767.92|1909.35|4243.47|4384.90|-3519.67| +2451806|38537|2451844|11264|82399|1584419|1992|4812|82399|1584419|1992|4812|47|8|13|1|239|162|80|93.06|222.41|106.75|9252.80|8540.00|7444.80|17792.80|422.73|85.40|3024.00|8454.60|8877.33|11478.60|11901.33|1009.80| +2451806|38537|2451877|4385|82399|1584419|1992|4812|82399|1584419|1992|4812|20|26|7|5|23|162|39|31.03|92.77|38.03|2134.86|1483.17|1210.17|3618.03|74.15|0.00|1230.06|1483.17|1557.32|2713.23|2787.38|273.00| +2451806|38537|2451830|16183|82399|1584419|1992|4812|82399|1584419|1992|4812|13|17|1|3|248|162|31|42.64|44.34|7.09|1154.75|219.79|1321.84|1374.54|5.53|81.32|137.33|138.47|144.00|275.80|281.33|-1183.37| +2451806|38537|2451906|9536|82399|1584419|1992|4812|82399|1584419|1992|4812|50|2|18|2|223|162|15|50.73|119.21|50.06|1037.25|750.90|760.95|1788.15|0.00|0.00|393.30|750.90|750.90|1144.20|1144.20|-10.05| +2451806|38537|2451884|8780|82399|1584419|1992|4812|82399|1584419|1992|4812|35|23|6|5|54|162|38|42.37|63.55|31.77|1207.64|1207.26|1610.06|2414.90|72.43|0.00|651.70|1207.26|1279.69|1858.96|1931.39|-402.80| +2451806|38537|2451911|14041|82399|1584419|1992|4812|82399|1584419|1992|4812|20|23|16|2|248|162|29|37.77|97.82|71.40|766.18|2070.60|1095.33|2836.78|125.89|496.94|765.89|1573.66|1699.55|2339.55|2465.44|478.33| +2451806|38537|2451858|8531|82399|1584419|1992|4812|82399|1584419|1992|4812|59|7|8|4|113|162|23|42.99|86.40|58.75|635.95|1351.25|988.77|1987.20|121.61|0.00|695.52|1351.25|1472.86|2046.77|2168.38|362.48| +2451806|38537|2451814|11669|82399|1584419|1992|4812|82399|1584419|1992|4812|37|11|13|2|124|162|6|73.06|78.90|75.74|18.96|454.44|438.36|473.40|31.81|0.00|99.36|454.44|486.25|553.80|585.61|16.08| +2451097|71478|2451102|16564|95885|1105012|6139|40866|99773|1811145|5400|527|44|26|8|2|213|163|81|72.46|81.87|67.95|1127.52|5503.95|5869.26|6631.47|55.03|0.00|1060.29|5503.95|5558.98|6564.24|6619.27|-365.31| +2451097|71478|2451150|9454|95885|1105012|6139|40866|99773|1811145|5400|527|1|2|13|1|102|163|83|81.59|235.79|153.26|6849.99|12720.58|6771.97|19570.57|10.17|11702.93|977.74|1017.65|1027.82|1995.39|2005.56|-5754.32| +2451097|71478|2451164|6313|95885|1105012|6139|40866|99773|1811145|5400|527|58|22|4|1|18|163|87|39.68|69.44|44.44|2175.00|3866.28|3452.16|6041.28|0.00|0.00|2536.92|3866.28|3866.28|6403.20|6403.20|414.12| +2451097|71478|2451192|7994|95885|1105012|6139|40866|99773|1811145|5400|527|13|25|12|3|204|163|70|46.21|109.05|42.52|4657.10|2976.40|3234.70|7633.50|208.34|0.00|2137.10|2976.40|3184.74|5113.50|5321.84|-258.30| +2451097|71478|2451152|6829|95885|1105012|6139|40866|99773|1811145|5400|527|46|25|19|3|204|163|52|7.47|10.08|9.07|52.52|471.64|388.44|524.16|28.29|0.00|204.36|471.64|499.93|676.00|704.29|83.20| +2451097|71478|2451198|16064|95885|1105012|6139|40866|99773|1811145|5400|527|8|10|7|3|159|163|43|4.81|7.84|3.92|168.56|168.56|206.83|337.12|8.42|0.00|0.00|168.56|176.98|168.56|176.98|-38.27| +2451097|71478|2451211|7880|95885|1105012|6139|40866|99773|1811145|5400|527|44|16|2|3|11|163|100|81.05|203.43|164.77|3866.00|16477.00|8105.00|20343.00|118.63|12522.52|3865.00|3954.48|4073.11|7819.48|7938.11|-4150.52| +2451097|71478|2451107|16046|95885|1105012|6139|40866|99773|1811145|5400|527|34|26|13|4|198|163|73|42.79|60.33|39.21|1541.76|2862.33|3123.67|4404.09|0.00|0.00|131.40|2862.33|2862.33|2993.73|2993.73|-261.34| +2451097|71478|2451164|9952|95885|1105012|6139|40866|99773|1811145|5400|527|7|25|5|2|79|163|67|97.87|133.10|75.86|3835.08|5082.62|6557.29|8917.70|457.43|0.00|89.11|5082.62|5540.05|5171.73|5629.16|-1474.67| +2451097|71478|2451176|560|95885|1105012|6139|40866|99773|1811145|5400|527|19|2|7|2|257|163|34|24.91|41.10|38.22|97.92|1299.48|846.94|1397.40|116.95|0.00|558.96|1299.48|1416.43|1858.44|1975.39|452.54| +2451097|71478|2451099|12799|95885|1105012|6139|40866|99773|1811145|5400|527|10|22|11|5|159|163|71|59.18|110.07|35.22|5314.35|2500.62|4201.78|7814.97|75.01|0.00|1718.91|2500.62|2575.63|4219.53|4294.54|-1701.16| +2451097|71478|2451185|5870|95885|1105012|6139|40866|99773|1811145|5400|527|37|20|16|1|213|163|62|14.96|32.16|5.46|1655.40|338.52|927.52|1993.92|16.92|0.00|338.52|338.52|355.44|677.04|693.96|-589.00| +2451097|71478|2451108|13594|95885|1105012|6139|40866|99773|1811145|5400|527|7|1|8|5|82|163|80|47.78|141.42|111.72|2376.00|8937.60|3822.40|11313.60|625.63|0.00|5316.80|8937.60|9563.23|14254.40|14880.03|5115.20| +2451097|71478|2451187|13898|95885|1105012|6139|40866|99773|1811145|5400|527|25|16|15|1|177|163|99|20.51|22.76|6.82|1578.06|675.18|2030.49|2253.24|2.56|546.89|788.04|128.29|130.85|916.33|918.89|-1902.20| +2451097|71478|2451205|10225|95885|1105012|6139|40866|99773|1811145|5400|527|8|10|14|5|46|163|68|34.11|57.30|44.12|896.24|3000.16|2319.48|3896.40|150.00|0.00|1597.32|3000.16|3150.16|4597.48|4747.48|680.68| +2452635|68960|2452658|4129|36298|1068565|832|32746|65983|93728|5547|33461|3|21|10|2|181|164|86|78.17|195.42|48.85|12605.02|4201.10|6722.62|16806.12|336.08|0.00|3192.32|4201.10|4537.18|7393.42|7729.50|-2521.52| +2452635|68960|2452668|7281|36298|1068565|832|32746|65983|93728|5547|33461|42|27|4|2|277|164|15|81.08|162.97|65.18|1466.85|977.70|1216.20|2444.55|2.73|703.94|806.70|273.76|276.49|1080.46|1083.19|-942.44| +2452635|68960|2452671|14628|36298|1068565|832|32746|65983|93728|5547|33461|31|21|16|1|26|164|86|90.38|234.08|11.70|19124.68|1006.20|7772.68|20130.88|40.24|0.00|2818.22|1006.20|1046.44|3824.42|3864.66|-6766.48| +2452635|68960|2452640|12861|36298|1068565|832|32746|65983|93728|5547|33461|12|25|17|4|11|164|5|57.70|152.32|56.35|479.85|281.75|288.50|761.60|14.08|0.00|83.75|281.75|295.83|365.50|379.58|-6.75| +2452635|68960|2452718|16398|36298|1068565|832|32746|65983|93728|5547|33461|15|12|1|4|104|164|8|16.59|28.20|25.09|24.88|200.72|132.72|225.60|13.32|34.12|103.76|166.60|179.92|270.36|283.68|33.88| +2452635|68960|2452684|14157|36298|1068565|832|32746|65983|93728|5547|33461|42|30|2|1|73|164|71|44.85|85.21|23.00|4416.91|1633.00|3184.35|6049.91|97.98|0.00|241.40|1633.00|1730.98|1874.40|1972.38|-1551.35| +2452635|68960|2452702|16417|36298|1068565|832|32746|65983|93728|5547|33461|19|19|17|4|181|164|1|28.81|65.39|35.31|30.08|35.31|28.81|65.39|3.17|0.00|28.11|35.31|38.48|63.42|66.59|6.50| +2452635|68960|2452666|1098|36298|1068565|832|32746|65983|93728|5547|33461|31|12|9|2|262|164|92|98.78|255.84|194.43|5649.72|17887.56|9087.76|23537.28|1073.25|0.00|11533.12|17887.56|18960.81|29420.68|30493.93|8799.80| +2452635|68960|2452646|2772|36298|1068565|832|32746|65983|93728|5547|33461|24|19|15|3|11|164|31|46.47|66.91|59.54|228.47|1845.74|1440.57|2074.21|55.37|0.00|20.46|1845.74|1901.11|1866.20|1921.57|405.17| +2452635|68960|2452644|72|36298|1068565|832|32746|65983|93728|5547|33461|12|21|16|1|266|164|11|67.23|69.24|22.15|517.99|243.65|739.53|761.64|9.21|112.07|243.65|131.58|140.79|375.23|384.44|-607.95| +2452635|68960|2452650|15603|36298|1068565|832|32746|65983|93728|5547|33461|54|30|20|3|293|164|37|42.50|57.37|24.66|1210.27|912.42|1572.50|2122.69|45.62|0.00|403.30|912.42|958.04|1315.72|1361.34|-660.08| +2452635|68960|2452727|16309|36298|1068565|832|32746|65983|93728|5547|33461|33|13|10|5|233|164|66|72.75|202.97|117.72|5626.50|7769.52|4801.50|13396.02|48.17|5360.96|4152.72|2408.56|2456.73|6561.28|6609.45|-2392.94| +2452635|68960|2452665|6249|36298|1068565|832|32746|65983|93728|5547|33461|43|27|3|5|34|164|31|71.60|189.74|108.15|2529.29|3352.65|2219.60|5881.94|201.15|0.00|1117.55|3352.65|3553.80|4470.20|4671.35|1133.05| +2452596|76372|2452632|5755|59032|1902956|2080|8757|65407|1231216|2482|19606|1|12|18|3|5|165|85|59.18|139.66|110.33|2493.05|9378.05|5030.30|11871.10|33.76|8534.02|5223.25|844.03|877.79|6067.28|6101.04|-4186.27| +2452596|76372|2452613|4506|59032|1902956|2080|8757|65407|1231216|2482|19606|12|7|12|3|21|165|42|63.81|178.02|69.42|4561.20|2915.64|2680.02|7476.84|116.62|0.00|1719.48|2915.64|3032.26|4635.12|4751.74|235.62| +2452596|76372|2452606|6063|59032|1902956|2080|8757|65407|1231216|2482|19606|15|30|5|5|202|165|83|26.85|39.46|35.90|295.48|2979.70|2228.55|3275.18|89.39|0.00|229.08|2979.70|3069.09|3208.78|3298.17|751.15| +2452596|76372|2452700|9721|59032|1902956|2080|8757|65407|1231216|2482|19606|57|6|7|3|232|165|27|89.25|261.50|44.45|5860.35|1200.15|2409.75|7060.50|84.01|0.00|847.26|1200.15|1284.16|2047.41|2131.42|-1209.60| +2452596|76372|2452682|10491|59032|1902956|2080|8757|65407|1231216|2482|19606|12|30|11|2|153|165|10|72.62|131.44|2.62|1288.20|26.20|726.20|1314.40|1.83|0.00|13.10|26.20|28.03|39.30|41.13|-700.00| +2452596|76372|2452689|1963|59032|1902956|2080|8757|65407|1231216|2482|19606|51|9|14|3|122|165|15|43.49|60.01|35.40|369.15|531.00|652.35|900.15|37.17|0.00|9.00|531.00|568.17|540.00|577.17|-121.35| +2452596|76372|2452662|11808|59032|1902956|2080|8757|65407|1231216|2482|19606|30|9|2|4|49|165|36|54.53|147.23|91.28|2014.20|3286.08|1963.08|5300.28|45.34|1018.68|1589.76|2267.40|2312.74|3857.16|3902.50|304.32| +2452596|76372|2452682|9925|59032|1902956|2080|8757|65407|1231216|2482|19606|48|18|1|1|98|165|18|93.19|111.82|101.75|181.26|1831.50|1677.42|2012.76|54.94|0.00|744.66|1831.50|1886.44|2576.16|2631.10|154.08| +2452596|76372|2452688|15717|59032|1902956|2080|8757|65407|1231216|2482|19606|31|15|13|3|210|165|41|76.91|155.35|124.28|1273.87|5095.48|3153.31|6369.35|6.11|4891.66|700.28|203.82|209.93|904.10|910.21|-2949.49| +2452596|76372|2452713|8131|59032|1902956|2080|8757|65407|1231216|2482|19606|25|1|19|2|175|165|23|64.41|151.36|49.94|2332.66|1148.62|1481.43|3481.28|6.20|1045.24|870.32|103.38|109.58|973.70|979.90|-1378.05| +2452596|76372|2452617|3570|59032|1902956|2080|8757|65407|1231216|2482|19606|42|24|13|4|225|165|60|31.11|78.39|19.59|3528.00|1175.40|1866.60|4703.40|23.50|0.00|2163.00|1175.40|1198.90|3338.40|3361.90|-691.20| +2452596|76372|2452685|3373|59032|1902956|2080|8757|65407|1231216|2482|19606|55|3|13|4|125|165|83|17.99|41.73|36.30|450.69|3012.90|1493.17|3463.59|90.38|0.00|103.75|3012.90|3103.28|3116.65|3207.03|1519.73| +2452596|76372|2452684|4737|59032|1902956|2080|8757|65407|1231216|2482|19606|60|6|9|2|95|165|5|25.70|62.19|10.57|258.10|52.85|128.50|310.95|4.75|0.00|62.15|52.85|57.60|115.00|119.75|-75.65| +2452596|76372|2452662|4263|59032|1902956|2080|8757|65407|1231216|2482|19606|60|1|19|5|71|165|41|80.95|152.99|148.40|188.19|6084.40|3318.95|6272.59|304.22|0.00|3010.63|6084.40|6388.62|9095.03|9399.25|2765.45| +2452596|76372|2452676|9618|59032|1902956|2080|8757|65407|1231216|2482|19606|3|12|13|2|71|165|20|40.97|55.30|38.71|331.80|774.20|819.40|1106.00|4.95|712.26|464.40|61.94|66.89|526.34|531.29|-757.46| +2452596|76372|2452609|12373|59032|1902956|2080|8757|65407|1231216|2482|19606|15|13|16|2|131|165|22|66.88|71.56|1.43|1542.86|31.46|1471.36|1574.32|1.57|0.00|393.58|31.46|33.03|425.04|426.61|-1439.90| +2452223|69732|2452254|9707|70307|470143|2332|32968|52448|905632|7182|27418|49|15|1|4|257|166|85|43.25|111.15|8.89|8692.10|755.65|3676.25|9447.75|6.65|672.52|566.10|83.13|89.78|649.23|655.88|-3593.12| +2452223|69732|2452232|8171|70307|470143|2332|32968|52448|905632|7182|27418|15|19|12|4|226|166|91|65.68|162.22|71.37|8267.35|6494.67|5976.88|14762.02|519.57|0.00|4871.23|6494.67|7014.24|11365.90|11885.47|517.79| +2452223|69732|2452231|279|70307|470143|2332|32968|52448|905632|7182|27418|53|7|11|3|288|166|66|45.12|60.91|15.83|2975.28|1044.78|2977.92|4020.06|83.58|0.00|321.42|1044.78|1128.36|1366.20|1449.78|-1933.14| +2452223|69732|2452314|727|70307|470143|2332|32968|52448|905632|7182|27418|29|23|9|1|183|166|91|92.65|178.81|112.65|6020.56|10251.15|8431.15|16271.71|615.06|0.00|3904.81|10251.15|10866.21|14155.96|14771.02|1820.00| +2452223|69732|2452233|1845|70307|470143|2332|32968|52448|905632|7182|27418|17|13|2|2|285|166|79|34.27|67.16|55.07|955.11|4350.53|2707.33|5305.64|87.01|0.00|2121.94|4350.53|4437.54|6472.47|6559.48|1643.20| +2452223|69732|2452235|11761|70307|470143|2332|32968|52448|905632|7182|27418|57|17|19|4|189|166|30|53.83|69.44|64.57|146.10|1937.10|1614.90|2083.20|19.37|0.00|333.30|1937.10|1956.47|2270.40|2289.77|322.20| +2452223|69732|2452334|4707|70307|470143|2332|32968|52448|905632|7182|27418|27|27|4|2|157|166|18|84.41|239.72|196.57|776.70|3538.26|1519.38|4314.96|247.67|0.00|1380.78|3538.26|3785.93|4919.04|5166.71|2018.88| +2452223|69732|2452299|3599|70307|470143|2332|32968|52448|905632|7182|27418|1|29|2|1|13|166|14|78.87|94.64|43.53|715.54|609.42|1104.18|1324.96|54.84|0.00|251.72|609.42|664.26|861.14|915.98|-494.76| +2451066|45529|2451107|3241|31257|909296|2535|33374|31377|1287773|2691|35883|8|10|7|3|39|167|68|35.57|43.39|21.26|1504.84|1445.68|2418.76|2950.52|130.11|0.00|294.44|1445.68|1575.79|1740.12|1870.23|-973.08| +2451066|45529|2451124|8605|31257|909296|2535|33374|31377|1287773|2691|35883|25|26|5|3|24|167|6|37.90|74.28|31.94|254.04|191.64|227.40|445.68|0.38|172.47|35.64|19.17|19.55|54.81|55.19|-208.23| +2451066|45529|2451172|3092|31257|909296|2535|33374|31377|1287773|2691|35883|14|13|19|3|260|167|99|70.19|142.48|39.89|10156.41|3949.11|6948.81|14105.52|236.94|0.00|5218.29|3949.11|4186.05|9167.40|9404.34|-2999.70| +2451066|45529|2451149|8834|31257|909296|2535|33374|31377|1287773|2691|35883|44|2|11|5|89|167|20|87.86|250.40|177.78|1452.40|3555.60|1757.20|5008.00|71.11|0.00|1802.80|3555.60|3626.71|5358.40|5429.51|1798.40| +2451066|45529|2451079|17228|31257|909296|2535|33374|31377|1287773|2691|35883|55|4|11|1|184|167|4|2.59|4.76|4.04|2.88|16.16|10.36|19.04|1.13|0.00|3.96|16.16|17.29|20.12|21.25|5.80| +2451066|45529|2451122|9988|31257|909296|2535|33374|31377|1287773|2691|35883|19|25|6|4|292|167|11|88.71|91.37|62.13|321.64|683.43|975.81|1005.07|3.55|594.58|90.42|88.85|92.40|179.27|182.82|-886.96| +2451066|45529|2451131|16633|31257|909296|2535|33374|31377|1287773|2691|35883|1|20|11|1|34|167|28|8.20|10.66|3.19|209.16|89.32|229.60|298.48|0.89|0.00|131.32|89.32|90.21|220.64|221.53|-140.28| +2451066|45529|2451119|16057|31257|909296|2535|33374|31377|1287773|2691|35883|28|7|10|4|195|167|18|67.22|179.47|21.53|2842.92|387.54|1209.96|3230.46|2.17|170.51|1421.28|217.03|219.20|1638.31|1640.48|-992.93| +2451066|45529|2451180|13754|31257|909296|2535|33374|31377|1287773|2691|35883|43|7|13|5|174|167|31|85.30|243.10|143.42|3090.08|4446.02|2644.30|7536.10|177.84|0.00|753.61|4446.02|4623.86|5199.63|5377.47|1801.72| +2452393|60887|2452493|13623|98729|295328|2680|37232|19656|1603256|4888|27040|9|15|1|2|130|168|91|67.72|79.90|57.52|2036.58|5234.32|6162.52|7270.90|106.25|3716.36|944.58|1517.96|1624.21|2462.54|2568.79|-4644.56| +2452393|60887|2452511|6972|98729|295328|2680|37232|19656|1603256|4888|27040|31|18|9|2|242|168|47|88.71|198.71|149.03|2334.96|7004.41|4169.37|9339.37|70.04|0.00|4295.80|7004.41|7074.45|11300.21|11370.25|2835.04| +2452393|60887|2452508|5191|98729|295328|2680|37232|19656|1603256|4888|27040|6|1|6|4|219|168|14|44.86|118.87|27.34|1281.42|382.76|628.04|1664.18|2.06|348.31|49.84|34.45|36.51|84.29|86.35|-593.59| +2452393|60887|2452459|11161|98729|295328|2680|37232|19656|1603256|4888|27040|24|3|12|5|175|168|13|55.30|128.84|82.45|603.07|1071.85|718.90|1674.92|10.71|0.00|385.19|1071.85|1082.56|1457.04|1467.75|352.95| +2452393|60887|2452396|8517|98729|295328|2680|37232|19656|1603256|4888|27040|3|7|19|1|183|168|100|51.39|90.96|40.02|5094.00|4002.00|5139.00|9096.00|40.02|0.00|4548.00|4002.00|4042.02|8550.00|8590.02|-1137.00| +2452393|60887|2452477|2670|98729|295328|2680|37232|19656|1603256|4888|27040|54|13|17|2|37|168|6|7.12|20.50|14.76|34.44|88.56|42.72|123.00|7.97|0.00|2.46|88.56|96.53|91.02|98.99|45.84| +2452393|60887|2452503|5853|98729|295328|2680|37232|19656|1603256|4888|27040|9|12|4|5|23|168|39|26.11|49.08|46.62|95.94|1818.18|1018.29|1914.12|109.09|0.00|344.37|1818.18|1927.27|2162.55|2271.64|799.89| +2452393|60887|2452497|10737|98729|295328|2680|37232|19656|1603256|4888|27040|45|15|16|1|106|168|22|5.33|12.09|3.86|181.06|84.92|117.26|265.98|3.39|0.00|13.20|84.92|88.31|98.12|101.51|-32.34| +2452393|60887|2452437|9426|98729|295328|2680|37232|19656|1603256|4888|27040|36|21|14|2|147|168|70|56.78|122.64|74.81|3348.10|5236.70|3974.60|8584.80|471.30|0.00|1716.40|5236.70|5708.00|6953.10|7424.40|1262.10| +2452393|60887|2452397|5994|98729|295328|2680|37232|19656|1603256|4888|27040|54|15|6|4|272|168|30|85.86|106.46|99.00|223.80|2970.00|2575.80|3193.80|178.20|0.00|1277.40|2970.00|3148.20|4247.40|4425.60|394.20| +2452393|60887|2452502|2385|98729|295328|2680|37232|19656|1603256|4888|27040|19|13|1|3|155|168|45|75.12|184.04|115.94|3064.50|5217.30|3380.40|8281.80|4.17|5008.60|828.00|208.70|212.87|1036.70|1040.87|-3171.70| +2452393|60887|2452497|7891|98729|295328|2680|37232|19656|1603256|4888|27040|9|21|4|5|126|168|64|37.47|95.54|3.82|5870.08|244.48|2398.08|6114.56|4.88|0.00|2751.36|244.48|249.36|2995.84|3000.72|-2153.60| +2450975|26287|2450988|4250|61908|1113854|5447|33393|34300|1637354|5325|34471|16|13|15|3|211|169|76|52.16|56.85|44.34|950.76|3369.84|3964.16|4320.60|202.19|0.00|1123.28|3369.84|3572.03|4493.12|4695.31|-594.32| diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index f5d5155354a5..156b19bc3747 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -159,6 +159,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vector_cast_constant.q,\ vector_char_4.q,\ vector_char_simple.q,\ + vector_count_distinct.q,\ vector_data_types.q,\ vector_decimal_aggregate.q,\ vector_distinct_2.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java index 6c9d8e1b0089..0ae01861323e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java @@ -18,98 +18,30 @@ package org.apache.hadoop.hive.ql.exec.vector; -import java.io.IOException; -import java.util.Random; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hive.ql.exec.PTFTopNHash; import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator; -import org.apache.hadoop.hive.ql.exec.TopNHash; -import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriter; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriterFactory; -import org.apache.hadoop.hive.ql.io.HiveKey; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc; -import org.apache.hadoop.hive.ql.plan.TableDesc; -import org.apache.hadoop.hive.serde2.SerDeException; -import org.apache.hadoop.hive.serde2.Serializer; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; -import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; -import org.apache.hadoop.hive.serde2.objectinspector.StandardUnionObjectInspector.StandardUnion; -import org.apache.hadoop.io.BytesWritable; -import org.apache.hadoop.io.Text; -// import org.apache.hadoop.util.StringUtils; +import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; public class VectorReduceSinkOperator extends ReduceSinkOperator { - private static final Log LOG = LogFactory.getLog( - VectorReduceSinkOperator.class.getName()); - private static final long serialVersionUID = 1L; - /** - * The evaluators for the key columns. Key columns decide the sort order on - * the reducer side. Key columns are passed to the reducer in the "key". - */ - private VectorExpression[] keyEval; - - /** - * The key value writers. These know how to write the necessary writable type - * based on key column metadata, from the primitive vector type. - */ - private transient VectorExpressionWriter[] keyWriters; - - /** - * The evaluators for the value columns. Value columns are passed to reducer - * in the "value". - */ - private VectorExpression[] valueEval; - - /** - * The output value writers. These know how to write the necessary writable type - * based on value column metadata, from the primitive vector type. - */ - private transient VectorExpressionWriter[] valueWriters; - - /** - * The evaluators for the partition columns (CLUSTER BY or DISTRIBUTE BY in - * Hive language). Partition columns decide the reducer that the current row - * goes to. Partition columns are not passed to reducer. - */ - private VectorExpression[] partitionEval; - - /** - * Evaluators for bucketing columns. This is used to compute bucket number. - */ - private VectorExpression[] bucketEval; - private int buckColIdxInKey; - - /** - * The partition value writers. These know how to write the necessary writable type - * based on partition column metadata, from the primitive vector type. - */ - private transient VectorExpressionWriter[] partitionWriters; - private transient VectorExpressionWriter[] bucketWriters = null; - - private static final boolean isDebugEnabled = LOG.isDebugEnabled(); + // Writer for producing row from input batch. + private VectorExpressionWriter[] rowWriters; + + protected transient Object[] singleRow; public VectorReduceSinkOperator(VectorizationContext vContext, OperatorDesc conf) throws HiveException { this(); ReduceSinkDesc desc = (ReduceSinkDesc) conf; this.conf = desc; - keyEval = vContext.getVectorExpressions(desc.getKeyCols()); - valueEval = vContext.getVectorExpressions(desc.getValueCols()); - partitionEval = vContext.getVectorExpressions(desc.getPartitionCols()); - bucketEval = null; - if (desc.getBucketCols() != null && !desc.getBucketCols().isEmpty()) { - bucketEval = vContext.getVectorExpressions(desc.getBucketCols()); - buckColIdxInKey = desc.getPartitionCols().size(); - } } public VectorReduceSinkOperator() { @@ -118,406 +50,49 @@ public VectorReduceSinkOperator() { @Override protected void initializeOp(Configuration hconf) throws HiveException { - try { - numDistributionKeys = conf.getNumDistributionKeys(); - distinctColIndices = conf.getDistinctColumnIndices(); - numDistinctExprs = distinctColIndices.size(); - - TableDesc keyTableDesc = conf.getKeySerializeInfo(); - keySerializer = (Serializer) keyTableDesc.getDeserializerClass() - .newInstance(); - keySerializer.initialize(null, keyTableDesc.getProperties()); - keyIsText = keySerializer.getSerializedClass().equals(Text.class); - - /* - * Compute and assign the key writers and the key object inspector - */ - VectorExpressionWriterFactory.processVectorExpressions( - conf.getKeyCols(), - conf.getOutputKeyColumnNames(), - new VectorExpressionWriterFactory.SingleOIDClosure() { - @Override - public void assign(VectorExpressionWriter[] writers, - ObjectInspector objectInspector) { - keyWriters = writers; - keyObjectInspector = objectInspector; - } - }); - - String colNames = ""; - for(String colName : conf.getOutputKeyColumnNames()) { - colNames = String.format("%s %s", colNames, colName); - } - - if (isDebugEnabled) { - LOG.debug(String.format("keyObjectInspector [%s]%s => %s", - keyObjectInspector.getClass(), - keyObjectInspector, - colNames)); - } - - partitionWriters = VectorExpressionWriterFactory.getExpressionWriters(conf.getPartitionCols()); - if (conf.getBucketCols() != null && !conf.getBucketCols().isEmpty()) { - bucketWriters = VectorExpressionWriterFactory.getExpressionWriters(conf.getBucketCols()); - } - - TableDesc valueTableDesc = conf.getValueSerializeInfo(); - valueSerializer = (Serializer) valueTableDesc.getDeserializerClass() - .newInstance(); - valueSerializer.initialize(null, valueTableDesc.getProperties()); - - /* - * Compute and assign the value writers and the value object inspector - */ - VectorExpressionWriterFactory.processVectorExpressions( - conf.getValueCols(), - conf.getOutputValueColumnNames(), - new VectorExpressionWriterFactory.SingleOIDClosure() { - @Override - public void assign(VectorExpressionWriter[] writers, - ObjectInspector objectInspector) { - valueWriters = writers; - valueObjectInspector = objectInspector; + // We need a input object inspector that is for the row we will extract out of the + // vectorized row batch, not for example, an original inspector for an ORC table, etc. + VectorExpressionWriterFactory.processVectorInspector( + (StructObjectInspector) inputObjInspectors[0], + new VectorExpressionWriterFactory.SingleOIDClosure() { + @Override + public void assign(VectorExpressionWriter[] writers, + ObjectInspector objectInspector) { + rowWriters = writers; + inputObjInspectors[0] = objectInspector; } - }); - - if (isDebugEnabled) { - colNames = ""; - for(String colName : conf.getOutputValueColumnNames()) { - colNames = String.format("%s %s", colNames, colName); - } - } - - if (isDebugEnabled) { - LOG.debug(String.format("valueObjectInspector [%s]%s => %s", - valueObjectInspector.getClass(), - valueObjectInspector, - colNames)); - } - - int numKeys = numDistinctExprs > 0 ? numDistinctExprs : 1; - int keyLen = numDistinctExprs > 0 ? numDistributionKeys + 1 : - numDistributionKeys; - cachedKeys = new Object[numKeys][keyLen]; - cachedValues = new Object[valueEval.length]; - - int tag = conf.getTag(); - tagByte[0] = (byte) tag; - LOG.info("Using tag = " + tag); - - int limit = conf.getTopN(); - float memUsage = conf.getTopNMemoryUsage(); - if (limit >= 0 && memUsage > 0) { - reducerHash = conf.isPTFReduceSink() ? new PTFTopNHash() : reducerHash; - reducerHash.initialize(limit, memUsage, conf.isMapGroupBy(), this); - } - - autoParallel = conf.isAutoParallel(); + }); + singleRow = new Object[rowWriters.length]; - } catch(Exception e) { - throw new HiveException(e); - } + // Call ReduceSinkOperator with new input inspector. + super.initializeOp(hconf); } @Override - public void processOp(Object row, int tag) throws HiveException { - VectorizedRowBatch vrg = (VectorizedRowBatch) row; + public void processOp(Object data, int tag) throws HiveException { + VectorizedRowBatch vrg = (VectorizedRowBatch) data; - if (isDebugEnabled) { - LOG.debug(String.format("sinking %d rows, %d values, %d keys, %d parts", - vrg.size, - valueEval.length, - keyEval.length, - partitionEval.length)); - } - - try { - // Evaluate the keys - for (int i = 0; i < keyEval.length; i++) { - keyEval[i].evaluate(vrg); - } - - // Determine which rows we need to emit based on topN optimization - int startResult = reducerHash.startVectorizedBatch(vrg.size); - if (startResult == TopNHash.EXCLUDE) { - return; // TopN wants us to exclude all rows. - } - // TODO: can we do this later/only for the keys that are needed? E.g. update vrg.selected. - for (int i = 0; i < partitionEval.length; i++) { - partitionEval[i].evaluate(vrg); - } - if (bucketEval != null) { - for (int i = 0; i < bucketEval.length; i++) { - bucketEval[i].evaluate(vrg); - } - } - // run the vector evaluations - for (int i = 0; i < valueEval.length; i++) { - valueEval[i].evaluate(vrg); - } - - boolean useTopN = startResult != TopNHash.FORWARD; - // Go thru the batch once. If we are not using TopN, we will forward all things and be done. - // If we are using topN, we will make the first key for each row and store/forward it. - // Values, hashes and additional distinct rows will be handled in the 2nd pass in that case. - for (int batchIndex = 0 ; batchIndex < vrg.size; ++batchIndex) { - int rowIndex = batchIndex; - if (vrg.selectedInUse) { - rowIndex = vrg.selected[batchIndex]; - } - // First, make distrib key components for this row and determine distKeyLength. - populatedCachedDistributionKeys(vrg, rowIndex, 0); - - // replace bucketing columns with hashcode % numBuckets - if (bucketEval != null) { - bucketNumber = computeBucketNumber(vrg, rowIndex, conf.getNumBuckets()); - cachedKeys[0][buckColIdxInKey] = new Text(String.valueOf(bucketNumber)); - } - HiveKey firstKey = toHiveKey(cachedKeys[0], tag, null); - int distKeyLength = firstKey.getDistKeyLength(); - // Add first distinct expression, if any. - if (numDistinctExprs > 0) { - populateCachedDistinctKeys(vrg, rowIndex, 0); - firstKey = toHiveKey(cachedKeys[0], tag, distKeyLength); - } - - final int hashCode; - - // distKeyLength doesn't include tag, but includes buckNum in cachedKeys[0] - if (autoParallel && partitionEval.length > 0) { - hashCode = computeMurmurHash(firstKey); - } else { - hashCode = computeHashCode(vrg, rowIndex); - } - - firstKey.setHashCode(hashCode); - - if (useTopN) { - /* - * in case of TopN for windowing, we need to distinguish between - * rows with null partition keys and rows with value 0 for partition keys. - */ - boolean partkeysNull = conf.isPTFReduceSink() && partitionKeysAreNull(vrg, rowIndex); - reducerHash.tryStoreVectorizedKey(firstKey, partkeysNull, batchIndex); - } else { - // No TopN, just forward the first key and all others. - BytesWritable value = makeValueWritable(vrg, rowIndex); - collect(firstKey, value); - forwardExtraDistinctRows(vrg, rowIndex, hashCode, value, distKeyLength, tag, 0); - } - } - - if (!useTopN) return; // All done. - - // If we use topN, we have called tryStore on every key now. We can process the results. - for (int batchIndex = 0 ; batchIndex < vrg.size; ++batchIndex) { - int result = reducerHash.getVectorizedBatchResult(batchIndex); - if (result == TopNHash.EXCLUDE) continue; - int rowIndex = batchIndex; - if (vrg.selectedInUse) { - rowIndex = vrg.selected[batchIndex]; - } - // Compute value and hashcode - we'd either store or forward them. - BytesWritable value = makeValueWritable(vrg, rowIndex); - int distKeyLength = -1; - int hashCode; - if (result == TopNHash.FORWARD) { - HiveKey firstKey = reducerHash.getVectorizedKeyToForward(batchIndex); - distKeyLength = firstKey.getDistKeyLength(); - hashCode = firstKey.hashCode(); - collect(firstKey, value); - } else { - hashCode = reducerHash.getVectorizedKeyHashCode(batchIndex); - reducerHash.storeValue(result, hashCode, value, true); - distKeyLength = reducerHash.getVectorizedKeyDistLength(batchIndex); - } - // Now forward other the rows if there's multi-distinct (but see TODO in forward...). - // Unfortunately, that means we will have to rebuild the cachedKeys. Start at 1. - if (numDistinctExprs > 1) { - populatedCachedDistributionKeys(vrg, rowIndex, 1); - forwardExtraDistinctRows(vrg, rowIndex, hashCode, value, distKeyLength, tag, 1); - } - } - } catch (SerDeException e) { - throw new HiveException(e); - } catch (IOException e) { - throw new HiveException(e); - } - } - - /** - * This function creates and forwards all the additional KVs for the multi-distinct case, - * after the first (0th) KV pertaining to the row has already been stored or forwarded. - * @param vrg the batch - * @param rowIndex the row index in the batch - * @param hashCode the partitioning hash code to use; same as for the first KV - * @param value the value to use; same as for the first KV - * @param distKeyLength the distribution key length of the first key; TODO probably extraneous - * @param tag the tag - * @param baseIndex the index in cachedKeys where the pre-evaluated distribution keys are stored - */ - private void forwardExtraDistinctRows(VectorizedRowBatch vrg, int rowIndex,int hashCode, - BytesWritable value, int distKeyLength, int tag, int baseIndex) - throws HiveException, SerDeException, IOException { - // TODO: We don't have to forward extra distinct rows immediately (same in non-vector) if - // the first key has already been stored. There's few bytes difference between keys - // for different distincts, and the value/etc. are all the same. - // We could store deltas to re-gen extra rows when flushing TopN. - for (int i = 1; i < numDistinctExprs; i++) { - if (i != baseIndex) { - System.arraycopy(cachedKeys[baseIndex], 0, cachedKeys[i], 0, numDistributionKeys); - } - populateCachedDistinctKeys(vrg, rowIndex, i); - HiveKey hiveKey = toHiveKey(cachedKeys[i], tag, distKeyLength); - hiveKey.setHashCode(hashCode); - collect(hiveKey, value); + for (int batchIndex = 0 ; batchIndex < vrg.size; ++batchIndex) { + Object row = getRowObject(vrg, batchIndex); + super.processOp(row, tag); } } - /** - * Populate distribution keys part of cachedKeys for a particular row from the batch. - * @param vrg the batch - * @param rowIndex the row index in the batch - * @param index the cachedKeys index to write to - */ - private void populatedCachedDistributionKeys( - VectorizedRowBatch vrg, int rowIndex, int index) throws HiveException { - for (int i = 0; i < numDistributionKeys; i++) { - int batchColumn = keyEval[i].getOutputColumn(); - ColumnVector vectorColumn = vrg.cols[batchColumn]; - cachedKeys[index][i] = keyWriters[i].writeValue(vectorColumn, rowIndex); - } - if (cachedKeys[index].length > numDistributionKeys) { - cachedKeys[index][numDistributionKeys] = null; - } - } - - /** - * Populate distinct keys part of cachedKeys for a particular row from the batch. - * @param vrg the batch - * @param rowIndex the row index in the batch - * @param index the cachedKeys index to write to - */ - private void populateCachedDistinctKeys( - VectorizedRowBatch vrg, int rowIndex, int index) throws HiveException { - StandardUnion union; - cachedKeys[index][numDistributionKeys] = union = new StandardUnion( - (byte)index, new Object[distinctColIndices.get(index).size()]); - Object[] distinctParameters = (Object[]) union.getObject(); - for (int distinctParamI = 0; distinctParamI < distinctParameters.length; distinctParamI++) { - int distinctColIndex = distinctColIndices.get(index).get(distinctParamI); - int batchColumn = keyEval[distinctColIndex].getOutputColumn(); - distinctParameters[distinctParamI] = - keyWriters[distinctColIndex].writeValue(vrg.cols[batchColumn], rowIndex); - } - union.setTag((byte) index); - } - - private BytesWritable makeValueWritable(VectorizedRowBatch vrg, int rowIndex) - throws HiveException, SerDeException { - int length = valueEval.length; - - // in case of bucketed table, insert the bucket number as the last column in value - if (bucketEval != null) { - length -= 1; - cachedValues[length] = new Text(String.valueOf(bucketNumber)); - } - - for (int i = 0; i < length; i++) { - int batchColumn = valueEval[i].getOutputColumn(); - ColumnVector vectorColumn = vrg.cols[batchColumn]; - cachedValues[i] = valueWriters[i].writeValue(vectorColumn, rowIndex); - } - // Serialize the value - return (BytesWritable)valueSerializer.serialize(cachedValues, valueObjectInspector); - } - - private int computeHashCode(VectorizedRowBatch vrg, int rowIndex) throws HiveException { - // Evaluate the HashCode - int keyHashCode = 0; - if (partitionEval.length == 0) { - // If no partition cols, just distribute the data uniformly to provide better - // load balance. If the requirement is to have a single reducer, we should set - // the number of reducers to 1. - // Use a constant seed to make the code deterministic. - if (random == null) { - random = new Random(12345); - } - keyHashCode = random.nextInt(); - } else { - for (int p = 0; p < partitionEval.length; p++) { - ColumnVector columnVector = vrg.cols[partitionEval[p].getOutputColumn()]; - Object partitionValue = partitionWriters[p].writeValue(columnVector, rowIndex); - keyHashCode = keyHashCode - * 31 - + ObjectInspectorUtils.hashCode( - partitionValue, - partitionWriters[p].getObjectInspector()); - } - } - return bucketNumber < 0 ? keyHashCode : keyHashCode * 31 + bucketNumber; - } - - private boolean partitionKeysAreNull(VectorizedRowBatch vrg, int rowIndex) + private Object[] getRowObject(VectorizedRowBatch vrg, int rowIndex) throws HiveException { - if (partitionEval.length != 0) { - for (int p = 0; p < partitionEval.length; p++) { - ColumnVector columnVector = vrg.cols[partitionEval[p].getOutputColumn()]; - Object partitionValue = partitionWriters[p].writeValue(columnVector, - rowIndex); - if (partitionValue != null) { - return false; - } - } - return true; - } - return false; - } - - private int computeBucketNumber(VectorizedRowBatch vrg, int rowIndex, int numBuckets) throws HiveException { - int bucketNum = 0; - for (int p = 0; p < bucketEval.length; p++) { - ColumnVector columnVector = vrg.cols[bucketEval[p].getOutputColumn()]; - Object bucketValue = bucketWriters[p].writeValue(columnVector, rowIndex); - bucketNum = bucketNum - * 31 - + ObjectInspectorUtils.hashCode( - bucketValue, - bucketWriters[p].getObjectInspector()); + int batchIndex = rowIndex; + if (vrg.selectedInUse) { + batchIndex = vrg.selected[rowIndex]; } - - if (bucketNum < 0) { - bucketNum = -1 * bucketNum; + for (int i = 0; i < vrg.projectionSize; i++) { + ColumnVector vectorColumn = vrg.cols[vrg.projectedColumns[i]]; + if (vectorColumn != null) { + singleRow[i] = rowWriters[i].writeValue(vectorColumn, batchIndex); + } else { + // Some columns from tables are not used. + singleRow[i] = null; + } } - - return bucketNum % numBuckets; - } - - static public String getOperatorName() { - return "RS"; - } - - public VectorExpression[] getPartitionEval() { - return partitionEval; - } - - public void setPartitionEval(VectorExpression[] partitionEval) { - this.partitionEval = partitionEval; - } - - public VectorExpression[] getValueEval() { - return valueEval; - } - - public void setValueEval(VectorExpression[] valueEval) { - this.valueEval = valueEval; - } - - public VectorExpression[] getKeyEval() { - return keyEval; - } - - public void setKeyEval(VectorExpression[] keyEval) { - this.keyEval = keyEval; + return singleRow; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java index c037ea8e7b39..85f3e24ee5c8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java @@ -1060,6 +1060,31 @@ public static void processVectorExpressions( closure.assign(writers, oids); } + /** + * Creates the value writers for an struct object inspector. + * Creates an appropriate output object inspector. + */ + public static void processVectorInspector( + StructObjectInspector structObjInspector, + SingleOIDClosure closure) + throws HiveException { + List fields = structObjInspector.getAllStructFieldRefs(); + VectorExpressionWriter[] writers = new VectorExpressionWriter[fields.size()]; + List oids = new ArrayList(writers.length); + ArrayList columnNames = new ArrayList(); + int i = 0; + for(StructField field : fields) { + ObjectInspector fieldObjInsp = field.getFieldObjectInspector(); + writers[i] = VectorExpressionWriterFactory. + genVectorExpressionWritable(fieldObjInsp); + columnNames.add(field.getFieldName()); + oids.add(writers[i].getObjectInspector()); + i++; + } + ObjectInspector objectInspector = ObjectInspectorFactory. + getStandardStructObjectInspector(columnNames,oids); + closure.assign(writers, objectInspector); + } /** * Returns {@link VectorExpressionWriter} objects for the fields in the given diff --git a/ql/src/test/queries/clientpositive/vector_count_distinct.q b/ql/src/test/queries/clientpositive/vector_count_distinct.q new file mode 100644 index 000000000000..c1aae085166d --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_count_distinct.q @@ -0,0 +1,108 @@ +SET hive.vectorized.execution.enabled=true; + +create table web_sales_txt +( + ws_sold_date_sk int, + ws_sold_time_sk int, + ws_ship_date_sk int, + ws_item_sk int, + ws_bill_customer_sk int, + ws_bill_cdemo_sk int, + ws_bill_hdemo_sk int, + ws_bill_addr_sk int, + ws_ship_customer_sk int, + ws_ship_cdemo_sk int, + ws_ship_hdemo_sk int, + ws_ship_addr_sk int, + ws_web_page_sk int, + ws_web_site_sk int, + ws_ship_mode_sk int, + ws_warehouse_sk int, + ws_promo_sk int, + ws_order_number int, + ws_quantity int, + ws_wholesale_cost decimal(7,2), + ws_list_price decimal(7,2), + ws_sales_price decimal(7,2), + ws_ext_discount_amt decimal(7,2), + ws_ext_sales_price decimal(7,2), + ws_ext_wholesale_cost decimal(7,2), + ws_ext_list_price decimal(7,2), + ws_ext_tax decimal(7,2), + ws_coupon_amt decimal(7,2), + ws_ext_ship_cost decimal(7,2), + ws_net_paid decimal(7,2), + ws_net_paid_inc_tax decimal(7,2), + ws_net_paid_inc_ship decimal(7,2), + ws_net_paid_inc_ship_tax decimal(7,2), + ws_net_profit decimal(7,2) +) +row format delimited fields terminated by '|' +stored as textfile; + +LOAD DATA LOCAL INPATH '../../data/files/web_sales_2k' OVERWRITE INTO TABLE web_sales_txt; + +------------------------------------------------------------------------------------------ + +create table web_sales +( + ws_sold_date_sk int, + ws_sold_time_sk int, + ws_ship_date_sk int, + ws_item_sk int, + ws_bill_customer_sk int, + ws_bill_cdemo_sk int, + ws_bill_hdemo_sk int, + ws_bill_addr_sk int, + ws_ship_customer_sk int, + ws_ship_cdemo_sk int, + ws_ship_hdemo_sk int, + ws_ship_addr_sk int, + ws_web_page_sk int, + ws_ship_mode_sk int, + ws_warehouse_sk int, + ws_promo_sk int, + ws_order_number int, + ws_quantity int, + ws_wholesale_cost decimal(7,2), + ws_list_price decimal(7,2), + ws_sales_price decimal(7,2), + ws_ext_discount_amt decimal(7,2), + ws_ext_sales_price decimal(7,2), + ws_ext_wholesale_cost decimal(7,2), + ws_ext_list_price decimal(7,2), + ws_ext_tax decimal(7,2), + ws_coupon_amt decimal(7,2), + ws_ext_ship_cost decimal(7,2), + ws_net_paid decimal(7,2), + ws_net_paid_inc_tax decimal(7,2), + ws_net_paid_inc_ship decimal(7,2), + ws_net_paid_inc_ship_tax decimal(7,2), + ws_net_profit decimal(7,2) +) +partitioned by +( + ws_web_site_sk int +) +stored as orc +tblproperties ("orc.stripe.size"="33554432", "orc.compress.size"="16384"); + +set hive.exec.dynamic.partition.mode=nonstrict; + +insert overwrite table web_sales +partition (ws_web_site_sk) +select ws_sold_date_sk, ws_sold_time_sk, ws_ship_date_sk, ws_item_sk, + ws_bill_customer_sk, ws_bill_cdemo_sk, ws_bill_hdemo_sk, ws_bill_addr_sk, + ws_ship_customer_sk, ws_ship_cdemo_sk, ws_ship_hdemo_sk, ws_ship_addr_sk, + ws_web_page_sk, ws_ship_mode_sk, ws_warehouse_sk, ws_promo_sk, ws_order_number, + ws_quantity, ws_wholesale_cost, ws_list_price, ws_sales_price, ws_ext_discount_amt, + ws_ext_sales_price, ws_ext_wholesale_cost, ws_ext_list_price, ws_ext_tax, + ws_coupon_amt, ws_ext_ship_cost, ws_net_paid, ws_net_paid_inc_tax, ws_net_paid_inc_ship, + ws_net_paid_inc_ship_tax, ws_net_profit, ws_web_site_sk from web_sales_txt; + +------------------------------------------------------------------------------------------ + +explain +select count(distinct ws_order_number) from web_sales; + +select count(distinct ws_order_number) from web_sales; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/tez/vector_count_distinct.q.out b/ql/src/test/results/clientpositive/tez/vector_count_distinct.q.out new file mode 100644 index 000000000000..7c8910960dc3 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_count_distinct.q.out @@ -0,0 +1,1366 @@ +PREHOOK: query: create table web_sales_txt +( + ws_sold_date_sk int, + ws_sold_time_sk int, + ws_ship_date_sk int, + ws_item_sk int, + ws_bill_customer_sk int, + ws_bill_cdemo_sk int, + ws_bill_hdemo_sk int, + ws_bill_addr_sk int, + ws_ship_customer_sk int, + ws_ship_cdemo_sk int, + ws_ship_hdemo_sk int, + ws_ship_addr_sk int, + ws_web_page_sk int, + ws_web_site_sk int, + ws_ship_mode_sk int, + ws_warehouse_sk int, + ws_promo_sk int, + ws_order_number int, + ws_quantity int, + ws_wholesale_cost decimal(7,2), + ws_list_price decimal(7,2), + ws_sales_price decimal(7,2), + ws_ext_discount_amt decimal(7,2), + ws_ext_sales_price decimal(7,2), + ws_ext_wholesale_cost decimal(7,2), + ws_ext_list_price decimal(7,2), + ws_ext_tax decimal(7,2), + ws_coupon_amt decimal(7,2), + ws_ext_ship_cost decimal(7,2), + ws_net_paid decimal(7,2), + ws_net_paid_inc_tax decimal(7,2), + ws_net_paid_inc_ship decimal(7,2), + ws_net_paid_inc_ship_tax decimal(7,2), + ws_net_profit decimal(7,2) +) +row format delimited fields terminated by '|' +stored as textfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@web_sales_txt +POSTHOOK: query: create table web_sales_txt +( + ws_sold_date_sk int, + ws_sold_time_sk int, + ws_ship_date_sk int, + ws_item_sk int, + ws_bill_customer_sk int, + ws_bill_cdemo_sk int, + ws_bill_hdemo_sk int, + ws_bill_addr_sk int, + ws_ship_customer_sk int, + ws_ship_cdemo_sk int, + ws_ship_hdemo_sk int, + ws_ship_addr_sk int, + ws_web_page_sk int, + ws_web_site_sk int, + ws_ship_mode_sk int, + ws_warehouse_sk int, + ws_promo_sk int, + ws_order_number int, + ws_quantity int, + ws_wholesale_cost decimal(7,2), + ws_list_price decimal(7,2), + ws_sales_price decimal(7,2), + ws_ext_discount_amt decimal(7,2), + ws_ext_sales_price decimal(7,2), + ws_ext_wholesale_cost decimal(7,2), + ws_ext_list_price decimal(7,2), + ws_ext_tax decimal(7,2), + ws_coupon_amt decimal(7,2), + ws_ext_ship_cost decimal(7,2), + ws_net_paid decimal(7,2), + ws_net_paid_inc_tax decimal(7,2), + ws_net_paid_inc_ship decimal(7,2), + ws_net_paid_inc_ship_tax decimal(7,2), + ws_net_profit decimal(7,2) +) +row format delimited fields terminated by '|' +stored as textfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@web_sales_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/web_sales_2k' OVERWRITE INTO TABLE web_sales_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@web_sales_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/web_sales_2k' OVERWRITE INTO TABLE web_sales_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@web_sales_txt +PREHOOK: query: ------------------------------------------------------------------------------------------ + +create table web_sales +( + ws_sold_date_sk int, + ws_sold_time_sk int, + ws_ship_date_sk int, + ws_item_sk int, + ws_bill_customer_sk int, + ws_bill_cdemo_sk int, + ws_bill_hdemo_sk int, + ws_bill_addr_sk int, + ws_ship_customer_sk int, + ws_ship_cdemo_sk int, + ws_ship_hdemo_sk int, + ws_ship_addr_sk int, + ws_web_page_sk int, + ws_ship_mode_sk int, + ws_warehouse_sk int, + ws_promo_sk int, + ws_order_number int, + ws_quantity int, + ws_wholesale_cost decimal(7,2), + ws_list_price decimal(7,2), + ws_sales_price decimal(7,2), + ws_ext_discount_amt decimal(7,2), + ws_ext_sales_price decimal(7,2), + ws_ext_wholesale_cost decimal(7,2), + ws_ext_list_price decimal(7,2), + ws_ext_tax decimal(7,2), + ws_coupon_amt decimal(7,2), + ws_ext_ship_cost decimal(7,2), + ws_net_paid decimal(7,2), + ws_net_paid_inc_tax decimal(7,2), + ws_net_paid_inc_ship decimal(7,2), + ws_net_paid_inc_ship_tax decimal(7,2), + ws_net_profit decimal(7,2) +) +partitioned by +( + ws_web_site_sk int +) +stored as orc +tblproperties ("orc.stripe.size"="33554432", "orc.compress.size"="16384") +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@web_sales +POSTHOOK: query: ------------------------------------------------------------------------------------------ + +create table web_sales +( + ws_sold_date_sk int, + ws_sold_time_sk int, + ws_ship_date_sk int, + ws_item_sk int, + ws_bill_customer_sk int, + ws_bill_cdemo_sk int, + ws_bill_hdemo_sk int, + ws_bill_addr_sk int, + ws_ship_customer_sk int, + ws_ship_cdemo_sk int, + ws_ship_hdemo_sk int, + ws_ship_addr_sk int, + ws_web_page_sk int, + ws_ship_mode_sk int, + ws_warehouse_sk int, + ws_promo_sk int, + ws_order_number int, + ws_quantity int, + ws_wholesale_cost decimal(7,2), + ws_list_price decimal(7,2), + ws_sales_price decimal(7,2), + ws_ext_discount_amt decimal(7,2), + ws_ext_sales_price decimal(7,2), + ws_ext_wholesale_cost decimal(7,2), + ws_ext_list_price decimal(7,2), + ws_ext_tax decimal(7,2), + ws_coupon_amt decimal(7,2), + ws_ext_ship_cost decimal(7,2), + ws_net_paid decimal(7,2), + ws_net_paid_inc_tax decimal(7,2), + ws_net_paid_inc_ship decimal(7,2), + ws_net_paid_inc_ship_tax decimal(7,2), + ws_net_profit decimal(7,2) +) +partitioned by +( + ws_web_site_sk int +) +stored as orc +tblproperties ("orc.stripe.size"="33554432", "orc.compress.size"="16384") +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@web_sales +PREHOOK: query: insert overwrite table web_sales +partition (ws_web_site_sk) +select ws_sold_date_sk, ws_sold_time_sk, ws_ship_date_sk, ws_item_sk, + ws_bill_customer_sk, ws_bill_cdemo_sk, ws_bill_hdemo_sk, ws_bill_addr_sk, + ws_ship_customer_sk, ws_ship_cdemo_sk, ws_ship_hdemo_sk, ws_ship_addr_sk, + ws_web_page_sk, ws_ship_mode_sk, ws_warehouse_sk, ws_promo_sk, ws_order_number, + ws_quantity, ws_wholesale_cost, ws_list_price, ws_sales_price, ws_ext_discount_amt, + ws_ext_sales_price, ws_ext_wholesale_cost, ws_ext_list_price, ws_ext_tax, + ws_coupon_amt, ws_ext_ship_cost, ws_net_paid, ws_net_paid_inc_tax, ws_net_paid_inc_ship, + ws_net_paid_inc_ship_tax, ws_net_profit, ws_web_site_sk from web_sales_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@web_sales_txt +PREHOOK: Output: default@web_sales +POSTHOOK: query: insert overwrite table web_sales +partition (ws_web_site_sk) +select ws_sold_date_sk, ws_sold_time_sk, ws_ship_date_sk, ws_item_sk, + ws_bill_customer_sk, ws_bill_cdemo_sk, ws_bill_hdemo_sk, ws_bill_addr_sk, + ws_ship_customer_sk, ws_ship_cdemo_sk, ws_ship_hdemo_sk, ws_ship_addr_sk, + ws_web_page_sk, ws_ship_mode_sk, ws_warehouse_sk, ws_promo_sk, ws_order_number, + ws_quantity, ws_wholesale_cost, ws_list_price, ws_sales_price, ws_ext_discount_amt, + ws_ext_sales_price, ws_ext_wholesale_cost, ws_ext_list_price, ws_ext_tax, + ws_coupon_amt, ws_ext_ship_cost, ws_net_paid, ws_net_paid_inc_tax, ws_net_paid_inc_ship, + ws_net_paid_inc_ship_tax, ws_net_profit, ws_web_site_sk from web_sales_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@web_sales_txt +POSTHOOK: Output: default@web_sales@ws_web_site_sk=1 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=10 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=11 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=12 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=13 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=14 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=15 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=16 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=17 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=18 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=19 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=2 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=20 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=21 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=22 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=23 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=24 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=25 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=26 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=27 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=28 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=29 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=3 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=30 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=4 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=5 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=6 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=7 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=8 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=9 +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +PREHOOK: query: ------------------------------------------------------------------------------------------ + +explain +select count(distinct ws_order_number) from web_sales +PREHOOK: type: QUERY +POSTHOOK: query: ------------------------------------------------------------------------------------------ + +explain +select count(distinct ws_order_number) from web_sales +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: web_sales + Statistics: Num rows: 2000 Data size: 3504000 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ws_order_number (type: int) + outputColumnNames: ws_order_number + Statistics: Num rows: 2000 Data size: 3504000 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(DISTINCT ws_order_number) + keys: ws_order_number (type: int) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2000 Data size: 3504000 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2000 Data size: 3504000 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(DISTINCT KEY._col0:0._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select count(distinct ws_order_number) from web_sales +PREHOOK: type: QUERY +PREHOOK: Input: default@web_sales +PREHOOK: Input: default@web_sales@ws_web_site_sk=1 +PREHOOK: Input: default@web_sales@ws_web_site_sk=10 +PREHOOK: Input: default@web_sales@ws_web_site_sk=11 +PREHOOK: Input: default@web_sales@ws_web_site_sk=12 +PREHOOK: Input: default@web_sales@ws_web_site_sk=13 +PREHOOK: Input: default@web_sales@ws_web_site_sk=14 +PREHOOK: Input: default@web_sales@ws_web_site_sk=15 +PREHOOK: Input: default@web_sales@ws_web_site_sk=16 +PREHOOK: Input: default@web_sales@ws_web_site_sk=17 +PREHOOK: Input: default@web_sales@ws_web_site_sk=18 +PREHOOK: Input: default@web_sales@ws_web_site_sk=19 +PREHOOK: Input: default@web_sales@ws_web_site_sk=2 +PREHOOK: Input: default@web_sales@ws_web_site_sk=20 +PREHOOK: Input: default@web_sales@ws_web_site_sk=21 +PREHOOK: Input: default@web_sales@ws_web_site_sk=22 +PREHOOK: Input: default@web_sales@ws_web_site_sk=23 +PREHOOK: Input: default@web_sales@ws_web_site_sk=24 +PREHOOK: Input: default@web_sales@ws_web_site_sk=25 +PREHOOK: Input: default@web_sales@ws_web_site_sk=26 +PREHOOK: Input: default@web_sales@ws_web_site_sk=27 +PREHOOK: Input: default@web_sales@ws_web_site_sk=28 +PREHOOK: Input: default@web_sales@ws_web_site_sk=29 +PREHOOK: Input: default@web_sales@ws_web_site_sk=3 +PREHOOK: Input: default@web_sales@ws_web_site_sk=30 +PREHOOK: Input: default@web_sales@ws_web_site_sk=4 +PREHOOK: Input: default@web_sales@ws_web_site_sk=5 +PREHOOK: Input: default@web_sales@ws_web_site_sk=6 +PREHOOK: Input: default@web_sales@ws_web_site_sk=7 +PREHOOK: Input: default@web_sales@ws_web_site_sk=8 +PREHOOK: Input: default@web_sales@ws_web_site_sk=9 +#### A masked pattern was here #### +POSTHOOK: query: select count(distinct ws_order_number) from web_sales +POSTHOOK: type: QUERY +POSTHOOK: Input: default@web_sales +POSTHOOK: Input: default@web_sales@ws_web_site_sk=1 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=10 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=11 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=12 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=13 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=14 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=15 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=16 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=17 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=18 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=19 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=2 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=20 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=21 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=22 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=23 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=24 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=25 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=26 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=27 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=28 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=29 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=3 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=30 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=4 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=5 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=6 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=7 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=8 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=9 +#### A masked pattern was here #### +169 diff --git a/ql/src/test/results/clientpositive/vector_count_distinct.q.out b/ql/src/test/results/clientpositive/vector_count_distinct.q.out new file mode 100644 index 000000000000..becb4e2ededf --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_count_distinct.q.out @@ -0,0 +1,1360 @@ +PREHOOK: query: create table web_sales_txt +( + ws_sold_date_sk int, + ws_sold_time_sk int, + ws_ship_date_sk int, + ws_item_sk int, + ws_bill_customer_sk int, + ws_bill_cdemo_sk int, + ws_bill_hdemo_sk int, + ws_bill_addr_sk int, + ws_ship_customer_sk int, + ws_ship_cdemo_sk int, + ws_ship_hdemo_sk int, + ws_ship_addr_sk int, + ws_web_page_sk int, + ws_web_site_sk int, + ws_ship_mode_sk int, + ws_warehouse_sk int, + ws_promo_sk int, + ws_order_number int, + ws_quantity int, + ws_wholesale_cost decimal(7,2), + ws_list_price decimal(7,2), + ws_sales_price decimal(7,2), + ws_ext_discount_amt decimal(7,2), + ws_ext_sales_price decimal(7,2), + ws_ext_wholesale_cost decimal(7,2), + ws_ext_list_price decimal(7,2), + ws_ext_tax decimal(7,2), + ws_coupon_amt decimal(7,2), + ws_ext_ship_cost decimal(7,2), + ws_net_paid decimal(7,2), + ws_net_paid_inc_tax decimal(7,2), + ws_net_paid_inc_ship decimal(7,2), + ws_net_paid_inc_ship_tax decimal(7,2), + ws_net_profit decimal(7,2) +) +row format delimited fields terminated by '|' +stored as textfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@web_sales_txt +POSTHOOK: query: create table web_sales_txt +( + ws_sold_date_sk int, + ws_sold_time_sk int, + ws_ship_date_sk int, + ws_item_sk int, + ws_bill_customer_sk int, + ws_bill_cdemo_sk int, + ws_bill_hdemo_sk int, + ws_bill_addr_sk int, + ws_ship_customer_sk int, + ws_ship_cdemo_sk int, + ws_ship_hdemo_sk int, + ws_ship_addr_sk int, + ws_web_page_sk int, + ws_web_site_sk int, + ws_ship_mode_sk int, + ws_warehouse_sk int, + ws_promo_sk int, + ws_order_number int, + ws_quantity int, + ws_wholesale_cost decimal(7,2), + ws_list_price decimal(7,2), + ws_sales_price decimal(7,2), + ws_ext_discount_amt decimal(7,2), + ws_ext_sales_price decimal(7,2), + ws_ext_wholesale_cost decimal(7,2), + ws_ext_list_price decimal(7,2), + ws_ext_tax decimal(7,2), + ws_coupon_amt decimal(7,2), + ws_ext_ship_cost decimal(7,2), + ws_net_paid decimal(7,2), + ws_net_paid_inc_tax decimal(7,2), + ws_net_paid_inc_ship decimal(7,2), + ws_net_paid_inc_ship_tax decimal(7,2), + ws_net_profit decimal(7,2) +) +row format delimited fields terminated by '|' +stored as textfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@web_sales_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/web_sales_2k' OVERWRITE INTO TABLE web_sales_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@web_sales_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/web_sales_2k' OVERWRITE INTO TABLE web_sales_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@web_sales_txt +PREHOOK: query: ------------------------------------------------------------------------------------------ + +create table web_sales +( + ws_sold_date_sk int, + ws_sold_time_sk int, + ws_ship_date_sk int, + ws_item_sk int, + ws_bill_customer_sk int, + ws_bill_cdemo_sk int, + ws_bill_hdemo_sk int, + ws_bill_addr_sk int, + ws_ship_customer_sk int, + ws_ship_cdemo_sk int, + ws_ship_hdemo_sk int, + ws_ship_addr_sk int, + ws_web_page_sk int, + ws_ship_mode_sk int, + ws_warehouse_sk int, + ws_promo_sk int, + ws_order_number int, + ws_quantity int, + ws_wholesale_cost decimal(7,2), + ws_list_price decimal(7,2), + ws_sales_price decimal(7,2), + ws_ext_discount_amt decimal(7,2), + ws_ext_sales_price decimal(7,2), + ws_ext_wholesale_cost decimal(7,2), + ws_ext_list_price decimal(7,2), + ws_ext_tax decimal(7,2), + ws_coupon_amt decimal(7,2), + ws_ext_ship_cost decimal(7,2), + ws_net_paid decimal(7,2), + ws_net_paid_inc_tax decimal(7,2), + ws_net_paid_inc_ship decimal(7,2), + ws_net_paid_inc_ship_tax decimal(7,2), + ws_net_profit decimal(7,2) +) +partitioned by +( + ws_web_site_sk int +) +stored as orc +tblproperties ("orc.stripe.size"="33554432", "orc.compress.size"="16384") +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@web_sales +POSTHOOK: query: ------------------------------------------------------------------------------------------ + +create table web_sales +( + ws_sold_date_sk int, + ws_sold_time_sk int, + ws_ship_date_sk int, + ws_item_sk int, + ws_bill_customer_sk int, + ws_bill_cdemo_sk int, + ws_bill_hdemo_sk int, + ws_bill_addr_sk int, + ws_ship_customer_sk int, + ws_ship_cdemo_sk int, + ws_ship_hdemo_sk int, + ws_ship_addr_sk int, + ws_web_page_sk int, + ws_ship_mode_sk int, + ws_warehouse_sk int, + ws_promo_sk int, + ws_order_number int, + ws_quantity int, + ws_wholesale_cost decimal(7,2), + ws_list_price decimal(7,2), + ws_sales_price decimal(7,2), + ws_ext_discount_amt decimal(7,2), + ws_ext_sales_price decimal(7,2), + ws_ext_wholesale_cost decimal(7,2), + ws_ext_list_price decimal(7,2), + ws_ext_tax decimal(7,2), + ws_coupon_amt decimal(7,2), + ws_ext_ship_cost decimal(7,2), + ws_net_paid decimal(7,2), + ws_net_paid_inc_tax decimal(7,2), + ws_net_paid_inc_ship decimal(7,2), + ws_net_paid_inc_ship_tax decimal(7,2), + ws_net_profit decimal(7,2) +) +partitioned by +( + ws_web_site_sk int +) +stored as orc +tblproperties ("orc.stripe.size"="33554432", "orc.compress.size"="16384") +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@web_sales +PREHOOK: query: insert overwrite table web_sales +partition (ws_web_site_sk) +select ws_sold_date_sk, ws_sold_time_sk, ws_ship_date_sk, ws_item_sk, + ws_bill_customer_sk, ws_bill_cdemo_sk, ws_bill_hdemo_sk, ws_bill_addr_sk, + ws_ship_customer_sk, ws_ship_cdemo_sk, ws_ship_hdemo_sk, ws_ship_addr_sk, + ws_web_page_sk, ws_ship_mode_sk, ws_warehouse_sk, ws_promo_sk, ws_order_number, + ws_quantity, ws_wholesale_cost, ws_list_price, ws_sales_price, ws_ext_discount_amt, + ws_ext_sales_price, ws_ext_wholesale_cost, ws_ext_list_price, ws_ext_tax, + ws_coupon_amt, ws_ext_ship_cost, ws_net_paid, ws_net_paid_inc_tax, ws_net_paid_inc_ship, + ws_net_paid_inc_ship_tax, ws_net_profit, ws_web_site_sk from web_sales_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@web_sales_txt +PREHOOK: Output: default@web_sales +POSTHOOK: query: insert overwrite table web_sales +partition (ws_web_site_sk) +select ws_sold_date_sk, ws_sold_time_sk, ws_ship_date_sk, ws_item_sk, + ws_bill_customer_sk, ws_bill_cdemo_sk, ws_bill_hdemo_sk, ws_bill_addr_sk, + ws_ship_customer_sk, ws_ship_cdemo_sk, ws_ship_hdemo_sk, ws_ship_addr_sk, + ws_web_page_sk, ws_ship_mode_sk, ws_warehouse_sk, ws_promo_sk, ws_order_number, + ws_quantity, ws_wholesale_cost, ws_list_price, ws_sales_price, ws_ext_discount_amt, + ws_ext_sales_price, ws_ext_wholesale_cost, ws_ext_list_price, ws_ext_tax, + ws_coupon_amt, ws_ext_ship_cost, ws_net_paid, ws_net_paid_inc_tax, ws_net_paid_inc_ship, + ws_net_paid_inc_ship_tax, ws_net_profit, ws_web_site_sk from web_sales_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@web_sales_txt +POSTHOOK: Output: default@web_sales@ws_web_site_sk=1 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=10 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=11 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=12 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=13 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=14 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=15 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=16 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=17 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=18 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=19 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=2 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=20 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=21 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=22 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=23 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=24 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=25 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=26 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=27 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=28 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=29 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=3 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=30 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=4 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=5 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=6 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=7 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=8 +POSTHOOK: Output: default@web_sales@ws_web_site_sk=9 +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=10).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=11).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=12).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=13).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=14).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=15).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=16).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=17).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=18).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=19).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=1).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=20).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=21).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=22).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=23).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=24).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=25).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=26).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=27).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=28).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=29).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=2).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=30).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=3).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=4).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=5).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=6).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=7).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=8).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_bill_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_bill_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_bill_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_bill_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_bill_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_coupon_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_coupon_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_discount_amt SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_discount_amt, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_ship_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_ship_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ext_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ext_wholesale_cost, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_item_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_list_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_list_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_net_paid SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_net_paid_inc_ship SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_net_paid_inc_ship_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_ship_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_net_paid_inc_tax SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_paid_inc_tax, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_net_profit SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_net_profit, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_order_number SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_order_number, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_promo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_quantity SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_sales_price SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sales_price, type:decimal(7,2), comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_addr_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_cdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_customer_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_hdemo_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_ship_mode_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_ship_mode_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_sold_date_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_sold_time_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_warehouse_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_warehouse_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_web_page_sk SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_web_page_sk, type:int, comment:null), ] +POSTHOOK: Lineage: web_sales PARTITION(ws_web_site_sk=9).ws_wholesale_cost SIMPLE [(web_sales_txt)web_sales_txt.FieldSchema(name:ws_wholesale_cost, type:decimal(7,2), comment:null), ] +PREHOOK: query: ------------------------------------------------------------------------------------------ + +explain +select count(distinct ws_order_number) from web_sales +PREHOOK: type: QUERY +POSTHOOK: query: ------------------------------------------------------------------------------------------ + +explain +select count(distinct ws_order_number) from web_sales +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: web_sales + Statistics: Num rows: 2000 Data size: 3504000 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ws_order_number (type: int) + outputColumnNames: ws_order_number + Statistics: Num rows: 2000 Data size: 3504000 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(DISTINCT ws_order_number) + keys: ws_order_number (type: int) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2000 Data size: 3504000 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2000 Data size: 3504000 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: count(DISTINCT KEY._col0:0._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select count(distinct ws_order_number) from web_sales +PREHOOK: type: QUERY +PREHOOK: Input: default@web_sales +PREHOOK: Input: default@web_sales@ws_web_site_sk=1 +PREHOOK: Input: default@web_sales@ws_web_site_sk=10 +PREHOOK: Input: default@web_sales@ws_web_site_sk=11 +PREHOOK: Input: default@web_sales@ws_web_site_sk=12 +PREHOOK: Input: default@web_sales@ws_web_site_sk=13 +PREHOOK: Input: default@web_sales@ws_web_site_sk=14 +PREHOOK: Input: default@web_sales@ws_web_site_sk=15 +PREHOOK: Input: default@web_sales@ws_web_site_sk=16 +PREHOOK: Input: default@web_sales@ws_web_site_sk=17 +PREHOOK: Input: default@web_sales@ws_web_site_sk=18 +PREHOOK: Input: default@web_sales@ws_web_site_sk=19 +PREHOOK: Input: default@web_sales@ws_web_site_sk=2 +PREHOOK: Input: default@web_sales@ws_web_site_sk=20 +PREHOOK: Input: default@web_sales@ws_web_site_sk=21 +PREHOOK: Input: default@web_sales@ws_web_site_sk=22 +PREHOOK: Input: default@web_sales@ws_web_site_sk=23 +PREHOOK: Input: default@web_sales@ws_web_site_sk=24 +PREHOOK: Input: default@web_sales@ws_web_site_sk=25 +PREHOOK: Input: default@web_sales@ws_web_site_sk=26 +PREHOOK: Input: default@web_sales@ws_web_site_sk=27 +PREHOOK: Input: default@web_sales@ws_web_site_sk=28 +PREHOOK: Input: default@web_sales@ws_web_site_sk=29 +PREHOOK: Input: default@web_sales@ws_web_site_sk=3 +PREHOOK: Input: default@web_sales@ws_web_site_sk=30 +PREHOOK: Input: default@web_sales@ws_web_site_sk=4 +PREHOOK: Input: default@web_sales@ws_web_site_sk=5 +PREHOOK: Input: default@web_sales@ws_web_site_sk=6 +PREHOOK: Input: default@web_sales@ws_web_site_sk=7 +PREHOOK: Input: default@web_sales@ws_web_site_sk=8 +PREHOOK: Input: default@web_sales@ws_web_site_sk=9 +#### A masked pattern was here #### +POSTHOOK: query: select count(distinct ws_order_number) from web_sales +POSTHOOK: type: QUERY +POSTHOOK: Input: default@web_sales +POSTHOOK: Input: default@web_sales@ws_web_site_sk=1 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=10 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=11 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=12 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=13 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=14 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=15 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=16 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=17 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=18 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=19 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=2 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=20 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=21 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=22 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=23 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=24 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=25 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=26 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=27 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=28 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=29 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=3 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=30 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=4 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=5 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=6 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=7 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=8 +POSTHOOK: Input: default@web_sales@ws_web_site_sk=9 +#### A masked pattern was here #### +169 From 40ba2f67ddc7ef8b42ce977092790e68dc884aa6 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 3 Oct 2014 18:03:33 +0000 Subject: [PATCH 060/339] HIVE-7957: Revisit event version handling in dynamic partition pruning on Tez (Gunther Hagleitner, reviewed by Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629275 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 2 +- .../hive/ql/exec/AppMasterEventOperator.java | 3 - .../ql/exec/tez/DynamicPartitionPruner.java | 103 +++++++++++------- .../hive/ql/exec/tez/HiveSplitGenerator.java | 10 +- 4 files changed, 73 insertions(+), 45 deletions(-) diff --git a/pom.xml b/pom.xml index 157693d49262..d99c27b4f9a2 100644 --- a/pom.xml +++ b/pom.xml @@ -151,7 +151,7 @@ 1.0.1 1.7.5 4.0.4 - 0.5.0 + 0.5.1 2.2.0 1.1 0.2 diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/AppMasterEventOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/AppMasterEventOperator.java index b562392f4615..b9be486e99fe 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/AppMasterEventOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/AppMasterEventOperator.java @@ -60,9 +60,6 @@ public void initializeOp(Configuration hconf) throws HiveException { protected void initDataBuffer(boolean skipPruning) throws HiveException { buffer = new DataOutputBuffer(); try { - // where does this go to? - buffer.writeUTF(((TezContext) TezContext.get()).getTezProcessorContext().getTaskVertexName()); - // add any other header info getConf().writeEventHeader(buffer); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicPartitionPruner.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicPartitionPruner.java index 78d6cf508dfd..7ba2ae1ef692 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicPartitionPruner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicPartitionPruner.java @@ -31,6 +31,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ConcurrentSkipListSet; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.atomic.AtomicBoolean; @@ -59,6 +60,7 @@ import org.apache.hadoop.io.BytesWritable; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.util.ReflectionUtils; +import org.apache.tez.dag.api.event.VertexState; import org.apache.tez.runtime.api.InputInitializerContext; import org.apache.tez.runtime.api.events.InputInitializerEvent; @@ -77,12 +79,13 @@ public class DynamicPartitionPruner { private final BytesWritable writable = new BytesWritable(); - private final BlockingQueue queue = - new LinkedBlockingQueue(); + private final BlockingQueue queue = new LinkedBlockingQueue(); + + private final Set sourcesWaitingForEvents = new HashSet(); private int sourceInfoCount = 0; - private InputInitializerContext context; + private final Object endOfEvents = new Object(); public DynamicPartitionPruner() { } @@ -91,8 +94,21 @@ public void prune(MapWork work, JobConf jobConf, InputInitializerContext context throws SerDeException, IOException, InterruptedException, HiveException { - this.context = context; - this.initialize(work, jobConf); + synchronized(sourcesWaitingForEvents) { + initialize(work, jobConf); + + if (sourcesWaitingForEvents.isEmpty()) { + return; + } + + Set states = Collections.singleton(VertexState.SUCCEEDED); + for (String source : sourcesWaitingForEvents) { + // we need to get state transition updates for the vertices that will send + // events to us. once we have received all events and a vertex has succeeded, + // we can move to do the pruning. + context.registerForVertexStateUpdates(source, states); + } + } LOG.info("Waiting for events (" + sourceInfoCount + " items) ..."); // synchronous event processing loop. Won't return until all events have @@ -102,7 +118,7 @@ public void prune(MapWork work, JobConf jobConf, InputInitializerContext context LOG.info("Ok to proceed."); } - public BlockingQueue getQueue() { + public BlockingQueue getQueue() { return queue; } @@ -111,11 +127,14 @@ private void clear() { sourceInfoCount = 0; } - private void initialize(MapWork work, JobConf jobConf) throws SerDeException { + public void initialize(MapWork work, JobConf jobConf) throws SerDeException { this.clear(); Map columnMap = new HashMap(); + Set sources = work.getEventSourceTableDescMap().keySet(); + + sourcesWaitingForEvents.addAll(sources); - for (String s : work.getEventSourceTableDescMap().keySet()) { + for (String s : sources) { List tables = work.getEventSourceTableDescMap().get(s); List columnNames = work.getEventSourceColumnNameMap().get(s); List partKeyExprs = work.getEventSourcePartKeyExprMap().get(s); @@ -277,46 +296,30 @@ public SourceInfo(TableDesc table, ExprNodeDesc partKey, String columnName, JobC private void processEvents() throws SerDeException, IOException, InterruptedException { int eventCount = 0; - int neededEvents = getExpectedNumberOfEvents(); - while (neededEvents > eventCount) { - InputInitializerEvent event = queue.take(); + while (true) { + Object element = queue.take(); + + if (element == endOfEvents) { + // we're done processing events + break; + } + + InputInitializerEvent event = (InputInitializerEvent) element; + LOG.info("Input event: " + event.getTargetInputName() + ", " + event.getTargetVertexName() + ", " + (event.getUserPayload().limit() - event.getUserPayload().position())); - processPayload(event.getUserPayload()); + processPayload(event.getUserPayload(), event.getSourceVertexName()); eventCount += 1; - neededEvents = getExpectedNumberOfEvents(); - LOG.info("Needed events: " + neededEvents + ", received events: " + eventCount); } - } - - private int getExpectedNumberOfEvents() throws InterruptedException { - int neededEvents = 0; - - boolean notInitialized; - do { - neededEvents = 0; - notInitialized = false; - for (String s : sourceInfoMap.keySet()) { - int multiplier = sourceInfoMap.get(s).size(); - int taskNum = context.getVertexNumTasks(s); - LOG.info("Vertex " + s + " has " + taskNum + " events."); - if (taskNum < 0) { - notInitialized = true; - Thread.sleep(10); - continue; - } - neededEvents += (taskNum * multiplier); - } - } while (notInitialized); - - return neededEvents; + LOG.info("Received events: " + eventCount); } @SuppressWarnings("deprecation") - private String processPayload(ByteBuffer payload) throws SerDeException, IOException { + private String processPayload(ByteBuffer payload, String sourceName) throws SerDeException, + IOException { + DataInputStream in = new DataInputStream(new ByteBufferBackedInputStream(payload)); - String sourceName = in.readUTF(); String columnName = in.readUTF(); boolean skip = in.readBoolean(); @@ -390,4 +393,26 @@ public int read(byte[] bytes, int off, int len) throws IOException { } } + public void addEvent(InputInitializerEvent event) { + synchronized(sourcesWaitingForEvents) { + if (sourcesWaitingForEvents.contains(event.getSourceVertexName())) { + queue.offer(event); + } + } + } + + public void processVertex(String name) { + LOG.info("Vertex succeeded: " + name); + + synchronized(sourcesWaitingForEvents) { + sourcesWaitingForEvents.remove(name); + + if (sourcesWaitingForEvents.isEmpty()) { + // we've got what we need; mark the queue + queue.offer(endOfEvents); + } else { + LOG.info("Waiting for " + sourcesWaitingForEvents.size() + " events."); + } + } + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HiveSplitGenerator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HiveSplitGenerator.java index 874584b92765..c45479fe6a0b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HiveSplitGenerator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HiveSplitGenerator.java @@ -38,8 +38,9 @@ import org.apache.hadoop.mapreduce.split.TezMapReduceSplitsGrouper; import org.apache.hadoop.util.ReflectionUtils; import org.apache.tez.common.TezUtils; -import org.apache.tez.dag.api.VertexLocationHint; import org.apache.tez.dag.api.TaskLocationHint; +import org.apache.tez.dag.api.VertexLocationHint; +import org.apache.tez.dag.api.event.VertexStateUpdate; import org.apache.tez.mapreduce.hadoop.InputSplitInfoMem; import org.apache.tez.mapreduce.hadoop.MRInputHelpers; import org.apache.tez.mapreduce.protos.MRRuntimeProtos.MRInputUserPayloadProto; @@ -242,10 +243,15 @@ private List createEventList(boolean sendSerializedEvents, InputSplitInfo return events; } + @Override + public void onVertexStateUpdated(VertexStateUpdate stateUpdate) { + pruner.processVertex(stateUpdate.getVertexName()); + } + @Override public void handleInputInitializerEvent(List events) throws Exception { for (InputInitializerEvent e : events) { - pruner.getQueue().put(e); + pruner.addEvent(e); } } } From b6a7c4c06755343294e76dadd8c4ffb0c5c6b7f2 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 3 Oct 2014 20:24:31 +0000 Subject: [PATCH 061/339] HIVE-7960: Upgrade to Hadoop 2.5 (Gunther Hagleitner, reviewed by Brock Noland) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629310 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java | 5 +++-- pom.xml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java index 7ac7ebc3e3a1..f40b7da26a38 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java @@ -47,6 +47,7 @@ import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod; import org.apache.hadoop.security.authorize.AuthorizationException; +import org.apache.hadoop.security.authorize.DefaultImpersonationProvider; import org.apache.hadoop.security.authorize.ProxyUsers; import org.apache.hadoop.security.token.SecretManager.InvalidToken; import org.apache.hadoop.security.token.Token; @@ -129,7 +130,7 @@ private void configureSuperUserIPAddresses(Configuration conf, } builder.append("127.0.1.1,"); builder.append(InetAddress.getLocalHost().getCanonicalHostName()); - conf.setStrings(ProxyUsers.getProxySuperuserIpConfKey(superUserShortName), + conf.setStrings(DefaultImpersonationProvider.getProxySuperuserIpConfKey(superUserShortName), builder.toString()); } @@ -292,7 +293,7 @@ public String run() throws Exception { private void setGroupsInConf(String[] groupNames, String proxyUserName) throws IOException { conf.set( - ProxyUsers.getProxySuperuserGroupConfKey(proxyUserName), + DefaultImpersonationProvider.getProxySuperuserGroupConfKey(proxyUserName), StringUtils.join(",", Arrays.asList(groupNames))); configureSuperUserIPAddresses(conf, proxyUserName); ProxyUsers.refreshSuperUserGroupsConfiguration(conf); diff --git a/pom.xml b/pom.xml index d99c27b4f9a2..8bef0ee3f531 100644 --- a/pom.xml +++ b/pom.xml @@ -115,7 +115,7 @@ 2.1.6 0.20.2 1.2.1 - 2.4.0 + 2.5.0 ${basedir}/${hive.path.to.root}/testutils/hadoop 0.98.3-hadoop1 0.98.3-hadoop2 From 242824e081742655c7402cef761c7676a460f7f4 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Fri, 3 Oct 2014 23:13:21 +0000 Subject: [PATCH 062/339] HIVE-8169 Windows: alter table ..set location from hcatalog failed with NullPointerException (Xiaobing Zhou via Alan Gates) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629336 13f79535-47bb-0310-9956-ffa450edef68 --- .../HCatSemanticAnalyzer.java | 3 +- .../clientpositive/alter_table_location.q | 5 ++ .../clientpositive/alter_table_location.q.out | 55 +++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 ql/src/test/queries/clientpositive/alter_table_location.q create mode 100644 ql/src/test/results/clientpositive/alter_table_location.q.out diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzer.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzer.java index 1d04d8cd7b44..11d0743546c6 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzer.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzer.java @@ -23,6 +23,7 @@ import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.ql.exec.Task; +import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.Partition; @@ -360,7 +361,7 @@ protected void authorizeDDLWork(HiveSemanticAnalyzerHookContext cntxt, Hive hive AlterTableDesc alterTable = work.getAlterTblDesc(); if (alterTable != null) { Table table = hive.getTable(SessionState.get().getCurrentDatabase(), - alterTable.getOldName(), false); + Utilities.getDbTableName(alterTable.getOldName())[1], false); Partition part = null; if (alterTable.getPartSpec() != null) { diff --git a/ql/src/test/queries/clientpositive/alter_table_location.q b/ql/src/test/queries/clientpositive/alter_table_location.q new file mode 100644 index 000000000000..94c394809af0 --- /dev/null +++ b/ql/src/test/queries/clientpositive/alter_table_location.q @@ -0,0 +1,5 @@ +drop table if exists hcat_altertable_16; +create table hcat_altertable_16(a int, b string) stored as textfile; +show table extended like hcat_altertable_16; +alter table hcat_altertable_16 set location 'file:${system:test.tmp.dir}/hcat_altertable_16'; +show table extended like hcat_altertable_16; diff --git a/ql/src/test/results/clientpositive/alter_table_location.q.out b/ql/src/test/results/clientpositive/alter_table_location.q.out new file mode 100644 index 000000000000..167a9366e935 --- /dev/null +++ b/ql/src/test/results/clientpositive/alter_table_location.q.out @@ -0,0 +1,55 @@ +PREHOOK: query: drop table if exists hcat_altertable_16 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists hcat_altertable_16 +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table hcat_altertable_16(a int, b string) stored as textfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@hcat_altertable_16 +POSTHOOK: query: create table hcat_altertable_16(a int, b string) stored as textfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hcat_altertable_16 +PREHOOK: query: show table extended like hcat_altertable_16 +PREHOOK: type: SHOW_TABLESTATUS +POSTHOOK: query: show table extended like hcat_altertable_16 +POSTHOOK: type: SHOW_TABLESTATUS +tableName:hcat_altertable_16 +#### A masked pattern was here #### +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 a, string b} +partitioned:false +partitionColumns: +totalNumberFiles:0 +totalFileSize:0 +maxFileSize:0 +minFileSize:0 +#### A masked pattern was here #### + +#### A masked pattern was here #### +PREHOOK: type: ALTERTABLE_LOCATION +PREHOOK: Input: default@hcat_altertable_16 +PREHOOK: Output: default@hcat_altertable_16 +#### A masked pattern was here #### +POSTHOOK: type: ALTERTABLE_LOCATION +POSTHOOK: Input: default@hcat_altertable_16 +POSTHOOK: Output: default@hcat_altertable_16 +#### A masked pattern was here #### +PREHOOK: query: show table extended like hcat_altertable_16 +PREHOOK: type: SHOW_TABLESTATUS +POSTHOOK: query: show table extended like hcat_altertable_16 +POSTHOOK: type: SHOW_TABLESTATUS +tableName:hcat_altertable_16 +#### A masked pattern was here #### +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 a, string b} +partitioned:false +partitionColumns: +totalNumberFiles:unknown +totalFileSize:unknown +maxFileSize:unknown +minFileSize:unknown +#### A masked pattern was here #### + From bdb0ff5b77984a9e7bc65e3597d2530db588097b Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Mon, 6 Oct 2014 07:43:15 +0000 Subject: [PATCH 063/339] HIVE-8324: Shim KerberosName (causes build failure on hadoop-1) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629584 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/service/auth/HiveAuthFactory.java | 9 ++-- .../service/cli/thrift/ThriftHttpServlet.java | 27 ++++++++---- .../hadoop/hive/shims/Hadoop20Shims.java | 7 ++++ .../hadoop/hive/shims/Hadoop20SShims.java | 41 +++++++++++++++++++ .../hadoop/hive/shims/Hadoop23Shims.java | 41 +++++++++++++++++++ .../apache/hadoop/hive/shims/HadoopShims.java | 17 ++++++++ 6 files changed, 130 insertions(+), 12 deletions(-) diff --git a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index 83dd2e6116cd..e473ea956778 100644 --- a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -29,10 +29,10 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; +import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge; import org.apache.hadoop.security.UserGroupInformation; -import org.apache.hadoop.security.authentication.util.KerberosName; import org.apache.hive.service.cli.HiveSQLException; import org.apache.hive.service.cli.thrift.ThriftCLIService; import org.apache.thrift.TProcessorFactory; @@ -287,12 +287,11 @@ public String getUserFromToken(String delegationToken) throws HiveSQLException { public static void verifyProxyAccess(String realUser, String proxyUser, String ipAddress, HiveConf hiveConf) throws HiveSQLException { - try { UserGroupInformation sessionUgi; if (ShimLoader.getHadoopShims().isSecurityEnabled()) { - KerberosName kerbName = new KerberosName(realUser); - String shortPrincipalName = kerbName.getServiceName(); + KerberosNameShim kerbName = ShimLoader.getHadoopShims().getKerberosNameShim(realUser); + String shortPrincipalName = kerbName.getServiceName(); sessionUgi = ShimLoader.getHadoopShims().createProxyUser(shortPrincipalName); } else { sessionUgi = ShimLoader.getHadoopShims().createRemoteUser(realUser, null); @@ -306,5 +305,5 @@ public static void verifyProxyAccess(String realUser, String proxyUser, String i "Failed to validate proxy privilege of " + realUser + " for " + proxyUser, e); } } - + } diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java index 312d05e32aa0..c61d3a3e2e08 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java @@ -31,8 +31,9 @@ import org.apache.commons.codec.binary.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim; +import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.security.UserGroupInformation; -import org.apache.hadoop.security.authentication.util.KerberosName; import org.apache.hive.service.auth.AuthenticationProviderFactory; import org.apache.hive.service.auth.AuthenticationProviderFactory.AuthMethods; import org.apache.hive.service.auth.HiveAuthFactory; @@ -237,19 +238,31 @@ public String run() throws HttpAuthenticationException { } } - private String getPrincipalWithoutRealm(String fullPrincipal) { - KerberosName fullKerberosName = new KerberosName(fullPrincipal); + private String getPrincipalWithoutRealm(String fullPrincipal) + throws HttpAuthenticationException { + KerberosNameShim fullKerberosName; + try { + fullKerberosName = ShimLoader.getHadoopShims().getKerberosNameShim(fullPrincipal); + } catch (IOException e) { + throw new HttpAuthenticationException(e); + } String serviceName = fullKerberosName.getServiceName(); - String hostName = fullKerberosName.getHostName(); + String hostName = fullKerberosName.getHostName(); String principalWithoutRealm = serviceName; if (hostName != null) { principalWithoutRealm = serviceName + "/" + hostName; } return principalWithoutRealm; } - - private String getPrincipalWithoutRealmAndHost(String fullPrincipal) { - KerberosName fullKerberosName = new KerberosName(fullPrincipal); + + private String getPrincipalWithoutRealmAndHost(String fullPrincipal) + throws HttpAuthenticationException { + KerberosNameShim fullKerberosName; + try { + fullKerberosName = ShimLoader.getHadoopShims().getKerberosNameShim(fullPrincipal); + } catch (IOException e) { + throw new HttpAuthenticationException(e); + } return fullKerberosName.getServiceName(); } } diff --git a/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java b/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java index a353a463ce41..52f02c1a7915 100644 --- a/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java +++ b/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java @@ -59,6 +59,7 @@ import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil; +import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.mapred.ClusterStatus; import org.apache.hadoop.mapred.FileInputFormat; @@ -928,4 +929,10 @@ public boolean supportTrashFeature() { public Path getCurrentTrashPath(Configuration conf, FileSystem fs) { return null; } + + @Override + public KerberosNameShim getKerberosNameShim(String name) throws IOException { + // Not supported + return null; + } } diff --git a/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java b/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java index 030cb754e404..07946df1b0fc 100644 --- a/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java +++ b/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java @@ -60,6 +60,7 @@ import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.hadoop.mapreduce.TaskAttemptID; import org.apache.hadoop.mapreduce.TaskID; +import org.apache.hadoop.security.KerberosName; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.Progressable; import org.apache.hadoop.util.VersionInfo; @@ -546,4 +547,44 @@ public boolean supportTrashFeature() { public Path getCurrentTrashPath(Configuration conf, FileSystem fs) { return null; } + + /** + * Returns a shim to wrap KerberosName + */ + @Override + public KerberosNameShim getKerberosNameShim(String name) throws IOException { + return new KerberosNameShim(name); + } + + /** + * Shim for KerberosName + */ + public class KerberosNameShim implements HadoopShimsSecure.KerberosNameShim { + + private KerberosName kerberosName; + + public KerberosNameShim(String name) { + kerberosName = new KerberosName(name); + } + + public String getDefaultRealm() { + return kerberosName.getDefaultRealm(); + } + + public String getServiceName() { + return kerberosName.getServiceName(); + } + + public String getHostName() { + return kerberosName.getHostName(); + } + + public String getRealm() { + return kerberosName.getRealm(); + } + + public String getShortName() throws IOException { + return kerberosName.getShortName(); + } + } } diff --git a/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java b/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java index 073110835cf0..9829c1b54ed2 100644 --- a/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java +++ b/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java @@ -72,6 +72,7 @@ import org.apache.hadoop.mapreduce.task.JobContextImpl; import org.apache.hadoop.mapreduce.task.TaskAttemptContextImpl; import org.apache.hadoop.net.NetUtils; +import org.apache.hadoop.security.authentication.util.KerberosName; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.Progressable; import org.apache.tez.test.MiniTezCluster; @@ -847,4 +848,44 @@ public Path getCurrentTrashPath(Configuration conf, FileSystem fs) { TrashPolicy tp = TrashPolicy.getInstance(conf, fs, fs.getHomeDirectory()); return tp.getCurrentTrashDir(); } + + /** + * Returns a shim to wrap KerberosName + */ + @Override + public KerberosNameShim getKerberosNameShim(String name) throws IOException { + return new KerberosNameShim(name); + } + + /** + * Shim for KerberosName + */ + public class KerberosNameShim implements HadoopShimsSecure.KerberosNameShim { + + private KerberosName kerberosName; + + public KerberosNameShim(String name) { + kerberosName = new KerberosName(name); + } + + public String getDefaultRealm() { + return kerberosName.getDefaultRealm(); + } + + public String getServiceName() { + return kerberosName.getServiceName(); + } + + public String getHostName() { + return kerberosName.getHostName(); + } + + public String getRealm() { + return kerberosName.getRealm(); + } + + public String getShortName() throws IOException { + return kerberosName.getShortName(); + } + } } diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java index 4fcaa1eb6d4b..d56795f7be1c 100644 --- a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java +++ b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java @@ -731,4 +731,21 @@ public void checkFileAccess(FileSystem fs, FileStatus status, FsAction action) * @return Path to HDFS trash, if current hadoop supports trash feature. Null otherwise. */ Path getCurrentTrashPath(Configuration conf, FileSystem fs); + + /** + * Returns a shim to wrap KerberosName + */ + public KerberosNameShim getKerberosNameShim(String name) throws IOException; + + /** + * Shim for KerberosName + */ + public interface KerberosNameShim { + public String getDefaultRealm(); + public String getServiceName(); + public String getHostName(); + public String getRealm(); + public String getShortName() throws IOException; + } + } From ee2fa8639afaf04cc5489428064dd35cc45c10d8 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Mon, 6 Oct 2014 17:42:57 +0000 Subject: [PATCH 064/339] HIVE-8340: HiveServer2 service doesn't stop backend jvm process, which prevents follow-up service start. (Xiaobing Zhou reviewed by Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629717 13f79535-47bb-0310-9956-ffa450edef68 --- bin/ext/hiveserver2.cmd | 16 ++-------------- bin/hive.cmd | 3 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 4 +++- .../hadoop/hive/ql/exec/mr/MapredLocalTask.java | 12 ++++++++++++ 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/bin/ext/hiveserver2.cmd b/bin/ext/hiveserver2.cmd index a5f3bb5eac6e..dc3bba367741 100644 --- a/bin/ext/hiveserver2.cmd +++ b/bin/ext/hiveserver2.cmd @@ -59,8 +59,6 @@ if [%1]==[hiveserver2_help] goto :hiveserver2_help if [%1]==[hiveserver2_catservice] goto :hiveserver2_catservice -if [%1]==[hiveserver2_catcmd] goto :hiveserver2_catcmd - :hiveserver2 echo "Starting Hive Thrift Server" @@ -78,21 +76,11 @@ goto :EOF @echo ^HiveServer2^ @echo ^HiveServer2^ @echo ^Hadoop HiveServer2 Service^ -@echo ^%SystemRoot%\system32\cmd.exe^ -@echo ^/c %HIVE_BIN_PATH%\ext\hs2service.cmd ^ +@echo ^%JAVA_HOME%\bin\java^ +@echo ^%JAVA_HEAP_MAX% %HADOOP_OPTS% -classpath %CLASSPATH%;%HIVE_HBASE_PATH% %CLASS% -hiveconf hive.hadoop.classpath=%HIVE_LIB%\* -hiveconf hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory -hiveconf hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator -hiveconf hive.metastore.uris=" " %HIVE_OPTS%^ @echo ^ goto :EOF - -:hiveserver2_catcmd -if not defined HADOOP_CLASSPATH ( - @echo set HADOOP_CLASSPATH=%HIVE_LIB%\* - ) else ( - @echo set HADOOP_CLASSPATH=%HADOOP_CLASSPATH%;%HIVE_LIB%\* - ) -@echo %JAVA_HOME%\bin\java %JAVA_HEAP_MAX% %HADOOP_OPTS% -classpath %CLASSPATH%;%HIVE_HBASE_PATH% %CLASS% -hiveconf hive.metastore.uris=" " -hiveconf hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory -hiveconf hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator %HIVE_OPTS% -goto :EOF - :AddToHiveHbasePath if not defined HIVE_HBASE_PATH ( set HIVE_HBASE_PATH=%1 diff --git a/bin/hive.cmd b/bin/hive.cmd index c2e985356abd..ba7e4435dd23 100644 --- a/bin/hive.cmd +++ b/bin/hive.cmd @@ -284,9 +284,6 @@ if defined CATSERVICE ( ) else ( call %HADOOP_HOME%\libexec\hadoop-config.cmd ) - if %TORUN% == hiveserver2 ( - call %HIVE_BIN_PATH%\ext\hiveserver2.cmd hiveserver2_catcmd > %HIVE_BIN_PATH%\ext\hs2service.cmd - ) call %HIVE_BIN_PATH%\ext\%TORUN%.cmd %TORUN%%CATSERVICE% %* goto :EOF ) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 3fe67b22980b..03d60e6fccfb 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1721,8 +1721,10 @@ public static enum ConfVars { HIVE_VECTORIZATION_GROUPBY_FLUSH_PERCENT("hive.vectorized.groupby.flush.percent", (float) 0.1, "Percent of entries in the group by aggregation hash flushed when the memory threshold is exceeded."), - HIVE_TYPE_CHECK_ON_INSERT("hive.typecheck.on.insert", true, ""), + HIVE_HADOOP_CLASSPATH("hive.hadoop.classpath", null, + "For Windows OS, we need to pass HIVE_HADOOP_CLASSPATH Java parameter while starting HiveServer2 \n" + + "using \"-hiveconf hive.hadoop.classpath=%HIVE_LIB%\"."), HIVE_RPC_QUERY_PLAN("hive.rpc.query.plan", false, "Whether to send the query plan via local resource or RPC"), diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java index 79da5a055dae..06763129533c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java @@ -238,6 +238,18 @@ public int executeInChildVM(DriverContext driverContext) { variables.put(HADOOP_OPTS_KEY, hadoopOpts); } + //For Windows OS, we need to pass HIVE_HADOOP_CLASSPATH Java parameter while starting + //Hiveserver2 using "-hiveconf hive.hadoop.classpath=%HIVE_LIB%". This is to combine path(s). + if (HiveConf.getVar(conf, HiveConf.ConfVars.HIVE_HADOOP_CLASSPATH)!= null) + { + if (variables.containsKey("HADOOP_CLASSPATH")) + { + variables.put("HADOOP_CLASSPATH", variables.get("HADOOP_CLASSPATH") + ";" + HiveConf.getVar(conf, HiveConf.ConfVars.HIVE_HADOOP_CLASSPATH)); + } else { + variables.put("HADOOP_CLASSPATH", HiveConf.getVar(conf, HiveConf.ConfVars.HIVE_HADOOP_CLASSPATH)); + } + } + if(variables.containsKey(MapRedTask.HIVE_DEBUG_RECURSIVE)) { MapRedTask.configureDebugVariablesForChildJVM(variables); } From 266bc76c3618f9ab074bd2360b27c70826bd0468 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Mon, 6 Oct 2014 18:20:38 +0000 Subject: [PATCH 065/339] HIVE-8336: Update pom, now that Optiq is renamed to Calcite (Julian Hyde, reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1629725 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hadoop/hive/conf/HiveConf.java | 2 +- ql/pom.xml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 03d60e6fccfb..f2c8ba475b68 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -641,7 +641,7 @@ public static enum ConfVars { "How many rows in the joining tables (except the streaming table) should be cached in memory."), // CBO related - HIVE_CBO_ENABLED("hive.cbo.enable", false, "Flag to control enabling Cost Based Optimizations using Optiq framework."), + HIVE_CBO_ENABLED("hive.cbo.enable", false, "Flag to control enabling Cost Based Optimizations using Calcite framework."), // hive.mapjoin.bucket.cache.size has been replaced by hive.smbjoin.cache.row, // need to remove by hive .13. Also, do not change default (see SMB operator) diff --git a/ql/pom.xml b/ql/pom.xml index 3507411652e1..2243f1c7c0bf 100644 --- a/ql/pom.xml +++ b/ql/pom.xml @@ -28,7 +28,7 @@ Hive Query Language - 0.9.1-incubating-SNAPSHOT + 0.9.1-incubating-SNAPSHOT .. @@ -183,9 +183,9 @@ ${datanucleus-core.version} - org.apache.optiq - optiq-core - ${optiq.version} + org.apache.calcite + calcite-core + ${calcite.version} From acc11fb8c09755233bc61aa8e5b229b8a6631e56 Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Wed, 8 Oct 2014 21:17:10 +0000 Subject: [PATCH 078/339] HIVE-7917: Re-apply change from HIVE-7158, set hive.exec.reducers.max to a high prime number. (Gopal V, reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630236 13f79535-47bb-0310-9956-ffa450edef68 --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index f2c8ba475b68..0f8d1096e23e 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -240,9 +240,9 @@ public static enum ConfVars { "The compression codec and other options are determined from Hadoop config variables mapred.output.compress*"), COMPRESSINTERMEDIATECODEC("hive.intermediate.compression.codec", "", ""), COMPRESSINTERMEDIATETYPE("hive.intermediate.compression.type", "", ""), - BYTESPERREDUCER("hive.exec.reducers.bytes.per.reducer", (long) (1000 * 1000 * 1000), - "size per reducer.The default is 1G, i.e if the input size is 10G, it will use 10 reducers."), - MAXREDUCERS("hive.exec.reducers.max", 999, + BYTESPERREDUCER("hive.exec.reducers.bytes.per.reducer", (long) (256 * 1000 * 1000), + "size per reducer.The default is 256Mb, i.e if the input size is 1G, it will use 4 reducers."), + MAXREDUCERS("hive.exec.reducers.max", 1009, "max number of reducers will be used. If the one specified in the configuration parameter mapred.reduce.tasks is\n" + "negative, Hive will use this one as the max number of reducers when automatically determine number of reducers."), PREEXECHOOKS("hive.exec.pre.hooks", "", From f72976cc844b86993d2e280137bc558ea059dc3c Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 8 Oct 2014 23:03:35 +0000 Subject: [PATCH 079/339] HIVE-8393: Handle SIGINT on Tez (Gunther Hagleitner, reviewed by Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630249 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/cli/CliDriver.java | 2 + .../hive/ql/exec/tez/TezJobExecHelper.java | 49 +++++++++++++++++++ .../hive/ql/exec/tez/TezJobMonitor.java | 22 ++++++--- 3 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobExecHelper.java diff --git a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java index 17ef2db4f298..f0aee668e112 100644 --- a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java +++ b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java @@ -60,6 +60,7 @@ import org.apache.hadoop.hive.ql.exec.FunctionRegistry; import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.exec.mr.HadoopJobExecHelper; +import org.apache.hadoop.hive.ql.exec.tez.TezJobExecHelper; import org.apache.hadoop.hive.ql.parse.HiveParser; import org.apache.hadoop.hive.ql.parse.VariableSubstitution; import org.apache.hadoop.hive.ql.processors.CommandProcessor; @@ -384,6 +385,7 @@ public void handle(Signal signal) { // First, kill any running MR jobs HadoopJobExecHelper.killRunningJobs(); + TezJobExecHelper.killRunningJobs(); HiveInterruptUtils.interrupt(); } }); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobExecHelper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobExecHelper.java new file mode 100644 index 000000000000..3eb954dc1813 --- /dev/null +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobExecHelper.java @@ -0,0 +1,49 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.exec.tez; + +import java.lang.reflect.Method; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * TezJobExecHelper is a utility to safely call Tez functionality from + * common code paths. It will check if tez is available/installed before + * invoking the code. + */ +public class TezJobExecHelper { + + private static final Log LOG = LogFactory.getLog(TezJobExecHelper.class.getName()); + + public static void killRunningJobs() { + try { + Class.forName("org.apache.tez.dag.api.DAG"); + + // we have tez installed + ClassLoader classLoader = TezJobExecHelper.class.getClassLoader(); + Method method = classLoader.loadClass("org.apache.hadoop.hive.ql.exec.tez.TezJobMonitor") + .getMethod("killRunningJobs"); + method.invoke(null, null); + } + catch (Exception e) { + // It is not available do nothing + LOG.debug("Could not stop tez dags: ", e); + } + } +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java index 48c6b6add0cb..9bcdeedcff5b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java @@ -68,12 +68,7 @@ public class TezJobMonitor { @Override public void run() { for (DAGClient c: shutdownList) { - try { - System.err.println("Trying to shutdown DAG"); - c.tryKillDAG(); - } catch (Exception e) { - // ignore - } + TezJobMonitor.killRunningJobs(); } try { for (TezSessionState s: TezSessionState.getOpenSessions()) { @@ -212,6 +207,21 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, return rc; } + /** + * killRunningJobs tries to terminate execution of all + * currently running tez queries. No guarantees, best effort only. + */ + public static void killRunningJobs() { + for (DAGClient c: shutdownList) { + try { + System.err.println("Trying to shutdown DAG"); + c.tryKillDAG(); + } catch (Exception e) { + // ignore + } + } + } + private String printStatus(Map progressMap, String lastReport, LogHelper console) { StringBuffer reportBuffer = new StringBuffer(); From 3e0ff4318ed4858bc133c8922f9101454faa22ca Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 8 Oct 2014 23:19:26 +0000 Subject: [PATCH 080/339] HIVE-8344: Hive on Tez sets mapreduce.framework.name to yarn-tez (Gunther Hagleitner, reviewed by Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630253 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java | 9 +++++++++ .../apache/hadoop/hive/ql/exec/tez/TezSessionState.java | 5 ----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java index 98cf2a795c49..4e3df75c614f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java @@ -56,6 +56,8 @@ import org.apache.hadoop.hive.ql.exec.TableScanOperator; import org.apache.hadoop.hive.ql.exec.Task; import org.apache.hadoop.hive.ql.exec.Utilities; +import org.apache.hadoop.hive.ql.exec.tez.TezSessionState; +import org.apache.hadoop.hive.ql.exec.tez.TezSessionPoolManager; import org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; import org.apache.hadoop.hive.ql.io.HiveKey; import org.apache.hadoop.hive.ql.io.HiveOutputFormatImpl; @@ -416,6 +418,13 @@ public int execute(DriverContext driverContext) { Utilities.createTmpDirs(job, mWork); Utilities.createTmpDirs(job, rWork); + SessionState ss = SessionState.get(); + if (HiveConf.getVar(job, HiveConf.ConfVars.HIVE_EXECUTION_ENGINE).equals("tez") + && ss != null) { + TezSessionState session = ss.getTezSession(); + TezSessionPoolManager.getInstance().close(session, true); + } + // Finally SUBMIT the JOB! rj = jc.submitJob(job); // replace it back diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java index 22ecac519da5..110b80ae55fc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java @@ -207,11 +207,6 @@ public void open(HiveConf conf, String[] additionalFiles) } catch(InterruptedException ie) { //ignore } - // In case we need to run some MR jobs, we'll run them under tez MR emulation. The session - // id is used for tez to reuse the current session rather than start a new one. - conf.set("mapreduce.framework.name", "yarn-tez"); - conf.set("mapreduce.tez.session.tokill-application-id", - session.getAppMasterApplicationId().toString()); openSessions.add(this); } From ee77264e90c4d10559b5dbe40d1a8d80baadecfb Mon Sep 17 00:00:00 2001 From: Szehon Ho Date: Wed, 8 Oct 2014 23:40:43 +0000 Subject: [PATCH 081/339] HIVE-8363: AccumuloStorageHandler compile failure hadoop-1 (Josh Elser via Szehon) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630254 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/accumulo/columns/ColumnMapper.java | 2 +- .../apache/hadoop/hive/accumulo/columns/TestColumnMapper.java | 2 +- .../hive/accumulo/serde/FirstCharAccumuloCompositeRowId.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/columns/ColumnMapper.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/columns/ColumnMapper.java index ff9db46e6364..0498baba1eb2 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/columns/ColumnMapper.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/columns/ColumnMapper.java @@ -20,11 +20,11 @@ import java.util.Collections; import java.util.List; +import org.apache.commons.lang.StringUtils; import org.apache.hadoop.hive.accumulo.AccumuloHiveConstants; import org.apache.hadoop.hive.accumulo.serde.TooManyAccumuloColumnsException; import org.apache.hadoop.hive.serde.serdeConstants; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; -import org.apache.hadoop.util.StringUtils; import org.apache.log4j.Logger; import com.google.common.base.Preconditions; diff --git a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/columns/TestColumnMapper.java b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/columns/TestColumnMapper.java index e5c1e61bb3cd..e5f1b97bbdad 100644 --- a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/columns/TestColumnMapper.java +++ b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/columns/TestColumnMapper.java @@ -20,12 +20,12 @@ import java.util.Iterator; import java.util.List; +import org.apache.commons.lang.StringUtils; import org.apache.hadoop.hive.accumulo.AccumuloHiveConstants; import org.apache.hadoop.hive.accumulo.serde.TooManyAccumuloColumnsException; import org.apache.hadoop.hive.serde.serdeConstants; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; -import org.apache.hadoop.util.StringUtils; import org.junit.Assert; import org.junit.Test; diff --git a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/serde/FirstCharAccumuloCompositeRowId.java b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/serde/FirstCharAccumuloCompositeRowId.java index e047ae56f8a2..8c1ec8d78128 100644 --- a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/serde/FirstCharAccumuloCompositeRowId.java +++ b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/serde/FirstCharAccumuloCompositeRowId.java @@ -19,10 +19,10 @@ import java.util.Arrays; import java.util.Properties; +import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.serde2.lazy.ByteArrayRef; import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazySimpleStructObjectInspector; -import org.apache.hadoop.util.StringUtils; import org.apache.log4j.Logger; /** From b3a57e2e82edbe78c06d19960932d9af1c55321b Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Thu, 9 Oct 2014 04:59:57 +0000 Subject: [PATCH 082/339] HIVE-8288: HiveServer2 dynamic discovery should create znodes organized by version number & add support for removing server uri's of a particular version from the server script. (Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630281 13f79535-47bb-0310-9956-ffa450edef68 --- bin/ext/hiveserver2.cmd | 1 - bin/ext/hiveserver2.sh | 1 - .../hive/service/server/HiveServer2.java | 208 ++++++++++++++++-- .../server/ServerOptionsProcessor.java | 91 -------- .../server/TestServerOptionsProcessor.java | 9 +- 5 files changed, 197 insertions(+), 113 deletions(-) delete mode 100644 service/src/java/org/apache/hive/service/server/ServerOptionsProcessor.java diff --git a/bin/ext/hiveserver2.cmd b/bin/ext/hiveserver2.cmd index dc3bba367741..796c16a72172 100644 --- a/bin/ext/hiveserver2.cmd +++ b/bin/ext/hiveserver2.cmd @@ -60,7 +60,6 @@ if [%1]==[hiveserver2_help] goto :hiveserver2_help if [%1]==[hiveserver2_catservice] goto :hiveserver2_catservice :hiveserver2 - echo "Starting Hive Thrift Server" @rem hadoop 20 or newer - skip the aux_jars option and hiveconf call %HIVE_BIN_PATH%\ext\util\execHiveCmd.cmd %CLASS% diff --git a/bin/ext/hiveserver2.sh b/bin/ext/hiveserver2.sh index 45d7893a3a09..42d3d798733e 100644 --- a/bin/ext/hiveserver2.sh +++ b/bin/ext/hiveserver2.sh @@ -17,7 +17,6 @@ THISSERVICE=hiveserver2 export SERVICE_LIST="${SERVICE_LIST}${THISSERVICE} " hiveserver2() { - echo "Starting HiveServer2" CLASS=org.apache.hive.service.server.HiveServer2 if $cygwin; then HIVE_LIB=`cygpath -w "$HIVE_LIB"` diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java b/service/src/java/org/apache/hive/service/server/HiveServer2.java index 89876d55717c..8691fcce352c 100644 --- a/service/src/java/org/apache/hive/service/server/HiveServer2.java +++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java @@ -19,7 +19,15 @@ package org.apache.hive.service.server; import java.nio.charset.Charset; +import java.util.List; +import java.util.Properties; +import org.apache.commons.cli.GnuParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.OptionBuilder; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.common.LogUtils; @@ -31,7 +39,6 @@ import org.apache.hive.common.util.HiveStringUtils; import org.apache.hive.common.util.HiveVersionInfo; import org.apache.hive.service.CompositeService; -import org.apache.hive.service.ServiceException; import org.apache.hive.service.cli.CLIService; import org.apache.hive.service.cli.thrift.ThriftBinaryCLIService; import org.apache.hive.service.cli.thrift.ThriftCLIService; @@ -124,12 +131,12 @@ private void addServerInstanceToZooKeeper(HiveConf hiveConf) throws Exception { } } // Create a znode under the rootNamespace parent for this instance of the server - // Znode name: server-host:port-versionInfo-sequence + // Znode name: serverUri=host:port;version=versionInfo;sequence=sequenceNumber try { String znodePath = ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + rootNamespace - + ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + "server-" + instanceURI + "-" - + HiveVersionInfo.getVersion() + "-"; + + ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + "serverUri=" + instanceURI + ";" + + "version=" + HiveVersionInfo.getVersion() + ";" + "sequence="; znodePath = zooKeeperClient.create(znodePath, znodeDataUTF8, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL); @@ -223,6 +230,7 @@ public synchronized void stop() { private static void startHiveServer2() throws Throwable { long attempts = 0, maxAttempts = 1; while (true) { + LOG.info("Starting HiveServer2"); HiveConf hiveConf = new HiveConf(); maxAttempts = hiveConf.getLongVar(HiveConf.ConfVars.HIVE_SERVER2_MAX_START_ATTEMPTS); HiveServer2 server = null; @@ -266,31 +274,203 @@ private static void startHiveServer2() throws Throwable { } } + /** + * Remove all znodes corresponding to the given version number from ZooKeeper + * + * @param versionNumber + * @throws Exception + */ + static void deleteServerInstancesFromZooKeeper(String versionNumber) throws Exception { + HiveConf hiveConf = new HiveConf(); + int zooKeeperSessionTimeout = + hiveConf.getIntVar(HiveConf.ConfVars.HIVE_ZOOKEEPER_SESSION_TIMEOUT); + String zooKeeperEnsemble = ZooKeeperHiveHelper.getQuorumServers(hiveConf); + String rootNamespace = hiveConf.getVar(HiveConf.ConfVars.HIVE_SERVER2_ZOOKEEPER_NAMESPACE); + ZooKeeper zooKeeperClient = + new ZooKeeper(zooKeeperEnsemble, zooKeeperSessionTimeout, + new ZooKeeperHiveHelper.DummyWatcher()); + // Get all znode paths + List znodePaths = + zooKeeperClient.getChildren(ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + rootNamespace, + false); + // Now for each path that is for the given versionNumber, delete the znode from ZooKeeper + for (String znodePath : znodePaths) { + if (znodePath.contains("version=" + versionNumber + ";")) { + zooKeeperClient.delete(ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + rootNamespace + + ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + znodePath, -1); + } + } + } + public static void main(String[] args) { HiveConf.setLoadHiveServer2Config(true); try { ServerOptionsProcessor oproc = new ServerOptionsProcessor("hiveserver2"); - if (!oproc.process(args)) { - System.err.println("Error starting HiveServer2 with given arguments"); - System.exit(-1); - } + ServerOptionsProcessorResponse oprocResponse = oproc.parse(args); // NOTE: It is critical to do this here so that log4j is reinitialized // before any of the other core hive classes are loaded String initLog4jMessage = LogUtils.initHiveLog4j(); LOG.debug(initLog4jMessage); - HiveStringUtils.startupShutdownMessage(HiveServer2.class, args, LOG); - // log debug message from "oproc" after log4j initialize properly + + // Log debug message from "oproc" after log4j initialize properly LOG.debug(oproc.getDebugMessage().toString()); - startHiveServer2(); + // Call the executor which will execute the appropriate command based on the parsed options + oprocResponse.getServerOptionsExecutor().execute(); } catch (LogInitializationException e) { LOG.error("Error initializing log: " + e.getMessage(), e); System.exit(-1); - } catch (Throwable t) { - LOG.fatal("Error starting HiveServer2", t); - System.exit(-1); + } + } + + /** + * ServerOptionsProcessor. + * Process arguments given to HiveServer2 (-hiveconf property=value) + * Set properties in System properties + * Create an appropriate response object, + * which has executor to execute the appropriate command based on the parsed options. + */ + static class ServerOptionsProcessor { + private final Options options = new Options(); + private org.apache.commons.cli.CommandLine commandLine; + private final String serverName; + private StringBuilder debugMessage = new StringBuilder(); + + @SuppressWarnings("static-access") + ServerOptionsProcessor(String serverName) { + this.serverName = serverName; + // -hiveconf x=y + options.addOption(OptionBuilder + .withValueSeparator() + .hasArgs(2) + .withArgName("property=value") + .withLongOpt("hiveconf") + .withDescription("Use value for given property") + .create()); + // -deregister + options.addOption(OptionBuilder + .hasArgs(1) + .withArgName("versionNumber") + .withLongOpt("deregister") + .withDescription("Deregister all instances of given version from dynamic service discovery") + .create()); + options.addOption(new Option("H", "help", false, "Print help information")); + } + + ServerOptionsProcessorResponse parse(String[] argv) { + try { + commandLine = new GnuParser().parse(options, argv); + // Process --hiveconf + // Get hiveconf param values and set the System property values + Properties confProps = commandLine.getOptionProperties("hiveconf"); + for (String propKey : confProps.stringPropertyNames()) { + // save logging message for log4j output latter after log4j initialize properly + debugMessage.append("Setting " + propKey + "=" + confProps.getProperty(propKey) + ";\n"); + System.setProperty(propKey, confProps.getProperty(propKey)); + } + + // Process --help + if (commandLine.hasOption('H')) { + return new ServerOptionsProcessorResponse(new HelpOptionExecutor(serverName, options)); + } + + // Process --deregister + if (commandLine.hasOption("deregister")) { + return new ServerOptionsProcessorResponse(new DeregisterOptionExecutor( + commandLine.getOptionValue("deregister"))); + } + } catch (ParseException e) { + // Error out & exit - we were not able to parse the args successfully + System.err.println("Error starting HiveServer2 with given arguments: "); + System.err.println(e.getMessage()); + System.exit(-1); + } + // Default executor, when no option is specified + return new ServerOptionsProcessorResponse(new StartOptionExecutor()); + } + + StringBuilder getDebugMessage() { + return debugMessage; + } + } + + /** + * The response sent back from {@link ServerOptionsProcessor#parse(String[])} + */ + static class ServerOptionsProcessorResponse { + private ServerOptionsExecutor serverOptionsExecutor; + + ServerOptionsProcessorResponse(ServerOptionsExecutor serverOptionsExecutor) { + this.serverOptionsExecutor = serverOptionsExecutor; + } + + ServerOptionsExecutor getServerOptionsExecutor() { + return serverOptionsExecutor; + } + } + + /** + * The executor interface for running the appropriate HiveServer2 command based on parsed options + */ + static interface ServerOptionsExecutor { + public void execute(); + } + + /** + * HelpOptionExecutor: executes the --help option by printing out the usage + */ + static class HelpOptionExecutor implements ServerOptionsExecutor { + private final Options options; + private final String serverName; + + HelpOptionExecutor(String serverName, Options options) { + this.options = options; + this.serverName = serverName; + } + + public void execute() { + new HelpFormatter().printHelp(serverName, options); + System.exit(0); + } + } + + /** + * StartOptionExecutor: starts HiveServer2. + * This is the default executor, when no option is specified. + */ + static class StartOptionExecutor implements ServerOptionsExecutor { + public void execute() { + try { + startHiveServer2(); + } catch (Throwable t) { + LOG.fatal("Error starting HiveServer2", t); + System.exit(-1); + } + } + } + + /** + * DeregisterOptionExecutor: executes the --deregister option by + * deregistering all HiveServer2 instances from ZooKeeper of a specific version. + */ + static class DeregisterOptionExecutor implements ServerOptionsExecutor { + private final String versionNumber; + + DeregisterOptionExecutor(String versionNumber) { + this.versionNumber = versionNumber; + } + + public void execute() { + try { + deleteServerInstancesFromZooKeeper(versionNumber); + } catch (Exception e) { + LOG.fatal("Error deregistering HiveServer2 instances for version: " + versionNumber + + " from ZooKeeper", e); + System.exit(-1); + } + System.exit(0); } } } diff --git a/service/src/java/org/apache/hive/service/server/ServerOptionsProcessor.java b/service/src/java/org/apache/hive/service/server/ServerOptionsProcessor.java deleted file mode 100644 index bbb2a42311e3..000000000000 --- a/service/src/java/org/apache/hive/service/server/ServerOptionsProcessor.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.hive.service.server; - -import java.util.Properties; - -import org.apache.commons.cli.GnuParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Option; -import org.apache.commons.cli.OptionBuilder; -import org.apache.commons.cli.Options; -import org.apache.commons.cli.ParseException; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * ServerOptionsProcessor. - * Process arguments given to servers (-hiveconf property=value) - * Set properties in System properties - */ -public class ServerOptionsProcessor { - protected static final Log LOG = LogFactory.getLog(ServerOptionsProcessor.class.getName()); - private final Options options = new Options(); - private org.apache.commons.cli.CommandLine commandLine; - private final String serverName; - private StringBuilder debugMessage = new StringBuilder(); - - - @SuppressWarnings("static-access") - public ServerOptionsProcessor(String serverName) { - this.serverName = serverName; - // -hiveconf x=y - options.addOption(OptionBuilder - .withValueSeparator() - .hasArgs(2) - .withArgName("property=value") - .withLongOpt("hiveconf") - .withDescription("Use value for given property") - .create()); - - options.addOption(new Option("H", "help", false, "Print help information")); - - } - - public boolean process(String[] argv) { - try { - commandLine = new GnuParser().parse(options, argv); - if (commandLine.hasOption('H')) { - printUsage(); - return false; - } - //get hiveconf param values and set the System property values - Properties confProps = commandLine.getOptionProperties("hiveconf"); - for (String propKey : confProps.stringPropertyNames()) { - //save logging message for log4j output latter after log4j initialize properly - debugMessage.append("Setting " + propKey + "=" + confProps.getProperty(propKey) + ";\n"); - System.setProperty(propKey, confProps.getProperty(propKey)); - } - } catch (ParseException e) { - System.err.println(e.getMessage()); - printUsage(); - return false; - } - return true; - } - - public StringBuilder getDebugMessage() { - return debugMessage; - } - - private void printUsage() { - new HelpFormatter().printHelp(serverName, options); - } - -} diff --git a/service/src/test/org/apache/hive/service/server/TestServerOptionsProcessor.java b/service/src/test/org/apache/hive/service/server/TestServerOptionsProcessor.java index 1aea0b8d7609..4b1d25e4dd09 100644 --- a/service/src/test/org/apache/hive/service/server/TestServerOptionsProcessor.java +++ b/service/src/test/org/apache/hive/service/server/TestServerOptionsProcessor.java @@ -21,6 +21,8 @@ import org.junit.Assert; import org.junit.Test; +import org.apache.hive.service.server.HiveServer2.ServerOptionsProcessor; + /** * Test ServerOptionsProcessor * @@ -39,17 +41,12 @@ public void test() { null, System.getProperty(key)); + optProcessor.parse(args); - boolean isSuccess = optProcessor.process(args); - Assert.assertTrue("options processor result", isSuccess); Assert.assertEquals( "checking system property after processing options", value, System.getProperty(key)); - - - - } } From b2b4ce57c455e381d7301e142e9a9103f06b18e1 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Thu, 9 Oct 2014 18:35:00 +0000 Subject: [PATCH 083/339] HIVE-8354: HIVE-7156 introduced required dependency on tez (Prasanth J reviewed by Brock Noland) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630549 13f79535-47bb-0310-9956-ffa450edef68 --- .../stats/annotation/StatsRulesProcFactory.java | 17 ++++++----------- .../apache/hadoop/hive/ql/stats/StatsUtils.java | 9 +++++++++ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java index ab7eee8bddff..a147a4510ced 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java @@ -42,7 +42,6 @@ import org.apache.hadoop.hive.ql.exec.RowSchema; import org.apache.hadoop.hive.ql.exec.SelectOperator; import org.apache.hadoop.hive.ql.exec.TableScanOperator; -import org.apache.hadoop.hive.ql.exec.tez.DagUtils; import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.lib.NodeProcessor; import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx; @@ -889,16 +888,12 @@ private boolean checkMapSideAggregation(GroupByOperator gop, GroupByDesc.Mode mode = desc.getMode(); if (mode.equals(GroupByDesc.Mode.HASH)) { - float hashAggMem = conf.getFloatVar( - HiveConf.ConfVars.HIVEMAPAGGRHASHMEMORY); - float hashAggMaxThreshold = conf.getFloatVar( - HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD); - - // get memory for container. May be use mapreduce.map.java.opts instead? - long totalMemory = - DagUtils.getContainerResource(conf).getMemory() * 1000L * 1000L; - long maxMemHashAgg = Math - .round(totalMemory * hashAggMem * hashAggMaxThreshold); + float hashAggMem = conf.getFloatVar(HiveConf.ConfVars.HIVEMAPAGGRHASHMEMORY); + float hashAggMaxThreshold = conf.getFloatVar(HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD); + + // get available map memory + long totalMemory = StatsUtils.getAvailableMemory(conf) * 1000L * 1000L; + long maxMemHashAgg = Math.round(totalMemory * hashAggMem * hashAggMaxThreshold); // estimated number of rows will be product of NDVs long numEstimatedRows = 1; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java index 5143fbe99bb4..eb46e3264fe7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java @@ -29,6 +29,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.common.StatsSetupConst; @@ -86,6 +87,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableStringObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableTimestampObjectInspector; import org.apache.hadoop.io.BytesWritable; +import org.apache.tez.mapreduce.hadoop.MRJobConfig; import com.google.common.base.Joiner; import com.google.common.collect.Lists; @@ -1350,4 +1352,11 @@ private static void getTableAliasFromExprNode(ExprNodeDesc end, } } + + public static long getAvailableMemory(Configuration conf) { + int memory = HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCONTAINERSIZE) > 0 ? + HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCONTAINERSIZE) : + conf.getInt(MRJobConfig.MAP_MEMORY_MB, MRJobConfig.DEFAULT_MAP_MEMORY_MB); + return memory; + } } From f6268efb7be755cf22e50178452a16ef3af387fa Mon Sep 17 00:00:00 2001 From: Brock Noland Date: Thu, 9 Oct 2014 20:29:32 +0000 Subject: [PATCH 084/339] Merge HIVE-8380 - NanoTime class serializes and deserializes Timestamp incorrectly git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630588 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/io/parquet/timestamp/NanoTime.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/timestamp/NanoTime.java b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/timestamp/NanoTime.java index 85cf5e721923..fb2a6c27ac56 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/timestamp/NanoTime.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/timestamp/NanoTime.java @@ -14,6 +14,7 @@ package org.apache.hadoop.hive.ql.io.parquet.timestamp; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import parquet.Preconditions; import parquet.io.api.Binary; @@ -28,7 +29,10 @@ public class NanoTime { public static NanoTime fromBinary(Binary bytes) { Preconditions.checkArgument(bytes.length() == 12, "Must be 12 bytes"); ByteBuffer buf = bytes.toByteBuffer(); - return new NanoTime(buf.getInt(), buf.getLong()); + buf.order(ByteOrder.LITTLE_ENDIAN); + long timeOfDayNanos = buf.getLong(); + int julianDay = buf.getInt(); + return new NanoTime(julianDay, timeOfDayNanos); } public NanoTime(int julianDay, long timeOfDayNanos) { @@ -46,8 +50,9 @@ public long getTimeOfDayNanos() { public Binary toBinary() { ByteBuffer buf = ByteBuffer.allocate(12); - buf.putInt(julianDay); + buf.order(ByteOrder.LITTLE_ENDIAN); buf.putLong(timeOfDayNanos); + buf.putInt(julianDay); buf.flip(); return Binary.fromByteBuffer(buf); } @@ -60,4 +65,4 @@ public void writeValue(RecordConsumer recordConsumer) { public String toString() { return "NanoTime{julianDay="+julianDay+", timeOfDayNanos="+timeOfDayNanos+"}"; } -} \ No newline at end of file +} From 07d06208cb694b8db1f31fd9765cb934fb66426a Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Thu, 9 Oct 2014 22:45:25 +0000 Subject: [PATCH 085/339] HIVE-8407 : [CBO] Handle filters with non-boolean return type (Ashutosh Chauhan via John Pullokkaran) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630610 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 19110ce4a381..e5eb0ace368a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -12225,7 +12225,7 @@ private class OptiqBasedPlanner implements Frameworks.PlannerAction { private RelOptSchema relOptSchema; private SemanticException semanticException; private Map partitionCache; - private AtomicInteger noColsMissingStats = new AtomicInteger(0); + private final AtomicInteger noColsMissingStats = new AtomicInteger(0); List topLevelFieldSchema; // TODO: Do we need to keep track of RR, ColNameToPosMap for every op or @@ -12803,6 +12803,14 @@ private RelNode genTableLogicalPlan(String tableAlias, QB qb) throws SemanticExc private RelNode genFilterRelNode(ASTNode filterExpr, RelNode srcRel) throws SemanticException { ExprNodeDesc filterCondn = genExprNodeDesc(filterExpr, relToHiveRR.get(srcRel)); + if (filterCondn instanceof ExprNodeConstantDesc && + !filterCondn.getTypeString().equals(serdeConstants.BOOLEAN_TYPE_NAME)) { + // queries like select * from t1 where 'foo'; + // Optiq's rule PushFilterThroughProject chokes on it. Arguably, we can insert a cast to + // boolean in such cases, but since Postgres, Oracle and MS SQL server fail on compile time + // for such queries, its an arcane corner case, not worth of adding that complexity. + throw new OptiqSemanticException("Filter expression with non-boolean return type."); + } ImmutableMap hiveColNameOptiqPosMap = this.relToHiveColNameOptiqPosMap .get(srcRel); RexNode convertedFilterExpr = new RexNodeConverter(cluster, srcRel.getRowType(), From 9f885dd164e86f827763559f412b1f979a1d783a Mon Sep 17 00:00:00 2001 From: Prasad Suresh Mujumdar Date: Fri, 10 Oct 2014 06:57:42 +0000 Subject: [PATCH 086/339] HIVE-7932: It may cause NP exception when add accessed columns to ReadEntity (Xiaomeng Huang via Prasad Mujumdar) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630662 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/parse/SemanticAnalyzer.java | 13 +- .../hive/ql/parse/TestColumnAccess.java | 184 ++++++++++++++++++ 2 files changed, 193 insertions(+), 4 deletions(-) create mode 100644 ql/src/test/org/apache/hadoop/hive/ql/parse/TestColumnAccess.java diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index e5eb0ace368a..64377628e7b2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -10048,14 +10048,19 @@ private void putAccessedColumnsToReadEntity(HashSet inputs, ColumnAc Map> tableToColumnAccessMap = columnAccessInfo.getTableToColumnAccessMap(); if (tableToColumnAccessMap != null && !tableToColumnAccessMap.isEmpty()) { for(ReadEntity entity: inputs) { + List cols; switch (entity.getType()) { case TABLE: - entity.getAccessedColumns().addAll( - tableToColumnAccessMap.get(entity.getTable().getCompleteName())); + cols = tableToColumnAccessMap.get(entity.getTable().getCompleteName()); + if (cols != null && !cols.isEmpty()) { + entity.getAccessedColumns().addAll(cols); + } break; case PARTITION: - entity.getAccessedColumns().addAll( - tableToColumnAccessMap.get(entity.getPartition().getTable().getCompleteName())); + cols = tableToColumnAccessMap.get(entity.getPartition().getTable().getCompleteName()); + if (cols != null && !cols.isEmpty()) { + entity.getAccessedColumns().addAll(cols); + } break; default: // no-op diff --git a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestColumnAccess.java b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestColumnAccess.java new file mode 100644 index 000000000000..edcc313cddbd --- /dev/null +++ b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestColumnAccess.java @@ -0,0 +1,184 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.parse; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +import junit.framework.Assert; + +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.ql.CommandNeedRetryException; +import org.apache.hadoop.hive.ql.Driver; +import org.apache.hadoop.hive.ql.QueryPlan; +import org.apache.hadoop.hive.ql.hooks.ReadEntity; +import org.apache.hadoop.hive.ql.session.SessionState; +import org.junit.BeforeClass; +import org.junit.Test; + +public class TestColumnAccess { + + @BeforeClass + public static void Setup() throws CommandNeedRetryException { + Driver driver = createDriver(); + int ret = driver.run("create table t1(id1 int, name1 string)").getResponseCode(); + Assert.assertEquals("Checking command success", 0, ret); + ret = driver.run("create table t2(id2 int, id1 int, name2 string)").getResponseCode(); + Assert.assertEquals("Checking command success", 0, ret); + ret = driver.run("create view v1 as select * from t1").getResponseCode(); + Assert.assertEquals("Checking command success", 0, ret); + } + + @Test + public void testQueryTable1() throws ParseException { + String query = "select * from t1"; + Driver driver = createDriver(); + int rc = driver.compile(query); + Assert.assertEquals("Checking command success", 0, rc); + QueryPlan plan = driver.getPlan(); + // check access columns from ColumnAccessInfo + ColumnAccessInfo columnAccessInfo = plan.getColumnAccessInfo(); + List cols = columnAccessInfo.getTableToColumnAccessMap().get("default@t1"); + Assert.assertNotNull(cols); + Assert.assertEquals(2, cols.size()); + Assert.assertNotNull(cols.contains("id1")); + Assert.assertNotNull(cols.contains("name1")); + + // check access columns from readEntity + Map> tableColsMap = getColsFromReadEntity(plan.getInputs()); + cols = tableColsMap.get("default@t1"); + Assert.assertNotNull(cols); + Assert.assertEquals(2, cols.size()); + Assert.assertNotNull(cols.contains("id1")); + Assert.assertNotNull(cols.contains("name1")); + } + + @Test + public void testJoinTable1AndTable2() throws ParseException { + String query = "select * from t1 join t2 on (t1.id1 = t2.id1)"; + Driver driver = createDriver(); + int rc = driver.compile(query); + Assert.assertEquals("Checking command success", 0, rc); + QueryPlan plan = driver.getPlan(); + // check access columns from ColumnAccessInfo + ColumnAccessInfo columnAccessInfo = plan.getColumnAccessInfo(); + List cols = columnAccessInfo.getTableToColumnAccessMap().get("default@t1"); + Assert.assertNotNull(cols); + Assert.assertEquals(2, cols.size()); + Assert.assertNotNull(cols.contains("id1")); + Assert.assertNotNull(cols.contains("name1")); + cols = columnAccessInfo.getTableToColumnAccessMap().get("default@t2"); + Assert.assertNotNull(cols); + Assert.assertEquals(3, cols.size()); + Assert.assertNotNull(cols.contains("id2")); + Assert.assertNotNull(cols.contains("id1")); + Assert.assertNotNull(cols.contains("name1")); + + + // check access columns from readEntity + Map> tableColsMap = getColsFromReadEntity(plan.getInputs()); + cols = tableColsMap.get("default@t1"); + Assert.assertNotNull(cols); + Assert.assertEquals(2, cols.size()); + Assert.assertNotNull(cols.contains("id1")); + Assert.assertNotNull(cols.contains("name1")); + cols = tableColsMap.get("default@t2"); + Assert.assertNotNull(cols); + Assert.assertEquals(3, cols.size()); + Assert.assertNotNull(cols.contains("id2")); + Assert.assertNotNull(cols.contains("id1")); + Assert.assertNotNull(cols.contains("name1")); + } + + @Test + public void testJoinView1AndTable2() throws ParseException { + String query = "select * from v1 join t2 on (v1.id1 = t2.id1)"; + Driver driver = createDriver(); + int rc = driver.compile(query); + Assert.assertEquals("Checking command success", 0, rc); + QueryPlan plan = driver.getPlan(); + // check access columns from ColumnAccessInfo + ColumnAccessInfo columnAccessInfo = plan.getColumnAccessInfo(); + List cols = columnAccessInfo.getTableToColumnAccessMap().get("default@v1"); + Assert.assertNull(cols); + cols = columnAccessInfo.getTableToColumnAccessMap().get("default@t1"); + Assert.assertNotNull(cols); + Assert.assertEquals(2, cols.size()); + Assert.assertNotNull(cols.contains("id1")); + Assert.assertNotNull(cols.contains("name1")); + cols = columnAccessInfo.getTableToColumnAccessMap().get("default@t2"); + Assert.assertNotNull(cols); + Assert.assertEquals(3, cols.size()); + Assert.assertNotNull(cols.contains("id2")); + Assert.assertNotNull(cols.contains("id1")); + Assert.assertNotNull(cols.contains("name1")); + + + // check access columns from readEntity + Map> tableColsMap = getColsFromReadEntity(plan.getInputs()); + cols = tableColsMap.get("default@v1"); + Assert.assertNull(cols); + cols = tableColsMap.get("default@t1"); + Assert.assertNotNull(cols); + Assert.assertEquals(2, cols.size()); + Assert.assertNotNull(cols.contains("id1")); + Assert.assertNotNull(cols.contains("name1")); + cols = tableColsMap.get("default@t2"); + Assert.assertNotNull(cols); + Assert.assertEquals(3, cols.size()); + Assert.assertNotNull(cols.contains("id2")); + Assert.assertNotNull(cols.contains("id1")); + Assert.assertNotNull(cols.contains("name1")); + } + + private Map> getColsFromReadEntity(HashSet inputs) { + Map> tableColsMap = new HashMap>(); + for(ReadEntity entity: inputs) { + switch (entity.getType()) { + case TABLE: + if (entity.getAccessedColumns() != null && !entity.getAccessedColumns().isEmpty()) { + tableColsMap.put(entity.getTable().getCompleteName(), entity.getAccessedColumns()); + } + break; + case PARTITION: + if (entity.getAccessedColumns() != null && !entity.getAccessedColumns().isEmpty()) { + tableColsMap.put(entity.getPartition().getTable().getCompleteName(), + entity.getAccessedColumns()); + } + break; + default: + // no-op + } + } + return tableColsMap; + } + + private static Driver createDriver() { + HiveConf conf = new HiveConf(Driver.class); + HiveConf.setBoolVar(conf, HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY, false); + conf.setBoolVar(HiveConf.ConfVars.HIVE_STATS_COLLECT_SCANCOLS, true); + SessionState.start(conf); + Driver driver = new Driver(conf); + driver.init(); + return driver; + } + +} From e767f17d10c724b1f1fe0cba9a5614990028782e Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Fri, 10 Oct 2014 16:13:12 +0000 Subject: [PATCH 087/339] HIVE-8367 delete writes records in wrong order in some cases (Alan Gates, reviewed by Eugene Koifman) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630932 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 3 ++- .../hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java | 2 +- .../results/clientpositive/delete_all_partitioned.q.out | 2 -- .../results/clientpositive/tez/delete_all_partitioned.q.out | 2 -- .../results/clientpositive/tez/update_all_partitioned.q.out | 6 ------ .../results/clientpositive/update_all_partitioned.q.out | 6 ------ 6 files changed, 3 insertions(+), 18 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 64377628e7b2..48d334a2bdde 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -6403,7 +6403,8 @@ private void checkAcidConstraints(QB qb, TableDesc tableDesc, conf.setBoolVar(ConfVars.HIVE_VECTORIZATION_ENABLED, false); } LOG.info("Modifying config values for ACID write"); - conf.setBoolVar(ConfVars.HIVEOPTREDUCEDEDUPLICATION, false); + conf.setBoolVar(ConfVars.HIVEOPTREDUCEDEDUPLICATION, true); + conf.setIntVar(ConfVars.HIVEOPTREDUCEDEDUPLICATIONMINREDUCER, 1); conf.setBoolVar(ConfVars.HIVE_HADOOP_SUPPORTS_SUBDIRECTORIES, true); conf.set(AcidUtils.CONF_ACID_KEY, "true"); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java index 14ee3f0ae01f..65f5eaa6b737 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java @@ -236,7 +236,7 @@ private void reparseAndSuperAnalyze(ASTNode tree) throws SemanticException { } // Add a sort by clause so that the row ids come out in the correct order - rewrittenQueryStr.append(" sort by ROW__ID desc "); + rewrittenQueryStr.append(" sort by ROW__ID "); // Parse the rewritten query string Context rewrittenCtx; diff --git a/ql/src/test/results/clientpositive/delete_all_partitioned.q.out b/ql/src/test/results/clientpositive/delete_all_partitioned.q.out index c5149b28b42c..90f8753687b2 100644 --- a/ql/src/test/results/clientpositive/delete_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/delete_all_partitioned.q.out @@ -84,5 +84,3 @@ POSTHOOK: Input: default@acid_dap POSTHOOK: Input: default@acid_dap@ds=today POSTHOOK: Input: default@acid_dap@ds=tomorrow #### A masked pattern was here #### --1071480828 aw724t8c5558x2xneC624 today --1072076362 2uLyD28144vklju213J1mr today diff --git a/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out b/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out index c5149b28b42c..90f8753687b2 100644 --- a/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/delete_all_partitioned.q.out @@ -84,5 +84,3 @@ POSTHOOK: Input: default@acid_dap POSTHOOK: Input: default@acid_dap@ds=today POSTHOOK: Input: default@acid_dap@ds=tomorrow #### A masked pattern was here #### --1071480828 aw724t8c5558x2xneC624 today --1072076362 2uLyD28144vklju213J1mr today diff --git a/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out b/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out index 533dd88aaa1e..286e2ed52755 100644 --- a/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/tez/update_all_partitioned.q.out @@ -85,21 +85,15 @@ POSTHOOK: Input: default@acid_uap@ds=today POSTHOOK: Input: default@acid_uap@ds=tomorrow #### A masked pattern was here #### -1073279343 fred today --1073279343 oj1YrV5Wa today -1073051226 fred today -1072910839 fred today --1072081801 dPkN74F7 today -1072081801 fred today -1072076362 fred today -1071480828 fred today --1071363017 Anj0oF today -1071363017 fred today --1070883071 0ruyd6Y50JpdGRf6HqD today -1070883071 fred today -1070551679 fred today --1070551679 iUR3Q today -1069736047 fred today --1069736047 k17Am8uPHWk02cEf1jet today 762 fred tomorrow 762 fred tomorrow 762 fred tomorrow diff --git a/ql/src/test/results/clientpositive/update_all_partitioned.q.out b/ql/src/test/results/clientpositive/update_all_partitioned.q.out index 533dd88aaa1e..286e2ed52755 100644 --- a/ql/src/test/results/clientpositive/update_all_partitioned.q.out +++ b/ql/src/test/results/clientpositive/update_all_partitioned.q.out @@ -85,21 +85,15 @@ POSTHOOK: Input: default@acid_uap@ds=today POSTHOOK: Input: default@acid_uap@ds=tomorrow #### A masked pattern was here #### -1073279343 fred today --1073279343 oj1YrV5Wa today -1073051226 fred today -1072910839 fred today --1072081801 dPkN74F7 today -1072081801 fred today -1072076362 fred today -1071480828 fred today --1071363017 Anj0oF today -1071363017 fred today --1070883071 0ruyd6Y50JpdGRf6HqD today -1070883071 fred today -1070551679 fred today --1070551679 iUR3Q today -1069736047 fred today --1069736047 k17Am8uPHWk02cEf1jet today 762 fred tomorrow 762 fred tomorrow 762 fred tomorrow From 617cbb2459c95812590aecb8b4aadb2aa1b80cad Mon Sep 17 00:00:00 2001 From: Szehon Ho Date: Fri, 10 Oct 2014 21:26:33 +0000 Subject: [PATCH 088/339] HIVE-8420: TestHadoop20SAuthBridge broken with hadoop-1 (Szehon, reviewed by Gunther) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630994 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename itests/{hive-unit => hive-unit-hadoop2}/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java (100%) diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java b/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java similarity index 100% rename from itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java rename to itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java index f40b7da26a38..b81942a5ee31 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java +++ b/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java @@ -1,3 +1,4 @@ +package org.apache.hadoop.hive.thrift; /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -16,7 +17,6 @@ * limitations under the License. */ -package org.apache.hadoop.hive.thrift; import java.io.ByteArrayInputStream; import java.io.DataInputStream; From bfbc71c808c067d3ce3947e88b9d1d13e6cf113e Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Fri, 10 Oct 2014 21:53:24 +0000 Subject: [PATCH 089/339] HIVE-8408 : hcat cli throws NPE when authorizer using new api is enabled (Thejas Nair, reviewed by Sushanth Sowmyan git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1630997 13f79535-47bb-0310-9956-ffa450edef68 --- .../cli/SemanticAnalysis/CreateTableHook.java | 4 +- .../cli/SemanticAnalysis/HCatAuthUtil.java | 36 ++++++++ .../HCatSemanticAnalyzerBase.java | 4 +- .../SemanticAnalysis/TestHCatAuthUtil.java | 84 +++++++++++++++++++ hcatalog/pom.xml | 9 ++ 5 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatAuthUtil.java create mode 100644 hcatalog/core/src/test/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/TestHCatAuthUtil.java diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/CreateTableHook.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/CreateTableHook.java index 172ff01bc56e..8b6922325e3a 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/CreateTableHook.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/CreateTableHook.java @@ -26,7 +26,6 @@ import org.apache.commons.lang.StringUtils; import org.apache.hadoop.fs.Path; -import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.exec.DDLTask; import org.apache.hadoop.hive.ql.exec.Task; @@ -195,8 +194,7 @@ public void postAnalyze(HiveSemanticAnalyzerHookContext context, //authorize against the table operation so that location permissions can be checked if any - if (HiveConf.getBoolVar(context.getConf(), - HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED)) { + if (HCatAuthUtil.isAuthorizationEnabled(context.getConf())) { authorize(table, Privilege.CREATE); } } catch (HiveException ex) { diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatAuthUtil.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatAuthUtil.java new file mode 100644 index 000000000000..6dce9c4b1d12 --- /dev/null +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatAuthUtil.java @@ -0,0 +1,36 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.hive.hcatalog.cli.SemanticAnalysis; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.ql.session.SessionState; + +final class HCatAuthUtil { + public static boolean isAuthorizationEnabled(Configuration conf) { + // the session state getAuthorizer can return null even if authorization is + // enabled if the V2 api of authorizer in use. + // The additional authorization checks happening in hcatalog are designed to + // work with storage based authorization (on client side). It should not try doing + // additional checks if a V2 authorizer is in use. The reccomended configuration is to + // use storage based authorization in metastore server + return HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED) + && SessionState.get().getAuthorizer() != null; + } +} diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzerBase.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzerBase.java index 0184dc0b2403..5b3ef946613a 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzerBase.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzerBase.java @@ -22,7 +22,6 @@ import java.io.Serializable; import java.util.List; -import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.ql.exec.Task; import org.apache.hadoop.hive.ql.metadata.AuthorizationException; @@ -89,8 +88,7 @@ public void postAnalyze(HiveSemanticAnalyzerHookContext context, protected void authorizeDDL(HiveSemanticAnalyzerHookContext context, List> rootTasks) throws SemanticException { - if (!HiveConf.getBoolVar(context.getConf(), - HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED)) { + if (!HCatAuthUtil.isAuthorizationEnabled(context.getConf())) { return; } diff --git a/hcatalog/core/src/test/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/TestHCatAuthUtil.java b/hcatalog/core/src/test/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/TestHCatAuthUtil.java new file mode 100644 index 000000000000..830dcb8119c2 --- /dev/null +++ b/hcatalog/core/src/test/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/TestHCatAuthUtil.java @@ -0,0 +1,84 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.hive.hcatalog.cli.SemanticAnalysis; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; +import org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider; +import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizer; +import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerFactory; +import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthzPluginException; +import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthzSessionContext; +import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveMetastoreClientFactory; +import org.apache.hadoop.hive.ql.session.SessionState; +import org.junit.Test; +import org.mockito.Mockito; + +/** + * Test HCatAuthUtil + */ +public class TestHCatAuthUtil { + + public static class DummyV2AuthorizerFactory implements HiveAuthorizerFactory { + + @Override + public HiveAuthorizer createHiveAuthorizer(HiveMetastoreClientFactory metastoreClientFactory, + HiveConf conf, HiveAuthenticationProvider hiveAuthenticator, HiveAuthzSessionContext ctx) + throws HiveAuthzPluginException { + return Mockito.mock(HiveAuthorizer.class); + } + } + + /** + * Test with auth enabled and v1 auth + */ + @Test + public void authEnabledV1Auth() throws Exception { + HiveConf hcatConf = new HiveConf(this.getClass()); + hcatConf.setBoolVar(ConfVars.HIVE_AUTHORIZATION_ENABLED, true); + SessionState.start(hcatConf); + assertTrue("hcat auth should be enabled", HCatAuthUtil.isAuthorizationEnabled(hcatConf)); + } + + /** + * Test with auth enabled and v2 auth + */ + @Test + public void authEnabledV2Auth() throws Exception { + HiveConf hcatConf = new HiveConf(this.getClass()); + hcatConf.setBoolVar(ConfVars.HIVE_AUTHORIZATION_ENABLED, true); + hcatConf.setVar(ConfVars.HIVE_AUTHORIZATION_MANAGER, DummyV2AuthorizerFactory.class.getName()); + SessionState.start(hcatConf); + assertFalse("hcat auth should be disabled", HCatAuthUtil.isAuthorizationEnabled(hcatConf)); + } + + /** + * Test with auth disabled + */ + @Test + public void authDisabled() throws Exception { + HiveConf hcatConf = new HiveConf(this.getClass()); + hcatConf.setBoolVar(ConfVars.HIVE_AUTHORIZATION_ENABLED, false); + SessionState.start(hcatConf); + assertFalse("hcat auth should be disabled", HCatAuthUtil.isAuthorizationEnabled(hcatConf)); + } +} diff --git a/hcatalog/pom.xml b/hcatalog/pom.xml index 4b75ef5c7d70..cff3837dd20d 100644 --- a/hcatalog/pom.xml +++ b/hcatalog/pom.xml @@ -46,6 +46,15 @@ streaming + + + org.mockito + mockito-all + ${mockito-all.version} + test + + + hadoop-1 From cdd31df58b7831aa76c0c1ef5ba13b04869bc181 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Sat, 11 Oct 2014 20:15:34 +0000 Subject: [PATCH 090/339] HIVE-6972: jdbc HTTP configuration options should be part of sessionConf part of connection string git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631109 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hive/jdbc/TestJdbcDriver2.java | 39 +++++------- .../org/apache/hive/jdbc/HiveConnection.java | 4 +- jdbc/src/java/org/apache/hive/jdbc/Utils.java | 62 +++++++++++++++++-- 3 files changed, 75 insertions(+), 30 deletions(-) diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java index bfa8c4690727..5c0484fe2ce7 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java @@ -1646,29 +1646,24 @@ public void testDriverProperties() throws SQLException { } private static final String[][] HTTP_URL_PROPERTIES = new String[][] { - {"jdbc:hive2://server:10002/db;" + - "user=foo;password=bar?" + - "hive.server2.transport.mode=http;" + - "hive.server2.thrift.http.path=hs2", "server", "10002", "db", "http", "hs2"}, - {"jdbc:hive2://server:10000/testdb;" + - "user=foo;password=bar?" + - "hive.server2.transport.mode=binary;" + - "hive.server2.thrift.http.path=", "server", "10000", "testdb", "binary", ""}, - }; - - @Test - public void testParseUrlHttpMode() throws SQLException, JdbcUriParseException, - ZooKeeperHiveClientException { - new HiveDriver(); - for (String[] testValues : HTTP_URL_PROPERTIES) { - JdbcConnectionParams params = Utils.parseURL(testValues[0]); - assertEquals(params.getHost(), testValues[1]); - assertEquals(params.getPort(), Integer.parseInt(testValues[2])); - assertEquals(params.getDbName(), testValues[3]); - assertEquals(params.getHiveConfs().get("hive.server2.transport.mode"), testValues[4]); - assertEquals(params.getHiveConfs().get("hive.server2.thrift.http.path"), testValues[5]); - } + { "jdbc:hive2://server:10002/db;user=foo;password=bar;transportMode=http;httpPath=hs2", + "server", "10002", "db", "http", "hs2" }, + { "jdbc:hive2://server:10000/testdb;user=foo;password=bar;transportMode=binary;httpPath=", + "server", "10000", "testdb", "binary", "" }, }; + +@Test +public void testParseUrlHttpMode() throws SQLException, JdbcUriParseException, + ZooKeeperHiveClientException { + new HiveDriver(); + for (String[] testValues : HTTP_URL_PROPERTIES) { + JdbcConnectionParams params = Utils.parseURL(testValues[0]); + assertEquals(params.getHost(), testValues[1]); + assertEquals(params.getPort(), Integer.parseInt(testValues[2])); + assertEquals(params.getDbName(), testValues[3]); + assertEquals(params.getSessionVars().get("transportMode"), testValues[4]); + assertEquals(params.getSessionVars().get("httpPath"), testValues[5]); } +} private static void assertDpi(DriverPropertyInfo dpi, String name, String value) { diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index e0d2d6d568b8..8dadda7776af 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -218,7 +218,7 @@ private String getServerHttpUrl(boolean useSsl) { String schemeName = useSsl ? "https" : "http"; // http path should begin with "/" String httpPath; - httpPath = hiveConfMap.get(JdbcConnectionParams.HTTP_PATH); + httpPath = sessConfMap.get(JdbcConnectionParams.HTTP_PATH); if (httpPath == null) { httpPath = "/"; } else if (!httpPath.startsWith("/")) { @@ -485,7 +485,7 @@ private boolean isKerberosAuthMode() { } private boolean isHttpTransportMode() { - String transportMode = hiveConfMap.get(JdbcConnectionParams.TRANSPORT_MODE); + String transportMode = sessConfMap.get(JdbcConnectionParams.TRANSPORT_MODE); if(transportMode != null && (transportMode.equalsIgnoreCase("http"))) { return true; } diff --git a/jdbc/src/java/org/apache/hive/jdbc/Utils.java b/jdbc/src/java/org/apache/hive/jdbc/Utils.java index 8961e2b23bdb..9b08fd9105d0 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/Utils.java +++ b/jdbc/src/java/org/apache/hive/jdbc/Utils.java @@ -66,7 +66,9 @@ public static class JdbcConnectionParams { // Client param names: static final String AUTH_TYPE = "auth"; - static final String AUTH_QOP = "sasl.qop"; + // We're deprecating this variable's name. + static final String AUTH_QOP_DEPRECATED = "sasl.qop"; + static final String AUTH_QOP = "saslQop"; static final String AUTH_SIMPLE = "noSasl"; static final String AUTH_TOKEN = "delegationToken"; static final String AUTH_USER = "user"; @@ -79,8 +81,14 @@ public static class JdbcConnectionParams { static final String USE_SSL = "ssl"; static final String SSL_TRUST_STORE = "sslTrustStore"; static final String SSL_TRUST_STORE_PASSWORD = "trustStorePassword"; - static final String TRANSPORT_MODE = "hive.server2.transport.mode"; - static final String HTTP_PATH = "hive.server2.thrift.http.path"; + // We're deprecating the name and placement of this in the parsed map (from hive conf vars to + // hive session vars). + static final String TRANSPORT_MODE_DEPRECATED = "hive.server2.transport.mode"; + static final String TRANSPORT_MODE = "transportMode"; + // We're deprecating the name and placement of this in the parsed map (from hive conf vars to + // hive session vars). + static final String HTTP_PATH_DEPRECATED = "hive.server2.thrift.http.path"; + static final String HTTP_PATH = "httpPath"; static final String SERVICE_DISCOVERY_MODE = "serviceDiscoveryMode"; // Don't use dynamic serice discovery static final String SERVICE_DISCOVERY_MODE_NONE = "none"; @@ -287,6 +295,10 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep // key=value pattern Pattern pattern = Pattern.compile("([^;]*)=([^;]*)[;]?"); + Map sessionVarMap = connParams.getSessionVars(); + Map hiveConfMap = connParams.getHiveConfs(); + Map hiveVarMap = connParams.getHiveVars(); + // dbname and session settings String sessVars = jdbcURI.getPath(); if ((sessVars != null) && !sessVars.isEmpty()) { @@ -303,7 +315,7 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep if (sessVars != null) { Matcher sessMatcher = pattern.matcher(sessVars); while (sessMatcher.find()) { - if (connParams.getSessionVars().put(sessMatcher.group(1), sessMatcher.group(2)) != null) { + if (sessionVarMap.put(sessMatcher.group(1), sessMatcher.group(2)) != null) { throw new JdbcUriParseException("Bad URL format: Multiple values for property " + sessMatcher.group(1)); } @@ -320,7 +332,7 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep if (confStr != null) { Matcher confMatcher = pattern.matcher(confStr); while (confMatcher.find()) { - connParams.getHiveConfs().put(confMatcher.group(1), confMatcher.group(2)); + hiveConfMap.put(confMatcher.group(1), confMatcher.group(2)); } } @@ -329,10 +341,29 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep if (varStr != null) { Matcher varMatcher = pattern.matcher(varStr); while (varMatcher.find()) { - connParams.getHiveVars().put(varMatcher.group(1), varMatcher.group(2)); + hiveVarMap.put(varMatcher.group(1), varMatcher.group(2)); } } + // Handle all deprecations here: + String newUsage; + String usageUrlBase = "jdbc:hive2://:/dbName;"; + // Handle deprecation of AUTH_QOP_DEPRECATED + newUsage = usageUrlBase + JdbcConnectionParams.AUTH_QOP + "="; + handleParamDeprecation(sessionVarMap, sessionVarMap, JdbcConnectionParams.AUTH_QOP_DEPRECATED, + JdbcConnectionParams.AUTH_QOP, newUsage); + + // Handle deprecation of TRANSPORT_MODE_DEPRECATED + newUsage = usageUrlBase + JdbcConnectionParams.TRANSPORT_MODE + "="; + handleParamDeprecation(hiveConfMap, sessionVarMap, + JdbcConnectionParams.TRANSPORT_MODE_DEPRECATED, JdbcConnectionParams.TRANSPORT_MODE, + newUsage); + + // Handle deprecation of HTTP_PATH_DEPRECATED + newUsage = usageUrlBase + JdbcConnectionParams.HTTP_PATH + "="; + handleParamDeprecation(hiveConfMap, sessionVarMap, JdbcConnectionParams.HTTP_PATH_DEPRECATED, + JdbcConnectionParams.HTTP_PATH, newUsage); + // Extract host, port if (connParams.isEmbeddedMode()) { // In case of embedded mode we were supplied with an empty authority. @@ -359,6 +390,25 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep return connParams; } + /** + * Remove the deprecatedName param from the fromMap and put the key value in the toMap. + * Also log a deprecation message for the client. + * @param fromMap + * @param toMap + * @param oldName + * @param newName + */ + private static void handleParamDeprecation(Map fromMap, Map toMap, + String deprecatedName, String newName, String newUsage) { + if (fromMap.containsKey(deprecatedName)) { + LOG.warn("***** JDBC param deprecation *****"); + LOG.warn("The use of " + deprecatedName + " is deprecated."); + LOG.warn("Please use " + newName +" like so: " + newUsage); + String paramValue = fromMap.remove(deprecatedName); + toMap.put(newName, paramValue); + } + } + /** * Get the authority string from the supplied uri, which could potentially contain multiple * host:port pairs. From 16cf687ec370b05686d3258496060dea13ad63c0 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Mon, 13 Oct 2014 17:02:58 +0000 Subject: [PATCH 091/339] HIVE-8442 Revert HIVE-8403 (Alan Gates) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631472 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index f5a25e5c86b0..8bef0ee3f531 100644 --- a/pom.xml +++ b/pom.xml @@ -164,6 +164,19 @@ + + datanucleus + datanucleus maven repository + http://www.datanucleus.org/downloads/maven2 + default + + true + warn + + + false + + glassfish-repository http://maven.glassfish.org/content/groups/glassfish @@ -194,11 +207,6 @@ false - - repository.jboss.org-public - JBoss repository - https://repository.jboss.org/nexus/content/groups/public - From 89f1f7586ee2f4c48d621f00bea62f20400efaad Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 13 Oct 2014 17:48:48 +0000 Subject: [PATCH 092/339] HIVE-8421 : [CBO] Use OptiqSemanticException in error conditions (Ashutosh Chauhan via Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631482 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 48d334a2bdde..3c83a7c37c93 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -12423,7 +12423,7 @@ private RelNode genUnionLogicalPlan(String unionalias, String leftalias, RelNode + " does not have the field " + field)); } if (!lInfo.getInternalName().equals(rInfo.getInternalName())) { - throw new SemanticException(generateErrorMessage(tabref, + throw new OptiqSemanticException(generateErrorMessage(tabref, "Schema of both sides of union should match: field " + field + ":" + " appears on the left side of the UNION at column position: " + getPositionFromInternalName(lInfo.getInternalName()) @@ -12435,7 +12435,7 @@ private RelNode genUnionLogicalPlan(String unionalias, String leftalias, RelNode TypeInfo commonTypeInfo = FunctionRegistry.getCommonClassForUnionAll(lInfo.getType(), rInfo.getType()); if (commonTypeInfo == null) { - throw new SemanticException(generateErrorMessage(tabref, + throw new OptiqSemanticException(generateErrorMessage(tabref, "Schema of both sides of union should match: Column " + field + " is of type " + lInfo.getType().getTypeName() + " on first table and type " + rInfo.getType().getTypeName() + " on second table")); @@ -13293,7 +13293,7 @@ private RelNode genGBLogicalPlan(QB qb, RelNode srcRel) throws SemanticException grpbyExpr, new TypeCheckCtx(groupByInputRowResolver)); ExprNodeDesc grpbyExprNDesc = astToExprNDescMap.get(grpbyExpr); if (grpbyExprNDesc == null) - throw new RuntimeException("Invalid Column Reference: " + grpbyExpr.dump()); + throw new OptiqSemanticException("Invalid Column Reference: " + grpbyExpr.dump()); addToGBExpr(groupByOutputRowResolver, groupByInputRowResolver, grpbyExpr, grpbyExprNDesc, gbExprNDescLst, outputColumnNames); From 2b480825c3fb2a7af7e7c6c2dfe8bba443b02289 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 13 Oct 2014 17:50:51 +0000 Subject: [PATCH 093/339] HIVE-8413 : [CBO] Handle ill-formed queries which have distinct, having in incorrect context (Ashutosh Chauhan via Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631484 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/parse/SemanticAnalyzer.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 3c83a7c37c93..e1eca137df19 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -13833,16 +13833,12 @@ private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel) throws SemanticExcep } // 5. Bailout if select involves UDTF - ASTNode udtfExpr = (ASTNode) selExprList.getChild(posn).getChild(0); - GenericUDTF genericUDTF = null; - int udtfExprType = udtfExpr.getType(); - if (udtfExprType == HiveParser.TOK_FUNCTION || udtfExprType == HiveParser.TOK_FUNCTIONSTAR) { - String funcName = TypeCheckProcFactory.DefaultExprProcessor.getFunctionText(udtfExpr, true); + ASTNode expr = (ASTNode) selExprList.getChild(posn).getChild(0); + int exprType = expr.getType(); + if (exprType == HiveParser.TOK_FUNCTION || exprType == HiveParser.TOK_FUNCTIONSTAR) { + String funcName = TypeCheckProcFactory.DefaultExprProcessor.getFunctionText(expr, true); FunctionInfo fi = FunctionRegistry.getFunctionInfo(funcName); - if (fi != null) { - genericUDTF = fi.getGenericUDTF(); - } - if (genericUDTF != null) { + if (fi != null && fi.getGenericUDTF() != null) { String msg = String.format("UDTF " + funcName + " is currently not supported in CBO," + " turn off cbo to use UDTF " + funcName); LOG.debug(msg); @@ -13870,7 +13866,6 @@ private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel) throws SemanticExcep ErrorMsg.INVALID_AS.getMsg())); } - ASTNode expr; String tabAlias; String colAlias; @@ -13907,6 +13902,9 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { pos = genColListRegex(unescapeIdentifier(expr.getChild(1).getText()), unescapeIdentifier(expr.getChild(0).getChild(0).getText().toLowerCase()), expr, col_list, inputRR, pos, out_rwsch, tabAliasesForAllProjs, subQuery); + } else if (expr.toStringTree().contains("TOK_FUNCTIONDI") && !(srcRel instanceof HiveAggregateRel)) { + // Likely a malformed query eg, select hash(distinct c1) from t1; + throw new OptiqSemanticException("Distinct without an aggreggation."); } else { // Case when this is an expression TypeCheckCtx tcCtx = new TypeCheckCtx(inputRR); @@ -14119,6 +14117,10 @@ private RelNode genGBHavingLogicalPlan(QB qb, RelNode srcRel, Map 0; + throw new OptiqSemanticException("Having clause without any group-by."); + } validateNoHavingReferenceToAlias(qb, (ASTNode) havingClause.getChild(0)); gbFilter = genFilterRelNode(qb, (ASTNode) havingClause.getChild(0), srcRel, aliasToRel, true); From 8dcf87637968d0c9b70298ad9dfbf6bdce6ad7fc Mon Sep 17 00:00:00 2001 From: Harish Butani Date: Mon, 13 Oct 2014 18:02:23 +0000 Subject: [PATCH 094/339] HIVE-8315 CBO : Negate condition underestimates selectivity which results in an in-efficient plan (Harish Butani via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631494 13f79535-47bb-0310-9956-ffa450edef68 --- .../optiq/stats/HiveRelMdSelectivity.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdSelectivity.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdSelectivity.java index 5d9b14523c1c..49d2ee5a67b7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdSelectivity.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdSelectivity.java @@ -37,6 +37,7 @@ import org.eigenbase.rel.metadata.RelMetadataQuery; import org.eigenbase.rex.RexNode; import org.eigenbase.rex.RexUtil; +import org.eigenbase.util.Pair; import com.google.common.collect.ImmutableMap; @@ -67,7 +68,15 @@ public Double getSelectivity(HiveJoinRel j, RexNode predicate) { private Double computeInnerJoinSelectivity(HiveJoinRel j, RexNode predicate) { double ndvCrossProduct = 1; - RexNode combinedPredicate = getCombinedPredicateForJoin(j, predicate); + Pair predInfo = + getCombinedPredicateForJoin(j, predicate); + if (!predInfo.getKey()) { + return + new FilterSelectivityEstimator(j). + estimateSelectivity(predInfo.getValue()); + } + + RexNode combinedPredicate = predInfo.getValue(); JoinPredicateInfo jpi = JoinPredicateInfo.constructJoinPredicateInfo(j, combinedPredicate); ImmutableMap.Builder colStatMapBuilder = ImmutableMap @@ -175,7 +184,14 @@ protected double exponentialBackoff(List peLst, return ndvCrossProduct; } - private RexNode getCombinedPredicateForJoin(HiveJoinRel j, RexNode additionalPredicate) { + /** + * + * @param j + * @param additionalPredicate + * @return if predicate is the join condition return (true, joinCond) + * else return (false, minusPred) + */ + private Pair getCombinedPredicateForJoin(HiveJoinRel j, RexNode additionalPredicate) { RexNode minusPred = RelMdUtil.minusPreds(j.getCluster().getRexBuilder(), additionalPredicate, j.getCondition()); @@ -184,10 +200,10 @@ private RexNode getCombinedPredicateForJoin(HiveJoinRel j, RexNode additionalPre minusList.add(j.getCondition()); minusList.add(minusPred); - return RexUtil.composeConjunction(j.getCluster().getRexBuilder(), minusList, true); + return new Pair(false, minusPred); } - return j.getCondition(); + return new Pair(true,j.getCondition()); } /** From 177af9f92a2f348523b56549b6067db69429d914 Mon Sep 17 00:00:00 2001 From: Harish Butani Date: Mon, 13 Oct 2014 18:05:28 +0000 Subject: [PATCH 095/339] HIVE-8361 NPE in PTFOperator when there are empty partitions (Harish Butani via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631495 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/PTFOperator.java | 19 +++++++++------ .../queries/clientpositive/ptf_matchpath.q | 12 +++++++++- .../test/queries/clientpositive/windowing.q | 4 ++++ .../clientpositive/ptf_matchpath.q.out | 24 +++++++++++++++++++ .../results/clientpositive/windowing.q.out | 12 ++++++++++ 5 files changed, 63 insertions(+), 8 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFOperator.java index 4b267bb8e33e..2e6a880010c8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFOperator.java @@ -337,17 +337,20 @@ void finishPartition() throws HiveException { handleOutputRows(tabFn.finishPartition()); } else { if ( tabFn.canIterateOutput() ) { - outputPartRowsItr = tabFn.iterator(inputPart.iterator()); + outputPartRowsItr = inputPart == null ? null : + tabFn.iterator(inputPart.iterator()); } else { - outputPart = tabFn.execute(inputPart); - outputPartRowsItr = outputPart.iterator(); + outputPart = inputPart == null ? null : tabFn.execute(inputPart); + outputPartRowsItr = outputPart == null ? null : outputPart.iterator(); } if ( next != null ) { if (!next.isStreaming() && !isOutputIterator() ) { next.inputPart = outputPart; } else { - while(outputPartRowsItr.hasNext() ) { - next.processRow(outputPartRowsItr.next()); + if ( outputPartRowsItr != null ) { + while(outputPartRowsItr.hasNext() ) { + next.processRow(outputPartRowsItr.next()); + } } } } @@ -357,8 +360,10 @@ void finishPartition() throws HiveException { next.finishPartition(); } else { if (!isStreaming() ) { - while(outputPartRowsItr.hasNext() ) { - forward(outputPartRowsItr.next(), outputObjInspector); + if ( outputPartRowsItr != null ) { + while(outputPartRowsItr.hasNext() ) { + forward(outputPartRowsItr.next(), outputObjInspector); + } } } } diff --git a/ql/src/test/queries/clientpositive/ptf_matchpath.q b/ql/src/test/queries/clientpositive/ptf_matchpath.q index 0cde350f7369..2c1d76681b75 100644 --- a/ql/src/test/queries/clientpositive/ptf_matchpath.q +++ b/ql/src/test/queries/clientpositive/ptf_matchpath.q @@ -32,5 +32,15 @@ from matchpath(on arg2('LATE'), arg3(arr_delay > 15), arg4('origin_city_name, fl_num, year, month, day_of_month, size(tpath) as sz, tpath[0].day_of_month as tpath') ) -where fl_num = 1142; +where fl_num = 1142; + +-- 3. empty partition. +select origin_city_name, fl_num, year, month, day_of_month, sz, tpath +from matchpath(on + (select * from flights_tiny where fl_num = -1142) flights_tiny + sort by fl_num, year, month, day_of_month + arg1('LATE.LATE+'), + arg2('LATE'), arg3(arr_delay > 15), + arg4('origin_city_name, fl_num, year, month, day_of_month, size(tpath) as sz, tpath[0].day_of_month as tpath') + ); \ No newline at end of file diff --git a/ql/src/test/queries/clientpositive/windowing.q b/ql/src/test/queries/clientpositive/windowing.q index 3f5c3bf6f004..8dceafa4f29f 100644 --- a/ql/src/test/queries/clientpositive/windowing.q +++ b/ql/src/test/queries/clientpositive/windowing.q @@ -444,3 +444,7 @@ select p_retailprice, avg(p_retailprice) over (partition by p_mfgr order by p_na sum(p_retailprice) over (partition by p_mfgr order by p_name rows between current row and 6 following) from part where p_mfgr='Manufacturer#1'; + +-- 47. empty partition +select sum(p_size) over (partition by p_mfgr ) +from part where p_mfgr = 'm1'; diff --git a/ql/src/test/results/clientpositive/ptf_matchpath.q.out b/ql/src/test/results/clientpositive/ptf_matchpath.q.out index f04c998fd3b8..fc0187b513fb 100644 --- a/ql/src/test/results/clientpositive/ptf_matchpath.q.out +++ b/ql/src/test/results/clientpositive/ptf_matchpath.q.out @@ -107,3 +107,27 @@ Baltimore 1142 2010 10 21 5 21 Baltimore 1142 2010 10 22 4 22 Baltimore 1142 2010 10 25 3 25 Baltimore 1142 2010 10 26 2 26 +PREHOOK: query: -- 3. empty partition. +select origin_city_name, fl_num, year, month, day_of_month, sz, tpath +from matchpath(on + (select * from flights_tiny where fl_num = -1142) flights_tiny + sort by fl_num, year, month, day_of_month + arg1('LATE.LATE+'), + arg2('LATE'), arg3(arr_delay > 15), + arg4('origin_city_name, fl_num, year, month, day_of_month, size(tpath) as sz, tpath[0].day_of_month as tpath') + ) +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny +#### A masked pattern was here #### +POSTHOOK: query: -- 3. empty partition. +select origin_city_name, fl_num, year, month, day_of_month, sz, tpath +from matchpath(on + (select * from flights_tiny where fl_num = -1142) flights_tiny + sort by fl_num, year, month, day_of_month + arg1('LATE.LATE+'), + arg2('LATE'), arg3(arr_delay > 15), + arg4('origin_city_name, fl_num, year, month, day_of_month, size(tpath) as sz, tpath[0].day_of_month as tpath') + ) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny +#### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/windowing.q.out b/ql/src/test/results/clientpositive/windowing.q.out index 31d0511c3df2..a16e73a20040 100644 --- a/ql/src/test/results/clientpositive/windowing.q.out +++ b/ql/src/test/results/clientpositive/windowing.q.out @@ -2362,3 +2362,15 @@ POSTHOOK: Input: default@part 1602.59 1549.8900000000003 4649.670000000001 1414.42 1523.5400000000004 3047.080000000001 1632.66 1632.6600000000008 1632.6600000000008 +PREHOOK: query: -- 47. empty partition +select sum(p_size) over (partition by p_mfgr ) +from part where p_mfgr = 'm1' +PREHOOK: type: QUERY +PREHOOK: Input: default@part +#### A masked pattern was here #### +POSTHOOK: query: -- 47. empty partition +select sum(p_size) over (partition by p_mfgr ) +from part where p_mfgr = 'm1' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@part +#### A masked pattern was here #### From 8dd4b8a27c756f6c90b0e1bba8de4360198b8339 Mon Sep 17 00:00:00 2001 From: Harish Butani Date: Mon, 13 Oct 2014 18:08:00 +0000 Subject: [PATCH 096/339] HIVE-8280 CBO : When filter is applied on dimension table PK/FK code path is not in effect. (Harish Butani via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631497 13f79535-47bb-0310-9956-ffa450edef68 --- .../optiq/stats/HiveRelMdRowCount.java | 29 +++++++++++++++++-- .../optiq/stats/HiveRelMdUniqueKeys.java | 29 +++++++++++++++++-- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java index 949eb192b63e..a9fe98a6b67e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java @@ -28,6 +28,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveTableScanRel; import org.eigenbase.rel.FilterRelBase; import org.eigenbase.rel.JoinRelBase; import org.eigenbase.rel.JoinRelType; @@ -41,6 +42,7 @@ import org.eigenbase.rel.metadata.RelMetadataQuery; import org.eigenbase.rel.rules.SemiJoinRel; import org.eigenbase.relopt.RelOptUtil; +import org.eigenbase.relopt.hep.HepRelVertex; import org.eigenbase.rex.RexBuilder; import org.eigenbase.rex.RexCall; import org.eigenbase.rex.RexInputRef; @@ -270,10 +272,11 @@ public static PKFKRelationInfo analyzeJoinForPKFK(JoinRelBase joinRel) { if (pkSide == 0) { FKSideInfo fkInfo = new FKSideInfo(rightRowCount, rightNDV); + double pkSelectivity = pkSelectivity(joinRel, true, left, leftRowCount); PKSideInfo pkInfo = new PKSideInfo(leftRowCount, leftNDV, joinRel.getJoinType().generatesNullsOnRight() ? 1.0 : - isPKSideSimpleTree ? RelMetadataQuery.getSelectivity(left, leftPred) : 1.0); + pkSelectivity); return new PKFKRelationInfo(1, fkInfo, pkInfo, ndvScalingFactor, isPKSideSimpleTree); } @@ -281,10 +284,11 @@ public static PKFKRelationInfo analyzeJoinForPKFK(JoinRelBase joinRel) { if (pkSide == 1) { FKSideInfo fkInfo = new FKSideInfo(leftRowCount, leftNDV); + double pkSelectivity = pkSelectivity(joinRel, false, right, rightRowCount); PKSideInfo pkInfo = new PKSideInfo(rightRowCount, rightNDV, joinRel.getJoinType().generatesNullsOnLeft() ? 1.0 : - isPKSideSimpleTree ? RelMetadataQuery.getSelectivity(right, rightPred) : 1.0); + pkSelectivity); return new PKFKRelationInfo(1, fkInfo, pkInfo, ndvScalingFactor, isPKSideSimpleTree); } @@ -292,6 +296,23 @@ public static PKFKRelationInfo analyzeJoinForPKFK(JoinRelBase joinRel) { return null; } + private static double pkSelectivity(JoinRelBase joinRel, boolean leftChild, + RelNode child, + double childRowCount) { + if ((leftChild && joinRel.getJoinType().generatesNullsOnRight()) || + (!leftChild && joinRel.getJoinType().generatesNullsOnLeft())) { + return 1.0; + } else { + HiveTableScanRel tScan = HiveRelMdUniqueKeys.getTableScan(child, true); + if (tScan != null) { + double tRowCount = RelMetadataQuery.getRowCount(tScan); + return childRowCount / tRowCount; + } else { + return 1.0; + } + } + } + private static boolean isKey(BitSet c, RelNode rel) { boolean isKey = false; Set keys = RelMetadataQuery.getUniqueKeys(rel); @@ -384,6 +405,10 @@ static boolean check(RelNode r, int joinKey) { @Override public void visit(RelNode node, int ordinal, RelNode parent) { + if (node instanceof HepRelVertex) { + node = ((HepRelVertex) node).getCurrentRel(); + } + if (node instanceof TableAccessRelBase) { simpleTree = true; } else if (node instanceof ProjectRelBase) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdUniqueKeys.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdUniqueKeys.java index 06ff584efb26..3221f91f9cfe 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdUniqueKeys.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdUniqueKeys.java @@ -30,6 +30,7 @@ import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveTableScanRel; import org.apache.hadoop.hive.ql.plan.ColStatistics; +import org.eigenbase.rel.FilterRelBase; import org.eigenbase.rel.ProjectRelBase; import org.eigenbase.rel.RelNode; import org.eigenbase.rel.metadata.BuiltInMetadata; @@ -37,6 +38,7 @@ import org.eigenbase.rel.metadata.ReflectiveRelMetadataProvider; import org.eigenbase.rel.metadata.RelMdUniqueKeys; import org.eigenbase.rel.metadata.RelMetadataProvider; +import org.eigenbase.relopt.hep.HepRelVertex; import org.eigenbase.rex.RexInputRef; import org.eigenbase.rex.RexNode; @@ -59,16 +61,15 @@ public class HiveRelMdUniqueKeys { */ public Set getUniqueKeys(ProjectRelBase rel, boolean ignoreNulls) { - RelNode child = rel.getChild(); + HiveTableScanRel tScan = getTableScan(rel.getChild(), false); - if (!(child instanceof HiveTableScanRel)) { + if ( tScan == null ) { Function fn = RelMdUniqueKeys.SOURCE.apply( rel.getClass(), BuiltInMetadata.UniqueKeys.class); return ((BuiltInMetadata.UniqueKeys) fn.apply(rel)) .getUniqueKeys(ignoreNulls); } - HiveTableScanRel tScan = (HiveTableScanRel) child; Map posMap = new HashMap(); int projectPos = 0; int colStatsPos = 0; @@ -112,4 +113,26 @@ public Set getUniqueKeys(ProjectRelBase rel, boolean ignoreNulls) { return keys; } + /* + * traverse a path of Filter, Projects to get to the TableScan. + * In case of Unique keys, stop if you reach a Project, it will be handled + * by the invocation on the Project. + * In case of getting the base rowCount of a Path, keep going past a Project. + */ + static HiveTableScanRel getTableScan(RelNode r, boolean traverseProject) { + + while (r != null && !(r instanceof HiveTableScanRel)) { + if (r instanceof HepRelVertex) { + r = ((HepRelVertex) r).getCurrentRel(); + } else if (r instanceof FilterRelBase) { + r = ((FilterRelBase) r).getChild(); + } else if (traverseProject && r instanceof ProjectRelBase) { + r = ((ProjectRelBase) r).getChild(); + } else { + r = null; + } + } + return r == null ? null : (HiveTableScanRel) r; + } + } From d70eb77140c20a3ca0eced9600efd18301981b7c Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Mon, 13 Oct 2014 18:33:09 +0000 Subject: [PATCH 097/339] HIVE-8115: Hive select query hang when fields contain map (Xiaobing Zhou via Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631501 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/serde2/lazy/LazyMap.java | 21 ++-- .../serde2/lazy/TestLazyArrayMapStruct.java | 107 ++++++++++++++++++ 2 files changed, 121 insertions(+), 7 deletions(-) diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java index 686fc7698518..e6932d956cc0 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java @@ -23,6 +23,8 @@ import java.util.Map; import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazyMapObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector; import org.apache.hadoop.io.Text; @@ -36,6 +38,7 @@ */ public class LazyMap extends LazyNonPrimitive { + public static final Log LOG = LogFactory.getLog(LazyMap.class); /** * Whether the data is already parsed or not. */ @@ -170,15 +173,19 @@ private void parse() { valueLength[mapSize] = elementByteEnd - (keyEnd[mapSize] + 1); LazyPrimitive lazyKey = uncheckedGetKey(mapSize); if (lazyKey == null) { - continue; - } - Object key = lazyKey.getObject(); - if(!keySet.contains(key)) { - mapSize++; - keySet.add(key); - } else { + LOG.warn("skipped empty entry or entry with empty key in the representation of column with MAP type."); + //reset keyInited[mapSize] flag, since it may be set to true in the case of previous empty entry keyInited[mapSize] = false; + } else { + Object key = lazyKey.getObject(); + if(!keySet.contains(key)) { + mapSize++; + keySet.add(key); + } else { + keyInited[mapSize] = false; + } } + // reset keyValueSeparatorPosition keyValueSeparatorPosition = -1; elementByteBegin = elementByteEnd + 1; diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazyArrayMapStruct.java b/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazyArrayMapStruct.java index ac0b5830e033..48f3b029c00a 100644 --- a/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazyArrayMapStruct.java +++ b/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazyArrayMapStruct.java @@ -194,6 +194,113 @@ public void testLazyMap() throws Throwable { } } + /* + * test LazyMap with bad entries, e.g., empty key or empty entries + * where '[' and ']' don't exist, only for notation purpose, + * STX with value of 2 as entry separator, ETX with 3 as key/value separator + * */ + public void testLazyMapWithBadEntries() throws Throwable { + try { + { + // Map of String to String + Text nullSequence = new Text(""); + ObjectInspector oi = LazyFactory.createLazyObjectInspector( + TypeInfoUtils.getTypeInfosFromTypeString("map").get( + 0), new byte[] {'\2', '\3'}, 0, nullSequence, + false, (byte) 0); + LazyMap b = (LazyMap) LazyFactory.createLazyObject(oi); + + //read friendly string: ak[EXT]av[STX]bk[ETX]bv[STX]ck[ETX]cv[STX]dk[ETX]dv + byte[] data = new byte[] { + 'a', 'k', '\3', 'a', 'v', + '\02', 'b', 'k', '\3', 'b', 'v', + '\02', 'c', 'k', '\3', 'c', 'v', + '\02', 'd', 'k', '\3', 'd', 'v'}; + TestLazyPrimitive.initLazyObject(b, data, 0, data.length); + + assertEquals(new Text("av"), ((LazyString) b + .getMapValueElement(new Text("ak"))).getWritableObject()); + assertNull(b.getMapValueElement(new Text("-1"))); + assertEquals(new Text("bv"), ((LazyString) b + .getMapValueElement(new Text("bk"))).getWritableObject()); + assertEquals(new Text("cv"), ((LazyString) b + .getMapValueElement(new Text("ck"))).getWritableObject()); + assertNull(b.getMapValueElement(new Text("-"))); + assertEquals(new Text("dv"), ((LazyString) b + .getMapValueElement(new Text("dk"))).getWritableObject()); + assertEquals(4, b.getMapSize()); + } + + { + // Map of String to String, LazyMap allows empty-string style key, e.g., {"" : null} + // or {"", ""}, but not null style key, e.g., {null:""} + Text nullSequence = new Text(""); + ObjectInspector oi = LazyFactory.createLazyObjectInspector( + TypeInfoUtils.getTypeInfosFromTypeString("map").get( + 0), new byte[] {'\2', '\3'}, 0, nullSequence, + false, (byte) 0); + LazyMap b = (LazyMap) LazyFactory.createLazyObject(oi); + + //read friendly string: [STX]ak[EXT]av[STX]bk[ETX]bv[STX]ck[ETX]cv[STX]dk[ETX]dv + byte[] data = new byte[] { + '\02', 'a', 'k', '\3', 'a', 'v', + '\02', 'b', 'k', '\3', 'b', 'v', + '\02', 'c', 'k', '\3', 'c', 'v', + '\02', 'd', 'k', '\3', 'd', 'v'}; + TestLazyPrimitive.initLazyObject(b, data, 0, data.length); + + assertNull(b.getMapValueElement(new Text(""))); //{"" : null} + assertEquals(new Text("av"), ((LazyString) b + .getMapValueElement(new Text("ak"))).getWritableObject()); + assertNull(b.getMapValueElement(new Text("-1"))); + assertEquals(new Text("bv"), ((LazyString) b + .getMapValueElement(new Text("bk"))).getWritableObject()); + assertEquals(new Text("cv"), ((LazyString) b + .getMapValueElement(new Text("ck"))).getWritableObject()); + assertNull(b.getMapValueElement(new Text("-"))); + assertEquals(new Text("dv"), ((LazyString) b + .getMapValueElement(new Text("dk"))).getWritableObject()); + assertEquals(4, b.getMapSize()); + } + + { + // Map of String to String, LazyMap allows empty-string style key, e.g., {"" : null} + // or {"", ""}, but not null style key, e.g., {null:""} + Text nullSequence = new Text(""); + ObjectInspector oi = LazyFactory.createLazyObjectInspector( + TypeInfoUtils.getTypeInfosFromTypeString("map").get( + 0), new byte[] {'\2', '\3'}, 0, nullSequence, + false, (byte) 0); + LazyMap b = (LazyMap) LazyFactory.createLazyObject(oi); + + //read friendly string: [ETX][STX]ak[EXT]av[STX]bk[ETX]bv[STX]ck[ETX]cv[STX]dk[ETX]dv + byte[] data = new byte[] { + '\03', + '\02', 'a', 'k', '\3', 'a', 'v', + '\02', 'b', 'k', '\3', 'b', 'v', + '\02', 'c', 'k', '\3', 'c', 'v', + '\02', 'd', 'k', '\3', 'd', 'v'}; + TestLazyPrimitive.initLazyObject(b, data, 0, data.length); + + assertNull(b.getMapValueElement(new Text(""))); //{"" : null} + assertEquals(new Text("av"), ((LazyString) b + .getMapValueElement(new Text("ak"))).getWritableObject()); + assertNull(b.getMapValueElement(new Text("-1"))); + assertEquals(new Text("bv"), ((LazyString) b + .getMapValueElement(new Text("bk"))).getWritableObject()); + assertEquals(new Text("cv"), ((LazyString) b + .getMapValueElement(new Text("ck"))).getWritableObject()); + assertNull(b.getMapValueElement(new Text("-"))); + assertEquals(new Text("dv"), ((LazyString) b + .getMapValueElement(new Text("dk"))).getWritableObject()); + assertEquals(4, b.getMapSize()); + } + } catch(Throwable e) { + e.printStackTrace(); + throw e; + } + } + /** * Test the LazyMap class. */ From 5d9628e17c6a2d75112e24d4a911d7f68186251b Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Mon, 13 Oct 2014 20:43:32 +0000 Subject: [PATCH 098/339] HIVE-8332 Reading an ACID table with vectorization on results in NPE (Alan Gates, reviewed by Owen O'Malley) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631539 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/io/orc/OrcInputFormat.java | 2 +- .../hive/ql/io/orc/OrcRawRecordMerger.java | 17 ++++- .../hive/ql/io/orc/TestInputOutputFormat.java | 3 + .../clientpositive/acid_vectorization.q | 2 + .../clientpositive/acid_vectorization.q.out | 18 ++++++ .../tez/acid_vectorization.q.out | 62 +++++++++++++++++++ 6 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 ql/src/test/results/clientpositive/tez/acid_vectorization.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java index 90077717de5e..b2b1a4132d3a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java @@ -1134,7 +1134,7 @@ public RowReader getReader(InputSplit inputSplit, @Override public ObjectInspector getObjectInspector() { - return ((StructObjectInspector) reader.getObjectInspector()) + return ((StructObjectInspector) records.getObjectInspector()) .getAllStructFieldRefs().get(OrcRecordUpdater.ROW) .getFieldObjectInspector(); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java index 74ea23bb6990..fd97cb93037a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java @@ -28,6 +28,7 @@ import org.apache.hadoop.hive.ql.io.AcidInputFormat; import org.apache.hadoop.hive.ql.io.AcidUtils; import org.apache.hadoop.hive.ql.io.RecordIdentifier; +import org.apache.hadoop.hive.ql.metadata.VirtualColumn; import org.apache.hadoop.hive.serde.serdeConstants; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo; @@ -37,9 +38,10 @@ import org.apache.hadoop.io.LongWritable; import java.io.IOException; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; +import java.util.Deque; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -627,8 +629,16 @@ public ObjectInspector getObjectInspector() { // Parse the configuration parameters ArrayList columnNames = new ArrayList(); + Deque virtualColumns = new ArrayDeque(); if (columnNameProperty != null && columnNameProperty.length() > 0) { - Collections.addAll(columnNames, columnNameProperty.split(",")); + String[] colNames = columnNameProperty.split(","); + for (int i = 0; i < colNames.length; i++) { + if (VirtualColumn.VIRTUAL_COLUMN_NAMES.contains(colNames[i])) { + virtualColumns.addLast(i); + } else { + columnNames.add(colNames[i]); + } + } } if (columnTypeProperty == null) { // Default type: all string @@ -644,6 +654,9 @@ public ObjectInspector getObjectInspector() { ArrayList fieldTypes = TypeInfoUtils.getTypeInfosFromTypeString(columnTypeProperty); + while (virtualColumns.size() > 0) { + fieldTypes.remove(virtualColumns.removeLast()); + } StructTypeInfo rowType = new StructTypeInfo(); rowType.setAllStructFieldNames(columnNames); rowType.setAllStructFieldTypeInfos(fieldTypes); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java index 55392c98e3d3..a15a7a7951b5 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java @@ -73,6 +73,7 @@ import org.apache.hadoop.hive.ql.plan.MapWork; import org.apache.hadoop.hive.ql.plan.PartitionDesc; import org.apache.hadoop.hive.ql.plan.TableDesc; +import org.apache.hadoop.hive.serde.serdeConstants; import org.apache.hadoop.hive.serde2.ColumnProjectionUtils; import org.apache.hadoop.hive.serde2.SerDe; import org.apache.hadoop.hive.serde2.SerDeUtils; @@ -1266,6 +1267,8 @@ JobConf createMockExecutionEnvironment(Path workDir, } conf.set("hive.io.file.readcolumn.ids", columnIds.toString()); conf.set("partition_columns", "p"); + conf.set(serdeConstants.LIST_COLUMNS, columnNames.toString()); + conf.set(serdeConstants.LIST_COLUMN_TYPES, columnTypes.toString()); MockFileSystem fs = (MockFileSystem) warehouseDir.getFileSystem(conf); fs.clear(); diff --git a/ql/src/test/queries/clientpositive/acid_vectorization.q b/ql/src/test/queries/clientpositive/acid_vectorization.q index 3f386c97affc..4b114125e778 100644 --- a/ql/src/test/queries/clientpositive/acid_vectorization.q +++ b/ql/src/test/queries/clientpositive/acid_vectorization.q @@ -12,3 +12,5 @@ set hive.vectorized.execution.enabled=true; update acid_vectorized set b = 'foo' where b = 'bar'; set hive.vectorized.execution.enabled=true; delete from acid_vectorized where b = 'foo'; +set hive.vectorized.execution.enabled=true; +select a, b from acid_vectorized order by a, b; diff --git a/ql/src/test/results/clientpositive/acid_vectorization.q.out b/ql/src/test/results/clientpositive/acid_vectorization.q.out index 18dada595a16..1792979156ec 100644 --- a/ql/src/test/results/clientpositive/acid_vectorization.q.out +++ b/ql/src/test/results/clientpositive/acid_vectorization.q.out @@ -42,3 +42,21 @@ POSTHOOK: query: delete from acid_vectorized where b = 'foo' POSTHOOK: type: QUERY POSTHOOK: Input: default@acid_vectorized POSTHOOK: Output: default@acid_vectorized +PREHOOK: query: select a, b from acid_vectorized order by a, b +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +POSTHOOK: query: select a, b from acid_vectorized order by a, b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa +-1073051226 A34p7oRr2WvUJNf +-1072910839 0iqrc5 +-1072081801 dPkN74F7 +-1072076362 2uLyD28144vklju213J1mr +-1071480828 aw724t8c5558x2xneC624 +-1071363017 Anj0oF +-1070883071 0ruyd6Y50JpdGRf6HqD +-1070551679 iUR3Q +-1069736047 k17Am8uPHWk02cEf1jet diff --git a/ql/src/test/results/clientpositive/tez/acid_vectorization.q.out b/ql/src/test/results/clientpositive/tez/acid_vectorization.q.out new file mode 100644 index 000000000000..1792979156ec --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/acid_vectorization.q.out @@ -0,0 +1,62 @@ +PREHOOK: query: CREATE TABLE acid_vectorized(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_vectorized +POSTHOOK: query: CREATE TABLE acid_vectorized(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_vectorized +PREHOOK: query: insert into table acid_vectorized select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_vectorized +POSTHOOK: query: insert into table acid_vectorized select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_vectorized +POSTHOOK: Lineage: acid_vectorized.a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_vectorized.b SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: insert into table acid_vectorized values (1, 'bar') +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@acid_vectorized +POSTHOOK: query: insert into table acid_vectorized values (1, 'bar') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@acid_vectorized +POSTHOOK: Lineage: acid_vectorized.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: acid_vectorized.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: update acid_vectorized set b = 'foo' where b = 'bar' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized +PREHOOK: Output: default@acid_vectorized +POSTHOOK: query: update acid_vectorized set b = 'foo' where b = 'bar' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized +POSTHOOK: Output: default@acid_vectorized +PREHOOK: query: delete from acid_vectorized where b = 'foo' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized +PREHOOK: Output: default@acid_vectorized +POSTHOOK: query: delete from acid_vectorized where b = 'foo' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized +POSTHOOK: Output: default@acid_vectorized +PREHOOK: query: select a, b from acid_vectorized order by a, b +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +POSTHOOK: query: select a, b from acid_vectorized order by a, b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa +-1073051226 A34p7oRr2WvUJNf +-1072910839 0iqrc5 +-1072081801 dPkN74F7 +-1072076362 2uLyD28144vklju213J1mr +-1071480828 aw724t8c5558x2xneC624 +-1071363017 Anj0oF +-1070883071 0ruyd6Y50JpdGRf6HqD +-1070551679 iUR3Q +-1069736047 k17Am8uPHWk02cEf1jet From bf3dccffd998d614bd40a09f30d5c84ca1b635e9 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Mon, 13 Oct 2014 21:25:34 +0000 Subject: [PATCH 099/339] HIVE-8401: OrcFileMergeOperator only close last orc file it opened, which resulted in stale data in table directory (Xiaobing Zhou reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631558 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/OrcFileMergeOperator.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/OrcFileMergeOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/OrcFileMergeOperator.java index 0fb1c579da25..5ee8e32a1903 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/OrcFileMergeOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/OrcFileMergeOperator.java @@ -64,6 +64,7 @@ public void processOp(Object row, int tag) throws HiveException { private void processKeyValuePairs(Object key, Object value) throws HiveException { + String filePath = ""; try { OrcFileValueWrapper v; OrcFileKeyWrapper k; @@ -72,6 +73,7 @@ private void processKeyValuePairs(Object key, Object value) } else { k = (OrcFileKeyWrapper) key; } + filePath = k.getInputPath().toUri().getPath(); fixTmpPath(k.getInputPath().getParent()); @@ -131,6 +133,16 @@ private void processKeyValuePairs(Object key, Object value) this.exception = true; closeOp(true); throw new HiveException(e); + } finally { + if (fdis != null) { + try { + fdis.close(); + } catch (IOException e) { + throw new HiveException(String.format("Unable to close file %s", filePath), e); + } finally { + fdis = null; + } + } } } From 8c18f07c08eddf4fb0b05e01e8a085ce59ccc9a3 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Mon, 13 Oct 2014 21:32:54 +0000 Subject: [PATCH 100/339] HIVE-8258 Compactor cleaners can be starved on a busy table or partition. (Alan Gates reviewed by Eugene Koifman) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631562 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 3 + .../hive/ql/txn/compactor/TestCompactor.java | 3 +- .../hadoop/hive/metastore/HiveMetaStore.java | 2 +- .../hive/metastore/MetaStoreThread.java | 7 +- .../apache/hadoop/hive/ql/io/AcidUtils.java | 16 +- .../hadoop/hive/ql/txn/compactor/Cleaner.java | 130 ++++++++-- .../ql/txn/compactor/CompactorThread.java | 4 +- .../hive/ql/txn/compactor/Initiator.java | 4 +- .../hadoop/hive/ql/txn/compactor/Worker.java | 4 +- .../hadoop/hive/ql/io/TestAcidUtils.java | 6 +- .../hive/ql/txn/compactor/CompactorTest.java | 81 +++--- .../hive/ql/txn/compactor/TestCleaner.java | 241 +++++++++++++----- .../hive/ql/txn/compactor/TestInitiator.java | 191 ++++++-------- .../hive/ql/txn/compactor/TestWorker.java | 113 ++++---- 14 files changed, 493 insertions(+), 312 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 0f8d1096e23e..9788e53a5dbf 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1296,6 +1296,9 @@ public static enum ConfVars { "Number of aborted transactions involving a particular table or partition before major\n" + "compaction is initiated."), + HIVE_COMPACTOR_CLEANER_RUN_INTERVAL("hive.compactor.cleaner.run.interval", "5000ms", + new TimeValidator(TimeUnit.MILLISECONDS), "Time between runs of the cleaner thread"), + // For HBase storage handler HIVE_HBASE_WAL_ENABLED("hive.hbase.wal.enabled", true, "Whether writes to HBase should be forced to the write-ahead log. \n" + diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java index 0c5613219ce2..95f1c3974b7e 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java @@ -230,8 +230,9 @@ public void testStatsAfterCompactionPartTbl() throws Exception { t.setThreadId((int) t.getId()); t.setHiveConf(conf); MetaStoreThread.BooleanPointer stop = new MetaStoreThread.BooleanPointer(); + MetaStoreThread.BooleanPointer looped = new MetaStoreThread.BooleanPointer(); stop.boolVal = true; - t.init(stop); + t.init(stop, looped); t.run(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index 7a449125fd7c..69270cdf0189 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -5933,7 +5933,7 @@ private static void initializeAndStartThread(MetaStoreThread thread, HiveConf co LOG.info("Starting metastore thread of type " + thread.getClass().getName()); thread.setHiveConf(conf); thread.setThreadId(nextThreadId++); - thread.init(new MetaStoreThread.BooleanPointer()); + thread.init(new MetaStoreThread.BooleanPointer(), new MetaStoreThread.BooleanPointer()); thread.start(); } } diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreThread.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreThread.java index 6e18a5bfb85c..ff265e56cf4e 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreThread.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreThread.java @@ -43,8 +43,13 @@ public interface MetaStoreThread { * have been called. * @param stop a flag to watch for when to stop. If this value is set to true, * the thread will terminate the next time through its main loop. + * @param looped a flag that is set to true everytime a thread goes through it's main loop. + * This is purely for testing so that tests can assure themselves that the thread + * has run through it's loop once. The test can set this value to false. The + * thread should then assure that the loop has been gone completely through at + * least once. */ - void init(BooleanPointer stop) throws MetaException; + void init(BooleanPointer stop, BooleanPointer looped) throws MetaException; /** * Run the thread in the background. This must not be called until diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java index 928fd61afc24..bede378ed6b9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java @@ -348,7 +348,7 @@ public static Directory getAcidState(Path directory, long bestBaseTxn = 0; final List deltas = new ArrayList(); List working = new ArrayList(); - final List original = new ArrayList(); + List originalDirectories = new ArrayList(); final List obsolete = new ArrayList(); List children = SHIMS.listLocatedStatus(fs, directory, hiddenFileFilter); @@ -375,16 +375,26 @@ public static Directory getAcidState(Path directory, working.add(delta); } } else { - findOriginals(fs, child, original); + // This is just the directory. We need to recurse and find the actual files. But don't + // do this until we have determined there is no base. This saves time. Plus, + // it is possible that the cleaner is running and removing these original files, + // in which case recursing through them could cause us to get an error. + originalDirectories.add(child); } } + final List original = new ArrayList(); // if we have a base, the original files are obsolete. if (bestBase != null) { - obsolete.addAll(original); // remove the entries so we don't get confused later and think we should // use them. original.clear(); + } else { + // Okay, we're going to need these originals. Recurse through them and figure out what we + // really need. + for (FileStatus origDir : originalDirectories) { + findOriginals(fs, origDir, original); + } } Collections.sort(working); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Cleaner.java b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Cleaner.java index 18bb2c05046c..146ebda24d3a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Cleaner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Cleaner.java @@ -24,15 +24,12 @@ import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.common.ValidTxnList; import org.apache.hadoop.hive.common.ValidTxnListImpl; -import org.apache.hadoop.hive.metastore.api.LockComponent; -import org.apache.hadoop.hive.metastore.api.LockLevel; -import org.apache.hadoop.hive.metastore.api.LockRequest; -import org.apache.hadoop.hive.metastore.api.LockResponse; -import org.apache.hadoop.hive.metastore.api.LockState; -import org.apache.hadoop.hive.metastore.api.LockType; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.MetaException; +import org.apache.hadoop.hive.metastore.api.ShowLocksRequest; +import org.apache.hadoop.hive.metastore.api.ShowLocksResponse; +import org.apache.hadoop.hive.metastore.api.ShowLocksResponseElement; import org.apache.hadoop.hive.metastore.api.StorageDescriptor; -import org.apache.hadoop.hive.metastore.api.UnlockRequest; import org.apache.hadoop.hive.metastore.txn.CompactionInfo; import org.apache.hadoop.hive.ql.io.AcidUtils; import org.apache.hadoop.security.UserGroupInformation; @@ -41,7 +38,12 @@ import java.io.IOException; import java.security.PrivilegedExceptionAction; import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; /** * A class to clean directories after compactions. This will run in a separate thread. @@ -50,35 +52,85 @@ public class Cleaner extends CompactorThread { static final private String CLASS_NAME = Cleaner.class.getName(); static final private Log LOG = LogFactory.getLog(CLASS_NAME); - private long cleanerCheckInterval = 5000; + private long cleanerCheckInterval = 0; + + // List of compactions to clean. + private Map> compactId2LockMap = new HashMap>(); + private Map compactId2CompactInfoMap = new HashMap(); @Override public void run() { - // Make sure nothing escapes this run method and kills the metastore at large, - // so wrap it in a big catch Throwable statement. + if (cleanerCheckInterval == 0) { + cleanerCheckInterval = conf.getTimeVar( + HiveConf.ConfVars.HIVE_COMPACTOR_CLEANER_RUN_INTERVAL, TimeUnit.MILLISECONDS); + } + do { + // This is solely for testing. It checks if the test has set the looped value to false, + // and if so remembers that and then sets it to true at the end. We have to check here + // first to make sure we go through a complete iteration of the loop before resetting it. + boolean setLooped = !looped.boolVal; + // Make sure nothing escapes this run method and kills the metastore at large, + // so wrap it in a big catch Throwable statement. try { long startedAt = System.currentTimeMillis(); - // Now look for new entries ready to be cleaned. + // First look for all the compactions that are waiting to be cleaned. If we have not + // seen an entry before, look for all the locks held on that table or partition and + // record them. We will then only clean the partition once all of those locks have been + // released. This way we avoid removing the files while they are in use, + // while at the same time avoiding starving the cleaner as new readers come along. + // This works because we know that any reader who comes along after the worker thread has + // done the compaction will read the more up to date version of the data (either in a + // newer delta or in a newer base). List toClean = txnHandler.findReadyToClean(); - for (CompactionInfo ci : toClean) { - LockComponent comp = null; - comp = new LockComponent(LockType.EXCLUSIVE, LockLevel.TABLE, ci.dbname); - comp.setTablename(ci.tableName); - if (ci.partName != null) comp.setPartitionname(ci.partName); - List components = new ArrayList(1); - components.add(comp); - LockRequest rqst = new LockRequest(components, System.getProperty("user.name"), - Worker.hostname()); - LockResponse rsp = txnHandler.lockNoWait(rqst); + if (toClean.size() > 0 || compactId2LockMap.size() > 0) { + ShowLocksResponse locksResponse = txnHandler.showLocks(new ShowLocksRequest()); + + for (CompactionInfo ci : toClean) { + // Check to see if we have seen this request before. If so, ignore it. If not, + // add it to our queue. + if (!compactId2LockMap.containsKey(ci.id)) { + compactId2LockMap.put(ci.id, findRelatedLocks(ci, locksResponse)); + compactId2CompactInfoMap.put(ci.id, ci); + } + } + + // Now, for each entry in the queue, see if all of the associated locks are clear so we + // can clean + Set currentLocks = buildCurrentLockSet(locksResponse); + List expiredLocks = new ArrayList(); + List compactionsCleaned = new ArrayList(); try { - if (rsp.getState() == LockState.ACQUIRED) { - clean(ci); + for (Map.Entry> queueEntry : compactId2LockMap.entrySet()) { + boolean sawLock = false; + for (Long lockId : queueEntry.getValue()) { + if (currentLocks.contains(lockId)) { + sawLock = true; + break; + } else { + expiredLocks.add(lockId); + } + } + + if (!sawLock) { + // Remember to remove this when we're out of the loop, + // we can't do it in the loop or we'll get a concurrent modification exception. + compactionsCleaned.add(queueEntry.getKey()); + clean(compactId2CompactInfoMap.get(queueEntry.getKey())); + } else { + // Remove the locks we didn't see so we don't look for them again next time + for (Long lockId : expiredLocks) { + queueEntry.getValue().remove(lockId); + } + } } } finally { - if (rsp.getState() == LockState.ACQUIRED) { - txnHandler.unlock(new UnlockRequest(rsp.getLockid())); + if (compactionsCleaned.size() > 0) { + for (Long compactId : compactionsCleaned) { + compactId2LockMap.remove(compactId); + compactId2CompactInfoMap.remove(compactId); + } } } } @@ -91,9 +143,37 @@ public void run() { LOG.error("Caught an exception in the main loop of compactor cleaner, " + StringUtils.stringifyException(t)); } + if (setLooped) { + looped.boolVal = true; + } } while (!stop.boolVal); } + private Set findRelatedLocks(CompactionInfo ci, ShowLocksResponse locksResponse) { + Set relatedLocks = new HashSet(); + for (ShowLocksResponseElement lock : locksResponse.getLocks()) { + if (ci.dbname.equals(lock.getDbname())) { + if ((ci.tableName == null && lock.getTablename() == null) || + (ci.tableName != null && ci.tableName.equals(lock.getTablename()))) { + if ((ci.partName == null && lock.getPartname() == null) || + (ci.partName != null && ci.partName.equals(lock.getPartname()))) { + relatedLocks.add(lock.getLockid()); + } + } + } + } + + return relatedLocks; + } + + private Set buildCurrentLockSet(ShowLocksResponse locksResponse) { + Set currentLocks = new HashSet(locksResponse.getLocks().size()); + for (ShowLocksResponseElement lock : locksResponse.getLocks()) { + currentLocks.add(lock.getLockid()); + } + return currentLocks; + } + private void clean(CompactionInfo ci) throws MetaException { LOG.info("Starting cleaning for " + ci.getFullPartitionName()); try { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorThread.java b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorThread.java index 715f9c030af1..2bba7310cc59 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorThread.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorThread.java @@ -53,6 +53,7 @@ abstract class CompactorThread extends Thread implements MetaStoreThread { protected RawStore rs; protected int threadId; protected BooleanPointer stop; + protected BooleanPointer looped; @Override public void setHiveConf(HiveConf conf) { @@ -66,8 +67,9 @@ public void setThreadId(int threadId) { } @Override - public void init(BooleanPointer stop) throws MetaException { + public void init(BooleanPointer stop, BooleanPointer looped) throws MetaException { this.stop = stop; + this.looped = looped; setPriority(MIN_PRIORITY); setDaemon(true); // this means the process will exit without waiting for this thread diff --git a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Initiator.java b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Initiator.java index c1d0fe11c709..5545bf7cfdd5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Initiator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Initiator.java @@ -137,8 +137,8 @@ public void run() { } @Override - public void init(BooleanPointer stop) throws MetaException { - super.init(stop); + public void init(BooleanPointer stop, BooleanPointer looped) throws MetaException { + super.init(stop, looped); checkInterval = conf.getTimeVar(HiveConf.ConfVars.HIVE_COMPACTOR_CHECK_INTERVAL, TimeUnit.MILLISECONDS) ; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Worker.java b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Worker.java index 249fece426f0..e2388e7faf07 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Worker.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Worker.java @@ -168,8 +168,8 @@ public Object run() throws Exception { } @Override - public void init(BooleanPointer stop) throws MetaException { - super.init(stop); + public void init(BooleanPointer stop, BooleanPointer looped) throws MetaException { + super.init(stop, looped); StringBuilder name = new StringBuilder(hostname()); name.append("-"); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/TestAcidUtils.java b/ql/src/test/org/apache/hadoop/hive/ql/io/TestAcidUtils.java index b17449659883..c0bdb00815fd 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/TestAcidUtils.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/TestAcidUtils.java @@ -217,11 +217,11 @@ public void testObsoleteOriginals() throws Exception { Path part = new MockPath(fs, "/tbl/part1"); AcidUtils.Directory dir = AcidUtils.getAcidState(part, conf, new ValidTxnListImpl("150:")); + // The two original buckets won't be in the obsolete list because we don't look at those + // until we have determined there is no base. List obsolete = dir.getObsolete(); - assertEquals(3, obsolete.size()); + assertEquals(1, obsolete.size()); assertEquals("mock:/tbl/part1/base_5", obsolete.get(0).getPath().toString()); - assertEquals("mock:/tbl/part1/000000_0", obsolete.get(1).getPath().toString()); - assertEquals("mock:/tbl/part1/000001_1", obsolete.get(2).getPath().toString()); assertEquals("mock:/tbl/part1/base_10", dir.getBaseDirectory().toString()); } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/CompactorTest.java b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/CompactorTest.java index ec1379d3e3ad..d4c2a7b55429 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/CompactorTest.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/CompactorTest.java @@ -63,12 +63,13 @@ public abstract class CompactorTest { protected CompactionTxnHandler txnHandler; protected IMetaStoreClient ms; protected long sleepTime = 1000; + protected HiveConf conf; private final MetaStoreThread.BooleanPointer stop = new MetaStoreThread.BooleanPointer(); private final File tmpdir; protected CompactorTest() throws Exception { - HiveConf conf = new HiveConf(); + conf = new HiveConf(); TxnDbUtil.setConfValues(conf); TxnDbUtil.cleanDb(); ms = new HiveMetaStoreClient(conf); @@ -79,16 +80,20 @@ protected CompactorTest() throws Exception { tmpdir.deleteOnExit(); } - protected void startInitiator(HiveConf conf) throws Exception { - startThread('i', conf); + protected void startInitiator() throws Exception { + startThread('i', true); } - protected void startWorker(HiveConf conf) throws Exception { - startThread('w', conf); + protected void startWorker() throws Exception { + startThread('w', true); } - protected void startCleaner(HiveConf conf) throws Exception { - startThread('c', conf); + protected void startCleaner() throws Exception { + startThread('c', true); + } + + protected void startCleaner(MetaStoreThread.BooleanPointer looped) throws Exception { + startThread('c', false, looped); } protected Table newTable(String dbName, String tableName, boolean partitioned) throws TException { @@ -117,6 +122,9 @@ protected Table newTable(String dbName, String tableName, boolean partitioned, table.setParameters(parameters); + // drop the table first, in case some previous test created it + ms.dropTable(dbName, tableName); + ms.createTable(table); return table; } @@ -142,37 +150,27 @@ protected long openTxn() throws MetaException { return txns.get(0); } - protected void addDeltaFile(HiveConf conf, Table t, Partition p, long minTxn, long maxTxn, - int numRecords) throws Exception{ - addFile(conf, t, p, minTxn, maxTxn, numRecords, FileType.DELTA, 2, true); + protected void addDeltaFile(Table t, Partition p, long minTxn, long maxTxn, int numRecords) + throws Exception { + addFile(t, p, minTxn, maxTxn, numRecords, FileType.DELTA, 2, true); } - protected void addBaseFile(HiveConf conf, Table t, Partition p, long maxTxn, - int numRecords) throws Exception{ - addFile(conf, t, p, 0, maxTxn, numRecords, FileType.BASE, 2, true); + protected void addBaseFile(Table t, Partition p, long maxTxn, int numRecords) throws Exception { + addFile(t, p, 0, maxTxn, numRecords, FileType.BASE, 2, true); } - protected void addLegacyFile(HiveConf conf, Table t, Partition p, - int numRecords) throws Exception { - addFile(conf, t, p, 0, 0, numRecords, FileType.LEGACY, 2, true); + protected void addLegacyFile(Table t, Partition p, int numRecords) throws Exception { + addFile(t, p, 0, 0, numRecords, FileType.LEGACY, 2, true); } - protected void addDeltaFile(HiveConf conf, Table t, Partition p, long minTxn, long maxTxn, - int numRecords, int numBuckets, boolean allBucketsPresent) - throws Exception { - addFile(conf, t, p, minTxn, maxTxn, numRecords, FileType.DELTA, numBuckets, allBucketsPresent); + protected void addDeltaFile(Table t, Partition p, long minTxn, long maxTxn, int numRecords, + int numBuckets, boolean allBucketsPresent) throws Exception { + addFile(t, p, minTxn, maxTxn, numRecords, FileType.DELTA, numBuckets, allBucketsPresent); } - protected void addBaseFile(HiveConf conf, Table t, Partition p, long maxTxn, - int numRecords, int numBuckets, boolean allBucketsPresent) - throws Exception { - addFile(conf, t, p, 0, maxTxn, numRecords, FileType.BASE, numBuckets, allBucketsPresent); - } - - protected void addLegacyFile(HiveConf conf, Table t, Partition p, - int numRecords, int numBuckets, boolean allBucketsPresent) - throws Exception { - addFile(conf, t, p, 0, 0, numRecords, FileType.LEGACY, numBuckets, allBucketsPresent); + protected void addBaseFile(Table t, Partition p, long maxTxn, int numRecords, int numBuckets, + boolean allBucketsPresent) throws Exception { + addFile(t, p, 0, maxTxn, numRecords, FileType.BASE, numBuckets, allBucketsPresent); } protected List getDirectories(HiveConf conf, Table t, Partition p) throws Exception { @@ -191,6 +189,10 @@ protected void burnThroughTransactions(int num) throws MetaException, NoSuchTxnE for (long tid : rsp.getTxn_ids()) txnHandler.commitTxn(new CommitTxnRequest(tid)); } + protected void stopThread() { + stop.boolVal = true; + } + private StorageDescriptor newStorageDescriptor(String location, List sortCols) { StorageDescriptor sd = new StorageDescriptor(); List cols = new ArrayList(2); @@ -214,9 +216,13 @@ private StorageDescriptor newStorageDescriptor(String location, List sort return sd; } - // I can't do this with @Before because I want to be able to control the config file provided - // to each test. - private void startThread(char type, HiveConf conf) throws Exception { + // I can't do this with @Before because I want to be able to control when the thead starts + private void startThread(char type, boolean stopAfterOne) throws Exception { + startThread(type, stopAfterOne, new MetaStoreThread.BooleanPointer()); + } + + private void startThread(char type, boolean stopAfterOne, MetaStoreThread.BooleanPointer looped) + throws Exception { TxnDbUtil.setConfValues(conf); CompactorThread t = null; switch (type) { @@ -227,9 +233,10 @@ private void startThread(char type, HiveConf conf) throws Exception { } t.setThreadId((int) t.getId()); t.setHiveConf(conf); - stop.boolVal = true; - t.init(stop); - t.run(); + stop.boolVal = stopAfterOne; + t.init(stop, looped); + if (stopAfterOne) t.run(); + else t.start(); } private String getLocation(String tableName, String partValue) { @@ -243,7 +250,7 @@ private String getLocation(String tableName, String partValue) { private enum FileType {BASE, DELTA, LEGACY}; - private void addFile(HiveConf conf, Table t, Partition p, long minTxn, long maxTxn, + private void addFile(Table t, Partition p, long minTxn, long maxTxn, int numRecords, FileType type, int numBuckets, boolean allBucketsPresent) throws Exception { String partValue = (p == null) ? null : p.getValues().get(0); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestCleaner.java b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestCleaner.java index edc7f324d4e2..b63ad667b007 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestCleaner.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestCleaner.java @@ -18,21 +18,26 @@ package org.apache.hadoop.hive.ql.txn.compactor; import junit.framework.Assert; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.metastore.MetaStoreThread; import org.apache.hadoop.hive.metastore.api.*; import org.apache.hadoop.hive.metastore.txn.CompactionInfo; -import org.apache.hadoop.hive.metastore.txn.TxnDbUtil; -import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; /** * Tests for the compactor Cleaner thread */ public class TestCleaner extends CompactorTest { + + static final private Log LOG = LogFactory.getLog(TestCleaner.class.getName()); + public TestCleaner() throws Exception { super(); } @@ -41,19 +46,17 @@ public TestCleaner() throws Exception { public void nothing() throws Exception { // Test that the whole things works when there's nothing in the queue. This is just a // survival test. - startCleaner(new HiveConf()); + startCleaner(); } @Test public void cleanupAfterMajorTableCompaction() throws Exception { Table t = newTable("default", "camtc", false); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 20L, 20); - addDeltaFile(conf, t, null, 21L, 22L, 2); - addDeltaFile(conf, t, null, 23L, 24L, 2); - addBaseFile(conf, t, null, 25L, 25); + addBaseFile(t, null, 20L, 20); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); + addBaseFile(t, null, 25L, 25); burnThroughTransactions(25); @@ -63,7 +66,7 @@ public void cleanupAfterMajorTableCompaction() throws Exception { txnHandler.markCompacted(ci); txnHandler.setRunAs(ci.id, System.getProperty("user.name")); - startCleaner(conf); + startCleaner(); // Check there are no compactions requests left. ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); @@ -80,12 +83,10 @@ public void cleanupAfterMajorPartitionCompaction() throws Exception { Table t = newTable("default", "campc", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, p, 20L, 20); - addDeltaFile(conf, t, p, 21L, 22L, 2); - addDeltaFile(conf, t, p, 23L, 24L, 2); - addBaseFile(conf, t, p, 25L, 25); + addBaseFile(t, p, 20L, 20); + addDeltaFile(t, p, 21L, 22L, 2); + addDeltaFile(t, p, 23L, 24L, 2); + addBaseFile(t, p, 25L, 25); burnThroughTransactions(25); @@ -96,7 +97,7 @@ public void cleanupAfterMajorPartitionCompaction() throws Exception { txnHandler.markCompacted(ci); txnHandler.setRunAs(ci.id, System.getProperty("user.name")); - startCleaner(conf); + startCleaner(); // Check there are no compactions requests left. ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); @@ -112,12 +113,10 @@ public void cleanupAfterMajorPartitionCompaction() throws Exception { public void cleanupAfterMinorTableCompaction() throws Exception { Table t = newTable("default", "camitc", false); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 20L, 20); - addDeltaFile(conf, t, null, 21L, 22L, 2); - addDeltaFile(conf, t, null, 23L, 24L, 2); - addDeltaFile(conf, t, null, 21L, 24L, 4); + addBaseFile(t, null, 20L, 20); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); + addDeltaFile(t, null, 21L, 24L, 4); burnThroughTransactions(25); @@ -127,7 +126,7 @@ public void cleanupAfterMinorTableCompaction() throws Exception { txnHandler.markCompacted(ci); txnHandler.setRunAs(ci.id, System.getProperty("user.name")); - startCleaner(conf); + startCleaner(); // Check there are no compactions requests left. ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); @@ -151,12 +150,10 @@ public void cleanupAfterMinorPartitionCompaction() throws Exception { Table t = newTable("default", "camipc", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, p, 20L, 20); - addDeltaFile(conf, t, p, 21L, 22L, 2); - addDeltaFile(conf, t, p, 23L, 24L, 2); - addDeltaFile(conf, t, p, 21L, 24L, 4); + addBaseFile(t, p, 20L, 20); + addDeltaFile(t, p, 21L, 22L, 2); + addDeltaFile(t, p, 23L, 24L, 2); + addDeltaFile(t, p, 21L, 24L, 4); burnThroughTransactions(25); @@ -167,7 +164,7 @@ public void cleanupAfterMinorPartitionCompaction() throws Exception { txnHandler.markCompacted(ci); txnHandler.setRunAs(ci.id, System.getProperty("user.name")); - startCleaner(conf); + startCleaner(); // Check there are no compactions requests left. ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); @@ -190,12 +187,10 @@ public void cleanupAfterMinorPartitionCompaction() throws Exception { public void blockedByLockTable() throws Exception { Table t = newTable("default", "bblt", false); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 20L, 20); - addDeltaFile(conf, t, null, 21L, 22L, 2); - addDeltaFile(conf, t, null, 23L, 24L, 2); - addDeltaFile(conf, t, null, 21L, 24L, 4); + addBaseFile(t, null, 20L, 20); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); + addDeltaFile(t, null, 21L, 24L, 4); burnThroughTransactions(25); @@ -212,7 +207,7 @@ public void blockedByLockTable() throws Exception { LockRequest req = new LockRequest(components, "me", "localhost"); LockResponse res = txnHandler.lock(req); - startCleaner(conf); + startCleaner(); // Check there are no compactions requests left. ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); @@ -228,12 +223,10 @@ public void blockedByLockPartition() throws Exception { Table t = newTable("default", "bblp", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, p, 20L, 20); - addDeltaFile(conf, t, p, 21L, 22L, 2); - addDeltaFile(conf, t, p, 23L, 24L, 2); - addDeltaFile(conf, t, p, 21L, 24L, 4); + addBaseFile(t, p, 20L, 20); + addDeltaFile(t, p, 21L, 22L, 2); + addDeltaFile(t, p, 23L, 24L, 2); + addDeltaFile(t, p, 21L, 24L, 4); burnThroughTransactions(25); @@ -244,7 +237,7 @@ public void blockedByLockPartition() throws Exception { txnHandler.markCompacted(ci); txnHandler.setRunAs(ci.id, System.getProperty("user.name")); - LockComponent comp = new LockComponent(LockType.SHARED_WRITE, LockLevel.TABLE, "default"); + LockComponent comp = new LockComponent(LockType.SHARED_WRITE, LockLevel.PARTITION, "default"); comp.setTablename("bblp"); comp.setPartitionname("ds=today"); List components = new ArrayList(1); @@ -252,7 +245,7 @@ public void blockedByLockPartition() throws Exception { LockRequest req = new LockRequest(components, "me", "localhost"); LockResponse res = txnHandler.lock(req); - startCleaner(conf); + startCleaner(); // Check there are no compactions requests left. ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); @@ -264,16 +257,155 @@ public void blockedByLockPartition() throws Exception { Assert.assertEquals(CompactionType.MINOR, compacts.get(0).getType()); } + @Test + public void notBlockedBySubsequentLock() throws Exception { + Table t = newTable("default", "bblt", false); + + // Set the run frequency low on this test so it doesn't take long + conf.setTimeVar(HiveConf.ConfVars.HIVE_COMPACTOR_CLEANER_RUN_INTERVAL, 100, + TimeUnit.MILLISECONDS); + + addBaseFile(t, null, 20L, 20); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); + addDeltaFile(t, null, 21L, 24L, 4); + + burnThroughTransactions(25); + + CompactionRequest rqst = new CompactionRequest("default", "bblt", CompactionType.MINOR); + txnHandler.compact(rqst); + CompactionInfo ci = txnHandler.findNextToCompact("fred"); + txnHandler.markCompacted(ci); + txnHandler.setRunAs(ci.id, System.getProperty("user.name")); + + LockComponent comp = new LockComponent(LockType.SHARED_READ, LockLevel.TABLE, "default"); + comp.setTablename("bblt"); + List components = new ArrayList(1); + components.add(comp); + LockRequest req = new LockRequest(components, "me", "localhost"); + LockResponse res = txnHandler.lock(req); + + MetaStoreThread.BooleanPointer looped = new MetaStoreThread.BooleanPointer(); + looped.boolVal = false; + startCleaner(looped); + + // Make sure the compactor has a chance to run once + while (!looped.boolVal) { + Thread.currentThread().sleep(100); + } + + // There should still be one request, as the locks still held. + ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); + List compacts = rsp.getCompacts(); + Assert.assertEquals(1, compacts.size()); + + // obtain a second lock. This shouldn't block cleaner as it was acquired after the initial + // clean request + LockComponent comp2 = new LockComponent(LockType.SHARED_READ, LockLevel.TABLE, "default"); + comp2.setTablename("bblt"); + List components2 = new ArrayList(1); + components2.add(comp2); + LockRequest req2 = new LockRequest(components, "me", "localhost"); + LockResponse res2 = txnHandler.lock(req2); + + // Unlock the previous lock + txnHandler.unlock(new UnlockRequest(res.getLockid())); + looped.boolVal = false; + + while (!looped.boolVal) { + Thread.currentThread().sleep(100); + } + stopThread(); + Thread.currentThread().sleep(200); + + + // Check there are no compactions requests left. + rsp = txnHandler.showCompact(new ShowCompactRequest()); + compacts = rsp.getCompacts(); + Assert.assertEquals(0, compacts.size()); + } + + @Test + public void partitionNotBlockedBySubsequentLock() throws Exception { + Table t = newTable("default", "bblt", true); + Partition p = newPartition(t, "today"); + + // Set the run frequency low on this test so it doesn't take long + conf.setTimeVar(HiveConf.ConfVars.HIVE_COMPACTOR_CLEANER_RUN_INTERVAL, 100, + TimeUnit.MILLISECONDS); + + addBaseFile(t, p, 20L, 20); + addDeltaFile(t, p, 21L, 22L, 2); + addDeltaFile(t, p, 23L, 24L, 2); + addDeltaFile(t, p, 21L, 24L, 4); + + burnThroughTransactions(25); + + CompactionRequest rqst = new CompactionRequest("default", "bblt", CompactionType.MINOR); + rqst.setPartitionname("ds=today"); + txnHandler.compact(rqst); + CompactionInfo ci = txnHandler.findNextToCompact("fred"); + txnHandler.markCompacted(ci); + txnHandler.setRunAs(ci.id, System.getProperty("user.name")); + + LockComponent comp = new LockComponent(LockType.SHARED_READ, LockLevel.PARTITION, "default"); + comp.setTablename("bblt"); + comp.setPartitionname("ds=today"); + List components = new ArrayList(1); + components.add(comp); + LockRequest req = new LockRequest(components, "me", "localhost"); + LockResponse res = txnHandler.lock(req); + + MetaStoreThread.BooleanPointer looped = new MetaStoreThread.BooleanPointer(); + looped.boolVal = false; + startCleaner(looped); + + // Make sure the compactor has a chance to run once + while (!looped.boolVal) { + Thread.currentThread().sleep(100); + } + + // There should still be one request, as the locks still held. + ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); + List compacts = rsp.getCompacts(); + Assert.assertEquals(1, compacts.size()); + + + // obtain a second lock. This shouldn't block cleaner as it was acquired after the initial + // clean request + LockComponent comp2 = new LockComponent(LockType.SHARED_READ, LockLevel.PARTITION, "default"); + comp2.setTablename("bblt"); + comp2.setPartitionname("ds=today"); + List components2 = new ArrayList(1); + components2.add(comp2); + LockRequest req2 = new LockRequest(components, "me", "localhost"); + LockResponse res2 = txnHandler.lock(req2); + + // Unlock the previous lock + txnHandler.unlock(new UnlockRequest(res.getLockid())); + looped.boolVal = false; + + while (!looped.boolVal) { + Thread.currentThread().sleep(100); + } + stopThread(); + Thread.currentThread().sleep(200); + + + // Check there are no compactions requests left. + rsp = txnHandler.showCompact(new ShowCompactRequest()); + compacts = rsp.getCompacts(); + Assert.assertEquals(0, compacts.size()); + } + @Test public void cleanupAfterMajorPartitionCompactionNoBase() throws Exception { Table t = newTable("default", "campcnb", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - - addDeltaFile(conf, t, p, 1L, 22L, 22); - addDeltaFile(conf, t, p, 23L, 24L, 2); - addBaseFile(conf, t, p, 25L, 25); + addDeltaFile(t, p, 1L, 22L, 22); + addDeltaFile(t, p, 23L, 24L, 2); + addBaseFile(t, p, 25L, 25); burnThroughTransactions(25); @@ -284,7 +416,7 @@ public void cleanupAfterMajorPartitionCompactionNoBase() throws Exception { txnHandler.markCompacted(ci); txnHandler.setRunAs(ci.id, System.getProperty("user.name")); - startCleaner(conf); + startCleaner(); // Check there are no compactions requests left. ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); @@ -295,9 +427,4 @@ public void cleanupAfterMajorPartitionCompactionNoBase() throws Exception { Assert.assertEquals(1, paths.size()); Assert.assertEquals("base_25", paths.get(0).getName()); } - - @Before - public void setUpTxnDb() throws Exception { - TxnDbUtil.setConfValues(new HiveConf()); - } } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestInitiator.java b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestInitiator.java index 128fef12cd15..7d88c1a85b3b 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestInitiator.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestInitiator.java @@ -47,7 +47,7 @@ public TestInitiator() throws Exception { public void nothing() throws Exception { // Test that the whole things works when there's nothing in the queue. This is just a // survival test. - startInitiator(new HiveConf()); + startInitiator(); } @Test @@ -63,7 +63,7 @@ public void recoverFailedLocalWorkers() throws Exception { txnHandler.findNextToCompact(Worker.hostname() + "-193892"); txnHandler.findNextToCompact("nosuchhost-193892"); - startInitiator(new HiveConf()); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -89,10 +89,9 @@ public void recoverFailedRemoteWorkers() throws Exception { txnHandler.findNextToCompact("nosuchhost-193892"); - HiveConf conf = new HiveConf(); conf.setTimeVar(HiveConf.ConfVars.HIVE_COMPACTOR_WORKER_TIMEOUT, 1L, TimeUnit.MILLISECONDS); - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -104,7 +103,6 @@ public void recoverFailedRemoteWorkers() throws Exception { public void majorCompactOnTableTooManyAborts() throws Exception { Table t = newTable("default", "mcottma", false); - HiveConf conf = new HiveConf(); HiveConf.setIntVar(conf, HiveConf.ConfVars.HIVE_COMPACTOR_ABORTEDTXN_THRESHOLD, 10); for (int i = 0; i < 11; i++) { @@ -119,7 +117,7 @@ public void majorCompactOnTableTooManyAborts() throws Exception { txnHandler.abortTxn(new AbortTxnRequest(txnid)); } - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -134,7 +132,6 @@ public void majorCompactOnPartitionTooManyAborts() throws Exception { Table t = newTable("default", "mcoptma", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); HiveConf.setIntVar(conf, HiveConf.ConfVars.HIVE_COMPACTOR_ABORTEDTXN_THRESHOLD, 10); for (int i = 0; i < 11; i++) { @@ -150,7 +147,7 @@ public void majorCompactOnPartitionTooManyAborts() throws Exception { txnHandler.abortTxn(new AbortTxnRequest(txnid)); } - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -168,7 +165,6 @@ public void noCompactOnManyDifferentPartitionAborts() throws Exception { Partition p = newPartition(t, "day-" + i); } - HiveConf conf = new HiveConf(); HiveConf.setIntVar(conf, HiveConf.ConfVars.HIVE_COMPACTOR_ABORTEDTXN_THRESHOLD, 10); for (int i = 0; i < 11; i++) { @@ -184,7 +180,7 @@ public void noCompactOnManyDifferentPartitionAborts() throws Exception { txnHandler.abortTxn(new AbortTxnRequest(txnid)); } - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); Assert.assertEquals(0, rsp.getCompactsSize()); @@ -197,8 +193,6 @@ public void cleanEmptyAbortedTxns() throws Exception { // accidently clean it too. Table t = newTable("default", "ceat", false); - HiveConf conf = new HiveConf(); - long txnid = openTxn(); LockComponent comp = new LockComponent(LockType.SHARED_WRITE, LockLevel.TABLE, "default"); comp.setTablename("ceat"); @@ -216,7 +210,7 @@ public void cleanEmptyAbortedTxns() throws Exception { GetOpenTxnsResponse openTxns = txnHandler.getOpenTxns(); Assert.assertEquals(101, openTxns.getOpen_txnsSize()); - startInitiator(conf); + startInitiator(); openTxns = txnHandler.getOpenTxns(); Assert.assertEquals(1, openTxns.getOpen_txnsSize()); @@ -228,7 +222,6 @@ public void noCompactWhenNoCompactSet() throws Exception { parameters.put("NO_AUTO_COMPACTION", "true"); Table t = newTable("default", "ncwncs", false, parameters); - HiveConf conf = new HiveConf(); HiveConf.setIntVar(conf, HiveConf.ConfVars.HIVE_COMPACTOR_ABORTEDTXN_THRESHOLD, 10); for (int i = 0; i < 11; i++) { @@ -243,7 +236,7 @@ public void noCompactWhenNoCompactSet() throws Exception { txnHandler.abortTxn(new AbortTxnRequest(txnid)); } - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); Assert.assertEquals(0, rsp.getCompactsSize()); @@ -253,7 +246,6 @@ public void noCompactWhenNoCompactSet() throws Exception { public void noCompactWhenCompactAlreadyScheduled() throws Exception { Table t = newTable("default", "ncwcas", false); - HiveConf conf = new HiveConf(); HiveConf.setIntVar(conf, HiveConf.ConfVars.HIVE_COMPACTOR_ABORTEDTXN_THRESHOLD, 10); for (int i = 0; i < 11; i++) { @@ -277,7 +269,7 @@ public void noCompactWhenCompactAlreadyScheduled() throws Exception { Assert.assertEquals("initiated", compacts.get(0).getState()); Assert.assertEquals("ncwcas", compacts.get(0).getTablename()); - startInitiator(conf); + startInitiator(); rsp = txnHandler.showCompact(new ShowCompactRequest()); compacts = rsp.getCompacts(); @@ -291,11 +283,9 @@ public void noCompactWhenCompactAlreadyScheduled() throws Exception { public void compactTableHighDeltaPct() throws Exception { Table t = newTable("default", "cthdp", false); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 20L, 20); - addDeltaFile(conf, t, null, 21L, 22L, 2); - addDeltaFile(conf, t, null, 23L, 24L, 2); + addBaseFile(t, null, 20L, 20); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); burnThroughTransactions(23); @@ -309,7 +299,7 @@ public void compactTableHighDeltaPct() throws Exception { LockResponse res = txnHandler.lock(req); txnHandler.commitTxn(new CommitTxnRequest(txnid)); - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -324,11 +314,9 @@ public void compactPartitionHighDeltaPct() throws Exception { Table t = newTable("default", "cphdp", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, p, 20L, 20); - addDeltaFile(conf, t, p, 21L, 22L, 2); - addDeltaFile(conf, t, p, 23L, 24L, 2); + addBaseFile(t, p, 20L, 20); + addDeltaFile(t, p, 21L, 22L, 2); + addDeltaFile(t, p, 23L, 24L, 2); burnThroughTransactions(23); @@ -343,7 +331,7 @@ public void compactPartitionHighDeltaPct() throws Exception { LockResponse res = txnHandler.lock(req); txnHandler.commitTxn(new CommitTxnRequest(txnid)); - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -358,11 +346,9 @@ public void compactPartitionHighDeltaPct() throws Exception { public void noCompactTableDeltaPctNotHighEnough() throws Exception { Table t = newTable("default", "nctdpnhe", false); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 50L, 50); - addDeltaFile(conf, t, null, 21L, 22L, 2); - addDeltaFile(conf, t, null, 23L, 24L, 2); + addBaseFile(t, null, 50L, 50); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); burnThroughTransactions(53); @@ -376,7 +362,7 @@ public void noCompactTableDeltaPctNotHighEnough() throws Exception { LockResponse res = txnHandler.lock(req); txnHandler.commitTxn(new CommitTxnRequest(txnid)); - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); Assert.assertEquals(0, rsp.getCompactsSize()); @@ -386,20 +372,18 @@ public void noCompactTableDeltaPctNotHighEnough() throws Exception { public void compactTableTooManyDeltas() throws Exception { Table t = newTable("default", "cttmd", false); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 200L, 200); - addDeltaFile(conf, t, null, 201L, 201L, 1); - addDeltaFile(conf, t, null, 202L, 202L, 1); - addDeltaFile(conf, t, null, 203L, 203L, 1); - addDeltaFile(conf, t, null, 204L, 204L, 1); - addDeltaFile(conf, t, null, 205L, 205L, 1); - addDeltaFile(conf, t, null, 206L, 206L, 1); - addDeltaFile(conf, t, null, 207L, 207L, 1); - addDeltaFile(conf, t, null, 208L, 208L, 1); - addDeltaFile(conf, t, null, 209L, 209L, 1); - addDeltaFile(conf, t, null, 210L, 210L, 1); - addDeltaFile(conf, t, null, 211L, 211L, 1); + addBaseFile(t, null, 200L, 200); + addDeltaFile(t, null, 201L, 201L, 1); + addDeltaFile(t, null, 202L, 202L, 1); + addDeltaFile(t, null, 203L, 203L, 1); + addDeltaFile(t, null, 204L, 204L, 1); + addDeltaFile(t, null, 205L, 205L, 1); + addDeltaFile(t, null, 206L, 206L, 1); + addDeltaFile(t, null, 207L, 207L, 1); + addDeltaFile(t, null, 208L, 208L, 1); + addDeltaFile(t, null, 209L, 209L, 1); + addDeltaFile(t, null, 210L, 210L, 1); + addDeltaFile(t, null, 211L, 211L, 1); burnThroughTransactions(210); @@ -413,7 +397,7 @@ public void compactTableTooManyDeltas() throws Exception { LockResponse res = txnHandler.lock(req); txnHandler.commitTxn(new CommitTxnRequest(txnid)); - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -428,20 +412,18 @@ public void compactPartitionTooManyDeltas() throws Exception { Table t = newTable("default", "cptmd", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, p, 200L, 200); - addDeltaFile(conf, t, p, 201L, 201L, 1); - addDeltaFile(conf, t, p, 202L, 202L, 1); - addDeltaFile(conf, t, p, 203L, 203L, 1); - addDeltaFile(conf, t, p, 204L, 204L, 1); - addDeltaFile(conf, t, p, 205L, 205L, 1); - addDeltaFile(conf, t, p, 206L, 206L, 1); - addDeltaFile(conf, t, p, 207L, 207L, 1); - addDeltaFile(conf, t, p, 208L, 208L, 1); - addDeltaFile(conf, t, p, 209L, 209L, 1); - addDeltaFile(conf, t, p, 210L, 210L, 1); - addDeltaFile(conf, t, p, 211L, 211L, 1); + addBaseFile(t, p, 200L, 200); + addDeltaFile(t, p, 201L, 201L, 1); + addDeltaFile(t, p, 202L, 202L, 1); + addDeltaFile(t, p, 203L, 203L, 1); + addDeltaFile(t, p, 204L, 204L, 1); + addDeltaFile(t, p, 205L, 205L, 1); + addDeltaFile(t, p, 206L, 206L, 1); + addDeltaFile(t, p, 207L, 207L, 1); + addDeltaFile(t, p, 208L, 208L, 1); + addDeltaFile(t, p, 209L, 209L, 1); + addDeltaFile(t, p, 210L, 210L, 1); + addDeltaFile(t, p, 211L, 211L, 1); burnThroughTransactions(210); @@ -456,7 +438,7 @@ public void compactPartitionTooManyDeltas() throws Exception { LockResponse res = txnHandler.lock(req); txnHandler.commitTxn(new CommitTxnRequest(txnid)); - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -471,11 +453,9 @@ public void compactPartitionTooManyDeltas() throws Exception { public void noCompactTableNotEnoughDeltas() throws Exception { Table t = newTable("default", "nctned", false); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 200L, 200); - addDeltaFile(conf, t, null, 201L, 205L, 5); - addDeltaFile(conf, t, null, 206L, 211L, 6); + addBaseFile(t, null, 200L, 200); + addDeltaFile(t, null, 201L, 205L, 5); + addDeltaFile(t, null, 206L, 211L, 6); burnThroughTransactions(210); @@ -489,7 +469,7 @@ public void noCompactTableNotEnoughDeltas() throws Exception { LockResponse res = txnHandler.lock(req); txnHandler.commitTxn(new CommitTxnRequest(txnid)); - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); Assert.assertEquals(0, rsp.getCompactsSize()); @@ -499,20 +479,18 @@ public void noCompactTableNotEnoughDeltas() throws Exception { public void chooseMajorOverMinorWhenBothValid() throws Exception { Table t = newTable("default", "cmomwbv", false); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 200L, 200); - addDeltaFile(conf, t, null, 201L, 211L, 11); - addDeltaFile(conf, t, null, 212L, 222L, 11); - addDeltaFile(conf, t, null, 223L, 233L, 11); - addDeltaFile(conf, t, null, 234L, 244L, 11); - addDeltaFile(conf, t, null, 245L, 255L, 11); - addDeltaFile(conf, t, null, 256L, 266L, 11); - addDeltaFile(conf, t, null, 267L, 277L, 11); - addDeltaFile(conf, t, null, 278L, 288L, 11); - addDeltaFile(conf, t, null, 289L, 299L, 11); - addDeltaFile(conf, t, null, 300L, 310L, 11); - addDeltaFile(conf, t, null, 311L, 321L, 11); + addBaseFile(t, null, 200L, 200); + addDeltaFile(t, null, 201L, 211L, 11); + addDeltaFile(t, null, 212L, 222L, 11); + addDeltaFile(t, null, 223L, 233L, 11); + addDeltaFile(t, null, 234L, 244L, 11); + addDeltaFile(t, null, 245L, 255L, 11); + addDeltaFile(t, null, 256L, 266L, 11); + addDeltaFile(t, null, 267L, 277L, 11); + addDeltaFile(t, null, 278L, 288L, 11); + addDeltaFile(t, null, 289L, 299L, 11); + addDeltaFile(t, null, 300L, 310L, 11); + addDeltaFile(t, null, 311L, 321L, 11); burnThroughTransactions(320); @@ -526,7 +504,7 @@ public void chooseMajorOverMinorWhenBothValid() throws Exception { LockResponse res = txnHandler.lock(req); txnHandler.commitTxn(new CommitTxnRequest(txnid)); - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -541,19 +519,17 @@ public void enoughDeltasNoBase() throws Exception { Table t = newTable("default", "ednb", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - - addDeltaFile(conf, t, p, 1L, 201L, 200); - addDeltaFile(conf, t, p, 202L, 202L, 1); - addDeltaFile(conf, t, p, 203L, 203L, 1); - addDeltaFile(conf, t, p, 204L, 204L, 1); - addDeltaFile(conf, t, p, 205L, 205L, 1); - addDeltaFile(conf, t, p, 206L, 206L, 1); - addDeltaFile(conf, t, p, 207L, 207L, 1); - addDeltaFile(conf, t, p, 208L, 208L, 1); - addDeltaFile(conf, t, p, 209L, 209L, 1); - addDeltaFile(conf, t, p, 210L, 210L, 1); - addDeltaFile(conf, t, p, 211L, 211L, 1); + addDeltaFile(t, p, 1L, 201L, 200); + addDeltaFile(t, p, 202L, 202L, 1); + addDeltaFile(t, p, 203L, 203L, 1); + addDeltaFile(t, p, 204L, 204L, 1); + addDeltaFile(t, p, 205L, 205L, 1); + addDeltaFile(t, p, 206L, 206L, 1); + addDeltaFile(t, p, 207L, 207L, 1); + addDeltaFile(t, p, 208L, 208L, 1); + addDeltaFile(t, p, 209L, 209L, 1); + addDeltaFile(t, p, 210L, 210L, 1); + addDeltaFile(t, p, 211L, 211L, 1); burnThroughTransactions(210); @@ -568,7 +544,7 @@ public void enoughDeltasNoBase() throws Exception { LockResponse res = txnHandler.lock(req); txnHandler.commitTxn(new CommitTxnRequest(txnid)); - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -584,11 +560,9 @@ public void twoTxnsOnSamePartitionGenerateOneCompactionRequest() throws Exceptio Table t = newTable("default", "ttospgocr", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, p, 20L, 20); - addDeltaFile(conf, t, p, 21L, 22L, 2); - addDeltaFile(conf, t, p, 23L, 24L, 2); + addBaseFile(t, p, 20L, 20); + addDeltaFile(t, p, 21L, 22L, 2); + addDeltaFile(t, p, 23L, 24L, 2); burnThroughTransactions(23); @@ -614,7 +588,7 @@ public void twoTxnsOnSamePartitionGenerateOneCompactionRequest() throws Exceptio res = txnHandler.lock(req); txnHandler.commitTxn(new CommitTxnRequest(txnid)); - startInitiator(conf); + startInitiator(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -626,9 +600,4 @@ public void twoTxnsOnSamePartitionGenerateOneCompactionRequest() throws Exceptio } // TODO test compactions with legacy file types - - @Before - public void setUpTxnDb() throws Exception { - TxnDbUtil.setConfValues(new HiveConf()); - } } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestWorker.java b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestWorker.java index 90a722b11840..17bbe24152ef 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestWorker.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestWorker.java @@ -48,7 +48,7 @@ public TestWorker() throws Exception { public void nothing() throws Exception { // Test that the whole things works when there's nothing in the queue. This is just a // survival test. - startWorker(new HiveConf()); + startWorker(); } @Test @@ -205,19 +205,17 @@ public void sortedTable() throws Exception { Table t = newTable("default", "st", false, new HashMap(), sortCols); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 20L, 20); - addDeltaFile(conf, t, null, 21L, 22L, 2); - addDeltaFile(conf, t, null, 23L, 24L, 2); - addDeltaFile(conf, t, null, 21L, 24L, 4); + addBaseFile(t, null, 20L, 20); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); + addDeltaFile(t, null, 21L, 24L, 4); burnThroughTransactions(25); CompactionRequest rqst = new CompactionRequest("default", "st", CompactionType.MINOR); txnHandler.compact(rqst); - startWorker(new HiveConf()); + startWorker(); // There should still be four directories in the location. FileSystem fs = FileSystem.get(conf); @@ -232,12 +230,11 @@ public void sortedPartition() throws Exception { Table t = newTable("default", "sp", true, new HashMap(), sortCols); Partition p = newPartition(t, "today", sortCols); - HiveConf conf = new HiveConf(); - addBaseFile(conf, t, p, 20L, 20); - addDeltaFile(conf, t, p, 21L, 22L, 2); - addDeltaFile(conf, t, p, 23L, 24L, 2); - addDeltaFile(conf, t, p, 21L, 24L, 4); + addBaseFile(t, p, 20L, 20); + addDeltaFile(t, p, 21L, 22L, 2); + addDeltaFile(t, p, 23L, 24L, 2); + addDeltaFile(t, p, 21L, 24L, 4); burnThroughTransactions(25); @@ -245,7 +242,7 @@ public void sortedPartition() throws Exception { rqst.setPartitionname("ds=today"); txnHandler.compact(rqst); - startWorker(new HiveConf()); + startWorker(); // There should still be four directories in the location. FileSystem fs = FileSystem.get(conf); @@ -258,18 +255,16 @@ public void minorTableWithBase() throws Exception { LOG.debug("Starting minorTableWithBase"); Table t = newTable("default", "mtwb", false); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 20L, 20); - addDeltaFile(conf, t, null, 21L, 22L, 2); - addDeltaFile(conf, t, null, 23L, 24L, 2); + addBaseFile(t, null, 20L, 20); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); burnThroughTransactions(25); CompactionRequest rqst = new CompactionRequest("default", "mtwb", CompactionType.MINOR); txnHandler.compact(rqst); - startWorker(conf); + startWorker(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -304,11 +299,10 @@ public void minorTableWithBase() throws Exception { public void minorPartitionWithBase() throws Exception { Table t = newTable("default", "mpwb", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - addBaseFile(conf, t, p, 20L, 20); - addDeltaFile(conf, t, p, 21L, 22L, 2); - addDeltaFile(conf, t, p, 23L, 24L, 2); + addBaseFile(t, p, 20L, 20); + addDeltaFile(t, p, 21L, 22L, 2); + addDeltaFile(t, p, 23L, 24L, 2); burnThroughTransactions(25); @@ -316,7 +310,7 @@ public void minorPartitionWithBase() throws Exception { rqst.setPartitionname("ds=today"); txnHandler.compact(rqst); - startWorker(new HiveConf()); + startWorker(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -351,17 +345,15 @@ public void minorTableNoBase() throws Exception { LOG.debug("Starting minorTableWithBase"); Table t = newTable("default", "mtnb", false); - HiveConf conf = new HiveConf(); - - addDeltaFile(conf, t, null, 1L, 2L, 2); - addDeltaFile(conf, t, null, 3L, 4L, 2); + addDeltaFile(t, null, 1L, 2L, 2); + addDeltaFile(t, null, 3L, 4L, 2); burnThroughTransactions(5); CompactionRequest rqst = new CompactionRequest("default", "mtnb", CompactionType.MINOR); txnHandler.compact(rqst); - startWorker(new HiveConf()); + startWorker(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -396,18 +388,16 @@ public void majorTableWithBase() throws Exception { LOG.debug("Starting majorTableWithBase"); Table t = newTable("default", "matwb", false); - HiveConf conf = new HiveConf(); - - addBaseFile(conf, t, null, 20L, 20); - addDeltaFile(conf, t, null, 21L, 22L, 2); - addDeltaFile(conf, t, null, 23L, 24L, 2); + addBaseFile(t, null, 20L, 20); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); burnThroughTransactions(25); CompactionRequest rqst = new CompactionRequest("default", "matwb", CompactionType.MAJOR); txnHandler.compact(rqst); - startWorker(new HiveConf()); + startWorker(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -442,11 +432,10 @@ public void majorPartitionWithBase() throws Exception { LOG.debug("Starting majorPartitionWithBase"); Table t = newTable("default", "mapwb", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - addBaseFile(conf, t, p, 20L, 20); - addDeltaFile(conf, t, p, 21L, 22L, 2); - addDeltaFile(conf, t, p, 23L, 24L, 2); + addBaseFile(t, p, 20L, 20); + addDeltaFile(t, p, 21L, 22L, 2); + addDeltaFile(t, p, 23L, 24L, 2); burnThroughTransactions(25); @@ -454,7 +443,7 @@ public void majorPartitionWithBase() throws Exception { rqst.setPartitionname("ds=today"); txnHandler.compact(rqst); - startWorker(new HiveConf()); + startWorker(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -489,17 +478,15 @@ public void majorTableNoBase() throws Exception { LOG.debug("Starting majorTableNoBase"); Table t = newTable("default", "matnb", false); - HiveConf conf = new HiveConf(); - - addDeltaFile(conf, t, null, 1L, 2L, 2); - addDeltaFile(conf, t, null, 3L, 4L, 2); + addDeltaFile(t, null, 1L, 2L, 2); + addDeltaFile(t, null, 3L, 4L, 2); burnThroughTransactions(5); CompactionRequest rqst = new CompactionRequest("default", "matnb", CompactionType.MAJOR); txnHandler.compact(rqst); - startWorker(new HiveConf()); + startWorker(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -534,18 +521,16 @@ public void majorTableLegacy() throws Exception { LOG.debug("Starting majorTableLegacy"); Table t = newTable("default", "matl", false); - HiveConf conf = new HiveConf(); - - addLegacyFile(conf, t, null, 20); - addDeltaFile(conf, t, null, 21L, 22L, 2); - addDeltaFile(conf, t, null, 23L, 24L, 2); + addLegacyFile(t, null, 20); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); burnThroughTransactions(25); CompactionRequest rqst = new CompactionRequest("default", "matl", CompactionType.MAJOR); txnHandler.compact(rqst); - startWorker(new HiveConf()); + startWorker(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -580,18 +565,16 @@ public void minorTableLegacy() throws Exception { LOG.debug("Starting minorTableLegacy"); Table t = newTable("default", "mtl", false); - HiveConf conf = new HiveConf(); - - addLegacyFile(conf, t, null, 20); - addDeltaFile(conf, t, null, 21L, 22L, 2); - addDeltaFile(conf, t, null, 23L, 24L, 2); + addLegacyFile(t, null, 20); + addDeltaFile(t, null, 21L, 22L, 2); + addDeltaFile(t, null, 23L, 24L, 2); burnThroughTransactions(25); CompactionRequest rqst = new CompactionRequest("default", "mtl", CompactionType.MINOR); txnHandler.compact(rqst); - startWorker(new HiveConf()); + startWorker(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -622,11 +605,10 @@ public void minorTableLegacy() throws Exception { public void majorPartitionWithBaseMissingBuckets() throws Exception { Table t = newTable("default", "mapwbmb", true); Partition p = newPartition(t, "today"); - HiveConf conf = new HiveConf(); - addBaseFile(conf, t, p, 20L, 20, 2, false); - addDeltaFile(conf, t, p, 21L, 22L, 2, 2, false); - addDeltaFile(conf, t, p, 23L, 24L, 2); + addBaseFile(t, p, 20L, 20, 2, false); + addDeltaFile(t, p, 21L, 22L, 2, 2, false); + addDeltaFile(t, p, 23L, 24L, 2); burnThroughTransactions(25); @@ -634,7 +616,7 @@ public void majorPartitionWithBaseMissingBuckets() throws Exception { rqst.setPartitionname("ds=today"); txnHandler.compact(rqst); - startWorker(new HiveConf()); + startWorker(); ShowCompactResponse rsp = txnHandler.showCompact(new ShowCompactRequest()); List compacts = rsp.getCompacts(); @@ -669,9 +651,4 @@ public void majorPartitionWithBaseMissingBuckets() throws Exception { } Assert.assertTrue(sawNewBase); } - - @Before - public void setUpTxnDb() throws Exception { - TxnDbUtil.setConfValues(new HiveConf()); - } } From e23254b25c3b5653f799cda870d9a7ea532cd6a9 Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Mon, 13 Oct 2014 21:36:40 +0000 Subject: [PATCH 101/339] HIVE-8292: MapRecordSource should obtain its ExecContext from a MapOperator (Gopal V, reviewed by Vikram Dixit) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631565 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java index 04195689e338..6d075e86dc40 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java @@ -45,7 +45,7 @@ public class MapRecordSource implements RecordSource { private final boolean grouped = false; void init(JobConf jconf, MapOperator mapOp, KeyValueReader reader) throws IOException { - execContext = new ExecMapperContext(jconf); + execContext = mapOp.getExecContext(); this.mapOp = mapOp; this.reader = reader; } From efae2393aa53708a717cc9ac4a1ca61290de21d7 Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Mon, 13 Oct 2014 21:58:06 +0000 Subject: [PATCH 102/339] HIVE-8328: Mapjoins in reducer vertices should reuse cached hashtables (Gopal V, reviewed by Vikram Dixit) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631573 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/exec/MapJoinOperator.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java index e3877d9023b5..4a828457e8e8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java @@ -171,9 +171,14 @@ public void generateMapMetaData() throws HiveException, SerDeException { private void loadHashTable() throws HiveException { - if ((this.getExecContext() != null) - && ((this.getExecContext().getLocalWork() == null) || (!this.getExecContext() - .getLocalWork().getInputFileChangeSensitive()))) { + if ((this.getExecContext() == null) + || (this.getExecContext().getLocalWork() == null) + || (this.getExecContext().getLocalWork().getInputFileChangeSensitive() == false) + ) { + /* + * This early-exit criteria is not applicable if the local work is sensitive to input file changes. + * But the check does no apply if there is no local work, or if this is a reducer vertex (execContext is null). + */ if (hashTblInitedOnce) { return; } else { From 04c83b40c435dd448f27e0e68c36db66604bd716 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Mon, 13 Oct 2014 22:00:36 +0000 Subject: [PATCH 103/339] HIVE-8368 compactor is improperly writing delete records in base file (Alan Gates reviewed by Eugene Koifman) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631574 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/io/AcidInputFormat.java | 2 ++ .../hive/ql/io/orc/OrcRawRecordMerger.java | 5 ++++ .../hive/ql/txn/compactor/CompactorMR.java | 4 ++- .../ql/io/orc/TestOrcRawRecordMerger.java | 4 +++ .../hive/ql/txn/compactor/CompactorTest.java | 10 +++++++ .../hive/ql/txn/compactor/TestWorker.java | 27 ++++++++++--------- 6 files changed, 39 insertions(+), 13 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/AcidInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/AcidInputFormat.java index 2f63524e72c8..e1d2395476e8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/AcidInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/AcidInputFormat.java @@ -155,6 +155,8 @@ public RowReader getReader(InputSplit split, public static interface RawReader extends RecordReader { public ObjectInspector getObjectInspector(); + + public boolean isDelete(V value); } /** diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java index fd97cb93037a..a19d4e595303 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java @@ -664,6 +664,11 @@ public ObjectInspector getObjectInspector() { (OrcStruct.createObjectInspector(rowType)); } + @Override + public boolean isDelete(OrcStruct value) { + return OrcRecordUpdater.getOperation(value) == OrcRecordUpdater.DELETE_OPERATION; + } + /** * Get the number of columns in the underlying rows. * @return 0 if there are no base and no deltas. diff --git a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorMR.java b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorMR.java index 93d1bc00b905..1d3cf0029632 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorMR.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorMR.java @@ -506,13 +506,15 @@ public void map(WritableComparable key, CompactorInputSplit split, ValidTxnList txnList = new ValidTxnListImpl(jobConf.get(ValidTxnList.VALID_TXNS_KEY)); + boolean isMajor = jobConf.getBoolean(IS_MAJOR, false); AcidInputFormat.RawReader reader = - aif.getRawReader(jobConf, jobConf.getBoolean(IS_MAJOR, false), split.getBucket(), + aif.getRawReader(jobConf, isMajor, split.getBucket(), txnList, split.getBaseDir(), split.getDeltaDirs()); RecordIdentifier identifier = reader.createKey(); V value = reader.createValue(); getWriter(reporter, reader.getObjectInspector(), split.getBucket()); while (reader.next(identifier, value)) { + if (isMajor && reader.isDelete(value)) continue; writer.write(value); reporter.progress(); } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcRawRecordMerger.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcRawRecordMerger.java index 421fbda32af0..595e0036621a 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcRawRecordMerger.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcRawRecordMerger.java @@ -56,6 +56,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; public class TestOrcRawRecordMerger { @@ -574,12 +575,14 @@ public void testNewBaseAndDelta() throws Exception { OrcRecordUpdater.getOperation(event)); assertEquals(new ReaderKey(0, BUCKET, 0, 200), id); assertEquals("update 1", getValue(event)); + assertFalse(merger.isDelete(event)); assertEquals(true, merger.next(id, event)); assertEquals(OrcRecordUpdater.INSERT_OPERATION, OrcRecordUpdater.getOperation(event)); assertEquals(new ReaderKey(0, BUCKET, 1, 0), id); assertEquals("second", getValue(event)); + assertFalse(merger.isDelete(event)); assertEquals(true, merger.next(id, event)); assertEquals(OrcRecordUpdater.UPDATE_OPERATION, @@ -616,6 +619,7 @@ public void testNewBaseAndDelta() throws Exception { OrcRecordUpdater.getOperation(event)); assertEquals(new ReaderKey(0, BUCKET, 7, 200), id); assertNull(OrcRecordUpdater.getRow(event)); + assertTrue(merger.isDelete(event)); assertEquals(true, merger.next(id, event)); assertEquals(OrcRecordUpdater.DELETE_OPERATION, diff --git a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/CompactorTest.java b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/CompactorTest.java index d4c2a7b55429..9ebdfd365fd7 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/CompactorTest.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/CompactorTest.java @@ -339,6 +339,7 @@ static class MockRawReader implements AcidInputFormat.RawReader { private final Configuration conf; private FSDataInputStream is = null; private final FileSystem fs; + private boolean lastWasDelete = true; MockRawReader(Configuration conf, List files) throws IOException { filesToRead = new Stack(); @@ -352,6 +353,15 @@ public ObjectInspector getObjectInspector() { return null; } + @Override + public boolean isDelete(Text value) { + // Alternate between returning deleted and not. This is easier than actually + // tracking operations. We test that this is getting properly called by checking that only + // half the records show up in base files after major compactions. + lastWasDelete = !lastWasDelete; + return lastWasDelete; + } + @Override public boolean next(RecordIdentifier identifier, Text text) throws IOException { if (is == null) { diff --git a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestWorker.java b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestWorker.java index 17bbe24152ef..e525ef992af6 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestWorker.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/txn/compactor/TestWorker.java @@ -418,8 +418,8 @@ public void majorTableWithBase() throws Exception { Assert.assertEquals(2, buckets.length); Assert.assertTrue(buckets[0].getPath().getName().matches("bucket_0000[01]")); Assert.assertTrue(buckets[1].getPath().getName().matches("bucket_0000[01]")); - Assert.assertEquals(1248L, buckets[0].getLen()); - Assert.assertEquals(1248L, buckets[1].getLen()); + Assert.assertEquals(624L, buckets[0].getLen()); + Assert.assertEquals(624L, buckets[1].getLen()); } else { LOG.debug("This is not the file you are looking for " + stat[i].getPath().getName()); } @@ -464,8 +464,8 @@ public void majorPartitionWithBase() throws Exception { Assert.assertEquals(2, buckets.length); Assert.assertTrue(buckets[0].getPath().getName().matches("bucket_0000[01]")); Assert.assertTrue(buckets[1].getPath().getName().matches("bucket_0000[01]")); - Assert.assertEquals(1248L, buckets[0].getLen()); - Assert.assertEquals(1248L, buckets[1].getLen()); + Assert.assertEquals(624L, buckets[0].getLen()); + Assert.assertEquals(624L, buckets[1].getLen()); } else { LOG.debug("This is not the file you are looking for " + stat[i].getPath().getName()); } @@ -507,8 +507,8 @@ public void majorTableNoBase() throws Exception { Assert.assertEquals(2, buckets.length); Assert.assertTrue(buckets[0].getPath().getName().matches("bucket_0000[01]")); Assert.assertTrue(buckets[1].getPath().getName().matches("bucket_0000[01]")); - Assert.assertEquals(208L, buckets[0].getLen()); - Assert.assertEquals(208L, buckets[1].getLen()); + Assert.assertEquals(104L, buckets[0].getLen()); + Assert.assertEquals(104L, buckets[1].getLen()); } else { LOG.debug("This is not the file you are looking for " + stat[i].getPath().getName()); } @@ -551,8 +551,8 @@ public void majorTableLegacy() throws Exception { Assert.assertEquals(2, buckets.length); Assert.assertTrue(buckets[0].getPath().getName().matches("bucket_0000[01]")); Assert.assertTrue(buckets[1].getPath().getName().matches("bucket_0000[01]")); - Assert.assertEquals(1248L, buckets[0].getLen()); - Assert.assertEquals(1248L, buckets[1].getLen()); + Assert.assertEquals(624L, buckets[0].getLen()); + Assert.assertEquals(624L, buckets[1].getLen()); } else { LOG.debug("This is not the file you are looking for " + stat[i].getPath().getName()); } @@ -606,9 +606,10 @@ public void majorPartitionWithBaseMissingBuckets() throws Exception { Table t = newTable("default", "mapwbmb", true); Partition p = newPartition(t, "today"); + addBaseFile(t, p, 20L, 20, 2, false); addDeltaFile(t, p, 21L, 22L, 2, 2, false); - addDeltaFile(t, p, 23L, 24L, 2); + addDeltaFile(t, p, 23L, 26L, 4); burnThroughTransactions(25); @@ -631,7 +632,7 @@ public void majorPartitionWithBaseMissingBuckets() throws Exception { // Find the new delta file and make sure it has the right contents boolean sawNewBase = false; for (int i = 0; i < stat.length; i++) { - if (stat[i].getPath().getName().equals("base_0000024")) { + if (stat[i].getPath().getName().equals("base_0000026")) { sawNewBase = true; FileStatus[] buckets = fs.listStatus(stat[i].getPath()); Assert.assertEquals(2, buckets.length); @@ -640,10 +641,12 @@ public void majorPartitionWithBaseMissingBuckets() throws Exception { // Bucket 0 should be small and bucket 1 should be large, make sure that's the case Assert.assertTrue( ("bucket_00000".equals(buckets[0].getPath().getName()) && 104L == buckets[0].getLen() - && "bucket_00001".equals(buckets[1].getPath().getName()) && 1248L == buckets[1] .getLen()) + && "bucket_00001".equals(buckets[1].getPath().getName()) && 676L == buckets[1] + .getLen()) || ("bucket_00000".equals(buckets[1].getPath().getName()) && 104L == buckets[1].getLen() - && "bucket_00001".equals(buckets[0].getPath().getName()) && 1248L == buckets[0] .getLen()) + && "bucket_00001".equals(buckets[0].getPath().getName()) && 676L == buckets[0] + .getLen()) ); } else { LOG.debug("This is not the file you are looking for " + stat[i].getPath().getName()); From 57c18d9bcd97d0f6f033e3ae7262b8902fb85d6b Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Mon, 13 Oct 2014 22:56:40 +0000 Subject: [PATCH 104/339] HIVE-8402 Orc pushing SARGs into delta files causing ArrayOutOfBoundsExceptions (Alan Gates reviewed by Owen O'Malley) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631599 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java index a19d4e595303..144f21e8ea20 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRawRecordMerger.java @@ -450,6 +450,10 @@ static Reader.Options createEventOptions(Reader.Options options) { // we always want to read all of the deltas eventOptions.range(0, Long.MAX_VALUE); + // Turn off the sarg before pushing it to delta. We never want to push a sarg to a delta as + // it can produce wrong results (if the latest valid version of the record is filtered out by + // the sarg) or ArrayOutOfBounds errors (when the sarg is applied to a delete record) + eventOptions.searchArgument(null, null); if (deltaDirectory != null) { for(Path delta: deltaDirectory) { ReaderKey key = new ReaderKey(); From 415f70e4806516f0572152aa52743ae48b4a8be0 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Mon, 13 Oct 2014 23:51:39 +0000 Subject: [PATCH 105/339] HIVE-7919 : sql std auth: user with 'admin option' for role should be able to list all users in the role (Thejas Nair, reviewed by Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631602 13f79535-47bb-0310-9956-ffa450edef68 --- .../plugin/sqlstd/SQLStdHiveAccessController.java | 5 +++-- .../test/queries/clientpositive/authorization_role_grant2.q | 1 + .../authorization_show_role_principals_no_admin.q.out | 2 +- .../results/clientpositive/authorization_role_grant2.q.out | 6 ++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java index 670842574b07..658ff76e4932 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -350,9 +351,9 @@ public List getAllRoles() throws HiveAuthzPluginException, HiveAccessCon @Override public List getPrincipalGrantInfoForRole(String roleName) throws HiveAuthzPluginException, HiveAccessControlException { // only user belonging to admin role can list role - if (!isUserAdmin()) { + if (!isUserAdmin() && !doesUserHasAdminOption(Arrays.asList(roleName))) { throw new HiveAccessControlException("Current user : " + currentUserName+ " is not" - + " allowed get principals in a role. " + ADMIN_ONLY_MSG); + + " allowed get principals in a role. " + ADMIN_ONLY_MSG + " Otherwise, " + HAS_ADMIN_PRIV_MSG); } try { return getHiveRoleGrants(metastoreClientFactory.getHiveMetastoreClient(), roleName); diff --git a/ql/src/test/queries/clientpositive/authorization_role_grant2.q b/ql/src/test/queries/clientpositive/authorization_role_grant2.q index 59359a72e7a8..224ee2815b0f 100644 --- a/ql/src/test/queries/clientpositive/authorization_role_grant2.q +++ b/ql/src/test/queries/clientpositive/authorization_role_grant2.q @@ -20,6 +20,7 @@ show principals src_role_wadmin; set user.name=user2; set role src_role_WadMin; +show principals src_role_wadmin; -- grant role to another user grant src_Role_wadmin to user user3; diff --git a/ql/src/test/results/clientnegative/authorization_show_role_principals_no_admin.q.out b/ql/src/test/results/clientnegative/authorization_show_role_principals_no_admin.q.out index b0c7b75a0f9d..659edccedb28 100644 --- a/ql/src/test/results/clientnegative/authorization_show_role_principals_no_admin.q.out +++ b/ql/src/test/results/clientnegative/authorization_show_role_principals_no_admin.q.out @@ -1,4 +1,4 @@ PREHOOK: query: -- This test will fail because hive_test_user is not in admin role show principals role1 PREHOOK: type: SHOW_ROLE_PRINCIPALS -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Current user : hive_test_user is not allowed get principals in a role. User has to belong to ADMIN role and have it as current role, for this action. +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Current user : hive_test_user is not allowed get principals in a role. User has to belong to ADMIN role and have it as current role, for this action. Otherwise, grantor need to have ADMIN OPTION on role being granted and have it as a current role for this action. diff --git a/ql/src/test/results/clientpositive/authorization_role_grant2.q.out b/ql/src/test/results/clientpositive/authorization_role_grant2.q.out index 27d4f33e6bb0..3db507e35558 100644 --- a/ql/src/test/results/clientpositive/authorization_role_grant2.q.out +++ b/ql/src/test/results/clientpositive/authorization_role_grant2.q.out @@ -41,6 +41,12 @@ PREHOOK: query: set role src_role_WadMin PREHOOK: type: SHOW_ROLES POSTHOOK: query: set role src_role_WadMin POSTHOOK: type: SHOW_ROLES +PREHOOK: query: show principals src_role_wadmin +PREHOOK: type: SHOW_ROLE_PRINCIPALS +POSTHOOK: query: show principals src_role_wadmin +POSTHOOK: type: SHOW_ROLE_PRINCIPALS +principal_name principal_type grant_option grantor grantor_type grant_time +user2 USER true hive_admin_user USER -1 PREHOOK: query: -- grant role to another user grant src_Role_wadmin to user user3 PREHOOK: type: GRANT_ROLE From f569b53aaaa558f20cf171a73463ba615ed3fff4 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Tue, 14 Oct 2014 04:53:05 +0000 Subject: [PATCH 106/339] HIVE-8434: Vectorization logic using wrong values for DATE and TIMESTAMP partitioning columns in vectorized row batches... (Matt McCline via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631614 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 1 + .../ql/exec/vector/VectorizedRowBatchCtx.java | 5 +- .../vector_partitioned_date_time.q | 127 + .../tez/vector_partitioned_date_time.q.out | 2053 +++++++++++++++++ .../vector_partitioned_date_time.q.out | 2042 ++++++++++++++++ 5 files changed, 4226 insertions(+), 2 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/vector_partitioned_date_time.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_partitioned_date_time.q.out create mode 100644 ql/src/test/results/clientpositive/vector_partitioned_date_time.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 156b19bc3747..ae5a616357db 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -169,6 +169,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vector_mapjoin_reduce.q,\ vector_non_string_partition.q,\ vector_orderby_5.q,\ + vector_partitioned_date_time.q,\ vector_string_concat.q,\ vector_varchar_4.q,\ vector_varchar_simple.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java index 21c757e0f996..22f5f5eb3bdc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java @@ -45,6 +45,7 @@ import org.apache.hadoop.hive.serde2.Deserializer; import org.apache.hadoop.hive.serde2.SerDeException; import org.apache.hadoop.hive.serde2.SerDeUtils; +import org.apache.hadoop.hive.serde2.io.DateWritable; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory; @@ -487,7 +488,7 @@ public void addPartitionColsToBatch(VectorizedRowBatch batch) throws HiveExcepti lcv.isNull[0] = true; lcv.isRepeating = true; } else { - lcv.fill(((Date) value).getTime()); + lcv.fill(DateWritable.dateToDays((Date) value)); lcv.isNull[0] = false; } } @@ -500,7 +501,7 @@ public void addPartitionColsToBatch(VectorizedRowBatch batch) throws HiveExcepti lcv.isNull[0] = true; lcv.isRepeating = true; } else { - lcv.fill((long)(((Timestamp) value).getTime())); + lcv.fill(TimestampUtils.getTimeNanoSec((Timestamp) value)); lcv.isNull[0] = false; } } diff --git a/ql/src/test/queries/clientpositive/vector_partitioned_date_time.q b/ql/src/test/queries/clientpositive/vector_partitioned_date_time.q new file mode 100644 index 000000000000..1aeec8c146d4 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_partitioned_date_time.q @@ -0,0 +1,127 @@ +set hive.fetch.task.conversion=minimal; + + +-- Check if vectorization code is handling partitioning on DATE and the other data types. + + +CREATE TABLE flights_tiny ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +); + +LOAD DATA LOCAL INPATH '../../data/files/flights_tiny.txt.1' OVERWRITE INTO TABLE flights_tiny; + +CREATE TABLE flights_tiny_orc STORED AS ORC AS +SELECT origin_city_name, dest_city_name, fl_date, to_utc_timestamp(fl_date, 'America/Los_Angeles') as fl_time, arr_delay, fl_num +FROM flights_tiny; + +SELECT * FROM flights_tiny_orc; + +SET hive.vectorized.execution.enabled=false; + +select * from flights_tiny_orc sort by fl_num, fl_date limit 25; + +select fl_date, count(*) from flights_tiny_orc group by fl_date; + +SET hive.vectorized.execution.enabled=true; + +explain +select * from flights_tiny_orc sort by fl_num, fl_date limit 25; + +select * from flights_tiny_orc sort by fl_num, fl_date limit 25; + +explain +select fl_date, count(*) from flights_tiny_orc group by fl_date; + +select fl_date, count(*) from flights_tiny_orc group by fl_date; + + +SET hive.vectorized.execution.enabled=false; + +CREATE TABLE flights_tiny_orc_partitioned_date ( + origin_city_name STRING, + dest_city_name STRING, + fl_time TIMESTAMP, + arr_delay FLOAT, + fl_num INT +) +PARTITIONED BY (fl_date DATE) +STORED AS ORC; + +set hive.exec.dynamic.partition.mode=nonstrict; + +INSERT INTO TABLE flights_tiny_orc_partitioned_date +PARTITION (fl_date) +SELECT origin_city_name, dest_city_name, fl_time, arr_delay, fl_num, fl_date +FROM flights_tiny_orc; + + +select * from flights_tiny_orc_partitioned_date; + +select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25; + +select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date; + +SET hive.vectorized.execution.enabled=true; + +explain +select * from flights_tiny_orc_partitioned_date; + +select * from flights_tiny_orc_partitioned_date; + +explain +select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25; + +select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25; + +explain +select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date; + +select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date; + + +SET hive.vectorized.execution.enabled=false; + +CREATE TABLE flights_tiny_orc_partitioned_timestamp ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +PARTITIONED BY (fl_time TIMESTAMP) +STORED AS ORC; + +set hive.exec.dynamic.partition.mode=nonstrict; + +INSERT INTO TABLE flights_tiny_orc_partitioned_timestamp +PARTITION (fl_time) +SELECT origin_city_name, dest_city_name, fl_date, arr_delay, fl_num, fl_time +FROM flights_tiny_orc; + + +select * from flights_tiny_orc_partitioned_timestamp; + +select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25; + +select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time; + +SET hive.vectorized.execution.enabled=true; + +explain +select * from flights_tiny_orc_partitioned_timestamp; + +select * from flights_tiny_orc_partitioned_timestamp; + +explain +select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25; + +select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25; + +explain +select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time; + +select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/tez/vector_partitioned_date_time.q.out b/ql/src/test/results/clientpositive/tez/vector_partitioned_date_time.q.out new file mode 100644 index 000000000000..dce61d5df48f --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_partitioned_date_time.q.out @@ -0,0 +1,2053 @@ +PREHOOK: query: -- Check if vectorization code is handling partitioning on DATE and the other data types. + + +CREATE TABLE flights_tiny ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@flights_tiny +POSTHOOK: query: -- Check if vectorization code is handling partitioning on DATE and the other data types. + + +CREATE TABLE flights_tiny ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@flights_tiny +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/flights_tiny.txt.1' OVERWRITE INTO TABLE flights_tiny +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@flights_tiny +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/flights_tiny.txt.1' OVERWRITE INTO TABLE flights_tiny +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@flights_tiny +PREHOOK: query: CREATE TABLE flights_tiny_orc STORED AS ORC AS +SELECT origin_city_name, dest_city_name, fl_date, to_utc_timestamp(fl_date, 'America/Los_Angeles') as fl_time, arr_delay, fl_num +FROM flights_tiny +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@flights_tiny +PREHOOK: Output: database:default +PREHOOK: Output: default@flights_tiny_orc +POSTHOOK: query: CREATE TABLE flights_tiny_orc STORED AS ORC AS +SELECT origin_city_name, dest_city_name, fl_date, to_utc_timestamp(fl_date, 'America/Los_Angeles') as fl_time, arr_delay, fl_num +FROM flights_tiny +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@flights_tiny +POSTHOOK: Output: database:default +POSTHOOK: Output: default@flights_tiny_orc +PREHOOK: query: SELECT * FROM flights_tiny_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM flights_tiny_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +Baltimore New York 2010-10-20 2010-10-20 07:00:00 -30.0 1064 +Baltimore New York 2010-10-20 2010-10-20 07:00:00 23.0 1142 +Baltimore New York 2010-10-20 2010-10-20 07:00:00 6.0 1599 +Chicago New York 2010-10-20 2010-10-20 07:00:00 42.0 361 +Chicago New York 2010-10-20 2010-10-20 07:00:00 24.0 897 +Chicago New York 2010-10-20 2010-10-20 07:00:00 15.0 1531 +Chicago New York 2010-10-20 2010-10-20 07:00:00 -6.0 1610 +Chicago New York 2010-10-20 2010-10-20 07:00:00 -2.0 3198 +Baltimore New York 2010-10-21 2010-10-21 07:00:00 17.0 1064 +Baltimore New York 2010-10-21 2010-10-21 07:00:00 105.0 1142 +Baltimore New York 2010-10-21 2010-10-21 07:00:00 28.0 1599 +Chicago New York 2010-10-21 2010-10-21 07:00:00 142.0 361 +Chicago New York 2010-10-21 2010-10-21 07:00:00 77.0 897 +Chicago New York 2010-10-21 2010-10-21 07:00:00 53.0 1531 +Chicago New York 2010-10-21 2010-10-21 07:00:00 -5.0 1610 +Chicago New York 2010-10-21 2010-10-21 07:00:00 51.0 3198 +Baltimore New York 2010-10-22 2010-10-22 07:00:00 -12.0 1064 +Baltimore New York 2010-10-22 2010-10-22 07:00:00 54.0 1142 +Baltimore New York 2010-10-22 2010-10-22 07:00:00 18.0 1599 +Chicago New York 2010-10-22 2010-10-22 07:00:00 2.0 361 +Chicago New York 2010-10-22 2010-10-22 07:00:00 24.0 897 +Chicago New York 2010-10-22 2010-10-22 07:00:00 16.0 1531 +Chicago New York 2010-10-22 2010-10-22 07:00:00 -6.0 1610 +Chicago New York 2010-10-22 2010-10-22 07:00:00 -11.0 3198 +Baltimore New York 2010-10-23 2010-10-23 07:00:00 18.0 272 +Baltimore New York 2010-10-23 2010-10-23 07:00:00 -10.0 1805 +Baltimore New York 2010-10-23 2010-10-23 07:00:00 6.0 3171 +Chicago New York 2010-10-23 2010-10-23 07:00:00 3.0 384 +Chicago New York 2010-10-23 2010-10-23 07:00:00 32.0 426 +Chicago New York 2010-10-23 2010-10-23 07:00:00 1.0 650 +Chicago New York 2010-10-23 2010-10-23 07:00:00 11.0 3085 +Baltimore New York 2010-10-24 2010-10-24 07:00:00 12.0 1599 +Baltimore New York 2010-10-24 2010-10-24 07:00:00 20.0 2571 +Chicago New York 2010-10-24 2010-10-24 07:00:00 10.0 361 +Chicago New York 2010-10-24 2010-10-24 07:00:00 113.0 897 +Chicago New York 2010-10-24 2010-10-24 07:00:00 -5.0 1531 +Chicago New York 2010-10-24 2010-10-24 07:00:00 -17.0 1610 +Chicago New York 2010-10-24 2010-10-24 07:00:00 -3.0 3198 +Baltimore New York 2010-10-25 2010-10-25 07:00:00 -25.0 1064 +Baltimore New York 2010-10-25 2010-10-25 07:00:00 92.0 1142 +Baltimore New York 2010-10-25 2010-10-25 07:00:00 106.0 1599 +Chicago New York 2010-10-25 2010-10-25 07:00:00 31.0 361 +Chicago New York 2010-10-25 2010-10-25 07:00:00 -1.0 897 +Chicago New York 2010-10-25 2010-10-25 07:00:00 43.0 1531 +Chicago New York 2010-10-25 2010-10-25 07:00:00 6.0 1610 +Chicago New York 2010-10-25 2010-10-25 07:00:00 -16.0 3198 +Baltimore New York 2010-10-26 2010-10-26 07:00:00 -22.0 1064 +Baltimore New York 2010-10-26 2010-10-26 07:00:00 123.0 1142 +Baltimore New York 2010-10-26 2010-10-26 07:00:00 90.0 1599 +Chicago New York 2010-10-26 2010-10-26 07:00:00 12.0 361 +Chicago New York 2010-10-26 2010-10-26 07:00:00 0.0 897 +Chicago New York 2010-10-26 2010-10-26 07:00:00 29.0 1531 +Chicago New York 2010-10-26 2010-10-26 07:00:00 -17.0 1610 +Chicago New York 2010-10-26 2010-10-26 07:00:00 6.0 3198 +Baltimore New York 2010-10-27 2010-10-27 07:00:00 -18.0 1064 +Baltimore New York 2010-10-27 2010-10-27 07:00:00 49.0 1142 +Baltimore New York 2010-10-27 2010-10-27 07:00:00 92.0 1599 +Chicago New York 2010-10-27 2010-10-27 07:00:00 148.0 361 +Chicago New York 2010-10-27 2010-10-27 07:00:00 -11.0 897 +Chicago New York 2010-10-27 2010-10-27 07:00:00 70.0 1531 +Chicago New York 2010-10-27 2010-10-27 07:00:00 8.0 1610 +Chicago New York 2010-10-27 2010-10-27 07:00:00 21.0 3198 +Baltimore New York 2010-10-28 2010-10-28 07:00:00 -4.0 1064 +Baltimore New York 2010-10-28 2010-10-28 07:00:00 -14.0 1142 +Baltimore New York 2010-10-28 2010-10-28 07:00:00 -14.0 1599 +Chicago New York 2010-10-28 2010-10-28 07:00:00 2.0 361 +Chicago New York 2010-10-28 2010-10-28 07:00:00 2.0 897 +Chicago New York 2010-10-28 2010-10-28 07:00:00 -11.0 1531 +Chicago New York 2010-10-28 2010-10-28 07:00:00 3.0 1610 +Chicago New York 2010-10-28 2010-10-28 07:00:00 -18.0 3198 +Baltimore New York 2010-10-29 2010-10-29 07:00:00 -24.0 1064 +Baltimore New York 2010-10-29 2010-10-29 07:00:00 21.0 1142 +Baltimore New York 2010-10-29 2010-10-29 07:00:00 -2.0 1599 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -12.0 361 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -11.0 897 +Chicago New York 2010-10-29 2010-10-29 07:00:00 15.0 1531 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -18.0 1610 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -4.0 3198 +Baltimore New York 2010-10-30 2010-10-30 07:00:00 14.0 272 +Baltimore New York 2010-10-30 2010-10-30 07:00:00 -1.0 1805 +Baltimore New York 2010-10-30 2010-10-30 07:00:00 5.0 3171 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -6.0 384 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -10.0 426 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -5.0 650 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -5.0 3085 +Baltimore New York 2010-10-31 2010-10-31 07:00:00 -1.0 1599 +Baltimore New York 2010-10-31 2010-10-31 07:00:00 -14.0 2571 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -25.0 361 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -18.0 897 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -4.0 1531 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -22.0 1610 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -15.0 3198 +Cleveland New York 2010-10-30 2010-10-30 07:00:00 -23.0 2018 +Cleveland New York 2010-10-30 2010-10-30 07:00:00 -12.0 2932 +Cleveland New York 2010-10-29 2010-10-29 07:00:00 -4.0 2630 +Cleveland New York 2010-10-29 2010-10-29 07:00:00 -19.0 2646 +Cleveland New York 2010-10-29 2010-10-29 07:00:00 -12.0 3014 +Cleveland New York 2010-10-28 2010-10-28 07:00:00 3.0 2630 +Cleveland New York 2010-10-28 2010-10-28 07:00:00 -6.0 2646 +Cleveland New York 2010-10-28 2010-10-28 07:00:00 1.0 3014 +Cleveland New York 2010-10-27 2010-10-27 07:00:00 16.0 2630 +Cleveland New York 2010-10-27 2010-10-27 07:00:00 27.0 3014 +Cleveland New York 2010-10-26 2010-10-26 07:00:00 4.0 2630 +Cleveland New York 2010-10-26 2010-10-26 07:00:00 -27.0 2646 +Cleveland New York 2010-10-26 2010-10-26 07:00:00 -11.0 2662 +Cleveland New York 2010-10-26 2010-10-26 07:00:00 13.0 3014 +Cleveland New York 2010-10-25 2010-10-25 07:00:00 -4.0 2630 +Cleveland New York 2010-10-25 2010-10-25 07:00:00 81.0 2646 +Cleveland New York 2010-10-25 2010-10-25 07:00:00 42.0 3014 +Cleveland New York 2010-10-24 2010-10-24 07:00:00 5.0 2254 +Cleveland New York 2010-10-24 2010-10-24 07:00:00 -11.0 2630 +Cleveland New York 2010-10-24 2010-10-24 07:00:00 -20.0 2646 +Cleveland New York 2010-10-24 2010-10-24 07:00:00 -9.0 3014 +Cleveland New York 2010-10-23 2010-10-23 07:00:00 -21.0 2932 +Cleveland New York 2010-10-22 2010-10-22 07:00:00 1.0 2630 +Cleveland New York 2010-10-22 2010-10-22 07:00:00 -25.0 2646 +Cleveland New York 2010-10-22 2010-10-22 07:00:00 -3.0 3014 +Cleveland New York 2010-10-21 2010-10-21 07:00:00 3.0 2630 +Cleveland New York 2010-10-21 2010-10-21 07:00:00 29.0 2646 +Cleveland New York 2010-10-21 2010-10-21 07:00:00 72.0 3014 +Cleveland New York 2010-10-20 2010-10-20 07:00:00 -8.0 2630 +Cleveland New York 2010-10-20 2010-10-20 07:00:00 -15.0 3014 +Washington New York 2010-10-23 2010-10-23 07:00:00 -25.0 5832 +Washington New York 2010-10-23 2010-10-23 07:00:00 -21.0 5904 +Washington New York 2010-10-23 2010-10-23 07:00:00 -18.0 5917 +Washington New York 2010-10-30 2010-10-30 07:00:00 -27.0 5904 +Washington New York 2010-10-30 2010-10-30 07:00:00 -16.0 5917 +Washington New York 2010-10-20 2010-10-20 07:00:00 -2.0 7291 +Washington New York 2010-10-21 2010-10-21 07:00:00 22.0 7291 +Washington New York 2010-10-23 2010-10-23 07:00:00 -16.0 7274 +Washington New York 2010-10-24 2010-10-24 07:00:00 -26.0 7282 +Washington New York 2010-10-25 2010-10-25 07:00:00 9.0 7291 +Washington New York 2010-10-26 2010-10-26 07:00:00 4.0 7291 +Washington New York 2010-10-27 2010-10-27 07:00:00 26.0 7291 +Washington New York 2010-10-28 2010-10-28 07:00:00 45.0 7291 +Washington New York 2010-10-29 2010-10-29 07:00:00 1.0 7291 +Washington New York 2010-10-31 2010-10-31 07:00:00 -18.0 7282 +PREHOOK: query: select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +Baltimore New York 2010-10-23 2010-10-23 07:00:00 18.0 272 +Baltimore New York 2010-10-30 2010-10-30 07:00:00 14.0 272 +Chicago New York 2010-10-20 2010-10-20 07:00:00 42.0 361 +Chicago New York 2010-10-21 2010-10-21 07:00:00 142.0 361 +Chicago New York 2010-10-22 2010-10-22 07:00:00 2.0 361 +Chicago New York 2010-10-24 2010-10-24 07:00:00 10.0 361 +Chicago New York 2010-10-25 2010-10-25 07:00:00 31.0 361 +Chicago New York 2010-10-26 2010-10-26 07:00:00 12.0 361 +Chicago New York 2010-10-27 2010-10-27 07:00:00 148.0 361 +Chicago New York 2010-10-28 2010-10-28 07:00:00 2.0 361 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -12.0 361 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -25.0 361 +Chicago New York 2010-10-23 2010-10-23 07:00:00 3.0 384 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -6.0 384 +Chicago New York 2010-10-23 2010-10-23 07:00:00 32.0 426 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -10.0 426 +Chicago New York 2010-10-23 2010-10-23 07:00:00 1.0 650 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -5.0 650 +Chicago New York 2010-10-20 2010-10-20 07:00:00 24.0 897 +Chicago New York 2010-10-21 2010-10-21 07:00:00 77.0 897 +Chicago New York 2010-10-22 2010-10-22 07:00:00 24.0 897 +Chicago New York 2010-10-24 2010-10-24 07:00:00 113.0 897 +Chicago New York 2010-10-25 2010-10-25 07:00:00 -1.0 897 +Chicago New York 2010-10-26 2010-10-26 07:00:00 0.0 897 +Chicago New York 2010-10-27 2010-10-27 07:00:00 -11.0 897 +PREHOOK: query: select fl_date, count(*) from flights_tiny_orc group by fl_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +POSTHOOK: query: select fl_date, count(*) from flights_tiny_orc group by fl_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +2010-10-20 11 +2010-10-21 12 +2010-10-22 11 +2010-10-23 12 +2010-10-24 12 +2010-10-25 12 +2010-10-26 13 +2010-10-27 11 +2010-10-28 12 +2010-10-29 12 +2010-10-30 11 +2010-10-31 8 +PREHOOK: query: explain +select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: flights_tiny_orc + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: origin_city_name (type: string), dest_city_name (type: string), fl_date (type: date), fl_time (type: timestamp), arr_delay (type: float), fl_num (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col5 (type: int), _col2 (type: date) + sort order: ++ + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col3 (type: timestamp), _col4 (type: float) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), KEY.reducesinkkey1 (type: date), VALUE._col2 (type: timestamp), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 7200 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col5 (type: int), _col2 (type: date) + sort order: ++ + Statistics: Num rows: 25 Data size: 7200 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col3 (type: timestamp), _col4 (type: float) + Execution mode: vectorized + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), KEY.reducesinkkey1 (type: date), VALUE._col2 (type: timestamp), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 25 Data size: 7200 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 7200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 7200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 25 + Processor Tree: + ListSink + +PREHOOK: query: select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +Baltimore New York 2010-10-23 2010-10-23 07:00:00 18.0 272 +Baltimore New York 2010-10-30 2010-10-30 07:00:00 14.0 272 +Chicago New York 2010-10-20 2010-10-20 07:00:00 42.0 361 +Chicago New York 2010-10-21 2010-10-21 07:00:00 142.0 361 +Chicago New York 2010-10-22 2010-10-22 07:00:00 2.0 361 +Chicago New York 2010-10-24 2010-10-24 07:00:00 10.0 361 +Chicago New York 2010-10-25 2010-10-25 07:00:00 31.0 361 +Chicago New York 2010-10-26 2010-10-26 07:00:00 12.0 361 +Chicago New York 2010-10-27 2010-10-27 07:00:00 148.0 361 +Chicago New York 2010-10-28 2010-10-28 07:00:00 2.0 361 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -12.0 361 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -25.0 361 +Chicago New York 2010-10-23 2010-10-23 07:00:00 3.0 384 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -6.0 384 +Chicago New York 2010-10-23 2010-10-23 07:00:00 32.0 426 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -10.0 426 +Chicago New York 2010-10-23 2010-10-23 07:00:00 1.0 650 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -5.0 650 +Chicago New York 2010-10-20 2010-10-20 07:00:00 24.0 897 +Chicago New York 2010-10-21 2010-10-21 07:00:00 77.0 897 +Chicago New York 2010-10-22 2010-10-22 07:00:00 24.0 897 +Chicago New York 2010-10-24 2010-10-24 07:00:00 113.0 897 +Chicago New York 2010-10-25 2010-10-25 07:00:00 -1.0 897 +Chicago New York 2010-10-26 2010-10-26 07:00:00 0.0 897 +Chicago New York 2010-10-27 2010-10-27 07:00:00 -11.0 897 +PREHOOK: query: explain +select fl_date, count(*) from flights_tiny_orc group by fl_date +PREHOOK: type: QUERY +POSTHOOK: query: explain +select fl_date, count(*) from flights_tiny_orc group by fl_date +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: flights_tiny_orc + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: fl_date (type: date) + outputColumnNames: fl_date + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + keys: fl_date (type: date) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: date) + sort order: + + Map-reduce partition columns: _col0 (type: date) + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: date) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 19584 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: date), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 19584 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 68 Data size: 19584 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select fl_date, count(*) from flights_tiny_orc group by fl_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +POSTHOOK: query: select fl_date, count(*) from flights_tiny_orc group by fl_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +2010-10-20 11 +2010-10-21 12 +2010-10-22 11 +2010-10-23 12 +2010-10-24 12 +2010-10-25 12 +2010-10-26 13 +2010-10-27 11 +2010-10-28 12 +2010-10-29 12 +2010-10-30 11 +2010-10-31 8 +PREHOOK: query: CREATE TABLE flights_tiny_orc_partitioned_date ( + origin_city_name STRING, + dest_city_name STRING, + fl_time TIMESTAMP, + arr_delay FLOAT, + fl_num INT +) +PARTITIONED BY (fl_date DATE) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@flights_tiny_orc_partitioned_date +POSTHOOK: query: CREATE TABLE flights_tiny_orc_partitioned_date ( + origin_city_name STRING, + dest_city_name STRING, + fl_time TIMESTAMP, + arr_delay FLOAT, + fl_num INT +) +PARTITIONED BY (fl_date DATE) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date +PREHOOK: query: INSERT INTO TABLE flights_tiny_orc_partitioned_date +PARTITION (fl_date) +SELECT origin_city_name, dest_city_name, fl_time, arr_delay, fl_num, fl_date +FROM flights_tiny_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +PREHOOK: Output: default@flights_tiny_orc_partitioned_date +POSTHOOK: query: INSERT INTO TABLE flights_tiny_orc_partitioned_date +PARTITION (fl_date) +SELECT origin_city_name, dest_city_name, fl_time, arr_delay, fl_num, fl_date +FROM flights_tiny_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-20).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-20).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-20).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-20).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-20).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-21).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-21).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-21).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-21).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-21).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-22).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-22).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-22).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-22).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-22).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-23).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-23).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-23).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-23).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-23).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-24).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-24).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-24).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-24).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-24).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-25).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-25).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-25).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-25).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-25).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-26).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-26).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-26).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-26).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-26).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-27).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-27).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-27).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-27).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-27).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-28).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-28).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-28).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-28).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-28).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-29).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-29).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-29).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-29).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-29).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-30).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-30).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-30).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-30).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-30).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-31).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-31).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-31).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-31).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-31).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +PREHOOK: query: select * from flights_tiny_orc_partitioned_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +Baltimore New York 2010-10-20 07:00:00 -30.0 1064 2010-10-20 +Baltimore New York 2010-10-20 07:00:00 23.0 1142 2010-10-20 +Baltimore New York 2010-10-20 07:00:00 6.0 1599 2010-10-20 +Chicago New York 2010-10-20 07:00:00 42.0 361 2010-10-20 +Chicago New York 2010-10-20 07:00:00 24.0 897 2010-10-20 +Chicago New York 2010-10-20 07:00:00 15.0 1531 2010-10-20 +Chicago New York 2010-10-20 07:00:00 -6.0 1610 2010-10-20 +Chicago New York 2010-10-20 07:00:00 -2.0 3198 2010-10-20 +Cleveland New York 2010-10-20 07:00:00 -8.0 2630 2010-10-20 +Cleveland New York 2010-10-20 07:00:00 -15.0 3014 2010-10-20 +Washington New York 2010-10-20 07:00:00 -2.0 7291 2010-10-20 +Baltimore New York 2010-10-21 07:00:00 17.0 1064 2010-10-21 +Baltimore New York 2010-10-21 07:00:00 105.0 1142 2010-10-21 +Baltimore New York 2010-10-21 07:00:00 28.0 1599 2010-10-21 +Chicago New York 2010-10-21 07:00:00 142.0 361 2010-10-21 +Chicago New York 2010-10-21 07:00:00 77.0 897 2010-10-21 +Chicago New York 2010-10-21 07:00:00 53.0 1531 2010-10-21 +Chicago New York 2010-10-21 07:00:00 -5.0 1610 2010-10-21 +Chicago New York 2010-10-21 07:00:00 51.0 3198 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 3.0 2630 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 29.0 2646 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 72.0 3014 2010-10-21 +Washington New York 2010-10-21 07:00:00 22.0 7291 2010-10-21 +Baltimore New York 2010-10-22 07:00:00 -12.0 1064 2010-10-22 +Baltimore New York 2010-10-22 07:00:00 54.0 1142 2010-10-22 +Baltimore New York 2010-10-22 07:00:00 18.0 1599 2010-10-22 +Chicago New York 2010-10-22 07:00:00 2.0 361 2010-10-22 +Chicago New York 2010-10-22 07:00:00 24.0 897 2010-10-22 +Chicago New York 2010-10-22 07:00:00 16.0 1531 2010-10-22 +Chicago New York 2010-10-22 07:00:00 -6.0 1610 2010-10-22 +Chicago New York 2010-10-22 07:00:00 -11.0 3198 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 1.0 2630 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 -25.0 2646 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 -3.0 3014 2010-10-22 +Baltimore New York 2010-10-23 07:00:00 18.0 272 2010-10-23 +Baltimore New York 2010-10-23 07:00:00 -10.0 1805 2010-10-23 +Baltimore New York 2010-10-23 07:00:00 6.0 3171 2010-10-23 +Chicago New York 2010-10-23 07:00:00 3.0 384 2010-10-23 +Chicago New York 2010-10-23 07:00:00 32.0 426 2010-10-23 +Chicago New York 2010-10-23 07:00:00 1.0 650 2010-10-23 +Chicago New York 2010-10-23 07:00:00 11.0 3085 2010-10-23 +Cleveland New York 2010-10-23 07:00:00 -21.0 2932 2010-10-23 +Washington New York 2010-10-23 07:00:00 -25.0 5832 2010-10-23 +Washington New York 2010-10-23 07:00:00 -21.0 5904 2010-10-23 +Washington New York 2010-10-23 07:00:00 -18.0 5917 2010-10-23 +Washington New York 2010-10-23 07:00:00 -16.0 7274 2010-10-23 +Baltimore New York 2010-10-24 07:00:00 12.0 1599 2010-10-24 +Baltimore New York 2010-10-24 07:00:00 20.0 2571 2010-10-24 +Chicago New York 2010-10-24 07:00:00 10.0 361 2010-10-24 +Chicago New York 2010-10-24 07:00:00 113.0 897 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -5.0 1531 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -17.0 1610 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -3.0 3198 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 5.0 2254 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -11.0 2630 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -20.0 2646 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -9.0 3014 2010-10-24 +Washington New York 2010-10-24 07:00:00 -26.0 7282 2010-10-24 +Baltimore New York 2010-10-25 07:00:00 -25.0 1064 2010-10-25 +Baltimore New York 2010-10-25 07:00:00 92.0 1142 2010-10-25 +Baltimore New York 2010-10-25 07:00:00 106.0 1599 2010-10-25 +Chicago New York 2010-10-25 07:00:00 31.0 361 2010-10-25 +Chicago New York 2010-10-25 07:00:00 -1.0 897 2010-10-25 +Chicago New York 2010-10-25 07:00:00 43.0 1531 2010-10-25 +Chicago New York 2010-10-25 07:00:00 6.0 1610 2010-10-25 +Chicago New York 2010-10-25 07:00:00 -16.0 3198 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 -4.0 2630 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 81.0 2646 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 42.0 3014 2010-10-25 +Washington New York 2010-10-25 07:00:00 9.0 7291 2010-10-25 +Baltimore New York 2010-10-26 07:00:00 -22.0 1064 2010-10-26 +Baltimore New York 2010-10-26 07:00:00 123.0 1142 2010-10-26 +Baltimore New York 2010-10-26 07:00:00 90.0 1599 2010-10-26 +Chicago New York 2010-10-26 07:00:00 12.0 361 2010-10-26 +Chicago New York 2010-10-26 07:00:00 0.0 897 2010-10-26 +Chicago New York 2010-10-26 07:00:00 29.0 1531 2010-10-26 +Chicago New York 2010-10-26 07:00:00 -17.0 1610 2010-10-26 +Chicago New York 2010-10-26 07:00:00 6.0 3198 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 4.0 2630 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 -27.0 2646 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 -11.0 2662 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 13.0 3014 2010-10-26 +Washington New York 2010-10-26 07:00:00 4.0 7291 2010-10-26 +Baltimore New York 2010-10-27 07:00:00 -18.0 1064 2010-10-27 +Baltimore New York 2010-10-27 07:00:00 49.0 1142 2010-10-27 +Baltimore New York 2010-10-27 07:00:00 92.0 1599 2010-10-27 +Chicago New York 2010-10-27 07:00:00 148.0 361 2010-10-27 +Chicago New York 2010-10-27 07:00:00 -11.0 897 2010-10-27 +Chicago New York 2010-10-27 07:00:00 70.0 1531 2010-10-27 +Chicago New York 2010-10-27 07:00:00 8.0 1610 2010-10-27 +Chicago New York 2010-10-27 07:00:00 21.0 3198 2010-10-27 +Cleveland New York 2010-10-27 07:00:00 16.0 2630 2010-10-27 +Cleveland New York 2010-10-27 07:00:00 27.0 3014 2010-10-27 +Washington New York 2010-10-27 07:00:00 26.0 7291 2010-10-27 +Baltimore New York 2010-10-28 07:00:00 -4.0 1064 2010-10-28 +Baltimore New York 2010-10-28 07:00:00 -14.0 1142 2010-10-28 +Baltimore New York 2010-10-28 07:00:00 -14.0 1599 2010-10-28 +Chicago New York 2010-10-28 07:00:00 2.0 361 2010-10-28 +Chicago New York 2010-10-28 07:00:00 2.0 897 2010-10-28 +Chicago New York 2010-10-28 07:00:00 -11.0 1531 2010-10-28 +Chicago New York 2010-10-28 07:00:00 3.0 1610 2010-10-28 +Chicago New York 2010-10-28 07:00:00 -18.0 3198 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 3.0 2630 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 -6.0 2646 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 1.0 3014 2010-10-28 +Washington New York 2010-10-28 07:00:00 45.0 7291 2010-10-28 +Baltimore New York 2010-10-29 07:00:00 -24.0 1064 2010-10-29 +Baltimore New York 2010-10-29 07:00:00 21.0 1142 2010-10-29 +Baltimore New York 2010-10-29 07:00:00 -2.0 1599 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -12.0 361 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -11.0 897 2010-10-29 +Chicago New York 2010-10-29 07:00:00 15.0 1531 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -18.0 1610 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -4.0 3198 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -4.0 2630 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -19.0 2646 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -12.0 3014 2010-10-29 +Washington New York 2010-10-29 07:00:00 1.0 7291 2010-10-29 +Baltimore New York 2010-10-30 07:00:00 14.0 272 2010-10-30 +Baltimore New York 2010-10-30 07:00:00 -1.0 1805 2010-10-30 +Baltimore New York 2010-10-30 07:00:00 5.0 3171 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -6.0 384 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -10.0 426 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -5.0 650 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -5.0 3085 2010-10-30 +Cleveland New York 2010-10-30 07:00:00 -23.0 2018 2010-10-30 +Cleveland New York 2010-10-30 07:00:00 -12.0 2932 2010-10-30 +Washington New York 2010-10-30 07:00:00 -27.0 5904 2010-10-30 +Washington New York 2010-10-30 07:00:00 -16.0 5917 2010-10-30 +Baltimore New York 2010-10-31 07:00:00 -1.0 1599 2010-10-31 +Baltimore New York 2010-10-31 07:00:00 -14.0 2571 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -25.0 361 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -18.0 897 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -4.0 1531 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -22.0 1610 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -15.0 3198 2010-10-31 +Washington New York 2010-10-31 07:00:00 -18.0 7282 2010-10-31 +PREHOOK: query: select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +Baltimore New York 2010-10-23 07:00:00 18.0 272 2010-10-23 +Baltimore New York 2010-10-30 07:00:00 14.0 272 2010-10-30 +Chicago New York 2010-10-20 07:00:00 42.0 361 2010-10-20 +Chicago New York 2010-10-21 07:00:00 142.0 361 2010-10-21 +Chicago New York 2010-10-22 07:00:00 2.0 361 2010-10-22 +Chicago New York 2010-10-24 07:00:00 10.0 361 2010-10-24 +Chicago New York 2010-10-25 07:00:00 31.0 361 2010-10-25 +Chicago New York 2010-10-26 07:00:00 12.0 361 2010-10-26 +Chicago New York 2010-10-27 07:00:00 148.0 361 2010-10-27 +Chicago New York 2010-10-28 07:00:00 2.0 361 2010-10-28 +Chicago New York 2010-10-29 07:00:00 -12.0 361 2010-10-29 +Chicago New York 2010-10-31 07:00:00 -25.0 361 2010-10-31 +Chicago New York 2010-10-23 07:00:00 3.0 384 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -6.0 384 2010-10-30 +Chicago New York 2010-10-23 07:00:00 32.0 426 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -10.0 426 2010-10-30 +Chicago New York 2010-10-23 07:00:00 1.0 650 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -5.0 650 2010-10-30 +Chicago New York 2010-10-20 07:00:00 24.0 897 2010-10-20 +Chicago New York 2010-10-21 07:00:00 77.0 897 2010-10-21 +Chicago New York 2010-10-22 07:00:00 24.0 897 2010-10-22 +Chicago New York 2010-10-24 07:00:00 113.0 897 2010-10-24 +Chicago New York 2010-10-25 07:00:00 -1.0 897 2010-10-25 +Chicago New York 2010-10-26 07:00:00 0.0 897 2010-10-26 +Chicago New York 2010-10-27 07:00:00 -11.0 897 2010-10-27 +PREHOOK: query: select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +2010-10-20 11 +2010-10-21 12 +2010-10-22 11 +2010-10-23 12 +2010-10-24 12 +2010-10-25 12 +2010-10-26 13 +2010-10-27 11 +2010-10-28 12 +2010-10-29 12 +2010-10-30 11 +2010-10-31 8 +PREHOOK: query: explain +select * from flights_tiny_orc_partitioned_date +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from flights_tiny_orc_partitioned_date +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: flights_tiny_orc_partitioned_date + Select Operator + expressions: origin_city_name (type: string), dest_city_name (type: string), fl_time (type: timestamp), arr_delay (type: float), fl_num (type: int), fl_date (type: date) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + ListSink + +PREHOOK: query: select * from flights_tiny_orc_partitioned_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +Baltimore New York 2010-10-20 07:00:00 -30.0 1064 2010-10-20 +Baltimore New York 2010-10-20 07:00:00 23.0 1142 2010-10-20 +Baltimore New York 2010-10-20 07:00:00 6.0 1599 2010-10-20 +Chicago New York 2010-10-20 07:00:00 42.0 361 2010-10-20 +Chicago New York 2010-10-20 07:00:00 24.0 897 2010-10-20 +Chicago New York 2010-10-20 07:00:00 15.0 1531 2010-10-20 +Chicago New York 2010-10-20 07:00:00 -6.0 1610 2010-10-20 +Chicago New York 2010-10-20 07:00:00 -2.0 3198 2010-10-20 +Cleveland New York 2010-10-20 07:00:00 -8.0 2630 2010-10-20 +Cleveland New York 2010-10-20 07:00:00 -15.0 3014 2010-10-20 +Washington New York 2010-10-20 07:00:00 -2.0 7291 2010-10-20 +Baltimore New York 2010-10-21 07:00:00 17.0 1064 2010-10-21 +Baltimore New York 2010-10-21 07:00:00 105.0 1142 2010-10-21 +Baltimore New York 2010-10-21 07:00:00 28.0 1599 2010-10-21 +Chicago New York 2010-10-21 07:00:00 142.0 361 2010-10-21 +Chicago New York 2010-10-21 07:00:00 77.0 897 2010-10-21 +Chicago New York 2010-10-21 07:00:00 53.0 1531 2010-10-21 +Chicago New York 2010-10-21 07:00:00 -5.0 1610 2010-10-21 +Chicago New York 2010-10-21 07:00:00 51.0 3198 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 3.0 2630 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 29.0 2646 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 72.0 3014 2010-10-21 +Washington New York 2010-10-21 07:00:00 22.0 7291 2010-10-21 +Baltimore New York 2010-10-22 07:00:00 -12.0 1064 2010-10-22 +Baltimore New York 2010-10-22 07:00:00 54.0 1142 2010-10-22 +Baltimore New York 2010-10-22 07:00:00 18.0 1599 2010-10-22 +Chicago New York 2010-10-22 07:00:00 2.0 361 2010-10-22 +Chicago New York 2010-10-22 07:00:00 24.0 897 2010-10-22 +Chicago New York 2010-10-22 07:00:00 16.0 1531 2010-10-22 +Chicago New York 2010-10-22 07:00:00 -6.0 1610 2010-10-22 +Chicago New York 2010-10-22 07:00:00 -11.0 3198 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 1.0 2630 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 -25.0 2646 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 -3.0 3014 2010-10-22 +Baltimore New York 2010-10-23 07:00:00 18.0 272 2010-10-23 +Baltimore New York 2010-10-23 07:00:00 -10.0 1805 2010-10-23 +Baltimore New York 2010-10-23 07:00:00 6.0 3171 2010-10-23 +Chicago New York 2010-10-23 07:00:00 3.0 384 2010-10-23 +Chicago New York 2010-10-23 07:00:00 32.0 426 2010-10-23 +Chicago New York 2010-10-23 07:00:00 1.0 650 2010-10-23 +Chicago New York 2010-10-23 07:00:00 11.0 3085 2010-10-23 +Cleveland New York 2010-10-23 07:00:00 -21.0 2932 2010-10-23 +Washington New York 2010-10-23 07:00:00 -25.0 5832 2010-10-23 +Washington New York 2010-10-23 07:00:00 -21.0 5904 2010-10-23 +Washington New York 2010-10-23 07:00:00 -18.0 5917 2010-10-23 +Washington New York 2010-10-23 07:00:00 -16.0 7274 2010-10-23 +Baltimore New York 2010-10-24 07:00:00 12.0 1599 2010-10-24 +Baltimore New York 2010-10-24 07:00:00 20.0 2571 2010-10-24 +Chicago New York 2010-10-24 07:00:00 10.0 361 2010-10-24 +Chicago New York 2010-10-24 07:00:00 113.0 897 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -5.0 1531 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -17.0 1610 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -3.0 3198 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 5.0 2254 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -11.0 2630 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -20.0 2646 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -9.0 3014 2010-10-24 +Washington New York 2010-10-24 07:00:00 -26.0 7282 2010-10-24 +Baltimore New York 2010-10-25 07:00:00 -25.0 1064 2010-10-25 +Baltimore New York 2010-10-25 07:00:00 92.0 1142 2010-10-25 +Baltimore New York 2010-10-25 07:00:00 106.0 1599 2010-10-25 +Chicago New York 2010-10-25 07:00:00 31.0 361 2010-10-25 +Chicago New York 2010-10-25 07:00:00 -1.0 897 2010-10-25 +Chicago New York 2010-10-25 07:00:00 43.0 1531 2010-10-25 +Chicago New York 2010-10-25 07:00:00 6.0 1610 2010-10-25 +Chicago New York 2010-10-25 07:00:00 -16.0 3198 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 -4.0 2630 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 81.0 2646 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 42.0 3014 2010-10-25 +Washington New York 2010-10-25 07:00:00 9.0 7291 2010-10-25 +Baltimore New York 2010-10-26 07:00:00 -22.0 1064 2010-10-26 +Baltimore New York 2010-10-26 07:00:00 123.0 1142 2010-10-26 +Baltimore New York 2010-10-26 07:00:00 90.0 1599 2010-10-26 +Chicago New York 2010-10-26 07:00:00 12.0 361 2010-10-26 +Chicago New York 2010-10-26 07:00:00 0.0 897 2010-10-26 +Chicago New York 2010-10-26 07:00:00 29.0 1531 2010-10-26 +Chicago New York 2010-10-26 07:00:00 -17.0 1610 2010-10-26 +Chicago New York 2010-10-26 07:00:00 6.0 3198 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 4.0 2630 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 -27.0 2646 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 -11.0 2662 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 13.0 3014 2010-10-26 +Washington New York 2010-10-26 07:00:00 4.0 7291 2010-10-26 +Baltimore New York 2010-10-27 07:00:00 -18.0 1064 2010-10-27 +Baltimore New York 2010-10-27 07:00:00 49.0 1142 2010-10-27 +Baltimore New York 2010-10-27 07:00:00 92.0 1599 2010-10-27 +Chicago New York 2010-10-27 07:00:00 148.0 361 2010-10-27 +Chicago New York 2010-10-27 07:00:00 -11.0 897 2010-10-27 +Chicago New York 2010-10-27 07:00:00 70.0 1531 2010-10-27 +Chicago New York 2010-10-27 07:00:00 8.0 1610 2010-10-27 +Chicago New York 2010-10-27 07:00:00 21.0 3198 2010-10-27 +Cleveland New York 2010-10-27 07:00:00 16.0 2630 2010-10-27 +Cleveland New York 2010-10-27 07:00:00 27.0 3014 2010-10-27 +Washington New York 2010-10-27 07:00:00 26.0 7291 2010-10-27 +Baltimore New York 2010-10-28 07:00:00 -4.0 1064 2010-10-28 +Baltimore New York 2010-10-28 07:00:00 -14.0 1142 2010-10-28 +Baltimore New York 2010-10-28 07:00:00 -14.0 1599 2010-10-28 +Chicago New York 2010-10-28 07:00:00 2.0 361 2010-10-28 +Chicago New York 2010-10-28 07:00:00 2.0 897 2010-10-28 +Chicago New York 2010-10-28 07:00:00 -11.0 1531 2010-10-28 +Chicago New York 2010-10-28 07:00:00 3.0 1610 2010-10-28 +Chicago New York 2010-10-28 07:00:00 -18.0 3198 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 3.0 2630 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 -6.0 2646 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 1.0 3014 2010-10-28 +Washington New York 2010-10-28 07:00:00 45.0 7291 2010-10-28 +Baltimore New York 2010-10-29 07:00:00 -24.0 1064 2010-10-29 +Baltimore New York 2010-10-29 07:00:00 21.0 1142 2010-10-29 +Baltimore New York 2010-10-29 07:00:00 -2.0 1599 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -12.0 361 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -11.0 897 2010-10-29 +Chicago New York 2010-10-29 07:00:00 15.0 1531 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -18.0 1610 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -4.0 3198 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -4.0 2630 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -19.0 2646 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -12.0 3014 2010-10-29 +Washington New York 2010-10-29 07:00:00 1.0 7291 2010-10-29 +Baltimore New York 2010-10-30 07:00:00 14.0 272 2010-10-30 +Baltimore New York 2010-10-30 07:00:00 -1.0 1805 2010-10-30 +Baltimore New York 2010-10-30 07:00:00 5.0 3171 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -6.0 384 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -10.0 426 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -5.0 650 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -5.0 3085 2010-10-30 +Cleveland New York 2010-10-30 07:00:00 -23.0 2018 2010-10-30 +Cleveland New York 2010-10-30 07:00:00 -12.0 2932 2010-10-30 +Washington New York 2010-10-30 07:00:00 -27.0 5904 2010-10-30 +Washington New York 2010-10-30 07:00:00 -16.0 5917 2010-10-30 +Baltimore New York 2010-10-31 07:00:00 -1.0 1599 2010-10-31 +Baltimore New York 2010-10-31 07:00:00 -14.0 2571 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -25.0 361 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -18.0 897 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -4.0 1531 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -22.0 1610 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -15.0 3198 2010-10-31 +Washington New York 2010-10-31 07:00:00 -18.0 7282 2010-10-31 +PREHOOK: query: explain +select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: flights_tiny_orc_partitioned_date + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: origin_city_name (type: string), dest_city_name (type: string), fl_time (type: timestamp), arr_delay (type: float), fl_num (type: int), fl_date (type: date) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col4 (type: int), _col5 (type: date) + sort order: ++ + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: timestamp), _col3 (type: float) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: timestamp), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: date) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 5775 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col4 (type: int), _col5 (type: date) + sort order: ++ + Statistics: Num rows: 25 Data size: 5775 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: timestamp), _col3 (type: float) + Execution mode: vectorized + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: timestamp), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: date) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 25 Data size: 5775 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 5775 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 5775 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 25 + Processor Tree: + ListSink + +PREHOOK: query: select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +Baltimore New York 2010-10-23 07:00:00 18.0 272 2010-10-23 +Baltimore New York 2010-10-30 07:00:00 14.0 272 2010-10-30 +Chicago New York 2010-10-20 07:00:00 42.0 361 2010-10-20 +Chicago New York 2010-10-21 07:00:00 142.0 361 2010-10-21 +Chicago New York 2010-10-22 07:00:00 2.0 361 2010-10-22 +Chicago New York 2010-10-24 07:00:00 10.0 361 2010-10-24 +Chicago New York 2010-10-25 07:00:00 31.0 361 2010-10-25 +Chicago New York 2010-10-26 07:00:00 12.0 361 2010-10-26 +Chicago New York 2010-10-27 07:00:00 148.0 361 2010-10-27 +Chicago New York 2010-10-28 07:00:00 2.0 361 2010-10-28 +Chicago New York 2010-10-29 07:00:00 -12.0 361 2010-10-29 +Chicago New York 2010-10-31 07:00:00 -25.0 361 2010-10-31 +Chicago New York 2010-10-23 07:00:00 3.0 384 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -6.0 384 2010-10-30 +Chicago New York 2010-10-23 07:00:00 32.0 426 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -10.0 426 2010-10-30 +Chicago New York 2010-10-23 07:00:00 1.0 650 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -5.0 650 2010-10-30 +Chicago New York 2010-10-20 07:00:00 24.0 897 2010-10-20 +Chicago New York 2010-10-21 07:00:00 77.0 897 2010-10-21 +Chicago New York 2010-10-22 07:00:00 24.0 897 2010-10-22 +Chicago New York 2010-10-24 07:00:00 113.0 897 2010-10-24 +Chicago New York 2010-10-25 07:00:00 -1.0 897 2010-10-25 +Chicago New York 2010-10-26 07:00:00 0.0 897 2010-10-26 +Chicago New York 2010-10-27 07:00:00 -11.0 897 2010-10-27 +PREHOOK: query: explain +select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +PREHOOK: type: QUERY +POSTHOOK: query: explain +select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: flights_tiny_orc_partitioned_date + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: fl_date (type: date) + outputColumnNames: fl_date + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + keys: fl_date (type: date) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: date) + sort order: + + Map-reduce partition columns: _col0 (type: date) + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: date) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 15772 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: date), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 15772 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 68 Data size: 15772 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +2010-10-20 11 +2010-10-21 12 +2010-10-22 11 +2010-10-23 12 +2010-10-24 12 +2010-10-25 12 +2010-10-26 13 +2010-10-27 11 +2010-10-28 12 +2010-10-29 12 +2010-10-30 11 +2010-10-31 8 +PREHOOK: query: CREATE TABLE flights_tiny_orc_partitioned_timestamp ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +PARTITIONED BY (fl_time TIMESTAMP) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: query: CREATE TABLE flights_tiny_orc_partitioned_timestamp ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +PARTITIONED BY (fl_time TIMESTAMP) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: query: INSERT INTO TABLE flights_tiny_orc_partitioned_timestamp +PARTITION (fl_time) +SELECT origin_city_name, dest_city_name, fl_date, arr_delay, fl_num, fl_time +FROM flights_tiny_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +PREHOOK: Output: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: query: INSERT INTO TABLE flights_tiny_orc_partitioned_timestamp +PARTITION (fl_time) +SELECT origin_city_name, dest_city_name, fl_date, arr_delay, fl_num, fl_time +FROM flights_tiny_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-20 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-20 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-20 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-20 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-20 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-21 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-21 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-21 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-21 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-21 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-22 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-22 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-22 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-22 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-22 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-23 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-23 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-23 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-23 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-23 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-24 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-24 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-24 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-24 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-24 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-25 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-25 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-25 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-25 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-25 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-26 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-26 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-26 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-26 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-26 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-27 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-27 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-27 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-27 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-27 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-28 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-28 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-28 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-28 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-28 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-29 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-29 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-29 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-29 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-29 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-30 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-30 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-30 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-30 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-30 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-31 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-31 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-31 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-31 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-31 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +PREHOOK: query: select * from flights_tiny_orc_partitioned_timestamp +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_timestamp +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +Baltimore New York 2010-10-20 -30.0 1064 2010-10-20 07:00:00 +Baltimore New York 2010-10-20 23.0 1142 2010-10-20 07:00:00 +Baltimore New York 2010-10-20 6.0 1599 2010-10-20 07:00:00 +Chicago New York 2010-10-20 42.0 361 2010-10-20 07:00:00 +Chicago New York 2010-10-20 24.0 897 2010-10-20 07:00:00 +Chicago New York 2010-10-20 15.0 1531 2010-10-20 07:00:00 +Chicago New York 2010-10-20 -6.0 1610 2010-10-20 07:00:00 +Chicago New York 2010-10-20 -2.0 3198 2010-10-20 07:00:00 +Cleveland New York 2010-10-20 -8.0 2630 2010-10-20 07:00:00 +Cleveland New York 2010-10-20 -15.0 3014 2010-10-20 07:00:00 +Washington New York 2010-10-20 -2.0 7291 2010-10-20 07:00:00 +Baltimore New York 2010-10-21 17.0 1064 2010-10-21 07:00:00 +Baltimore New York 2010-10-21 105.0 1142 2010-10-21 07:00:00 +Baltimore New York 2010-10-21 28.0 1599 2010-10-21 07:00:00 +Chicago New York 2010-10-21 142.0 361 2010-10-21 07:00:00 +Chicago New York 2010-10-21 77.0 897 2010-10-21 07:00:00 +Chicago New York 2010-10-21 53.0 1531 2010-10-21 07:00:00 +Chicago New York 2010-10-21 -5.0 1610 2010-10-21 07:00:00 +Chicago New York 2010-10-21 51.0 3198 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 3.0 2630 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 29.0 2646 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 72.0 3014 2010-10-21 07:00:00 +Washington New York 2010-10-21 22.0 7291 2010-10-21 07:00:00 +Baltimore New York 2010-10-22 -12.0 1064 2010-10-22 07:00:00 +Baltimore New York 2010-10-22 54.0 1142 2010-10-22 07:00:00 +Baltimore New York 2010-10-22 18.0 1599 2010-10-22 07:00:00 +Chicago New York 2010-10-22 2.0 361 2010-10-22 07:00:00 +Chicago New York 2010-10-22 24.0 897 2010-10-22 07:00:00 +Chicago New York 2010-10-22 16.0 1531 2010-10-22 07:00:00 +Chicago New York 2010-10-22 -6.0 1610 2010-10-22 07:00:00 +Chicago New York 2010-10-22 -11.0 3198 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 1.0 2630 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 -25.0 2646 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 -3.0 3014 2010-10-22 07:00:00 +Baltimore New York 2010-10-23 18.0 272 2010-10-23 07:00:00 +Baltimore New York 2010-10-23 -10.0 1805 2010-10-23 07:00:00 +Baltimore New York 2010-10-23 6.0 3171 2010-10-23 07:00:00 +Chicago New York 2010-10-23 3.0 384 2010-10-23 07:00:00 +Chicago New York 2010-10-23 32.0 426 2010-10-23 07:00:00 +Chicago New York 2010-10-23 1.0 650 2010-10-23 07:00:00 +Chicago New York 2010-10-23 11.0 3085 2010-10-23 07:00:00 +Cleveland New York 2010-10-23 -21.0 2932 2010-10-23 07:00:00 +Washington New York 2010-10-23 -25.0 5832 2010-10-23 07:00:00 +Washington New York 2010-10-23 -21.0 5904 2010-10-23 07:00:00 +Washington New York 2010-10-23 -18.0 5917 2010-10-23 07:00:00 +Washington New York 2010-10-23 -16.0 7274 2010-10-23 07:00:00 +Baltimore New York 2010-10-24 12.0 1599 2010-10-24 07:00:00 +Baltimore New York 2010-10-24 20.0 2571 2010-10-24 07:00:00 +Chicago New York 2010-10-24 10.0 361 2010-10-24 07:00:00 +Chicago New York 2010-10-24 113.0 897 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -5.0 1531 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -17.0 1610 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -3.0 3198 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 5.0 2254 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -11.0 2630 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -20.0 2646 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -9.0 3014 2010-10-24 07:00:00 +Washington New York 2010-10-24 -26.0 7282 2010-10-24 07:00:00 +Baltimore New York 2010-10-25 -25.0 1064 2010-10-25 07:00:00 +Baltimore New York 2010-10-25 92.0 1142 2010-10-25 07:00:00 +Baltimore New York 2010-10-25 106.0 1599 2010-10-25 07:00:00 +Chicago New York 2010-10-25 31.0 361 2010-10-25 07:00:00 +Chicago New York 2010-10-25 -1.0 897 2010-10-25 07:00:00 +Chicago New York 2010-10-25 43.0 1531 2010-10-25 07:00:00 +Chicago New York 2010-10-25 6.0 1610 2010-10-25 07:00:00 +Chicago New York 2010-10-25 -16.0 3198 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 -4.0 2630 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 81.0 2646 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 42.0 3014 2010-10-25 07:00:00 +Washington New York 2010-10-25 9.0 7291 2010-10-25 07:00:00 +Baltimore New York 2010-10-26 -22.0 1064 2010-10-26 07:00:00 +Baltimore New York 2010-10-26 123.0 1142 2010-10-26 07:00:00 +Baltimore New York 2010-10-26 90.0 1599 2010-10-26 07:00:00 +Chicago New York 2010-10-26 12.0 361 2010-10-26 07:00:00 +Chicago New York 2010-10-26 0.0 897 2010-10-26 07:00:00 +Chicago New York 2010-10-26 29.0 1531 2010-10-26 07:00:00 +Chicago New York 2010-10-26 -17.0 1610 2010-10-26 07:00:00 +Chicago New York 2010-10-26 6.0 3198 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 4.0 2630 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 -27.0 2646 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 -11.0 2662 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 13.0 3014 2010-10-26 07:00:00 +Washington New York 2010-10-26 4.0 7291 2010-10-26 07:00:00 +Baltimore New York 2010-10-27 -18.0 1064 2010-10-27 07:00:00 +Baltimore New York 2010-10-27 49.0 1142 2010-10-27 07:00:00 +Baltimore New York 2010-10-27 92.0 1599 2010-10-27 07:00:00 +Chicago New York 2010-10-27 148.0 361 2010-10-27 07:00:00 +Chicago New York 2010-10-27 -11.0 897 2010-10-27 07:00:00 +Chicago New York 2010-10-27 70.0 1531 2010-10-27 07:00:00 +Chicago New York 2010-10-27 8.0 1610 2010-10-27 07:00:00 +Chicago New York 2010-10-27 21.0 3198 2010-10-27 07:00:00 +Cleveland New York 2010-10-27 16.0 2630 2010-10-27 07:00:00 +Cleveland New York 2010-10-27 27.0 3014 2010-10-27 07:00:00 +Washington New York 2010-10-27 26.0 7291 2010-10-27 07:00:00 +Baltimore New York 2010-10-28 -4.0 1064 2010-10-28 07:00:00 +Baltimore New York 2010-10-28 -14.0 1142 2010-10-28 07:00:00 +Baltimore New York 2010-10-28 -14.0 1599 2010-10-28 07:00:00 +Chicago New York 2010-10-28 2.0 361 2010-10-28 07:00:00 +Chicago New York 2010-10-28 2.0 897 2010-10-28 07:00:00 +Chicago New York 2010-10-28 -11.0 1531 2010-10-28 07:00:00 +Chicago New York 2010-10-28 3.0 1610 2010-10-28 07:00:00 +Chicago New York 2010-10-28 -18.0 3198 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 3.0 2630 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 -6.0 2646 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 1.0 3014 2010-10-28 07:00:00 +Washington New York 2010-10-28 45.0 7291 2010-10-28 07:00:00 +Baltimore New York 2010-10-29 -24.0 1064 2010-10-29 07:00:00 +Baltimore New York 2010-10-29 21.0 1142 2010-10-29 07:00:00 +Baltimore New York 2010-10-29 -2.0 1599 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -12.0 361 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -11.0 897 2010-10-29 07:00:00 +Chicago New York 2010-10-29 15.0 1531 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -18.0 1610 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -4.0 3198 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -4.0 2630 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -19.0 2646 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -12.0 3014 2010-10-29 07:00:00 +Washington New York 2010-10-29 1.0 7291 2010-10-29 07:00:00 +Baltimore New York 2010-10-30 14.0 272 2010-10-30 07:00:00 +Baltimore New York 2010-10-30 -1.0 1805 2010-10-30 07:00:00 +Baltimore New York 2010-10-30 5.0 3171 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -6.0 384 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -10.0 426 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -5.0 650 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -5.0 3085 2010-10-30 07:00:00 +Cleveland New York 2010-10-30 -23.0 2018 2010-10-30 07:00:00 +Cleveland New York 2010-10-30 -12.0 2932 2010-10-30 07:00:00 +Washington New York 2010-10-30 -27.0 5904 2010-10-30 07:00:00 +Washington New York 2010-10-30 -16.0 5917 2010-10-30 07:00:00 +Baltimore New York 2010-10-31 -1.0 1599 2010-10-31 07:00:00 +Baltimore New York 2010-10-31 -14.0 2571 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -25.0 361 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -18.0 897 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -4.0 1531 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -22.0 1610 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -15.0 3198 2010-10-31 07:00:00 +Washington New York 2010-10-31 -18.0 7282 2010-10-31 07:00:00 +PREHOOK: query: select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +Baltimore New York 2010-10-23 18.0 272 2010-10-23 07:00:00 +Baltimore New York 2010-10-30 14.0 272 2010-10-30 07:00:00 +Chicago New York 2010-10-20 42.0 361 2010-10-20 07:00:00 +Chicago New York 2010-10-21 142.0 361 2010-10-21 07:00:00 +Chicago New York 2010-10-22 2.0 361 2010-10-22 07:00:00 +Chicago New York 2010-10-24 10.0 361 2010-10-24 07:00:00 +Chicago New York 2010-10-25 31.0 361 2010-10-25 07:00:00 +Chicago New York 2010-10-26 12.0 361 2010-10-26 07:00:00 +Chicago New York 2010-10-27 148.0 361 2010-10-27 07:00:00 +Chicago New York 2010-10-28 2.0 361 2010-10-28 07:00:00 +Chicago New York 2010-10-29 -12.0 361 2010-10-29 07:00:00 +Chicago New York 2010-10-31 -25.0 361 2010-10-31 07:00:00 +Chicago New York 2010-10-23 3.0 384 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -6.0 384 2010-10-30 07:00:00 +Chicago New York 2010-10-23 32.0 426 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -10.0 426 2010-10-30 07:00:00 +Chicago New York 2010-10-23 1.0 650 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -5.0 650 2010-10-30 07:00:00 +Chicago New York 2010-10-20 24.0 897 2010-10-20 07:00:00 +Chicago New York 2010-10-21 77.0 897 2010-10-21 07:00:00 +Chicago New York 2010-10-22 24.0 897 2010-10-22 07:00:00 +Chicago New York 2010-10-24 113.0 897 2010-10-24 07:00:00 +Chicago New York 2010-10-25 -1.0 897 2010-10-25 07:00:00 +Chicago New York 2010-10-26 0.0 897 2010-10-26 07:00:00 +Chicago New York 2010-10-27 -11.0 897 2010-10-27 07:00:00 +PREHOOK: query: select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +2010-10-20 07:00:00 11 +2010-10-21 07:00:00 12 +2010-10-22 07:00:00 11 +2010-10-23 07:00:00 12 +2010-10-24 07:00:00 12 +2010-10-25 07:00:00 12 +2010-10-26 07:00:00 13 +2010-10-27 07:00:00 11 +2010-10-28 07:00:00 12 +2010-10-29 07:00:00 12 +2010-10-30 07:00:00 11 +2010-10-31 07:00:00 8 +PREHOOK: query: explain +select * from flights_tiny_orc_partitioned_timestamp +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from flights_tiny_orc_partitioned_timestamp +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: flights_tiny_orc_partitioned_timestamp + Select Operator + expressions: origin_city_name (type: string), dest_city_name (type: string), fl_date (type: date), arr_delay (type: float), fl_num (type: int), fl_time (type: timestamp) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + ListSink + +PREHOOK: query: select * from flights_tiny_orc_partitioned_timestamp +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_timestamp +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +Baltimore New York 2010-10-20 -30.0 1064 2010-10-20 07:00:00 +Baltimore New York 2010-10-20 23.0 1142 2010-10-20 07:00:00 +Baltimore New York 2010-10-20 6.0 1599 2010-10-20 07:00:00 +Chicago New York 2010-10-20 42.0 361 2010-10-20 07:00:00 +Chicago New York 2010-10-20 24.0 897 2010-10-20 07:00:00 +Chicago New York 2010-10-20 15.0 1531 2010-10-20 07:00:00 +Chicago New York 2010-10-20 -6.0 1610 2010-10-20 07:00:00 +Chicago New York 2010-10-20 -2.0 3198 2010-10-20 07:00:00 +Cleveland New York 2010-10-20 -8.0 2630 2010-10-20 07:00:00 +Cleveland New York 2010-10-20 -15.0 3014 2010-10-20 07:00:00 +Washington New York 2010-10-20 -2.0 7291 2010-10-20 07:00:00 +Baltimore New York 2010-10-21 17.0 1064 2010-10-21 07:00:00 +Baltimore New York 2010-10-21 105.0 1142 2010-10-21 07:00:00 +Baltimore New York 2010-10-21 28.0 1599 2010-10-21 07:00:00 +Chicago New York 2010-10-21 142.0 361 2010-10-21 07:00:00 +Chicago New York 2010-10-21 77.0 897 2010-10-21 07:00:00 +Chicago New York 2010-10-21 53.0 1531 2010-10-21 07:00:00 +Chicago New York 2010-10-21 -5.0 1610 2010-10-21 07:00:00 +Chicago New York 2010-10-21 51.0 3198 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 3.0 2630 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 29.0 2646 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 72.0 3014 2010-10-21 07:00:00 +Washington New York 2010-10-21 22.0 7291 2010-10-21 07:00:00 +Baltimore New York 2010-10-22 -12.0 1064 2010-10-22 07:00:00 +Baltimore New York 2010-10-22 54.0 1142 2010-10-22 07:00:00 +Baltimore New York 2010-10-22 18.0 1599 2010-10-22 07:00:00 +Chicago New York 2010-10-22 2.0 361 2010-10-22 07:00:00 +Chicago New York 2010-10-22 24.0 897 2010-10-22 07:00:00 +Chicago New York 2010-10-22 16.0 1531 2010-10-22 07:00:00 +Chicago New York 2010-10-22 -6.0 1610 2010-10-22 07:00:00 +Chicago New York 2010-10-22 -11.0 3198 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 1.0 2630 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 -25.0 2646 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 -3.0 3014 2010-10-22 07:00:00 +Baltimore New York 2010-10-23 18.0 272 2010-10-23 07:00:00 +Baltimore New York 2010-10-23 -10.0 1805 2010-10-23 07:00:00 +Baltimore New York 2010-10-23 6.0 3171 2010-10-23 07:00:00 +Chicago New York 2010-10-23 3.0 384 2010-10-23 07:00:00 +Chicago New York 2010-10-23 32.0 426 2010-10-23 07:00:00 +Chicago New York 2010-10-23 1.0 650 2010-10-23 07:00:00 +Chicago New York 2010-10-23 11.0 3085 2010-10-23 07:00:00 +Cleveland New York 2010-10-23 -21.0 2932 2010-10-23 07:00:00 +Washington New York 2010-10-23 -25.0 5832 2010-10-23 07:00:00 +Washington New York 2010-10-23 -21.0 5904 2010-10-23 07:00:00 +Washington New York 2010-10-23 -18.0 5917 2010-10-23 07:00:00 +Washington New York 2010-10-23 -16.0 7274 2010-10-23 07:00:00 +Baltimore New York 2010-10-24 12.0 1599 2010-10-24 07:00:00 +Baltimore New York 2010-10-24 20.0 2571 2010-10-24 07:00:00 +Chicago New York 2010-10-24 10.0 361 2010-10-24 07:00:00 +Chicago New York 2010-10-24 113.0 897 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -5.0 1531 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -17.0 1610 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -3.0 3198 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 5.0 2254 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -11.0 2630 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -20.0 2646 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -9.0 3014 2010-10-24 07:00:00 +Washington New York 2010-10-24 -26.0 7282 2010-10-24 07:00:00 +Baltimore New York 2010-10-25 -25.0 1064 2010-10-25 07:00:00 +Baltimore New York 2010-10-25 92.0 1142 2010-10-25 07:00:00 +Baltimore New York 2010-10-25 106.0 1599 2010-10-25 07:00:00 +Chicago New York 2010-10-25 31.0 361 2010-10-25 07:00:00 +Chicago New York 2010-10-25 -1.0 897 2010-10-25 07:00:00 +Chicago New York 2010-10-25 43.0 1531 2010-10-25 07:00:00 +Chicago New York 2010-10-25 6.0 1610 2010-10-25 07:00:00 +Chicago New York 2010-10-25 -16.0 3198 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 -4.0 2630 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 81.0 2646 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 42.0 3014 2010-10-25 07:00:00 +Washington New York 2010-10-25 9.0 7291 2010-10-25 07:00:00 +Baltimore New York 2010-10-26 -22.0 1064 2010-10-26 07:00:00 +Baltimore New York 2010-10-26 123.0 1142 2010-10-26 07:00:00 +Baltimore New York 2010-10-26 90.0 1599 2010-10-26 07:00:00 +Chicago New York 2010-10-26 12.0 361 2010-10-26 07:00:00 +Chicago New York 2010-10-26 0.0 897 2010-10-26 07:00:00 +Chicago New York 2010-10-26 29.0 1531 2010-10-26 07:00:00 +Chicago New York 2010-10-26 -17.0 1610 2010-10-26 07:00:00 +Chicago New York 2010-10-26 6.0 3198 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 4.0 2630 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 -27.0 2646 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 -11.0 2662 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 13.0 3014 2010-10-26 07:00:00 +Washington New York 2010-10-26 4.0 7291 2010-10-26 07:00:00 +Baltimore New York 2010-10-27 -18.0 1064 2010-10-27 07:00:00 +Baltimore New York 2010-10-27 49.0 1142 2010-10-27 07:00:00 +Baltimore New York 2010-10-27 92.0 1599 2010-10-27 07:00:00 +Chicago New York 2010-10-27 148.0 361 2010-10-27 07:00:00 +Chicago New York 2010-10-27 -11.0 897 2010-10-27 07:00:00 +Chicago New York 2010-10-27 70.0 1531 2010-10-27 07:00:00 +Chicago New York 2010-10-27 8.0 1610 2010-10-27 07:00:00 +Chicago New York 2010-10-27 21.0 3198 2010-10-27 07:00:00 +Cleveland New York 2010-10-27 16.0 2630 2010-10-27 07:00:00 +Cleveland New York 2010-10-27 27.0 3014 2010-10-27 07:00:00 +Washington New York 2010-10-27 26.0 7291 2010-10-27 07:00:00 +Baltimore New York 2010-10-28 -4.0 1064 2010-10-28 07:00:00 +Baltimore New York 2010-10-28 -14.0 1142 2010-10-28 07:00:00 +Baltimore New York 2010-10-28 -14.0 1599 2010-10-28 07:00:00 +Chicago New York 2010-10-28 2.0 361 2010-10-28 07:00:00 +Chicago New York 2010-10-28 2.0 897 2010-10-28 07:00:00 +Chicago New York 2010-10-28 -11.0 1531 2010-10-28 07:00:00 +Chicago New York 2010-10-28 3.0 1610 2010-10-28 07:00:00 +Chicago New York 2010-10-28 -18.0 3198 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 3.0 2630 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 -6.0 2646 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 1.0 3014 2010-10-28 07:00:00 +Washington New York 2010-10-28 45.0 7291 2010-10-28 07:00:00 +Baltimore New York 2010-10-29 -24.0 1064 2010-10-29 07:00:00 +Baltimore New York 2010-10-29 21.0 1142 2010-10-29 07:00:00 +Baltimore New York 2010-10-29 -2.0 1599 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -12.0 361 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -11.0 897 2010-10-29 07:00:00 +Chicago New York 2010-10-29 15.0 1531 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -18.0 1610 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -4.0 3198 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -4.0 2630 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -19.0 2646 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -12.0 3014 2010-10-29 07:00:00 +Washington New York 2010-10-29 1.0 7291 2010-10-29 07:00:00 +Baltimore New York 2010-10-30 14.0 272 2010-10-30 07:00:00 +Baltimore New York 2010-10-30 -1.0 1805 2010-10-30 07:00:00 +Baltimore New York 2010-10-30 5.0 3171 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -6.0 384 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -10.0 426 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -5.0 650 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -5.0 3085 2010-10-30 07:00:00 +Cleveland New York 2010-10-30 -23.0 2018 2010-10-30 07:00:00 +Cleveland New York 2010-10-30 -12.0 2932 2010-10-30 07:00:00 +Washington New York 2010-10-30 -27.0 5904 2010-10-30 07:00:00 +Washington New York 2010-10-30 -16.0 5917 2010-10-30 07:00:00 +Baltimore New York 2010-10-31 -1.0 1599 2010-10-31 07:00:00 +Baltimore New York 2010-10-31 -14.0 2571 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -25.0 361 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -18.0 897 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -4.0 1531 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -22.0 1610 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -15.0 3198 2010-10-31 07:00:00 +Washington New York 2010-10-31 -18.0 7282 2010-10-31 07:00:00 +PREHOOK: query: explain +select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: flights_tiny_orc_partitioned_timestamp + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: origin_city_name (type: string), dest_city_name (type: string), fl_date (type: date), arr_delay (type: float), fl_num (type: int), fl_time (type: timestamp) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col4 (type: int), _col5 (type: timestamp) + sort order: ++ + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: date), _col3 (type: float) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: date), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: timestamp) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 6175 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col4 (type: int), _col5 (type: timestamp) + sort order: ++ + Statistics: Num rows: 25 Data size: 6175 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: date), _col3 (type: float) + Execution mode: vectorized + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: date), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: timestamp) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 25 Data size: 6175 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 6175 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 6175 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 25 + Processor Tree: + ListSink + +PREHOOK: query: select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +Baltimore New York 2010-10-23 18.0 272 2010-10-23 07:00:00 +Baltimore New York 2010-10-30 14.0 272 2010-10-30 07:00:00 +Chicago New York 2010-10-20 42.0 361 2010-10-20 07:00:00 +Chicago New York 2010-10-21 142.0 361 2010-10-21 07:00:00 +Chicago New York 2010-10-22 2.0 361 2010-10-22 07:00:00 +Chicago New York 2010-10-24 10.0 361 2010-10-24 07:00:00 +Chicago New York 2010-10-25 31.0 361 2010-10-25 07:00:00 +Chicago New York 2010-10-26 12.0 361 2010-10-26 07:00:00 +Chicago New York 2010-10-27 148.0 361 2010-10-27 07:00:00 +Chicago New York 2010-10-28 2.0 361 2010-10-28 07:00:00 +Chicago New York 2010-10-29 -12.0 361 2010-10-29 07:00:00 +Chicago New York 2010-10-31 -25.0 361 2010-10-31 07:00:00 +Chicago New York 2010-10-23 3.0 384 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -6.0 384 2010-10-30 07:00:00 +Chicago New York 2010-10-23 32.0 426 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -10.0 426 2010-10-30 07:00:00 +Chicago New York 2010-10-23 1.0 650 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -5.0 650 2010-10-30 07:00:00 +Chicago New York 2010-10-20 24.0 897 2010-10-20 07:00:00 +Chicago New York 2010-10-21 77.0 897 2010-10-21 07:00:00 +Chicago New York 2010-10-22 24.0 897 2010-10-22 07:00:00 +Chicago New York 2010-10-24 113.0 897 2010-10-24 07:00:00 +Chicago New York 2010-10-25 -1.0 897 2010-10-25 07:00:00 +Chicago New York 2010-10-26 0.0 897 2010-10-26 07:00:00 +Chicago New York 2010-10-27 -11.0 897 2010-10-27 07:00:00 +PREHOOK: query: explain +select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +PREHOOK: type: QUERY +POSTHOOK: query: explain +select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: flights_tiny_orc_partitioned_timestamp + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: fl_time (type: timestamp) + outputColumnNames: fl_time + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + keys: fl_time (type: timestamp) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: timestamp) + sort order: + + Map-reduce partition columns: _col0 (type: timestamp) + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: timestamp) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 16860 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: timestamp), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 16860 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 68 Data size: 16860 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +2010-10-20 07:00:00 11 +2010-10-21 07:00:00 12 +2010-10-22 07:00:00 11 +2010-10-23 07:00:00 12 +2010-10-24 07:00:00 12 +2010-10-25 07:00:00 12 +2010-10-26 07:00:00 13 +2010-10-27 07:00:00 11 +2010-10-28 07:00:00 12 +2010-10-29 07:00:00 12 +2010-10-30 07:00:00 11 +2010-10-31 07:00:00 8 diff --git a/ql/src/test/results/clientpositive/vector_partitioned_date_time.q.out b/ql/src/test/results/clientpositive/vector_partitioned_date_time.q.out new file mode 100644 index 000000000000..f3eff0731354 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_partitioned_date_time.q.out @@ -0,0 +1,2042 @@ +PREHOOK: query: -- Check if vectorization code is handling partitioning on DATE and the other data types. + + +CREATE TABLE flights_tiny ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@flights_tiny +POSTHOOK: query: -- Check if vectorization code is handling partitioning on DATE and the other data types. + + +CREATE TABLE flights_tiny ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@flights_tiny +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/flights_tiny.txt.1' OVERWRITE INTO TABLE flights_tiny +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@flights_tiny +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/flights_tiny.txt.1' OVERWRITE INTO TABLE flights_tiny +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@flights_tiny +PREHOOK: query: CREATE TABLE flights_tiny_orc STORED AS ORC AS +SELECT origin_city_name, dest_city_name, fl_date, to_utc_timestamp(fl_date, 'America/Los_Angeles') as fl_time, arr_delay, fl_num +FROM flights_tiny +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@flights_tiny +PREHOOK: Output: database:default +PREHOOK: Output: default@flights_tiny_orc +POSTHOOK: query: CREATE TABLE flights_tiny_orc STORED AS ORC AS +SELECT origin_city_name, dest_city_name, fl_date, to_utc_timestamp(fl_date, 'America/Los_Angeles') as fl_time, arr_delay, fl_num +FROM flights_tiny +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@flights_tiny +POSTHOOK: Output: database:default +POSTHOOK: Output: default@flights_tiny_orc +PREHOOK: query: SELECT * FROM flights_tiny_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM flights_tiny_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +Baltimore New York 2010-10-20 2010-10-20 07:00:00 -30.0 1064 +Baltimore New York 2010-10-20 2010-10-20 07:00:00 23.0 1142 +Baltimore New York 2010-10-20 2010-10-20 07:00:00 6.0 1599 +Chicago New York 2010-10-20 2010-10-20 07:00:00 42.0 361 +Chicago New York 2010-10-20 2010-10-20 07:00:00 24.0 897 +Chicago New York 2010-10-20 2010-10-20 07:00:00 15.0 1531 +Chicago New York 2010-10-20 2010-10-20 07:00:00 -6.0 1610 +Chicago New York 2010-10-20 2010-10-20 07:00:00 -2.0 3198 +Baltimore New York 2010-10-21 2010-10-21 07:00:00 17.0 1064 +Baltimore New York 2010-10-21 2010-10-21 07:00:00 105.0 1142 +Baltimore New York 2010-10-21 2010-10-21 07:00:00 28.0 1599 +Chicago New York 2010-10-21 2010-10-21 07:00:00 142.0 361 +Chicago New York 2010-10-21 2010-10-21 07:00:00 77.0 897 +Chicago New York 2010-10-21 2010-10-21 07:00:00 53.0 1531 +Chicago New York 2010-10-21 2010-10-21 07:00:00 -5.0 1610 +Chicago New York 2010-10-21 2010-10-21 07:00:00 51.0 3198 +Baltimore New York 2010-10-22 2010-10-22 07:00:00 -12.0 1064 +Baltimore New York 2010-10-22 2010-10-22 07:00:00 54.0 1142 +Baltimore New York 2010-10-22 2010-10-22 07:00:00 18.0 1599 +Chicago New York 2010-10-22 2010-10-22 07:00:00 2.0 361 +Chicago New York 2010-10-22 2010-10-22 07:00:00 24.0 897 +Chicago New York 2010-10-22 2010-10-22 07:00:00 16.0 1531 +Chicago New York 2010-10-22 2010-10-22 07:00:00 -6.0 1610 +Chicago New York 2010-10-22 2010-10-22 07:00:00 -11.0 3198 +Baltimore New York 2010-10-23 2010-10-23 07:00:00 18.0 272 +Baltimore New York 2010-10-23 2010-10-23 07:00:00 -10.0 1805 +Baltimore New York 2010-10-23 2010-10-23 07:00:00 6.0 3171 +Chicago New York 2010-10-23 2010-10-23 07:00:00 3.0 384 +Chicago New York 2010-10-23 2010-10-23 07:00:00 32.0 426 +Chicago New York 2010-10-23 2010-10-23 07:00:00 1.0 650 +Chicago New York 2010-10-23 2010-10-23 07:00:00 11.0 3085 +Baltimore New York 2010-10-24 2010-10-24 07:00:00 12.0 1599 +Baltimore New York 2010-10-24 2010-10-24 07:00:00 20.0 2571 +Chicago New York 2010-10-24 2010-10-24 07:00:00 10.0 361 +Chicago New York 2010-10-24 2010-10-24 07:00:00 113.0 897 +Chicago New York 2010-10-24 2010-10-24 07:00:00 -5.0 1531 +Chicago New York 2010-10-24 2010-10-24 07:00:00 -17.0 1610 +Chicago New York 2010-10-24 2010-10-24 07:00:00 -3.0 3198 +Baltimore New York 2010-10-25 2010-10-25 07:00:00 -25.0 1064 +Baltimore New York 2010-10-25 2010-10-25 07:00:00 92.0 1142 +Baltimore New York 2010-10-25 2010-10-25 07:00:00 106.0 1599 +Chicago New York 2010-10-25 2010-10-25 07:00:00 31.0 361 +Chicago New York 2010-10-25 2010-10-25 07:00:00 -1.0 897 +Chicago New York 2010-10-25 2010-10-25 07:00:00 43.0 1531 +Chicago New York 2010-10-25 2010-10-25 07:00:00 6.0 1610 +Chicago New York 2010-10-25 2010-10-25 07:00:00 -16.0 3198 +Baltimore New York 2010-10-26 2010-10-26 07:00:00 -22.0 1064 +Baltimore New York 2010-10-26 2010-10-26 07:00:00 123.0 1142 +Baltimore New York 2010-10-26 2010-10-26 07:00:00 90.0 1599 +Chicago New York 2010-10-26 2010-10-26 07:00:00 12.0 361 +Chicago New York 2010-10-26 2010-10-26 07:00:00 0.0 897 +Chicago New York 2010-10-26 2010-10-26 07:00:00 29.0 1531 +Chicago New York 2010-10-26 2010-10-26 07:00:00 -17.0 1610 +Chicago New York 2010-10-26 2010-10-26 07:00:00 6.0 3198 +Baltimore New York 2010-10-27 2010-10-27 07:00:00 -18.0 1064 +Baltimore New York 2010-10-27 2010-10-27 07:00:00 49.0 1142 +Baltimore New York 2010-10-27 2010-10-27 07:00:00 92.0 1599 +Chicago New York 2010-10-27 2010-10-27 07:00:00 148.0 361 +Chicago New York 2010-10-27 2010-10-27 07:00:00 -11.0 897 +Chicago New York 2010-10-27 2010-10-27 07:00:00 70.0 1531 +Chicago New York 2010-10-27 2010-10-27 07:00:00 8.0 1610 +Chicago New York 2010-10-27 2010-10-27 07:00:00 21.0 3198 +Baltimore New York 2010-10-28 2010-10-28 07:00:00 -4.0 1064 +Baltimore New York 2010-10-28 2010-10-28 07:00:00 -14.0 1142 +Baltimore New York 2010-10-28 2010-10-28 07:00:00 -14.0 1599 +Chicago New York 2010-10-28 2010-10-28 07:00:00 2.0 361 +Chicago New York 2010-10-28 2010-10-28 07:00:00 2.0 897 +Chicago New York 2010-10-28 2010-10-28 07:00:00 -11.0 1531 +Chicago New York 2010-10-28 2010-10-28 07:00:00 3.0 1610 +Chicago New York 2010-10-28 2010-10-28 07:00:00 -18.0 3198 +Baltimore New York 2010-10-29 2010-10-29 07:00:00 -24.0 1064 +Baltimore New York 2010-10-29 2010-10-29 07:00:00 21.0 1142 +Baltimore New York 2010-10-29 2010-10-29 07:00:00 -2.0 1599 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -12.0 361 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -11.0 897 +Chicago New York 2010-10-29 2010-10-29 07:00:00 15.0 1531 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -18.0 1610 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -4.0 3198 +Baltimore New York 2010-10-30 2010-10-30 07:00:00 14.0 272 +Baltimore New York 2010-10-30 2010-10-30 07:00:00 -1.0 1805 +Baltimore New York 2010-10-30 2010-10-30 07:00:00 5.0 3171 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -6.0 384 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -10.0 426 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -5.0 650 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -5.0 3085 +Baltimore New York 2010-10-31 2010-10-31 07:00:00 -1.0 1599 +Baltimore New York 2010-10-31 2010-10-31 07:00:00 -14.0 2571 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -25.0 361 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -18.0 897 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -4.0 1531 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -22.0 1610 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -15.0 3198 +Cleveland New York 2010-10-30 2010-10-30 07:00:00 -23.0 2018 +Cleveland New York 2010-10-30 2010-10-30 07:00:00 -12.0 2932 +Cleveland New York 2010-10-29 2010-10-29 07:00:00 -4.0 2630 +Cleveland New York 2010-10-29 2010-10-29 07:00:00 -19.0 2646 +Cleveland New York 2010-10-29 2010-10-29 07:00:00 -12.0 3014 +Cleveland New York 2010-10-28 2010-10-28 07:00:00 3.0 2630 +Cleveland New York 2010-10-28 2010-10-28 07:00:00 -6.0 2646 +Cleveland New York 2010-10-28 2010-10-28 07:00:00 1.0 3014 +Cleveland New York 2010-10-27 2010-10-27 07:00:00 16.0 2630 +Cleveland New York 2010-10-27 2010-10-27 07:00:00 27.0 3014 +Cleveland New York 2010-10-26 2010-10-26 07:00:00 4.0 2630 +Cleveland New York 2010-10-26 2010-10-26 07:00:00 -27.0 2646 +Cleveland New York 2010-10-26 2010-10-26 07:00:00 -11.0 2662 +Cleveland New York 2010-10-26 2010-10-26 07:00:00 13.0 3014 +Cleveland New York 2010-10-25 2010-10-25 07:00:00 -4.0 2630 +Cleveland New York 2010-10-25 2010-10-25 07:00:00 81.0 2646 +Cleveland New York 2010-10-25 2010-10-25 07:00:00 42.0 3014 +Cleveland New York 2010-10-24 2010-10-24 07:00:00 5.0 2254 +Cleveland New York 2010-10-24 2010-10-24 07:00:00 -11.0 2630 +Cleveland New York 2010-10-24 2010-10-24 07:00:00 -20.0 2646 +Cleveland New York 2010-10-24 2010-10-24 07:00:00 -9.0 3014 +Cleveland New York 2010-10-23 2010-10-23 07:00:00 -21.0 2932 +Cleveland New York 2010-10-22 2010-10-22 07:00:00 1.0 2630 +Cleveland New York 2010-10-22 2010-10-22 07:00:00 -25.0 2646 +Cleveland New York 2010-10-22 2010-10-22 07:00:00 -3.0 3014 +Cleveland New York 2010-10-21 2010-10-21 07:00:00 3.0 2630 +Cleveland New York 2010-10-21 2010-10-21 07:00:00 29.0 2646 +Cleveland New York 2010-10-21 2010-10-21 07:00:00 72.0 3014 +Cleveland New York 2010-10-20 2010-10-20 07:00:00 -8.0 2630 +Cleveland New York 2010-10-20 2010-10-20 07:00:00 -15.0 3014 +Washington New York 2010-10-23 2010-10-23 07:00:00 -25.0 5832 +Washington New York 2010-10-23 2010-10-23 07:00:00 -21.0 5904 +Washington New York 2010-10-23 2010-10-23 07:00:00 -18.0 5917 +Washington New York 2010-10-30 2010-10-30 07:00:00 -27.0 5904 +Washington New York 2010-10-30 2010-10-30 07:00:00 -16.0 5917 +Washington New York 2010-10-20 2010-10-20 07:00:00 -2.0 7291 +Washington New York 2010-10-21 2010-10-21 07:00:00 22.0 7291 +Washington New York 2010-10-23 2010-10-23 07:00:00 -16.0 7274 +Washington New York 2010-10-24 2010-10-24 07:00:00 -26.0 7282 +Washington New York 2010-10-25 2010-10-25 07:00:00 9.0 7291 +Washington New York 2010-10-26 2010-10-26 07:00:00 4.0 7291 +Washington New York 2010-10-27 2010-10-27 07:00:00 26.0 7291 +Washington New York 2010-10-28 2010-10-28 07:00:00 45.0 7291 +Washington New York 2010-10-29 2010-10-29 07:00:00 1.0 7291 +Washington New York 2010-10-31 2010-10-31 07:00:00 -18.0 7282 +PREHOOK: query: select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +Baltimore New York 2010-10-23 2010-10-23 07:00:00 18.0 272 +Baltimore New York 2010-10-30 2010-10-30 07:00:00 14.0 272 +Chicago New York 2010-10-20 2010-10-20 07:00:00 42.0 361 +Chicago New York 2010-10-21 2010-10-21 07:00:00 142.0 361 +Chicago New York 2010-10-22 2010-10-22 07:00:00 2.0 361 +Chicago New York 2010-10-24 2010-10-24 07:00:00 10.0 361 +Chicago New York 2010-10-25 2010-10-25 07:00:00 31.0 361 +Chicago New York 2010-10-26 2010-10-26 07:00:00 12.0 361 +Chicago New York 2010-10-27 2010-10-27 07:00:00 148.0 361 +Chicago New York 2010-10-28 2010-10-28 07:00:00 2.0 361 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -12.0 361 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -25.0 361 +Chicago New York 2010-10-23 2010-10-23 07:00:00 3.0 384 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -6.0 384 +Chicago New York 2010-10-23 2010-10-23 07:00:00 32.0 426 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -10.0 426 +Chicago New York 2010-10-23 2010-10-23 07:00:00 1.0 650 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -5.0 650 +Chicago New York 2010-10-20 2010-10-20 07:00:00 24.0 897 +Chicago New York 2010-10-21 2010-10-21 07:00:00 77.0 897 +Chicago New York 2010-10-22 2010-10-22 07:00:00 24.0 897 +Chicago New York 2010-10-24 2010-10-24 07:00:00 113.0 897 +Chicago New York 2010-10-25 2010-10-25 07:00:00 -1.0 897 +Chicago New York 2010-10-26 2010-10-26 07:00:00 0.0 897 +Chicago New York 2010-10-27 2010-10-27 07:00:00 -11.0 897 +PREHOOK: query: select fl_date, count(*) from flights_tiny_orc group by fl_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +POSTHOOK: query: select fl_date, count(*) from flights_tiny_orc group by fl_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +2010-10-20 11 +2010-10-21 12 +2010-10-22 11 +2010-10-23 12 +2010-10-24 12 +2010-10-25 12 +2010-10-26 13 +2010-10-27 11 +2010-10-28 12 +2010-10-29 12 +2010-10-30 11 +2010-10-31 8 +PREHOOK: query: explain +select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: flights_tiny_orc + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: origin_city_name (type: string), dest_city_name (type: string), fl_date (type: date), fl_time (type: timestamp), arr_delay (type: float), fl_num (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col5 (type: int), _col2 (type: date) + sort order: ++ + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col3 (type: timestamp), _col4 (type: float) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), KEY.reducesinkkey1 (type: date), VALUE._col2 (type: timestamp), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 7200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col5 (type: int), _col2 (type: date) + sort order: ++ + Statistics: Num rows: 25 Data size: 7200 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col3 (type: timestamp), _col4 (type: float) + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), KEY.reducesinkkey1 (type: date), VALUE._col2 (type: timestamp), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 25 Data size: 7200 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 7200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 7200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 25 + Processor Tree: + ListSink + +PREHOOK: query: select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +Baltimore New York 2010-10-23 2010-10-23 07:00:00 18.0 272 +Baltimore New York 2010-10-30 2010-10-30 07:00:00 14.0 272 +Chicago New York 2010-10-20 2010-10-20 07:00:00 42.0 361 +Chicago New York 2010-10-21 2010-10-21 07:00:00 142.0 361 +Chicago New York 2010-10-22 2010-10-22 07:00:00 2.0 361 +Chicago New York 2010-10-24 2010-10-24 07:00:00 10.0 361 +Chicago New York 2010-10-25 2010-10-25 07:00:00 31.0 361 +Chicago New York 2010-10-26 2010-10-26 07:00:00 12.0 361 +Chicago New York 2010-10-27 2010-10-27 07:00:00 148.0 361 +Chicago New York 2010-10-28 2010-10-28 07:00:00 2.0 361 +Chicago New York 2010-10-29 2010-10-29 07:00:00 -12.0 361 +Chicago New York 2010-10-31 2010-10-31 07:00:00 -25.0 361 +Chicago New York 2010-10-23 2010-10-23 07:00:00 3.0 384 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -6.0 384 +Chicago New York 2010-10-23 2010-10-23 07:00:00 32.0 426 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -10.0 426 +Chicago New York 2010-10-23 2010-10-23 07:00:00 1.0 650 +Chicago New York 2010-10-30 2010-10-30 07:00:00 -5.0 650 +Chicago New York 2010-10-20 2010-10-20 07:00:00 24.0 897 +Chicago New York 2010-10-21 2010-10-21 07:00:00 77.0 897 +Chicago New York 2010-10-22 2010-10-22 07:00:00 24.0 897 +Chicago New York 2010-10-24 2010-10-24 07:00:00 113.0 897 +Chicago New York 2010-10-25 2010-10-25 07:00:00 -1.0 897 +Chicago New York 2010-10-26 2010-10-26 07:00:00 0.0 897 +Chicago New York 2010-10-27 2010-10-27 07:00:00 -11.0 897 +PREHOOK: query: explain +select fl_date, count(*) from flights_tiny_orc group by fl_date +PREHOOK: type: QUERY +POSTHOOK: query: explain +select fl_date, count(*) from flights_tiny_orc group by fl_date +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: flights_tiny_orc + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: fl_date (type: date) + outputColumnNames: fl_date + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + keys: fl_date (type: date) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: date) + sort order: + + Map-reduce partition columns: _col0 (type: date) + Statistics: Num rows: 137 Data size: 39456 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: date) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 19584 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: date), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 19584 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 68 Data size: 19584 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select fl_date, count(*) from flights_tiny_orc group by fl_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +POSTHOOK: query: select fl_date, count(*) from flights_tiny_orc group by fl_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +#### A masked pattern was here #### +2010-10-20 11 +2010-10-21 12 +2010-10-22 11 +2010-10-23 12 +2010-10-24 12 +2010-10-25 12 +2010-10-26 13 +2010-10-27 11 +2010-10-28 12 +2010-10-29 12 +2010-10-30 11 +2010-10-31 8 +PREHOOK: query: CREATE TABLE flights_tiny_orc_partitioned_date ( + origin_city_name STRING, + dest_city_name STRING, + fl_time TIMESTAMP, + arr_delay FLOAT, + fl_num INT +) +PARTITIONED BY (fl_date DATE) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@flights_tiny_orc_partitioned_date +POSTHOOK: query: CREATE TABLE flights_tiny_orc_partitioned_date ( + origin_city_name STRING, + dest_city_name STRING, + fl_time TIMESTAMP, + arr_delay FLOAT, + fl_num INT +) +PARTITIONED BY (fl_date DATE) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date +PREHOOK: query: INSERT INTO TABLE flights_tiny_orc_partitioned_date +PARTITION (fl_date) +SELECT origin_city_name, dest_city_name, fl_time, arr_delay, fl_num, fl_date +FROM flights_tiny_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +PREHOOK: Output: default@flights_tiny_orc_partitioned_date +POSTHOOK: query: INSERT INTO TABLE flights_tiny_orc_partitioned_date +PARTITION (fl_date) +SELECT origin_city_name, dest_city_name, fl_time, arr_delay, fl_num, fl_date +FROM flights_tiny_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-20).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-20).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-20).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-20).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-20).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-21).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-21).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-21).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-21).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-21).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-22).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-22).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-22).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-22).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-22).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-23).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-23).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-23).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-23).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-23).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-24).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-24).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-24).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-24).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-24).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-25).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-25).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-25).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-25).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-25).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-26).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-26).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-26).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-26).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-26).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-27).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-27).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-27).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-27).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-27).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-28).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-28).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-28).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-28).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-28).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-29).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-29).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-29).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-29).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-29).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-30).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-30).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-30).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-30).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-30).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-31).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-31).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-31).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-31).fl_time SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_time, type:timestamp, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_date PARTITION(fl_date=2010-10-31).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +PREHOOK: query: select * from flights_tiny_orc_partitioned_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +Baltimore New York 2010-10-20 07:00:00 -30.0 1064 2010-10-20 +Baltimore New York 2010-10-20 07:00:00 23.0 1142 2010-10-20 +Baltimore New York 2010-10-20 07:00:00 6.0 1599 2010-10-20 +Chicago New York 2010-10-20 07:00:00 42.0 361 2010-10-20 +Chicago New York 2010-10-20 07:00:00 24.0 897 2010-10-20 +Chicago New York 2010-10-20 07:00:00 15.0 1531 2010-10-20 +Chicago New York 2010-10-20 07:00:00 -6.0 1610 2010-10-20 +Chicago New York 2010-10-20 07:00:00 -2.0 3198 2010-10-20 +Cleveland New York 2010-10-20 07:00:00 -8.0 2630 2010-10-20 +Cleveland New York 2010-10-20 07:00:00 -15.0 3014 2010-10-20 +Washington New York 2010-10-20 07:00:00 -2.0 7291 2010-10-20 +Baltimore New York 2010-10-21 07:00:00 17.0 1064 2010-10-21 +Baltimore New York 2010-10-21 07:00:00 105.0 1142 2010-10-21 +Baltimore New York 2010-10-21 07:00:00 28.0 1599 2010-10-21 +Chicago New York 2010-10-21 07:00:00 142.0 361 2010-10-21 +Chicago New York 2010-10-21 07:00:00 77.0 897 2010-10-21 +Chicago New York 2010-10-21 07:00:00 53.0 1531 2010-10-21 +Chicago New York 2010-10-21 07:00:00 -5.0 1610 2010-10-21 +Chicago New York 2010-10-21 07:00:00 51.0 3198 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 3.0 2630 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 29.0 2646 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 72.0 3014 2010-10-21 +Washington New York 2010-10-21 07:00:00 22.0 7291 2010-10-21 +Baltimore New York 2010-10-22 07:00:00 -12.0 1064 2010-10-22 +Baltimore New York 2010-10-22 07:00:00 54.0 1142 2010-10-22 +Baltimore New York 2010-10-22 07:00:00 18.0 1599 2010-10-22 +Chicago New York 2010-10-22 07:00:00 2.0 361 2010-10-22 +Chicago New York 2010-10-22 07:00:00 24.0 897 2010-10-22 +Chicago New York 2010-10-22 07:00:00 16.0 1531 2010-10-22 +Chicago New York 2010-10-22 07:00:00 -6.0 1610 2010-10-22 +Chicago New York 2010-10-22 07:00:00 -11.0 3198 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 1.0 2630 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 -25.0 2646 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 -3.0 3014 2010-10-22 +Baltimore New York 2010-10-23 07:00:00 18.0 272 2010-10-23 +Baltimore New York 2010-10-23 07:00:00 -10.0 1805 2010-10-23 +Baltimore New York 2010-10-23 07:00:00 6.0 3171 2010-10-23 +Chicago New York 2010-10-23 07:00:00 3.0 384 2010-10-23 +Chicago New York 2010-10-23 07:00:00 32.0 426 2010-10-23 +Chicago New York 2010-10-23 07:00:00 1.0 650 2010-10-23 +Chicago New York 2010-10-23 07:00:00 11.0 3085 2010-10-23 +Cleveland New York 2010-10-23 07:00:00 -21.0 2932 2010-10-23 +Washington New York 2010-10-23 07:00:00 -25.0 5832 2010-10-23 +Washington New York 2010-10-23 07:00:00 -21.0 5904 2010-10-23 +Washington New York 2010-10-23 07:00:00 -18.0 5917 2010-10-23 +Washington New York 2010-10-23 07:00:00 -16.0 7274 2010-10-23 +Baltimore New York 2010-10-24 07:00:00 12.0 1599 2010-10-24 +Baltimore New York 2010-10-24 07:00:00 20.0 2571 2010-10-24 +Chicago New York 2010-10-24 07:00:00 10.0 361 2010-10-24 +Chicago New York 2010-10-24 07:00:00 113.0 897 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -5.0 1531 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -17.0 1610 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -3.0 3198 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 5.0 2254 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -11.0 2630 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -20.0 2646 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -9.0 3014 2010-10-24 +Washington New York 2010-10-24 07:00:00 -26.0 7282 2010-10-24 +Baltimore New York 2010-10-25 07:00:00 -25.0 1064 2010-10-25 +Baltimore New York 2010-10-25 07:00:00 92.0 1142 2010-10-25 +Baltimore New York 2010-10-25 07:00:00 106.0 1599 2010-10-25 +Chicago New York 2010-10-25 07:00:00 31.0 361 2010-10-25 +Chicago New York 2010-10-25 07:00:00 -1.0 897 2010-10-25 +Chicago New York 2010-10-25 07:00:00 43.0 1531 2010-10-25 +Chicago New York 2010-10-25 07:00:00 6.0 1610 2010-10-25 +Chicago New York 2010-10-25 07:00:00 -16.0 3198 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 -4.0 2630 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 81.0 2646 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 42.0 3014 2010-10-25 +Washington New York 2010-10-25 07:00:00 9.0 7291 2010-10-25 +Baltimore New York 2010-10-26 07:00:00 -22.0 1064 2010-10-26 +Baltimore New York 2010-10-26 07:00:00 123.0 1142 2010-10-26 +Baltimore New York 2010-10-26 07:00:00 90.0 1599 2010-10-26 +Chicago New York 2010-10-26 07:00:00 12.0 361 2010-10-26 +Chicago New York 2010-10-26 07:00:00 0.0 897 2010-10-26 +Chicago New York 2010-10-26 07:00:00 29.0 1531 2010-10-26 +Chicago New York 2010-10-26 07:00:00 -17.0 1610 2010-10-26 +Chicago New York 2010-10-26 07:00:00 6.0 3198 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 4.0 2630 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 -27.0 2646 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 -11.0 2662 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 13.0 3014 2010-10-26 +Washington New York 2010-10-26 07:00:00 4.0 7291 2010-10-26 +Baltimore New York 2010-10-27 07:00:00 -18.0 1064 2010-10-27 +Baltimore New York 2010-10-27 07:00:00 49.0 1142 2010-10-27 +Baltimore New York 2010-10-27 07:00:00 92.0 1599 2010-10-27 +Chicago New York 2010-10-27 07:00:00 148.0 361 2010-10-27 +Chicago New York 2010-10-27 07:00:00 -11.0 897 2010-10-27 +Chicago New York 2010-10-27 07:00:00 70.0 1531 2010-10-27 +Chicago New York 2010-10-27 07:00:00 8.0 1610 2010-10-27 +Chicago New York 2010-10-27 07:00:00 21.0 3198 2010-10-27 +Cleveland New York 2010-10-27 07:00:00 16.0 2630 2010-10-27 +Cleveland New York 2010-10-27 07:00:00 27.0 3014 2010-10-27 +Washington New York 2010-10-27 07:00:00 26.0 7291 2010-10-27 +Baltimore New York 2010-10-28 07:00:00 -4.0 1064 2010-10-28 +Baltimore New York 2010-10-28 07:00:00 -14.0 1142 2010-10-28 +Baltimore New York 2010-10-28 07:00:00 -14.0 1599 2010-10-28 +Chicago New York 2010-10-28 07:00:00 2.0 361 2010-10-28 +Chicago New York 2010-10-28 07:00:00 2.0 897 2010-10-28 +Chicago New York 2010-10-28 07:00:00 -11.0 1531 2010-10-28 +Chicago New York 2010-10-28 07:00:00 3.0 1610 2010-10-28 +Chicago New York 2010-10-28 07:00:00 -18.0 3198 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 3.0 2630 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 -6.0 2646 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 1.0 3014 2010-10-28 +Washington New York 2010-10-28 07:00:00 45.0 7291 2010-10-28 +Baltimore New York 2010-10-29 07:00:00 -24.0 1064 2010-10-29 +Baltimore New York 2010-10-29 07:00:00 21.0 1142 2010-10-29 +Baltimore New York 2010-10-29 07:00:00 -2.0 1599 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -12.0 361 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -11.0 897 2010-10-29 +Chicago New York 2010-10-29 07:00:00 15.0 1531 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -18.0 1610 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -4.0 3198 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -4.0 2630 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -19.0 2646 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -12.0 3014 2010-10-29 +Washington New York 2010-10-29 07:00:00 1.0 7291 2010-10-29 +Baltimore New York 2010-10-30 07:00:00 14.0 272 2010-10-30 +Baltimore New York 2010-10-30 07:00:00 -1.0 1805 2010-10-30 +Baltimore New York 2010-10-30 07:00:00 5.0 3171 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -6.0 384 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -10.0 426 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -5.0 650 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -5.0 3085 2010-10-30 +Cleveland New York 2010-10-30 07:00:00 -23.0 2018 2010-10-30 +Cleveland New York 2010-10-30 07:00:00 -12.0 2932 2010-10-30 +Washington New York 2010-10-30 07:00:00 -27.0 5904 2010-10-30 +Washington New York 2010-10-30 07:00:00 -16.0 5917 2010-10-30 +Baltimore New York 2010-10-31 07:00:00 -1.0 1599 2010-10-31 +Baltimore New York 2010-10-31 07:00:00 -14.0 2571 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -25.0 361 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -18.0 897 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -4.0 1531 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -22.0 1610 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -15.0 3198 2010-10-31 +Washington New York 2010-10-31 07:00:00 -18.0 7282 2010-10-31 +PREHOOK: query: select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +Baltimore New York 2010-10-23 07:00:00 18.0 272 2010-10-23 +Baltimore New York 2010-10-30 07:00:00 14.0 272 2010-10-30 +Chicago New York 2010-10-20 07:00:00 42.0 361 2010-10-20 +Chicago New York 2010-10-21 07:00:00 142.0 361 2010-10-21 +Chicago New York 2010-10-22 07:00:00 2.0 361 2010-10-22 +Chicago New York 2010-10-24 07:00:00 10.0 361 2010-10-24 +Chicago New York 2010-10-25 07:00:00 31.0 361 2010-10-25 +Chicago New York 2010-10-26 07:00:00 12.0 361 2010-10-26 +Chicago New York 2010-10-27 07:00:00 148.0 361 2010-10-27 +Chicago New York 2010-10-28 07:00:00 2.0 361 2010-10-28 +Chicago New York 2010-10-29 07:00:00 -12.0 361 2010-10-29 +Chicago New York 2010-10-31 07:00:00 -25.0 361 2010-10-31 +Chicago New York 2010-10-23 07:00:00 3.0 384 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -6.0 384 2010-10-30 +Chicago New York 2010-10-23 07:00:00 32.0 426 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -10.0 426 2010-10-30 +Chicago New York 2010-10-23 07:00:00 1.0 650 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -5.0 650 2010-10-30 +Chicago New York 2010-10-20 07:00:00 24.0 897 2010-10-20 +Chicago New York 2010-10-21 07:00:00 77.0 897 2010-10-21 +Chicago New York 2010-10-22 07:00:00 24.0 897 2010-10-22 +Chicago New York 2010-10-24 07:00:00 113.0 897 2010-10-24 +Chicago New York 2010-10-25 07:00:00 -1.0 897 2010-10-25 +Chicago New York 2010-10-26 07:00:00 0.0 897 2010-10-26 +Chicago New York 2010-10-27 07:00:00 -11.0 897 2010-10-27 +PREHOOK: query: select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +2010-10-20 11 +2010-10-21 12 +2010-10-22 11 +2010-10-23 12 +2010-10-24 12 +2010-10-25 12 +2010-10-26 13 +2010-10-27 11 +2010-10-28 12 +2010-10-29 12 +2010-10-30 11 +2010-10-31 8 +PREHOOK: query: explain +select * from flights_tiny_orc_partitioned_date +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from flights_tiny_orc_partitioned_date +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: flights_tiny_orc_partitioned_date + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: origin_city_name (type: string), dest_city_name (type: string), fl_time (type: timestamp), arr_delay (type: float), fl_num (type: int), fl_date (type: date) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + ListSink + +PREHOOK: query: select * from flights_tiny_orc_partitioned_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +Baltimore New York 2010-10-20 07:00:00 -30.0 1064 2010-10-20 +Baltimore New York 2010-10-20 07:00:00 23.0 1142 2010-10-20 +Baltimore New York 2010-10-20 07:00:00 6.0 1599 2010-10-20 +Chicago New York 2010-10-20 07:00:00 42.0 361 2010-10-20 +Chicago New York 2010-10-20 07:00:00 24.0 897 2010-10-20 +Chicago New York 2010-10-20 07:00:00 15.0 1531 2010-10-20 +Chicago New York 2010-10-20 07:00:00 -6.0 1610 2010-10-20 +Chicago New York 2010-10-20 07:00:00 -2.0 3198 2010-10-20 +Cleveland New York 2010-10-20 07:00:00 -8.0 2630 2010-10-20 +Cleveland New York 2010-10-20 07:00:00 -15.0 3014 2010-10-20 +Washington New York 2010-10-20 07:00:00 -2.0 7291 2010-10-20 +Baltimore New York 2010-10-21 07:00:00 17.0 1064 2010-10-21 +Baltimore New York 2010-10-21 07:00:00 105.0 1142 2010-10-21 +Baltimore New York 2010-10-21 07:00:00 28.0 1599 2010-10-21 +Chicago New York 2010-10-21 07:00:00 142.0 361 2010-10-21 +Chicago New York 2010-10-21 07:00:00 77.0 897 2010-10-21 +Chicago New York 2010-10-21 07:00:00 53.0 1531 2010-10-21 +Chicago New York 2010-10-21 07:00:00 -5.0 1610 2010-10-21 +Chicago New York 2010-10-21 07:00:00 51.0 3198 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 3.0 2630 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 29.0 2646 2010-10-21 +Cleveland New York 2010-10-21 07:00:00 72.0 3014 2010-10-21 +Washington New York 2010-10-21 07:00:00 22.0 7291 2010-10-21 +Baltimore New York 2010-10-22 07:00:00 -12.0 1064 2010-10-22 +Baltimore New York 2010-10-22 07:00:00 54.0 1142 2010-10-22 +Baltimore New York 2010-10-22 07:00:00 18.0 1599 2010-10-22 +Chicago New York 2010-10-22 07:00:00 2.0 361 2010-10-22 +Chicago New York 2010-10-22 07:00:00 24.0 897 2010-10-22 +Chicago New York 2010-10-22 07:00:00 16.0 1531 2010-10-22 +Chicago New York 2010-10-22 07:00:00 -6.0 1610 2010-10-22 +Chicago New York 2010-10-22 07:00:00 -11.0 3198 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 1.0 2630 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 -25.0 2646 2010-10-22 +Cleveland New York 2010-10-22 07:00:00 -3.0 3014 2010-10-22 +Baltimore New York 2010-10-23 07:00:00 18.0 272 2010-10-23 +Baltimore New York 2010-10-23 07:00:00 -10.0 1805 2010-10-23 +Baltimore New York 2010-10-23 07:00:00 6.0 3171 2010-10-23 +Chicago New York 2010-10-23 07:00:00 3.0 384 2010-10-23 +Chicago New York 2010-10-23 07:00:00 32.0 426 2010-10-23 +Chicago New York 2010-10-23 07:00:00 1.0 650 2010-10-23 +Chicago New York 2010-10-23 07:00:00 11.0 3085 2010-10-23 +Cleveland New York 2010-10-23 07:00:00 -21.0 2932 2010-10-23 +Washington New York 2010-10-23 07:00:00 -25.0 5832 2010-10-23 +Washington New York 2010-10-23 07:00:00 -21.0 5904 2010-10-23 +Washington New York 2010-10-23 07:00:00 -18.0 5917 2010-10-23 +Washington New York 2010-10-23 07:00:00 -16.0 7274 2010-10-23 +Baltimore New York 2010-10-24 07:00:00 12.0 1599 2010-10-24 +Baltimore New York 2010-10-24 07:00:00 20.0 2571 2010-10-24 +Chicago New York 2010-10-24 07:00:00 10.0 361 2010-10-24 +Chicago New York 2010-10-24 07:00:00 113.0 897 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -5.0 1531 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -17.0 1610 2010-10-24 +Chicago New York 2010-10-24 07:00:00 -3.0 3198 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 5.0 2254 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -11.0 2630 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -20.0 2646 2010-10-24 +Cleveland New York 2010-10-24 07:00:00 -9.0 3014 2010-10-24 +Washington New York 2010-10-24 07:00:00 -26.0 7282 2010-10-24 +Baltimore New York 2010-10-25 07:00:00 -25.0 1064 2010-10-25 +Baltimore New York 2010-10-25 07:00:00 92.0 1142 2010-10-25 +Baltimore New York 2010-10-25 07:00:00 106.0 1599 2010-10-25 +Chicago New York 2010-10-25 07:00:00 31.0 361 2010-10-25 +Chicago New York 2010-10-25 07:00:00 -1.0 897 2010-10-25 +Chicago New York 2010-10-25 07:00:00 43.0 1531 2010-10-25 +Chicago New York 2010-10-25 07:00:00 6.0 1610 2010-10-25 +Chicago New York 2010-10-25 07:00:00 -16.0 3198 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 -4.0 2630 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 81.0 2646 2010-10-25 +Cleveland New York 2010-10-25 07:00:00 42.0 3014 2010-10-25 +Washington New York 2010-10-25 07:00:00 9.0 7291 2010-10-25 +Baltimore New York 2010-10-26 07:00:00 -22.0 1064 2010-10-26 +Baltimore New York 2010-10-26 07:00:00 123.0 1142 2010-10-26 +Baltimore New York 2010-10-26 07:00:00 90.0 1599 2010-10-26 +Chicago New York 2010-10-26 07:00:00 12.0 361 2010-10-26 +Chicago New York 2010-10-26 07:00:00 0.0 897 2010-10-26 +Chicago New York 2010-10-26 07:00:00 29.0 1531 2010-10-26 +Chicago New York 2010-10-26 07:00:00 -17.0 1610 2010-10-26 +Chicago New York 2010-10-26 07:00:00 6.0 3198 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 4.0 2630 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 -27.0 2646 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 -11.0 2662 2010-10-26 +Cleveland New York 2010-10-26 07:00:00 13.0 3014 2010-10-26 +Washington New York 2010-10-26 07:00:00 4.0 7291 2010-10-26 +Baltimore New York 2010-10-27 07:00:00 -18.0 1064 2010-10-27 +Baltimore New York 2010-10-27 07:00:00 49.0 1142 2010-10-27 +Baltimore New York 2010-10-27 07:00:00 92.0 1599 2010-10-27 +Chicago New York 2010-10-27 07:00:00 148.0 361 2010-10-27 +Chicago New York 2010-10-27 07:00:00 -11.0 897 2010-10-27 +Chicago New York 2010-10-27 07:00:00 70.0 1531 2010-10-27 +Chicago New York 2010-10-27 07:00:00 8.0 1610 2010-10-27 +Chicago New York 2010-10-27 07:00:00 21.0 3198 2010-10-27 +Cleveland New York 2010-10-27 07:00:00 16.0 2630 2010-10-27 +Cleveland New York 2010-10-27 07:00:00 27.0 3014 2010-10-27 +Washington New York 2010-10-27 07:00:00 26.0 7291 2010-10-27 +Baltimore New York 2010-10-28 07:00:00 -4.0 1064 2010-10-28 +Baltimore New York 2010-10-28 07:00:00 -14.0 1142 2010-10-28 +Baltimore New York 2010-10-28 07:00:00 -14.0 1599 2010-10-28 +Chicago New York 2010-10-28 07:00:00 2.0 361 2010-10-28 +Chicago New York 2010-10-28 07:00:00 2.0 897 2010-10-28 +Chicago New York 2010-10-28 07:00:00 -11.0 1531 2010-10-28 +Chicago New York 2010-10-28 07:00:00 3.0 1610 2010-10-28 +Chicago New York 2010-10-28 07:00:00 -18.0 3198 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 3.0 2630 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 -6.0 2646 2010-10-28 +Cleveland New York 2010-10-28 07:00:00 1.0 3014 2010-10-28 +Washington New York 2010-10-28 07:00:00 45.0 7291 2010-10-28 +Baltimore New York 2010-10-29 07:00:00 -24.0 1064 2010-10-29 +Baltimore New York 2010-10-29 07:00:00 21.0 1142 2010-10-29 +Baltimore New York 2010-10-29 07:00:00 -2.0 1599 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -12.0 361 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -11.0 897 2010-10-29 +Chicago New York 2010-10-29 07:00:00 15.0 1531 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -18.0 1610 2010-10-29 +Chicago New York 2010-10-29 07:00:00 -4.0 3198 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -4.0 2630 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -19.0 2646 2010-10-29 +Cleveland New York 2010-10-29 07:00:00 -12.0 3014 2010-10-29 +Washington New York 2010-10-29 07:00:00 1.0 7291 2010-10-29 +Baltimore New York 2010-10-30 07:00:00 14.0 272 2010-10-30 +Baltimore New York 2010-10-30 07:00:00 -1.0 1805 2010-10-30 +Baltimore New York 2010-10-30 07:00:00 5.0 3171 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -6.0 384 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -10.0 426 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -5.0 650 2010-10-30 +Chicago New York 2010-10-30 07:00:00 -5.0 3085 2010-10-30 +Cleveland New York 2010-10-30 07:00:00 -23.0 2018 2010-10-30 +Cleveland New York 2010-10-30 07:00:00 -12.0 2932 2010-10-30 +Washington New York 2010-10-30 07:00:00 -27.0 5904 2010-10-30 +Washington New York 2010-10-30 07:00:00 -16.0 5917 2010-10-30 +Baltimore New York 2010-10-31 07:00:00 -1.0 1599 2010-10-31 +Baltimore New York 2010-10-31 07:00:00 -14.0 2571 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -25.0 361 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -18.0 897 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -4.0 1531 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -22.0 1610 2010-10-31 +Chicago New York 2010-10-31 07:00:00 -15.0 3198 2010-10-31 +Washington New York 2010-10-31 07:00:00 -18.0 7282 2010-10-31 +PREHOOK: query: explain +select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: flights_tiny_orc_partitioned_date + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: origin_city_name (type: string), dest_city_name (type: string), fl_time (type: timestamp), arr_delay (type: float), fl_num (type: int), fl_date (type: date) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col4 (type: int), _col5 (type: date) + sort order: ++ + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: timestamp), _col3 (type: float) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: timestamp), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: date) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 5775 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col4 (type: int), _col5 (type: date) + sort order: ++ + Statistics: Num rows: 25 Data size: 5775 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: timestamp), _col3 (type: float) + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: timestamp), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: date) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 25 Data size: 5775 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 5775 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 5775 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 25 + Processor Tree: + ListSink + +PREHOOK: query: select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_date sort by fl_num, fl_date limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +Baltimore New York 2010-10-23 07:00:00 18.0 272 2010-10-23 +Baltimore New York 2010-10-30 07:00:00 14.0 272 2010-10-30 +Chicago New York 2010-10-20 07:00:00 42.0 361 2010-10-20 +Chicago New York 2010-10-21 07:00:00 142.0 361 2010-10-21 +Chicago New York 2010-10-22 07:00:00 2.0 361 2010-10-22 +Chicago New York 2010-10-24 07:00:00 10.0 361 2010-10-24 +Chicago New York 2010-10-25 07:00:00 31.0 361 2010-10-25 +Chicago New York 2010-10-26 07:00:00 12.0 361 2010-10-26 +Chicago New York 2010-10-27 07:00:00 148.0 361 2010-10-27 +Chicago New York 2010-10-28 07:00:00 2.0 361 2010-10-28 +Chicago New York 2010-10-29 07:00:00 -12.0 361 2010-10-29 +Chicago New York 2010-10-31 07:00:00 -25.0 361 2010-10-31 +Chicago New York 2010-10-23 07:00:00 3.0 384 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -6.0 384 2010-10-30 +Chicago New York 2010-10-23 07:00:00 32.0 426 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -10.0 426 2010-10-30 +Chicago New York 2010-10-23 07:00:00 1.0 650 2010-10-23 +Chicago New York 2010-10-30 07:00:00 -5.0 650 2010-10-30 +Chicago New York 2010-10-20 07:00:00 24.0 897 2010-10-20 +Chicago New York 2010-10-21 07:00:00 77.0 897 2010-10-21 +Chicago New York 2010-10-22 07:00:00 24.0 897 2010-10-22 +Chicago New York 2010-10-24 07:00:00 113.0 897 2010-10-24 +Chicago New York 2010-10-25 07:00:00 -1.0 897 2010-10-25 +Chicago New York 2010-10-26 07:00:00 0.0 897 2010-10-26 +Chicago New York 2010-10-27 07:00:00 -11.0 897 2010-10-27 +PREHOOK: query: explain +select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +PREHOOK: type: QUERY +POSTHOOK: query: explain +select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: flights_tiny_orc_partitioned_date + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: fl_date (type: date) + outputColumnNames: fl_date + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + keys: fl_date (type: date) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: date) + sort order: + + Map-reduce partition columns: _col0 (type: date) + Statistics: Num rows: 137 Data size: 31776 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: date) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 15772 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: date), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 15772 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 68 Data size: 15772 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_date +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +PREHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +POSTHOOK: query: select fl_date, count(*) from flights_tiny_orc_partitioned_date group by fl_date +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-20 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-21 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-22 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-23 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-24 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-25 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-26 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-27 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-28 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-29 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-30 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_date@fl_date=2010-10-31 +#### A masked pattern was here #### +2010-10-20 11 +2010-10-21 12 +2010-10-22 11 +2010-10-23 12 +2010-10-24 12 +2010-10-25 12 +2010-10-26 13 +2010-10-27 11 +2010-10-28 12 +2010-10-29 12 +2010-10-30 11 +2010-10-31 8 +PREHOOK: query: CREATE TABLE flights_tiny_orc_partitioned_timestamp ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +PARTITIONED BY (fl_time TIMESTAMP) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: query: CREATE TABLE flights_tiny_orc_partitioned_timestamp ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +PARTITIONED BY (fl_time TIMESTAMP) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: query: INSERT INTO TABLE flights_tiny_orc_partitioned_timestamp +PARTITION (fl_time) +SELECT origin_city_name, dest_city_name, fl_date, arr_delay, fl_num, fl_time +FROM flights_tiny_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc +PREHOOK: Output: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: query: INSERT INTO TABLE flights_tiny_orc_partitioned_timestamp +PARTITION (fl_time) +SELECT origin_city_name, dest_city_name, fl_date, arr_delay, fl_num, fl_time +FROM flights_tiny_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Output: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-20 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-20 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-20 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-20 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-20 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-21 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-21 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-21 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-21 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-21 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-22 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-22 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-22 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-22 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-22 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-23 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-23 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-23 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-23 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-23 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-24 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-24 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-24 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-24 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-24 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-25 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-25 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-25 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-25 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-25 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-26 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-26 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-26 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-26 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-26 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-27 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-27 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-27 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-27 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-27 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-28 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-28 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-28 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-28 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-28 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-29 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-29 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-29 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-29 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-29 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-30 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-30 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-30 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-30 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-30 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-31 07:00:00).arr_delay SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:arr_delay, type:float, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-31 07:00:00).dest_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:dest_city_name, type:string, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-31 07:00:00).fl_date SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-31 07:00:00).fl_num SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:fl_num, type:int, comment:null), ] +POSTHOOK: Lineage: flights_tiny_orc_partitioned_timestamp PARTITION(fl_time=2010-10-31 07:00:00).origin_city_name SIMPLE [(flights_tiny_orc)flights_tiny_orc.FieldSchema(name:origin_city_name, type:string, comment:null), ] +PREHOOK: query: select * from flights_tiny_orc_partitioned_timestamp +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_timestamp +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +Baltimore New York 2010-10-20 -30.0 1064 2010-10-20 07:00:00 +Baltimore New York 2010-10-20 23.0 1142 2010-10-20 07:00:00 +Baltimore New York 2010-10-20 6.0 1599 2010-10-20 07:00:00 +Chicago New York 2010-10-20 42.0 361 2010-10-20 07:00:00 +Chicago New York 2010-10-20 24.0 897 2010-10-20 07:00:00 +Chicago New York 2010-10-20 15.0 1531 2010-10-20 07:00:00 +Chicago New York 2010-10-20 -6.0 1610 2010-10-20 07:00:00 +Chicago New York 2010-10-20 -2.0 3198 2010-10-20 07:00:00 +Cleveland New York 2010-10-20 -8.0 2630 2010-10-20 07:00:00 +Cleveland New York 2010-10-20 -15.0 3014 2010-10-20 07:00:00 +Washington New York 2010-10-20 -2.0 7291 2010-10-20 07:00:00 +Baltimore New York 2010-10-21 17.0 1064 2010-10-21 07:00:00 +Baltimore New York 2010-10-21 105.0 1142 2010-10-21 07:00:00 +Baltimore New York 2010-10-21 28.0 1599 2010-10-21 07:00:00 +Chicago New York 2010-10-21 142.0 361 2010-10-21 07:00:00 +Chicago New York 2010-10-21 77.0 897 2010-10-21 07:00:00 +Chicago New York 2010-10-21 53.0 1531 2010-10-21 07:00:00 +Chicago New York 2010-10-21 -5.0 1610 2010-10-21 07:00:00 +Chicago New York 2010-10-21 51.0 3198 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 3.0 2630 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 29.0 2646 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 72.0 3014 2010-10-21 07:00:00 +Washington New York 2010-10-21 22.0 7291 2010-10-21 07:00:00 +Baltimore New York 2010-10-22 -12.0 1064 2010-10-22 07:00:00 +Baltimore New York 2010-10-22 54.0 1142 2010-10-22 07:00:00 +Baltimore New York 2010-10-22 18.0 1599 2010-10-22 07:00:00 +Chicago New York 2010-10-22 2.0 361 2010-10-22 07:00:00 +Chicago New York 2010-10-22 24.0 897 2010-10-22 07:00:00 +Chicago New York 2010-10-22 16.0 1531 2010-10-22 07:00:00 +Chicago New York 2010-10-22 -6.0 1610 2010-10-22 07:00:00 +Chicago New York 2010-10-22 -11.0 3198 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 1.0 2630 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 -25.0 2646 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 -3.0 3014 2010-10-22 07:00:00 +Baltimore New York 2010-10-23 18.0 272 2010-10-23 07:00:00 +Baltimore New York 2010-10-23 -10.0 1805 2010-10-23 07:00:00 +Baltimore New York 2010-10-23 6.0 3171 2010-10-23 07:00:00 +Chicago New York 2010-10-23 3.0 384 2010-10-23 07:00:00 +Chicago New York 2010-10-23 32.0 426 2010-10-23 07:00:00 +Chicago New York 2010-10-23 1.0 650 2010-10-23 07:00:00 +Chicago New York 2010-10-23 11.0 3085 2010-10-23 07:00:00 +Cleveland New York 2010-10-23 -21.0 2932 2010-10-23 07:00:00 +Washington New York 2010-10-23 -25.0 5832 2010-10-23 07:00:00 +Washington New York 2010-10-23 -21.0 5904 2010-10-23 07:00:00 +Washington New York 2010-10-23 -18.0 5917 2010-10-23 07:00:00 +Washington New York 2010-10-23 -16.0 7274 2010-10-23 07:00:00 +Baltimore New York 2010-10-24 12.0 1599 2010-10-24 07:00:00 +Baltimore New York 2010-10-24 20.0 2571 2010-10-24 07:00:00 +Chicago New York 2010-10-24 10.0 361 2010-10-24 07:00:00 +Chicago New York 2010-10-24 113.0 897 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -5.0 1531 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -17.0 1610 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -3.0 3198 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 5.0 2254 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -11.0 2630 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -20.0 2646 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -9.0 3014 2010-10-24 07:00:00 +Washington New York 2010-10-24 -26.0 7282 2010-10-24 07:00:00 +Baltimore New York 2010-10-25 -25.0 1064 2010-10-25 07:00:00 +Baltimore New York 2010-10-25 92.0 1142 2010-10-25 07:00:00 +Baltimore New York 2010-10-25 106.0 1599 2010-10-25 07:00:00 +Chicago New York 2010-10-25 31.0 361 2010-10-25 07:00:00 +Chicago New York 2010-10-25 -1.0 897 2010-10-25 07:00:00 +Chicago New York 2010-10-25 43.0 1531 2010-10-25 07:00:00 +Chicago New York 2010-10-25 6.0 1610 2010-10-25 07:00:00 +Chicago New York 2010-10-25 -16.0 3198 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 -4.0 2630 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 81.0 2646 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 42.0 3014 2010-10-25 07:00:00 +Washington New York 2010-10-25 9.0 7291 2010-10-25 07:00:00 +Baltimore New York 2010-10-26 -22.0 1064 2010-10-26 07:00:00 +Baltimore New York 2010-10-26 123.0 1142 2010-10-26 07:00:00 +Baltimore New York 2010-10-26 90.0 1599 2010-10-26 07:00:00 +Chicago New York 2010-10-26 12.0 361 2010-10-26 07:00:00 +Chicago New York 2010-10-26 0.0 897 2010-10-26 07:00:00 +Chicago New York 2010-10-26 29.0 1531 2010-10-26 07:00:00 +Chicago New York 2010-10-26 -17.0 1610 2010-10-26 07:00:00 +Chicago New York 2010-10-26 6.0 3198 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 4.0 2630 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 -27.0 2646 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 -11.0 2662 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 13.0 3014 2010-10-26 07:00:00 +Washington New York 2010-10-26 4.0 7291 2010-10-26 07:00:00 +Baltimore New York 2010-10-27 -18.0 1064 2010-10-27 07:00:00 +Baltimore New York 2010-10-27 49.0 1142 2010-10-27 07:00:00 +Baltimore New York 2010-10-27 92.0 1599 2010-10-27 07:00:00 +Chicago New York 2010-10-27 148.0 361 2010-10-27 07:00:00 +Chicago New York 2010-10-27 -11.0 897 2010-10-27 07:00:00 +Chicago New York 2010-10-27 70.0 1531 2010-10-27 07:00:00 +Chicago New York 2010-10-27 8.0 1610 2010-10-27 07:00:00 +Chicago New York 2010-10-27 21.0 3198 2010-10-27 07:00:00 +Cleveland New York 2010-10-27 16.0 2630 2010-10-27 07:00:00 +Cleveland New York 2010-10-27 27.0 3014 2010-10-27 07:00:00 +Washington New York 2010-10-27 26.0 7291 2010-10-27 07:00:00 +Baltimore New York 2010-10-28 -4.0 1064 2010-10-28 07:00:00 +Baltimore New York 2010-10-28 -14.0 1142 2010-10-28 07:00:00 +Baltimore New York 2010-10-28 -14.0 1599 2010-10-28 07:00:00 +Chicago New York 2010-10-28 2.0 361 2010-10-28 07:00:00 +Chicago New York 2010-10-28 2.0 897 2010-10-28 07:00:00 +Chicago New York 2010-10-28 -11.0 1531 2010-10-28 07:00:00 +Chicago New York 2010-10-28 3.0 1610 2010-10-28 07:00:00 +Chicago New York 2010-10-28 -18.0 3198 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 3.0 2630 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 -6.0 2646 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 1.0 3014 2010-10-28 07:00:00 +Washington New York 2010-10-28 45.0 7291 2010-10-28 07:00:00 +Baltimore New York 2010-10-29 -24.0 1064 2010-10-29 07:00:00 +Baltimore New York 2010-10-29 21.0 1142 2010-10-29 07:00:00 +Baltimore New York 2010-10-29 -2.0 1599 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -12.0 361 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -11.0 897 2010-10-29 07:00:00 +Chicago New York 2010-10-29 15.0 1531 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -18.0 1610 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -4.0 3198 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -4.0 2630 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -19.0 2646 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -12.0 3014 2010-10-29 07:00:00 +Washington New York 2010-10-29 1.0 7291 2010-10-29 07:00:00 +Baltimore New York 2010-10-30 14.0 272 2010-10-30 07:00:00 +Baltimore New York 2010-10-30 -1.0 1805 2010-10-30 07:00:00 +Baltimore New York 2010-10-30 5.0 3171 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -6.0 384 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -10.0 426 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -5.0 650 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -5.0 3085 2010-10-30 07:00:00 +Cleveland New York 2010-10-30 -23.0 2018 2010-10-30 07:00:00 +Cleveland New York 2010-10-30 -12.0 2932 2010-10-30 07:00:00 +Washington New York 2010-10-30 -27.0 5904 2010-10-30 07:00:00 +Washington New York 2010-10-30 -16.0 5917 2010-10-30 07:00:00 +Baltimore New York 2010-10-31 -1.0 1599 2010-10-31 07:00:00 +Baltimore New York 2010-10-31 -14.0 2571 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -25.0 361 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -18.0 897 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -4.0 1531 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -22.0 1610 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -15.0 3198 2010-10-31 07:00:00 +Washington New York 2010-10-31 -18.0 7282 2010-10-31 07:00:00 +PREHOOK: query: select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +Baltimore New York 2010-10-23 18.0 272 2010-10-23 07:00:00 +Baltimore New York 2010-10-30 14.0 272 2010-10-30 07:00:00 +Chicago New York 2010-10-20 42.0 361 2010-10-20 07:00:00 +Chicago New York 2010-10-21 142.0 361 2010-10-21 07:00:00 +Chicago New York 2010-10-22 2.0 361 2010-10-22 07:00:00 +Chicago New York 2010-10-24 10.0 361 2010-10-24 07:00:00 +Chicago New York 2010-10-25 31.0 361 2010-10-25 07:00:00 +Chicago New York 2010-10-26 12.0 361 2010-10-26 07:00:00 +Chicago New York 2010-10-27 148.0 361 2010-10-27 07:00:00 +Chicago New York 2010-10-28 2.0 361 2010-10-28 07:00:00 +Chicago New York 2010-10-29 -12.0 361 2010-10-29 07:00:00 +Chicago New York 2010-10-31 -25.0 361 2010-10-31 07:00:00 +Chicago New York 2010-10-23 3.0 384 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -6.0 384 2010-10-30 07:00:00 +Chicago New York 2010-10-23 32.0 426 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -10.0 426 2010-10-30 07:00:00 +Chicago New York 2010-10-23 1.0 650 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -5.0 650 2010-10-30 07:00:00 +Chicago New York 2010-10-20 24.0 897 2010-10-20 07:00:00 +Chicago New York 2010-10-21 77.0 897 2010-10-21 07:00:00 +Chicago New York 2010-10-22 24.0 897 2010-10-22 07:00:00 +Chicago New York 2010-10-24 113.0 897 2010-10-24 07:00:00 +Chicago New York 2010-10-25 -1.0 897 2010-10-25 07:00:00 +Chicago New York 2010-10-26 0.0 897 2010-10-26 07:00:00 +Chicago New York 2010-10-27 -11.0 897 2010-10-27 07:00:00 +PREHOOK: query: select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +2010-10-20 07:00:00 11 +2010-10-21 07:00:00 12 +2010-10-22 07:00:00 11 +2010-10-23 07:00:00 12 +2010-10-24 07:00:00 12 +2010-10-25 07:00:00 12 +2010-10-26 07:00:00 13 +2010-10-27 07:00:00 11 +2010-10-28 07:00:00 12 +2010-10-29 07:00:00 12 +2010-10-30 07:00:00 11 +2010-10-31 07:00:00 8 +PREHOOK: query: explain +select * from flights_tiny_orc_partitioned_timestamp +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from flights_tiny_orc_partitioned_timestamp +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: flights_tiny_orc_partitioned_timestamp + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: origin_city_name (type: string), dest_city_name (type: string), fl_date (type: date), arr_delay (type: float), fl_num (type: int), fl_time (type: timestamp) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + ListSink + +PREHOOK: query: select * from flights_tiny_orc_partitioned_timestamp +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_timestamp +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +Baltimore New York 2010-10-20 -30.0 1064 2010-10-20 07:00:00 +Baltimore New York 2010-10-20 23.0 1142 2010-10-20 07:00:00 +Baltimore New York 2010-10-20 6.0 1599 2010-10-20 07:00:00 +Chicago New York 2010-10-20 42.0 361 2010-10-20 07:00:00 +Chicago New York 2010-10-20 24.0 897 2010-10-20 07:00:00 +Chicago New York 2010-10-20 15.0 1531 2010-10-20 07:00:00 +Chicago New York 2010-10-20 -6.0 1610 2010-10-20 07:00:00 +Chicago New York 2010-10-20 -2.0 3198 2010-10-20 07:00:00 +Cleveland New York 2010-10-20 -8.0 2630 2010-10-20 07:00:00 +Cleveland New York 2010-10-20 -15.0 3014 2010-10-20 07:00:00 +Washington New York 2010-10-20 -2.0 7291 2010-10-20 07:00:00 +Baltimore New York 2010-10-21 17.0 1064 2010-10-21 07:00:00 +Baltimore New York 2010-10-21 105.0 1142 2010-10-21 07:00:00 +Baltimore New York 2010-10-21 28.0 1599 2010-10-21 07:00:00 +Chicago New York 2010-10-21 142.0 361 2010-10-21 07:00:00 +Chicago New York 2010-10-21 77.0 897 2010-10-21 07:00:00 +Chicago New York 2010-10-21 53.0 1531 2010-10-21 07:00:00 +Chicago New York 2010-10-21 -5.0 1610 2010-10-21 07:00:00 +Chicago New York 2010-10-21 51.0 3198 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 3.0 2630 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 29.0 2646 2010-10-21 07:00:00 +Cleveland New York 2010-10-21 72.0 3014 2010-10-21 07:00:00 +Washington New York 2010-10-21 22.0 7291 2010-10-21 07:00:00 +Baltimore New York 2010-10-22 -12.0 1064 2010-10-22 07:00:00 +Baltimore New York 2010-10-22 54.0 1142 2010-10-22 07:00:00 +Baltimore New York 2010-10-22 18.0 1599 2010-10-22 07:00:00 +Chicago New York 2010-10-22 2.0 361 2010-10-22 07:00:00 +Chicago New York 2010-10-22 24.0 897 2010-10-22 07:00:00 +Chicago New York 2010-10-22 16.0 1531 2010-10-22 07:00:00 +Chicago New York 2010-10-22 -6.0 1610 2010-10-22 07:00:00 +Chicago New York 2010-10-22 -11.0 3198 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 1.0 2630 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 -25.0 2646 2010-10-22 07:00:00 +Cleveland New York 2010-10-22 -3.0 3014 2010-10-22 07:00:00 +Baltimore New York 2010-10-23 18.0 272 2010-10-23 07:00:00 +Baltimore New York 2010-10-23 -10.0 1805 2010-10-23 07:00:00 +Baltimore New York 2010-10-23 6.0 3171 2010-10-23 07:00:00 +Chicago New York 2010-10-23 3.0 384 2010-10-23 07:00:00 +Chicago New York 2010-10-23 32.0 426 2010-10-23 07:00:00 +Chicago New York 2010-10-23 1.0 650 2010-10-23 07:00:00 +Chicago New York 2010-10-23 11.0 3085 2010-10-23 07:00:00 +Cleveland New York 2010-10-23 -21.0 2932 2010-10-23 07:00:00 +Washington New York 2010-10-23 -25.0 5832 2010-10-23 07:00:00 +Washington New York 2010-10-23 -21.0 5904 2010-10-23 07:00:00 +Washington New York 2010-10-23 -18.0 5917 2010-10-23 07:00:00 +Washington New York 2010-10-23 -16.0 7274 2010-10-23 07:00:00 +Baltimore New York 2010-10-24 12.0 1599 2010-10-24 07:00:00 +Baltimore New York 2010-10-24 20.0 2571 2010-10-24 07:00:00 +Chicago New York 2010-10-24 10.0 361 2010-10-24 07:00:00 +Chicago New York 2010-10-24 113.0 897 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -5.0 1531 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -17.0 1610 2010-10-24 07:00:00 +Chicago New York 2010-10-24 -3.0 3198 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 5.0 2254 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -11.0 2630 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -20.0 2646 2010-10-24 07:00:00 +Cleveland New York 2010-10-24 -9.0 3014 2010-10-24 07:00:00 +Washington New York 2010-10-24 -26.0 7282 2010-10-24 07:00:00 +Baltimore New York 2010-10-25 -25.0 1064 2010-10-25 07:00:00 +Baltimore New York 2010-10-25 92.0 1142 2010-10-25 07:00:00 +Baltimore New York 2010-10-25 106.0 1599 2010-10-25 07:00:00 +Chicago New York 2010-10-25 31.0 361 2010-10-25 07:00:00 +Chicago New York 2010-10-25 -1.0 897 2010-10-25 07:00:00 +Chicago New York 2010-10-25 43.0 1531 2010-10-25 07:00:00 +Chicago New York 2010-10-25 6.0 1610 2010-10-25 07:00:00 +Chicago New York 2010-10-25 -16.0 3198 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 -4.0 2630 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 81.0 2646 2010-10-25 07:00:00 +Cleveland New York 2010-10-25 42.0 3014 2010-10-25 07:00:00 +Washington New York 2010-10-25 9.0 7291 2010-10-25 07:00:00 +Baltimore New York 2010-10-26 -22.0 1064 2010-10-26 07:00:00 +Baltimore New York 2010-10-26 123.0 1142 2010-10-26 07:00:00 +Baltimore New York 2010-10-26 90.0 1599 2010-10-26 07:00:00 +Chicago New York 2010-10-26 12.0 361 2010-10-26 07:00:00 +Chicago New York 2010-10-26 0.0 897 2010-10-26 07:00:00 +Chicago New York 2010-10-26 29.0 1531 2010-10-26 07:00:00 +Chicago New York 2010-10-26 -17.0 1610 2010-10-26 07:00:00 +Chicago New York 2010-10-26 6.0 3198 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 4.0 2630 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 -27.0 2646 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 -11.0 2662 2010-10-26 07:00:00 +Cleveland New York 2010-10-26 13.0 3014 2010-10-26 07:00:00 +Washington New York 2010-10-26 4.0 7291 2010-10-26 07:00:00 +Baltimore New York 2010-10-27 -18.0 1064 2010-10-27 07:00:00 +Baltimore New York 2010-10-27 49.0 1142 2010-10-27 07:00:00 +Baltimore New York 2010-10-27 92.0 1599 2010-10-27 07:00:00 +Chicago New York 2010-10-27 148.0 361 2010-10-27 07:00:00 +Chicago New York 2010-10-27 -11.0 897 2010-10-27 07:00:00 +Chicago New York 2010-10-27 70.0 1531 2010-10-27 07:00:00 +Chicago New York 2010-10-27 8.0 1610 2010-10-27 07:00:00 +Chicago New York 2010-10-27 21.0 3198 2010-10-27 07:00:00 +Cleveland New York 2010-10-27 16.0 2630 2010-10-27 07:00:00 +Cleveland New York 2010-10-27 27.0 3014 2010-10-27 07:00:00 +Washington New York 2010-10-27 26.0 7291 2010-10-27 07:00:00 +Baltimore New York 2010-10-28 -4.0 1064 2010-10-28 07:00:00 +Baltimore New York 2010-10-28 -14.0 1142 2010-10-28 07:00:00 +Baltimore New York 2010-10-28 -14.0 1599 2010-10-28 07:00:00 +Chicago New York 2010-10-28 2.0 361 2010-10-28 07:00:00 +Chicago New York 2010-10-28 2.0 897 2010-10-28 07:00:00 +Chicago New York 2010-10-28 -11.0 1531 2010-10-28 07:00:00 +Chicago New York 2010-10-28 3.0 1610 2010-10-28 07:00:00 +Chicago New York 2010-10-28 -18.0 3198 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 3.0 2630 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 -6.0 2646 2010-10-28 07:00:00 +Cleveland New York 2010-10-28 1.0 3014 2010-10-28 07:00:00 +Washington New York 2010-10-28 45.0 7291 2010-10-28 07:00:00 +Baltimore New York 2010-10-29 -24.0 1064 2010-10-29 07:00:00 +Baltimore New York 2010-10-29 21.0 1142 2010-10-29 07:00:00 +Baltimore New York 2010-10-29 -2.0 1599 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -12.0 361 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -11.0 897 2010-10-29 07:00:00 +Chicago New York 2010-10-29 15.0 1531 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -18.0 1610 2010-10-29 07:00:00 +Chicago New York 2010-10-29 -4.0 3198 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -4.0 2630 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -19.0 2646 2010-10-29 07:00:00 +Cleveland New York 2010-10-29 -12.0 3014 2010-10-29 07:00:00 +Washington New York 2010-10-29 1.0 7291 2010-10-29 07:00:00 +Baltimore New York 2010-10-30 14.0 272 2010-10-30 07:00:00 +Baltimore New York 2010-10-30 -1.0 1805 2010-10-30 07:00:00 +Baltimore New York 2010-10-30 5.0 3171 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -6.0 384 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -10.0 426 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -5.0 650 2010-10-30 07:00:00 +Chicago New York 2010-10-30 -5.0 3085 2010-10-30 07:00:00 +Cleveland New York 2010-10-30 -23.0 2018 2010-10-30 07:00:00 +Cleveland New York 2010-10-30 -12.0 2932 2010-10-30 07:00:00 +Washington New York 2010-10-30 -27.0 5904 2010-10-30 07:00:00 +Washington New York 2010-10-30 -16.0 5917 2010-10-30 07:00:00 +Baltimore New York 2010-10-31 -1.0 1599 2010-10-31 07:00:00 +Baltimore New York 2010-10-31 -14.0 2571 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -25.0 361 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -18.0 897 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -4.0 1531 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -22.0 1610 2010-10-31 07:00:00 +Chicago New York 2010-10-31 -15.0 3198 2010-10-31 07:00:00 +Washington New York 2010-10-31 -18.0 7282 2010-10-31 07:00:00 +PREHOOK: query: explain +select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: flights_tiny_orc_partitioned_timestamp + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: origin_city_name (type: string), dest_city_name (type: string), fl_date (type: date), arr_delay (type: float), fl_num (type: int), fl_time (type: timestamp) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col4 (type: int), _col5 (type: timestamp) + sort order: ++ + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: date), _col3 (type: float) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: date), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: timestamp) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 6175 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col4 (type: int), _col5 (type: timestamp) + sort order: ++ + Statistics: Num rows: 25 Data size: 6175 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: date), _col3 (type: float) + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: date), VALUE._col3 (type: float), KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: timestamp) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 25 Data size: 6175 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 6175 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 6175 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 25 + Processor Tree: + ListSink + +PREHOOK: query: select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select * from flights_tiny_orc_partitioned_timestamp sort by fl_num, fl_time limit 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +Baltimore New York 2010-10-23 18.0 272 2010-10-23 07:00:00 +Baltimore New York 2010-10-30 14.0 272 2010-10-30 07:00:00 +Chicago New York 2010-10-20 42.0 361 2010-10-20 07:00:00 +Chicago New York 2010-10-21 142.0 361 2010-10-21 07:00:00 +Chicago New York 2010-10-22 2.0 361 2010-10-22 07:00:00 +Chicago New York 2010-10-24 10.0 361 2010-10-24 07:00:00 +Chicago New York 2010-10-25 31.0 361 2010-10-25 07:00:00 +Chicago New York 2010-10-26 12.0 361 2010-10-26 07:00:00 +Chicago New York 2010-10-27 148.0 361 2010-10-27 07:00:00 +Chicago New York 2010-10-28 2.0 361 2010-10-28 07:00:00 +Chicago New York 2010-10-29 -12.0 361 2010-10-29 07:00:00 +Chicago New York 2010-10-31 -25.0 361 2010-10-31 07:00:00 +Chicago New York 2010-10-23 3.0 384 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -6.0 384 2010-10-30 07:00:00 +Chicago New York 2010-10-23 32.0 426 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -10.0 426 2010-10-30 07:00:00 +Chicago New York 2010-10-23 1.0 650 2010-10-23 07:00:00 +Chicago New York 2010-10-30 -5.0 650 2010-10-30 07:00:00 +Chicago New York 2010-10-20 24.0 897 2010-10-20 07:00:00 +Chicago New York 2010-10-21 77.0 897 2010-10-21 07:00:00 +Chicago New York 2010-10-22 24.0 897 2010-10-22 07:00:00 +Chicago New York 2010-10-24 113.0 897 2010-10-24 07:00:00 +Chicago New York 2010-10-25 -1.0 897 2010-10-25 07:00:00 +Chicago New York 2010-10-26 0.0 897 2010-10-26 07:00:00 +Chicago New York 2010-10-27 -11.0 897 2010-10-27 07:00:00 +PREHOOK: query: explain +select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +PREHOOK: type: QUERY +POSTHOOK: query: explain +select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: flights_tiny_orc_partitioned_timestamp + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: fl_time (type: timestamp) + outputColumnNames: fl_time + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + keys: fl_time (type: timestamp) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: timestamp) + sort order: + + Map-reduce partition columns: _col0 (type: timestamp) + Statistics: Num rows: 137 Data size: 33968 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: timestamp) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 16860 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: timestamp), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 68 Data size: 16860 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 68 Data size: 16860 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +PREHOOK: type: QUERY +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +PREHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +POSTHOOK: query: select fl_time, count(*) from flights_tiny_orc_partitioned_timestamp group by fl_time +POSTHOOK: type: QUERY +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-20 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-21 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-22 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-23 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-24 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-25 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-26 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-27 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-28 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-29 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-30 07%3A00%3A00 +POSTHOOK: Input: default@flights_tiny_orc_partitioned_timestamp@fl_time=2010-10-31 07%3A00%3A00 +#### A masked pattern was here #### +2010-10-20 07:00:00 11 +2010-10-21 07:00:00 12 +2010-10-22 07:00:00 11 +2010-10-23 07:00:00 12 +2010-10-24 07:00:00 12 +2010-10-25 07:00:00 12 +2010-10-26 07:00:00 13 +2010-10-27 07:00:00 11 +2010-10-28 07:00:00 12 +2010-10-29 07:00:00 12 +2010-10-30 07:00:00 11 +2010-10-31 07:00:00 8 From 8db79f50fef9fdb33e23e2419fb28f0f89143e5f Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Tue, 14 Oct 2014 04:58:46 +0000 Subject: [PATCH 107/339] HIVE-8427: Hive Streaming : secure streaming hangs leading to time outs. (Roshan Naik reviewed by Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631616 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hive/hcatalog/streaming/HiveEndPoint.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java index 903883d4c990..91c8dd7083b0 100644 --- a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java +++ b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java @@ -240,6 +240,7 @@ private static class ConnectionImpl implements StreamingConnection { private final HiveEndPoint endPt; private final UserGroupInformation ugi; private final String username; + private final boolean secureMode; /** * @param endPoint end point to connect to @@ -261,7 +262,8 @@ private ConnectionImpl(HiveEndPoint endPoint, UserGroupInformation ugi, if (conf==null) { conf = HiveEndPoint.createHiveConf(this.getClass(), endPoint.metaStoreUri); } - this.msClient = getMetaStoreClient(endPoint, conf); + this.secureMode = ugi==null ? false : ugi.hasKerberosCredentials(); + this.msClient = getMetaStoreClient(endPoint, conf, secureMode); if (createPart && !endPoint.partitionVals.isEmpty()) { createPartitionIfNotExists(endPoint, msClient, conf); } @@ -425,13 +427,15 @@ private static String partSpecStr(List partKeys, ArrayList return buff.toString(); } - private static IMetaStoreClient getMetaStoreClient(HiveEndPoint endPoint, HiveConf conf) + private static IMetaStoreClient getMetaStoreClient(HiveEndPoint endPoint, HiveConf conf, boolean secureMode) throws ConnectionError { if (endPoint.metaStoreUri!= null) { conf.setVar(HiveConf.ConfVars.METASTOREURIS, endPoint.metaStoreUri); } - + if(secureMode) { + conf.setBoolVar(HiveConf.ConfVars.METASTORE_USE_THRIFT_SASL,true); + } try { return new HiveMetaStoreClient(conf); } catch (MetaException e) { From 7e938c734f2e827fa0a50f1ce2cb22f4373b78a2 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Tue, 14 Oct 2014 22:53:48 +0000 Subject: [PATCH 108/339] HIVE-8225 : CBO trunk merge: union11 test fails due to incorrect plan (Pengcheng Xiong, reviewed by Sergey Shelukhin, Laljo John Pullokkaran) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631922 13f79535-47bb-0310-9956-ffa450edef68 --- .../translator/PlanModifierForASTConv.java | 54 ++++++++++++- .../queries/clientpositive/cbo_correctness.q | 24 +++++- .../clientpositive/cbo_correctness.q.out | 81 ++++++++++++++++++- .../clientpositive/tez/cbo_correctness.q.out | 81 ++++++++++++++++++- 4 files changed, 233 insertions(+), 7 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java index 3d90ae7ef0b2..4f96d026908b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java @@ -28,7 +28,10 @@ import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveAggregateRel; import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveProjectRel; import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveSortRel; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; +import org.eigenbase.rel.AggregateCall; import org.eigenbase.rel.AggregateRelBase; +import org.eigenbase.rel.Aggregation; import org.eigenbase.rel.EmptyRel; import org.eigenbase.rel.FilterRelBase; import org.eigenbase.rel.JoinRelBase; @@ -43,9 +46,12 @@ import org.eigenbase.relopt.hep.HepRelVertex; import org.eigenbase.relopt.volcano.RelSubset; import org.eigenbase.reltype.RelDataType; +import org.eigenbase.reltype.RelDataTypeFactory; import org.eigenbase.rex.RexNode; +import org.eigenbase.sql.SqlKind; import org.eigenbase.util.Pair; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; public class PlanModifierForASTConv { @@ -108,8 +114,14 @@ private static void convertOpTree(RelNode rel, RelNode parent) { introduceDerivedTable(((HiveSortRel) rel).getChild(), rel); } } else if (rel instanceof HiveAggregateRel) { + RelNode newParent = parent; if (!validGBParent(rel, parent)) { - introduceDerivedTable(rel, parent); + newParent = introduceDerivedTable(rel, parent); + } + // check if groupby is empty and there is no other cols in aggr + // this should only happen when newParent is constant. + if (isEmptyGrpAggr(rel)) { + replaceEmptyGroupAggr(rel, newParent); } } } @@ -206,7 +218,7 @@ private static RelNode introduceDerivedTable(final RelNode rel) { return select; } - private static void introduceDerivedTable(final RelNode rel, RelNode parent) { + private static RelNode introduceDerivedTable(final RelNode rel, RelNode parent) { int i = 0; int pos = -1; List childList = parent.getInputs(); @@ -226,6 +238,8 @@ private static void introduceDerivedTable(final RelNode rel, RelNode parent) { RelNode select = introduceDerivedTable(rel); parent.replaceInput(pos, select); + + return select; } private static boolean validJoinParent(RelNode joinNode, RelNode parent) { @@ -310,4 +324,40 @@ private static boolean validSetopChild(RelNode setopChild) { return validChild; } + + private static boolean isEmptyGrpAggr(RelNode gbNode) { + // Verify if both groupset and aggrfunction are empty) + AggregateRelBase aggrnode = (AggregateRelBase) gbNode; + if (aggrnode.getGroupSet().isEmpty() && aggrnode.getAggCallList().isEmpty()) { + return true; + } + return false; + } + + private static void replaceEmptyGroupAggr(final RelNode rel, RelNode parent) { + // If this function is called, the parent should only include constant + List exps = parent.getChildExps(); + for (RexNode rexNode : exps) { + if (rexNode.getKind() != SqlKind.LITERAL) { + throw new RuntimeException("We expect " + parent.toString() + + " to contain only constants. However, " + rexNode.toString() + " is " + + rexNode.getKind()); + } + } + HiveAggregateRel oldAggRel = (HiveAggregateRel) rel; + RelDataTypeFactory typeFactory = oldAggRel.getCluster().getTypeFactory(); + RelDataType longType = TypeConverter.convert(TypeInfoFactory.longTypeInfo, typeFactory); + RelDataType intType = TypeConverter.convert(TypeInfoFactory.intTypeInfo, typeFactory); + // Create the dummy aggregation. + Aggregation countFn = (Aggregation) SqlFunctionConverter.getOptiqAggFn("count", + ImmutableList.of(intType), longType); + // TODO: Using 0 might be wrong; might need to walk down to find the + // proper index of a dummy. + List argList = ImmutableList.of(0); + AggregateCall dummyCall = new AggregateCall(countFn, false, argList, longType, null); + AggregateRelBase newAggRel = oldAggRel.copy(oldAggRel.getTraitSet(), oldAggRel.getChild(), + oldAggRel.getGroupSet(), ImmutableList.of(dummyCall)); + RelNode select = introduceDerivedTable(newAggRel); + parent.replaceInput(0, select); + } } diff --git a/ql/src/test/queries/clientpositive/cbo_correctness.q b/ql/src/test/queries/clientpositive/cbo_correctness.q index f7f0722d860b..a65d88a56ac7 100644 --- a/ql/src/test/queries/clientpositive/cbo_correctness.q +++ b/ql/src/test/queries/clientpositive/cbo_correctness.q @@ -456,7 +456,29 @@ from (select b.key, count(*) ) a ; --- 17. get stats with empty partition list +-- 20. Test get stats with empty partition list select t1.value from t1 join t2 on t1.key = t2.key where t1.dt = '10' and t1.c_boolean = true; +-- 21. Test groupby is empty and there is no other cols in aggr +select unionsrc.key FROM (select 'tst1' as key, count(1) as value from src) unionsrc; + +select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src) unionsrc; + +select unionsrc.key FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc order by unionsrc.key; + +select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc order by unionsrc.key; + +select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc group by unionsrc.key order by unionsrc.key; diff --git a/ql/src/test/results/clientpositive/cbo_correctness.q.out b/ql/src/test/results/clientpositive/cbo_correctness.q.out index 3335d4d55313..f3f94fde1642 100644 --- a/ql/src/test/results/clientpositive/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/cbo_correctness.q.out @@ -18946,17 +18946,94 @@ POSTHOOK: Input: default@src_cbo 96 1 97 2 98 2 -PREHOOK: query: -- 17. get stats with empty partition list +PREHOOK: query: -- 20. Test get stats with empty partition list select t1.value from t1 join t2 on t1.key = t2.key where t1.dt = '10' and t1.c_boolean = true PREHOOK: type: QUERY PREHOOK: Input: default@t1 PREHOOK: Input: default@t2 PREHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### -POSTHOOK: query: -- 17. get stats with empty partition list +POSTHOOK: query: -- 20. Test get stats with empty partition list select t1.value from t1 join t2 on t1.key = t2.key where t1.dt = '10' and t1.c_boolean = true POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t2 POSTHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### +PREHOOK: query: -- 21. Test groupby is empty and there is no other cols in aggr +select unionsrc.key FROM (select 'tst1' as key, count(1) as value from src) unionsrc +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: -- 21. Test groupby is empty and there is no other cols in aggr +select unionsrc.key FROM (select 'tst1' as key, count(1) as value from src) unionsrc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +tst1 +PREHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src) unionsrc +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src) unionsrc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +tst1 500 +PREHOOK: query: select unionsrc.key FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc order by unionsrc.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t3 +#### A masked pattern was here #### +POSTHOOK: query: select unionsrc.key FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc order by unionsrc.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t3 +#### A masked pattern was here #### +avg +max +min +PREHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc order by unionsrc.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t3 +#### A masked pattern was here #### +POSTHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc order by unionsrc.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t3 +#### A masked pattern was here #### +avg 1.5 +max 3.0 +min 1.0 +PREHOOK: query: select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc group by unionsrc.key order by unionsrc.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t3 +#### A masked pattern was here #### +POSTHOOK: query: select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc group by unionsrc.key order by unionsrc.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t3 +#### A masked pattern was here #### +avg 1 +max 1 +min 1 diff --git a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out index 5920612790d9..f2c61e6a72bc 100644 --- a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out @@ -18946,17 +18946,94 @@ POSTHOOK: Input: default@src_cbo 96 1 97 2 98 2 -PREHOOK: query: -- 17. get stats with empty partition list +PREHOOK: query: -- 20. Test get stats with empty partition list select t1.value from t1 join t2 on t1.key = t2.key where t1.dt = '10' and t1.c_boolean = true PREHOOK: type: QUERY PREHOOK: Input: default@t1 PREHOOK: Input: default@t2 PREHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### -POSTHOOK: query: -- 17. get stats with empty partition list +POSTHOOK: query: -- 20. Test get stats with empty partition list select t1.value from t1 join t2 on t1.key = t2.key where t1.dt = '10' and t1.c_boolean = true POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t2 POSTHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### +PREHOOK: query: -- 21. Test groupby is empty and there is no other cols in aggr +select unionsrc.key FROM (select 'tst1' as key, count(1) as value from src) unionsrc +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: -- 21. Test groupby is empty and there is no other cols in aggr +select unionsrc.key FROM (select 'tst1' as key, count(1) as value from src) unionsrc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +tst1 +PREHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src) unionsrc +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src) unionsrc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +tst1 500 +PREHOOK: query: select unionsrc.key FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc order by unionsrc.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t3 +#### A masked pattern was here #### +POSTHOOK: query: select unionsrc.key FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc order by unionsrc.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t3 +#### A masked pattern was here #### +avg +max +min +PREHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc order by unionsrc.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t3 +#### A masked pattern was here #### +POSTHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc order by unionsrc.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t3 +#### A masked pattern was here #### +avg 1.5 +max 3.0 +min 1.0 +PREHOOK: query: select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc group by unionsrc.key order by unionsrc.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t3 +#### A masked pattern was here #### +POSTHOOK: query: select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from t3 s1 + UNION ALL + select 'min' as key, min(c_int) as value from t3 s2 + UNION ALL + select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc group by unionsrc.key order by unionsrc.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t3 +#### A masked pattern was here #### +avg 1 +max 1 +min 1 From b28e9ce45e7fbffc43d77bae31a376e6ea31fe9f Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Wed, 15 Oct 2014 01:28:25 +0000 Subject: [PATCH 109/339] HIVE-8415: Vectorized comparison of timestamp and integer needs to treat integer as seconds since epoch (Matt McCline via Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631929 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ant/GenVectorCode.java | 278 +- .../resources/testconfiguration.properties | 2 + .../FilterScalarCompareTimestampColumn.txt | 55 + .../FilterTimestampColumnCompareScalar.txt | 56 + ...rTimestampColumnCompareTimestampScalar.txt | 54 + ...rTimestampScalarCompareTimestampColumn.txt | 53 + .../ScalarCompareTimestampColumn.txt | 63 + .../TimestampColumnCompareScalar.txt | 56 + .../TimestampColumnCompareTimestampScalar.txt | 54 + .../TimestampScalarCompareTimestampColumn.txt | 61 + .../hive/ql/exec/vector/TimestampUtils.java | 8 + .../ql/exec/vector/VectorizationContext.java | 4 +- .../ql/udf/generic/GenericUDFOPEqual.java | 9 +- .../GenericUDFOPEqualOrGreaterThan.java | 9 +- .../generic/GenericUDFOPEqualOrLessThan.java | 9 +- .../udf/generic/GenericUDFOPGreaterThan.java | 9 +- .../ql/udf/generic/GenericUDFOPLessThan.java | 9 +- .../ql/udf/generic/GenericUDFOPNotEqual.java | 9 +- .../queries/clientpositive/vectorization_13.q | 105 +- .../queries/clientpositive/vectorization_7.q | 85 +- .../queries/clientpositive/vectorization_8.q | 80 +- .../vectorization_short_regress.q | 54 +- .../clientpositive/tez/vectorization_13.q.out | 3548 ++------------ .../clientpositive/tez/vectorization_7.q.out | 342 ++ .../clientpositive/tez/vectorization_8.q.out | 316 ++ .../tez/vectorization_short_regress.q.out | 4149 +---------------- .../clientpositive/vectorization_13.q.out | 3536 ++------------ .../clientpositive/vectorization_7.q.out | 707 +-- .../clientpositive/vectorization_8.q.out | 1642 +------ .../vectorization_short_regress.q.out | 4103 +--------------- 30 files changed, 3210 insertions(+), 16255 deletions(-) create mode 100644 ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareTimestampColumn.txt create mode 100644 ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareScalar.txt create mode 100644 ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampScalar.txt create mode 100644 ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareTimestampColumn.txt create mode 100644 ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareTimestampColumn.txt create mode 100644 ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareScalar.txt create mode 100644 ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt create mode 100644 ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_7.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_8.q.out diff --git a/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java b/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java index 731b686bca55..375c1731f726 100644 --- a/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java +++ b/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java @@ -180,6 +180,46 @@ public class GenVectorCode extends Task { {"ScalarCompareColumn", "GreaterEqual", "long", "long", ">="}, {"ScalarCompareColumn", "GreaterEqual", "double", "long", ">="}, + {"TimestampColumnCompareTimestampScalar", "Equal"}, + {"TimestampColumnCompareTimestampScalar", "NotEqual"}, + {"TimestampColumnCompareTimestampScalar", "Less"}, + {"TimestampColumnCompareTimestampScalar", "LessEqual"}, + {"TimestampColumnCompareTimestampScalar", "Greater"}, + {"TimestampColumnCompareTimestampScalar", "GreaterEqual"}, + + {"TimestampColumnCompareScalar", "Equal", "long"}, + {"TimestampColumnCompareScalar", "Equal", "double"}, + {"TimestampColumnCompareScalar", "NotEqual", "long"}, + {"TimestampColumnCompareScalar", "NotEqual", "double"}, + {"TimestampColumnCompareScalar", "Less", "long"}, + {"TimestampColumnCompareScalar", "Less", "double"}, + {"TimestampColumnCompareScalar", "LessEqual", "long"}, + {"TimestampColumnCompareScalar", "LessEqual", "double"}, + {"TimestampColumnCompareScalar", "Greater", "long"}, + {"TimestampColumnCompareScalar", "Greater", "double"}, + {"TimestampColumnCompareScalar", "GreaterEqual", "long"}, + {"TimestampColumnCompareScalar", "GreaterEqual", "double"}, + + {"TimestampScalarCompareTimestampColumn", "Equal"}, + {"TimestampScalarCompareTimestampColumn", "NotEqual"}, + {"TimestampScalarCompareTimestampColumn", "Less"}, + {"TimestampScalarCompareTimestampColumn", "LessEqual"}, + {"TimestampScalarCompareTimestampColumn", "Greater"}, + {"TimestampScalarCompareTimestampColumn", "GreaterEqual"}, + + {"ScalarCompareTimestampColumn", "Equal", "long"}, + {"ScalarCompareTimestampColumn", "Equal", "double"}, + {"ScalarCompareTimestampColumn", "NotEqual", "long"}, + {"ScalarCompareTimestampColumn", "NotEqual", "double"}, + {"ScalarCompareTimestampColumn", "Less", "long"}, + {"ScalarCompareTimestampColumn", "Less", "double"}, + {"ScalarCompareTimestampColumn", "LessEqual", "long"}, + {"ScalarCompareTimestampColumn", "LessEqual", "double"}, + {"ScalarCompareTimestampColumn", "Greater", "long"}, + {"ScalarCompareTimestampColumn", "Greater", "double"}, + {"ScalarCompareTimestampColumn", "GreaterEqual", "long"}, + {"ScalarCompareTimestampColumn", "GreaterEqual", "double"}, + {"FilterColumnCompareScalar", "Equal", "long", "double", "=="}, {"FilterColumnCompareScalar", "Equal", "double", "double", "=="}, {"FilterColumnCompareScalar", "NotEqual", "long", "double", "!="}, @@ -232,6 +272,46 @@ public class GenVectorCode extends Task { {"FilterScalarCompareColumn", "GreaterEqual", "long", "long", ">="}, {"FilterScalarCompareColumn", "GreaterEqual", "double", "long", ">="}, + {"FilterTimestampColumnCompareTimestampScalar", "Equal"}, + {"FilterTimestampColumnCompareTimestampScalar", "NotEqual"}, + {"FilterTimestampColumnCompareTimestampScalar", "Less"}, + {"FilterTimestampColumnCompareTimestampScalar", "LessEqual"}, + {"FilterTimestampColumnCompareTimestampScalar", "Greater"}, + {"FilterTimestampColumnCompareTimestampScalar", "GreaterEqual"}, + + {"FilterTimestampColumnCompareScalar", "Equal", "long"}, + {"FilterTimestampColumnCompareScalar", "Equal", "double"}, + {"FilterTimestampColumnCompareScalar", "NotEqual", "long"}, + {"FilterTimestampColumnCompareScalar", "NotEqual", "double"}, + {"FilterTimestampColumnCompareScalar", "Less", "long"}, + {"FilterTimestampColumnCompareScalar", "Less", "double"}, + {"FilterTimestampColumnCompareScalar", "LessEqual", "long"}, + {"FilterTimestampColumnCompareScalar", "LessEqual", "double"}, + {"FilterTimestampColumnCompareScalar", "Greater", "long"}, + {"FilterTimestampColumnCompareScalar", "Greater", "double"}, + {"FilterTimestampColumnCompareScalar", "GreaterEqual", "long"}, + {"FilterTimestampColumnCompareScalar", "GreaterEqual", "double"}, + + {"FilterTimestampScalarCompareTimestampColumn", "Equal"}, + {"FilterTimestampScalarCompareTimestampColumn", "NotEqual"}, + {"FilterTimestampScalarCompareTimestampColumn", "Less"}, + {"FilterTimestampScalarCompareTimestampColumn", "LessEqual"}, + {"FilterTimestampScalarCompareTimestampColumn", "Greater"}, + {"FilterTimestampScalarCompareTimestampColumn", "GreaterEqual"}, + + {"FilterScalarCompareTimestampColumn", "Equal", "long"}, + {"FilterScalarCompareTimestampColumn", "Equal", "double"}, + {"FilterScalarCompareTimestampColumn", "NotEqual", "long"}, + {"FilterScalarCompareTimestampColumn", "NotEqual", "double"}, + {"FilterScalarCompareTimestampColumn", "Less", "long"}, + {"FilterScalarCompareTimestampColumn", "Less", "double"}, + {"FilterScalarCompareTimestampColumn", "LessEqual", "long"}, + {"FilterScalarCompareTimestampColumn", "LessEqual", "double"}, + {"FilterScalarCompareTimestampColumn", "Greater", "long"}, + {"FilterScalarCompareTimestampColumn", "Greater", "double"}, + {"FilterScalarCompareTimestampColumn", "GreaterEqual", "long"}, + {"FilterScalarCompareTimestampColumn", "GreaterEqual", "double"}, + {"FilterStringGroupColumnCompareStringGroupScalarBase", "Equal", "=="}, {"FilterStringGroupColumnCompareStringGroupScalarBase", "NotEqual", "!="}, {"FilterStringGroupColumnCompareStringGroupScalarBase", "Less", "<"}, @@ -401,26 +481,26 @@ public class GenVectorCode extends Task { {"FilterColumnCompareColumn", "GreaterEqual", "long", "double", ">="}, {"FilterColumnCompareColumn", "GreaterEqual", "double", "double", ">="}, - {"FilterColumnCompareColumn", "Equal", "long", "long", "=="}, - {"FilterColumnCompareColumn", "Equal", "double", "long", "=="}, - {"FilterColumnCompareColumn", "NotEqual", "long", "long", "!="}, - {"FilterColumnCompareColumn", "NotEqual", "double", "long", "!="}, - {"FilterColumnCompareColumn", "Less", "long", "long", "<"}, - {"FilterColumnCompareColumn", "Less", "double", "long", "<"}, - {"FilterColumnCompareColumn", "LessEqual", "long", "long", "<="}, - {"FilterColumnCompareColumn", "LessEqual", "double", "long", "<="}, - {"FilterColumnCompareColumn", "Greater", "long", "long", ">"}, - {"FilterColumnCompareColumn", "Greater", "double", "long", ">"}, - {"FilterColumnCompareColumn", "GreaterEqual", "long", "long", ">="}, - {"FilterColumnCompareColumn", "GreaterEqual", "double", "long", ">="}, + {"FilterColumnCompareColumn", "Equal", "long", "long", "=="}, + {"FilterColumnCompareColumn", "Equal", "double", "long", "=="}, + {"FilterColumnCompareColumn", "NotEqual", "long", "long", "!="}, + {"FilterColumnCompareColumn", "NotEqual", "double", "long", "!="}, + {"FilterColumnCompareColumn", "Less", "long", "long", "<"}, + {"FilterColumnCompareColumn", "Less", "double", "long", "<"}, + {"FilterColumnCompareColumn", "LessEqual", "long", "long", "<="}, + {"FilterColumnCompareColumn", "LessEqual", "double", "long", "<="}, + {"FilterColumnCompareColumn", "Greater", "long", "long", ">"}, + {"FilterColumnCompareColumn", "Greater", "double", "long", ">"}, + {"FilterColumnCompareColumn", "GreaterEqual", "long", "long", ">="}, + {"FilterColumnCompareColumn", "GreaterEqual", "double", "long", ">="}, {"FilterColumnBetween", "long", ""}, {"FilterColumnBetween", "double", ""}, {"FilterColumnBetween", "long", "!"}, {"FilterColumnBetween", "double", "!"}, - {"FilterDecimalColumnBetween", ""}, - {"FilterDecimalColumnBetween", "!"}, + {"FilterDecimalColumnBetween", ""}, + {"FilterDecimalColumnBetween", "!"}, {"ColumnCompareColumn", "Equal", "long", "double", "=="}, {"ColumnCompareColumn", "Equal", "double", "double", "=="}, @@ -718,10 +798,26 @@ private void generate() throws Exception { generateColumnCompareScalar(tdesc); } else if (tdesc[0].equals("ScalarCompareColumn")) { generateScalarCompareColumn(tdesc); + } else if (tdesc[0].equals("TimestampScalarCompareTimestampColumn")) { + generateTimestampScalarCompareTimestampColumn(tdesc); + } else if (tdesc[0].equals("ScalarCompareTimestampColumn")) { + generateScalarCompareTimestampColumn(tdesc); + } else if (tdesc[0].equals("TimestampColumnCompareTimestampScalar")) { + generateTimestampColumnCompareTimestampScalar(tdesc); + } else if (tdesc[0].equals("TimestampColumnCompareScalar")) { + generateTimestampColumnCompareScalar(tdesc); } else if (tdesc[0].equals("FilterColumnCompareScalar")) { generateFilterColumnCompareScalar(tdesc); } else if (tdesc[0].equals("FilterScalarCompareColumn")) { generateFilterScalarCompareColumn(tdesc); + } else if (tdesc[0].equals("FilterTimestampColumnCompareTimestampScalar")) { + generateFilterTimestampColumnCompareTimestampScalar(tdesc); + } else if (tdesc[0].equals("FilterTimestampColumnCompareScalar")) { + generateFilterTimestampColumnCompareScalar(tdesc); + } else if (tdesc[0].equals("FilterTimestampScalarCompareTimestampColumn")) { + generateFilterTimestampScalarCompareTimestampColumn(tdesc); + } else if (tdesc[0].equals("FilterScalarCompareTimestampColumn")) { + generateFilterScalarCompareTimestampColumn(tdesc); } else if (tdesc[0].equals("FilterColumnBetween")) { generateFilterColumnBetween(tdesc); } else if (tdesc[0].equals("ScalarArithmeticColumn") || tdesc[0].equals("ScalarDivideColumn")) { @@ -1253,6 +1349,8 @@ private void generateIfExprColumnColumn(String[] tdesc) throws Exception { templateString = templateString.replaceAll("", inputColumnVectorType); templateString = templateString.replaceAll("", operandType); String vectorExprArgType = operandType; + + // Toss in timestamp and date. if (operandType.equals("long")) { // Let comparisons occur for DATE and TIMESTAMP, too. vectorExprArgType = "int_datetime_family"; @@ -1281,10 +1379,12 @@ private void generateIfExprColumnScalar(String[] tdesc) throws Exception { templateString = templateString.replaceAll("", operandType2); templateString = templateString.replaceAll("", operandType3); templateString = templateString.replaceAll("", outputColumnVectorType); + String vectorExprArgType2 = operandType2; String vectorExprArgType3 = operandType3; + + // Toss in timestamp and date. if (operandType2.equals("long") && operandType3.equals("long")) { - // Let this work occur for DATE and TIMESTAMP, too. vectorExprArgType2 = "int_datetime_family"; vectorExprArgType3 = "int_datetime_family"; } @@ -1312,10 +1412,12 @@ private void generateIfExprScalarColumn(String[] tdesc) throws Exception { templateString = templateString.replaceAll("", operandType2); templateString = templateString.replaceAll("", operandType3); templateString = templateString.replaceAll("", outputColumnVectorType); + String vectorExprArgType2 = operandType2; String vectorExprArgType3 = operandType3; + + // Toss in timestamp and date. if (operandType2.equals("long") && operandType3.equals("long")) { - // Let this work occur for DATE and TIMESTAMP, too. vectorExprArgType2 = "int_datetime_family"; vectorExprArgType3 = "int_datetime_family"; } @@ -1342,10 +1444,12 @@ private void generateIfExprScalarScalar(String[] tdesc) throws Exception { templateString = templateString.replaceAll("", operandType2); templateString = templateString.replaceAll("", operandType3); templateString = templateString.replaceAll("", outputColumnVectorType); + String vectorExprArgType2 = operandType2; String vectorExprArgType3 = operandType3; + + // Toss in timestamp and date. if (operandType2.equals("long") && operandType3.equals("long")) { - // Let this work occur for DATE and TIMESTAMP, too. vectorExprArgType2 = "int_datetime_family"; vectorExprArgType3 = "int_datetime_family"; } @@ -1477,6 +1581,9 @@ private void generateColumnCompareOperatorColumn(String[] tdesc, boolean filter, templateString = templateString.replaceAll("", getCamelCaseType(returnType)); String vectorExprArgType1 = operandType1; String vectorExprArgType2 = operandType2; + + // For column to column only, we toss in timestamp and date. + // But {timestamp|date} and scalar must be handled separately. if (operandType1.equals("long") && operandType2.equals("long")) { // Let comparisons occur for DATE and TIMESTAMP, too. vectorExprArgType1 = "int_datetime_family"; @@ -1502,6 +1609,133 @@ private void generateColumnCompareOperatorColumn(String[] tdesc, boolean filter, } } + private void generateTimestampScalarCompareTimestampColumn(String[] tdesc) throws Exception { + String operatorName = tdesc[1]; + String className = "TimestampScalar" + operatorName + "TimestampColumn"; + String baseClassName = "LongScalar" + operatorName + "LongColumn"; + //Read the template into a string; + File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt")); + String templateString = readFile(templateFile); + templateString = templateString.replaceAll("", className); + templateString = templateString.replaceAll("", baseClassName); + writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory, + className, templateString); + } + + private void generateTimestampColumnCompareTimestampScalar(String[] tdesc) throws Exception { + String operatorName = tdesc[1]; + String className = "TimestampCol" + operatorName + "TimestampScalar"; + String baseClassName = "LongCol" + operatorName + "LongScalar"; + //Read the template into a string; + File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt")); + String templateString = readFile(templateFile); + templateString = templateString.replaceAll("", className); + templateString = templateString.replaceAll("", baseClassName); + writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory, + className, templateString); + } + + private void generateFilterTimestampColumnCompareTimestampScalar(String[] tdesc) throws Exception { + String operatorName = tdesc[1]; + String className = "FilterTimestampCol" + operatorName + "TimestampScalar"; + String baseClassName = "FilterLongCol" + operatorName + "LongScalar"; + //Read the template into a string; + File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt")); + String templateString = readFile(templateFile); + templateString = templateString.replaceAll("", className); + templateString = templateString.replaceAll("", baseClassName); + writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory, + className, templateString); + } + + private void generateFilterTimestampScalarCompareTimestampColumn(String[] tdesc) throws Exception { + String operatorName = tdesc[1]; + String className = "FilterTimestampScalar" + operatorName + "TimestampColumn"; + String baseClassName = "FilterLongScalar" + operatorName + "LongColumn"; + //Read the template into a string; + File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt")); + String templateString = readFile(templateFile); + templateString = templateString.replaceAll("", className); + templateString = templateString.replaceAll("", baseClassName); + writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory, + className, templateString); + } + + private String timestampScalarConversion(String operandType) { + if (operandType.equals("long")) { + return "secondsToNanoseconds"; + } else if (operandType.equals("double")) { + return "doubleToNanoseconds"; + } else { + return "unknown"; + } + } + + private void generateScalarCompareTimestampColumn(String[] tdesc) throws Exception { + String operatorName = tdesc[1]; + String operandType = tdesc[2]; + String className = getCamelCaseType(operandType) + "Scalar" + operatorName + "TimestampColumn"; + String baseClassName = "LongScalar" + operatorName + "LongColumn"; + //Read the template into a string; + File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt")); + String templateString = readFile(templateFile); + templateString = templateString.replaceAll("", className); + templateString = templateString.replaceAll("", baseClassName); + templateString = templateString.replaceAll("", operandType); + templateString = templateString.replaceAll("", timestampScalarConversion(operandType)); + writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory, + className, templateString); + } + + private void generateTimestampColumnCompareScalar(String[] tdesc) throws Exception { + String operatorName = tdesc[1]; + String operandType = tdesc[2]; + String className = "TimestampCol" + operatorName + getCamelCaseType(operandType) + "Scalar"; + String baseClassName = "LongCol" + operatorName + "LongScalar"; + //Read the template into a string; + File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt")); + String templateString = readFile(templateFile); + templateString = templateString.replaceAll("", className); + templateString = templateString.replaceAll("", baseClassName); + templateString = templateString.replaceAll("", operandType); + templateString = templateString.replaceAll("", timestampScalarConversion(operandType)); + writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory, + className, templateString); + } + + private void generateFilterTimestampColumnCompareScalar(String[] tdesc) throws Exception { + String operatorName = tdesc[1]; + String operandType = tdesc[2]; + String className = "FilterTimestampCol" + operatorName + getCamelCaseType(operandType) + "Scalar"; + String baseClassName = "FilterLongCol" + operatorName + "LongScalar"; + //Read the template into a string; + File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt")); + String templateString = readFile(templateFile); + templateString = templateString.replaceAll("", className); + templateString = templateString.replaceAll("", baseClassName); + templateString = templateString.replaceAll("", operandType); + templateString = templateString.replaceAll("", timestampScalarConversion(operandType)); + writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory, + className, templateString); + } + + private void generateFilterScalarCompareTimestampColumn(String[] tdesc) throws Exception { + String operatorName = tdesc[1]; + String operandType = tdesc[2]; + String className = "Filter" + getCamelCaseType(operandType) + "Scalar" + operatorName + "TimestampColumn"; + String baseClassName = "FilterLongScalar" + operatorName + "LongColumn"; + //Read the template into a string; + File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt")); + String templateString = readFile(templateFile); + templateString = templateString.replaceAll("", className); + templateString = templateString.replaceAll("", baseClassName); + templateString = templateString.replaceAll("", operandType); + templateString = templateString.replaceAll("", timestampScalarConversion(operandType)); + writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory, + className, templateString); + } + + private void generateColumnArithmeticOperatorColumn(String[] tdesc, String returnType, String className) throws Exception { String operandType1 = tdesc[2]; @@ -1555,11 +1789,6 @@ private void generateColumnCompareOperatorScalar(String[] tdesc, boolean filter, templateString = templateString.replaceAll("", getCamelCaseType(returnType)); String vectorExprArgType1 = operandType1; String vectorExprArgType2 = operandType2; - if (operandType1.equals("long") && operandType2.equals("long")) { - // Let comparisons occur for DATE and TIMESTAMP, too. - vectorExprArgType1 = "int_datetime_family"; - vectorExprArgType2 = "int_datetime_family"; - } templateString = templateString.replaceAll("", vectorExprArgType1); templateString = templateString.replaceAll("", vectorExprArgType2); writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory, @@ -1633,11 +1862,6 @@ private void generateScalarCompareOperatorColumn(String[] tdesc, boolean filter, templateString = templateString.replaceAll("", getCamelCaseType(returnType)); String vectorExprArgType1 = operandType1; String vectorExprArgType2 = operandType2; - if (operandType1.equals("long") && operandType2.equals("long")) { - // Let comparisons occur for DATE and TIMESTAMP, too. - vectorExprArgType1 = "int_datetime_family"; - vectorExprArgType2 = "int_datetime_family"; - } templateString = templateString.replaceAll("", vectorExprArgType1); templateString = templateString.replaceAll("", vectorExprArgType2); writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory, diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index ae5a616357db..5734d5ca812d 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -187,6 +187,8 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vectorization_4.q,\ vectorization_5.q,\ vectorization_6.q,\ + vectorization_7.q,\ + vectorization_8.q,\ vectorization_9.q,\ vectorization_decimal_date.q,\ vectorization_div0.q,\ diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareTimestampColumn.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareTimestampColumn.txt new file mode 100644 index 000000000000..e0e50224c771 --- /dev/null +++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareTimestampColumn.txt @@ -0,0 +1,55 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; + +import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; + +import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; + +/** + * Generated from template FilterScalarCompareTimestampColumn.txt, which covers comparison + * expressions between a long or double scalar and a column, however output is not produced in a separate column. + * The selected vector of the input {@link VectorizedRowBatch} is updated for in-place filtering. + * Note: For timestamp and long or double we implicitly interpret the long as the number + * of seconds or double as seconds and fraction since the epoch. + */ +public class extends { + + public ( value, int colNum) { + super(TimestampUtils.(value), colNum); + } + + public () { + super(); + } + + @Override + public VectorExpressionDescriptor.Descriptor getDescriptor() { + return (new VectorExpressionDescriptor.Builder()) + .setMode( + VectorExpressionDescriptor.Mode.FILTER) + .setNumArguments(2) + .setArgumentTypes( + VectorExpressionDescriptor.ArgumentType.getType(""), + VectorExpressionDescriptor.ArgumentType.getType("timestamp")) + .setInputExpressionTypes( + VectorExpressionDescriptor.InputExpressionType.SCALAR, + VectorExpressionDescriptor.InputExpressionType.COLUMN).build(); + } +} diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareScalar.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareScalar.txt new file mode 100644 index 000000000000..0c37b4db3655 --- /dev/null +++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareScalar.txt @@ -0,0 +1,56 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; + +import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; + +import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; + +/** + * Generated from template FilterTimestampColumnCompareScalar.txt, which covers comparison + * expressions between a timestamp column and a long or double scalar, however output is not + * produced in a separate column. + * The selected vector of the input {@link VectorizedRowBatch} is updated for in-place filtering. + * Note: For timestamp and long or double we implicitly interpret the long as the number + * of seconds or double as seconds and fraction since the epoch. + */ +public class extends { + + public (int colNum, value) { + super(colNum, TimestampUtils.(value)); + } + + public () { + super(); + } + + @Override + public VectorExpressionDescriptor.Descriptor getDescriptor() { + return (new VectorExpressionDescriptor.Builder()) + .setMode( + VectorExpressionDescriptor.Mode.FILTER) + .setNumArguments(2) + .setArgumentTypes( + VectorExpressionDescriptor.ArgumentType.getType("timestamp"), + VectorExpressionDescriptor.ArgumentType.getType("")) + .setInputExpressionTypes( + VectorExpressionDescriptor.InputExpressionType.COLUMN, + VectorExpressionDescriptor.InputExpressionType.SCALAR).build(); + } +} \ No newline at end of file diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampScalar.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampScalar.txt new file mode 100644 index 000000000000..d13fecf63a1a --- /dev/null +++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampScalar.txt @@ -0,0 +1,54 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; + +import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; + +import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; + +/** + * Generated from template FilterTimestampColumnCompareTimestampScalar.txt, which covers comparison + * expressions between a timestamp column and a timestamp scalar, however output is not + * produced in a separate column. + * The selected vector of the input {@link VectorizedRowBatch} is updated for in-place filtering. + */ +public class extends { + + public (int colNum, long value) { + super(colNum, value); + } + + public () { + super(); + } + + @Override + public VectorExpressionDescriptor.Descriptor getDescriptor() { + return (new VectorExpressionDescriptor.Builder()) + .setMode( + VectorExpressionDescriptor.Mode.FILTER) + .setNumArguments(2) + .setArgumentTypes( + VectorExpressionDescriptor.ArgumentType.getType("timestamp"), + VectorExpressionDescriptor.ArgumentType.getType("timestamp")) + .setInputExpressionTypes( + VectorExpressionDescriptor.InputExpressionType.COLUMN, + VectorExpressionDescriptor.InputExpressionType.SCALAR).build(); + } +} \ No newline at end of file diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareTimestampColumn.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareTimestampColumn.txt new file mode 100644 index 000000000000..a37db3d05f5f --- /dev/null +++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareTimestampColumn.txt @@ -0,0 +1,53 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; + +import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; + +import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; + +/** + * Generated from template FilterTimestampScalarCompareTimestampColumn.txt, which covers comparison + * expressions between a timestamp scalar and a column, however output is not produced in a separate column. + * The selected vector of the input {@link VectorizedRowBatch} is updated for in-place filtering. + */ +public class extends { + + public (long value, int colNum) { + super(value, colNum); + } + + public () { + super(); + } + + @Override + public VectorExpressionDescriptor.Descriptor getDescriptor() { + return (new VectorExpressionDescriptor.Builder()) + .setMode( + VectorExpressionDescriptor.Mode.FILTER) + .setNumArguments(2) + .setArgumentTypes( + VectorExpressionDescriptor.ArgumentType.getType("timestamp"), + VectorExpressionDescriptor.ArgumentType.getType("timestamp")) + .setInputExpressionTypes( + VectorExpressionDescriptor.InputExpressionType.SCALAR, + VectorExpressionDescriptor.InputExpressionType.COLUMN).build(); + } +} diff --git a/ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareTimestampColumn.txt b/ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareTimestampColumn.txt new file mode 100644 index 000000000000..78676100e66e --- /dev/null +++ b/ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareTimestampColumn.txt @@ -0,0 +1,63 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; + +import org.apache.hadoop.hive.ql.udf.UDFToString; +import org.apache.hadoop.hive.serde2.io.TimestampWritable; +import java.sql.Timestamp; +import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; +import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr; +import org.apache.hadoop.io.LongWritable; + +import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; +import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; + +/** + * Generated from template ScalarCompareTimestampColumn.txt, which covers comparison + * expressions between a timestamp column and a long or double scalar. The boolean output + * is stored in a separate boolean column. + * Note: For timestamp and long or double we implicitly interpret the long as the number + * of seconds or double as seconds and fraction since the epoch. + */ +public class extends { + + public ( value, int colNum, int outputColumn) { + super(TimestampUtils.(value), colNum, outputColumn); + } + + public () { + super(); + } + + @Override + public VectorExpressionDescriptor.Descriptor getDescriptor() { + return (new VectorExpressionDescriptor.Builder()) + .setMode( + VectorExpressionDescriptor.Mode.PROJECTION) + .setNumArguments(2) + .setArgumentTypes( + VectorExpressionDescriptor.ArgumentType.getType(""), + VectorExpressionDescriptor.ArgumentType.getType("timestamp")) + .setInputExpressionTypes( + VectorExpressionDescriptor.InputExpressionType.SCALAR, + VectorExpressionDescriptor.InputExpressionType.COLUMN).build(); + } +} diff --git a/ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareScalar.txt b/ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareScalar.txt new file mode 100644 index 000000000000..da33281d61b7 --- /dev/null +++ b/ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareScalar.txt @@ -0,0 +1,56 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; + +import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; + +import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; + + +/** + * Generated from template TimestampColumnCompareScalar.txt, which covers comparison + * expressions between a timestamp column and a long or double scalar. The boolean output + * is stored in a separate boolean column. + * Note: For timestamp and long or double we implicitly interpret the long as the number + * of seconds or double as seconds and fraction since the epoch. + */ +public class extends { + + public (int colNum, value, int outputColumn) { + super(colNum, TimestampUtils.(value), outputColumn); + } + + public () { + super(); + } + + @Override + public VectorExpressionDescriptor.Descriptor getDescriptor() { + return (new VectorExpressionDescriptor.Builder()) + .setMode( + VectorExpressionDescriptor.Mode.PROJECTION) + .setNumArguments(2) + .setArgumentTypes( + VectorExpressionDescriptor.ArgumentType.getType("timestamp"), + VectorExpressionDescriptor.ArgumentType.getType("")) + .setInputExpressionTypes( + VectorExpressionDescriptor.InputExpressionType.COLUMN, + VectorExpressionDescriptor.InputExpressionType.SCALAR).build(); + } +} diff --git a/ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt b/ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt new file mode 100644 index 000000000000..46534b497e0d --- /dev/null +++ b/ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt @@ -0,0 +1,54 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; + +import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; + +import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; + + +/** + * Generated from template TimestampColumnCompareTimestampScalar.txt, which covers comparison + * expressions between a timestamp column and a timestamp scalar. The boolean output + * is stored in a separate boolean column. + */ +public class extends { + + public (int colNum, long value, int outputColumn) { + super(colNum, value, outputColumn); + } + + public () { + super(); + } + + @Override + public VectorExpressionDescriptor.Descriptor getDescriptor() { + return (new VectorExpressionDescriptor.Builder()) + .setMode( + VectorExpressionDescriptor.Mode.PROJECTION) + .setNumArguments(2) + .setArgumentTypes( + VectorExpressionDescriptor.ArgumentType.getType("timestamp"), + VectorExpressionDescriptor.ArgumentType.getType("timestamp")) + .setInputExpressionTypes( + VectorExpressionDescriptor.InputExpressionType.COLUMN, + VectorExpressionDescriptor.InputExpressionType.SCALAR).build(); + } +} diff --git a/ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt b/ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt new file mode 100644 index 000000000000..9468a6693ae5 --- /dev/null +++ b/ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt @@ -0,0 +1,61 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; + +import org.apache.hadoop.hive.ql.udf.UDFToString; +import org.apache.hadoop.hive.serde2.io.TimestampWritable; +import java.sql.Timestamp; +import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; +import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr; +import org.apache.hadoop.io.LongWritable; + +import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; +import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; + +/** + * Generated from template TimestampScalarCompareTimestampColumn.txt, which covers comparison + * expressions between a timestamp column and a timestamp scalar. The boolean output + * is stored in a separate boolean column. + */ +public class extends { + + public (long value, int colNum, int outputColumn) { + super(value, colNum, outputColumn); + } + + public () { + super(); + } + + @Override + public VectorExpressionDescriptor.Descriptor getDescriptor() { + return (new VectorExpressionDescriptor.Builder()) + .setMode( + VectorExpressionDescriptor.Mode.PROJECTION) + .setNumArguments(2) + .setArgumentTypes( + VectorExpressionDescriptor.ArgumentType.getType("timestamp"), + VectorExpressionDescriptor.ArgumentType.getType("timestamp")) + .setInputExpressionTypes( + VectorExpressionDescriptor.InputExpressionType.SCALAR, + VectorExpressionDescriptor.InputExpressionType.COLUMN).build(); + } +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/TimestampUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/TimestampUtils.java index 2559f854effa..352e43eedd58 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/TimestampUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/TimestampUtils.java @@ -50,4 +50,12 @@ public static long getTimeNanoSec(Timestamp t) { int nanos = t.getNanos(); return (time * 1000000) + (nanos % 1000000); } + + public static long secondsToNanoseconds(long seconds) { + return seconds * 1000000000; + } + + public static long doubleToNanoseconds(double d) { + return (long) (d * 1000000000); + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java index 34f58235df72..fdd43e700089 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java @@ -790,6 +790,8 @@ private VectorExpression getConstantVectorExpression(Object constantValue, TypeI switch (vectorArgType) { case INT_FAMILY: return new ConstantVectorExpression(outCol, ((Number) constantValue).longValue()); + case TIMESTAMP: + return new ConstantVectorExpression(outCol, TimestampUtils.getTimeNanoSec((Timestamp) constantValue)); case FLOAT_FAMILY: return new ConstantVectorExpression(outCol, ((Number) constantValue).doubleValue()); case DECIMAL: @@ -804,7 +806,7 @@ private VectorExpression getConstantVectorExpression(Object constantValue, TypeI case VARCHAR: return new ConstantVectorExpression(outCol, ((HiveVarchar) constantValue)); default: - throw new HiveException("Unsupported constant type: " + typeName); + throw new HiveException("Unsupported constant type: " + typeName + ", object class " + constantValue.getClass().getSimpleName()); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqual.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqual.java index bf00d71457aa..3870b51d4253 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqual.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqual.java @@ -49,7 +49,14 @@ FilterLongScalarEqualLongColumn.class, FilterLongScalarEqualDoubleColumn.class, FilterDoubleScalarEqualLongColumn.class, FilterDoubleScalarEqualDoubleColumn.class, FilterDecimalColEqualDecimalColumn.class, FilterDecimalColEqualDecimalScalar.class, - FilterDecimalScalarEqualDecimalColumn.class}) + FilterDecimalScalarEqualDecimalColumn.class, + TimestampColEqualTimestampScalar.class, TimestampScalarEqualTimestampColumn.class, + FilterTimestampColEqualTimestampScalar.class, FilterTimestampScalarEqualTimestampColumn.class, + TimestampColEqualLongScalar.class, LongScalarEqualTimestampColumn.class, + FilterTimestampColEqualLongScalar.class, FilterLongScalarEqualTimestampColumn.class, + TimestampColEqualDoubleScalar.class, DoubleScalarEqualTimestampColumn.class, + FilterTimestampColEqualDoubleScalar.class, FilterDoubleScalarEqualTimestampColumn.class + }) public class GenericUDFOPEqual extends GenericUDFBaseCompare { public GenericUDFOPEqual(){ this.opName = "EQUAL"; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrGreaterThan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrGreaterThan.java index fd612d0a69a4..65e1835f1545 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrGreaterThan.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrGreaterThan.java @@ -50,7 +50,14 @@ FilterLongScalarGreaterEqualLongColumn.class, FilterLongScalarGreaterEqualDoubleColumn.class, FilterDoubleScalarGreaterEqualLongColumn.class, FilterDoubleScalarGreaterEqualDoubleColumn.class, FilterDecimalColGreaterEqualDecimalColumn.class, FilterDecimalColGreaterEqualDecimalScalar.class, - FilterDecimalScalarGreaterEqualDecimalColumn.class}) + FilterDecimalScalarGreaterEqualDecimalColumn.class, + TimestampColGreaterEqualTimestampScalar.class, TimestampScalarGreaterEqualTimestampColumn.class, + FilterTimestampColGreaterEqualTimestampScalar.class, FilterTimestampScalarGreaterEqualTimestampColumn.class, + TimestampColGreaterEqualLongScalar.class, LongScalarGreaterEqualTimestampColumn.class, + FilterTimestampColGreaterEqualLongScalar.class, FilterLongScalarGreaterEqualTimestampColumn.class, + TimestampColGreaterEqualDoubleScalar.class, DoubleScalarGreaterEqualTimestampColumn.class, + FilterTimestampColGreaterEqualDoubleScalar.class, FilterDoubleScalarGreaterEqualTimestampColumn.class + }) public class GenericUDFOPEqualOrGreaterThan extends GenericUDFBaseCompare { public GenericUDFOPEqualOrGreaterThan(){ this.opName = "EQUAL OR GREATER THAN"; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrLessThan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrLessThan.java index e1add9272f7a..3e4a1d22f374 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrLessThan.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrLessThan.java @@ -50,7 +50,14 @@ FilterLongScalarLessEqualLongColumn.class, FilterLongScalarLessEqualDoubleColumn.class, FilterDoubleScalarLessEqualLongColumn.class, FilterDoubleScalarLessEqualDoubleColumn.class, FilterDecimalColLessEqualDecimalColumn.class, FilterDecimalColLessEqualDecimalScalar.class, - FilterDecimalScalarLessEqualDecimalColumn.class}) + FilterDecimalScalarLessEqualDecimalColumn.class, + TimestampColLessEqualTimestampScalar.class, TimestampScalarLessEqualTimestampColumn.class, + FilterTimestampColLessEqualTimestampScalar.class, FilterTimestampScalarLessEqualTimestampColumn.class, + TimestampColLessEqualLongScalar.class, LongScalarLessEqualTimestampColumn.class, + FilterTimestampColLessEqualLongScalar.class, FilterLongScalarLessEqualTimestampColumn.class, + TimestampColLessEqualDoubleScalar.class, DoubleScalarLessEqualTimestampColumn.class, + FilterTimestampColLessEqualDoubleScalar.class, FilterDoubleScalarLessEqualTimestampColumn.class + }) public class GenericUDFOPEqualOrLessThan extends GenericUDFBaseCompare { public GenericUDFOPEqualOrLessThan(){ this.opName = "EQUAL OR LESS THAN"; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPGreaterThan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPGreaterThan.java index ff8cfe7f0bf9..df7a857e5984 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPGreaterThan.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPGreaterThan.java @@ -50,7 +50,14 @@ FilterLongScalarGreaterLongColumn.class, FilterLongScalarGreaterDoubleColumn.class, FilterDoubleScalarGreaterLongColumn.class, FilterDoubleScalarGreaterDoubleColumn.class, FilterDecimalColGreaterDecimalColumn.class, FilterDecimalColGreaterDecimalScalar.class, - FilterDecimalScalarGreaterDecimalColumn.class}) + FilterDecimalScalarGreaterDecimalColumn.class, + TimestampColGreaterTimestampScalar.class, TimestampScalarGreaterTimestampColumn.class, + FilterTimestampColGreaterTimestampScalar.class, FilterTimestampScalarGreaterTimestampColumn.class, + TimestampColGreaterLongScalar.class, LongScalarGreaterTimestampColumn.class, + FilterTimestampColGreaterLongScalar.class, FilterLongScalarGreaterTimestampColumn.class, + TimestampColGreaterDoubleScalar.class, DoubleScalarGreaterTimestampColumn.class, + FilterTimestampColGreaterDoubleScalar.class, FilterDoubleScalarGreaterTimestampColumn.class + }) public class GenericUDFOPGreaterThan extends GenericUDFBaseCompare { public GenericUDFOPGreaterThan(){ this.opName = "GREATER THAN"; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPLessThan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPLessThan.java index 905dcc572453..fafd99b7f35f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPLessThan.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPLessThan.java @@ -50,7 +50,14 @@ FilterLongScalarLessLongColumn.class, FilterLongScalarLessDoubleColumn.class, FilterDoubleScalarLessLongColumn.class, FilterDoubleScalarLessDoubleColumn.class, FilterDecimalColLessDecimalColumn.class, FilterDecimalColLessDecimalScalar.class, - FilterDecimalScalarLessDecimalColumn.class}) + FilterDecimalScalarLessDecimalColumn.class, + TimestampColLessTimestampScalar.class, TimestampScalarLessTimestampColumn.class, + FilterTimestampColLessTimestampScalar.class, FilterTimestampScalarLessTimestampColumn.class, + TimestampColLessLongScalar.class, LongScalarLessTimestampColumn.class, + FilterTimestampColLessLongScalar.class, FilterLongScalarLessTimestampColumn.class, + TimestampColLessDoubleScalar.class, DoubleScalarLessTimestampColumn.class, + FilterTimestampColLessDoubleScalar.class, FilterDoubleScalarLessTimestampColumn.class + }) public class GenericUDFOPLessThan extends GenericUDFBaseCompare { public GenericUDFOPLessThan(){ this.opName = "LESS THAN"; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqual.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqual.java index ab2c15947722..04364887ecf9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqual.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqual.java @@ -49,7 +49,14 @@ FilterLongScalarNotEqualLongColumn.class, FilterLongScalarNotEqualDoubleColumn.class, FilterDoubleScalarNotEqualLongColumn.class, FilterDoubleScalarNotEqualDoubleColumn.class, FilterDecimalColNotEqualDecimalColumn.class, FilterDecimalColNotEqualDecimalScalar.class, - FilterDecimalScalarNotEqualDecimalColumn.class}) + FilterDecimalScalarNotEqualDecimalColumn.class, + TimestampColNotEqualTimestampScalar.class, TimestampScalarNotEqualTimestampColumn.class, + FilterTimestampColNotEqualTimestampScalar.class, FilterTimestampScalarNotEqualTimestampColumn.class, + TimestampColNotEqualLongScalar.class, LongScalarNotEqualTimestampColumn.class, + FilterTimestampColNotEqualLongScalar.class, FilterLongScalarNotEqualTimestampColumn.class, + TimestampColNotEqualDoubleScalar.class, DoubleScalarNotEqualTimestampColumn.class, + FilterTimestampColNotEqualDoubleScalar.class, FilterDoubleScalarNotEqualTimestampColumn.class + }) public class GenericUDFOPNotEqual extends GenericUDFBaseCompare { public GenericUDFOPNotEqual(){ this.opName = "NOT EQUAL"; diff --git a/ql/src/test/queries/clientpositive/vectorization_13.q b/ql/src/test/queries/clientpositive/vectorization_13.q index fad2585d2272..613f431a200c 100644 --- a/ql/src/test/queries/clientpositive/vectorization_13.q +++ b/ql/src/test/queries/clientpositive/vectorization_13.q @@ -1,4 +1,102 @@ SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +EXPLAIN +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > 11) + AND ((ctimestamp2 != 12) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40; + +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > 11) + AND ((ctimestamp2 != 12) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40; + +-- double compare timestamp +EXPLAIN +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > -1.388) + AND ((ctimestamp2 != -1.3359999999999999) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40; + SELECT cboolean1, ctinyint, ctimestamp1, @@ -24,8 +122,9 @@ FROM alltypesorc WHERE (((cfloat < 3569) AND ((10.175 >= cdouble) AND (cboolean1 != 1))) - OR ((ctimestamp1 > -29071) - AND ((ctimestamp2 != -29071) + OR ((ctimestamp1 > -1.388) + AND ((ctimestamp2 != -1.3359999999999999) AND (ctinyint < 9763215.5639)))) -GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1; +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40; diff --git a/ql/src/test/queries/clientpositive/vectorization_7.q b/ql/src/test/queries/clientpositive/vectorization_7.q index 20c114865919..7d5071fd5aae 100644 --- a/ql/src/test/queries/clientpositive/vectorization_7.q +++ b/ql/src/test/queries/clientpositive/vectorization_7.q @@ -1,4 +1,7 @@ SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +EXPLAIN SELECT cboolean1, cbigint, csmallint, @@ -20,6 +23,84 @@ WHERE ((ctinyint != 0) OR ((ctinyint = cint) OR (cstring2 LIKE 'ss'))) AND ((988888 < cdouble) - OR ((ctimestamp2 > -29071) - AND (3569 >= cdouble))))); + OR ((ctimestamp2 > -15) + AND (3569 >= cdouble))))) +LIMIT 25; + +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > -15) + AND (3569 >= cdouble))))) +LIMIT 25; + +-- double compare timestamp +EXPLAIN +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0.0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > 7.6850000000000005) + AND (3569 >= cdouble))))) +LIMIT 25; + +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0.0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > 7.6850000000000005) + AND (3569 >= cdouble))))) +LIMIT 25; diff --git a/ql/src/test/queries/clientpositive/vectorization_8.q b/ql/src/test/queries/clientpositive/vectorization_8.q index 98b3385f165a..9cfe86f33e78 100644 --- a/ql/src/test/queries/clientpositive/vectorization_8.q +++ b/ql/src/test/queries/clientpositive/vectorization_8.q @@ -1,4 +1,7 @@ SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +EXPLAIN SELECT ctimestamp1, cdouble, cboolean1, @@ -15,9 +18,80 @@ SELECT ctimestamp1, ((-5638.15 - cdouble) + (cint + cfloat)) FROM alltypesorc WHERE (((cstring2 IS NOT NULL) - AND ((ctimestamp1 <= -29071) - AND (ctimestamp2 != 16558))) + AND ((ctimestamp1 <= 10) + AND (ctimestamp2 != 16))) OR ((cfloat < -6432) OR ((cboolean1 IS NOT NULL) - AND (cdouble = 988888)))); + AND (cdouble = 988888)))) +LIMIT 20; +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 10) + AND (ctimestamp2 != 16))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20; + +-- double compare timestamp +EXPLAIN +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 12.503) + AND (ctimestamp2 != 11.998))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20; + +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 12.503) + AND (ctimestamp2 != 11.998))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20; diff --git a/ql/src/test/queries/clientpositive/vectorization_short_regress.q b/ql/src/test/queries/clientpositive/vectorization_short_regress.q index d1194ccfa125..89f6090b621c 100644 --- a/ql/src/test/queries/clientpositive/vectorization_short_regress.q +++ b/ql/src/test/queries/clientpositive/vectorization_short_regress.q @@ -1,4 +1,5 @@ SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; -- If you look at ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/OrcFileGenerator.java -- which is the data generation class you'll see that those values are specified in the @@ -58,7 +59,7 @@ EXPLAIN SELECT AVG(cint), FROM alltypesorc WHERE ((762 = cbigint) OR ((csmallint < cfloat) - AND ((ctimestamp2 > -10669) + AND ((ctimestamp2 > -5) AND (cdouble != cint))) OR (cstring1 = 'a') OR ((cbigint <= -1.389) @@ -93,7 +94,7 @@ SELECT AVG(cint), FROM alltypesorc WHERE ((762 = cbigint) OR ((csmallint < cfloat) - AND ((ctimestamp2 > -10669) + AND ((ctimestamp2 > -5) AND (cdouble != cint))) OR (cstring1 = 'a') OR ((cbigint <= -1.389) @@ -324,7 +325,9 @@ WHERE (((cstring1 RLIKE 'a.*') OR ((cdouble > ctinyint) AND (cfloat >= cint)) OR ((cint < cbigint) - AND (ctinyint > cbigint))); + AND (ctinyint > cbigint))) +LIMIT 50; + SELECT cint, cdouble, ctimestamp2, @@ -357,7 +360,8 @@ WHERE (((cstring1 RLIKE 'a.*') OR ((cdouble > ctinyint) AND (cfloat >= cint)) OR ((cint < cbigint) - AND (ctinyint > cbigint))); + AND (ctinyint > cbigint))) +LIMIT 50; -- TargetTypeClasses: Long, String, Double, Bool, Timestamp -- Functions: VarP, Var, StDev, StDevP, Max, Sum @@ -395,7 +399,8 @@ WHERE (((197 > ctinyint) OR (cbigint = 359) OR (cboolean1 < 0) OR ((cstring1 LIKE '%ss') - AND (cfloat <= ctinyint))); + AND (cfloat <= ctinyint))) +LIMIT 25; SELECT cint, cbigint, @@ -428,7 +433,8 @@ WHERE (((197 > ctinyint) OR (cbigint = 359) OR (cboolean1 < 0) OR ((cstring1 LIKE '%ss') - AND (cfloat <= ctinyint))); + AND (cfloat <= ctinyint))) +LIMIT 25; -- TargetTypeClasses: String, Bool, Double, Long, Timestamp -- Functions: Sum, Max, Avg, Var, StDevP, VarP @@ -466,7 +472,9 @@ WHERE (((csmallint > -26.28) OR (ctinyint = -89010) OR ((cbigint <= cfloat) AND (-26.28 <= csmallint))) -ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble; +ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble +LIMIT 75; + SELECT cint, cstring1, cboolean2, @@ -498,7 +506,8 @@ WHERE (((csmallint > -26.28) OR (ctinyint = -89010) OR ((cbigint <= cfloat) AND (-26.28 <= csmallint))) -ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble; +ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble +LIMIT 75; -- TargetTypeClasses: Long, String, Double, Timestamp -- Functions: Avg, Min, StDevP, Sum, Var @@ -529,7 +538,9 @@ WHERE (((-1.389 >= cint) AND (cstring2 <= 'a')) OR ((cstring1 LIKE 'ss%') AND (10.175 > cbigint))) -ORDER BY csmallint, cstring2, cdouble; +ORDER BY csmallint, cstring2, cdouble +LIMIT 45; + SELECT ctimestamp1, cstring2, cdouble, @@ -554,7 +565,8 @@ WHERE (((-1.389 >= cint) AND (cstring2 <= 'a')) OR ((cstring1 LIKE 'ss%') AND (10.175 > cbigint))) -ORDER BY csmallint, cstring2, cdouble; +ORDER BY csmallint, cstring2, cdouble +LIMIT 45; -- TargetTypeClasses: Double, String, Long -- Functions: StDev, Sum, VarP, Count @@ -578,7 +590,9 @@ WHERE (((csmallint >= -257)) OR ((cint >= cdouble) AND (ctinyint <= cint)))) GROUP BY csmallint -ORDER BY csmallint; +ORDER BY csmallint +LIMIT 20; + SELECT csmallint, (csmallint % -75), STDDEV_SAMP(csmallint), @@ -596,7 +610,8 @@ WHERE (((csmallint >= -257)) OR ((cint >= cdouble) AND (ctinyint <= cint)))) GROUP BY csmallint -ORDER BY csmallint; +ORDER BY csmallint +LIMIT 20; -- TargetTypeClasses: Long, Double, Timestamp -- Functions: Var, Count, Sum, VarP, StDevP @@ -705,14 +720,16 @@ WHERE (((ctimestamp1 != 0)) AND ((((-257 != ctinyint) AND (cboolean2 IS NOT NULL)) AND ((cstring1 RLIKE '.*ss') - AND (-10669 < ctimestamp1))) - OR (ctimestamp2 = -10669) + AND (-3 < ctimestamp1))) + OR (ctimestamp2 = -5) OR ((ctimestamp1 < 0) AND (cstring2 LIKE '%b%')) OR (cdouble = cint) OR ((cboolean1 IS NULL) AND (cfloat < cint)))) -GROUP BY ctimestamp1, cstring1; +GROUP BY ctimestamp1, cstring1 +LIMIT 50; + SELECT ctimestamp1, cstring1, STDDEV_POP(cint), @@ -757,14 +774,15 @@ WHERE (((ctimestamp1 != 0)) AND ((((-257 != ctinyint) AND (cboolean2 IS NOT NULL)) AND ((cstring1 RLIKE '.*ss') - AND (-10669 < ctimestamp1))) - OR (ctimestamp2 = -10669) + AND (-3 < ctimestamp1))) + OR (ctimestamp2 = -5) OR ((ctimestamp1 < 0) AND (cstring2 LIKE '%b%')) OR (cdouble = cint) OR ((cboolean1 IS NULL) AND (cfloat < cint)))) -GROUP BY ctimestamp1, cstring1; +GROUP BY ctimestamp1, cstring1 +LIMIT 50; -- TargetTypeClasses: Double, Long, String, Timestamp, Bool -- Functions: Max, Sum, Var, Avg, Min, VarP, StDev, StDevP diff --git a/ql/src/test/results/clientpositive/tez/vectorization_13.q.out b/ql/src/test/results/clientpositive/tez/vectorization_13.q.out index ce002256037c..3410c338c882 100644 --- a/ql/src/test/results/clientpositive/tez/vectorization_13.q.out +++ b/ql/src/test/results/clientpositive/tez/vectorization_13.q.out @@ -1,3 +1,132 @@ +PREHOOK: query: EXPLAIN +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > 11) + AND ((ctimestamp2 != 12) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > 11) + AND ((ctimestamp2 != 12) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((cfloat < 3569.0) and ((10.175 >= cdouble) and (cboolean1 <> 1))) or ((ctimestamp1 > 11) and ((ctimestamp2 <> 12) and (ctinyint < 9763215.5639)))) (type: boolean) + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cboolean1 (type: boolean), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cfloat (type: float), cstring1 (type: string) + outputColumnNames: cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(ctinyint), sum(cfloat), stddev_pop(cfloat), stddev_pop(ctinyint), max(cfloat), min(ctinyint) + keys: cboolean1 (type: boolean), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cfloat (type: float), cstring1 (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string) + sort order: +++++ + Map-reduce partition columns: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string) + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + value expressions: _col5 (type: tinyint), _col6 (type: double), _col7 (type: struct), _col8 (type: struct), _col9 (type: float), _col10 (type: tinyint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0), sum(VALUE._col1), stddev_pop(VALUE._col2), stddev_pop(VALUE._col3), max(VALUE._col4), min(VALUE._col5) + keys: KEY._col0 (type: boolean), KEY._col1 (type: tinyint), KEY._col2 (type: timestamp), KEY._col3 (type: float), KEY._col4 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string), (- _col1) (type: tinyint), _col5 (type: tinyint), ((- _col1) + _col5) (type: tinyint), _col6 (type: double), (_col6 * ((- _col1) + _col5)) (type: double), (- _col6) (type: double), (79.553 * _col3) (type: double), _col7 (type: double), (- _col6) (type: double), _col8 (type: double), (((- _col1) + _col5) - 10.175) (type: double), (- (- _col6)) (type: double), (-26.28 / (- (- _col6))) (type: double), _col9 (type: float), ((_col6 * ((- _col1) + _col5)) / _col1) (type: double), _col10 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 40 + Statistics: Num rows: 40 Data size: 1200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 40 Data size: 1200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 40 + Processor Tree: + ListSink + PREHOOK: query: SELECT cboolean1, ctinyint, ctimestamp1, @@ -23,10 +152,11 @@ FROM alltypesorc WHERE (((cfloat < 3569) AND ((10.175 >= cdouble) AND (cboolean1 != 1))) - OR ((ctimestamp1 > -29071) - AND ((ctimestamp2 != -29071) + OR ((ctimestamp1 > 11) + AND ((ctimestamp2 != 12) AND (ctinyint < 9763215.5639)))) GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -55,3222 +185,288 @@ FROM alltypesorc WHERE (((cfloat < 3569) AND ((10.175 >= cdouble) AND (cboolean1 != 1))) - OR ((ctimestamp1 > -29071) - AND ((ctimestamp2 != -29071) + OR ((ctimestamp1 > 11) + AND ((ctimestamp2 != 12) AND (ctinyint < 9763215.5639)))) GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### -NULL -64 1969-12-31 16:00:00.199 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -64 1969-12-31 16:00:00.29 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -64 1969-12-31 16:00:01.785 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -64 1969-12-31 16:00:03.944 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -64 1969-12-31 16:00:05.997 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -64 1969-12-31 16:00:10.858 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 NULL -64 1969-12-31 16:00:11.912 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 NULL -64 1969-12-31 16:00:12.339 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 NULL -64 1969-12-31 16:00:13.274 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -63 1969-12-31 16:00:01.843 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -NULL -63 1969-12-31 16:00:03.552 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -NULL -63 1969-12-31 16:00:06.852 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -NULL -63 1969-12-31 16:00:07.375 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -NULL -63 1969-12-31 16:00:10.205 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 NULL -63 1969-12-31 16:00:11.946 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 NULL -63 1969-12-31 16:00:12.188 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 NULL -63 1969-12-31 16:00:15.436 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -NULL -62 1969-12-31 16:00:00.037 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:01.22 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:01.515 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:01.734 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:02.373 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:03.85 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:08.198 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:09.025 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:09.889 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:10.069 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:10.225 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:10.485 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:12.388 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:12.591 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:14.154 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:14.247 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:14.517 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:14.965 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -61 1969-12-31 16:00:00.142 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:02.698 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:03.049 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:04.165 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:04.977 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:05.613 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:06.848 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:07.405 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:10.239 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 NULL -61 1969-12-31 16:00:11.842 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 NULL -61 1969-12-31 16:00:12.454 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 NULL -61 1969-12-31 16:00:14.192 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 NULL -61 1969-12-31 16:00:16.558 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -60 1969-12-31 16:00:00.043 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:02.322 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:02.742 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:03.823 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:10.548 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:10.618 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:10.953 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 NULL -60 1969-12-31 16:00:11.504 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 NULL -60 1969-12-31 16:00:11.641 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 NULL -60 1969-12-31 16:00:11.996 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 NULL -60 1969-12-31 16:00:12.779 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -59 1969-12-31 16:00:00.831 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:01.737 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:03.73 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:04.16 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:05.927 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:05.932 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:06.777 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:08.314 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:09.401 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:09.498 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:10.983 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 NULL -59 1969-12-31 16:00:12.008 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 NULL -59 1969-12-31 16:00:13.15 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 NULL -59 1969-12-31 16:00:13.625 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 NULL -59 1969-12-31 16:00:15.296 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 NULL -59 1969-12-31 16:00:15.861 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -58 1969-12-31 16:00:02.972 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -58 1969-12-31 16:00:04.682 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -58 1969-12-31 16:00:06.255 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -58 1969-12-31 16:00:08.05 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -58 1969-12-31 16:00:08.74 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -58 1969-12-31 16:00:09.622 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 NULL -58 1969-12-31 16:00:12.065 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 NULL -58 1969-12-31 16:00:12.683 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 NULL -58 1969-12-31 16:00:12.948 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 NULL -58 1969-12-31 16:00:14.066 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 NULL -58 1969-12-31 16:00:15.658 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -57 1969-12-31 16:00:00.833 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:02.12 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:02.592 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:02.707 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:04.659 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:05.5 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:06.664 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:06.845 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:09.1 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:09.925 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 NULL -57 1969-12-31 16:00:11.451 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 NULL -57 1969-12-31 16:00:11.883 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 NULL -57 1969-12-31 16:00:12.626 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 NULL -57 1969-12-31 16:00:13.578 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 NULL -57 1969-12-31 16:00:15.39 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -56 1969-12-31 16:00:00.417 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:01.468 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:02.298 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:03.199 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:03.273 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:06.489 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:07.212 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:08.868 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:09.818 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 NULL -56 1969-12-31 16:00:13.602 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 NULL -56 1969-12-31 16:00:13.958 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 NULL -56 1969-12-31 16:00:15.038 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -55 1969-12-31 16:00:00.476 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:00.547 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:01.138 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:03.737 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:05.195 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:05.793 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:08.229 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:08.896 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:09.421 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 NULL -55 1969-12-31 16:00:11.38 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 NULL -55 1969-12-31 16:00:11.751 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:13.249 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -54 1969-12-31 16:00:00.168 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:01.14 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:02.859 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:05.688 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:06.484 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:08.805 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:11.198 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:12.181 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:13.616 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -53 1969-12-31 16:00:00.446 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:03.722 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:06.935 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:08.176 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:09.061 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:10.631 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:11.36 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:11.746 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:11.936 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:14.563 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -52 1969-12-31 16:00:01.289 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -52 1969-12-31 16:00:02.621 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -52 1969-12-31 16:00:03.963 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -52 1969-12-31 16:00:04.518 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -52 1969-12-31 16:00:05.377 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -52 1969-12-31 16:00:13.014 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -51 1969-12-31 16:00:00.156 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:02.011 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:02.723 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:03.136 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:05.279 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:07.536 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:08.448 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:12.141 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:12.494 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:13.197 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -50 1969-12-31 16:00:00.568 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:02.434 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:03.09 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:04.696 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:05.159 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:05.725 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:08.161 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:08.638 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:10.867 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:11.284 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:12.292 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:13.253 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:13.663 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:14.134 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:14.175 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:15.707 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:15.764 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -49 1969-12-31 16:00:00.612 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:01.336 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:01.458 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:02.05 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:02.325 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:04.112 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:04.168 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:04.868 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:05.814 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:05.83 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:06.851 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:09.473 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:10.521 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:11.627 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:14.208 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -48 1969-12-31 16:00:00.172 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:00.953 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:00.96 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:01.813 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:03.188 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:04.552 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:05.978 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:06.198 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:06.337 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:06.363 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:07.046 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:07.783 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:08.693 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:13.878 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:14.704 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:15.207 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:15.63 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -47 1969-12-31 16:00:00.074 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:00.235 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:00.436 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:00.555 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:01.05 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:01.673 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:02.508 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:04.351 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:04.977 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:08.091 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:08.884 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:10.274 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:10.649 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:13.73 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:14.216 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -46 1969-12-31 16:00:00.013 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:00.025 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:00.601 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:02.285 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:02.925 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:05.229 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:07.744 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:08.334 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:15.805 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -45 1969-12-31 16:00:00.287 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:00.46 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:01.592 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:02.814 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:05.68 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:07.391 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:07.592 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:07.705 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:08.351 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:09.332 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:10.036 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:11.856 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:12.648 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:12.685 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:12.921 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:16.216 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -44 1969-12-31 16:00:00.247 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:00.289 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:00.835 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:01.377 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:03.002 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:03.265 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:03.333 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:03.357 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:04.442 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:08.12 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:10.096 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:10.131 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:10.898 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:12.538 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:14.237 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:14.848 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:15.014 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:15.522 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -43 1969-12-31 16:00:00.026 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:01.901 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:02.393 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:03.341 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:05.132 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:06.507 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:08.967 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:10.835 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:13.212 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:14.048 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:14.536 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:15.091 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:16.096 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -42 1969-12-31 16:00:02.754 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:02.88 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:05.729 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:08.553 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:09.144 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:09.72 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:12.041 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:12.748 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:16.191 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -41 1969-12-31 16:00:00.096 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:00.282 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:00.951 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:02.969 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:03.544 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:04.827 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:05.609 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:05.785 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:07.204 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:07.461 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:08.011 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:11.565 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:14.973 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:15.69 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -40 1969-12-31 16:00:02.171 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:03.741 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:05.192 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:06.489 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:07.622 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:07.83 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:10.027 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:13.221 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:15.699 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -39 1969-12-31 16:00:00.39 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:00.553 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:00.708 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:00.958 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:01.534 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:02.014 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:07.721 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:08.449 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:08.852 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:09.101 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:10.104 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:13.046 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:13.092 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:13.144 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:13.358 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:14.626 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:14.911 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -38 1969-12-31 16:00:00.843 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:01.282 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:02.007 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:05.324 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:07.008 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:07.111 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:08.04 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:09.402 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:09.644 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:11.569 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:12.213 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:14.118 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:14.127 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:14.548 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -37 1969-12-31 16:00:00.539 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:02.112 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:05.391 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:06.069 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:08.141 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:09.111 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:09.88 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:11.241 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:11.738 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:13.801 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:14.662 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:15.215 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:15.979 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:16.202 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -36 1969-12-31 16:00:01.626 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:02.066 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:04.964 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:06.072 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:06.661 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:08.615 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:09.804 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:15.111 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:15.277 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:15.62 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -35 1969-12-31 16:00:00.8 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:04.52 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:05.143 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:11.847 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:12.959 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:12.966 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:13.605 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:13.819 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:13.954 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:14.819 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:15.507 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -34 1969-12-31 16:00:00.357 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:01.396 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:01.562 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:04.695 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:04.756 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:06.405 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:08.233 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:09.894 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:11.611 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -33 1969-12-31 16:00:00.611 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:01.351 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:02.131 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:02.752 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:07.499 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:08.046 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:08.493 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:10.959 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:11.95 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:13.638 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:14.257 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:15.375 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -32 1969-12-31 16:00:00.527 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:01.093 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:01.531 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:02.67 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:04.577 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:05.178 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:08.488 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:10.649 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:11.928 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:12.413 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -31 1969-12-31 16:00:00.755 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:00.882 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:00.931 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:01.702 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:05.617 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:05.643 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:07.398 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:11.841 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:13.087 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:13.552 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:13.868 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:15.012 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:15.169 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:16.059 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -30 1969-12-31 16:00:00.137 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:00.434 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:01.165 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:02.234 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:04.236 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:08.346 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:10.211 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:11.15 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:11.91 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:12.935 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:13.124 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:14.921 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:15.136 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:16.178 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -29 1969-12-31 16:00:00.699 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:01.125 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:02.82 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:03.116 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:03.506 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:03.855 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:04.004 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:09.14 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:09.485 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:10.721 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:11.145 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:11.703 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:11.762 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:16.065 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -28 1969-12-31 16:00:00.003 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:00.157 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:00.326 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:00.759 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:01.627 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:02.58 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:04.149 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:04.747 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:09.589 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:09.93 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:11.236 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:12.581 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:12.796 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:13.922 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:16.192 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -27 1969-12-31 16:00:00.692 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:02.92 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:03.127 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:06.385 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:08.365 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:08.608 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:08.832 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:09.782 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:10.289 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:11.72 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:14.065 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:15.435 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -26 1969-12-31 16:00:01.121 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:02.445 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:03.874 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:04.435 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:05.037 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:06.457 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:07.919 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:08.33 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:13.117 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:14.191 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:14.315 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:14.661 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -25 1969-12-31 16:00:03.328 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:03.549 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:05.258 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:06.199 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:06.506 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:07.022 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:09.682 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:11.469 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:13.374 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:14.903 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:15.769 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:15.965 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -24 1969-12-31 16:00:06.568 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:06.866 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:07.302 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:07.642 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:07.696 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:07.857 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:08.839 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:10.302 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:10.383 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:10.682 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:14.558 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:16.03 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -23 1969-12-31 16:00:00.244 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:00.885 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:01.644 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:01.764 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:01.813 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:02.834 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:03.539 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:03.695 -26.28 NULL 23 -23 0 -26.280000686645508 -0.0 26.280000686645508 -2090.65289462471 0.0 26.280000686645508 0.0 -10.175 -26.280000686645508 0.9999999738719373 -26.28 0.0 -23 -NULL -23 1969-12-31 16:00:03.888 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:04.124 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:06.243 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:06.523 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:07.71 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:07.844 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:10.192 -26.28 NULL 23 -23 0 -26.280000686645508 -0.0 26.280000686645508 -2090.65289462471 0.0 26.280000686645508 0.0 -10.175 -26.280000686645508 0.9999999738719373 -26.28 0.0 -23 -NULL -23 1969-12-31 16:00:11.124 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:11.284 -26.28 NULL 23 -23 0 -26.280000686645508 -0.0 26.280000686645508 -2090.65289462471 0.0 26.280000686645508 0.0 -10.175 -26.280000686645508 0.9999999738719373 -26.28 0.0 -23 -NULL -23 1969-12-31 16:00:11.402 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:12.317 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:12.663 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:13.118 -26.28 NULL 23 -23 0 -26.280000686645508 -0.0 26.280000686645508 -2090.65289462471 0.0 26.280000686645508 0.0 -10.175 -26.280000686645508 0.9999999738719373 -26.28 0.0 -23 -NULL -23 1969-12-31 16:00:13.835 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:14.071 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:15.004 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:16.07 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -22 1969-12-31 16:00:00.229 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:00.586 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:02.221 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:02.227 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:04.494 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:04.92 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:05.218 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:05.996 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:07.379 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:07.969 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:10.132 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:12.901 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:13.052 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:13.315 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:15.409 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -21 1969-12-31 16:00:01.062 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:01.599 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:03.31 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:04.229 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:05.635 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:07.982 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:09.052 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:09.182 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:12.544 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:13.32 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:14.073 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:14.72 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:15.188 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -20 1969-12-31 16:00:00.396 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:00.51 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:00.825 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:02.91 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:07.942 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:09.416 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:10.551 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:11.847 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:13.066 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:13.131 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:13.612 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:13.778 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:15.161 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:15.793 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -19 1969-12-31 16:00:00.182 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:01.564 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:01.714 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:01.781 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:01.923 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:02.925 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:03.381 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:03.446 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:04.02 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:04.301 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:05.105 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:05.914 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:05.963 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:05.972 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:06.188 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:07.935 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:08.607 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:09.061 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:10.814 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:13.495 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:14.809 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:14.83 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:15.223 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -18 1969-12-31 16:00:00.564 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:00.959 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:04.071 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:04.625 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:04.699 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:05.241 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:06.015 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:06.848 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:07.986 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:09.974 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:16.054 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -17 1969-12-31 16:00:02.974 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:06.738 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:09.528 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:09.761 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:10.104 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:10.939 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:13.479 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:13.549 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:14.733 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -16 1969-12-31 16:00:00.545 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:01.088 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:02.239 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:02.267 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:03.189 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:04.741 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:05.487 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:06.481 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:10.394 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:12.574 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:16.127 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -15 1969-12-31 16:00:00.819 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:03.261 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:05.113 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:07.485 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:09.027 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:11.257 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:13.058 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:13.438 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:14.525 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:15.186 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:16.239 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -14 1969-12-31 16:00:04.574 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:04.772 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:04.887 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:07.6 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:07.785 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:08.549 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:08.704 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:09.123 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:10.884 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:11.065 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:14.79 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:14.831 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:16.274 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -13 1969-12-31 16:00:02.492 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:02.495 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:02.613 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:03.11 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:03.134 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:03.395 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:05.24 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:06.004 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:09.357 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:12.905 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:14.436 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:15.003 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -12 1969-12-31 16:00:01.059 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:02.93 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:03.275 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:03.541 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:04.154 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:09.088 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:09.524 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:13.678 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:15.749 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:15.92 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -11 1969-12-31 16:00:00.108 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:01.462 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:02.894 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:05.35 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:07.184 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:07.946 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:07.962 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:09.419 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:10.496 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:11.09 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:11.515 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:13.15 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:13.638 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -10 1969-12-31 16:00:00.553 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:00.916 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:03.029 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:03.043 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:03.248 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:05.617 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:06.264 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:06.413 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:07.925 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:08.386 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:08.882 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:11.061 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:12.682 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:13.613 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:13.684 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:13.743 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -9 1969-12-31 16:00:02.075 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:03.03 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:03.167 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:04.372 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:07.651 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:09.792 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:10.227 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:10.452 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:10.92 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:11.08 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:11.758 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:13.071 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:13.473 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:13.651 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:14.094 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -8 1969-12-31 16:00:00.054 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:00.122 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:00.475 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:00.65 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:03.136 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:03.809 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:04.443 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:06.828 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:08.007 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:08.252 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:08.783 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:09.994 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -7 1969-12-31 16:00:00.523 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:02.436 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:04.199 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:04.342 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:05.452 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:07.058 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:08.319 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:10.957 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:12.641 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:13.029 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:15.593 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:16.076 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -6 1969-12-31 16:00:00.052 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:00.472 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:00.863 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:01.153 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:02.928 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:04.136 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:05.495 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:06.4 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:06.692 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:07.423 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:08.781 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:08.894 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:09.101 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:10.435 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:11.883 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:12.469 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:14.452 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:14.697 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -5 1969-12-31 16:00:02.021 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:02.502 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:03.52 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:04.679 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:05.385 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:08.267 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:08.583 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:10.249 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:10.326 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:12.18 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:14.505 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:16.107 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:16.344 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -4 1969-12-31 16:00:00.648 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:02.16 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:03.231 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:05.056 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:06.776 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:07.712 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:08.129 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:12.848 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:13.237 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:13.324 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:13.865 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:14.04 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:14.562 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:14.592 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:15.671 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:16.558 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -3 1969-12-31 16:00:00.02 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:00.554 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:01.723 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:01.822 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:03.349 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:07.754 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:09.434 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:09.819 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:11.059 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:11.637 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:11.642 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:11.847 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:16.197 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:16.338 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -2 1969-12-31 16:00:00.381 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:00.574 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:00.741 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:03.174 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:03.198 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:06.498 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:07.711 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:10.681 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:11.181 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:11.494 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:13.839 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:14.391 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -1 1969-12-31 16:00:00.697 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:04.836 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:04.994 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:06.358 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:08.27 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:08.845 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:09.511 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:10.785 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:11.049 -1.389 NULL 1 -1 0 -1.3890000581741333 -0.0 1.3890000581741333 -110.49912162792683 0.0 1.3890000581741333 0.0 -10.175 -1.3890000581741333 18.920085600677048 -1.389 0.0 -1 -NULL -1 1969-12-31 16:00:12.403 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:14.985 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL 0 1969-12-31 16:00:00.183 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:00.437 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:00.705 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:02.71 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:04.055 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:04.626 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:04.662 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:05.959 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:09.544 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:10.139 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:10.24 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:11.089 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:12.049 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:13.039 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:13.396 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:14.343 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:14.822 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:15.616 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:15.629 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:15.777 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 1 1969-12-31 16:00:00.519 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:02.579 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:04.916 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:06.965 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:08.488 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:10.364 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:11.949 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:13.509 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:14.567 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:15.883 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 2 1969-12-31 16:00:00.45 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:01.489 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:02.196 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:02.752 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:03.369 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:03.672 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:06.982 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:07.654 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:09.161 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:10.045 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:10.198 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:11.342 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:12.06 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:15.965 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:16.324 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 3 1969-12-31 16:00:00.074 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:01.057 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:05.162 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:06.132 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:06.624 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:07.648 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:13.064 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 4 1969-12-31 16:00:00.019 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:00.031 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:00.119 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:00.308 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:00.563 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:04.207 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:04.735 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:07.163 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:07.759 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:07.836 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:08.327 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:11.153 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:11.457 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:12.291 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:12.309 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:14.894 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:15.331 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:16.08 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 5 1969-12-31 16:00:00.49 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:00.959 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:04.058 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:04.259 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:05.034 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:06.877 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:08.427 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:09.903 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:10.885 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:10.973 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:11.083 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:11.642 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:13.574 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:14.201 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 6 1969-12-31 16:00:01.308 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:02.166 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:02.826 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:05.688 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:06.061 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:07.204 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:07.713 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:09.111 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:11.364 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:13.132 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:15.958 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 7 1969-12-31 16:00:00.984 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:01.055 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:05.724 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:06.018 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:09.539 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:13.807 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:14.872 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 8 1969-12-31 16:00:00.613 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:00.664 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:01.653 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:06.469 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:08.757 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:08.948 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:09.39 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:09.519 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:09.961 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:09.995 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:11.315 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:15.683 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:15.969 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 9 1969-12-31 16:00:00.684 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:00.945 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:03.557 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:04.745 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:09.285 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:10.473 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:11.148 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:12.205 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:13.686 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:31.808 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 10 1969-12-31 16:00:03.139 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:04.687 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:05.348 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:05.383 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:06.849 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:07.365 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:09.22 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:12.104 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:12.322 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:12.529 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:13.961 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:15.298 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:15.615 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 11 1969-12-31 16:00:06.603 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:07.204 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:07.9 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:08.27 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:08.745 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:08.857 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:09.984 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:13.383 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:14.569 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:14.747 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:15.338 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:15.602 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:16.044 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:16.197 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 12 1969-12-31 16:00:00.038 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:00.526 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:00.674 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:00.911 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:08.34 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:08.779 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:09.556 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:10.331 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:12.608 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:12.772 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:15.27 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:15.321 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 13 1969-12-31 16:00:00.025 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:00.655 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:03.794 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:05.028 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:05.368 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:06.749 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:07.723 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:09.387 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:10.573 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:12.021 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:12.498 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:14.548 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:15.956 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 14 1969-12-31 16:00:00.394 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:00.931 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:01.873 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:01.952 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:03.834 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:04.516 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:06.3 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:06.731 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:09.21 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:10.189 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:10.307 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:12.205 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:12.477 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 15 1969-12-31 16:00:00.515 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:00.766 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:00.778 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:00.838 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:00.951 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:03.256 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:04.585 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:04.971 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:05.63 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:05.784 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:07.607 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:08.615 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:10.415 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:11.15 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:11.485 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:11.526 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:12.58 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:13.114 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:13.404 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:13.735 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:14.98 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:15.923 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 16 1969-12-31 16:00:00.649 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:00.999 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:02.208 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:02.221 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:02.582 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:05.865 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:07.678 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:08.432 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:08.966 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:13.869 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:15.143 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:16.02 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 17 1969-12-31 16:00:00.197 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:00.284 10.175 NULL -17 17 0 10.175000190734863 0.0 -10.175000190734863 809.4517901735305 0.0 -10.175000190734863 0.0 -10.175 10.175000190734863 -2.58280093438524 10.175 0.0 17 -NULL 17 1969-12-31 16:00:01.235 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:02.436 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:04.513 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:05.162 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:05.562 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:07.243 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:07.296 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:07.548 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:07.703 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:10.672 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:10.701 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:10.738 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:11.758 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:13.008 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:13.411 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:15.082 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:15.338 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 18 1969-12-31 16:00:00.251 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:00.459 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:02.295 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:02.659 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:05.064 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:05.804 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:07.087 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:07.846 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:11.197 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:12.437 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:13.689 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:15.89 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 19 1969-12-31 16:00:01.375 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:02.483 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:03.44 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:08.201 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:09.001 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:10.711 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:10.723 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:11.771 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:13.074 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:14.464 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:15.68 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 20 1969-12-31 16:00:00.54 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:01.267 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:01.687 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:05.147 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:05.722 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:06.034 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:06.404 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:06.482 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:06.754 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:08.368 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:08.388 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:09.778 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:11.342 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:11.595 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:15.803 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:15.846 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:31.808 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 21 1969-12-31 16:00:00.418 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:01.707 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:02.931 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:03.4 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:04.469 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:08.048 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:09.07 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:10.652 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:12.52 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:13.153 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:14.256 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:14.318 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:15.417 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:15.732 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 22 1969-12-31 16:00:00.073 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:00.306 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:00.621 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:00.767 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:00.893 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:05.334 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:05.696 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:05.731 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:06.688 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:07.249 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:09.697 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:09.842 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:09.869 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:09.911 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:10.436 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:12.112 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:12.747 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:15.715 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 23 1969-12-31 16:00:00.103 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:00.315 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:06.391 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:08.307 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:11.785 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:12.759 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:14.241 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 24 1969-12-31 16:00:01.369 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:02.543 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:10.421 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:12.66 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:13.787 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:14.524 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:15.061 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 25 1969-12-31 16:00:00.52 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:00.73 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:01.111 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:02.722 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:03.599 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:03.855 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:05.555 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:06.03 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:06.38 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:07.331 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:08.234 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:10.14 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:11.681 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:11.749 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:12.163 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:12.469 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:12.473 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 26 1969-12-31 16:00:00.521 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:00.547 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:00.923 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:01.389 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:01.871 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:03.657 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:03.857 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:04.233 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:04.699 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:05.219 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:05.327 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:08.152 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:08.286 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:10.285 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:10.506 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 27 1969-12-31 16:00:00.381 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:00.614 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:03.727 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:06.511 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:09.971 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:13.951 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:15.909 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 28 1969-12-31 16:00:02.344 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:02.795 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:05.451 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:06.092 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:08.292 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:10.674 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:11.858 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:12.148 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:12.334 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:12.853 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:13.409 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:16.279 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 29 1969-12-31 16:00:02.432 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:02.6 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:02.777 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:04.204 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:05.79 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:05.944 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:08.001 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:11.081 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:13.093 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:13.455 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:14.829 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:15.582 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:16.19 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 30 1969-12-31 16:00:02.401 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:03.809 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:03.875 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:04.199 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:05.066 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:06.315 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:08.142 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:08.554 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:11.876 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:14.23 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 31 1969-12-31 16:00:01.849 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:02.119 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:02.363 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:03.219 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:05.892 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:06.729 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:06.838 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:08.03 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:09.393 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:12.63 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:13.816 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 32 1969-12-31 16:00:00.12 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:02.305 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:02.445 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:03.571 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:03.818 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:04.928 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:06.576 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:07.155 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:07.675 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:08 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:08.961 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:13.823 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:14.026 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:15.193 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:15.868 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 33 1969-12-31 16:00:00.318 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:00.761 79.553 NULL -33 33 0 79.5530014038086 0.0 -79.5530014038086 6328.679920677185 0.0 -79.5530014038086 0.0 -10.175 79.5530014038086 -0.33034580136836733 79.553 0.0 33 -NULL 33 1969-12-31 16:00:01.228 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:01.27 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:02.585 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:02.983 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:04.063 79.553 NULL -33 33 0 79.5530014038086 0.0 -79.5530014038086 6328.679920677185 0.0 -79.5530014038086 0.0 -10.175 79.5530014038086 -0.33034580136836733 79.553 0.0 33 -NULL 33 1969-12-31 16:00:04.396 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:04.568 79.553 NULL -33 33 0 79.5530014038086 0.0 -79.5530014038086 6328.679920677185 0.0 -79.5530014038086 0.0 -10.175 79.5530014038086 -0.33034580136836733 79.553 0.0 33 -NULL 33 1969-12-31 16:00:04.631 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:07.006 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:07.421 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:14.872 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:15.142 79.553 NULL -33 33 0 79.5530014038086 0.0 -79.5530014038086 6328.679920677185 0.0 -79.5530014038086 0.0 -10.175 79.5530014038086 -0.33034580136836733 79.553 0.0 33 -NULL 33 1969-12-31 16:00:15.198 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:15.99 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 34 1969-12-31 16:00:00.82 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:01.232 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:02.403 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:02.7 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:04.36 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:06.34 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:07.045 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:08.234 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:09.65 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:09.791 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:12.502 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:13.955 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:14.654 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:14.909 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:15.609 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 35 1969-12-31 16:00:00.249 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:00.546 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:00.812 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:00.9 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:01.792 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:02.494 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:05.007 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:06.051 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:07.613 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:07.763 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:08.37 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:08.58 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:09.892 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:10.259 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:11.356 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:14.084 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 36 1969-12-31 16:00:00.554 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:00.865 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:05.234 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:05.251 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:06.494 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:06.51 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:07.27 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:07.504 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:10.467 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:12.979 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:13.717 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:14.011 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:15.446 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 37 1969-12-31 16:00:00.024 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:00.051 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:01.979 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:05.356 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:06.69 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:08.692 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:09.907 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:09.934 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:11.091 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:11.309 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:12.712 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:12.728 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:14.674 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:14.747 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:16.313 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 38 1969-12-31 16:00:00.272 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:00.887 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:05.29 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:05.478 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:08.703 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:11.028 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:11.102 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:13.506 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:14.648 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:16.165 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:16.279 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:16.322 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 39 1969-12-31 16:00:00.395 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:01.122 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:02.789 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:02.804 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:05.707 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:06.149 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:06.206 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:07.541 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:09.365 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:10.575 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:10.915 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:12.557 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:12.719 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:14.32 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:14.79 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:15.146 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:15.52 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 40 1969-12-31 16:00:00.258 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:00.781 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:01.103 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:01.356 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:03.406 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:05.031 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:06.346 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:06.827 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:07.109 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:08.06 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:12.353 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:14.048 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:14.565 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:14.977 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:15.311 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 41 1969-12-31 16:00:00.123 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:00.469 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:01.424 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:01.652 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:01.951 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:03.512 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:04.12 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:07.175 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:08.408 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:08.418 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:09.951 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:10.42 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:14.017 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 42 1969-12-31 16:00:00.11 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:00.992 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:02.249 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:05.092 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:05.173 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:07.179 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:08.726 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:10.894 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:11.591 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:11.758 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:13.183 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:13.385 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:15.369 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:16.037 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:16.251 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 43 1969-12-31 16:00:00.104 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 43 1969-12-31 16:00:01.097 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 43 1969-12-31 16:00:06.578 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 43 1969-12-31 16:00:08.554 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 43 1969-12-31 16:00:13.812 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 43 1969-12-31 16:00:14.685 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 44 1969-12-31 16:00:00.206 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:01.54 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:03.211 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:03.63 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:03.89 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:04.431 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:05.434 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:06.91 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:07.731 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:08.171 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:09.07 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:10.163 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:12.427 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:14.098 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:16.279 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 45 1969-12-31 16:00:00.304 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:00.543 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:00.663 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:01.005 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:02.135 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:03.875 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:04.572 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:05.29 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:07.497 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:08.378 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:08.799 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:11.443 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:11.515 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:12.295 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:15.07 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:16.149 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:16.167 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 46 1969-12-31 16:00:00.259 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:00.382 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:01.388 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:04.102 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:04.717 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:05.226 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:06.353 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:07.743 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:09.441 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:09.752 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:09.883 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:09.963 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 47 1969-12-31 16:00:00.351 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:01.694 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:02 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:02.32 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:04.997 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:05.344 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:06.256 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:06.299 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:06.723 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:07.333 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:08.18 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:11.165 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:12.183 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:15.105 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 48 1969-12-31 16:00:00.008 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:00.88 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:02.043 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:05.616 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:06.529 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:07.08 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:07.115 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:07.257 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:08.445 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:09.582 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:09.824 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:10.548 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:10.669 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:11.476 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:15.512 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:15.548 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:16.19 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 49 1969-12-31 16:00:00.148 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:00.578 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:00.754 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:00.805 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:01.128 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:02.657 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:03.074 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:04.12 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:05.369 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:08.301 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:08.726 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:10.173 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:10.324 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:10.523 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:11.333 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:12.006 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:12.104 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:12.977 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:13.503 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:13.879 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:15.113 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 50 1969-12-31 16:00:00.022 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:04.228 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:05.051 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:06.371 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:08.38 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:08.584 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:09.364 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:09.965 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:10.654 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:11.048 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:15.232 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 51 1969-12-31 16:00:00.147 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:00.899 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:01.211 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:02.415 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:06.516 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:06.906 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:08.063 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:08.949 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:10.321 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:15.668 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 52 1969-12-31 16:00:00.072 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:00.158 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:01.062 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:02.269 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:04.024 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:05.484 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:06.616 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:06.737 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:10.394 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:13.14 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:15.227 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 53 1969-12-31 16:00:00.557 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 53 1969-12-31 16:00:02.966 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 53 1969-12-31 16:00:13.231 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 53 1969-12-31 16:00:15.223 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 53 1969-12-31 16:00:15.38 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 53 1969-12-31 16:00:15.401 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 54 1969-12-31 16:00:00.105 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:00.546 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:01.733 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:01.841 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:05.43 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:06.945 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:08.241 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:08.667 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:08.793 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:10.187 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:10.45 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:13.128 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:14.808 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 55 1969-12-31 16:00:00.124 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:00.805 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:01.229 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:02.215 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:02.488 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:03.384 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:08.191 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:09.69 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:10.601 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:14.709 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:15.035 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 56 1969-12-31 16:00:00.446 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 56 1969-12-31 16:00:00.909 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 56 1969-12-31 16:00:09.452 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 56 1969-12-31 16:00:10.767 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 56 1969-12-31 16:00:11.845 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 56 1969-12-31 16:00:16.056 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 57 1969-12-31 16:00:00.363 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:01.811 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:03.066 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:03.351 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:04.207 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:04.254 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:06.997 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:07.361 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:07.907 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:09.441 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:12.523 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:13.023 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:14.011 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:14.076 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:15.76 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 58 1969-12-31 16:00:01.148 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:03.239 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:03.366 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:04.031 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:04.21 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:11.353 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:11.449 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:12.924 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:13.801 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:14.013 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:15.841 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 59 1969-12-31 16:00:00.419 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:00.551 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:00.738 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:01.496 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:03.463 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:03.671 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:04.284 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:04.476 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:05.13 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:09.343 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:10.956 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:12.325 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:15.05 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 60 1969-12-31 16:00:02.526 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:05.691 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:06.811 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:07.419 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:07.707 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:08.373 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:11.003 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:13.214 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:13.71 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 61 1969-12-31 16:00:01.091 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:01.11 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:01.505 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:02.361 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:05.697 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:07.588 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:09.251 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:11.132 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:12.2 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:13.868 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:15.143 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 62 1969-12-31 16:00:00.056 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:00.461 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:02.308 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:02.38 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:02.861 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:04.967 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:05.027 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:07.828 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:10.51 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:11.213 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:12.36 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:12.762 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:13.422 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:13.524 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:14.364 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:14.982 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true -64 1969-12-31 16:00:00.013 -64.0 1cGVWH7n1QU 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:00.172 -64.0 1cGVWH7n1QU 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:00.631 -64.0 1cGVWH7n1QU 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:01.305 -64.0 cvLH6Eat2yFsyy7p 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:01.79 -64.0 1cGVWH7n1QU 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:02.496 -64.0 821UdmGbkEf4j 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:03.088 -64.0 cvLH6Eat2yFsyy7p 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:04.662 -64.0 821UdmGbkEf4j 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:10.273 -64.0 821UdmGbkEf4j 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:11.952 -64.0 821UdmGbkEf4j 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:12.857 -64.0 821UdmGbkEf4j 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -63 1969-12-31 16:00:05.654 -63.0 821UdmGbkEf4j 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -63 1969-12-31 16:00:07.623 -63.0 cvLH6Eat2yFsyy7p 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -63 1969-12-31 16:00:09.14 -63.0 821UdmGbkEf4j 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -63 1969-12-31 16:00:13.752 -63.0 cvLH6Eat2yFsyy7p 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -63 1969-12-31 16:00:14.899 -63.0 cvLH6Eat2yFsyy7p 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -63 1969-12-31 16:00:15.827 -63.0 cvLH6Eat2yFsyy7p 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -62 1969-12-31 16:00:00.337 -62.0 1cGVWH7n1QU 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:00.659 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:00.684 -62.0 cvLH6Eat2yFsyy7p 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:01.419 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:02.123 -62.0 1cGVWH7n1QU 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:02.922 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:04.978 -62.0 cvLH6Eat2yFsyy7p 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:07.756 -62.0 1cGVWH7n1QU 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:07.847 -62.0 cvLH6Eat2yFsyy7p 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:07.903 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:13.677 -62.0 cvLH6Eat2yFsyy7p 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:14.872 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:15.153 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -61 1969-12-31 16:00:00.554 -61.0 1cGVWH7n1QU 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:02.339 -61.0 cvLH6Eat2yFsyy7p 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:02.497 -61.0 cvLH6Eat2yFsyy7p 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:03.742 -61.0 1cGVWH7n1QU 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:07.538 -61.0 821UdmGbkEf4j 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:09.809 -61.0 1cGVWH7n1QU 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:10.713 -61.0 cvLH6Eat2yFsyy7p 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:12.045 -61.0 1cGVWH7n1QU 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:12.75 -61.0 cvLH6Eat2yFsyy7p 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:15.325 -61.0 821UdmGbkEf4j 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:15.694 -61.0 cvLH6Eat2yFsyy7p 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -60 1969-12-31 16:00:02.636 -60.0 1cGVWH7n1QU 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:05.661 -60.0 821UdmGbkEf4j 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:06.389 -60.0 cvLH6Eat2yFsyy7p 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:06.658 -60.0 821UdmGbkEf4j 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:07.838 -60.0 1cGVWH7n1QU 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:08.445 -60.0 cvLH6Eat2yFsyy7p 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:11.849 -60.0 1cGVWH7n1QU 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:12.223 -60.0 1cGVWH7n1QU 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:12.291 -60.0 821UdmGbkEf4j 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:13.567 -60.0 821UdmGbkEf4j 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:15.188 -60.0 cvLH6Eat2yFsyy7p 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:16.165 -60.0 cvLH6Eat2yFsyy7p 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -59 1969-12-31 16:00:00.418 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:00.516 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:00.648 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:00.838 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:07.905 -59.0 1cGVWH7n1QU 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:10.532 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:11.065 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:11.109 -59.0 1cGVWH7n1QU 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:11.231 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:11.758 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:12.227 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:15.242 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:15.278 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:16.069 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:16.125 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -58 1969-12-31 16:00:00.027 -58.0 1cGVWH7n1QU 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:00.238 -58.0 1cGVWH7n1QU 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:01.246 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:02.404 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:02.61 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:02.915 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:03.03 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:03.684 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:03.782 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:07.288 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:08.661 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:10.922 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:12.918 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:13.209 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:14.933 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -57 1969-12-31 16:00:00.56 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:01.322 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:01.831 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:03.817 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:05.19 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:05.318 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:06.898 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:08.471 -57.0 cvLH6Eat2yFsyy7p 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:08.709 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:08.941 -57.0 cvLH6Eat2yFsyy7p 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:09.066 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:10.312 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:10.994 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:11.534 -57.0 cvLH6Eat2yFsyy7p 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:13.365 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:14.225 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -56 1969-12-31 16:00:00.274 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:00.298 -56.0 1cGVWH7n1QU 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:00.575 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:00.65 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:01.467 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:05.674 -56.0 1cGVWH7n1QU 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:05.851 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:06.303 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:06.802 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:07.316 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:07.364 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:07.559 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:08.296 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:08.784 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:10.802 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:11.242 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:13.534 -56.0 1cGVWH7n1QU 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:14.038 -56.0 1cGVWH7n1QU 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:14.689 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:16.37 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -55 1969-12-31 16:00:00.557 -55.0 821UdmGbkEf4j 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:02.71 -55.0 821UdmGbkEf4j 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:03.885 -55.0 821UdmGbkEf4j 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:05.36 -55.0 1cGVWH7n1QU 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:05.568 -55.0 cvLH6Eat2yFsyy7p 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:05.591 -55.0 1cGVWH7n1QU 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:06.667 -55.0 cvLH6Eat2yFsyy7p 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:07.022 -55.0 821UdmGbkEf4j 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:07.854 -55.0 1cGVWH7n1QU 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:12.297 -55.0 1cGVWH7n1QU 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:13.15 -55.0 1cGVWH7n1QU 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:16.055 -55.0 cvLH6Eat2yFsyy7p 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -54 1969-12-31 16:00:00.023 -54.0 1cGVWH7n1QU 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:00.043 -54.0 821UdmGbkEf4j 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:01.64 -54.0 821UdmGbkEf4j 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:01.822 -54.0 cvLH6Eat2yFsyy7p 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:01.931 -54.0 cvLH6Eat2yFsyy7p 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:02.201 -54.0 cvLH6Eat2yFsyy7p 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:03.119 -54.0 cvLH6Eat2yFsyy7p 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:03.601 -54.0 821UdmGbkEf4j 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:03.725 -54.0 1cGVWH7n1QU 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:04.345 -54.0 1cGVWH7n1QU 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:05.201 -54.0 cvLH6Eat2yFsyy7p 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -53 1969-12-31 16:00:00.234 -53.0 821UdmGbkEf4j 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:01.437 -53.0 821UdmGbkEf4j 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:05.412 -53.0 cvLH6Eat2yFsyy7p 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:09.276 -53.0 1cGVWH7n1QU 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:09.583 -53.0 821UdmGbkEf4j 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:11.419 -53.0 cvLH6Eat2yFsyy7p 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:11.598 -53.0 821UdmGbkEf4j 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:11.977 -53.0 821UdmGbkEf4j 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:13.701 -53.0 cvLH6Eat2yFsyy7p 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:14.582 -53.0 cvLH6Eat2yFsyy7p 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -52 1969-12-31 16:00:00.309 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:00.849 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:01.455 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:01.824 -52.0 821UdmGbkEf4j 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:02.177 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:02.242 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:03.914 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:04.169 -52.0 821UdmGbkEf4j 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:06.732 -52.0 821UdmGbkEf4j 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:07.94 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:09.062 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:09.929 -52.0 821UdmGbkEf4j 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:10.304 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:10.928 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:14.251 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:14.404 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:14.489 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:15.545 -52.0 821UdmGbkEf4j 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:15.752 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -51 1969-12-31 16:00:00.231 -51.0 1cGVWH7n1QU 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:00.447 -51.0 cvLH6Eat2yFsyy7p 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:02.479 -51.0 cvLH6Eat2yFsyy7p 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:04.159 -51.0 cvLH6Eat2yFsyy7p 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:10.827 -51.0 821UdmGbkEf4j 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:11.394 -51.0 cvLH6Eat2yFsyy7p 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:13.026 -51.0 cvLH6Eat2yFsyy7p 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:13.085 -51.0 1cGVWH7n1QU 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:14.909 -51.0 1cGVWH7n1QU 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -50 1969-12-31 16:00:00.274 -50.0 821UdmGbkEf4j 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:01.151 -50.0 821UdmGbkEf4j 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:01.706 -50.0 cvLH6Eat2yFsyy7p 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:02.251 -50.0 821UdmGbkEf4j 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:02.775 -50.0 821UdmGbkEf4j 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:06.167 -50.0 1cGVWH7n1QU 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:06.726 -50.0 1cGVWH7n1QU 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:07.249 -50.0 821UdmGbkEf4j 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:08.153 -50.0 1cGVWH7n1QU 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:08.354 -50.0 cvLH6Eat2yFsyy7p 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:08.625 -50.0 cvLH6Eat2yFsyy7p 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:11.234 -50.0 1cGVWH7n1QU 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:12.339 -50.0 cvLH6Eat2yFsyy7p 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -49 1969-12-31 16:00:00.071 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:01.658 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:04.575 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:04.977 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:05.159 -49.0 821UdmGbkEf4j 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:06.919 -49.0 1cGVWH7n1QU 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:09.767 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:10.097 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:10.242 -49.0 821UdmGbkEf4j 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:11.021 -49.0 1cGVWH7n1QU 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:12.602 -49.0 1cGVWH7n1QU 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -48 1969-12-31 16:00:00.077 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:00.309 -48.0 1cGVWH7n1QU 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:00.329 -48.0 821UdmGbkEf4j 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:00.645 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:02.316 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:02.921 -48.0 821UdmGbkEf4j 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:04.812 -48.0 821UdmGbkEf4j 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:06.725 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:09.393 -48.0 821UdmGbkEf4j 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:09.472 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:11.189 -48.0 821UdmGbkEf4j 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:12.531 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:15.716 -48.0 1cGVWH7n1QU 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -47 1969-12-31 16:00:00.702 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:00.984 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:01.905 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:02.527 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:03.722 -47.0 821UdmGbkEf4j 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:04.811 -47.0 cvLH6Eat2yFsyy7p 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:05.786 -47.0 821UdmGbkEf4j 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:06.297 -47.0 821UdmGbkEf4j 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:08.056 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:09.447 -47.0 cvLH6Eat2yFsyy7p 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:11.938 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -46 1969-12-31 16:00:01.274 -46.0 cvLH6Eat2yFsyy7p 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:01.562 -46.0 cvLH6Eat2yFsyy7p 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:01.743 -46.0 cvLH6Eat2yFsyy7p 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:03.399 -46.0 1cGVWH7n1QU 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:04.272 -46.0 1cGVWH7n1QU 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:05.815 -46.0 821UdmGbkEf4j 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:06.837 -46.0 1cGVWH7n1QU 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:07.878 -46.0 1cGVWH7n1QU 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:11.411 -46.0 821UdmGbkEf4j 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:12.348 -46.0 821UdmGbkEf4j 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:13.166 -46.0 1cGVWH7n1QU 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:14.854 -46.0 cvLH6Eat2yFsyy7p 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:16.298 -46.0 cvLH6Eat2yFsyy7p 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -45 1969-12-31 16:00:00.01 -45.0 cvLH6Eat2yFsyy7p 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:00.066 -45.0 1cGVWH7n1QU 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:00.41 -45.0 1cGVWH7n1QU 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:00.726 -45.0 821UdmGbkEf4j 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:04.832 -45.0 cvLH6Eat2yFsyy7p 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:08.096 -45.0 821UdmGbkEf4j 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:09.426 -45.0 cvLH6Eat2yFsyy7p 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:09.949 -45.0 1cGVWH7n1QU 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:11.903 -45.0 1cGVWH7n1QU 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -44 1969-12-31 16:00:00.163 -44.0 cvLH6Eat2yFsyy7p 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:03.152 -44.0 821UdmGbkEf4j 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:04.357 -44.0 cvLH6Eat2yFsyy7p 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:04.472 -44.0 821UdmGbkEf4j 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:05.272 -44.0 1cGVWH7n1QU 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:06.76 -44.0 821UdmGbkEf4j 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:08.237 -44.0 821UdmGbkEf4j 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:08.744 -44.0 cvLH6Eat2yFsyy7p 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:10.921 -44.0 cvLH6Eat2yFsyy7p 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:11.092 -44.0 cvLH6Eat2yFsyy7p 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:12.936 -44.0 821UdmGbkEf4j 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:13.489 -44.0 1cGVWH7n1QU 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:15.658 -44.0 1cGVWH7n1QU 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -43 1969-12-31 16:00:01.345 -43.0 cvLH6Eat2yFsyy7p 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:01.416 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:01.52 -43.0 1cGVWH7n1QU 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:02.601 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:04.539 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:05.025 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:05.983 -43.0 1cGVWH7n1QU 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:08.384 -43.0 cvLH6Eat2yFsyy7p 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:08.695 -43.0 cvLH6Eat2yFsyy7p 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:09.786 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:12.417 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:12.637 -43.0 1cGVWH7n1QU 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:15.006 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:15.119 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -42 1969-12-31 16:00:01.783 -42.0 1cGVWH7n1QU 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -true -42 1969-12-31 16:00:02.57 -42.0 1cGVWH7n1QU 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -true -42 1969-12-31 16:00:03.248 -42.0 cvLH6Eat2yFsyy7p 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -true -42 1969-12-31 16:00:05.941 -42.0 821UdmGbkEf4j 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -true -42 1969-12-31 16:00:15.646 -42.0 cvLH6Eat2yFsyy7p 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -true -41 1969-12-31 16:00:02.99 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:03.19 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:03.81 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:04.781 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:05.707 -41.0 cvLH6Eat2yFsyy7p 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:11.132 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:15.219 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:16.139 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -40 1969-12-31 16:00:01.965 -40.0 821UdmGbkEf4j 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:03.604 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:03.802 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:05.741 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:05.804 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:07.846 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:07.985 -40.0 821UdmGbkEf4j 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:11.097 -40.0 cvLH6Eat2yFsyy7p 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:11.833 -40.0 cvLH6Eat2yFsyy7p 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:12.957 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:14.282 -40.0 821UdmGbkEf4j 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -39 1969-12-31 16:00:01.29 -39.0 1cGVWH7n1QU 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:03.694 -39.0 821UdmGbkEf4j 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:03.958 -39.0 821UdmGbkEf4j 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:04.52 -39.0 1cGVWH7n1QU 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:12.799 -39.0 1cGVWH7n1QU 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:15.263 -39.0 1cGVWH7n1QU 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:16.219 -39.0 821UdmGbkEf4j 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -38 1969-12-31 16:00:00.1 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:01.135 -38.0 cvLH6Eat2yFsyy7p 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:01.464 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:01.845 -38.0 cvLH6Eat2yFsyy7p 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:02.382 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:04.474 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:06.823 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:07.574 -38.0 cvLH6Eat2yFsyy7p 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:08.084 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:09.246 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:10.952 -38.0 cvLH6Eat2yFsyy7p 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:11.319 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:11.404 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:11.654 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:11.661 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:14.195 -38.0 cvLH6Eat2yFsyy7p 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:14.751 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -37 1969-12-31 16:00:03.236 -37.0 821UdmGbkEf4j 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:05.792 -37.0 cvLH6Eat2yFsyy7p 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:05.855 -37.0 cvLH6Eat2yFsyy7p 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:07.278 -37.0 1cGVWH7n1QU 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:08.368 -37.0 cvLH6Eat2yFsyy7p 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:09.597 -37.0 cvLH6Eat2yFsyy7p 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:11.953 -37.0 821UdmGbkEf4j 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:13.3 -37.0 cvLH6Eat2yFsyy7p 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -36 1969-12-31 16:00:00.186 -36.0 cvLH6Eat2yFsyy7p 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:00.355 -36.0 1cGVWH7n1QU 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:00.913 -36.0 1cGVWH7n1QU 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:01.444 -36.0 cvLH6Eat2yFsyy7p 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:07.214 -36.0 1cGVWH7n1QU 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:08.739 -36.0 1cGVWH7n1QU 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:09.433 -36.0 cvLH6Eat2yFsyy7p 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:09.972 -36.0 1cGVWH7n1QU 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:11.014 -36.0 821UdmGbkEf4j 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:12.94 -36.0 821UdmGbkEf4j 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:13.164 -36.0 821UdmGbkEf4j 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:14.806 -36.0 821UdmGbkEf4j 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:15.112 -36.0 cvLH6Eat2yFsyy7p 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:15.18 -36.0 cvLH6Eat2yFsyy7p 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -35 1969-12-31 16:00:01.435 -35.0 821UdmGbkEf4j 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:02.424 -35.0 1cGVWH7n1QU 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:03.708 -35.0 cvLH6Eat2yFsyy7p 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:04.001 -35.0 1cGVWH7n1QU 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:04.568 -35.0 1cGVWH7n1QU 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:05.647 -35.0 1cGVWH7n1QU 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:07.511 -35.0 821UdmGbkEf4j 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:09.395 -35.0 821UdmGbkEf4j 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:10.321 -35.0 cvLH6Eat2yFsyy7p 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:14.5 -35.0 1cGVWH7n1QU 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:15.328 -35.0 821UdmGbkEf4j 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:16.174 -35.0 821UdmGbkEf4j 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -34 1969-12-31 16:00:00.008 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:00.963 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:00.987 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:01.278 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:02.696 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:03.97 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:04.261 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:06.557 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:06.737 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:07.5 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:08.47 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:10.346 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:10.696 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:11.334 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:13.249 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:14.043 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:14.41 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:15.254 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:15.726 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -33 1969-12-31 16:00:01.399 -33.0 821UdmGbkEf4j 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:03.018 -33.0 821UdmGbkEf4j 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:03.168 -33.0 cvLH6Eat2yFsyy7p 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:03.229 -33.0 821UdmGbkEf4j 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:07.952 -33.0 cvLH6Eat2yFsyy7p 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:08.231 -33.0 821UdmGbkEf4j 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:08.579 -33.0 1cGVWH7n1QU 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -32 1969-12-31 16:00:00.211 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:00.779 -32.0 1cGVWH7n1QU 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:00.995 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:01.642 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:02.211 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:02.585 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:07.118 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:09.05 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:09.353 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:09.404 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:09.512 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:14.143 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:15.275 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:15.62 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -31 1969-12-31 16:00:00.572 -31.0 1cGVWH7n1QU 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:06.79 -31.0 cvLH6Eat2yFsyy7p 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:09.452 -31.0 821UdmGbkEf4j 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:10.653 -31.0 821UdmGbkEf4j 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:10.861 -31.0 821UdmGbkEf4j 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:12.081 -31.0 cvLH6Eat2yFsyy7p 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:14.694 -31.0 cvLH6Eat2yFsyy7p 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:15.429 -31.0 cvLH6Eat2yFsyy7p 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -30 1969-12-31 16:00:03.7 -30.0 1cGVWH7n1QU 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:04.427 -30.0 1cGVWH7n1QU 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:07.062 -30.0 1cGVWH7n1QU 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:07.185 -30.0 1cGVWH7n1QU 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:10.003 -30.0 1cGVWH7n1QU 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:11.913 -30.0 cvLH6Eat2yFsyy7p 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:14.072 -30.0 cvLH6Eat2yFsyy7p 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:14.53 -30.0 821UdmGbkEf4j 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:16.146 -30.0 821UdmGbkEf4j 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -29 1969-12-31 16:00:00.02 -29.0 821UdmGbkEf4j 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:00.709 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:01.752 -29.0 821UdmGbkEf4j 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:02.452 -29.0 cvLH6Eat2yFsyy7p 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:03.586 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:04.151 -29.0 821UdmGbkEf4j 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:04.544 -29.0 cvLH6Eat2yFsyy7p 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:05.209 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:05.887 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:05.977 -29.0 821UdmGbkEf4j 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:08.063 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:08.488 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:11.804 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:12.018 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:14.504 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -28 1969-12-31 16:00:00.185 -28.0 821UdmGbkEf4j 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:00.39 -28.0 821UdmGbkEf4j 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:00.74 -28.0 cvLH6Eat2yFsyy7p 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:01.475 -28.0 cvLH6Eat2yFsyy7p 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:01.66 -28.0 cvLH6Eat2yFsyy7p 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:05.042 -28.0 cvLH6Eat2yFsyy7p 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:10.554 -28.0 821UdmGbkEf4j 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:11.675 -28.0 cvLH6Eat2yFsyy7p 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:12.375 -28.0 821UdmGbkEf4j 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:14.761 -28.0 821UdmGbkEf4j 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -27 1969-12-31 16:00:00.094 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:00.186 -27.0 1cGVWH7n1QU 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:01.346 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:04.008 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:04.162 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:04.256 -27.0 821UdmGbkEf4j 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:05.617 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:07.616 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:13.117 -27.0 821UdmGbkEf4j 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:13.651 -27.0 1cGVWH7n1QU 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:13.68 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:14.723 -27.0 1cGVWH7n1QU 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -26 1969-12-31 16:00:00.599 -26.0 cvLH6Eat2yFsyy7p 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:01.542 -26.0 821UdmGbkEf4j 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:03.086 -26.0 1cGVWH7n1QU 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:03.52 -26.0 cvLH6Eat2yFsyy7p 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:05.641 -26.0 821UdmGbkEf4j 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:07.287 -26.0 821UdmGbkEf4j 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:10.915 -26.0 1cGVWH7n1QU 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:13.49 -26.0 1cGVWH7n1QU 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:15.49 -26.0 1cGVWH7n1QU 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:16.28 -26.0 821UdmGbkEf4j 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -25 1969-12-31 16:00:00.041 -25.0 cvLH6Eat2yFsyy7p 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:00.056 -25.0 1cGVWH7n1QU 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:05.169 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:07.101 -25.0 1cGVWH7n1QU 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:08.375 -25.0 cvLH6Eat2yFsyy7p 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:10.484 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:13.381 -25.0 1cGVWH7n1QU 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:13.947 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:13.978 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:15.516 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:16.285 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -24 1969-12-31 16:00:02.676 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:03.22 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:03.519 -24.0 cvLH6Eat2yFsyy7p 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:06.321 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:06.349 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:06.636 -24.0 1cGVWH7n1QU 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:06.756 -24.0 1cGVWH7n1QU 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:07.494 -24.0 1cGVWH7n1QU 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:08.076 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:10.461 -24.0 cvLH6Eat2yFsyy7p 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:11.168 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:11.23 -24.0 cvLH6Eat2yFsyy7p 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:12.17 -24.0 cvLH6Eat2yFsyy7p 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:13.56 -24.0 1cGVWH7n1QU 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:14.987 -24.0 1cGVWH7n1QU 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:16.212 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -23 1969-12-31 16:00:00.707 -23.0 821UdmGbkEf4j 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:00.859 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:01.685 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:03.701 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:03.774 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:05.259 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:05.716 -23.0 821UdmGbkEf4j 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:06.775 -23.0 821UdmGbkEf4j 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:08.804 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:09.011 -23.0 821UdmGbkEf4j 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:09.177 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:10.268 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:12.563 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:12.734 -23.0 821UdmGbkEf4j 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:13.35 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:13.984 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:14.625 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:14.9 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:14.966 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:15.855 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -22 1969-12-31 16:00:00.557 -22.0 cvLH6Eat2yFsyy7p 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:08.505 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:09.476 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:12.136 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:14.318 -22.0 1cGVWH7n1QU 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:14.444 -22.0 1cGVWH7n1QU 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:14.821 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:15.234 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:15.626 -22.0 cvLH6Eat2yFsyy7p 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:16.27 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -21 1969-12-31 16:00:00.704 -21.0 821UdmGbkEf4j 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:00.826 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:01.037 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:07.599 -21.0 821UdmGbkEf4j 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:09.755 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:10.129 -21.0 821UdmGbkEf4j 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:10.284 -21.0 cvLH6Eat2yFsyy7p 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:10.437 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:12.522 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:14.783 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:15.712 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -20 1969-12-31 16:00:00.063 -20.0 cvLH6Eat2yFsyy7p 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:00.278 -20.0 821UdmGbkEf4j 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:02.242 -20.0 1cGVWH7n1QU 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:02.353 -20.0 821UdmGbkEf4j 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:08.986 -20.0 cvLH6Eat2yFsyy7p 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:09.015 -20.0 1cGVWH7n1QU 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:09.451 -20.0 1cGVWH7n1QU 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:09.969 -20.0 821UdmGbkEf4j 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:10.077 -20.0 821UdmGbkEf4j 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:10.485 -20.0 cvLH6Eat2yFsyy7p 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:13.8 -20.0 cvLH6Eat2yFsyy7p 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:13.823 -20.0 1cGVWH7n1QU 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:13.893 -20.0 821UdmGbkEf4j 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -19 1969-12-31 16:00:00.075 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:00.348 -19.0 1cGVWH7n1QU 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:01.339 -19.0 1cGVWH7n1QU 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:01.577 -19.0 821UdmGbkEf4j 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:04.587 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:06.036 -19.0 821UdmGbkEf4j 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:07.812 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:08.34 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:10.174 -19.0 821UdmGbkEf4j 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:14.37 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:14.471 -19.0 1cGVWH7n1QU 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:15.416 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:15.86 -19.0 1cGVWH7n1QU 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -18 1969-12-31 16:00:00.368 -18.0 821UdmGbkEf4j 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:04.617 -18.0 821UdmGbkEf4j 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:07.777 -18.0 821UdmGbkEf4j 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:08.671 -18.0 1cGVWH7n1QU 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:08.837 -18.0 1cGVWH7n1QU 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:09.315 -18.0 cvLH6Eat2yFsyy7p 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:11.022 -18.0 821UdmGbkEf4j 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:11.231 -18.0 1cGVWH7n1QU 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:12.23 -18.0 cvLH6Eat2yFsyy7p 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:12.593 -18.0 cvLH6Eat2yFsyy7p 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:13.748 -18.0 cvLH6Eat2yFsyy7p 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:15.324 -18.0 821UdmGbkEf4j 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -17 1969-12-31 16:00:02.925 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:07.477 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:08.072 -17.0 821UdmGbkEf4j 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:09.292 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:11.767 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:12.685 -17.0 1cGVWH7n1QU 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:12.88 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:14.547 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:15.987 -17.0 1cGVWH7n1QU 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -16 1969-12-31 16:00:00.262 -16.0 821UdmGbkEf4j 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:01.416 -16.0 1cGVWH7n1QU 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:03.867 -16.0 1cGVWH7n1QU 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:08.035 -16.0 cvLH6Eat2yFsyy7p 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:08.402 -16.0 cvLH6Eat2yFsyy7p 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:09.246 -16.0 1cGVWH7n1QU 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:10.725 -16.0 cvLH6Eat2yFsyy7p 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:13.51 -16.0 1cGVWH7n1QU 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:14.172 -16.0 821UdmGbkEf4j 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -15 1969-12-31 16:00:01.343 -15.0 821UdmGbkEf4j 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:02.719 -15.0 821UdmGbkEf4j 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:04.37 -15.0 821UdmGbkEf4j 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:07.482 -15.0 cvLH6Eat2yFsyy7p 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:08.841 -15.0 cvLH6Eat2yFsyy7p 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:09.694 -15.0 1cGVWH7n1QU 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:11.044 -15.0 821UdmGbkEf4j 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:11.513 -15.0 1cGVWH7n1QU 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:12.037 -15.0 1cGVWH7n1QU 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:13.192 -15.0 cvLH6Eat2yFsyy7p 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:13.271 -15.0 821UdmGbkEf4j 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:16.004 -15.0 1cGVWH7n1QU 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -14 1969-12-31 16:00:00.82 -14.0 cvLH6Eat2yFsyy7p 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:03.522 -14.0 821UdmGbkEf4j 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:07.207 -14.0 821UdmGbkEf4j 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:08.605 -14.0 1cGVWH7n1QU 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:09.002 -14.0 1cGVWH7n1QU 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:11.533 -14.0 1cGVWH7n1QU 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:13.802 -14.0 cvLH6Eat2yFsyy7p 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:14.341 -14.0 821UdmGbkEf4j 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:14.609 -14.0 821UdmGbkEf4j 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:15.625 -14.0 cvLH6Eat2yFsyy7p 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -13 1969-12-31 16:00:00.457 -13.0 cvLH6Eat2yFsyy7p 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:01.828 -13.0 1cGVWH7n1QU 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:02.166 -13.0 821UdmGbkEf4j 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:03.377 -13.0 821UdmGbkEf4j 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:04.238 -13.0 1cGVWH7n1QU 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:07.375 -13.0 821UdmGbkEf4j 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:08.499 -13.0 cvLH6Eat2yFsyy7p 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:08.675 -13.0 cvLH6Eat2yFsyy7p 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:13.506 -13.0 1cGVWH7n1QU 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:15.223 -13.0 1cGVWH7n1QU 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:15.294 -13.0 1cGVWH7n1QU 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:15.588 -13.0 cvLH6Eat2yFsyy7p 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -12 1969-12-31 16:00:01.374 -12.0 821UdmGbkEf4j 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:01.967 -12.0 1cGVWH7n1QU 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:03.985 -12.0 1cGVWH7n1QU 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:04.049 -12.0 1cGVWH7n1QU 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:04.871 -12.0 cvLH6Eat2yFsyy7p 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:06.245 -12.0 1cGVWH7n1QU 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:13.178 -12.0 1cGVWH7n1QU 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:13.783 -12.0 cvLH6Eat2yFsyy7p 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:14.907 -12.0 cvLH6Eat2yFsyy7p 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -11 1969-12-31 16:00:00.639 -11.0 cvLH6Eat2yFsyy7p 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:01.785 -11.0 cvLH6Eat2yFsyy7p 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:08.448 -11.0 821UdmGbkEf4j 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:09.351 -11.0 cvLH6Eat2yFsyy7p 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:11.149 -11.0 1cGVWH7n1QU 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:12.484 -11.0 1cGVWH7n1QU 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:13.832 -11.0 1cGVWH7n1QU 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:14.985 -11.0 cvLH6Eat2yFsyy7p 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:16.232 -11.0 cvLH6Eat2yFsyy7p 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -10 1969-12-31 16:00:00.082 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:00.619 -10.0 cvLH6Eat2yFsyy7p 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:00.986 -10.0 821UdmGbkEf4j 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:01.784 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:02.006 -10.0 821UdmGbkEf4j 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:02.372 -10.0 821UdmGbkEf4j 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:05.104 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:05.636 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:08.086 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:08.523 -10.0 cvLH6Eat2yFsyy7p 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:08.676 -10.0 cvLH6Eat2yFsyy7p 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:09.433 -10.0 821UdmGbkEf4j 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:09.51 -10.0 cvLH6Eat2yFsyy7p 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:10.058 -10.0 821UdmGbkEf4j 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:13.048 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -9 1969-12-31 16:00:02.666 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:03.805 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:05.687 -9.0 821UdmGbkEf4j 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:06.798 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:07.981 -9.0 1cGVWH7n1QU 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:08.432 -9.0 1cGVWH7n1QU 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:10.035 -9.0 1cGVWH7n1QU 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:10.52 -9.0 821UdmGbkEf4j 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:10.522 -9.0 821UdmGbkEf4j 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:10.558 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:10.652 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:11.632 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:11.732 -9.0 1cGVWH7n1QU 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:13.814 -9.0 1cGVWH7n1QU 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:14.605 -9.0 821UdmGbkEf4j 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -8 1969-12-31 16:00:00.511 -8.0 1cGVWH7n1QU 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:00.532 -8.0 cvLH6Eat2yFsyy7p 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:02.109 -8.0 cvLH6Eat2yFsyy7p 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:06.513 -8.0 821UdmGbkEf4j 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:07.588 -8.0 821UdmGbkEf4j 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:08.365 -8.0 1cGVWH7n1QU 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:09.987 -8.0 cvLH6Eat2yFsyy7p 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -7 1969-12-31 16:00:00.315 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:01.162 -7.0 1cGVWH7n1QU 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:01.603 -7.0 821UdmGbkEf4j 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:02.17 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:04.292 -7.0 821UdmGbkEf4j 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:04.368 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:05.662 -7.0 1cGVWH7n1QU 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:08.341 -7.0 821UdmGbkEf4j 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:08.353 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:09.128 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:13.994 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -6 1969-12-31 16:00:01.845 -6.0 1cGVWH7n1QU 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:02.834 -6.0 821UdmGbkEf4j 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:03.613 -6.0 821UdmGbkEf4j 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:05.07 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:06.144 -6.0 1cGVWH7n1QU 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:06.209 -6.0 1cGVWH7n1QU 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:07.372 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:07.442 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:08.798 -6.0 1cGVWH7n1QU 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:09.052 -6.0 821UdmGbkEf4j 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:11.511 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:11.794 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:12.157 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:14.192 -6.0 1cGVWH7n1QU 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -5 1969-12-31 16:00:00.037 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:00.594 -5.0 821UdmGbkEf4j 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:00.611 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:00.834 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:01.728 -5.0 1cGVWH7n1QU 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:04.033 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:05.4 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:06.123 -5.0 1cGVWH7n1QU 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:07.276 -5.0 821UdmGbkEf4j 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:11.811 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:13.518 -5.0 1cGVWH7n1QU 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:15.054 -5.0 1cGVWH7n1QU 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:15.466 -5.0 1cGVWH7n1QU 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:16.337 -5.0 821UdmGbkEf4j 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -4 1969-12-31 16:00:00.032 -4.0 cvLH6Eat2yFsyy7p 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:01.567 -4.0 cvLH6Eat2yFsyy7p 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:03.293 -4.0 1cGVWH7n1QU 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:03.366 -4.0 821UdmGbkEf4j 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:05.323 -4.0 821UdmGbkEf4j 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:05.764 -4.0 821UdmGbkEf4j 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:07.238 -4.0 cvLH6Eat2yFsyy7p 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:07.66 -4.0 1cGVWH7n1QU 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:08.5 -4.0 1cGVWH7n1QU 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:09.922 -4.0 821UdmGbkEf4j 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:11.875 -4.0 1cGVWH7n1QU 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:14.16 -4.0 1cGVWH7n1QU 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -3 1969-12-31 16:00:07.182 -3.0 821UdmGbkEf4j 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -true -3 1969-12-31 16:00:08.429 -3.0 821UdmGbkEf4j 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -true -3 1969-12-31 16:00:12.866 -3.0 1cGVWH7n1QU 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -true -2 1969-12-31 16:00:00.395 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:03.27 -2.0 1cGVWH7n1QU 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:09.237 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:10.495 -2.0 821UdmGbkEf4j 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:11.979 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:13.347 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:13.941 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:15.431 -2.0 1cGVWH7n1QU 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:15.921 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -1 1969-12-31 16:00:00.107 -1.0 1cGVWH7n1QU 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:00.519 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:00.839 -1.0 1cGVWH7n1QU 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:01.502 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:02.578 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:03.106 -1.389 1cGVWH7n1QU 1 -1 0 -1.3890000581741333 -0.0 1.3890000581741333 -110.49912162792683 0.0 1.3890000581741333 0.0 -10.175 -1.3890000581741333 18.920085600677048 -1.389 0.0 -1 -true -1 1969-12-31 16:00:04.956 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:05.451 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:05.785 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:06.036 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:08.104 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:09.723 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:11.459 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:11.932 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:13.333 -1.0 1cGVWH7n1QU 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:15.065 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:15.242 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:16.189 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:16.228 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true 0 1969-12-31 16:00:00.181 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:01.268 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:02.284 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:04.336 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:05.166 0.0 1cGVWH7n1QU 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:06.311 0.0 821UdmGbkEf4j 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:07.552 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:07.615 0.0 1cGVWH7n1QU 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:08.742 0.0 821UdmGbkEf4j 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:09.017 0.0 1cGVWH7n1QU 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:09.566 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:09.922 0.0 1cGVWH7n1QU 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:10.688 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 1 1969-12-31 16:00:00.106 1.0 1cGVWH7n1QU -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:00.125 1.0 cvLH6Eat2yFsyy7p -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:00.342 1.0 1cGVWH7n1QU -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:01.191 1.0 1cGVWH7n1QU -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:01.746 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:01.798 1.0 1cGVWH7n1QU -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:02.594 1.0 cvLH6Eat2yFsyy7p -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:03.617 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:06.974 1.0 cvLH6Eat2yFsyy7p -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:09.74 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:10.149 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:10.401 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:11.583 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:11.658 1.0 cvLH6Eat2yFsyy7p -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 2 1969-12-31 16:00:01.703 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:01.923 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:02.359 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:03.805 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:06.546 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:07.06 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:07.062 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:07.556 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:08.762 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:12.4 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:14.787 2.0 1cGVWH7n1QU -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:15.071 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:15.103 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:16.352 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 3 1969-12-31 16:00:01.634 3.0 cvLH6Eat2yFsyy7p -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.119 3.0 cvLH6Eat2yFsyy7p -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.192 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.256 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.321 3.0 cvLH6Eat2yFsyy7p -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.437 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.941 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:04.64 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:05.406 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:05.988 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:07.913 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:08.876 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:10.098 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:10.295 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:11.471 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:13.736 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:13.741 3.0 cvLH6Eat2yFsyy7p -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:14.349 3.0 cvLH6Eat2yFsyy7p -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:31.808 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 4 1969-12-31 16:00:00.237 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:02.212 4.0 1cGVWH7n1QU -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:05.752 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:06.663 4.0 cvLH6Eat2yFsyy7p -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:06.666 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:06.941 4.0 cvLH6Eat2yFsyy7p -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:08.036 4.0 1cGVWH7n1QU -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:09.934 4.0 1cGVWH7n1QU -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:12.526 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:12.665 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:15.509 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:15.754 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:15.932 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:16.558 4.0 1cGVWH7n1QU -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 5 1969-12-31 16:00:00.344 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:00.467 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:02.011 5.0 821UdmGbkEf4j -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:03.11 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:05.015 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:05.085 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:05.78 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:08.493 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:09.238 5.0 821UdmGbkEf4j -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:10.233 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:10.605 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:11.561 5.0 821UdmGbkEf4j -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:11.803 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:13.612 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:16.144 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 6 1969-12-31 16:00:02.078 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:03.916 6.0 1cGVWH7n1QU -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:04.003 6.0 821UdmGbkEf4j -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:04.783 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:04.89 6.0 1cGVWH7n1QU -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:04.901 6.0 1cGVWH7n1QU -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:04.983 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:05.885 6.0 821UdmGbkEf4j -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:07.375 6.0 1cGVWH7n1QU -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:09.107 6.0 821UdmGbkEf4j -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:09.388 6.0 821UdmGbkEf4j -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:09.857 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:11.357 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:13.987 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 7 1969-12-31 16:00:01.437 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:02.213 7.0 cvLH6Eat2yFsyy7p -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:03.214 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:03.526 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:03.846 7.0 cvLH6Eat2yFsyy7p -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:07.336 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:08.334 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:09.168 7.0 821UdmGbkEf4j -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:09.828 7.0 821UdmGbkEf4j -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:11.886 7.0 cvLH6Eat2yFsyy7p -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:12.06 7.0 cvLH6Eat2yFsyy7p -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:14.867 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:15.313 7.0 821UdmGbkEf4j -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:15.998 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:16.238 7.0 cvLH6Eat2yFsyy7p -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 8 1969-12-31 16:00:00.335 8.0 cvLH6Eat2yFsyy7p -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:00.687 8.0 821UdmGbkEf4j -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:05.063 8.0 cvLH6Eat2yFsyy7p -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:05.214 8.0 cvLH6Eat2yFsyy7p -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:06.327 8.0 cvLH6Eat2yFsyy7p -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:07.452 8.0 1cGVWH7n1QU -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:07.661 8.0 cvLH6Eat2yFsyy7p -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:07.74 8.0 1cGVWH7n1QU -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:08.749 8.0 1cGVWH7n1QU -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:08.893 8.0 1cGVWH7n1QU -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:09.373 8.0 821UdmGbkEf4j -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:10.496 8.0 821UdmGbkEf4j -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:11.236 8.0 1cGVWH7n1QU -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 9 1969-12-31 16:00:00.278 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:00.377 9.0 cvLH6Eat2yFsyy7p -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:00.706 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:03.354 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:03.961 9.0 cvLH6Eat2yFsyy7p -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:07.037 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:09.063 9.0 821UdmGbkEf4j -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:09.444 9.0 821UdmGbkEf4j -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:11.544 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:12.42 9.0 821UdmGbkEf4j -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:13.387 9.0 cvLH6Eat2yFsyy7p -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:14.974 9.0 cvLH6Eat2yFsyy7p -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:15.745 9.0 cvLH6Eat2yFsyy7p -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:15.747 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 10 1969-12-31 16:00:00.55 10.0 1cGVWH7n1QU -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:01.358 10.0 cvLH6Eat2yFsyy7p -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:03.631 10.0 1cGVWH7n1QU -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:03.847 10.0 821UdmGbkEf4j -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:04.197 10.0 cvLH6Eat2yFsyy7p -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:06.923 10.0 821UdmGbkEf4j -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:07.636 10.0 821UdmGbkEf4j -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:08.135 10.0 1cGVWH7n1QU -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:08.442 10.0 cvLH6Eat2yFsyy7p -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:09.539 10.0 821UdmGbkEf4j -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:12.034 10.0 821UdmGbkEf4j -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:12.05 10.0 cvLH6Eat2yFsyy7p -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:12.588 10.0 1cGVWH7n1QU -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:16.281 10.0 1cGVWH7n1QU -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 11 1969-12-31 16:00:02.192 11.0 cvLH6Eat2yFsyy7p -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:02.389 11.0 cvLH6Eat2yFsyy7p -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:02.521 11.0 1cGVWH7n1QU -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:03.211 11.0 1cGVWH7n1QU -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:06.062 11.0 cvLH6Eat2yFsyy7p -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:07.581 11.0 1cGVWH7n1QU -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:08.428 11.0 1cGVWH7n1QU -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:08.95 11.0 821UdmGbkEf4j -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:09.532 11.0 1cGVWH7n1QU -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:10.912 11.0 821UdmGbkEf4j -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:13.613 11.0 cvLH6Eat2yFsyy7p -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 12 1969-12-31 16:00:00.997 12.0 821UdmGbkEf4j -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 12 1969-12-31 16:00:04.811 12.0 cvLH6Eat2yFsyy7p -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 12 1969-12-31 16:00:09.759 12.0 cvLH6Eat2yFsyy7p -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 12 1969-12-31 16:00:13.265 12.0 1cGVWH7n1QU -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 12 1969-12-31 16:00:13.383 12.0 821UdmGbkEf4j -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 12 1969-12-31 16:00:14.744 12.0 821UdmGbkEf4j -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 13 1969-12-31 16:00:00.029 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:02.001 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:04.711 13.0 821UdmGbkEf4j -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:05.942 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:06.453 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:07.709 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:08.347 13.0 821UdmGbkEf4j -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:08.549 13.0 821UdmGbkEf4j -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:08.799 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:09.642 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:09.802 13.0 821UdmGbkEf4j -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:09.923 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:10.815 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:12.554 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:13.062 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:16.045 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 14 1969-12-31 16:00:00.334 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:00.34 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:00.546 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:00.938 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:01.815 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:03.058 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:03.666 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:03.911 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:05.663 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:07.812 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:08.209 14.0 1cGVWH7n1QU -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:11.302 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:11.528 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:12.103 14.0 1cGVWH7n1QU -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:12.781 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:15.709 14.0 1cGVWH7n1QU -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 15 1969-12-31 16:00:00.019 15.0 cvLH6Eat2yFsyy7p -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:00.465 15.0 cvLH6Eat2yFsyy7p -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:01.054 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:01.115 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:02.353 15.0 821UdmGbkEf4j -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:02.598 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:03.901 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:06.182 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:06.748 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:08.54 15.0 cvLH6Eat2yFsyy7p -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:09.577 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:10.576 15.0 821UdmGbkEf4j -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:11.483 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:11.832 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:12.059 15.0 821UdmGbkEf4j -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:12.078 15.0 cvLH6Eat2yFsyy7p -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:12.746 15.0 821UdmGbkEf4j -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:14.822 15.0 821UdmGbkEf4j -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:16.133 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:16.232 15.0 cvLH6Eat2yFsyy7p -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 16 1969-12-31 16:00:00.147 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:00.98 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:01.151 16.0 821UdmGbkEf4j -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:02.28 16.0 cvLH6Eat2yFsyy7p -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:05.013 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:06.813 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:07.201 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:08.735 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:11.214 16.0 821UdmGbkEf4j -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:15.698 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:16.227 16.0 821UdmGbkEf4j -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 17 1969-12-31 16:00:00.225 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:00.229 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:00.283 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:00.499 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:00.597 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:00.863 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:01.764 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:02.933 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:03.478 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:04.153 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:08.246 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:09.719 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:11.246 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:14.12 17.0 cvLH6Eat2yFsyy7p -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:16.558 10.175 cvLH6Eat2yFsyy7p -17 17 0 10.175000190734863 0.0 -10.175000190734863 809.4517901735305 0.0 -10.175000190734863 0.0 -10.175 10.175000190734863 -2.58280093438524 10.175 0.0 17 -true 18 1969-12-31 16:00:00.259 18.0 cvLH6Eat2yFsyy7p -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:00.909 18.0 cvLH6Eat2yFsyy7p -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:01.154 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:02.986 18.0 821UdmGbkEf4j -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:03.108 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:03.703 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:09.509 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:09.747 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:10.553 18.0 821UdmGbkEf4j -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:10.881 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:12.339 18.0 cvLH6Eat2yFsyy7p -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:13.767 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 19 1969-12-31 16:00:01.663 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:02.609 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:03.827 19.0 cvLH6Eat2yFsyy7p -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:09.507 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:11.092 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:11.333 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:11.452 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:11.579 19.0 821UdmGbkEf4j -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:11.847 19.0 cvLH6Eat2yFsyy7p -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:12.161 19.0 cvLH6Eat2yFsyy7p -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:13.106 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:14.479 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 20 1969-12-31 16:00:01.6 20.0 821UdmGbkEf4j -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:01.943 20.0 1cGVWH7n1QU -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:02.164 20.0 cvLH6Eat2yFsyy7p -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:04.545 20.0 1cGVWH7n1QU -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:07.187 20.0 1cGVWH7n1QU -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:07.813 20.0 821UdmGbkEf4j -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:12.269 20.0 821UdmGbkEf4j -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:14.818 20.0 1cGVWH7n1QU -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 21 1969-12-31 16:00:00.651 21.0 1cGVWH7n1QU -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:02.216 21.0 821UdmGbkEf4j -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:03.882 21.0 1cGVWH7n1QU -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:06.912 21.0 821UdmGbkEf4j -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:07.784 21.0 1cGVWH7n1QU -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:08.648 21.0 cvLH6Eat2yFsyy7p -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:10.044 21.0 cvLH6Eat2yFsyy7p -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:10.871 21.0 cvLH6Eat2yFsyy7p -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:11.525 21.0 1cGVWH7n1QU -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:12.594 21.0 1cGVWH7n1QU -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 22 1969-12-31 16:00:00.012 22.0 1cGVWH7n1QU -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:01.809 22.0 cvLH6Eat2yFsyy7p -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:03.555 22.0 821UdmGbkEf4j -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:03.815 22.0 821UdmGbkEf4j -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:04.322 22.0 821UdmGbkEf4j -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:08.487 22.0 cvLH6Eat2yFsyy7p -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:09.701 22.0 1cGVWH7n1QU -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:10.098 22.0 1cGVWH7n1QU -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:10.47 22.0 821UdmGbkEf4j -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:12.272 22.0 cvLH6Eat2yFsyy7p -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:12.849 22.0 821UdmGbkEf4j -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:13.395 22.0 1cGVWH7n1QU -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:16.163 22.0 1cGVWH7n1QU -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 23 1969-12-31 16:00:01.779 23.0 1cGVWH7n1QU -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:05.929 23.0 821UdmGbkEf4j -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:06.192 23.0 821UdmGbkEf4j -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:06.967 23.0 cvLH6Eat2yFsyy7p -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:07.993 23.0 cvLH6Eat2yFsyy7p -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:09.059 23.0 821UdmGbkEf4j -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:10.47 23.0 1cGVWH7n1QU -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:10.907 23.0 821UdmGbkEf4j -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:11.343 23.0 cvLH6Eat2yFsyy7p -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:12 23.0 1cGVWH7n1QU -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:12.66 23.0 cvLH6Eat2yFsyy7p -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:13.439 23.0 821UdmGbkEf4j -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:14.752 23.0 1cGVWH7n1QU -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:15.551 23.0 cvLH6Eat2yFsyy7p -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 24 1969-12-31 16:00:00.294 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:00.723 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:01.055 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:01.85 24.0 821UdmGbkEf4j -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:02.541 24.0 cvLH6Eat2yFsyy7p -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:04.096 24.0 cvLH6Eat2yFsyy7p -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:06.905 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:07.164 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:07.534 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:07.86 24.0 cvLH6Eat2yFsyy7p -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:08.868 24.0 821UdmGbkEf4j -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:08.983 24.0 cvLH6Eat2yFsyy7p -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:11.34 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:11.359 24.0 821UdmGbkEf4j -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:11.867 24.0 821UdmGbkEf4j -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:13.844 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 25 1969-12-31 16:00:00.094 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:00.533 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:00.803 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:00.925 25.0 1cGVWH7n1QU -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:01.111 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:02.319 25.0 821UdmGbkEf4j -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:03.508 25.0 1cGVWH7n1QU -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:05.327 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:06.136 25.0 1cGVWH7n1QU -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:07.493 25.0 821UdmGbkEf4j -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:09.765 25.0 1cGVWH7n1QU -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:10.528 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:12.226 25.0 1cGVWH7n1QU -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:13.338 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 26 1969-12-31 16:00:00.479 26.0 cvLH6Eat2yFsyy7p -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:02.272 26.0 cvLH6Eat2yFsyy7p -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:02.396 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:02.407 26.0 cvLH6Eat2yFsyy7p -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:02.824 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:03.158 26.0 1cGVWH7n1QU -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:03.945 26.0 cvLH6Eat2yFsyy7p -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:05.384 26.0 1cGVWH7n1QU -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:06.115 26.0 1cGVWH7n1QU -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:07.972 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:08.896 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:10.31 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:10.776 26.0 1cGVWH7n1QU -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:14.341 26.0 1cGVWH7n1QU -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:16.191 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 27 1969-12-31 16:00:00.18 27.0 821UdmGbkEf4j -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:00.547 27.0 821UdmGbkEf4j -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:00.957 27.0 1cGVWH7n1QU -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:01.083 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:02.384 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:04.963 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:09.093 27.0 1cGVWH7n1QU -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:09.243 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:11.668 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:12.422 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:12.725 27.0 1cGVWH7n1QU -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:16.319 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 28 1969-12-31 16:00:00.682 28.0 821UdmGbkEf4j -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:02.496 28.0 cvLH6Eat2yFsyy7p -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:02.779 28.0 1cGVWH7n1QU -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:03.856 28.0 cvLH6Eat2yFsyy7p -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:04.975 28.0 1cGVWH7n1QU -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:06.311 28.0 1cGVWH7n1QU -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:06.969 28.0 1cGVWH7n1QU -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:09.304 28.0 821UdmGbkEf4j -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:09.36 28.0 821UdmGbkEf4j -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:10.666 28.0 cvLH6Eat2yFsyy7p -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:11.35 28.0 821UdmGbkEf4j -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:15.571 28.0 1cGVWH7n1QU -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:15.605 28.0 cvLH6Eat2yFsyy7p -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:16.036 28.0 821UdmGbkEf4j -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 29 1969-12-31 16:00:00.66 29.0 821UdmGbkEf4j -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 29 1969-12-31 16:00:01.202 29.0 cvLH6Eat2yFsyy7p -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 29 1969-12-31 16:00:05.536 29.0 1cGVWH7n1QU -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 29 1969-12-31 16:00:06.958 29.0 cvLH6Eat2yFsyy7p -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 29 1969-12-31 16:00:07.007 29.0 cvLH6Eat2yFsyy7p -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 29 1969-12-31 16:00:15.007 29.0 cvLH6Eat2yFsyy7p -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 30 1969-12-31 16:00:04.165 30.0 1cGVWH7n1QU -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:04.647 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:04.777 30.0 1cGVWH7n1QU -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:04.936 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:05.847 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:06.183 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:07.457 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:07.513 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:07.902 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:09.227 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:10.538 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:15.705 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:16.189 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:16.282 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 31 1969-12-31 16:00:00.876 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:02.219 31.0 1cGVWH7n1QU -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:04.388 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:04.579 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:05.58 31.0 821UdmGbkEf4j -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:06.147 31.0 1cGVWH7n1QU -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:07.021 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:07.412 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:08.78 31.0 1cGVWH7n1QU -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:08.854 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:12.208 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:12.363 31.0 821UdmGbkEf4j -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:14.388 31.0 821UdmGbkEf4j -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 32 1969-12-31 16:00:03.538 32.0 821UdmGbkEf4j -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:03.761 32.0 1cGVWH7n1QU -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:04.264 32.0 cvLH6Eat2yFsyy7p -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:05.11 32.0 1cGVWH7n1QU -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:07.085 32.0 cvLH6Eat2yFsyy7p -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:07.18 32.0 821UdmGbkEf4j -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:07.661 32.0 1cGVWH7n1QU -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:10.451 32.0 821UdmGbkEf4j -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:11.054 32.0 cvLH6Eat2yFsyy7p -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:12.525 32.0 cvLH6Eat2yFsyy7p -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:13.909 32.0 cvLH6Eat2yFsyy7p -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:15.375 32.0 1cGVWH7n1QU -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 33 1969-12-31 16:00:00.323 79.553 1cGVWH7n1QU -33 33 0 79.5530014038086 0.0 -79.5530014038086 6328.679920677185 0.0 -79.5530014038086 0.0 -10.175 79.5530014038086 -0.33034580136836733 79.553 0.0 33 -true 33 1969-12-31 16:00:02.176 33.0 cvLH6Eat2yFsyy7p -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:03.208 33.0 cvLH6Eat2yFsyy7p -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:04.672 33.0 1cGVWH7n1QU -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:06.848 33.0 cvLH6Eat2yFsyy7p -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:09.801 33.0 821UdmGbkEf4j -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:09.924 33.0 cvLH6Eat2yFsyy7p -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:10.724 33.0 1cGVWH7n1QU -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:11.673 33.0 821UdmGbkEf4j -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:12.176 33.0 821UdmGbkEf4j -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:15.655 33.0 cvLH6Eat2yFsyy7p -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:15.717 33.0 821UdmGbkEf4j -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:31.808 79.553 cvLH6Eat2yFsyy7p -33 33 0 159.1060028076172 0.0 -159.1060028076172 6328.679920677185 0.0 -159.1060028076172 0.0 -10.175 159.1060028076172 -0.16517290068418367 79.553 0.0 33 -true 34 1969-12-31 16:00:00.411 34.0 821UdmGbkEf4j -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:00.535 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:00.668 34.0 cvLH6Eat2yFsyy7p -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:01.639 34.0 cvLH6Eat2yFsyy7p -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:01.931 34.0 821UdmGbkEf4j -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:01.975 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:05.177 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:07.178 34.0 cvLH6Eat2yFsyy7p -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:07.279 34.0 821UdmGbkEf4j -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:07.426 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:09.488 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:10.23 34.0 821UdmGbkEf4j -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:10.818 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:13.221 34.0 821UdmGbkEf4j -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 35 1969-12-31 16:00:00.508 35.0 cvLH6Eat2yFsyy7p -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:01.851 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:02.583 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:03.768 35.0 cvLH6Eat2yFsyy7p -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:03.799 35.0 821UdmGbkEf4j -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:05.741 35.0 cvLH6Eat2yFsyy7p -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:09.647 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:10.916 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:11.763 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:14.07 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:15.668 35.0 cvLH6Eat2yFsyy7p -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 36 1969-12-31 16:00:00.797 36.0 cvLH6Eat2yFsyy7p -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:02.123 36.0 821UdmGbkEf4j -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:02.752 36.0 1cGVWH7n1QU -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:04.026 36.0 1cGVWH7n1QU -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:04.432 36.0 cvLH6Eat2yFsyy7p -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:13.825 36.0 cvLH6Eat2yFsyy7p -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:14.347 36.0 821UdmGbkEf4j -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:15.145 36.0 1cGVWH7n1QU -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 37 1969-12-31 16:00:00.829 37.0 cvLH6Eat2yFsyy7p -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:02.443 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:04.495 37.0 cvLH6Eat2yFsyy7p -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:04.828 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:05.645 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:06.547 37.0 1cGVWH7n1QU -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:08.438 37.0 1cGVWH7n1QU -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:10.807 37.0 cvLH6Eat2yFsyy7p -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:12.643 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:14.475 37.0 1cGVWH7n1QU -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:14.889 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:14.907 37.0 cvLH6Eat2yFsyy7p -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:15.549 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:15.562 37.0 1cGVWH7n1QU -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 38 1969-12-31 16:00:00.044 38.0 1cGVWH7n1QU -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:00.265 38.0 821UdmGbkEf4j -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:00.711 38.0 1cGVWH7n1QU -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:00.78 38.0 821UdmGbkEf4j -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:01.947 38.0 821UdmGbkEf4j -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:03.145 38.0 821UdmGbkEf4j -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:06.103 38.0 cvLH6Eat2yFsyy7p -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:08.278 38.0 1cGVWH7n1QU -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:09.169 38.0 cvLH6Eat2yFsyy7p -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:09.366 38.0 cvLH6Eat2yFsyy7p -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:12.819 38.0 1cGVWH7n1QU -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:14.239 38.0 821UdmGbkEf4j -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:31.808 38.0 1cGVWH7n1QU -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 39 1969-12-31 16:00:00.078 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:00.102 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:00.271 39.0 821UdmGbkEf4j -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:00.494 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:02.535 39.0 1cGVWH7n1QU -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:06.228 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:07.162 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:07.854 39.0 821UdmGbkEf4j -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:10.12 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:10.399 39.0 1cGVWH7n1QU -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:10.403 39.0 821UdmGbkEf4j -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 40 1969-12-31 16:00:01.206 40.0 cvLH6Eat2yFsyy7p -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:02.488 40.0 821UdmGbkEf4j -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:02.643 40.0 821UdmGbkEf4j -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:02.842 40.0 1cGVWH7n1QU -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:05.521 40.0 cvLH6Eat2yFsyy7p -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:05.614 40.0 1cGVWH7n1QU -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:08.105 40.0 821UdmGbkEf4j -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:08.242 40.0 1cGVWH7n1QU -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:08.785 40.0 1cGVWH7n1QU -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:14.159 40.0 cvLH6Eat2yFsyy7p -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:15.973 40.0 cvLH6Eat2yFsyy7p -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:16.188 40.0 1cGVWH7n1QU -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 41 1969-12-31 16:00:00.085 41.0 1cGVWH7n1QU -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:00.805 41.0 1cGVWH7n1QU -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:00.832 41.0 cvLH6Eat2yFsyy7p -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:04.128 41.0 cvLH6Eat2yFsyy7p -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:04.306 41.0 821UdmGbkEf4j -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:05.885 41.0 cvLH6Eat2yFsyy7p -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:05.897 41.0 1cGVWH7n1QU -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:06.554 41.0 cvLH6Eat2yFsyy7p -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:12.235 41.0 cvLH6Eat2yFsyy7p -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 42 1969-12-31 16:00:00.007 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:00.021 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:00.302 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:00.367 42.0 cvLH6Eat2yFsyy7p -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:00.865 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:03.797 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:03.871 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:06.511 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:06.575 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:08.737 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:08.791 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:09.782 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:11.391 42.0 cvLH6Eat2yFsyy7p -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:11.581 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:12.024 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:13.078 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:14.111 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:14.152 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 43 1969-12-31 16:00:00.74 43.0 1cGVWH7n1QU -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:01.028 43.0 821UdmGbkEf4j -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:02.649 43.0 1cGVWH7n1QU -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:02.844 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:03.818 43.0 1cGVWH7n1QU -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:06.114 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:06.596 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:07.435 43.0 1cGVWH7n1QU -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:07.891 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:10.637 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:12.613 43.0 821UdmGbkEf4j -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:12.781 43.0 821UdmGbkEf4j -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:13.539 43.0 821UdmGbkEf4j -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:14.133 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:15.933 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 44 1969-12-31 16:00:04.242 44.0 1cGVWH7n1QU -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:05.278 44.0 1cGVWH7n1QU -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:06.09 44.0 821UdmGbkEf4j -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:09.561 44.0 821UdmGbkEf4j -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:11.625 44.0 cvLH6Eat2yFsyy7p -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:11.935 44.0 cvLH6Eat2yFsyy7p -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:12.47 44.0 821UdmGbkEf4j -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:12.55 44.0 cvLH6Eat2yFsyy7p -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 45 1969-12-31 16:00:01.31 45.0 821UdmGbkEf4j -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:03.14 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:05.109 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:05.308 45.0 1cGVWH7n1QU -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:05.42 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:05.536 45.0 1cGVWH7n1QU -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:06.248 45.0 821UdmGbkEf4j -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:06.903 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:11.503 45.0 1cGVWH7n1QU -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:11.522 45.0 1cGVWH7n1QU -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:13.953 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:15.985 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 46 1969-12-31 16:00:00.863 46.0 1cGVWH7n1QU -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:00.971 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:01.276 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:02.015 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:02.31 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:04.245 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:04.301 46.0 1cGVWH7n1QU -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:05.211 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:05.507 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:06.626 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:08.662 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:09.654 46.0 1cGVWH7n1QU -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:12.772 46.0 1cGVWH7n1QU -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:13.074 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:15.456 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:16.276 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:31.808 46.0 1cGVWH7n1QU -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 47 1969-12-31 16:00:00.513 47.0 1cGVWH7n1QU -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:00.803 47.0 cvLH6Eat2yFsyy7p -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:02.024 47.0 1cGVWH7n1QU -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:05.241 47.0 cvLH6Eat2yFsyy7p -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:11.046 47.0 1cGVWH7n1QU -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:11.112 47.0 821UdmGbkEf4j -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:12.778 47.0 cvLH6Eat2yFsyy7p -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:13.684 47.0 821UdmGbkEf4j -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 48 1969-12-31 16:00:00.108 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:00.13 48.0 cvLH6Eat2yFsyy7p -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:00.511 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:00.905 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:00.923 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:01.05 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:01.307 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:01.512 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:03.11 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:04.561 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:06.604 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:06.864 48.0 cvLH6Eat2yFsyy7p -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:07.205 48.0 cvLH6Eat2yFsyy7p -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:07.463 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:13.232 48.0 cvLH6Eat2yFsyy7p -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:15.654 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 49 1969-12-31 16:00:00.662 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:04.128 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:04.907 49.0 1cGVWH7n1QU -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:05.028 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:05.248 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:06.048 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:07.091 49.0 1cGVWH7n1QU -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:07.648 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:08.827 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:09.365 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:11.401 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:12.273 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:12.87 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:13.146 49.0 1cGVWH7n1QU -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:13.889 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:14.778 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:15.523 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:15.541 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 50 1969-12-31 16:00:00.099 50.0 cvLH6Eat2yFsyy7p -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:03.897 50.0 cvLH6Eat2yFsyy7p -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:03.971 50.0 821UdmGbkEf4j -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:04.834 50.0 1cGVWH7n1QU -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:09.041 50.0 1cGVWH7n1QU -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:09.868 50.0 1cGVWH7n1QU -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:11.087 50.0 1cGVWH7n1QU -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:13.169 50.0 cvLH6Eat2yFsyy7p -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:15.443 50.0 cvLH6Eat2yFsyy7p -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:15.938 50.0 1cGVWH7n1QU -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:16.096 50.0 821UdmGbkEf4j -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:16.338 50.0 821UdmGbkEf4j -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 51 1969-12-31 16:00:00.383 51.0 821UdmGbkEf4j -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:00.882 51.0 821UdmGbkEf4j -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:05.78 51.0 821UdmGbkEf4j -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:07.406 51.0 1cGVWH7n1QU -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:07.476 51.0 cvLH6Eat2yFsyy7p -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:08.804 51.0 1cGVWH7n1QU -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:12.56 51.0 821UdmGbkEf4j -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 52 1969-12-31 16:00:00.199 52.0 821UdmGbkEf4j -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:01.196 52.0 cvLH6Eat2yFsyy7p -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:06.246 52.0 cvLH6Eat2yFsyy7p -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:06.556 52.0 821UdmGbkEf4j -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:07.428 52.0 1cGVWH7n1QU -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:09.665 52.0 1cGVWH7n1QU -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:10.592 52.0 821UdmGbkEf4j -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:12.652 52.0 821UdmGbkEf4j -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:13.72 52.0 cvLH6Eat2yFsyy7p -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:15.483 52.0 1cGVWH7n1QU -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 53 1969-12-31 16:00:00.51 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:00.751 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:02.611 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:03.259 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:03.287 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:04.181 53.0 cvLH6Eat2yFsyy7p -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:05.393 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:05.897 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:06.654 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:07.077 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:07.35 53.0 cvLH6Eat2yFsyy7p -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:08.79 53.0 cvLH6Eat2yFsyy7p -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:09.926 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:10.607 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:11.254 53.0 cvLH6Eat2yFsyy7p -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:11.362 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:14.694 53.0 cvLH6Eat2yFsyy7p -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:16.36 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 54 1969-12-31 16:00:04.268 54.0 821UdmGbkEf4j -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:05.961 54.0 cvLH6Eat2yFsyy7p -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:06.995 54.0 821UdmGbkEf4j -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:10.663 54.0 821UdmGbkEf4j -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:11.256 54.0 1cGVWH7n1QU -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:13.953 54.0 cvLH6Eat2yFsyy7p -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:16.368 54.0 cvLH6Eat2yFsyy7p -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:16.558 54.0 1cGVWH7n1QU -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 55 1969-12-31 16:00:00.672 55.0 821UdmGbkEf4j -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:08.465 55.0 cvLH6Eat2yFsyy7p -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:08.748 55.0 821UdmGbkEf4j -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:11.504 55.0 1cGVWH7n1QU -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:12.871 55.0 1cGVWH7n1QU -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:13.67 55.0 1cGVWH7n1QU -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:15.013 55.0 821UdmGbkEf4j -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:15.678 55.0 cvLH6Eat2yFsyy7p -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 56 1969-12-31 16:00:00.192 56.0 821UdmGbkEf4j -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:00.239 56.0 cvLH6Eat2yFsyy7p -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:00.762 56.0 cvLH6Eat2yFsyy7p -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:01.556 56.0 cvLH6Eat2yFsyy7p -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:04.286 56.0 1cGVWH7n1QU -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:05 56.0 821UdmGbkEf4j -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:05.898 56.0 821UdmGbkEf4j -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:08.683 56.0 821UdmGbkEf4j -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:13.259 56.0 cvLH6Eat2yFsyy7p -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:14.785 56.0 821UdmGbkEf4j -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 57 1969-12-31 16:00:00.002 57.0 1cGVWH7n1QU -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:00.646 57.0 821UdmGbkEf4j -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:00.652 57.0 821UdmGbkEf4j -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:01.967 57.0 cvLH6Eat2yFsyy7p -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:07.705 57.0 cvLH6Eat2yFsyy7p -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:08.429 57.0 1cGVWH7n1QU -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:08.837 57.0 821UdmGbkEf4j -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:11.286 57.0 821UdmGbkEf4j -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:11.699 57.0 1cGVWH7n1QU -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:13.71 57.0 cvLH6Eat2yFsyy7p -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:14.889 57.0 1cGVWH7n1QU -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:16.278 57.0 821UdmGbkEf4j -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 58 1969-12-31 16:00:01.049 58.0 cvLH6Eat2yFsyy7p -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:02.09 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:02.777 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:03.855 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:04.612 58.0 cvLH6Eat2yFsyy7p -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:07.29 58.0 cvLH6Eat2yFsyy7p -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:07.377 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:08.031 58.0 821UdmGbkEf4j -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:11.54 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:14.693 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 59 1969-12-31 16:00:00.373 59.0 cvLH6Eat2yFsyy7p -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:00.636 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:01.126 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:01.736 59.0 cvLH6Eat2yFsyy7p -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:02.157 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:04.322 59.0 cvLH6Eat2yFsyy7p -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:04.432 59.0 1cGVWH7n1QU -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:06.7 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:07.546 59.0 1cGVWH7n1QU -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:10.47 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:10.903 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:16.24 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 60 1969-12-31 16:00:00.865 60.0 821UdmGbkEf4j -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:01.679 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:02.089 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:02.827 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:02.958 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:04.44 60.0 821UdmGbkEf4j -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:04.488 60.0 821UdmGbkEf4j -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:05.963 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:05.986 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:07.642 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:08.462 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:10.065 60.0 821UdmGbkEf4j -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:12.437 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 61 1969-12-31 16:00:02.617 61.0 cvLH6Eat2yFsyy7p -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:02.688 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:03.992 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:05.172 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:05.391 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:05.394 61.0 cvLH6Eat2yFsyy7p -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:07.514 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:07.974 61.0 cvLH6Eat2yFsyy7p -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:08.3 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:11.737 61.0 cvLH6Eat2yFsyy7p -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:12.397 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:13.741 61.0 821UdmGbkEf4j -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:15.101 61.0 821UdmGbkEf4j -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:15.673 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 62 1969-12-31 16:00:01.674 62.0 cvLH6Eat2yFsyy7p -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:01.936 62.0 1cGVWH7n1QU -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:02.922 62.0 821UdmGbkEf4j -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:06.409 62.0 1cGVWH7n1QU -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:08.785 62.0 cvLH6Eat2yFsyy7p -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:09.442 62.0 821UdmGbkEf4j -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:09.455 62.0 821UdmGbkEf4j -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:09.659 62.0 821UdmGbkEf4j -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:10.845 62.0 821UdmGbkEf4j -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:11.073 62.0 1cGVWH7n1QU -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 +PREHOOK: query: -- double compare timestamp +EXPLAIN +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > -1.388) + AND ((ctimestamp2 != -1.3359999999999999) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +PREHOOK: type: QUERY +POSTHOOK: query: -- double compare timestamp +EXPLAIN +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > -1.388) + AND ((ctimestamp2 != -1.3359999999999999) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((cfloat < 3569.0) and ((10.175 >= cdouble) and (cboolean1 <> 1))) or ((ctimestamp1 > -1.388) and ((ctimestamp2 <> -1.3359999999999999) and (ctinyint < 9763215.5639)))) (type: boolean) + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cboolean1 (type: boolean), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cfloat (type: float), cstring1 (type: string) + outputColumnNames: cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(ctinyint), sum(cfloat), stddev_pop(cfloat), stddev_pop(ctinyint), max(cfloat), min(ctinyint) + keys: cboolean1 (type: boolean), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cfloat (type: float), cstring1 (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string) + sort order: +++++ + Map-reduce partition columns: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string) + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + value expressions: _col5 (type: tinyint), _col6 (type: double), _col7 (type: struct), _col8 (type: struct), _col9 (type: float), _col10 (type: tinyint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0), sum(VALUE._col1), stddev_pop(VALUE._col2), stddev_pop(VALUE._col3), max(VALUE._col4), min(VALUE._col5) + keys: KEY._col0 (type: boolean), KEY._col1 (type: tinyint), KEY._col2 (type: timestamp), KEY._col3 (type: float), KEY._col4 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string), (- _col1) (type: tinyint), _col5 (type: tinyint), ((- _col1) + _col5) (type: tinyint), _col6 (type: double), (_col6 * ((- _col1) + _col5)) (type: double), (- _col6) (type: double), (79.553 * _col3) (type: double), _col7 (type: double), (- _col6) (type: double), _col8 (type: double), (((- _col1) + _col5) - 10.175) (type: double), (- (- _col6)) (type: double), (-26.28 / (- (- _col6))) (type: double), _col9 (type: float), ((_col6 * ((- _col1) + _col5)) / _col1) (type: double), _col10 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 40 + Statistics: Num rows: 40 Data size: 1200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 40 Data size: 1200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 40 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > -1.388) + AND ((ctimestamp2 != -1.3359999999999999) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > -1.388) + AND ((ctimestamp2 != -1.3359999999999999) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL -64 1969-12-31 16:00:00.199 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:00.29 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:01.785 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:03.944 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:05.997 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:10.858 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:11.912 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:12.339 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:13.274 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -63 1969-12-31 16:00:01.843 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:03.552 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:06.852 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:07.375 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:10.205 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:11.946 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:12.188 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:15.436 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -62 1969-12-31 16:00:00.037 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:01.22 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:01.515 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:01.734 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:02.373 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:03.85 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:08.198 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:09.025 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:09.889 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:10.069 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:10.225 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:10.485 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:12.388 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:12.591 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:14.154 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:14.247 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:14.517 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:14.965 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -61 1969-12-31 16:00:00.142 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 +NULL -61 1969-12-31 16:00:02.698 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 +NULL -61 1969-12-31 16:00:03.049 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 +NULL -61 1969-12-31 16:00:04.165 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 +NULL -61 1969-12-31 16:00:04.977 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_7.q.out b/ql/src/test/results/clientpositive/tez/vectorization_7.q.out new file mode 100644 index 000000000000..6c0b27faec09 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_7.q.out @@ -0,0 +1,342 @@ +PREHOOK: query: EXPLAIN +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > -15) + AND (3569 >= cdouble))))) +LIMIT 25 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > -15) + AND (3569 >= cdouble))))) +LIMIT 25 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((ctinyint <> 0) and ((ctimestamp1 <= 0) or ((ctinyint = cint) or (cstring2 like 'ss')))) and ((988888.0 < cdouble) or ((ctimestamp2 > -15) and (3569.0 >= cdouble)))) (type: boolean) + Statistics: Num rows: 7281 Data size: 223523 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cboolean1 (type: boolean), cbigint (type: bigint), csmallint (type: smallint), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cstring1 (type: string), (cbigint + cbigint) (type: bigint), (csmallint % -257) (type: int), (- csmallint) (type: smallint), (- ctinyint) (type: tinyint), ((- ctinyint) + 17) (type: int), (cbigint * (- csmallint)) (type: bigint), (cint % csmallint) (type: int), (- ctinyint) (type: tinyint), ((- ctinyint) % ctinyint) (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14 + Statistics: Num rows: 7281 Data size: 223523 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 25 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > -15) + AND (3569 >= cdouble))))) +LIMIT 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > -15) + AND (3569 >= cdouble))))) +LIMIT 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +true NULL -13326 -50 1969-12-31 15:59:46.674 cvLH6Eat2yFsyy7p NULL -219 13326 50 67 NULL 12281 50 0 +true NULL -15813 -28 1969-12-31 15:59:55.787 cvLH6Eat2yFsyy7p NULL -136 15813 28 45 NULL 1055 28 0 +true NULL -9566 31 1969-12-31 15:59:44.187 cvLH6Eat2yFsyy7p NULL -57 9566 -31 -14 NULL 3701 -31 0 +true NULL -15431 -11 1969-12-31 15:59:52.176 cvLH6Eat2yFsyy7p NULL -11 15431 11 28 NULL 7586 11 0 +true NULL -15549 61 1969-12-31 15:59:44.569 cvLH6Eat2yFsyy7p NULL -129 15549 -61 -44 NULL 8708 -61 0 +true NULL 10 -62 1969-12-31 15:59:52.265 cvLH6Eat2yFsyy7p NULL 10 -10 62 79 NULL 7 62 0 +true NULL -10909 39 1969-12-31 15:59:58.276 cvLH6Eat2yFsyy7p NULL -115 10909 -39 -22 NULL 4626 -39 0 +true NULL -10154 -23 1969-12-31 15:59:44.088 cvLH6Eat2yFsyy7p NULL -131 10154 23 40 NULL 8913 23 0 +true NULL -7449 -55 1969-12-31 15:59:49.846 cvLH6Eat2yFsyy7p NULL -253 7449 55 72 NULL 5870 55 0 +true NULL 163 -24 1969-12-31 15:59:55.51 cvLH6Eat2yFsyy7p NULL 163 -163 24 41 NULL 95 24 0 +true NULL -14739 4 1969-12-31 15:59:55.188 cvLH6Eat2yFsyy7p NULL -90 14739 -4 13 NULL 8966 -4 0 +true NULL -11492 -57 1969-12-31 15:59:45.261 cvLH6Eat2yFsyy7p NULL -184 11492 57 74 NULL 6195 57 0 +true NULL -6583 38 1969-12-31 15:59:53.078 cvLH6Eat2yFsyy7p NULL -158 6583 -38 -21 NULL 5446 -38 0 +true NULL -10268 -54 1969-12-31 15:59:53.417 cvLH6Eat2yFsyy7p NULL -245 10268 54 71 NULL 10003 54 0 +true NULL -15790 51 1969-12-31 15:59:49.871 cvLH6Eat2yFsyy7p NULL -113 15790 -51 -34 NULL 11887 -51 0 +true NULL -3045 18 1969-12-31 15:59:47.829 cvLH6Eat2yFsyy7p NULL -218 3045 -18 -1 NULL 1937 -18 0 +true NULL -814 30 1969-12-31 15:59:56.955 cvLH6Eat2yFsyy7p NULL -43 814 -30 -13 NULL 497 -30 0 +true NULL -7353 -55 1969-12-31 15:59:44.941 cvLH6Eat2yFsyy7p NULL -157 7353 55 72 NULL 1127 55 0 +true NULL -4463 -40 1969-12-31 15:59:52.647 cvLH6Eat2yFsyy7p NULL -94 4463 40 57 NULL 3992 40 0 +true NULL 3168 -21 1969-12-31 15:59:56.834 cvLH6Eat2yFsyy7p NULL 84 -3168 21 38 NULL 1487 21 0 +true NULL -3419 -53 1969-12-31 15:59:46.771 cvLH6Eat2yFsyy7p NULL -78 3419 53 70 NULL 1814 53 0 +true NULL -4255 34 1969-12-31 15:59:56.581 cvLH6Eat2yFsyy7p NULL -143 4255 -34 -17 NULL 4197 -34 0 +true NULL -7183 -21 1969-12-31 15:59:45.035 cvLH6Eat2yFsyy7p NULL -244 7183 21 38 NULL 2444 21 0 +true NULL 1475 43 1969-12-31 15:59:56.988 cvLH6Eat2yFsyy7p NULL 190 -1475 -43 -26 NULL 967 -43 0 +true NULL 37 41 1969-12-31 15:59:52.817 cvLH6Eat2yFsyy7p NULL 37 -37 -41 -24 NULL 16 -41 0 +PREHOOK: query: -- double compare timestamp +EXPLAIN +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0.0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > 7.6850000000000005) + AND (3569 >= cdouble))))) +LIMIT 25 +PREHOOK: type: QUERY +POSTHOOK: query: -- double compare timestamp +EXPLAIN +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0.0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > 7.6850000000000005) + AND (3569 >= cdouble))))) +LIMIT 25 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((ctinyint <> 0) and ((ctimestamp1 <= 0.0) or ((ctinyint = cint) or (cstring2 like 'ss')))) and ((988888.0 < cdouble) or ((ctimestamp2 > 7.6850000000000005) and (3569.0 >= cdouble)))) (type: boolean) + Statistics: Num rows: 7281 Data size: 223523 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cboolean1 (type: boolean), cbigint (type: bigint), csmallint (type: smallint), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cstring1 (type: string), (cbigint + cbigint) (type: bigint), (csmallint % -257) (type: int), (- csmallint) (type: smallint), (- ctinyint) (type: tinyint), ((- ctinyint) + 17) (type: int), (cbigint * (- csmallint)) (type: bigint), (cint % csmallint) (type: int), (- ctinyint) (type: tinyint), ((- ctinyint) % ctinyint) (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14 + Statistics: Num rows: 7281 Data size: 223523 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 25 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0.0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > 7.6850000000000005) + AND (3569 >= cdouble))))) +LIMIT 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0.0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > 7.6850000000000005) + AND (3569 >= cdouble))))) +LIMIT 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +true NULL -13326 -50 1969-12-31 15:59:46.674 cvLH6Eat2yFsyy7p NULL -219 13326 50 67 NULL 12281 50 0 +true NULL -15431 -11 1969-12-31 15:59:52.176 cvLH6Eat2yFsyy7p NULL -11 15431 11 28 NULL 7586 11 0 +true NULL -10909 39 1969-12-31 15:59:58.276 cvLH6Eat2yFsyy7p NULL -115 10909 -39 -22 NULL 4626 -39 0 +true NULL -14739 4 1969-12-31 15:59:55.188 cvLH6Eat2yFsyy7p NULL -90 14739 -4 13 NULL 8966 -4 0 +true NULL -814 30 1969-12-31 15:59:56.955 cvLH6Eat2yFsyy7p NULL -43 814 -30 -13 NULL 497 -30 0 +true NULL 3168 -21 1969-12-31 15:59:56.834 cvLH6Eat2yFsyy7p NULL 84 -3168 21 38 NULL 1487 21 0 +true NULL -1027 -4 1969-12-31 15:59:46.628 cvLH6Eat2yFsyy7p NULL -256 1027 4 21 NULL 514 4 0 +true NULL -6294 -7 1969-12-31 15:59:58.973 cvLH6Eat2yFsyy7p NULL -126 6294 7 24 NULL 2411 7 0 +true NULL -9139 42 1969-12-31 15:59:57.532 cvLH6Eat2yFsyy7p NULL -144 9139 -42 -25 NULL 8119 -42 0 +true NULL -15478 7 1969-12-31 15:59:56.809 cvLH6Eat2yFsyy7p NULL -58 15478 -7 10 NULL 7501 -7 0 +true NULL -7151 -31 1969-12-31 15:59:48.202 cvLH6Eat2yFsyy7p NULL -212 7151 31 48 NULL 4357 31 0 +true NULL -9098 -57 1969-12-31 15:59:52.146 cvLH6Eat2yFsyy7p NULL -103 9098 57 74 NULL 4653 57 0 +true NULL 3519 39 1969-12-31 15:59:45.43 cvLH6Eat2yFsyy7p NULL 178 -3519 -39 -22 NULL 2081 -39 0 +true NULL -9837 -7 1969-12-31 15:59:52.346 cvLH6Eat2yFsyy7p NULL -71 9837 7 24 NULL 2594 7 0 +true NULL 1268 -3 1969-12-31 15:59:50.163 cvLH6Eat2yFsyy7p NULL 240 -1268 3 20 NULL 667 3 0 +true NULL -3110 6 1969-12-31 15:59:58.248 cvLH6Eat2yFsyy7p NULL -26 3110 -6 11 NULL 2707 -6 0 +true NULL -5588 4 1969-12-31 15:59:52.982 cvLH6Eat2yFsyy7p NULL -191 5588 -4 13 NULL 4963 -4 0 +true NULL -14375 -60 1969-12-31 15:59:46.425 cvLH6Eat2yFsyy7p NULL -240 14375 60 77 NULL 9142 60 0 +true NULL -15659 -11 1969-12-31 15:59:48.466 cvLH6Eat2yFsyy7p NULL -239 15659 11 28 NULL 12199 11 0 +true NULL -14433 -7 1969-12-31 15:59:48.736 cvLH6Eat2yFsyy7p NULL -41 14433 7 24 NULL 12740 7 0 +true NULL -11497 -13 1969-12-31 15:59:45.567 cvLH6Eat2yFsyy7p NULL -189 11497 13 30 NULL 6180 13 0 +true NULL -6770 7 1969-12-31 15:59:58.755 cvLH6Eat2yFsyy7p NULL -88 6770 -7 10 NULL 867 -7 0 +true NULL -180 -30 1969-12-31 15:59:48.503 cvLH6Eat2yFsyy7p NULL -180 180 30 47 NULL 47 30 0 +true NULL -8841 -48 1969-12-31 15:59:57.746 cvLH6Eat2yFsyy7p NULL -103 8841 48 65 NULL 2105 48 0 +true NULL 838 -48 1969-12-31 15:59:46.43 cvLH6Eat2yFsyy7p NULL 67 -838 48 65 NULL 625 48 0 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_8.q.out b/ql/src/test/results/clientpositive/tez/vectorization_8.q.out new file mode 100644 index 000000000000..0238f259a5e3 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_8.q.out @@ -0,0 +1,316 @@ +PREHOOK: query: EXPLAIN +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 10) + AND (ctimestamp2 != 16))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 10) + AND (ctimestamp2 != 16))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((cstring2 is not null and ((ctimestamp1 <= 10) and (ctimestamp2 <> 16))) or ((cfloat < -6432) or (cboolean1 is not null and (cdouble = 988888.0)))) (type: boolean) + Statistics: Num rows: 9216 Data size: 282927 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ctimestamp1 (type: timestamp), cdouble (type: double), cboolean1 (type: boolean), cstring1 (type: string), cfloat (type: float), (- cdouble) (type: double), (-5638.15 - cdouble) (type: double), (cdouble * -257) (type: double), (cint + cfloat) (type: float), ((- cdouble) + cbigint) (type: double), (- cdouble) (type: double), (-1.389 - cfloat) (type: double), (- cfloat) (type: float), ((-5638.15 - cdouble) + (cint + cfloat)) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13 + Statistics: Num rows: 9216 Data size: 282927 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 10) + AND (ctimestamp2 != 16))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 10) + AND (ctimestamp2 != 16))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +1969-12-31 16:00:05.478 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL -1.090413913E9 200.0 -39.389 -38.0 NULL +1969-12-31 15:59:49.567 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL 1.576772582E9 200.0 -39.389 -38.0 NULL +1969-12-31 16:00:07.648 -200.0 NULL NULL 3.0 200.0 -5438.15 51400.0 NULL -1.438142292E9 200.0 -4.389 -3.0 NULL +1969-12-31 15:59:54.739 -200.0 NULL NULL 31.0 200.0 -5438.15 51400.0 NULL -2.45476531E8 200.0 -32.389 -31.0 NULL +1969-12-31 16:00:03.248 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL -1.818374453E9 200.0 8.611 10.0 NULL +1969-12-31 15:59:46.007 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL -1.236645108E9 200.0 -9.389 -8.0 NULL +1969-12-31 16:00:06.852 -200.0 NULL NULL -63.0 200.0 -5438.15 51400.0 NULL 1.927856572E9 200.0 61.611 63.0 NULL +1969-12-31 15:59:44.842 -200.0 NULL NULL -30.0 200.0 -5438.15 51400.0 NULL -8.15880983E8 200.0 28.611 30.0 NULL +1969-12-31 16:00:00.958 -200.0 NULL NULL -39.0 200.0 -5438.15 51400.0 NULL 9.44478114E8 200.0 37.611 39.0 NULL +1969-12-31 15:59:54.328 -200.0 NULL NULL -39.0 200.0 -5438.15 51400.0 NULL -1.74772438E9 200.0 37.611 39.0 NULL +1969-12-31 15:59:44.55 -200.0 NULL NULL 24.0 200.0 -5438.15 51400.0 NULL -4.99521157E8 200.0 -25.389 -24.0 NULL +1969-12-31 16:00:02.208 -200.0 NULL NULL 16.0 200.0 -5438.15 51400.0 NULL 1.043214222E9 200.0 -17.389 -16.0 NULL +1969-12-31 15:59:58.305 -200.0 NULL NULL -12.0 200.0 -5438.15 51400.0 NULL -9.97940606E8 200.0 10.611 12.0 NULL +1969-12-31 16:00:00.911 -200.0 NULL NULL 12.0 200.0 -5438.15 51400.0 NULL 1.153060648E9 200.0 -13.389 -12.0 NULL +1969-12-31 16:00:03.139 -200.0 NULL NULL 10.0 200.0 -5438.15 51400.0 NULL -1.709273652E9 200.0 -11.389 -10.0 NULL +1969-12-31 15:59:54.199 -200.0 NULL NULL 55.0 200.0 -5438.15 51400.0 NULL -1.151590935E9 200.0 -56.389 -55.0 NULL +1969-12-31 15:59:54.016 -200.0 NULL NULL 46.0 200.0 -5438.15 51400.0 NULL -5.17349102E8 200.0 -47.389 -46.0 NULL +1969-12-31 15:59:57.847 -200.0 NULL NULL 50.0 200.0 -5438.15 51400.0 NULL 1.819421586E9 200.0 -51.389 -50.0 NULL +1969-12-31 15:59:49.764 -200.0 NULL NULL -20.0 200.0 -5438.15 51400.0 NULL 1.115401341E9 200.0 18.611 20.0 NULL +1969-12-31 15:59:51.417 -200.0 NULL NULL -17.0 200.0 -5438.15 51400.0 NULL 1.806593848E9 200.0 15.611 17.0 NULL +PREHOOK: query: -- double compare timestamp +EXPLAIN +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 12.503) + AND (ctimestamp2 != 11.998))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +PREHOOK: type: QUERY +POSTHOOK: query: -- double compare timestamp +EXPLAIN +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 12.503) + AND (ctimestamp2 != 11.998))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((cstring2 is not null and ((ctimestamp1 <= 12.503) and (ctimestamp2 <> 11.998))) or ((cfloat < -6432) or (cboolean1 is not null and (cdouble = 988888.0)))) (type: boolean) + Statistics: Num rows: 9216 Data size: 282927 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ctimestamp1 (type: timestamp), cdouble (type: double), cboolean1 (type: boolean), cstring1 (type: string), cfloat (type: float), (- cdouble) (type: double), (-5638.15 - cdouble) (type: double), (cdouble * -257) (type: double), (cint + cfloat) (type: float), ((- cdouble) + cbigint) (type: double), (- cdouble) (type: double), (-1.389 - cfloat) (type: double), (- cfloat) (type: float), ((-5638.15 - cdouble) + (cint + cfloat)) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13 + Statistics: Num rows: 9216 Data size: 282927 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 12.503) + AND (ctimestamp2 != 11.998))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 12.503) + AND (ctimestamp2 != 11.998))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +1969-12-31 16:00:05.478 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL -1.090413913E9 200.0 -39.389 -38.0 NULL +1969-12-31 15:59:49.567 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL 1.576772582E9 200.0 -39.389 -38.0 NULL +1969-12-31 16:00:07.648 -200.0 NULL NULL 3.0 200.0 -5438.15 51400.0 NULL -1.438142292E9 200.0 -4.389 -3.0 NULL +1969-12-31 15:59:54.739 -200.0 NULL NULL 31.0 200.0 -5438.15 51400.0 NULL -2.45476531E8 200.0 -32.389 -31.0 NULL +1969-12-31 16:00:03.248 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL -1.818374453E9 200.0 8.611 10.0 NULL +1969-12-31 15:59:46.007 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL -1.236645108E9 200.0 -9.389 -8.0 NULL +1969-12-31 16:00:06.852 -200.0 NULL NULL -63.0 200.0 -5438.15 51400.0 NULL 1.927856572E9 200.0 61.611 63.0 NULL +1969-12-31 15:59:44.842 -200.0 NULL NULL -30.0 200.0 -5438.15 51400.0 NULL -8.15880983E8 200.0 28.611 30.0 NULL +1969-12-31 16:00:00.958 -200.0 NULL NULL -39.0 200.0 -5438.15 51400.0 NULL 9.44478114E8 200.0 37.611 39.0 NULL +1969-12-31 15:59:54.328 -200.0 NULL NULL -39.0 200.0 -5438.15 51400.0 NULL -1.74772438E9 200.0 37.611 39.0 NULL +1969-12-31 15:59:44.55 -200.0 NULL NULL 24.0 200.0 -5438.15 51400.0 NULL -4.99521157E8 200.0 -25.389 -24.0 NULL +1969-12-31 16:00:11.236 -200.0 NULL NULL -28.0 200.0 -5438.15 51400.0 NULL -4.95166106E8 200.0 26.611 28.0 NULL +1969-12-31 16:00:10.436 -200.0 NULL NULL 22.0 200.0 -5438.15 51400.0 NULL -9.98574107E8 200.0 -23.389 -22.0 NULL +1969-12-31 16:00:02.208 -200.0 NULL NULL 16.0 200.0 -5438.15 51400.0 NULL 1.043214222E9 200.0 -17.389 -16.0 NULL +1969-12-31 15:59:58.305 -200.0 NULL NULL -12.0 200.0 -5438.15 51400.0 NULL -9.97940606E8 200.0 10.611 12.0 NULL +1969-12-31 16:00:00.911 -200.0 NULL NULL 12.0 200.0 -5438.15 51400.0 NULL 1.153060648E9 200.0 -13.389 -12.0 NULL +1969-12-31 16:00:03.139 -200.0 NULL NULL 10.0 200.0 -5438.15 51400.0 NULL -1.709273652E9 200.0 -11.389 -10.0 NULL +1969-12-31 15:59:54.199 -200.0 NULL NULL 55.0 200.0 -5438.15 51400.0 NULL -1.151590935E9 200.0 -56.389 -55.0 NULL +1969-12-31 15:59:54.016 -200.0 NULL NULL 46.0 200.0 -5438.15 51400.0 NULL -5.17349102E8 200.0 -47.389 -46.0 NULL +1969-12-31 15:59:57.847 -200.0 NULL NULL 50.0 200.0 -5438.15 51400.0 NULL 1.819421586E9 200.0 -51.389 -50.0 NULL diff --git a/ql/src/test/results/clientpositive/tez/vectorization_short_regress.q.out b/ql/src/test/results/clientpositive/tez/vectorization_short_regress.q.out index 3c1a99f6204a..aa477cd97d35 100644 --- a/ql/src/test/results/clientpositive/tez/vectorization_short_regress.q.out +++ b/ql/src/test/results/clientpositive/tez/vectorization_short_regress.q.out @@ -57,7 +57,7 @@ EXPLAIN SELECT AVG(cint), FROM alltypesorc WHERE ((762 = cbigint) OR ((csmallint < cfloat) - AND ((ctimestamp2 > -10669) + AND ((ctimestamp2 > -5) AND (cdouble != cint))) OR (cstring1 = 'a') OR ((cbigint <= -1.389) @@ -123,7 +123,7 @@ EXPLAIN SELECT AVG(cint), FROM alltypesorc WHERE ((762 = cbigint) OR ((csmallint < cfloat) - AND ((ctimestamp2 > -10669) + AND ((ctimestamp2 > -5) AND (cdouble != cint))) OR (cstring1 = 'a') OR ((cbigint <= -1.389) @@ -148,7 +148,7 @@ STAGE PLANS: alias: alltypesorc Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((762 = cbigint) or ((csmallint < cfloat) and ((ctimestamp2 > -10669) and (cdouble <> cint)))) or (cstring1 = 'a')) or ((cbigint <= -1.389) and ((cstring2 <> 'a') and ((79.553 <> cint) and (cboolean2 <> cboolean1))))) (type: boolean) + predicate: ((((762 = cbigint) or ((csmallint < cfloat) and ((ctimestamp2 > -5) and (cdouble <> cint)))) or (cstring1 = 'a')) or ((cbigint <= -1.389) and ((cstring2 <> 'a') and ((79.553 <> cint) and (cboolean2 <> cboolean1))))) (type: boolean) Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: cint (type: int), cdouble (type: double), csmallint (type: smallint), cfloat (type: float), ctinyint (type: tinyint) @@ -218,7 +218,7 @@ PREHOOK: query: SELECT AVG(cint), FROM alltypesorc WHERE ((762 = cbigint) OR ((csmallint < cfloat) - AND ((ctimestamp2 > -10669) + AND ((ctimestamp2 > -5) AND (cdouble != cint))) OR (cstring1 = 'a') OR ((cbigint <= -1.389) @@ -256,7 +256,7 @@ POSTHOOK: query: SELECT AVG(cint), FROM alltypesorc WHERE ((762 = cbigint) OR ((csmallint < cfloat) - AND ((ctimestamp2 > -10669) + AND ((ctimestamp2 > -5) AND (cdouble != cint))) OR (cstring1 = 'a') OR ((cbigint <= -1.389) @@ -266,7 +266,7 @@ WHERE ((762 = cbigint) POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### -1.3811354728837386E8 1.3810981928837386E8 -1.3810981928837386E8 1.3810981928837386E8 1.9074322183867284E16 -7194110.964000001 -1.3811354728837386E8 5.591531911809615E8 2.6343511898621314E24 8744.962036962406 -5.591531911809615E8 4.2104337189258766E8 2.35427745019332736E17 3.1277112522199501E17 -6.505246065861778 -3.1277112522199501E17 3.1277112522199501E17 993167.3022752424 5.592594435697935E8 -993167.3022752424 -19.198139697803782 -64 1858 -6.444030109869978E-5 19.198139697803782 +1.6000018929276082E8 1.5999646129276082E8 -1.5999646129276082E8 1.5999646129276082E8 2.5598867626205912E16 -8706342.964000002 -1.6000018929276082E8 5.481251832900256E8 4.095728233294762E24 8549.657499338187 -5.481251832900256E8 3.8812872199726474E8 2.12743126884874112E17 3.0054786945575034E17 -5.700752675298234 -3.0054786945575034E17 3.0054786945575034E17 973579.3664121237 5.48222463472403E8 -973579.3664121237 -18.377427808018613 -64 2044 -6.573680812059066E-5 18.377427808018613 PREHOOK: query: -- TargetTypeClasses: Long, Bool, Double, String, Timestamp -- Functions: Max, VarP, StDevP, Avg, Min, StDev, Var -- ArithmeticOps: Divide, Multiply, Remainder, Subtract @@ -874,6 +874,7 @@ WHERE (((cstring1 RLIKE 'a.*') AND (cfloat >= cint)) OR ((cint < cbigint) AND (ctinyint > cbigint))) +LIMIT 50 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: Timestamp, String, Long, Double, Bool -- Functions: Max, Avg, Min, Var, StDev, Count, StDevP, Sum @@ -913,23 +914,46 @@ WHERE (((cstring1 RLIKE 'a.*') AND (cfloat >= cint)) OR ((cint < cbigint) AND (ctinyint > cbigint))) +LIMIT 50 POSTHOOK: type: QUERY STAGE DEPENDENCIES: - Stage-0 is a root stage + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 STAGE PLANS: + Stage: Stage-1 + Tez +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((((cstring1 rlike 'a.*') and (cstring2 like '%ss%')) or ((1 <> cboolean2) and ((csmallint < 79.553) and (-257 <> ctinyint)))) or ((cdouble > ctinyint) and (cfloat >= cint))) or ((cint < cbigint) and (ctinyint > cbigint))) (type: boolean) + Statistics: Num rows: 9898 Data size: 303864 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int), cdouble (type: double), ctimestamp2 (type: timestamp), cstring1 (type: string), cboolean2 (type: boolean), ctinyint (type: tinyint), cfloat (type: float), ctimestamp1 (type: timestamp), csmallint (type: smallint), cbigint (type: bigint), (-3728 * cbigint) (type: bigint), (- cint) (type: int), (-863.257 - cint) (type: double), (- csmallint) (type: smallint), (csmallint - (- csmallint)) (type: smallint), ((csmallint - (- csmallint)) + (- csmallint)) (type: smallint), (cint / cint) (type: double), ((-863.257 - cint) - -26.28) (type: double), (- cfloat) (type: float), (cdouble * -89010) (type: double), (ctinyint / 988888) (type: double), (- ctinyint) (type: tinyint), (79.553 / ctinyint) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22 + Statistics: Num rows: 9898 Data size: 303864 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 50 + Statistics: Num rows: 50 Data size: 1500 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 50 Data size: 1500 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + Stage: Stage-0 Fetch Operator - limit: -1 + limit: 50 Processor Tree: - TableScan - alias: alltypesorc - Filter Operator - predicate: (((((cstring1 rlike 'a.*') and (cstring2 like '%ss%')) or ((1 <> cboolean2) and ((csmallint < 79.553) and (-257 <> ctinyint)))) or ((cdouble > ctinyint) and (cfloat >= cint))) or ((cint < cbigint) and (ctinyint > cbigint))) (type: boolean) - Select Operator - expressions: cint (type: int), cdouble (type: double), ctimestamp2 (type: timestamp), cstring1 (type: string), cboolean2 (type: boolean), ctinyint (type: tinyint), cfloat (type: float), ctimestamp1 (type: timestamp), csmallint (type: smallint), cbigint (type: bigint), (-3728 * cbigint) (type: bigint), (- cint) (type: int), (-863.257 - cint) (type: double), (- csmallint) (type: smallint), (csmallint - (- csmallint)) (type: smallint), ((csmallint - (- csmallint)) + (- csmallint)) (type: smallint), (cint / cint) (type: double), ((-863.257 - cint) - -26.28) (type: double), (- cfloat) (type: float), (cdouble * -89010) (type: double), (ctinyint / 988888) (type: double), (- ctinyint) (type: tinyint), (79.553 / ctinyint) (type: double) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22 - ListSink + ListSink PREHOOK: query: SELECT cint, cdouble, @@ -964,6 +988,7 @@ WHERE (((cstring1 RLIKE 'a.*') AND (cfloat >= cint)) OR ((cint < cbigint) AND (ctinyint > cbigint))) +LIMIT 50 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -1000,6 +1025,7 @@ WHERE (((cstring1 RLIKE 'a.*') AND (cfloat >= cint)) OR ((cint < cbigint) AND (ctinyint > cbigint))) +LIMIT 50 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -1053,1181 +1079,6 @@ NULL -200.0 1969-12-31 15:59:55.451 NULL false 39 39.0 1969-12-31 15:59:46.368 - NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 15:59:53.592 -200 1922447714 -7166885077792 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 16:00:13.411 -200 -915644003 3413520843184 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 NULL -200.0 1969-12-31 15:59:55.451 NULL false 16 16.0 1969-12-31 16:00:15.143 -200 -2109772858 7865233214624 NULL NULL 200 -400 -200 NULL NULL -16.0 1.7802E7 1.617978982453018E-5 -16 4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 12 12.0 1969-12-31 16:00:08.34 -200 -860934589 3209564147792 NULL NULL 200 -400 -200 NULL NULL -12.0 1.7802E7 1.2134842368397635E-5 -12 6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 24 24.0 1969-12-31 15:59:58.788 -200 805287817 -3002112981776 NULL NULL 200 -400 -200 NULL NULL -24.0 1.7802E7 2.426968473679527E-5 -24 3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:08.346 -200 -1635566862 6097393261536 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -1 -1.0 1969-12-31 15:59:57.901 -200 -250915199 935411861872 NULL NULL 200 -400 -200 NULL NULL 1.0 1.7802E7 -1.0112368640331362E-6 1 -79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -38 -38.0 1969-12-31 16:00:14.118 -200 1741347818 -6491744665504 NULL NULL 200 -400 -200 NULL NULL 38.0 1.7802E7 -3.842700083325918E-5 38 -2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -46 -46.0 1969-12-31 15:59:57.646 -200 -624367772 2327643054016 NULL NULL 200 -400 -200 NULL NULL 46.0 1.7802E7 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -59 -59.0 1969-12-31 16:00:06.777 -200 -836004666 3116625394848 NULL NULL 200 -400 -200 NULL NULL 59.0 1.7802E7 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 22 22.0 1969-12-31 16:00:12.112 -200 1395869317 -5203800813776 NULL NULL 200 -400 -200 NULL NULL -22.0 1.7802E7 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 16 16.0 1969-12-31 15:59:45.722 -200 -2069085175 7713549532400 NULL NULL 200 -400 -200 NULL NULL -16.0 1.7802E7 1.617978982453018E-5 -16 4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 46 46.0 1969-12-31 15:59:56.163 -200 -1275647301 4755613138128 NULL NULL 200 -400 -200 NULL NULL -46.0 1.7802E7 4.651689574552426E-5 -46 1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:11.15 -200 -834308521 3110302166288 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 15:59:53.06 -200 -1958596195 7301646614960 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -45 -45.0 1969-12-31 16:00:00.287 -200 -1919463631 7155760416368 NULL NULL 200 -400 -200 NULL NULL 45.0 1.7802E7 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 37 37.0 1969-12-31 15:59:58.129 -200 1838442362 -6853713125536 NULL NULL 200 -400 -200 NULL NULL -37.0 1.7802E7 3.741576396922604E-5 -37 2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -41 -41.0 1969-12-31 15:59:44.38 -200 -688353943 2566183499504 NULL NULL 200 -400 -200 NULL NULL 41.0 1.7802E7 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -44 -44.0 1969-12-31 16:00:00.835 -200 1814766708 -6765450287424 NULL NULL 200 -400 -200 NULL NULL 44.0 1.7802E7 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 16:00:03.571 -200 953305450 -3553922717600 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 13 13.0 1969-12-31 16:00:03.794 -200 894634621 -3335197867088 NULL NULL 200 -400 -200 NULL NULL -13.0 1.7802E7 1.314607923243077E-5 -13 6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 19 19.0 1969-12-31 16:00:10.723 -200 1604152041 -5980278808848 NULL NULL 200 -400 -200 NULL NULL -19.0 1.7802E7 1.921350041662959E-5 -19 4.187 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 62 62.0 1969-12-31 15:59:46.137 -200 -1332297900 4966806571200 NULL NULL 200 -400 -200 NULL NULL -62.0 1.7802E7 6.269668557005445E-5 -62 1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -46 -46.0 1969-12-31 15:59:49.331 -200 -2034715106 7585417915168 NULL NULL 200 -400 -200 NULL NULL 46.0 1.7802E7 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -25 -25.0 1969-12-31 15:59:48.372 -200 1516831554 -5654748033312 NULL NULL 200 -400 -200 NULL NULL 25.0 1.7802E7 -2.5280921600828406E-5 25 -3.18212 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 39 39.0 1969-12-31 16:00:00.395 -200 -899658844 3353928170432 NULL NULL 200 -400 -200 NULL NULL -39.0 1.7802E7 3.9438237697292314E-5 -39 2.039820512820513 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 43 43.0 1969-12-31 16:00:01.097 -200 -781919048 2914994210944 NULL NULL 200 -400 -200 NULL NULL -43.0 1.7802E7 4.3483185153424856E-5 -43 1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -42 -42.0 1969-12-31 15:59:54.349 -200 -390050457 1454108103696 NULL NULL 200 -400 -200 NULL NULL 42.0 1.7802E7 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 15:59:47.952 -200 -449401470 1675368680160 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 10 10.0 1969-12-31 16:00:07.365 -200 120165080 -447975418240 NULL NULL 200 -400 -200 NULL NULL -10.0 1.7802E7 1.0112368640331362E-5 -10 7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 15:59:47.828 -200 -715660733 2667983212624 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 16:00:00.951 -200 454239730 -1693405713440 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 15:59:48.367 -200 1709812289 -6374180213392 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -57 -57.0 1969-12-31 16:00:02.707 -200 1382057278 -5152309532384 NULL NULL 200 -400 -200 NULL NULL 57.0 1.7802E7 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -25 -25.0 1969-12-31 15:59:49.293 -200 -776497113 2894781237264 NULL NULL 200 -400 -200 NULL NULL 25.0 1.7802E7 -2.5280921600828406E-5 25 -3.18212 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 16:00:15.609 -200 -1775354211 6618520498608 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -51 -51.0 1969-12-31 16:00:12.494 -200 -413063757 1539901686096 NULL NULL 200 -400 -200 NULL NULL 51.0 1.7802E7 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:14.071 -200 -378947821 1412717476688 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 41 41.0 1969-12-31 16:00:08.408 -200 696650264 -2597112184192 NULL NULL 200 -400 -200 NULL NULL -41.0 1.7802E7 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 39 39.0 1969-12-31 16:00:07.541 -200 260798405 -972256453840 NULL NULL 200 -400 -200 NULL NULL -39.0 1.7802E7 3.9438237697292314E-5 -39 2.039820512820513 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:10.211 -200 -885770465 3302152293520 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -24 -24.0 1969-12-31 15:59:54.075 -200 191358485 -713384432080 NULL NULL 200 -400 -200 NULL NULL 24.0 1.7802E7 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 56 56.0 1969-12-31 15:59:57.56 -200 951463637 -3547056438736 NULL NULL 200 -400 -200 NULL NULL -56.0 1.7802E7 5.6629264385855625E-5 -56 1.4205892857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -21 -21.0 1969-12-31 16:00:09.182 -200 1367877440 -5099447096320 NULL NULL 200 -400 -200 NULL NULL 21.0 1.7802E7 -2.123597414469586E-5 21 -3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 58 58.0 1969-12-31 15:59:45.489 -200 1300104054 -4846787913312 NULL NULL 200 -400 -200 NULL NULL -58.0 1.7802E7 5.86517381139219E-5 -58 1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 41 41.0 1969-12-31 16:00:07.175 -200 1542568556 -5750695576768 NULL NULL 200 -400 -200 NULL NULL -41.0 1.7802E7 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -1 -1.0 1969-12-31 16:00:04.836 -200 480523197 -1791390478416 NULL NULL 200 -400 -200 NULL NULL 1.0 1.7802E7 -1.0112368640331362E-6 1 -79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 21 21.0 1969-12-31 16:00:08.048 -200 261543399 -975033791472 NULL NULL 200 -400 -200 NULL NULL -21.0 1.7802E7 2.123597414469586E-5 -21 3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -61 -61.0 1969-12-31 16:00:04.165 -200 -1313743110 4897634314080 NULL NULL 200 -400 -200 NULL NULL 61.0 1.7802E7 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 35 35.0 1969-12-31 16:00:09.892 -200 -197916286 737831914208 NULL NULL 200 -400 -200 NULL NULL -35.0 1.7802E7 3.5393290241159765E-5 -35 2.272942857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -48 -48.0 1969-12-31 15:59:55.023 -200 17520444 -65316215232 NULL NULL 200 -400 -200 NULL NULL 48.0 1.7802E7 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -14 -14.0 1969-12-31 15:59:44.457 -200 1678325085 -6256795916880 NULL NULL 200 -400 -200 NULL NULL 14.0 1.7802E7 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 54 54.0 1969-12-31 16:00:10.187 -200 829351969 -3091824140432 NULL NULL 200 -400 -200 NULL NULL -54.0 1.7802E7 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 16 16.0 1969-12-31 15:59:57.245 -200 1713760992 -6388900978176 NULL NULL 200 -400 -200 NULL NULL -16.0 1.7802E7 1.617978982453018E-5 -16 4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 53 53.0 1969-12-31 16:00:15.401 -200 -549903001 2050038387728 NULL NULL 200 -400 -200 NULL NULL -53.0 1.7802E7 5.359555379375622E-5 -53 1.501 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -58 -58.0 1969-12-31 15:59:54.484 -200 1126209929 -4198510615312 NULL NULL 200 -400 -200 NULL NULL 58.0 1.7802E7 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 15:59:53.898 -200 -1597851253 5956789471184 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 16:00:02 -200 678949554 -2531123937312 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -26 -26.0 1969-12-31 16:00:14.191 -200 1050415040 -3915947269120 NULL NULL 200 -400 -200 NULL NULL 26.0 1.7802E7 -2.629215846486154E-5 26 -3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -5 -5.0 1969-12-31 15:59:57.794 -200 205645723 -766647255344 NULL NULL 200 -400 -200 NULL NULL 5.0 1.7802E7 -5.056184320165681E-6 5 -15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 50 50.0 1969-12-31 16:00:09.364 -200 -291569870 1086972475360 NULL NULL 200 -400 -200 NULL NULL -50.0 1.7802E7 5.056184320165681E-5 -50 1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 15:59:57.543 -200 1053538728 -3927592377984 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 20 20.0 1969-12-31 15:59:55.056 -200 -1403730664 5233107915392 NULL NULL 200 -400 -200 NULL NULL -20.0 1.7802E7 2.0224737280662725E-5 -20 3.9776499999999997 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 26 26.0 1969-12-31 16:00:00.923 -200 -1387364200 5172093737600 NULL NULL 200 -400 -200 NULL NULL -26.0 1.7802E7 2.629215846486154E-5 -26 3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -49 -49.0 1969-12-31 16:00:01.458 -200 -658701811 2455640351408 NULL NULL 200 -400 -200 NULL NULL 49.0 1.7802E7 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 15:59:44.297 -200 2120344258 -7904643393824 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -58 -58.0 1969-12-31 15:59:47.24 -200 1257221099 -4686920257072 NULL NULL 200 -400 -200 NULL NULL 58.0 1.7802E7 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -14 -14.0 1969-12-31 16:00:08.704 -200 1471532162 -5485871899936 NULL NULL 200 -400 -200 NULL NULL 14.0 1.7802E7 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 45 45.0 1969-12-31 16:00:04.572 -200 612900585 -2284893380880 NULL NULL 200 -400 -200 NULL NULL -45.0 1.7802E7 4.550565888149113E-5 -45 1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -63 -63.0 1969-12-31 16:00:01.843 -200 -1999307539 7453418505392 NULL NULL 200 -400 -200 NULL NULL 63.0 1.7802E7 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:01.764 -200 -2020595716 7532780829248 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -26 -26.0 1969-12-31 15:59:50.573 -200 -1087207614 4053109984992 NULL NULL 200 -400 -200 NULL NULL 26.0 1.7802E7 -2.629215846486154E-5 26 -3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 16:00:06.3 -200 57986729 -216174525712 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 46 46.0 1969-12-31 15:59:46.028 -200 14115102 -52621100256 NULL NULL 200 -400 -200 NULL NULL -46.0 1.7802E7 4.651689574552426E-5 -46 1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 15:59:57.953 -200 -30844955 114989992240 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 6 6.0 1969-12-31 16:00:13.132 -200 883917228 -3295243425984 NULL NULL 200 -400 -200 NULL NULL -6.0 1.7802E7 6.067421184198818E-6 -6 13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 2 2.0 1969-12-31 15:59:46.893 -200 1767035977 -6587510122256 NULL NULL 200 -400 -200 NULL NULL -2.0 1.7802E7 2.0224737280662724E-6 -2 39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 16:00:10.701 -200 142612225 -531658374800 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 15:59:47.921 -200 505653702 -1885077001056 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 15:59:48.452 -200 -899919510 3354899933280 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 41 41.0 1969-12-31 16:00:09.951 -200 -1973152486 7355912467808 NULL NULL 200 -400 -200 NULL NULL -41.0 1.7802E7 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 2 2.0 1969-12-31 16:00:02.752 -200 1107543828 -4128923390784 NULL NULL 200 -400 -200 NULL NULL -2.0 1.7802E7 2.0224737280662724E-6 -2 39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 6 6.0 1969-12-31 15:59:57.568 -200 559133030 -2084447935840 NULL NULL 200 -400 -200 NULL NULL -6.0 1.7802E7 6.067421184198818E-6 -6 13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 39 39.0 1969-12-31 16:00:12.557 -200 -1811991294 6755103544032 NULL NULL 200 -400 -200 NULL NULL -39.0 1.7802E7 3.9438237697292314E-5 -39 2.039820512820513 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -33 -33.0 1969-12-31 16:00:08.046 -200 281060243 -1047792585904 NULL NULL 200 -400 -200 NULL NULL 33.0 1.7802E7 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 40 40.0 1969-12-31 15:59:55.197 -200 1958187727 -7300123846256 NULL NULL 200 -400 -200 NULL NULL -40.0 1.7802E7 4.044947456132545E-5 -40 1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -60 -60.0 1969-12-31 15:59:57.528 -200 1172431520 -4370824706560 NULL NULL 200 -400 -200 NULL NULL 60.0 1.7802E7 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -61 -61.0 1969-12-31 15:59:52.066 -200 623787602 -2325480180256 NULL NULL 200 -400 -200 NULL NULL 61.0 1.7802E7 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 45 45.0 1969-12-31 15:59:56.055 -200 -1251321575 4664926831600 NULL NULL 200 -400 -200 NULL NULL -45.0 1.7802E7 4.550565888149113E-5 -45 1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:16.07 -200 1778714378 -6631047201184 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 58 58.0 1969-12-31 16:00:11.449 -200 -2045923021 7627201022288 NULL NULL 200 -400 -200 NULL NULL -58.0 1.7802E7 5.86517381139219E-5 -58 1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 22 22.0 1969-12-31 16:00:00.621 -200 930659178 -3469497415584 NULL NULL 200 -400 -200 NULL NULL -22.0 1.7802E7 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -52 -52.0 1969-12-31 16:00:01.289 -200 -1407220579 5246118318512 NULL NULL 200 -400 -200 NULL NULL 52.0 1.7802E7 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 15:59:51.788 -200 1394914812 -5200242419136 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 56 56.0 1969-12-31 16:00:16.056 -200 -72311778 269578308384 NULL NULL 200 -400 -200 NULL NULL -56.0 1.7802E7 5.6629264385855625E-5 -56 1.4205892857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -22 -22.0 1969-12-31 16:00:12.901 -200 486263371 -1812789847088 NULL NULL 200 -400 -200 NULL NULL 22.0 1.7802E7 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 24 24.0 1969-12-31 16:00:01.369 -200 -1719521942 6410377799776 NULL NULL 200 -400 -200 NULL NULL -24.0 1.7802E7 2.426968473679527E-5 -24 3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 53 53.0 1969-12-31 15:59:45.074 -200 -1405259747 5238808336816 NULL NULL 200 -400 -200 NULL NULL -53.0 1.7802E7 5.359555379375622E-5 -53 1.501 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -44 -44.0 1969-12-31 16:00:03.357 -200 1980863657 -7384659713296 NULL NULL 200 -400 -200 NULL NULL 44.0 1.7802E7 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -16 -16.0 1969-12-31 15:59:55.043 -200 82971673 -309318396944 NULL NULL 200 -400 -200 NULL NULL 16.0 1.7802E7 -1.617978982453018E-5 16 -4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 16:00:00.019 -200 1070083402 -3989270922656 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -33 -33.0 1969-12-31 15:59:45.1 -200 -375567961 1400117358608 NULL NULL 200 -400 -200 NULL NULL 33.0 1.7802E7 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -42 -42.0 1969-12-31 16:00:09.72 -200 -75032821 279722356688 NULL NULL 200 -400 -200 NULL NULL 42.0 1.7802E7 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 21 21.0 1969-12-31 16:00:12.52 -200 -1063757589 3965688291792 NULL NULL 200 -400 -200 NULL NULL -21.0 1.7802E7 2.123597414469586E-5 -21 3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 16:00:08.234 -200 -1455850339 5427410063792 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 16:00:04.997 -200 -1166027011 4346948697008 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 16:00:00.563 -200 2051685271 -7648682690288 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -27 -27.0 1969-12-31 15:59:53.546 -200 -499602601 1862518496528 NULL NULL 200 -400 -200 NULL NULL 27.0 1.7802E7 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 22 22.0 1969-12-31 16:00:09.842 -200 615107644 -2293121296832 NULL NULL 200 -400 -200 NULL NULL -22.0 1.7802E7 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -6 -6.0 1969-12-31 16:00:05.495 -200 377656757 -1407904390096 NULL NULL 200 -400 -200 NULL NULL 6.0 1.7802E7 -6.067421184198818E-6 6 -13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -15 -15.0 1969-12-31 16:00:13.438 -200 1702277036 -6346088790208 NULL NULL 200 -400 -200 NULL NULL 15.0 1.7802E7 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 16:00:00.158 -200 -1439705824 5367223311872 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -45 -45.0 1969-12-31 16:00:02.814 -200 771908206 -2877673791968 NULL NULL 200 -400 -200 NULL NULL 45.0 1.7802E7 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 55 55.0 1969-12-31 16:00:14.709 -200 529159242 -1972705654176 NULL NULL 200 -400 -200 NULL NULL -55.0 1.7802E7 5.561802752182249E-5 -55 1.4464181818181818 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 6 6.0 1969-12-31 15:59:57.47 -200 -1169269094 4359035182432 NULL NULL 200 -400 -200 NULL NULL -6.0 1.7802E7 6.067421184198818E-6 -6 13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -55 -55.0 1969-12-31 16:00:03.737 -200 -955056279 3560449808112 NULL NULL 200 -400 -200 NULL NULL 55.0 1.7802E7 -5.561802752182249E-5 55 -1.4464181818181818 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 60 60.0 1969-12-31 15:59:47.019 -200 -2132232110 7948961306080 NULL NULL 200 -400 -200 NULL NULL -60.0 1.7802E7 6.0674211841988174E-5 -60 1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 15:59:44.922 -200 -596995850 2225600528800 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -7 -7.0 1969-12-31 16:00:15.593 -200 -337718648 1259015119744 NULL NULL 200 -400 -200 NULL NULL 7.0 1.7802E7 -7.078658048231953E-6 7 -11.364714285714285 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 45 45.0 1969-12-31 16:00:11.443 -200 -122450 456493600 NULL NULL 200 -400 -200 NULL NULL -45.0 1.7802E7 4.550565888149113E-5 -45 1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 51 51.0 1969-12-31 16:00:00.147 -200 908074420 -3385301437760 NULL NULL 200 -400 -200 NULL NULL -51.0 1.7802E7 5.157308006568995E-5 -51 1.5598627450980391 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 16:00:07.675 -200 99645480 -371478349440 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -6 -6.0 1969-12-31 15:59:47.066 -200 1361253497 -5074753036816 NULL NULL 200 -400 -200 NULL NULL 6.0 1.7802E7 -6.067421184198818E-6 6 -13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 1 1.0 1969-12-31 15:59:46.29 -200 1968356628 -7338033509184 NULL NULL 200 -400 -200 NULL NULL -1.0 1.7802E7 1.0112368640331362E-6 -1 79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 42 42.0 1969-12-31 16:00:00.11 -200 1303413031 -4859123779568 NULL NULL 200 -400 -200 NULL NULL -42.0 1.7802E7 4.247194828939172E-5 -42 1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 15:59:54.522 -200 -1369228515 5104483903920 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -61 -61.0 1969-12-31 15:59:47.034 -200 1399483216 -5217273429248 NULL NULL 200 -400 -200 NULL NULL 61.0 1.7802E7 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 11 11.0 1969-12-31 16:00:14.569 -200 -62618517 233441831376 NULL NULL 200 -400 -200 NULL NULL -11.0 1.7802E7 1.1123605504364498E-5 -11 7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:13.835 -200 -139835037 521305017936 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 21 21.0 1969-12-31 16:00:13.153 -200 1469053701 -5476632197328 NULL NULL 200 -400 -200 NULL NULL -21.0 1.7802E7 2.123597414469586E-5 -21 3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 15:59:43.952 -200 -753159604 2807779003712 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 16:00:08.882 -200 -1036428824 3863806655872 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 16:00:13.008 -200 -1570844365 5856107792720 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -32 -32.0 1969-12-31 15:59:47.69 -200 -679776976 2534208566528 NULL NULL 200 -400 -200 NULL NULL 32.0 1.7802E7 -3.235957964906036E-5 32 -2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 35 35.0 1969-12-31 16:00:08.37 -200 -258891336 965146900608 NULL NULL 200 -400 -200 NULL NULL -35.0 1.7802E7 3.5393290241159765E-5 -35 2.272942857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -26 -26.0 1969-12-31 15:59:54.866 -200 -281746185 1050349777680 NULL NULL 200 -400 -200 NULL NULL 26.0 1.7802E7 -2.629215846486154E-5 26 -3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -50 -50.0 1969-12-31 16:00:04.696 -200 -144798360 539808286080 NULL NULL 200 -400 -200 NULL NULL 50.0 1.7802E7 -5.056184320165681E-5 50 -1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -36 -36.0 1969-12-31 16:00:15.111 -200 -817680514 3048312956192 NULL NULL 200 -400 -200 NULL NULL 36.0 1.7802E7 -3.64045271051929E-5 36 -2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 15:59:58.298 -200 927442664 -3457506251392 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 15:59:44.052 -200 -74396507 277350178096 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -1 -1.0 1969-12-31 15:59:58.26 -200 -830447528 3095908384384 NULL NULL 200 -400 -200 NULL NULL 1.0 1.7802E7 -1.0112368640331362E-6 1 -79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:02.234 -200 1539182778 -5738073396384 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 24 24.0 1969-12-31 15:59:53.052 -200 821428066 -3062283830048 NULL NULL 200 -400 -200 NULL NULL -24.0 1.7802E7 2.426968473679527E-5 -24 3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 16:00:05.369 -200 1700360415 -6338943627120 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 16:00:06.256 -200 -1558297670 5809333713760 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 50 50.0 1969-12-31 16:00:04.228 -200 977627069 -3644593713232 NULL NULL 200 -400 -200 NULL NULL -50.0 1.7802E7 5.056184320165681E-5 -50 1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -59 -59.0 1969-12-31 16:00:15.296 -200 165384922 -616554989216 NULL NULL 200 -400 -200 NULL NULL 59.0 1.7802E7 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -12 -12.0 1969-12-31 16:00:15.749 -200 -1476740834 5505289829152 NULL NULL 200 -400 -200 NULL NULL 12.0 1.7802E7 -1.2134842368397635E-5 12 -6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -16 -16.0 1969-12-31 15:59:44.289 -200 -1197793261 4465373277008 NULL NULL 200 -400 -200 NULL NULL 16.0 1.7802E7 -1.617978982453018E-5 16 -4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 37 37.0 1969-12-31 15:59:51.566 -200 1829107401 -6818912390928 NULL NULL 200 -400 -200 NULL NULL -37.0 1.7802E7 3.741576396922604E-5 -37 2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 15:59:45.107 -200 1565121976 -5834774726528 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 33.0 1969-12-31 15:59:49.489 -200 1531926845 -5711023278160 NULL NULL 200 -400 -200 NULL NULL -33.0 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 8 8.0 1969-12-31 15:59:57.063 -200 1430481343 -5332834446704 NULL NULL 200 -400 -200 NULL NULL -8.0 1.7802E7 8.08989491226509E-6 -8 9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 15:59:48.017 -200 428518739 -1597517858992 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -63 -63.0 1969-12-31 16:00:10.205 -200 -997946077 3720342975056 NULL NULL 200 -400 -200 NULL NULL 63.0 1.7802E7 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 3 3.0 1969-12-31 16:00:00.074 -200 162573978 -606075789984 NULL NULL 200 -400 -200 NULL NULL -3.0 1.7802E7 3.033710592099409E-6 -3 26.517666666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -31 -31.0 1969-12-31 15:59:48.152 -200 -1690447990 6301990106720 NULL NULL 200 -400 -200 NULL NULL 31.0 1.7802E7 -3.134834278502722E-5 31 -2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 23 23.0 1969-12-31 15:59:44.772 -200 752628842 -2805800322976 NULL NULL 200 -400 -200 NULL NULL -23.0 1.7802E7 2.325844787276213E-5 -23 3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -26 -26.0 1969-12-31 15:59:56.426 -200 -240265414 895709463392 NULL NULL 200 -400 -200 NULL NULL 26.0 1.7802E7 -2.629215846486154E-5 26 -3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 15:59:57.269 -200 1170453302 -4363449909856 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -52 -52.0 1969-12-31 15:59:45.644 -200 116461878 -434169881184 NULL NULL 200 -400 -200 NULL NULL 52.0 1.7802E7 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 39 39.0 1969-12-31 16:00:02.804 -200 1368309884 -5101059247552 NULL NULL 200 -400 -200 NULL NULL -39.0 1.7802E7 3.9438237697292314E-5 -39 2.039820512820513 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 62 62.0 1969-12-31 15:59:48.815 -200 -701191108 2614040450624 NULL NULL 200 -400 -200 NULL NULL -62.0 1.7802E7 6.269668557005445E-5 -62 1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -2 -2.0 1969-12-31 16:00:11.181 -200 -925105543 3448793464304 NULL NULL 200 -400 -200 NULL NULL 2.0 1.7802E7 -2.0224737280662724E-6 2 -39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 60 60.0 1969-12-31 15:59:55.035 -200 1810792403 -6750634078384 NULL NULL 200 -400 -200 NULL NULL -60.0 1.7802E7 6.0674211841988174E-5 -60 1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -37 -37.0 1969-12-31 16:00:14.662 -200 980008876 -3653473089728 NULL NULL 200 -400 -200 NULL NULL 37.0 1.7802E7 -3.741576396922604E-5 37 -2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 16:00:10.485 -200 325025905 -1211696573840 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -14 -14.0 1969-12-31 16:00:16.274 -200 -1448350434 5399450417952 NULL NULL 200 -400 -200 NULL NULL 14.0 1.7802E7 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -2 -2.0 1969-12-31 16:00:11.494 -200 841969908 -3138863817024 NULL NULL 200 -400 -200 NULL NULL 2.0 1.7802E7 -2.0224737280662724E-6 2 -39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -3 -3.0 1969-12-31 15:59:57.237 -200 -780159920 2908436181760 NULL NULL 200 -400 -200 NULL NULL 3.0 1.7802E7 -3.033710592099409E-6 3 -26.517666666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -36 -36.0 1969-12-31 15:59:53.817 -200 1599879000 -5964348912000 NULL NULL 200 -400 -200 NULL NULL 36.0 1.7802E7 -3.64045271051929E-5 36 -2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -40 -40.0 1969-12-31 15:59:46.148 -200 -1741735436 6493189705408 NULL NULL 200 -400 -200 NULL NULL 40.0 1.7802E7 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -50 -50.0 1969-12-31 15:59:52.202 -200 68053173 -253702228944 NULL NULL 200 -400 -200 NULL NULL 50.0 1.7802E7 -5.056184320165681E-5 50 -1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -15 -15.0 1969-12-31 15:59:45.322 -200 -1289952980 4808944709440 NULL NULL 200 -400 -200 NULL NULL 15.0 1.7802E7 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -48 -48.0 1969-12-31 16:00:00.96 -200 -2095298312 7811272107136 NULL NULL 200 -400 -200 NULL NULL 48.0 1.7802E7 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -40 -40.0 1969-12-31 15:59:57.942 -200 1122556805 -4184891769040 NULL NULL 200 -400 -200 NULL NULL 40.0 1.7802E7 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 16:00:06.776 -200 -1242610289 4632451157392 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 16:00:02.58 -200 1380986666 -5148318290848 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 15:59:47.712 -200 -60966612 227283529536 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 79.553 1969-12-31 16:00:04.568 -200 -787452001 2935621059728 NULL NULL 200 -400 -200 NULL NULL -79.553 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 16:00:01.515 -200 1221804187 -4554886009136 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -44 -44.0 1969-12-31 16:00:14.848 -200 1075499932 -4009463746496 NULL NULL 200 -400 -200 NULL NULL 44.0 1.7802E7 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 12 12.0 1969-12-31 16:00:12.772 -200 987273431 -3680555350768 NULL NULL 200 -400 -200 NULL NULL -12.0 1.7802E7 1.2134842368397635E-5 -12 6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -11 -11.0 1969-12-31 15:59:48.368 -200 -1894580211 7062995026608 NULL NULL 200 -400 -200 NULL NULL 11.0 1.7802E7 -1.1123605504364498E-5 11 -7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -8 -8.0 1969-12-31 16:00:08.007 -200 1525511816 -5687108050048 NULL NULL 200 -400 -200 NULL NULL 8.0 1.7802E7 -8.08989491226509E-6 8 -9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 40 40.0 1969-12-31 16:00:01.356 -200 1778581609 -6630552238352 NULL NULL 200 -400 -200 NULL NULL -40.0 1.7802E7 4.044947456132545E-5 -40 1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 15:59:50.905 -200 681143255 -2539302054640 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 15:59:48.698 -200 1546508645 -5765384228560 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -32 -32.0 1969-12-31 15:59:45.137 -200 684628920 -2552296613760 NULL NULL 200 -400 -200 NULL NULL 32.0 1.7802E7 -3.235957964906036E-5 32 -2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -5 -5.0 1969-12-31 16:00:02.021 -200 1129692328 -4211492998784 NULL NULL 200 -400 -200 NULL NULL 5.0 1.7802E7 -5.056184320165681E-6 5 -15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 16:00:07.243 -200 237649242 -885956374176 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 61 61.0 1969-12-31 15:59:56.14 -200 1648986748 -6147422596544 NULL NULL 200 -400 -200 NULL NULL -61.0 1.7802E7 6.16854487060213E-5 -61 1.3041475409836065 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 13 13.0 1969-12-31 16:00:07.723 -200 -213003637 794077558736 NULL NULL 200 -400 -200 NULL NULL -13.0 1.7802E7 1.314607923243077E-5 -13 6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -43 -43.0 1969-12-31 16:00:00.026 -200 1152448197 -4296326878416 NULL NULL 200 -400 -200 NULL NULL 43.0 1.7802E7 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -3 -3.0 1969-12-31 16:00:11.059 -200 1792567380 -6682691192640 NULL NULL 200 -400 -200 NULL NULL 3.0 1.7802E7 -3.033710592099409E-6 3 -26.517666666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 9 9.0 1969-12-31 15:59:50.611 -200 -1955716983 7290912912624 NULL NULL 200 -400 -200 NULL NULL -9.0 1.7802E7 9.101131776298225E-6 -9 8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 16:00:00.916 -200 555349603 -2070343319984 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -18 -18.0 1969-12-31 16:00:06.015 -200 -810783273 3022600041744 NULL NULL 200 -400 -200 NULL NULL 18.0 1.7802E7 -1.820226355259645E-5 18 -4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 7 7.0 1969-12-31 16:00:06.018 -200 1855542831 -6917463673968 NULL NULL 200 -400 -200 NULL NULL -7.0 1.7802E7 7.078658048231953E-6 -7 11.364714285714285 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 16:00:06.264 -200 -251902026 939090752928 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 16:00:08.386 -200 -505638328 1885019686784 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -51 -51.0 1969-12-31 16:00:07.536 -200 -1534321710 5719951334880 NULL NULL 200 -400 -200 NULL NULL 51.0 1.7802E7 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 16 16.0 1969-12-31 15:59:48.341 -200 -621136047 2315595183216 NULL NULL 200 -400 -200 NULL NULL -16.0 1.7802E7 1.617978982453018E-5 -16 4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -15 -15.0 1969-12-31 16:00:07.485 -200 -1422147400 5301765507200 NULL NULL 200 -400 -200 NULL NULL 15.0 1.7802E7 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -40 -40.0 1969-12-31 15:59:56.555 -200 -906495924 3379416804672 NULL NULL 200 -400 -200 NULL NULL 40.0 1.7802E7 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 16:00:08 -200 1358421585 -5064195668880 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 12 12.0 1969-12-31 15:59:57.794 -200 -1949450483 7267551400624 NULL NULL 200 -400 -200 NULL NULL -12.0 1.7802E7 1.2134842368397635E-5 -12 6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -37 -37.0 1969-12-31 16:00:09.111 -200 243907290 -909286377120 NULL NULL 200 -400 -200 NULL NULL 37.0 1.7802E7 -3.741576396922604E-5 37 -2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 29 29.0 1969-12-31 16:00:08.001 -200 338519290 -1261999913120 NULL NULL 200 -400 -200 NULL NULL -29.0 1.7802E7 2.932586905696095E-5 -29 2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -36 -36.0 1969-12-31 15:59:56.174 -200 1728430174 -6443587688672 NULL NULL 200 -400 -200 NULL NULL 36.0 1.7802E7 -3.64045271051929E-5 36 -2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 27 27.0 1969-12-31 16:00:15.909 -200 -1965813035 7328550994480 NULL NULL 200 -400 -200 NULL NULL -27.0 1.7802E7 2.7303395328894677E-5 -27 2.946407407407407 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -5 -5.0 1969-12-31 15:59:56.319 -200 2112230777 -7874396336656 NULL NULL 200 -400 -200 NULL NULL 5.0 1.7802E7 -5.056184320165681E-6 5 -15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 16:00:09.65 -200 1990585322 -7420902080416 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 16:00:14.247 -200 1443417260 -5381059545280 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -34 -34.0 1969-12-31 15:59:44.559 -200 -831359851 3099309524528 NULL NULL 200 -400 -200 NULL NULL 34.0 1.7802E7 -3.438205337712663E-5 34 -2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 2 2.0 1969-12-31 16:00:10.198 -200 449588215 -1676064865520 NULL NULL 200 -400 -200 NULL NULL -2.0 1.7802E7 2.0224737280662724E-6 -2 39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -2 -2.0 1969-12-31 16:00:00.574 -200 1490979298 -5558370822944 NULL NULL 200 -400 -200 NULL NULL 2.0 1.7802E7 -2.0224737280662724E-6 2 -39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -21 -21.0 1969-12-31 15:59:56.109 -200 -1835568160 6842998100480 NULL NULL 200 -400 -200 NULL NULL 21.0 1.7802E7 -2.123597414469586E-5 21 -3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -54 -54.0 1969-12-31 15:59:57.369 -200 534194176 -1991475888128 NULL NULL 200 -400 -200 NULL NULL 54.0 1.7802E7 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 30 30.0 1969-12-31 15:59:55.204 -200 -501815954 1870769876512 NULL NULL 200 -400 -200 NULL NULL -30.0 1.7802E7 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 57 57.0 1969-12-31 15:59:58.455 -200 735056642 -2740291161376 NULL NULL 200 -400 -200 NULL NULL -57.0 1.7802E7 5.764050124988876E-5 -57 1.3956666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -18 -18.0 1969-12-31 15:59:44.301 -200 1945048831 -7251142041968 NULL NULL 200 -400 -200 NULL NULL 18.0 1.7802E7 -1.820226355259645E-5 18 -4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:10.452 -200 1693637019 -6313878806832 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -60 -60.0 1969-12-31 15:59:50.822 -200 -1860186661 6934775872208 NULL NULL 200 -400 -200 NULL NULL 60.0 1.7802E7 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -56 -56.0 1969-12-31 15:59:47.897 -200 -388818510 1449515405280 NULL NULL 200 -400 -200 NULL NULL 56.0 1.7802E7 -5.6629264385855625E-5 56 -1.4205892857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 10 10.0 1969-12-31 16:00:15.298 -200 508896666 -1897166770848 NULL NULL 200 -400 -200 NULL NULL -10.0 1.7802E7 1.0112368640331362E-5 -10 7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -44 -44.0 1969-12-31 16:00:10.131 -200 -1576454990 5877024202720 NULL NULL 200 -400 -200 NULL NULL 44.0 1.7802E7 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -29 -29.0 1969-12-31 15:59:52.316 -200 -1367099579 5096547230512 NULL NULL 200 -400 -200 NULL NULL 29.0 1.7802E7 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -3 -3.0 1969-12-31 16:00:11.642 -200 -1747413995 6514359373360 NULL NULL 200 -400 -200 NULL NULL 3.0 1.7802E7 -3.033710592099409E-6 3 -26.517666666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -24 -24.0 1969-12-31 16:00:07.302 -200 -828408534 3088307014752 NULL NULL 200 -400 -200 NULL NULL 24.0 1.7802E7 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -13 -13.0 1969-12-31 16:00:05.24 -200 -871078831 3247381881968 NULL NULL 200 -400 -200 NULL NULL 13.0 1.7802E7 -1.314607923243077E-5 13 -6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 28 28.0 1969-12-31 15:59:47.977 -200 -145664633 543037751824 NULL NULL 200 -400 -200 NULL NULL -28.0 1.7802E7 2.8314632192927813E-5 -28 2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -17 -17.0 1969-12-31 16:00:06.738 -200 -1623682545 6053088527760 NULL NULL 200 -400 -200 NULL NULL 17.0 1.7802E7 -1.7191026688563315E-5 17 -4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -59 -59.0 1969-12-31 15:59:48.678 -200 -1201695086 4479919280608 NULL NULL 200 -400 -200 NULL NULL 59.0 1.7802E7 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 16:00:11.028 -200 -359106650 1338749591200 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -6 -6.0 1969-12-31 15:59:57.957 -200 1845320008 -6879352989824 NULL NULL 200 -400 -200 NULL NULL 6.0 1.7802E7 -6.067421184198818E-6 6 -13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 15:59:45.015 -200 -433242847 1615129333616 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 16:00:16.165 -200 -1012580949 3774901777872 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:07.651 -200 670871256 -2501008042368 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 16:00:12.581 -200 -1764738986 6578946939808 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 15:59:56.414 -200 2073630240 -7730493534720 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 16:00:11.102 -200 -1501917393 5599148041104 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -11 -11.0 1969-12-31 15:59:46.878 -200 -1926901193 7183487647504 NULL NULL 200 -400 -200 NULL NULL 11.0 1.7802E7 -1.1123605504364498E-5 11 -7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -16 -16.0 1969-12-31 16:00:10.394 -200 -917626258 3420910689824 NULL NULL 200 -400 -200 NULL NULL 16.0 1.7802E7 -1.617978982453018E-5 16 -4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 50 50.0 1969-12-31 16:00:08.584 -200 -1920594326 7159975647328 NULL NULL 200 -400 -200 NULL NULL -50.0 1.7802E7 5.056184320165681E-5 -50 1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 16:00:00.072 -200 -1118623392 4170228005376 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -38 -38.0 1969-12-31 16:00:09.402 -200 -1524310263 5682628660464 NULL NULL 200 -400 -200 NULL NULL 38.0 1.7802E7 -3.842700083325918E-5 38 -2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 26 26.0 1969-12-31 15:59:52.563 -200 1609051854 -5998545311712 NULL NULL 200 -400 -200 NULL NULL -26.0 1.7802E7 2.629215846486154E-5 -26 3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 16:00:11.333 -200 -133846959 498981463152 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 20 20.0 1969-12-31 15:59:48.468 -200 855930073 -3190907312144 NULL NULL 200 -400 -200 NULL NULL -20.0 1.7802E7 2.0224737280662725E-5 -20 3.9776499999999997 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -5 -5.0 1969-12-31 16:00:03.52 -200 797790274 -2974162141472 NULL NULL 200 -400 -200 NULL NULL 5.0 1.7802E7 -5.056184320165681E-6 5 -15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 16:00:15.193 -200 -793559875 2958391214000 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 22 22.0 1969-12-31 16:00:00.767 -200 1281550221 -4777619223888 NULL NULL 200 -400 -200 NULL NULL -22.0 1.7802E7 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -41 -41.0 1969-12-31 15:59:57.604 -200 -1030234300 3840713470400 NULL NULL 200 -400 -200 NULL NULL 41.0 1.7802E7 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 54 54.0 1969-12-31 16:00:08.793 -200 -163820010 610720997280 NULL NULL 200 -400 -200 NULL NULL -54.0 1.7802E7 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 53 53.0 1969-12-31 15:59:48.451 -200 -1501172121 5596369667088 NULL NULL 200 -400 -200 NULL NULL -53.0 1.7802E7 5.359555379375622E-5 -53 1.501 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 23 23.0 1969-12-31 15:59:44.456 -200 488663894 -1821738996832 NULL NULL 200 -400 -200 NULL NULL -23.0 1.7802E7 2.325844787276213E-5 -23 3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 12 12.0 1969-12-31 15:59:46.762 -200 -901884078 3362223842784 NULL NULL 200 -400 -200 NULL NULL -12.0 1.7802E7 1.2134842368397635E-5 -12 6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 16:00:05.63 -200 397130878 -1480503913184 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 16:00:12.291 -200 -1455816525 5427284005200 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 16:00:12.183 -200 1577520702 -5880997177056 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 25 25.0 1969-12-31 15:59:57.127 -200 -1484913293 5535756756304 NULL NULL 200 -400 -200 NULL NULL -25.0 1.7802E7 2.5280921600828406E-5 -25 3.18212 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -40 -40.0 1969-12-31 15:59:54.952 -200 1496680212 -5579623830336 NULL NULL 200 -400 -200 NULL NULL 40.0 1.7802E7 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 9 9.0 1969-12-31 15:59:57.048 -200 191354420 -713369277760 NULL NULL 200 -400 -200 NULL NULL -9.0 1.7802E7 9.101131776298225E-6 -9 8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -52 -52.0 1969-12-31 16:00:05.377 -200 1867766093 -6963031994704 NULL NULL 200 -400 -200 NULL NULL 52.0 1.7802E7 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -29 -29.0 1969-12-31 15:59:48.102 -200 481032605 -1793289551440 NULL NULL 200 -400 -200 NULL NULL 29.0 1.7802E7 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -45 -45.0 1969-12-31 16:00:10.036 -200 -153597470 572611368160 NULL NULL 200 -400 -200 NULL NULL 45.0 1.7802E7 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -51 -51.0 1969-12-31 15:59:46.506 -200 57827239 -215579946992 NULL NULL 200 -400 -200 NULL NULL 51.0 1.7802E7 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 18 18.0 1969-12-31 15:59:48.188 -200 -834070259 3109413925552 NULL NULL 200 -400 -200 NULL NULL -18.0 1.7802E7 1.820226355259645E-5 -18 4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 36 36.0 1969-12-31 16:00:14.011 -200 -1301030543 4850241864304 NULL NULL 200 -400 -200 NULL NULL -36.0 1.7802E7 3.64045271051929E-5 -36 2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 15:59:45.198 -200 326580052 -1217490433856 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 40 40.0 1969-12-31 16:00:06.827 -200 -1879142590 7005443575520 NULL NULL 200 -400 -200 NULL NULL -40.0 1.7802E7 4.044947456132545E-5 -40 1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 13 13.0 1969-12-31 15:59:45.517 -200 522219886 -1946835735008 NULL NULL 200 -400 -200 NULL NULL -13.0 1.7802E7 1.314607923243077E-5 -13 6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -40 -40.0 1969-12-31 15:59:50.074 -200 247085875 -921136142000 NULL NULL 200 -400 -200 NULL NULL 40.0 1.7802E7 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -16 -16.0 1969-12-31 15:59:52.343 -200 309905338 -1155327100064 NULL NULL 200 -400 -200 NULL NULL 16.0 1.7802E7 -1.617978982453018E-5 16 -4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 42 42.0 1969-12-31 16:00:05.092 -200 1057329243 -3941723417904 NULL NULL 200 -400 -200 NULL NULL -42.0 1.7802E7 4.247194828939172E-5 -42 1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 61 61.0 1969-12-31 16:00:01.091 -200 -2141583722 7983824115616 NULL NULL 200 -400 -200 NULL NULL -61.0 1.7802E7 6.16854487060213E-5 -61 1.3041475409836065 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 44 44.0 1969-12-31 16:00:03.89 -200 -72955181 271976914768 NULL NULL 200 -400 -200 NULL NULL -44.0 1.7802E7 4.449442201745799E-5 -44 1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 58 58.0 1969-12-31 15:59:54.562 -200 -649143670 2420007601760 NULL NULL 200 -400 -200 NULL NULL -58.0 1.7802E7 5.86517381139219E-5 -58 1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 22 22.0 1969-12-31 16:00:00.073 -200 872463931 -3252545534768 NULL NULL 200 -400 -200 NULL NULL -22.0 1.7802E7 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -3 -3.0 1969-12-31 15:59:53.28 -200 -1413849836 5270832188608 NULL NULL 200 -400 -200 NULL NULL 3.0 1.7802E7 -3.033710592099409E-6 3 -26.517666666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 62 62.0 1969-12-31 15:59:54.762 -200 1011458748 -3770718212544 NULL NULL 200 -400 -200 NULL NULL -62.0 1.7802E7 6.269668557005445E-5 -62 1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:02.075 -200 -1090697524 4066120369472 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 19 19.0 1969-12-31 16:00:03.44 -200 -699116745 2606307225360 NULL NULL 200 -400 -200 NULL NULL -19.0 1.7802E7 1.921350041662959E-5 -19 4.187 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 29 29.0 1969-12-31 16:00:05.944 -200 1721739533 -6418644979024 NULL NULL 200 -400 -200 NULL NULL -29.0 1.7802E7 2.932586905696095E-5 -29 2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -38 -38.0 1969-12-31 16:00:09.644 -200 -5729887 21361018736 NULL NULL 200 -400 -200 NULL NULL 38.0 1.7802E7 -3.842700083325918E-5 38 -2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 11 11.0 1969-12-31 16:00:08.745 -200 1185396861 -4419159497808 NULL NULL 200 -400 -200 NULL NULL -11.0 1.7802E7 1.1123605504364498E-5 -11 7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -8 -8.0 1969-12-31 15:59:53.246 -200 371982429 -1386750495312 NULL NULL 200 -400 -200 NULL NULL 8.0 1.7802E7 -8.08989491226509E-6 8 -9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 31 31.0 1969-12-31 15:59:55.508 -200 322893623 -1203747426544 NULL NULL 200 -400 -200 NULL NULL -31.0 1.7802E7 3.134834278502722E-5 -31 2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 16:00:11.457 -200 -836056903 3116820134384 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -21 -21.0 1969-12-31 15:59:51.083 -200 1386823242 -5170077046176 NULL NULL 200 -400 -200 NULL NULL 21.0 1.7802E7 -2.123597414469586E-5 21 -3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -31 -31.0 1969-12-31 15:59:52.474 -200 -281573163 1049704751664 NULL NULL 200 -400 -200 NULL NULL 31.0 1.7802E7 -3.134834278502722E-5 31 -2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 15:59:54.955 -200 -714556097 2663865129616 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 33.0 1969-12-31 15:59:57.334 -200 -1104704650 4118338935200 NULL NULL 200 -400 -200 NULL NULL -33.0 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -1 -1.389 1969-12-31 16:00:11.049 -200 -2143304715 7990239977520 NULL NULL 200 -400 -200 NULL NULL 1.389 1.7802E7 -1.0112368640331362E-6 1 -79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 59 59.0 1969-12-31 15:59:50.306 -200 771123694 -2874749131232 NULL NULL 200 -400 -200 NULL NULL -59.0 1.7802E7 5.966297497795504E-5 -59 1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -18 -18.0 1969-12-31 15:59:45.372 -200 -71980111 268341853808 NULL NULL 200 -400 -200 NULL NULL 18.0 1.7802E7 -1.820226355259645E-5 18 -4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -43 -43.0 1969-12-31 15:59:49.383 -200 -1177584950 4390036693600 NULL NULL 200 -400 -200 NULL NULL 43.0 1.7802E7 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 46 46.0 1969-12-31 15:59:55.241 -200 -170158516 634350947648 NULL NULL 200 -400 -200 NULL NULL -46.0 1.7802E7 4.651689574552426E-5 -46 1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 45 45.0 1969-12-31 16:00:11.515 -200 855920504 -3190871638912 NULL NULL 200 -400 -200 NULL NULL -45.0 1.7802E7 4.550565888149113E-5 -45 1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 0 0.0 1969-12-31 15:59:44.904 -200 2144209609 -7993613422352 NULL NULL 200 -400 -200 NULL NULL -0.0 1.7802E7 0.0 0 NULL -NULL -200.0 1969-12-31 15:59:55.451 NULL false -15 -15.0 1969-12-31 15:59:54.883 -200 -1411964550 5263803842400 NULL NULL 200 -400 -200 NULL NULL 15.0 1.7802E7 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 57 57.0 1969-12-31 16:00:04.207 -200 -971674501 3622402539728 NULL NULL 200 -400 -200 NULL NULL -57.0 1.7802E7 5.764050124988876E-5 -57 1.3956666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -6 -6.0 1969-12-31 16:00:02.928 -200 -891215466 3322451257248 NULL NULL 200 -400 -200 NULL NULL 6.0 1.7802E7 -6.067421184198818E-6 6 -13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 5 5.0 1969-12-31 16:00:11.083 -200 -1660234875 6189355614000 NULL NULL 200 -400 -200 NULL NULL -5.0 1.7802E7 5.056184320165681E-6 -5 15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 44 44.0 1969-12-31 16:00:06.91 -200 -2002017129 7463519856912 NULL NULL 200 -400 -200 NULL NULL -44.0 1.7802E7 4.449442201745799E-5 -44 1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 48 48.0 1969-12-31 16:00:15.548 -200 1372727646 -5117528664288 NULL NULL 200 -400 -200 NULL NULL -48.0 1.7802E7 4.853936947359054E-5 -48 1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -60 -60.0 1969-12-31 16:00:02.322 -200 -126921733 473164220624 NULL NULL 200 -400 -200 NULL NULL 60.0 1.7802E7 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 15:59:52.431 -200 -1235100020 4604452874560 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 15:59:53.671 -200 643105282 -2397496491296 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 0 0.0 1969-12-31 16:00:13.396 -200 618557893 -2305983825104 NULL NULL 200 -400 -200 NULL NULL -0.0 1.7802E7 0.0 0 NULL -NULL -200.0 1969-12-31 15:59:55.451 NULL false 18 18.0 1969-12-31 15:59:55.382 -200 -1505775646 5613531608288 NULL NULL 200 -400 -200 NULL NULL -18.0 1.7802E7 1.820226355259645E-5 -18 4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 15:59:56.218 -200 964506212 -3595679158336 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 9 9.0 1969-12-31 15:59:43.983 -200 1928523894 -7189537076832 NULL NULL 200 -400 -200 NULL NULL -9.0 1.7802E7 9.101131776298225E-6 -9 8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:10.227 -200 1313892161 -4898189976208 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 33.0 1969-12-31 16:00:07.006 -200 -1897610729 7074292797712 NULL NULL 200 -400 -200 NULL NULL -33.0 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 36 36.0 1969-12-31 16:00:10.467 -200 1284716338 -4789422508064 NULL NULL 200 -400 -200 NULL NULL -36.0 1.7802E7 3.64045271051929E-5 -36 2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -39 -39.0 1969-12-31 16:00:13.144 -200 -589917253 2199211519184 NULL NULL 200 -400 -200 NULL NULL 39.0 1.7802E7 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 16 16.0 1969-12-31 16:00:02.582 -200 1047398909 -3904703132752 NULL NULL 200 -400 -200 NULL NULL -16.0 1.7802E7 1.617978982453018E-5 -16 4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 10 10.0 1969-12-31 15:59:57.081 -200 -1731141467 6453695388976 NULL NULL 200 -400 -200 NULL NULL -10.0 1.7802E7 1.0112368640331362E-5 -10 7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 15:59:54.471 -200 296811522 -1106513354016 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 15:59:52.118 -200 1683928379 -6277684996912 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -43 -43.0 1969-12-31 15:59:50.023 -200 -1184913004 4417355678912 NULL NULL 200 -400 -200 NULL NULL 43.0 1.7802E7 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 2 2.0 1969-12-31 15:59:58.416 -200 -516985252 1927321019456 NULL NULL 200 -400 -200 NULL NULL -2.0 1.7802E7 2.0224737280662724E-6 -2 39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 15:59:51.77 -200 835189885 -3113587891280 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 2 2.0 1969-12-31 16:00:09.161 -200 1480384156 -5518872133568 NULL NULL 200 -400 -200 NULL NULL -2.0 1.7802E7 2.0224737280662724E-6 -2 39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 30 30.0 1969-12-31 15:59:44.101 -200 -686795969 2560375372432 NULL NULL 200 -400 -200 NULL NULL -30.0 1.7802E7 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 16:00:00.778 -200 -614444827 2290650315056 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 16:00:14.154 -200 -1113073921 4149539577488 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 16:00:12.477 -200 2128130578 -7933670794784 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 1 1.0 1969-12-31 16:00:10.364 -200 85496797 -318732059216 NULL NULL 200 -400 -200 NULL NULL -1.0 1.7802E7 1.0112368640331362E-6 -1 79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -8 -8.0 1969-12-31 15:59:54.731 -200 508093612 -1894172985536 NULL NULL 200 -400 -200 NULL NULL 8.0 1.7802E7 -8.08989491226509E-6 8 -9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -1 -1.0 1969-12-31 16:00:12.403 -200 -868641510 3238295549280 NULL NULL 200 -400 -200 NULL NULL 1.0 1.7802E7 -1.0112368640331362E-6 1 -79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 15:59:46.633 -200 -167812632 625605492096 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 16:00:08.301 -200 -735058469 2740297972432 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -49 -49.0 1969-12-31 15:59:56.159 -200 1436496635 -5355259455280 NULL NULL 200 -400 -200 NULL NULL 49.0 1.7802E7 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 30 30.0 1969-12-31 16:00:08.142 -200 -1657894927 6180632287856 NULL NULL 200 -400 -200 NULL NULL -30.0 1.7802E7 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 8 8.0 1969-12-31 15:59:48.785 -200 1356532737 -5057154043536 NULL NULL 200 -400 -200 NULL NULL -8.0 1.7802E7 8.08989491226509E-6 -8 9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 33.0 1969-12-31 15:59:45.163 -200 766974126 -2859279541728 NULL NULL 200 -400 -200 NULL NULL -33.0 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 15:59:48.16 -200 -395589755 1474758606640 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 29 29.0 1969-12-31 16:00:05.79 -200 1890977505 -7049564138640 NULL NULL 200 -400 -200 NULL NULL -29.0 1.7802E7 2.932586905696095E-5 -29 2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:09.792 -200 -1710271850 6375893456800 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 37 37.0 1969-12-31 16:00:06.69 -200 -1817207476 6774549470528 NULL NULL 200 -400 -200 NULL NULL -37.0 1.7802E7 3.741576396922604E-5 -37 2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 15:59:44.008 -200 -573654993 2138585813904 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 15:59:44.221 -200 1371826360 -5114168670080 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -20 -20.0 1969-12-31 15:59:48.182 -200 1406877565 -5244839562320 NULL NULL 200 -400 -200 NULL NULL 20.0 1.7802E7 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 58 58.0 1969-12-31 15:59:51.063 -200 -432105022 1610887522016 NULL NULL 200 -400 -200 NULL NULL -58.0 1.7802E7 5.86517381139219E-5 -58 1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -8 -8.0 1969-12-31 15:59:48.763 -200 1471734024 -5486624441472 NULL NULL 200 -400 -200 NULL NULL 8.0 1.7802E7 -8.08989491226509E-6 8 -9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 16:00:01.232 -200 1961389522 -7312060138016 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -32 -32.0 1969-12-31 16:00:04.577 -200 -1665914053 6210527589584 NULL NULL 200 -400 -200 NULL NULL 32.0 1.7802E7 -3.235957964906036E-5 32 -2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -58 -58.0 1969-12-31 15:59:50.681 -200 -22464308 83746940224 NULL NULL 200 -400 -200 NULL NULL 58.0 1.7802E7 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 15:59:58.989 -200 475712407 -1773455853296 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 43 43.0 1969-12-31 16:00:14.685 -200 -90837843 338643478704 NULL NULL 200 -400 -200 NULL NULL -43.0 1.7802E7 4.3483185153424856E-5 -43 1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 16:00:00.037 -200 -2080605724 7756498139072 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 59 59.0 1969-12-31 16:00:05.13 -200 661665098 -2466687485344 NULL NULL 200 -400 -200 NULL NULL -59.0 1.7802E7 5.966297497795504E-5 -59 1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 12 12.0 1969-12-31 16:00:09.556 -200 801119662 -2986574099936 NULL NULL 200 -400 -200 NULL NULL -12.0 1.7802E7 1.2134842368397635E-5 -12 6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 42 42.0 1969-12-31 15:59:48.292 -200 760034197 -2833407486416 NULL NULL 200 -400 -200 NULL NULL -42.0 1.7802E7 4.247194828939172E-5 -42 1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -46 -46.0 1969-12-31 16:00:00.013 -200 -1767343556 6588656776768 NULL NULL 200 -400 -200 NULL NULL 46.0 1.7802E7 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -14 -14.0 1969-12-31 16:00:08.549 -200 1340808498 -4998534080544 NULL NULL 200 -400 -200 NULL NULL 14.0 1.7802E7 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -63 -63.0 1969-12-31 15:59:57.693 -200 956380949 -3565388177872 NULL NULL 200 -400 -200 NULL NULL 63.0 1.7802E7 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -54 -54.0 1969-12-31 16:00:00.168 -200 -802752239 2992660346992 NULL NULL 200 -400 -200 NULL NULL 54.0 1.7802E7 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 15:59:44.04 -200 -257169455 958727728240 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -60 -60.0 1969-12-31 15:59:45.739 -200 -1690528981 6302292041168 NULL NULL 200 -400 -200 NULL NULL 60.0 1.7802E7 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 35 35.0 1969-12-31 16:00:14.084 -200 1974986508 -7362749701824 NULL NULL 200 -400 -200 NULL NULL -35.0 1.7802E7 3.5393290241159765E-5 -35 2.272942857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -42 -42.0 1969-12-31 15:59:56.197 -200 1157618085 -4315600220880 NULL NULL 200 -400 -200 NULL NULL 42.0 1.7802E7 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -11 -11.0 1969-12-31 15:59:43.783 -200 12116087 -45168772336 NULL NULL 200 -400 -200 NULL NULL 11.0 1.7802E7 -1.1123605504364498E-5 11 -7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 16:00:10.672 -200 -1197996365 4466130448720 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 25 25.0 1969-12-31 15:59:54.072 -200 1405644908 -5240244217024 NULL NULL 200 -400 -200 NULL NULL -25.0 1.7802E7 2.5280921600828406E-5 -25 3.18212 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -8 -8.0 1969-12-31 15:59:49.986 -200 -1515410154 5649449054112 NULL NULL 200 -400 -200 NULL NULL 8.0 1.7802E7 -8.08989491226509E-6 8 -9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -57 -57.0 1969-12-31 16:00:11.883 -200 -369958251 1379204359728 NULL NULL 200 -400 -200 NULL NULL 57.0 1.7802E7 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 42 42.0 1969-12-31 15:59:30.929 -200 -578935785 2158272606480 NULL NULL 200 -400 -200 NULL NULL -42.0 1.7802E7 4.247194828939172E-5 -42 1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 11 11.0 1969-12-31 16:00:13.383 -200 1442208582 -5376553593696 NULL NULL 200 -400 -200 NULL NULL -11.0 1.7802E7 1.1123605504364498E-5 -11 7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 0 0.0 1969-12-31 16:00:02.71 -200 406548885 -1515614243280 NULL NULL 200 -400 -200 NULL NULL -0.0 1.7802E7 0.0 0 NULL -NULL -200.0 1969-12-31 15:59:55.451 NULL false -19 -19.0 1969-12-31 16:00:04.02 -200 -112652051 419966846128 NULL NULL 200 -400 -200 NULL NULL 19.0 1.7802E7 -1.921350041662959E-5 19 -4.187 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 15:59:45.865 -200 -1014234787 3781067285936 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -55 -55.0 1969-12-31 16:00:05.793 -200 865661585 -3227186388880 NULL NULL 200 -400 -200 NULL NULL 55.0 1.7802E7 -5.561802752182249E-5 55 -1.4464181818181818 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -46 -46.0 1969-12-31 15:59:53.694 -200 -1338441335 4989709296880 NULL NULL 200 -400 -200 NULL NULL 46.0 1.7802E7 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -50 -50.0 1969-12-31 16:00:15.707 -200 -1030054242 3840042214176 NULL NULL 200 -400 -200 NULL NULL 50.0 1.7802E7 -5.056184320165681E-5 50 -1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 48 48.0 1969-12-31 16:00:00.008 -200 -949365839 3539235847792 NULL NULL 200 -400 -200 NULL NULL -48.0 1.7802E7 4.853936947359054E-5 -48 1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -47 -47.0 1969-12-31 16:00:08.884 -200 2028722791 -7563078564848 NULL NULL 200 -400 -200 NULL NULL 47.0 1.7802E7 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 20 20.0 1969-12-31 16:00:05.722 -200 1977856778 -7373450068384 NULL NULL 200 -400 -200 NULL NULL -20.0 1.7802E7 2.0224737280662725E-5 -20 3.9776499999999997 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 15:59:45.299 -200 -653439720 2436023276160 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -33 -33.0 1969-12-31 15:59:52.269 -200 -1888871661 7041713552208 NULL NULL 200 -400 -200 NULL NULL 33.0 1.7802E7 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -26 -26.0 1969-12-31 15:59:48.662 -200 -1820077302 6785248181856 NULL NULL 200 -400 -200 NULL NULL 26.0 1.7802E7 -2.629215846486154E-5 26 -3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -33 -33.0 1969-12-31 16:00:00.611 -200 2087495093 -7782181706704 NULL NULL 200 -400 -200 NULL NULL 33.0 1.7802E7 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -19 -19.0 1969-12-31 16:00:15.223 -200 -1721895877 6419227829456 NULL NULL 200 -400 -200 NULL NULL 19.0 1.7802E7 -1.921350041662959E-5 19 -4.187 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 16:00:08.726 -200 1233260108 -4597593682624 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -59 -59.0 1969-12-31 16:00:09.498 -200 -643835673 2400219388944 NULL NULL 200 -400 -200 NULL NULL 59.0 1.7802E7 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 54 54.0 1969-12-31 15:59:53.886 -200 1838082189 -6852370400592 NULL NULL 200 -400 -200 NULL NULL -54.0 1.7802E7 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -27 -27.0 1969-12-31 16:00:06.385 -200 -1446714109 5393350198352 NULL NULL 200 -400 -200 NULL NULL 27.0 1.7802E7 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 20 20.0 1969-12-31 16:00:05.147 -200 -1173894737 4376279579536 NULL NULL 200 -400 -200 NULL NULL -20.0 1.7802E7 2.0224737280662725E-5 -20 3.9776499999999997 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -64 -64.0 1969-12-31 16:00:00.199 -200 927647669 -3458270510032 NULL NULL 200 -400 -200 NULL NULL 64.0 1.7802E7 -6.471915929812072E-5 64 -1.243015625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -27 -27.0 1969-12-31 16:00:08.365 -200 -2068220951 7710327705328 NULL NULL 200 -400 -200 NULL NULL 27.0 1.7802E7 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -31 -31.0 1969-12-31 16:00:13.087 -200 -2127856621 7932649483088 NULL NULL 200 -400 -200 NULL NULL 31.0 1.7802E7 -3.134834278502722E-5 31 -2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -58 -58.0 1969-12-31 16:00:08.74 -200 765913519 -2855325598832 NULL NULL 200 -400 -200 NULL NULL 58.0 1.7802E7 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 62 62.0 1969-12-31 16:00:07.828 -200 1801868132 -6717364396096 NULL NULL 200 -400 -200 NULL NULL -62.0 1.7802E7 6.269668557005445E-5 -62 1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -60 -60.0 1969-12-31 16:00:11.641 -200 -1445021496 5387040137088 NULL NULL 200 -400 -200 NULL NULL 60.0 1.7802E7 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 16:00:14.909 -200 26234080 -97800650240 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 16:00:14.04 -200 -247697712 923417070336 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 37 37.0 1969-12-31 16:00:09.907 -200 1256255128 -4683319117184 NULL NULL 200 -400 -200 NULL NULL -37.0 1.7802E7 3.741576396922604E-5 -37 2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 16:00:09.93 -200 854529509 -3185686009552 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -50 -50.0 1969-12-31 15:59:47.233 -200 824529348 -3073845409344 NULL NULL 200 -400 -200 NULL NULL 50.0 1.7802E7 -5.056184320165681E-5 50 -1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -43 -43.0 1969-12-31 15:59:49.762 -200 408511379 -1522930420912 NULL NULL 200 -400 -200 NULL NULL 43.0 1.7802E7 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -59 -59.0 1969-12-31 15:59:44.148 -200 -639531371 2384172951088 NULL NULL 200 -400 -200 NULL NULL 59.0 1.7802E7 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 15:59:46.045 -200 166002385 -618856891280 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 19 19.0 1969-12-31 15:59:46.022 -200 1911972024 -7127831705472 NULL NULL 200 -400 -200 NULL NULL -19.0 1.7802E7 1.921350041662959E-5 -19 4.187 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 25 25.0 1969-12-31 16:00:06.38 -200 -1737191305 6476249185040 NULL NULL 200 -400 -200 NULL NULL -25.0 1.7802E7 2.5280921600828406E-5 -25 3.18212 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 23 23.0 1969-12-31 15:59:55.008 -200 1257490174 -4687923368672 NULL NULL 200 -400 -200 NULL NULL -23.0 1.7802E7 2.325844787276213E-5 -23 3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -37 -37.0 1969-12-31 16:00:02.112 -200 -386882321 1442297292688 NULL NULL 200 -400 -200 NULL NULL 37.0 1.7802E7 -3.741576396922604E-5 37 -2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -45 -45.0 1969-12-31 16:00:05.68 -200 942202168 -3512529682304 NULL NULL 200 -400 -200 NULL NULL 45.0 1.7802E7 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 40 40.0 1969-12-31 16:00:06.346 -200 2068959120 -7713079599360 NULL NULL 200 -400 -200 NULL NULL -40.0 1.7802E7 4.044947456132545E-5 -40 1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 0 0.0 1969-12-31 16:00:15.616 -200 -1379420228 5142478609984 NULL NULL 200 -400 -200 NULL NULL -0.0 1.7802E7 0.0 0 NULL -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:11.08 -200 607820185 -2265953649680 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -22 -22.0 1969-12-31 15:59:54.584 -200 1322101937 -4928796021136 NULL NULL 200 -400 -200 NULL NULL 22.0 1.7802E7 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:01.813 -200 -1749223037 6521103481936 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 15:59:51.867 -200 706927917 -2635427274576 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -46 -46.0 1969-12-31 16:00:00.601 -200 -993366782 3703271363296 NULL NULL 200 -400 -200 NULL NULL 46.0 1.7802E7 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 43 43.0 1969-12-31 15:59:50.893 -200 1796171294 -6696126584032 NULL NULL 200 -400 -200 NULL NULL -43.0 1.7802E7 4.3483185153424856E-5 -43 1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 42 42.0 1969-12-31 16:00:15.369 -200 942676094 -3514296478432 NULL NULL 200 -400 -200 NULL NULL -42.0 1.7802E7 4.247194828939172E-5 -42 1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -58 -58.0 1969-12-31 16:00:08.05 -200 -652375883 2432057291824 NULL NULL 200 -400 -200 NULL NULL 58.0 1.7802E7 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 31 31.0 1969-12-31 15:59:58.44 -200 -742095371 2766531543088 NULL NULL 200 -400 -200 NULL NULL -31.0 1.7802E7 3.134834278502722E-5 -31 2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -26.28 1969-12-31 15:59:56.197 -200 -1899525804 7081432197312 NULL NULL 200 -400 -200 NULL NULL 26.28 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 48 48.0 1969-12-31 16:00:15.512 -200 -929558354 3465393543712 NULL NULL 200 -400 -200 NULL NULL -48.0 1.7802E7 4.853936947359054E-5 -48 1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -15 -15.0 1969-12-31 15:59:54.004 -200 -541559761 2018934789008 NULL NULL 200 -400 -200 NULL NULL 15.0 1.7802E7 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 0 0.0 1969-12-31 16:00:10.139 -200 1585496199 -5910729829872 NULL NULL 200 -400 -200 NULL NULL -0.0 1.7802E7 0.0 0 NULL -NULL -200.0 1969-12-31 15:59:55.451 NULL false -47 -47.0 1969-12-31 15:59:56.477 -200 15932860 -59397702080 NULL NULL 200 -400 -200 NULL NULL 47.0 1.7802E7 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 13 13.0 1969-12-31 15:59:46.525 -200 -1069199891 3985977193648 NULL NULL 200 -400 -200 NULL NULL -13.0 1.7802E7 1.314607923243077E-5 -13 6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -5 -5.0 1969-12-31 16:00:08.267 -200 247154261 -921391085008 NULL NULL 200 -400 -200 NULL NULL 5.0 1.7802E7 -5.056184320165681E-6 5 -15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -12 -12.0 1969-12-31 16:00:04.154 -200 -781795723 2914534455344 NULL NULL 200 -400 -200 NULL NULL 12.0 1.7802E7 -1.2134842368397635E-5 12 -6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 33.0 1969-12-31 15:59:51.66 -200 -1537502693 5731810039504 NULL NULL 200 -400 -200 NULL NULL -33.0 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -48 -48.0 1969-12-31 15:59:50.052 -200 267944536 -998897230208 NULL NULL 200 -400 -200 NULL NULL 48.0 1.7802E7 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 41 41.0 1969-12-31 15:59:45.574 -200 -2080164191 7754852104048 NULL NULL 200 -400 -200 NULL NULL -41.0 1.7802E7 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 26 26.0 1969-12-31 15:59:58.654 -200 -1384566896 5161665388288 NULL NULL 200 -400 -200 NULL NULL -26.0 1.7802E7 2.629215846486154E-5 -26 3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -56 -56.0 1969-12-31 16:00:13.958 -200 -324944949 1211394769872 NULL NULL 200 -400 -200 NULL NULL 56.0 1.7802E7 -5.6629264385855625E-5 56 -1.4205892857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:16.178 -200 -1589934514 5927275868192 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 7 7.0 1969-12-31 15:59:53.034 -200 514569296 -1918314335488 NULL NULL 200 -400 -200 NULL NULL -7.0 1.7802E7 7.078658048231953E-6 -7 11.364714285714285 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -27 -27.0 1969-12-31 15:59:58.171 -200 -1703126876 6349256993728 NULL NULL 200 -400 -200 NULL NULL 27.0 1.7802E7 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 16:00:02.269 -200 2035546169 -7588516118032 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -16 -16.0 1969-12-31 16:00:05.487 -200 -1886601867 7033251760176 NULL NULL 200 -400 -200 NULL NULL 16.0 1.7802E7 -1.617978982453018E-5 16 -4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -31 -31.0 1969-12-31 16:00:07.398 -200 -1461142157 5447137961296 NULL NULL 200 -400 -200 NULL NULL 31.0 1.7802E7 -3.134834278502722E-5 31 -2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -47 -47.0 1969-12-31 16:00:04.977 -200 -300022102 1118482396256 NULL NULL 200 -400 -200 NULL NULL 47.0 1.7802E7 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 35 35.0 1969-12-31 16:00:00.9 -200 880598992 -3282873042176 NULL NULL 200 -400 -200 NULL NULL -35.0 1.7802E7 3.5393290241159765E-5 -35 2.272942857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -31 -31.0 1969-12-31 16:00:15.012 -200 1399153943 -5216045899504 NULL NULL 200 -400 -200 NULL NULL 31.0 1.7802E7 -3.134834278502722E-5 31 -2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -18 -18.0 1969-12-31 16:00:05.241 -200 1602304617 -5973391612176 NULL NULL 200 -400 -200 NULL NULL 18.0 1.7802E7 -1.820226355259645E-5 18 -4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 15:59:57.965 -200 1095896876 -4085503553728 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 60 60.0 1969-12-31 15:59:51.682 -200 -1493893128 5569233581184 NULL NULL 200 -400 -200 NULL NULL -60.0 1.7802E7 6.0674211841988174E-5 -60 1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 13 13.0 1969-12-31 16:00:14.548 -200 370944760 -1382882065280 NULL NULL 200 -400 -200 NULL NULL -13.0 1.7802E7 1.314607923243077E-5 -13 6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 54 54.0 1969-12-31 15:59:56.345 -200 1756261895 -6547344344560 NULL NULL 200 -400 -200 NULL NULL -54.0 1.7802E7 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 55 55.0 1969-12-31 15:59:51.024 -200 4521993 -16857989904 NULL NULL 200 -400 -200 NULL NULL -55.0 1.7802E7 5.561802752182249E-5 -55 1.4464181818181818 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 36 36.0 1969-12-31 15:59:44.081 -200 -1267159917 4723972170576 NULL NULL 200 -400 -200 NULL NULL -36.0 1.7802E7 3.64045271051929E-5 -36 2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 41 41.0 1969-12-31 15:59:49.062 -200 -512762593 1911578946704 NULL NULL 200 -400 -200 NULL NULL -41.0 1.7802E7 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 24 24.0 1969-12-31 15:59:52.313 -200 1037704301 -3868561634128 NULL NULL 200 -400 -200 NULL NULL -24.0 1.7802E7 2.426968473679527E-5 -24 3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -41 -41.0 1969-12-31 16:00:02.969 -200 1295784269 -4830683754832 NULL NULL 200 -400 -200 NULL NULL 41.0 1.7802E7 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -41 -41.0 1969-12-31 16:00:11.565 -200 -1838021063 6852142522864 NULL NULL 200 -400 -200 NULL NULL 41.0 1.7802E7 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -51 -51.0 1969-12-31 16:00:02.011 -200 -595350658 2219467253024 NULL NULL 200 -400 -200 NULL NULL 51.0 1.7802E7 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -38 -38.0 1969-12-31 16:00:02.007 -200 -1627751298 6068256838944 NULL NULL 200 -400 -200 NULL NULL 38.0 1.7802E7 -3.842700083325918E-5 38 -2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -6 -6.0 1969-12-31 15:59:56.094 -200 -585807467 2183890236976 NULL NULL 200 -400 -200 NULL NULL 6.0 1.7802E7 -6.067421184198818E-6 6 -13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -29 -29.0 1969-12-31 16:00:03.116 -200 737068329 -2747790730512 NULL NULL 200 -400 -200 NULL NULL 29.0 1.7802E7 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -56 -56.0 1969-12-31 16:00:15.038 -200 1642029665 -6121486591120 NULL NULL 200 -400 -200 NULL NULL 56.0 1.7802E7 -5.6629264385855625E-5 56 -1.4205892857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 62 62.0 1969-12-31 15:59:46.338 -200 175991222 -656095275616 NULL NULL 200 -400 -200 NULL NULL -62.0 1.7802E7 6.269668557005445E-5 -62 1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -47 -47.0 1969-12-31 16:00:02.508 -200 1775269950 -6618206373600 NULL NULL 200 -400 -200 NULL NULL 47.0 1.7802E7 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -43 -43.0 1969-12-31 16:00:14.536 -200 -1530962879 5707429612912 NULL NULL 200 -400 -200 NULL NULL 43.0 1.7802E7 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 50 50.0 1969-12-31 16:00:15.232 -200 -51350287 191433869936 NULL NULL 200 -400 -200 NULL NULL -50.0 1.7802E7 5.056184320165681E-5 -50 1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:04.124 -200 -1205825630 4495317948640 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -7 -7.0 1969-12-31 15:59:50.845 -200 1245697310 -4643959571680 NULL NULL 200 -400 -200 NULL NULL 7.0 1.7802E7 -7.078658048231953E-6 7 -11.364714285714285 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 26 26.0 1969-12-31 16:00:05.219 -200 932710812 -3477145907136 NULL NULL 200 -400 -200 NULL NULL -26.0 1.7802E7 2.629215846486154E-5 -26 3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -53 -53.0 1969-12-31 15:59:58.158 -200 1905162359 -7102445274352 NULL NULL 200 -400 -200 NULL NULL 53.0 1.7802E7 -5.359555379375622E-5 53 -1.501 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 16:00:11.15 -200 740436530 -2760347383840 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -41 -41.0 1969-12-31 15:59:45.304 -200 1972217868 -7352428211904 NULL NULL 200 -400 -200 NULL NULL 41.0 1.7802E7 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:12.935 -200 1429852250 -5330489188000 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 --109813638 NULL NULL t32s57Cjt4a250qQgVNAB5T true -51 -51.0 1969-12-31 16:00:08.451 NULL -58941842 219735186976 109813638 1.09812774743E8 NULL NULL NULL 1.0 1.09812801023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --601502867 NULL NULL M152O true -51 -51.0 1969-12-31 16:00:08.451 NULL -425267321 1585396572688 601502867 6.01502003743E8 NULL NULL NULL 1.0 6.01502030023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --881630661 NULL NULL 3e27C1jTdTQPdvCWi4if true -51 -51.0 1969-12-31 16:00:08.451 NULL -309125967 1152421604976 881630661 8.81629797743E8 NULL NULL NULL 1.0 8.81629824023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --515203523 NULL NULL P2DNeo00PA7DJF0 false -51 -51.0 1969-12-31 16:00:08.451 NULL -332345391 1238983617648 515203523 5.15202659743E8 NULL NULL NULL 1.0 5.1520268602299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --916222455 NULL NULL dG8B5PQ3b85U362G6huu false -51 -51.0 1969-12-31 16:00:08.451 NULL -279202430 1040866659040 916222455 9.16221591743E8 NULL NULL NULL 1.0 9.16221618023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --885788893 NULL NULL LX6QHG6sEmBAIbA6e6Am24 false -51 -51.0 1969-12-31 16:00:08.451 NULL -324210434 1208656497952 885788893 8.85788029743E8 NULL NULL NULL 1.0 8.85788056023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1017266554 NULL NULL DU1m68i1Q7W3 false -51 -51.0 1969-12-31 16:00:08.451 NULL -145067516 540811699648 1017266554 1.017265690743E9 NULL NULL NULL 1.0 1.017265717023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --452945059 NULL NULL QbdFB1d7vfaM7 true -51 -51.0 1969-12-31 16:00:08.451 NULL -7309465 27249685520 452945059 4.52944195743E8 NULL NULL NULL 1.0 4.5294422202299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --375807166 NULL NULL K2uHR7U36540Kx6tC false -51 -51.0 1969-12-31 16:00:08.451 NULL -353931480 1319456557440 375807166 3.75806302743E8 NULL NULL NULL 1.0 3.7580632902299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --303254000 NULL NULL DHy1oyJ2887Mr5 true -51 -51.0 1969-12-31 16:00:08.451 NULL -64784934 241518233952 303254000 3.03253136743E8 NULL NULL NULL 1.0 3.0325316302299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --597089099 NULL NULL vsX2f2YM0vC5E21f1 true -51 -51.0 1969-12-31 16:00:08.451 NULL -106412768 396706799104 597089099 5.97088235743E8 NULL NULL NULL 1.0 5.97088262023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --943342622 NULL NULL 3w6XYq04J0Lb3Sv82eOV2HJ true -51 -51.0 1969-12-31 16:00:08.451 NULL -750731096 2798725525888 943342622 9.43341758743E8 NULL NULL NULL 1.0 9.43341785023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --949286785 NULL NULL XWuYuk5qpn5Khs3764E56 true -51 -51.0 1969-12-31 16:00:08.451 NULL -946341072 3527959516416 949286785 9.49285921743E8 NULL NULL NULL 1.0 9.49285948023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --833480226 NULL NULL rNGcxI3PkU2K true -51 -51.0 1969-12-31 16:00:08.451 NULL -498518747 1858477888816 833480226 8.33479362743E8 NULL NULL NULL 1.0 8.33479389023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --970918963 NULL NULL suoqdh false -51 -51.0 1969-12-31 16:00:08.451 NULL -588508542 2193959844576 970918963 9.70918099743E8 NULL NULL NULL 1.0 9.70918126023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --794175309 NULL NULL NIp47 false -51 -51.0 1969-12-31 16:00:08.451 NULL -283652605 1057456911440 794175309 7.94174445743E8 NULL NULL NULL 1.0 7.94174472023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --742561638 NULL NULL 34vL40uLcr11po3k false -51 -51.0 1969-12-31 16:00:08.451 NULL -655193302 2442560629856 742561638 7.42560774743E8 NULL NULL NULL 1.0 7.42560801023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --830610139 NULL NULL 3FD2bt1EIaA0YrK true -51 -51.0 1969-12-31 16:00:08.451 NULL -798375623 2976344322544 830610139 8.30609275743E8 NULL NULL NULL 1.0 8.30609302023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --711795817 NULL NULL 4hMaavAE false -51 -51.0 1969-12-31 16:00:08.451 NULL -578512565 2156694842320 711795817 7.11794953743E8 NULL NULL NULL 1.0 7.11794980023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --809162203 NULL NULL shMOr3b8w1F4F38D4wih0 true -51 -51.0 1969-12-31 16:00:08.451 NULL -47746898 178000435744 809162203 8.09161339743E8 NULL NULL NULL 1.0 8.09161366023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --491184664 NULL NULL u85A6B false -51 -51.0 1969-12-31 16:00:08.451 NULL -58002434 216233073952 491184664 4.91183800743E8 NULL NULL NULL 1.0 4.9118382702299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --554456306 NULL NULL 6JLTA0I2Jx60HU470LO false -51 -51.0 1969-12-31 16:00:08.451 NULL -248574679 926686403312 554456306 5.54455442743E8 NULL NULL NULL 1.0 5.54455469023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --339214974 NULL NULL UtriJV4U5N2J7M false -51 -51.0 1969-12-31 16:00:08.451 NULL -282992256 1054995130368 339214974 3.39214110743E8 NULL NULL NULL 1.0 3.3921413702299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --730289443 NULL NULL 2n2cwjWAp2R56c2GYtKHQf0i false -51 -51.0 1969-12-31 16:00:08.451 NULL -684626873 2552288982544 730289443 7.30288579743E8 NULL NULL NULL 1.0 7.30288606023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --486415983 NULL NULL 4U4HK false -51 -51.0 1969-12-31 16:00:08.451 NULL -92514745 344894969360 486415983 4.86415119743E8 NULL NULL NULL 1.0 4.8641514602299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --859482455 NULL NULL 14fnT7A11Y6fE false -51 -51.0 1969-12-31 16:00:08.451 NULL -851076402 3172812826656 859482455 8.59481591743E8 NULL NULL NULL 1.0 8.59481618023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1015510885 NULL NULL Kw7fOuw4DHeyXe2yg false -51 -51.0 1969-12-31 16:00:08.451 NULL -67812054 252803337312 1015510885 1.015510021743E9 NULL NULL NULL 1.0 1.015510048023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --919940926 NULL NULL i1P3Wlat5EnBugL24oS4I3 true -51 -51.0 1969-12-31 16:00:08.451 NULL -533395388 1988498006464 919940926 9.19940062743E8 NULL NULL NULL 1.0 9.19940089023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1039715238 NULL NULL oOt2v true -51 -51.0 1969-12-31 16:00:08.451 NULL -86361999 321957532272 1039715238 1.039714374743E9 NULL NULL NULL 1.0 1.039714401023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --733761968 NULL NULL c23S6Ky4w7Ld21lAbB true -51 -51.0 1969-12-31 16:00:08.451 NULL -713098110 2658429754080 733761968 7.33761104743E8 NULL NULL NULL 1.0 7.33761131023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --731427364 NULL NULL cb33ksHDf3lMrp0OW4dMdvos false -51 -51.0 1969-12-31 16:00:08.451 NULL -712994897 2658044976016 731427364 7.31426500743E8 NULL NULL NULL 1.0 7.31426527023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --954917203 NULL NULL 1M4eTm8OcOW2dAMV2V5slS1 true -51 -51.0 1969-12-31 16:00:08.451 NULL -710267209 2647876155152 954917203 9.54916339743E8 NULL NULL NULL 1.0 9.54916366023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --848947717 NULL NULL 34o2M3 false -51 -51.0 1969-12-31 16:00:08.451 NULL -150416216 560751653248 848947717 8.48946853743E8 NULL NULL NULL 1.0 8.48946880023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --738306196 NULL NULL NULL false -51 -51.0 1969-12-31 16:00:08.451 NULL -460430946 1716486566688 738306196 7.38305332743E8 NULL NULL NULL 1.0 7.38305359023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --647247257 NULL NULL 2C1S7MUYL5NWPARvQU false -51 -51.0 1969-12-31 16:00:08.451 NULL -450614378 1679890401184 647247257 6.47246393743E8 NULL NULL NULL 1.0 6.47246420023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --833225522 NULL NULL f448c4T81BR true -51 -51.0 1969-12-31 16:00:08.451 NULL -789796482 2944361284896 833225522 8.33224658743E8 NULL NULL NULL 1.0 8.33224685023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --413196097 NULL NULL NULL false -51 -51.0 1969-12-31 16:00:08.451 NULL -306198070 1141506404960 413196097 4.13195233743E8 NULL NULL NULL 1.0 4.1319526002299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --637509859 NULL NULL hCwu446fq4108mQ4x62Pr true -51 -51.0 1969-12-31 16:00:08.451 NULL -135810777 506302576656 637509859 6.37508995743E8 NULL NULL NULL 1.0 6.37509022023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --766298505 NULL NULL tKyw2O2N true -51 -51.0 1969-12-31 16:00:08.451 NULL -268630738 1001455391264 766298505 7.66297641743E8 NULL NULL NULL 1.0 7.66297668023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --887750610 NULL NULL ffT4cTjYf2NJ false -51 -51.0 1969-12-31 16:00:08.451 NULL -273952073 1021293328144 887750610 8.87749746743E8 NULL NULL NULL 1.0 8.87749773023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1003789565 NULL NULL dq1Ji5vGb4GVow42 false -51 -51.0 1969-12-31 16:00:08.451 NULL -505400643 1884133597104 1003789565 1.003788701743E9 NULL NULL NULL 1.0 1.003788728023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --319901788 NULL NULL q2bIHkxaKKv7uD false -51 -51.0 1969-12-31 16:00:08.451 NULL -149775876 558364465728 319901788 3.19900924743E8 NULL NULL NULL 1.0 3.1990095102299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --688179977 NULL NULL b true -51 -51.0 1969-12-31 16:00:08.451 NULL -6432 23978496 688179977 6.88179113743E8 NULL NULL NULL 1.0 6.88179140023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --460130999 NULL NULL 704TqKdO554m38WDk0W2g true -51 -51.0 1969-12-31 16:00:08.451 NULL -133397676 497306536128 460130999 4.60130135743E8 NULL NULL NULL 1.0 4.6013016202299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --435127410 NULL NULL 0CkUHn44bl6xbyYLk false -51 -51.0 1969-12-31 16:00:08.451 NULL -403415728 1503933833984 435127410 4.35126546743E8 NULL NULL NULL 1.0 4.3512657302299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --109479877 NULL NULL 4LQe2Pd4m640E58XFA true -51 -51.0 1969-12-31 16:00:08.451 NULL -17223890 64210661920 109479877 1.09479013743E8 NULL NULL NULL 1.0 1.09479040023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --316619185 NULL NULL 33cr1j true -51 -51.0 1969-12-31 16:00:08.451 NULL -223513974 833260095072 316619185 3.16618321743E8 NULL NULL NULL 1.0 3.1661834802299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --925336063 NULL NULL 060EnWLmWE4K8Pv false -51 -51.0 1969-12-31 16:00:08.451 NULL -477173411 1778902476208 925336063 9.25335199743E8 NULL NULL NULL 1.0 9.25335226023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --395475456 NULL NULL olV01YmQ01kUvC3EE85C0E false -51 -51.0 1969-12-31 16:00:08.451 NULL -12686112 47293825536 395475456 3.95474592743E8 NULL NULL NULL 1.0 3.9547461902299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --980072140 NULL NULL Jt7E0sR3X7V true -51 -51.0 1969-12-31 16:00:08.451 NULL -819889345 3056547478160 980072140 9.80071276743E8 NULL NULL NULL 1.0 9.80071303023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --726087078 NULL NULL qNaAh8CdJxxTG8y0 true -51 -51.0 1969-12-31 16:00:08.451 NULL -622509800 2320716534400 726087078 7.26086214743E8 NULL NULL NULL 1.0 7.26086241023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --239791677 NULL NULL 76Xl5E7ttiejsqcvfJmtNB0 true -51 -51.0 1969-12-31 16:00:08.451 NULL -54067111 201562189808 239791677 2.39790813743E8 NULL NULL NULL 1.0 2.39790840023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --457111770 NULL NULL F10SR3l5836pq7TCfYeGrEl1 true -51 -51.0 1969-12-31 16:00:08.451 NULL -107200626 399643933728 457111770 4.57110906743E8 NULL NULL NULL 1.0 4.5711093302299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1000804087 NULL NULL H8LCu4M2u4f1S true -51 -51.0 1969-12-31 16:00:08.451 NULL -873515594 3256466134432 1000804087 1.000803223743E9 NULL NULL NULL 1.0 1.000803250023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1060624784 NULL NULL Das7E73 true -51 -51.0 1969-12-31 16:00:08.451 NULL -941434751 3509668751728 1060624784 1.060623920743E9 NULL NULL NULL 1.0 1.060623947023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --602640740 NULL NULL s1K04o1 false -51 -51.0 1969-12-31 16:00:08.451 NULL -22423082 83593249696 602640740 6.02639876743E8 NULL NULL NULL 1.0 6.02639903023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --635141101 NULL NULL ss true -51 -51.0 1969-12-31 16:00:08.451 NULL -89010 331829280 635141101 6.35140237743E8 NULL NULL NULL 1.0 6.35140264023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --622956305 NULL NULL b4iTs false -51 -51.0 1969-12-31 16:00:08.451 NULL -485595911 1810301556208 622956305 6.22955441743E8 NULL NULL NULL 1.0 6.22955468023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --363032626 NULL NULL 0f4422CBSl true -51 -51.0 1969-12-31 16:00:08.451 NULL -73528173 274113028944 363032626 3.63031762743E8 NULL NULL NULL 1.0 3.6303178902299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --816457176 NULL NULL Dk6tb8PWF643qyp258O2 true -51 -51.0 1969-12-31 16:00:08.451 NULL -375462240 1399723230720 816457176 8.16456312743E8 NULL NULL NULL 1.0 8.16456339023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --264683279 NULL NULL sU7rit true -51 -51.0 1969-12-31 16:00:08.451 NULL -19844206 73979199968 264683279 2.64682415743E8 NULL NULL NULL 1.0 2.64682442023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --410541035 NULL NULL eDfHPeW364TY4A2Jhm true 8 8.0 1969-12-31 16:00:15.892 NULL -223774943 834232987504 410541035 4.10540171743E8 NULL NULL NULL 1.0 4.1054019802299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --436323820 NULL NULL p3DvmcsqP6xMf false 8 8.0 1969-12-31 16:00:15.892 NULL -333338916 1242687478848 436323820 4.36322956743E8 NULL NULL NULL 1.0 4.3632298302299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --932998902 NULL NULL kAr0ffWGEU7MHSKp true 8 8.0 1969-12-31 16:00:15.892 NULL -230462122 859162790816 932998902 9.32998038743E8 NULL NULL NULL 1.0 9.32998065023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --205395916 NULL NULL 2V6VBAtpi0QQD true 8 8.0 1969-12-31 16:00:15.892 NULL -8537604 31828187712 205395916 2.05395052743E8 NULL NULL NULL 1.0 2.05395079023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --617263915 NULL NULL 8IgBmN0xkLDIlj2y false 8 8.0 1969-12-31 16:00:15.892 NULL -319213460 1190027778880 617263915 6.17263051743E8 NULL NULL NULL 1.0 6.17263078023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1058897881 NULL NULL 6fPk0A false 8 8.0 1969-12-31 16:00:15.892 NULL -800997317 2986117997776 1058897881 1.058897017743E9 NULL NULL NULL 1.0 1.058897044023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --718664327 NULL NULL tm85HNL7au4na false 8 8.0 1969-12-31 16:00:15.892 NULL -142426080 530964426240 718664327 7.18663463743E8 NULL NULL NULL 1.0 7.18663490023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --799860725 NULL NULL b01GFHiSj4Yig1tk4bSex true 8 8.0 1969-12-31 16:00:15.892 NULL -87733477 327070402256 799860725 7.99859861743E8 NULL NULL NULL 1.0 7.99859888023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --752438482 NULL NULL 0rNlSy15Xy1Sx true 8 8.0 1969-12-31 16:00:15.892 NULL -407346886 1518589191008 752438482 7.52437618743E8 NULL NULL NULL 1.0 7.52437645023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --603601682 NULL NULL poE6hx8xV36vG true 8 8.0 1969-12-31 16:00:15.892 NULL -24030296 89584943488 603601682 6.03600818743E8 NULL NULL NULL 1.0 6.03600845023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --743039371 NULL NULL v5Ai3KlB6mT false 8 8.0 1969-12-31 16:00:15.892 NULL -411191076 1532920331328 743039371 7.43038507743E8 NULL NULL NULL 1.0 7.43038534023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --20301111 NULL NULL e13dNAo71UXm4Yt1u false 8 8.0 1969-12-31 16:00:15.892 NULL -19748892 73623869376 20301111 2.0300247743E7 NULL NULL NULL 1.0 2.0300274023000002E7 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --466511459 NULL NULL qny4OOT34x7XVrWp5Eh true 8 8.0 1969-12-31 16:00:15.892 NULL -228360387 851327522736 466511459 4.66510595743E8 NULL NULL NULL 1.0 4.6651062202299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --851067861 NULL NULL lD0h1L8852501n false 8 8.0 1969-12-31 16:00:15.892 NULL -294767825 1098894451600 851067861 8.51066997743E8 NULL NULL NULL 1.0 8.51067024023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --883321517 NULL NULL RJsFsi3a85svGBfT8 true 8 8.0 1969-12-31 16:00:15.892 NULL -738731063 2753989402864 883321517 8.83320653743E8 NULL NULL NULL 1.0 8.83320680023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --528897930 NULL NULL TNaUMA6If0kmHQp2xRhqr false 8 8.0 1969-12-31 16:00:15.892 NULL -438530877 1634843109456 528897930 5.28897066743E8 NULL NULL NULL 1.0 5.2889709302299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --380359762 NULL NULL bfE8u5XQPK7ie4o6wE1Tfv true 8 8.0 1969-12-31 16:00:15.892 NULL -74313673 277041372944 380359762 3.80358898743E8 NULL NULL NULL 1.0 3.8035892502299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --441306270 NULL NULL iEb04t2x333EF5wHoKRs6oKB false 8 8.0 1969-12-31 16:00:15.892 NULL -333509919 1243324978032 441306270 4.41305406743E8 NULL NULL NULL 1.0 4.4130543302299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --712811861 NULL NULL qC2BA3oYp true 8 8.0 1969-12-31 16:00:15.892 NULL -56014923 208823632944 712811861 7.12810997743E8 NULL NULL NULL 1.0 7.12811024023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --433146870 NULL NULL mw3S8 true 8 8.0 1969-12-31 16:00:15.892 NULL -410751871 1531282975088 433146870 4.33146006743E8 NULL NULL NULL 1.0 4.3314603302299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --852864663 NULL NULL bMKsgu5OdWu4vjTa1nt true 8 8.0 1969-12-31 16:00:15.892 NULL -762739286 2843492058208 852864663 8.52863799743E8 NULL NULL NULL 1.0 8.52863826023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --353397036 NULL NULL 3LWXOlGelGXQu64Lxws true 8 8.0 1969-12-31 16:00:15.892 NULL -319840080 1192363818240 353397036 3.53396172743E8 NULL NULL NULL 1.0 3.5339619902299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --596721652 NULL NULL 07Hofhidd5ClnNx8jTl1 true 8 8.0 1969-12-31 16:00:15.892 NULL -70511540 262867021120 596721652 5.96720788743E8 NULL NULL NULL 1.0 5.96720815023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --718063540 NULL NULL 1wb02g3mc true 8 8.0 1969-12-31 16:00:15.892 NULL -429105776 1599706332928 718063540 7.18062676743E8 NULL NULL NULL 1.0 7.18062703023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --616147774 NULL NULL PUjn241mg3Qfjj6nG51 true 8 8.0 1969-12-31 16:00:15.892 NULL -98989966 369034593248 616147774 6.16146910743E8 NULL NULL NULL 1.0 6.16146937023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --792520485 NULL NULL rhOWNGEuth8f875WLX false 8 8.0 1969-12-31 16:00:15.892 NULL -712238882 2655226552096 792520485 7.92519621743E8 NULL NULL NULL 1.0 7.92519648023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --863239524 NULL NULL Nr3652 false 8 8.0 1969-12-31 16:00:15.892 NULL -302672812 1128364243136 863239524 8.63238660743E8 NULL NULL NULL 1.0 8.63238687023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --767080360 NULL NULL 5dENnx6VjU14iaLFV0IR true 8 8.0 1969-12-31 16:00:15.892 NULL -725406408 2704315089024 767080360 7.67079496743E8 NULL NULL NULL 1.0 7.67079523023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --605065222 NULL NULL GciA5Y0kP true 8 8.0 1969-12-31 16:00:15.892 NULL -73703653 274767218384 605065222 6.05064358743E8 NULL NULL NULL 1.0 6.05064385023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1063164541 NULL NULL 1NydRD5y5o3 false 8 8.0 1969-12-31 16:00:15.892 NULL -74907656 279255741568 1063164541 1.063163677743E9 NULL NULL NULL 1.0 1.063163704023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --965597463 NULL NULL b0G65a66732y6yE65hQ0 false 8 8.0 1969-12-31 16:00:15.892 NULL -922745115 3439993788720 965597463 9.65596599743E8 NULL NULL NULL 1.0 9.65596626023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --286232918 NULL NULL DuLQkL6 true 8 8.0 1969-12-31 16:00:15.892 NULL -70839972 264091415616 286232918 2.86232054743E8 NULL NULL NULL 1.0 2.8623208102299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --845450039 NULL NULL HG52N6amN false 8 8.0 1969-12-31 16:00:15.892 NULL -374765565 1397126026320 845450039 8.45449175743E8 NULL NULL NULL 1.0 8.45449202023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --853693520 NULL NULL i6G060 true 8 8.0 1969-12-31 16:00:15.892 NULL -683211043 2547010768304 853693520 8.53692656743E8 NULL NULL NULL 1.0 8.53692683023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --575848794 NULL NULL H37833CDTytf1mp4 false 8 8.0 1969-12-31 16:00:15.892 NULL -510322821 1902483476688 575848794 5.75847930743E8 NULL NULL NULL 1.0 5.75847957023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --654132946 NULL NULL 1emD5WuAWePl22 true 8 8.0 1969-12-31 16:00:15.892 NULL -35916257 133895806096 654132946 6.54132082743E8 NULL NULL NULL 1.0 6.54132109023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --885777373 NULL NULL F3wAY4D4XxYt true 8 8.0 1969-12-31 16:00:15.892 NULL -582564574 2171800731872 885777373 8.85776509743E8 NULL NULL NULL 1.0 8.85776536023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --388258881 NULL NULL EjY6DSn57x1v5h false 8 8.0 1969-12-31 16:00:15.892 NULL -316801619 1181036435632 388258881 3.88258017743E8 NULL NULL NULL 1.0 3.8825804402299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1020120834 NULL NULL 6Ob80MBP350rI275 true 8 8.0 1969-12-31 16:00:15.892 NULL -100465694 374536107232 1020120834 1.020119970743E9 NULL NULL NULL 1.0 1.020119997023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --448325367 NULL NULL v0uSTRyX5A4W false 8 8.0 1969-12-31 16:00:15.892 NULL -208895713 778763218064 448325367 4.48324503743E8 NULL NULL NULL 1.0 4.4832453002299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --831468557 NULL NULL 5ealv0e6tmDnoS0bOmX false 8 8.0 1969-12-31 16:00:15.892 NULL -376760963 1404564870064 831468557 8.31467693743E8 NULL NULL NULL 1.0 8.31467720023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --993291633 NULL NULL 8reJCOg48gHGHDs true 8 8.0 1969-12-31 16:00:15.892 NULL -861531376 3211788969728 993291633 9.93290769743E8 NULL NULL NULL 1.0 9.93290796023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --448180672 NULL NULL BJTr1JVEjCQMQ0 false 8 8.0 1969-12-31 16:00:15.892 NULL -301072095 1122396770160 448180672 4.48179808743E8 NULL NULL NULL 1.0 4.4817983502299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --848015950 NULL NULL 6shc3Y true 8 8.0 1969-12-31 16:00:15.892 NULL -397174440 1480666312320 848015950 8.48015086743E8 NULL NULL NULL 1.0 8.48015113023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --928500968 NULL NULL 34oSgU32X true 8 8.0 1969-12-31 16:00:15.892 NULL -831143834 3098504213152 928500968 9.28500104743E8 NULL NULL NULL 1.0 9.28500131023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1016835101 NULL NULL Md2lY0T7reBu false 8 8.0 1969-12-31 16:00:15.892 NULL -491294009 1831544065552 1016835101 1.016834237743E9 NULL NULL NULL 1.0 1.016834264023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --173590840 NULL NULL C77Mm2Bv5tV32bB3IHK true 8 8.0 1969-12-31 16:00:15.892 NULL -8056960 30036346880 173590840 1.73589976743E8 NULL NULL NULL 1.0 1.73590003023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --221091443 NULL NULL 5EjVb30Y5 false 8 8.0 1969-12-31 16:00:15.892 NULL -121073279 451361184112 221091443 2.21090579743E8 NULL NULL NULL 1.0 2.21090606023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --660093358 NULL NULL jH7VH38C77M08h5GNPp8M false 8 8.0 1969-12-31 16:00:15.892 NULL -28334114 105629576992 660093358 6.60092494743E8 NULL NULL NULL 1.0 6.60092521023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --522373381 NULL NULL 0AkI4K24GeFC1Aa2Sr6 false 8 8.0 1969-12-31 16:00:15.892 NULL -17631238 65729255264 522373381 5.22372517743E8 NULL NULL NULL 1.0 5.2237254402299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1068247011 NULL NULL dPbX4jd1v47r1bB6506si false 8 8.0 1969-12-31 16:00:15.892 NULL -729456614 2719414256992 1068247011 1.068246147743E9 NULL NULL NULL 1.0 1.068246174023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --381027711 NULL NULL VU42OCI8nDXA0M false 8 8.0 1969-12-31 16:00:15.892 NULL -292812099 1091603505072 381027711 3.81026847743E8 NULL NULL NULL 1.0 3.8102687402299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1049984461 NULL NULL qUY8Rl34NWRg false 8 8.0 1969-12-31 16:00:15.892 NULL -247067895 921069112560 1049984461 1.049983597743E9 NULL NULL NULL 1.0 1.049983624023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --485104169 NULL NULL aecE60o4 true 8 8.0 1969-12-31 16:00:15.892 NULL -276230204 1029786200512 485104169 4.85103305743E8 NULL NULL NULL 1.0 4.8510333202299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --727158360 NULL NULL 0uA7It5CJu16eJ4JS1uuxNJ false 8 8.0 1969-12-31 16:00:15.892 NULL -89010 331829280 727158360 7.27157496743E8 NULL NULL NULL 1.0 7.27157523023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --923400421 NULL NULL MJ7Ej4tBYS8l2mK true 8 8.0 1969-12-31 16:00:15.892 NULL -67708318 252416609504 923400421 9.23399557743E8 NULL NULL NULL 1.0 9.23399584023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --980511555 NULL NULL 1TBB2v0eBqlr4c7d true 8 8.0 1969-12-31 16:00:15.892 NULL -890261594 3318895222432 980511555 9.80510691743E8 NULL NULL NULL 1.0 9.80510718023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1039495786 NULL NULL b0BEyNEe1bvQ true 8 8.0 1969-12-31 16:00:15.892 NULL -760564106 2835382987168 1039495786 1.039494922743E9 NULL NULL NULL 1.0 1.039494949023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --335475138 NULL NULL TrVt3076w4QSXF83Io true 8 8.0 1969-12-31 16:00:15.892 NULL -205461721 765961295888 335475138 3.35474274743E8 NULL NULL NULL 1.0 3.3547430102299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --937557606 NULL NULL 2251WSv5eA2l6WqesdKPM2 true 8 8.0 1969-12-31 16:00:15.892 NULL -532708003 1985935435184 937557606 9.37556742743E8 NULL NULL NULL 1.0 9.37556769023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --301678323 NULL NULL C63fh05R7De33TmqtehvIfxv true 8 8.0 1969-12-31 16:00:15.892 NULL -54080756 201613058368 301678323 3.01677459743E8 NULL NULL NULL 1.0 3.0167748602299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --914887396 NULL NULL o2IY6 true 8 8.0 1969-12-31 16:00:15.892 NULL -558119393 2080669097104 914887396 9.14886532743E8 NULL NULL NULL 1.0 9.14886559023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --188165330 NULL NULL 22RO52O0M1M01M0Uk74eGx false 8 8.0 1969-12-31 16:00:15.892 NULL -63118955 235307464240 188165330 1.88164466743E8 NULL NULL NULL 1.0 1.88164493023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --298110501 NULL NULL JKmY3010a4e false 8 8.0 1969-12-31 16:00:15.892 NULL -159906495 596131413360 298110501 2.98109637743E8 NULL NULL NULL 1.0 2.9810966402299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --600422927 NULL NULL A30e7a8ia36g25YQc8xTXBgB true 8 8.0 1969-12-31 16:00:15.892 NULL -478703183 1784605466224 600422927 6.00422063743E8 NULL NULL NULL 1.0 6.00422090023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --819152895 NULL NULL NULL true 8 8.0 1969-12-31 16:00:15.892 NULL -67009042 249809708576 819152895 8.19152031743E8 NULL NULL NULL 1.0 8.19152058023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1046913669 NULL NULL 40r4yyU6T0A0Mekf24k false 8 8.0 1969-12-31 16:00:15.892 NULL -90393132 336985596096 1046913669 1.046912805743E9 NULL NULL NULL 1.0 1.046912832023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --596698349 NULL NULL 142kQq4fbeX3mT false 8 8.0 1969-12-31 16:00:15.892 NULL -423275825 1577972275600 596698349 5.96697485743E8 NULL NULL NULL 1.0 5.96697512023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1039292315 NULL NULL 07488p5vb4d2 true 8 8.0 1969-12-31 16:00:15.892 NULL -432155916 1611077254848 1039292315 1.039291451743E9 NULL NULL NULL 1.0 1.039291478023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 -683567667 NULL NULL 4kMasVoB7lX1wc5i64bNk true 8 8.0 1969-12-31 16:00:15.892 NULL 1556140363 -5801291273264 -683567667 -6.83568530257E8 NULL NULL NULL 1.0 -6.83568503977E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1024321144 NULL NULL CE22Wjuk7d20ouN true 8 8.0 1969-12-31 16:00:15.892 NULL -94624654 352760710112 1024321144 1.024320280743E9 NULL NULL NULL 1.0 1.024320307023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1058286942 NULL NULL R6q656btrqQM6a5nQ4GcVg true 8 8.0 1969-12-31 16:00:15.892 NULL -922041114 3437369272992 1058286942 1.058286078743E9 NULL NULL NULL 1.0 1.058286105023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --43263468 NULL NULL 2Amg22mSeD4C6OL64 false 8 8.0 1969-12-31 16:00:15.892 NULL -645672 2407065216 43263468 4.3262604743E7 NULL NULL NULL 1.0 4.3262631023E7 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --711576614 NULL NULL cb5LPuiF true 8 8.0 1969-12-31 16:00:15.892 NULL -534956316 1994317146048 711576614 7.11575750743E8 NULL NULL NULL 1.0 7.11575777023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1063745167 NULL NULL L47nqo true 8 8.0 1969-12-31 16:00:15.892 NULL -68741114 256266872992 1063745167 1.063744303743E9 NULL NULL NULL 1.0 1.063744330023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --670908417 NULL NULL NULL false 8 8.0 1969-12-31 16:00:15.892 NULL -228957331 853552929968 670908417 6.70907553743E8 NULL NULL NULL 1.0 6.70907580023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -44 -44.0 1969-12-31 16:00:00.247 -7196 1752212736 -6532249079808 NULL NULL 7196 -14392 -7196 NULL NULL 44.0 6.4051596E8 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 15:59:55.105 -7196 -556482589 2074567091792 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 15:59:53.129 -7196 -115057207 428933267696 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 11 11.0 1969-12-31 16:00:08.857 -7196 -1887946332 7038263925696 NULL NULL 7196 -14392 -7196 NULL NULL -11.0 6.4051596E8 1.1123605504364498E-5 -11 7.232090909090909 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 18 18.0 1969-12-31 16:00:05.804 -7196 423975149 -1580579355472 NULL NULL 7196 -14392 -7196 NULL NULL -18.0 6.4051596E8 1.820226355259645E-5 -18 4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 11 11.0 1969-12-31 15:59:54.133 -7196 1182969108 -4410108834624 NULL NULL 7196 -14392 -7196 NULL NULL -11.0 6.4051596E8 1.1123605504364498E-5 -11 7.232090909090909 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 15:59:50.54 -7196 -741906438 2765827200864 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:00.754 -7196 1237005923 -4611558080944 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 10 10.0 1969-12-31 15:59:58.876 -7196 -543560979 2026395329712 NULL NULL 7196 -14392 -7196 NULL NULL -10.0 6.4051596E8 1.0112368640331362E-5 -10 7.955299999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 16:00:07.588 -7196 -2036513617 7592122764176 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 40 40.0 1969-12-31 16:00:08.06 -7196 -916017240 3414912270720 NULL NULL 7196 -14392 -7196 NULL NULL -40.0 6.4051596E8 4.044947456132545E-5 -40 1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 51 51.0 1969-12-31 16:00:10.321 -7196 1836737728 -6847358249984 NULL NULL 7196 -14392 -7196 NULL NULL -51.0 6.4051596E8 5.157308006568995E-5 -51 1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 16:00:06.132 -7196 1442623588 -5378100736064 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 15:59:57.86 -7196 -26309289 98081029392 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -15 -15.0 1969-12-31 15:59:55.626 -7196 1509584426 -5627730740128 NULL NULL 7196 -14392 -7196 NULL NULL 15.0 6.4051596E8 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 35 35.0 1969-12-31 16:00:11.356 -7196 1004273023 -3743929829744 NULL NULL 7196 -14392 -7196 NULL NULL -35.0 6.4051596E8 3.5393290241159765E-5 -35 2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -25 -25.0 1969-12-31 15:59:50.595 -7196 439358934 -1637930105952 NULL NULL 7196 -14392 -7196 NULL NULL 25.0 6.4051596E8 -2.5280921600828406E-5 25 -3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 15:59:52.31 -7196 -662490261 2469763693008 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -8 -8.0 1969-12-31 15:59:43.874 -7196 -1877568778 6999576404384 NULL NULL 7196 -14392 -7196 NULL NULL 8.0 6.4051596E8 -8.08989491226509E-6 8 -9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 31 31.0 1969-12-31 16:00:01.849 -7196 100195163 -373527567664 NULL NULL 7196 -14392 -7196 NULL NULL -31.0 6.4051596E8 3.134834278502722E-5 -31 2.566225806451613 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:11.402 -7196 2125230435 -7922859061680 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -58 -58.0 1969-12-31 15:59:47.859 -7196 -1770443874 6600214762272 NULL NULL 7196 -14392 -7196 NULL NULL 58.0 6.4051596E8 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 38 38.0 1969-12-31 15:59:57.048 -7196 806488245 -3006588177360 NULL NULL 7196 -14392 -7196 NULL NULL -38.0 6.4051596E8 3.842700083325918E-5 -38 2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:15.004 -7196 -653683931 2436933694768 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -53 -53.0 1969-12-31 16:00:11.36 -7196 -1357789899 5061840743472 NULL NULL 7196 -14392 -7196 NULL NULL 53.0 6.4051596E8 -5.359555379375622E-5 53 -1.501 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 28 28.0 1969-12-31 16:00:06.092 -7196 -776650874 2895354458272 NULL NULL 7196 -14392 -7196 NULL NULL -28.0 6.4051596E8 2.8314632192927813E-5 -28 2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -9 -9.0 1969-12-31 16:00:13.473 -7196 1650584069 -6153377409232 NULL NULL 7196 -14392 -7196 NULL NULL 9.0 6.4051596E8 -9.101131776298225E-6 9 -8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 15:59:44.947 -7196 -550152914 2050970063392 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 15:59:58.214 -7196 974109477 -3631480130256 NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -32 -32.0 1969-12-31 16:00:00.527 -7196 -408156678 1521608095584 NULL NULL 7196 -14392 -7196 NULL NULL 32.0 6.4051596E8 -3.235957964906036E-5 32 -2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 15:59:48.12 -7196 1658892440 -6184351016320 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -59 -59.0 1969-12-31 16:00:13.15 -7196 -1604890000 5983029920000 NULL NULL 7196 -14392 -7196 NULL NULL 59.0 6.4051596E8 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 15:59:48.734 -7196 1602156586 -5972839752608 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 16:00:07.333 -7196 -244388115 911078892720 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -30 -30.0 1969-12-31 15:59:44.281 -7196 1385303486 -5164411395808 NULL NULL 7196 -14392 -7196 NULL NULL 30.0 6.4051596E8 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -60 -60.0 1969-12-31 16:00:10.618 -7196 -68838726 256630770528 NULL NULL 7196 -14392 -7196 NULL NULL 60.0 6.4051596E8 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 46 46.0 1969-12-31 16:00:05.226 -7196 275575541 -1027345616848 NULL NULL 7196 -14392 -7196 NULL NULL -46.0 6.4051596E8 4.651689574552426E-5 -46 1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -38 -38.0 1969-12-31 16:00:01.282 -7196 528807212 -1971393286336 NULL NULL 7196 -14392 -7196 NULL NULL 38.0 6.4051596E8 -3.842700083325918E-5 38 -2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -6 -6.0 1969-12-31 15:59:58.329 -7196 -1416094043 5279198592304 NULL NULL 7196 -14392 -7196 NULL NULL 6.0 6.4051596E8 -6.067421184198818E-6 6 -13.258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 17 17.0 1969-12-31 16:00:02.436 -7196 -504009135 1878946055280 NULL NULL 7196 -14392 -7196 NULL NULL -17.0 6.4051596E8 1.7191026688563315E-5 -17 4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 16:00:05.43 -7196 1826915108 -6810739522624 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 15:59:55.9 -7196 1542429000 -5750175312000 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -5 -5.0 1969-12-31 16:00:16.107 -7196 1569040903 -5849384486384 NULL NULL 7196 -14392 -7196 NULL NULL 5.0 6.4051596E8 -5.056184320165681E-6 5 -15.910599999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 18 18.0 1969-12-31 15:59:55.065 -7196 667671386 -2489078927008 NULL NULL 7196 -14392 -7196 NULL NULL -18.0 6.4051596E8 1.820226355259645E-5 -18 4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -20 -20.0 1969-12-31 15:59:53.648 -7196 -304452756 1134999874368 NULL NULL 7196 -14392 -7196 NULL NULL 20.0 6.4051596E8 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -2 -2.0 1969-12-31 16:00:06.498 -7196 1604468020 -5981456778560 NULL NULL 7196 -14392 -7196 NULL NULL 2.0 6.4051596E8 -2.0224737280662724E-6 2 -39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 33 79.553 1969-12-31 16:00:00.761 -7196 514550698 -1918245002144 NULL NULL 7196 -14392 -7196 NULL NULL -79.553 6.4051596E8 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 16:00:08.171 -7196 -1216208847 4534026581616 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -5 -5.0 1969-12-31 15:59:43.948 -7196 -1556798997 5803746660816 NULL NULL 7196 -14392 -7196 NULL NULL 5.0 6.4051596E8 -5.056184320165681E-6 5 -15.910599999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 18 18.0 1969-12-31 15:59:43.854 -7196 307005585 -1144516820880 NULL NULL 7196 -14392 -7196 NULL NULL -18.0 6.4051596E8 1.820226355259645E-5 -18 4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 15:59:46.019 -7196 1086107721 -4049009583888 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 12 12.0 1969-12-31 15:59:49.316 -7196 503273510 -1876203645280 NULL NULL 7196 -14392 -7196 NULL NULL -12.0 6.4051596E8 1.2134842368397635E-5 -12 6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 26 26.0 1969-12-31 16:00:04.233 -7196 -607051573 2263088264144 NULL NULL 7196 -14392 -7196 NULL NULL -26.0 6.4051596E8 2.629215846486154E-5 -26 3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 51 51.0 1969-12-31 16:00:15.668 -7196 2091591361 -7797452593808 NULL NULL 7196 -14392 -7196 NULL NULL -51.0 6.4051596E8 5.157308006568995E-5 -51 1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -60 -60.0 1969-12-31 15:59:52.408 -7196 1516314750 -5652821388000 NULL NULL 7196 -14392 -7196 NULL NULL 60.0 6.4051596E8 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 16:00:03.506 -7196 1893922957 -7060544783696 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -33 -33.0 1969-12-31 16:00:10.959 -7196 1689322288 -6297793489664 NULL NULL 7196 -14392 -7196 NULL NULL 33.0 6.4051596E8 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 15:59:48.035 -7196 1237548317 -4613580125776 NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 48 48.0 1969-12-31 16:00:16.19 -7196 624835112 -2329385297536 NULL NULL 7196 -14392 -7196 NULL NULL -48.0 6.4051596E8 4.853936947359054E-5 -48 1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 37 37.0 1969-12-31 15:59:53.876 -7196 -1880066724 7008888747072 NULL NULL 7196 -14392 -7196 NULL NULL -37.0 6.4051596E8 3.741576396922604E-5 -37 2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:09.441 -7196 632897807 -2359443024496 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -14 -14.0 1969-12-31 16:00:11.065 -7196 -1552199500 5786599736000 NULL NULL 7196 -14392 -7196 NULL NULL 14.0 6.4051596E8 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 56 56.0 1969-12-31 15:59:55.667 -7196 -2145481991 7998356862448 NULL NULL 7196 -14392 -7196 NULL NULL -56.0 6.4051596E8 5.6629264385855625E-5 -56 1.4205892857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 15:59:46.891 -7196 -1653550667 6164436886576 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -19 -19.0 1969-12-31 16:00:03.381 -7196 733482783 -2734423815024 NULL NULL 7196 -14392 -7196 NULL NULL 19.0 6.4051596E8 -1.921350041662959E-5 19 -4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 34 34.0 1969-12-31 15:59:58.264 -7196 -624089536 2326605790208 NULL NULL 7196 -14392 -7196 NULL NULL -34.0 6.4051596E8 3.438205337712663E-5 -34 2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 15:59:52.092 -7196 1693400306 -6312996340768 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -50 -50.0 1969-12-31 15:59:52.424 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 50.0 6.4051596E8 -5.056184320165681E-5 50 -1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -47 -47.0 1969-12-31 16:00:10.274 -7196 1481273634 -5522188107552 NULL NULL 7196 -14392 -7196 NULL NULL 47.0 6.4051596E8 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:03.544 -7196 -1475373169 5500191174032 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 9 9.0 1969-12-31 15:59:48.083 -7196 153657865 -572836520720 NULL NULL 7196 -14392 -7196 NULL NULL -9.0 6.4051596E8 9.101131776298225E-6 -9 8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 15:59:51.992 -7196 -846262106 3154865131168 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -18 -18.0 1969-12-31 15:59:51.453 -7196 1088538866 -4058072892448 NULL NULL 7196 -14392 -7196 NULL NULL 18.0 6.4051596E8 -1.820226355259645E-5 18 -4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 15:59:58.615 -7196 2121169664 -7907720507392 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 59 59.0 1969-12-31 16:00:03.671 -7196 -950636550 3543973058400 NULL NULL 7196 -14392 -7196 NULL NULL -59.0 6.4051596E8 5.966297497795504E-5 -59 1.3483559322033898 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -26 -26.0 1969-12-31 15:59:46.847 -7196 -71373423 266080120944 NULL NULL 7196 -14392 -7196 NULL NULL 26.0 6.4051596E8 -2.629215846486154E-5 26 -3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 27 27.0 1969-12-31 15:59:56.31 -7196 1007177734 -3754758592352 NULL NULL 7196 -14392 -7196 NULL NULL -27.0 6.4051596E8 2.7303395328894677E-5 -27 2.946407407407407 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 33 33.0 1969-12-31 16:00:07.421 -7196 -1679016561 6259373739408 NULL NULL 7196 -14392 -7196 NULL NULL -33.0 6.4051596E8 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -24 -24.0 1969-12-31 16:00:08.839 -7196 733639253 -2735007135184 NULL NULL 7196 -14392 -7196 NULL NULL 24.0 6.4051596E8 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 15:59:45.811 -7196 -595634900 2220526907200 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 42 42.0 1969-12-31 16:00:16.251 -7196 -1981638429 7387548063312 NULL NULL 7196 -14392 -7196 NULL NULL -42.0 6.4051596E8 4.247194828939172E-5 -42 1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 7 7.0 1969-12-31 16:00:13.807 -7196 772100395 -2878390272560 NULL NULL 7196 -14392 -7196 NULL NULL -7.0 6.4051596E8 7.078658048231953E-6 -7 11.364714285714285 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -46 -46.0 1969-12-31 16:00:07.744 -7196 -1737647990 6477951706720 NULL NULL 7196 -14392 -7196 NULL NULL 46.0 6.4051596E8 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 32 32.0 1969-12-31 16:00:15.868 -7196 -1323995873 4935856614544 NULL NULL 7196 -14392 -7196 NULL NULL -32.0 6.4051596E8 3.235957964906036E-5 -32 2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 15:59:49.304 -7196 -1105725122 4122143254816 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 16:00:08.615 -7196 965505355 -3599403963440 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 55 55.0 1969-12-31 15:59:56.568 -7196 468599417 -1746938626576 NULL NULL 7196 -14392 -7196 NULL NULL -55.0 6.4051596E8 5.561802752182249E-5 -55 1.4464181818181818 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -58 -58.0 1969-12-31 15:59:55.857 -7196 -825174557 3076250748496 NULL NULL 7196 -14392 -7196 NULL NULL 58.0 6.4051596E8 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 16:00:12.454 -7196 -2175533 8110387024 NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -57 -57.0 1969-12-31 15:59:44.539 -7196 1839592407 -6858000493296 NULL NULL 7196 -14392 -7196 NULL NULL 57.0 6.4051596E8 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -42 -42.0 1969-12-31 15:59:45.244 -7196 -1235289105 4605157783440 NULL NULL 7196 -14392 -7196 NULL NULL 42.0 6.4051596E8 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -47 -47.0 1969-12-31 16:00:01.673 -7196 1013745772 -3779244238016 NULL NULL 7196 -14392 -7196 NULL NULL 47.0 6.4051596E8 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:00.951 -7196 -1533227484 5715872060352 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:12.163 -7196 1971558716 -7349970893248 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 16:00:03.134 -7196 -1101137915 4105042147120 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 38 38.0 1969-12-31 16:00:00.272 -7196 -293368494 1093677745632 NULL NULL 7196 -14392 -7196 NULL NULL -38.0 6.4051596E8 3.842700083325918E-5 -38 2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 16:00:09.519 -7196 2117650702 -7894601817056 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 9 9.0 1969-12-31 15:59:46 -7196 -2132536965 7950097805520 NULL NULL 7196 -14392 -7196 NULL NULL -9.0 6.4051596E8 9.101131776298225E-6 -9 8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 42 42.0 1969-12-31 15:59:50.19 -7196 -803379017 2994996975376 NULL NULL 7196 -14392 -7196 NULL NULL -42.0 6.4051596E8 4.247194828939172E-5 -42 1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 16:00:02.221 -7196 -1680281858 6264090766624 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 16:00:06.848 -7196 1415466231 -5276858109168 NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -16 -16.0 1969-12-31 16:00:06.481 -7196 1979538716 -7379720333248 NULL NULL 7196 -14392 -7196 NULL NULL 16.0 6.4051596E8 -1.617978982453018E-5 16 -4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -12 -12.0 1969-12-31 15:59:51.038 -7196 -1938621277 7227180120656 NULL NULL 7196 -14392 -7196 NULL NULL 12.0 6.4051596E8 -1.2134842368397635E-5 12 -6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 16:00:12.388 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -8 -8.0 1969-12-31 16:00:09.994 -7196 -1313542468 4896886320704 NULL NULL 7196 -14392 -7196 NULL NULL 8.0 6.4051596E8 -8.08989491226509E-6 8 -9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 59 59.0 1969-12-31 16:00:10.956 -7196 -1137754500 4241548776000 NULL NULL 7196 -14392 -7196 NULL NULL -59.0 6.4051596E8 5.966297497795504E-5 -59 1.3483559322033898 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 34 34.0 1969-12-31 16:00:12.502 -7196 1539208529 -5738169396112 NULL NULL 7196 -14392 -7196 NULL NULL -34.0 6.4051596E8 3.438205337712663E-5 -34 2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 15:59:45.518 -7196 1726448718 -6436200820704 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 53 53.0 1969-12-31 16:00:00.557 -7196 1366995402 -5096158858656 NULL NULL 7196 -14392 -7196 NULL NULL -53.0 6.4051596E8 5.359555379375622E-5 -53 1.501 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -47 -47.0 1969-12-31 16:00:00.555 -7196 -1982329364 7390123868992 NULL NULL 7196 -14392 -7196 NULL NULL 47.0 6.4051596E8 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 5 5.0 1969-12-31 15:59:44.401 -7196 -1716824974 6400323503072 NULL NULL 7196 -14392 -7196 NULL NULL -5.0 6.4051596E8 5.056184320165681E-6 -5 15.910599999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 15:59:51.116 -7196 -1888550510 7040516301280 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 17 17.0 1969-12-31 16:00:01.235 -7196 1128808489 -4208198046992 NULL NULL 7196 -14392 -7196 NULL NULL -17.0 6.4051596E8 1.7191026688563315E-5 -17 4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -48 -48.0 1969-12-31 16:00:03.188 -7196 -1232188884 4593600159552 NULL NULL 7196 -14392 -7196 NULL NULL 48.0 6.4051596E8 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 15:59:44.646 -7196 324834827 -1210984235056 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 15:59:46.195 -7196 157777745 -588195433360 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 16:00:00.664 -7196 918027800 -3422407638400 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -55 -55.0 1969-12-31 15:59:43.932 -7196 1982381637 -7390318742736 NULL NULL 7196 -14392 -7196 NULL NULL 55.0 6.4051596E8 -5.561802752182249E-5 55 -1.4464181818181818 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -40 -40.0 1969-12-31 16:00:10.027 -7196 -1047006196 3903239098688 NULL NULL 7196 -14392 -7196 NULL NULL 40.0 6.4051596E8 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 15:59:50.544 -7196 -705285559 2629304563952 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 16:00:01.062 -7196 -1096608306 4088155764768 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 16:00:06.51 -7196 1141844958 -4256798003424 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 37 37.0 1969-12-31 16:00:00.051 -7196 -522619659 1948326088752 NULL NULL 7196 -14392 -7196 NULL NULL -37.0 6.4051596E8 3.741576396922604E-5 -37 2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 11 11.0 1969-12-31 16:00:09.984 -7196 -1071378269 3994098186832 NULL NULL 7196 -14392 -7196 NULL NULL -11.0 6.4051596E8 1.1123605504364498E-5 -11 7.232090909090909 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 40 40.0 1969-12-31 16:00:01.103 -7196 -1201471894 4479087220832 NULL NULL 7196 -14392 -7196 NULL NULL -40.0 6.4051596E8 4.044947456132545E-5 -40 1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -15 -15.0 1969-12-31 16:00:15.186 -7196 1893214187 -7057902489136 NULL NULL 7196 -14392 -7196 NULL NULL 15.0 6.4051596E8 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -6 -6.0 1969-12-31 15:59:58.625 -7196 1934144944 -7210492351232 NULL NULL 7196 -14392 -7196 NULL NULL 6.0 6.4051596E8 -6.067421184198818E-6 6 -13.258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 38 38.0 1969-12-31 16:00:16.322 -7196 -978843371 3649128087088 NULL NULL 7196 -14392 -7196 NULL NULL -38.0 6.4051596E8 3.842700083325918E-5 -38 2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -32 -32.0 1969-12-31 16:00:02.67 -7196 40974597 -152753297616 NULL NULL 7196 -14392 -7196 NULL NULL 32.0 6.4051596E8 -3.235957964906036E-5 32 -2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 12 12.0 1969-12-31 16:00:00.526 -7196 312497348 -1164990113344 NULL NULL 7196 -14392 -7196 NULL NULL -12.0 6.4051596E8 1.2134842368397635E-5 -12 6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -28 -28.0 1969-12-31 15:59:57.835 -7196 -1946174975 7255340306800 NULL NULL 7196 -14392 -7196 NULL NULL 28.0 6.4051596E8 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 15:59:50.265 -7196 -1668843486 6221448515808 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -57 -57.0 1969-12-31 16:00:12.626 -7196 248308622 -925694542816 NULL NULL 7196 -14392 -7196 NULL NULL 57.0 6.4051596E8 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -60 -60.0 1969-12-31 15:59:45.385 -7196 1775867066 -6620432422048 NULL NULL 7196 -14392 -7196 NULL NULL 60.0 6.4051596E8 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 50 50.0 1969-12-31 15:59:54.196 -7196 -1770006773 6598585249744 NULL NULL 7196 -14392 -7196 NULL NULL -50.0 6.4051596E8 5.056184320165681E-5 -50 1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -7 -7.0 1969-12-31 15:59:58.463 -7196 1855438487 -6917074679536 NULL NULL 7196 -14392 -7196 NULL NULL 7.0 6.4051596E8 -7.078658048231953E-6 7 -11.364714285714285 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -19 -19.0 1969-12-31 15:59:55.885 -7196 1794526031 -6689993043568 NULL NULL 7196 -14392 -7196 NULL NULL 19.0 6.4051596E8 -1.921350041662959E-5 19 -4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 41 41.0 1969-12-31 15:59:44.669 -7196 253244734 -944096368352 NULL NULL 7196 -14392 -7196 NULL NULL -41.0 6.4051596E8 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -20 -20.0 1969-12-31 16:00:11.847 -7196 2093900791 -7806062148848 NULL NULL 7196 -14392 -7196 NULL NULL 20.0 6.4051596E8 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 15:59:50.281 -7196 -468548182 1746747622496 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 7 7.0 1969-12-31 15:59:56.024 -7196 -2036800429 7593191999312 NULL NULL 7196 -14392 -7196 NULL NULL -7.0 6.4051596E8 7.078658048231953E-6 -7 11.364714285714285 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 16:00:14.192 -7196 -2114172148 7881633767744 NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -17 -17.0 1969-12-31 15:59:54.962 -7196 183828953 -685314336784 NULL NULL 7196 -14392 -7196 NULL NULL 17.0 6.4051596E8 -1.7191026688563315E-5 17 -4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 15:59:45.764 -7196 -661707540 2466845709120 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -44 -44.0 1969-12-31 15:59:43.637 -7196 1100294255 -4101896982640 NULL NULL 7196 -14392 -7196 NULL NULL 44.0 6.4051596E8 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -35 -35.0 1969-12-31 16:00:14.819 -7196 1853093959 -6908334279152 NULL NULL 7196 -14392 -7196 NULL NULL 35.0 6.4051596E8 -3.5393290241159765E-5 35 -2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -55 -55.0 1969-12-31 16:00:13.249 -7196 -685064281 2553919639568 NULL NULL 7196 -14392 -7196 NULL NULL 55.0 6.4051596E8 -5.561802752182249E-5 55 -1.4464181818181818 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -30 -30.0 1969-12-31 16:00:00.434 -7196 554514485 -2067230000080 NULL NULL 7196 -14392 -7196 NULL NULL 30.0 6.4051596E8 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 15:59:51.357 -7196 1943312510 -7244669037280 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -9 -9.0 1969-12-31 15:59:58.061 -7196 123461184 -460263293952 NULL NULL 7196 -14392 -7196 NULL NULL 9.0 6.4051596E8 -9.101131776298225E-6 9 -8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -49 -49.0 1969-12-31 15:59:54.686 -7196 -1715657876 6395972561728 NULL NULL 7196 -14392 -7196 NULL NULL 49.0 6.4051596E8 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -25 -25.0 1969-12-31 16:00:03.328 -7196 -423373826 1578337623328 NULL NULL 7196 -14392 -7196 NULL NULL 25.0 6.4051596E8 -2.5280921600828406E-5 25 -3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -40 -40.0 1969-12-31 15:59:58.544 -7196 1510874931 -5632541742768 NULL NULL 7196 -14392 -7196 NULL NULL 40.0 6.4051596E8 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -4 -4.0 1969-12-31 15:59:51.539 -7196 -421581540 1571655981120 NULL NULL 7196 -14392 -7196 NULL NULL 4.0 6.4051596E8 -4.044947456132545E-6 4 -19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 15:59:49.913 -7196 -862213799 3214333042672 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 15:59:52.405 -7196 1483839864 -5531755012992 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -26.28 1969-12-31 16:00:03.695 -7196 -1967465307 7334710664496 NULL NULL 7196 -14392 -7196 NULL NULL 26.28 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 16:00:03.395 -7196 750423835 -2797580056880 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:01.111 -7196 -1370314889 5108533906192 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -20 -20.0 1969-12-31 16:00:02.91 -7196 806729927 -3007489167856 NULL NULL 7196 -14392 -7196 NULL NULL 20.0 6.4051596E8 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -43 -43.0 1969-12-31 15:59:51.433 -7196 -1328837124 4953904798272 NULL NULL 7196 -14392 -7196 NULL NULL 43.0 6.4051596E8 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 9 9.0 1969-12-31 15:59:55.795 -7196 1649886580 -6150777170240 NULL NULL 7196 -14392 -7196 NULL NULL -9.0 6.4051596E8 9.101131776298225E-6 -9 8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -8 -8.0 1969-12-31 16:00:03.136 -7196 -1849991500 6896768312000 NULL NULL 7196 -14392 -7196 NULL NULL 8.0 6.4051596E8 -8.08989491226509E-6 8 -9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -17 -17.0 1969-12-31 15:59:51.104 -7196 -506132968 1886863704704 NULL NULL 7196 -14392 -7196 NULL NULL 17.0 6.4051596E8 -1.7191026688563315E-5 17 -4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -19 -19.0 1969-12-31 15:59:49.909 -7196 1384643377 -5161950509456 NULL NULL 7196 -14392 -7196 NULL NULL 19.0 6.4051596E8 -1.921350041662959E-5 19 -4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -24 -24.0 1969-12-31 16:00:10.682 -7196 -774383855 2886903011440 NULL NULL 7196 -14392 -7196 NULL NULL 24.0 6.4051596E8 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 15:59:51.442 -7196 11734243 -43745257904 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -54 -54.0 1969-12-31 16:00:06.484 -7196 1605976008 -5987078557824 NULL NULL 7196 -14392 -7196 NULL NULL 54.0 6.4051596E8 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -4 -4.0 1969-12-31 15:59:52.956 -7196 1577367122 -5880424630816 NULL NULL 7196 -14392 -7196 NULL NULL 4.0 6.4051596E8 -4.044947456132545E-6 4 -19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 51 51.0 1969-12-31 15:59:43.782 -7196 -1607347015 5992189671920 NULL NULL 7196 -14392 -7196 NULL NULL -51.0 6.4051596E8 5.157308006568995E-5 -51 1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -49 -49.0 1969-12-31 15:59:51.009 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 49.0 6.4051596E8 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 16:00:06.688 -7196 1904598029 -7100341452112 NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 16:00:11.856 -7196 -366443186 1366100197408 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 27 27.0 1969-12-31 16:00:13.951 -7196 -806775664 3007659675392 NULL NULL 7196 -14392 -7196 NULL NULL -27.0 6.4051596E8 2.7303395328894677E-5 -27 2.946407407407407 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 15:59:58.479 -7196 -1379694191 5143499944048 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 30 30.0 1969-12-31 15:59:48.038 -7196 1053149934 -3926142953952 NULL NULL 7196 -14392 -7196 NULL NULL -30.0 6.4051596E8 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:00.148 -7196 1839707228 -6858428545984 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -53 -53.0 1969-12-31 15:59:48.882 -7196 -1560660031 5818140595568 NULL NULL 7196 -14392 -7196 NULL NULL 53.0 6.4051596E8 -5.359555379375622E-5 53 -1.501 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 37 37.0 1969-12-31 16:00:12.728 -7196 -415980890 1550776757920 NULL NULL 7196 -14392 -7196 NULL NULL -37.0 6.4051596E8 3.741576396922604E-5 -37 2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:04.827 -7196 1667038451 -6214719345328 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 16:00:02.32 -7196 -1354302203 5048838612784 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 15:59:51.901 -7196 763896882 -2847807576096 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 15:59:53.458 -7196 867823537 -3235246145936 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 35 35.0 1969-12-31 16:00:07.763 -7196 -854036780 3183849115840 NULL NULL 7196 -14392 -7196 NULL NULL -35.0 6.4051596E8 3.5393290241159765E-5 -35 2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 48 48.0 1969-12-31 16:00:05.616 -7196 -449170614 1674508048992 NULL NULL 7196 -14392 -7196 NULL NULL -48.0 6.4051596E8 4.853936947359054E-5 -48 1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 32 32.0 1969-12-31 15:59:45.572 -7196 -1337167441 4984960220048 NULL NULL 7196 -14392 -7196 NULL NULL -32.0 6.4051596E8 3.235957964906036E-5 -32 2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 15:59:43.749 -7196 396428880 -1477886864640 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -35 -35.0 1969-12-31 16:00:12.966 -7196 -211004760 786625745280 NULL NULL 7196 -14392 -7196 NULL NULL 35.0 6.4051596E8 -3.5393290241159765E-5 35 -2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -7 -7.0 1969-12-31 15:59:47.031 -7196 752265217 -2804444728976 NULL NULL 7196 -14392 -7196 NULL NULL 7.0 6.4051596E8 -7.078658048231953E-6 7 -11.364714285714285 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 42 42.0 1969-12-31 16:00:11.591 -7196 873176558 -3255202208224 NULL NULL 7196 -14392 -7196 NULL NULL -42.0 6.4051596E8 4.247194828939172E-5 -42 1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -14 -14.0 1969-12-31 16:00:07.6 -7196 818794014 -3052464084192 NULL NULL 7196 -14392 -7196 NULL NULL 14.0 6.4051596E8 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -24 -24.0 1969-12-31 16:00:07.857 -7196 -1199756482 4472692164896 NULL NULL 7196 -14392 -7196 NULL NULL 24.0 6.4051596E8 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -49 -49.0 1969-12-31 16:00:14.208 -7196 -65650667 244745686576 NULL NULL 7196 -14392 -7196 NULL NULL 49.0 6.4051596E8 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:08.011 -7196 702204680 -2617819047040 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:01.811 -7196 1371995065 -5114797602320 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 15:59:58.578 -7196 -1887367961 7036107758608 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 15:59:44.512 -7196 -398822457 1486810119696 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -31 -31.0 1969-12-31 16:00:13.868 -7196 1337237884 -4985222831552 NULL NULL 7196 -14392 -7196 NULL NULL 31.0 6.4051596E8 -3.134834278502722E-5 31 -2.566225806451613 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 16:00:03.256 -7196 -2123641234 7916934520352 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 16:00:16.19 -7196 1811651302 -6753836053856 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 16:00:09.961 -7196 -1759441703 6559198668784 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:06.243 -7196 -88860257 331271038096 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -4 -4.0 1969-12-31 15:59:57.932 -7196 345912243 -1289560841904 NULL NULL 7196 -14392 -7196 NULL NULL 4.0 6.4051596E8 -4.044947456132545E-6 4 -19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 53 53.0 1969-12-31 15:59:50.996 -7196 1897312309 -7073180287952 NULL NULL 7196 -14392 -7196 NULL NULL -53.0 6.4051596E8 5.359555379375622E-5 -53 1.501 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -2 -2.0 1969-12-31 16:00:07.711 -7196 128320480 -478378749440 NULL NULL 7196 -14392 -7196 NULL NULL 2.0 6.4051596E8 -2.0224737280662724E-6 2 -39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 15:59:52.699 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 16:00:11.132 -7196 1652808422 -6161669797216 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 16:00:09.911 -7196 1869210375 -6968416278000 NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:12.977 -7196 -1687110423 6289547656944 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 16:00:16.065 -7196 -473766733 1766202380624 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 16:00:04.518 -7196 -1658319459 6182214943152 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 15:59:45.978 -7196 -2128720310 7935869315680 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -48 -48.0 1969-12-31 15:59:52.507 -7196 -822146744 3064963061632 NULL NULL 7196 -14392 -7196 NULL NULL 48.0 6.4051596E8 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 26 26.0 1969-12-31 15:59:51.43 -7196 1902876353 -7093923043984 NULL NULL 7196 -14392 -7196 NULL NULL -26.0 6.4051596E8 2.629215846486154E-5 -26 3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -35 -35.0 1969-12-31 15:59:46.585 -7196 -990632641 3693078485648 NULL NULL 7196 -14392 -7196 NULL NULL 35.0 6.4051596E8 -3.5393290241159765E-5 35 -2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -55 -55.0 1969-12-31 16:00:01.138 -7196 888532643 -3312449693104 NULL NULL 7196 -14392 -7196 NULL NULL 55.0 6.4051596E8 -5.561802752182249E-5 55 -1.4464181818181818 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -6 -6.0 1969-12-31 16:00:06.4 -7196 687081709 -2561440611152 NULL NULL 7196 -14392 -7196 NULL NULL 6.0 6.4051596E8 -6.067421184198818E-6 6 -13.258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:12.006 -7196 1143654535 -4263544106480 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -34 -34.0 1969-12-31 16:00:06.405 -7196 347395524 -1295090513472 NULL NULL 7196 -14392 -7196 NULL NULL 34.0 6.4051596E8 -3.438205337712663E-5 34 -2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 16:00:05.162 -7196 -2140316424 7979099628672 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -44 -44.0 1969-12-31 16:00:00.289 -7196 524734261 -1956209325008 NULL NULL 7196 -14392 -7196 NULL NULL 44.0 6.4051596E8 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -64 -64.0 1969-12-31 16:00:11.912 -7196 -1615920595 6024151978160 NULL NULL 7196 -14392 -7196 NULL NULL 64.0 6.4051596E8 -6.471915929812072E-5 64 -1.243015625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 16:00:00.546 -7196 -2133897574 7955170155872 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -9 -9.0 1969-12-31 15:59:57.687 -7196 -1097778251 4092517319728 NULL NULL 7196 -14392 -7196 NULL NULL 9.0 6.4051596E8 -9.101131776298225E-6 9 -8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -35 -35.0 1969-12-31 15:59:48.408 -7196 1199675481 -4472390193168 NULL NULL 7196 -14392 -7196 NULL NULL 35.0 6.4051596E8 -3.5393290241159765E-5 35 -2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 31 31.0 1969-12-31 16:00:13.816 -7196 -1821633641 6791050213648 NULL NULL 7196 -14392 -7196 NULL NULL -31.0 6.4051596E8 3.134834278502722E-5 -31 2.566225806451613 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 16:00:15.215 -7196 1077634070 -4017419812960 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -14 -14.0 1969-12-31 16:00:14.79 -7196 1100839659 -4103930248752 NULL NULL 7196 -14392 -7196 NULL NULL 14.0 6.4051596E8 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 16:00:02.38 -7196 1733885960 -6463926858880 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 35 35.0 1969-12-31 15:59:48.022 -7196 523231898 -1950608515744 NULL NULL 7196 -14392 -7196 NULL NULL -35.0 6.4051596E8 3.5393290241159765E-5 -35 2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -20 -20.0 1969-12-31 15:59:44.907 -7196 1073150417 -4000704754576 NULL NULL 7196 -14392 -7196 NULL NULL 20.0 6.4051596E8 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 0 0.0 1969-12-31 16:00:11.089 -7196 1907356119 -7110623611632 NULL NULL 7196 -14392 -7196 NULL NULL -0.0 6.4051596E8 0.0 0 NULL -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -10 -10.0 1969-12-31 16:00:13.743 -7196 -1750160608 6524598746624 NULL NULL 7196 -14392 -7196 NULL NULL 10.0 6.4051596E8 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 15:59:55.317 -7196 926194185 -3452851921680 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 16:00:15.683 -7196 963008487 -3590095639536 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 16:00:02.777 -7196 1335415993 -4978430821904 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 15:59:50.966 -7196 601858368 -2243727995904 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 13 13.0 1969-12-31 16:00:05.368 -7196 1626425715 -6063315065520 NULL NULL 7196 -14392 -7196 NULL NULL -13.0 6.4051596E8 1.314607923243077E-5 -13 6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 4 4.0 1969-12-31 15:59:54.905 -7196 -1173921590 4376379687520 NULL NULL 7196 -14392 -7196 NULL NULL -4.0 6.4051596E8 4.044947456132545E-6 -4 19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 18 18.0 1969-12-31 15:59:49.306 -7196 -906847764 3380728464192 NULL NULL 7196 -14392 -7196 NULL NULL -18.0 6.4051596E8 1.820226355259645E-5 -18 4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -16 -16.0 1969-12-31 16:00:02.267 -7196 -405314121 1511011043088 NULL NULL 7196 -14392 -7196 NULL NULL 16.0 6.4051596E8 -1.617978982453018E-5 16 -4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 16:00:12.921 -7196 635433167 -2368894846576 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 15:59:48.395 -7196 -519770970 1937706176160 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -19 -19.0 1969-12-31 16:00:10.814 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 19.0 6.4051596E8 -1.921350041662959E-5 19 -4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 51 51.0 1969-12-31 15:59:58.171 -7196 1289268469 -4806392852432 NULL NULL 7196 -14392 -7196 NULL NULL -51.0 6.4051596E8 5.157308006568995E-5 -51 1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 15:59:53.746 -7196 -111469961 415560014608 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -28 -28.0 1969-12-31 15:59:44.895 -7196 -95814999 357198316272 NULL NULL 7196 -14392 -7196 NULL NULL 28.0 6.4051596E8 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -30 -30.0 1969-12-31 15:59:50.313 -7196 343613951 -1280992809328 NULL NULL 7196 -14392 -7196 NULL NULL 30.0 6.4051596E8 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 43 43.0 1969-12-31 16:00:13.812 -7196 -1860496519 6935931022832 NULL NULL 7196 -14392 -7196 NULL NULL -43.0 6.4051596E8 4.3483185153424856E-5 -43 1.8500697674418605 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 50 50.0 1969-12-31 16:00:08.38 -7196 1192295669 -4444878254032 NULL NULL 7196 -14392 -7196 NULL NULL -50.0 6.4051596E8 5.056184320165681E-5 -50 1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 4 4.0 1969-12-31 15:59:45.595 -7196 -514465592 1917927726976 NULL NULL 7196 -14392 -7196 NULL NULL -4.0 6.4051596E8 4.044947456132545E-6 -4 19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 39 39.0 1969-12-31 16:00:06.206 -7196 -1835825430 6843957203040 NULL NULL 7196 -14392 -7196 NULL NULL -39.0 6.4051596E8 3.9438237697292314E-5 -39 2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:15.76 -7196 2018251685 -7524042281680 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 28 28.0 1969-12-31 16:00:11.858 -7196 -1831759028 6828797656384 NULL NULL 7196 -14392 -7196 NULL NULL -28.0 6.4051596E8 2.8314632192927813E-5 -28 2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 15:59:52.946 -7196 -1900879493 7086478749904 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 16:00:13.735 -7196 650909244 -2426589661632 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -50 -50.0 1969-12-31 16:00:14.134 -7196 1740563590 -6488821063520 NULL NULL 7196 -14392 -7196 NULL NULL 50.0 6.4051596E8 -5.056184320165681E-5 50 -1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 16:00:14.364 -7196 -1303640256 4859970874368 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 15:59:45.451 -7196 -231552821 863228916688 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -26 -26.0 1969-12-31 16:00:14.661 -7196 1196069494 -4458947073632 NULL NULL 7196 -14392 -7196 NULL NULL 26.0 6.4051596E8 -2.629215846486154E-5 26 -3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 15:59:55.521 -7196 -1058636150 3946595567200 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 41 41.0 1969-12-31 15:59:44.57 -7196 649072626 -2419742749728 NULL NULL 7196 -14392 -7196 NULL NULL -41.0 6.4051596E8 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -10 -10.0 1969-12-31 16:00:13.684 -7196 -2010228069 7494130241232 NULL NULL 7196 -14392 -7196 NULL NULL 10.0 6.4051596E8 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 48 48.0 1969-12-31 15:59:57.499 -7196 -1745648407 6507777261296 NULL NULL 7196 -14392 -7196 NULL NULL -48.0 6.4051596E8 4.853936947359054E-5 -48 1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 16:00:13.197 -7196 647410848 -2413547641344 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 46 46.0 1969-12-31 16:00:07.743 -7196 -203349963 758088662064 NULL NULL 7196 -14392 -7196 NULL NULL -46.0 6.4051596E8 4.651689574552426E-5 -46 1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -27 -27.0 1969-12-31 15:59:57.664 -7196 1481888026 -5524478560928 NULL NULL 7196 -14392 -7196 NULL NULL 27.0 6.4051596E8 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 26 26.0 1969-12-31 16:00:01.871 -7196 -625819139 2333053750192 NULL NULL 7196 -14392 -7196 NULL NULL -26.0 6.4051596E8 2.629215846486154E-5 -26 3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 42 42.0 1969-12-31 15:59:57.011 -7196 -549987366 2050352900448 NULL NULL 7196 -14392 -7196 NULL NULL -42.0 6.4051596E8 4.247194828939172E-5 -42 1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:11.749 -7196 1957235821 -7296575140688 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 15:59:45.932 -7196 1611717184 -6008481661952 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 15:59:53.686 -7196 -1161932838 4331685620064 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 15:59:49.021 -7196 -580663229 2164712517712 NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 20 20.0 1969-12-31 16:00:01.267 -7196 -1587089429 5916669391312 NULL NULL 7196 -14392 -7196 NULL NULL -20.0 6.4051596E8 2.0224737280662725E-5 -20 3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 16:00:01.694 -7196 58767695 -219085966960 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 16:00:11.738 -7196 -680140600 2535564156800 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -1 -1.0 1969-12-31 16:00:06.358 -7196 -1029993753 3839816711184 NULL NULL 7196 -14392 -7196 NULL NULL 1.0 6.4051596E8 -1.0112368640331362E-6 1 -79.553 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 41 41.0 1969-12-31 16:00:08.418 -7196 791540035 -2950861250480 NULL NULL 7196 -14392 -7196 NULL NULL -41.0 6.4051596E8 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -15 -15.0 1969-12-31 15:59:46.242 -7196 1081882955 -4033259656240 NULL NULL 7196 -14392 -7196 NULL NULL 15.0 6.4051596E8 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 16:00:00.156 -7196 2104038988 -7843857347264 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 15:59:49.331 -7196 1320376751 -4922364527728 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -28 -28.0 1969-12-31 16:00:04.747 -7196 2008437496 -7487454985088 NULL NULL 7196 -14392 -7196 NULL NULL 28.0 6.4051596E8 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 16:00:00.539 -7196 1213297685 -4523173769680 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 16:00:12.762 -7196 1034824629 -3857826216912 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:15.113 -7196 -2022745657 7540795809296 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -44 -44.0 1969-12-31 16:00:03.002 -7196 1216900640 -4536605585920 NULL NULL 7196 -14392 -7196 NULL NULL 44.0 6.4051596E8 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 15:59:44.823 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -17 -17.0 1969-12-31 16:00:10.939 -7196 1735209038 -6468859293664 NULL NULL 7196 -14392 -7196 NULL NULL 17.0 6.4051596E8 -1.7191026688563315E-5 17 -4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -36 -36.0 1969-12-31 16:00:06.661 -7196 394687129 -1471393616912 NULL NULL 7196 -14392 -7196 NULL NULL 36.0 6.4051596E8 -3.64045271051929E-5 36 -2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 56 56.0 1969-12-31 16:00:00.909 -7196 1421751268 -5300288727104 NULL NULL 7196 -14392 -7196 NULL NULL -56.0 6.4051596E8 5.6629264385855625E-5 -56 1.4205892857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 4 4.0 1969-12-31 16:00:12.309 -7196 -1498229137 5585398222736 NULL NULL 7196 -14392 -7196 NULL NULL -4.0 6.4051596E8 4.044947456132545E-6 -4 19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 52 52.0 1969-12-31 15:59:49.565 -7196 1198121662 -4466597555936 NULL NULL 7196 -14392 -7196 NULL NULL -52.0 6.4051596E8 5.258431692972308E-5 -52 1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 33 33.0 1969-12-31 16:00:14.872 -7196 -995947123 3712890874544 NULL NULL 7196 -14392 -7196 NULL NULL -33.0 6.4051596E8 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 16:00:01.489 -7196 220682110 -822702906080 NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -1 -1.0 1969-12-31 15:59:55.53 -7196 745151099 -2777923297072 NULL NULL 7196 -14392 -7196 NULL NULL 1.0 6.4051596E8 -1.0112368640331362E-6 1 -79.553 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -14 -14.0 1969-12-31 16:00:04.574 -7196 87724305 -327036209040 NULL NULL 7196 -14392 -7196 NULL NULL 14.0 6.4051596E8 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 16:00:00.865 -7196 1613629130 -6015609396640 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 14 14.0 1969-12-31 16:00:00.394 -7196 -1660510440 6190382920320 NULL NULL 7196 -14392 -7196 NULL NULL -14.0 6.4051596E8 1.4157316096463906E-5 -14 5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -5 -5.0 1969-12-31 16:00:10.326 -7196 -474752759 1769878285552 NULL NULL 7196 -14392 -7196 NULL NULL 5.0 6.4051596E8 -5.056184320165681E-6 5 -15.910599999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -50 -50.0 1969-12-31 16:00:00.568 -7196 -1572562680 5862513671040 NULL NULL 7196 -14392 -7196 NULL NULL 50.0 6.4051596E8 -5.056184320165681E-5 50 -1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -54 -54.0 1969-12-31 15:59:53.657 -7196 1476582815 -5504700734320 NULL NULL 7196 -14392 -7196 NULL NULL 54.0 6.4051596E8 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 26 26.0 1969-12-31 16:00:08.286 -7196 -961730755 3585332254640 NULL NULL 7196 -14392 -7196 NULL NULL -26.0 6.4051596E8 2.629215846486154E-5 -26 3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 15:59:49.051 -7196 1104752029 -4118515564112 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -15 -15.0 1969-12-31 16:00:11.257 -7196 -364742164 1359758787392 NULL NULL 7196 -14392 -7196 NULL NULL 15.0 6.4051596E8 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 0 0.0 1969-12-31 15:59:44.159 -7196 -1418871864 5289554308992 NULL NULL 7196 -14392 -7196 NULL NULL -0.0 6.4051596E8 0.0 0 NULL -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:00.885 -7196 1970376680 -7345564263040 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 16:00:01.22 -7196 1670449519 -6227435806832 NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -42 -42.0 1969-12-31 16:00:05.729 -7196 -998749777 3723339168656 NULL NULL 7196 -14392 -7196 NULL NULL 42.0 6.4051596E8 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 26 26.0 1969-12-31 15:59:54.132 -7196 1677632608 -6254214362624 NULL NULL 7196 -14392 -7196 NULL NULL -26.0 6.4051596E8 2.629215846486154E-5 -26 3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 40 40.0 1969-12-31 15:59:49.23 -7196 437984126 -1632804821728 NULL NULL 7196 -14392 -7196 NULL NULL -40.0 6.4051596E8 4.044947456132545E-5 -40 1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -54 -54.0 1969-12-31 16:00:11.198 -7196 1650677402 -6153725354656 NULL NULL 7196 -14392 -7196 NULL NULL 54.0 6.4051596E8 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -42 -42.0 1969-12-31 15:59:56.928 -7196 -1675950271 6247942610288 NULL NULL 7196 -14392 -7196 NULL NULL 42.0 6.4051596E8 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -56 -56.0 1969-12-31 16:00:02.298 -7196 -1509994296 5629258735488 NULL NULL 7196 -14392 -7196 NULL NULL 56.0 6.4051596E8 -5.6629264385855625E-5 56 -1.4205892857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 16:00:14.829 -7196 -192083402 716086922656 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 16:00:15.923 -7196 432086668 -1610819098304 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 52 52.0 1969-12-31 15:59:47.129 -7196 -224047492 835249050176 NULL NULL 7196 -14392 -7196 NULL NULL -52.0 6.4051596E8 5.258431692972308E-5 -52 1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 14 14.0 1969-12-31 15:59:55.492 -7196 1702036126 -6345190677728 NULL NULL 7196 -14392 -7196 NULL NULL -14.0 6.4051596E8 1.4157316096463906E-5 -14 5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:02.722 -7196 1960496738 -7308731839264 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -58 -58.0 1969-12-31 16:00:12.065 -7196 1257970504 -4689714038912 NULL NULL 7196 -14392 -7196 NULL NULL 58.0 6.4051596E8 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -64 -64.0 1969-12-31 16:00:01.785 -7196 -1639157869 6110780535632 NULL NULL 7196 -14392 -7196 NULL NULL 64.0 6.4051596E8 -6.471915929812072E-5 64 -1.243015625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 15:59:54.63 -7196 -1818074941 6777783380048 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -63 -63.0 1969-12-31 16:00:03.552 -7196 -1224023895 4563161080560 NULL NULL 7196 -14392 -7196 NULL NULL 63.0 6.4051596E8 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 46 46.0 1969-12-31 16:00:01.388 -7196 242119227 -902620478256 NULL NULL 7196 -14392 -7196 NULL NULL -46.0 6.4051596E8 4.651689574552426E-5 -46 1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -19 -19.0 1969-12-31 16:00:06.188 -7196 -1169681501 4360572635728 NULL NULL 7196 -14392 -7196 NULL NULL 19.0 6.4051596E8 -1.921350041662959E-5 19 -4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 16:00:11.342 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 46 46.0 1969-12-31 15:59:47.842 -7196 -1064883361 3969885169808 NULL NULL 7196 -14392 -7196 NULL NULL -46.0 6.4051596E8 4.651689574552426E-5 -46 1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -43 -43.0 1969-12-31 16:00:08.967 -7196 -798982337 2978606152336 NULL NULL 7196 -14392 -7196 NULL NULL 43.0 6.4051596E8 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -43 -43.0 1969-12-31 15:59:45.529 -7196 956226605 -3564812783440 NULL NULL 7196 -14392 -7196 NULL NULL 43.0 6.4051596E8 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:00.73 -7196 -1419583827 5292208507056 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 4 4.0 1969-12-31 16:00:07.163 -7196 447294757 -1667514854096 NULL NULL 7196 -14392 -7196 NULL NULL -4.0 6.4051596E8 4.044947456132545E-6 -4 19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 15:59:53.213 -7196 887537434 -3308739553952 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 37 37.0 1969-12-31 16:00:16.313 -7196 -354500331 1321577233968 NULL NULL 7196 -14392 -7196 NULL NULL -37.0 6.4051596E8 3.741576396922604E-5 -37 2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -24 -24.0 1969-12-31 16:00:07.696 -7196 -722892928 2694944835584 NULL NULL 7196 -14392 -7196 NULL NULL 24.0 6.4051596E8 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 16:00:03.963 -7196 95444104 -355815619712 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -57 -57.0 1969-12-31 16:00:05.5 -7196 2042351711 -7613887178608 NULL NULL 7196 -14392 -7196 NULL NULL 57.0 6.4051596E8 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 23 23.0 1969-12-31 16:00:12.759 -7196 -1246639968 4647473800704 NULL NULL 7196 -14392 -7196 NULL NULL -23.0 6.4051596E8 2.325844787276213E-5 -23 3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 38 38.0 1969-12-31 15:59:57.159 -7196 -158261029 589997116112 NULL NULL 7196 -14392 -7196 NULL NULL -38.0 6.4051596E8 3.842700083325918E-5 -38 2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 16 16.0 1969-12-31 15:59:50.404 -7196 -2016344182 7516931110496 NULL NULL 7196 -14392 -7196 NULL NULL -16.0 6.4051596E8 1.617978982453018E-5 -16 4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 15:59:47.15 -7196 628698169 -2343786774032 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 23 23.0 1969-12-31 16:00:11.785 -7196 -1508117731 5622262901168 NULL NULL 7196 -14392 -7196 NULL NULL -23.0 6.4051596E8 2.325844787276213E-5 -23 3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -60 -60.0 1969-12-31 15:59:55.806 -7196 -1802243330 6718763134240 NULL NULL 7196 -14392 -7196 NULL NULL 60.0 6.4051596E8 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 15:59:58.93 -7196 772541706 -2880035479968 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -54 -54.0 1969-12-31 16:00:05.688 -7196 1614836149 -6020109163472 NULL NULL 7196 -14392 -7196 NULL NULL 54.0 6.4051596E8 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 34 34.0 1969-12-31 15:59:46.881 -7196 -369187268 1376330135104 NULL NULL 7196 -14392 -7196 NULL NULL -34.0 6.4051596E8 3.438205337712663E-5 -34 2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -64 -64.0 1969-12-31 15:59:56.048 -7196 406535485 -1515564288080 NULL NULL 7196 -14392 -7196 NULL NULL 64.0 6.4051596E8 -6.471915929812072E-5 64 -1.243015625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 16:00:08.241 -7196 381343252 -1421647643456 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 45 45.0 1969-12-31 16:00:00.543 -7196 940192068 -3505036029504 NULL NULL 7196 -14392 -7196 NULL NULL -45.0 6.4051596E8 4.550565888149113E-5 -45 1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 15:59:49.512 -7196 -123182483 459224296624 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -12 -12.0 1969-12-31 16:00:09.524 -7196 -1476796699 5505498093872 NULL NULL 7196 -14392 -7196 NULL NULL 12.0 6.4051596E8 -1.2134842368397635E-5 12 -6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -28 -28.0 1969-12-31 16:00:00.003 -7196 -83883851 312718996528 NULL NULL 7196 -14392 -7196 NULL NULL 28.0 6.4051596E8 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -46 -46.0 1969-12-31 15:59:54.257 -7196 -1020872577 3805812967056 NULL NULL 7196 -14392 -7196 NULL NULL 46.0 6.4051596E8 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -63 -63.0 1969-12-31 16:00:11.946 -7196 -994504916 3707514326848 NULL NULL 7196 -14392 -7196 NULL NULL 63.0 6.4051596E8 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:07.907 -7196 1200709486 -4476244963808 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 15:59:50.196 -7196 1402100915 -5227032211120 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 21 21.0 1969-12-31 16:00:10.652 -7196 1755924724 -6546087371072 NULL NULL 7196 -14392 -7196 NULL NULL -21.0 6.4051596E8 2.123597414469586E-5 -21 3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 28 28.0 1969-12-31 16:00:02.795 -7196 1542799131 -5751555160368 NULL NULL 7196 -14392 -7196 NULL NULL -28.0 6.4051596E8 2.8314632192927813E-5 -28 2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 16:00:11.526 -7196 -703366355 2622149771440 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 15:59:46.387 -7196 991147780 -3694998923840 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -9 -9.0 1969-12-31 15:59:58.825 -7196 1221941567 -4555398161776 NULL NULL 7196 -14392 -7196 NULL NULL 9.0 6.4051596E8 -9.101131776298225E-6 9 -8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -57 -57.0 1969-12-31 16:00:04.659 -7196 -1579093262 5886859680736 NULL NULL 7196 -14392 -7196 NULL NULL 57.0 6.4051596E8 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -28 -28.0 1969-12-31 15:59:51.637 -7196 -444000127 1655232473456 NULL NULL 7196 -14392 -7196 NULL NULL 28.0 6.4051596E8 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 14 14.0 1969-12-31 15:59:50.291 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL -14.0 6.4051596E8 1.4157316096463906E-5 -14 5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 15:59:47.825 -7196 -95344418 355443990304 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -34 -34.0 1969-12-31 15:59:48.779 -7196 -1022931985 3813490440080 NULL NULL 7196 -14392 -7196 NULL NULL 34.0 6.4051596E8 -3.438205337712663E-5 34 -2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 34 34.0 1969-12-31 16:00:04.36 -7196 1412648789 -5266354685392 NULL NULL 7196 -14392 -7196 NULL NULL -34.0 6.4051596E8 3.438205337712663E-5 -34 2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 32 32.0 1969-12-31 15:59:58.962 -7196 -303275124 1130609662272 NULL NULL 7196 -14392 -7196 NULL NULL -32.0 6.4051596E8 3.235957964906036E-5 -32 2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -34 -34.0 1969-12-31 16:00:01.396 -7196 -1226942900 4574043131200 NULL NULL 7196 -14392 -7196 NULL NULL 34.0 6.4051596E8 -3.438205337712663E-5 34 -2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 27 27.0 1969-12-31 15:59:50.046 -7196 -2121399625 7908577802000 NULL NULL 7196 -14392 -7196 NULL NULL -27.0 6.4051596E8 2.7303395328894677E-5 -27 2.946407407407407 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -12 -12.0 1969-12-31 16:00:15.92 -7196 358049432 -1334808282496 NULL NULL 7196 -14392 -7196 NULL NULL 12.0 6.4051596E8 -1.2134842368397635E-5 12 -6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 48 48.0 1969-12-31 16:00:02.043 -7196 -219185402 817123178656 NULL NULL 7196 -14392 -7196 NULL NULL -48.0 6.4051596E8 4.853936947359054E-5 -48 1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -27 -27.0 1969-12-31 15:59:48.105 -7196 -859692583 3204933949424 NULL NULL 7196 -14392 -7196 NULL NULL 27.0 6.4051596E8 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:06.997 -7196 -1265540677 4717935643856 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -47 -47.0 1969-12-31 16:00:00.235 -7196 -1083011916 4037468422848 NULL NULL 7196 -14392 -7196 NULL NULL 47.0 6.4051596E8 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 55 55.0 1969-12-31 16:00:02.488 -7196 -181014520 674822130560 NULL NULL 7196 -14392 -7196 NULL NULL -55.0 6.4051596E8 5.561802752182249E-5 -55 1.4464181818181818 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 16:00:00.613 -7196 599224705 -2233909700240 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -44 -44.0 1969-12-31 15:59:50.843 -7196 619396855 -2309111475440 NULL NULL 7196 -14392 -7196 NULL NULL 44.0 6.4051596E8 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 32 32.0 1969-12-31 15:59:54.875 -7196 1970876136 -7347426235008 NULL NULL 7196 -14392 -7196 NULL NULL -32.0 6.4051596E8 3.235957964906036E-5 -32 2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -38 -38.0 1969-12-31 16:00:00.843 -7196 -314153742 1171165150176 NULL NULL 7196 -14392 -7196 NULL NULL 38.0 6.4051596E8 -3.842700083325918E-5 38 -2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 42 42.0 1969-12-31 16:00:00.992 -7196 1644841467 -6131968988976 NULL NULL 7196 -14392 -7196 NULL NULL -42.0 6.4051596E8 4.247194828939172E-5 -42 1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 16:00:07.27 -7196 -2071049869 7720873911632 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -11 -11.0 1969-12-31 15:59:57.148 -7196 -1261670420 4703507325760 NULL NULL 7196 -14392 -7196 NULL NULL 11.0 6.4051596E8 -1.1123605504364498E-5 11 -7.232090909090909 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 16:00:15.409 -7196 313391588 -1168323840064 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -18 -18.0 1969-12-31 15:59:53.782 -7196 -1501501535 5597597722480 NULL NULL 7196 -14392 -7196 NULL NULL 18.0 6.4051596E8 -1.820226355259645E-5 18 -4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 33 33.0 1969-12-31 16:00:15.99 -7196 1994545529 -7435665732112 NULL NULL 7196 -14392 -7196 NULL NULL -33.0 6.4051596E8 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:13.879 -7196 796009413 -2967523091664 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 6 6.0 1969-12-31 15:59:58.692 -7196 -95453964 355852377792 NULL NULL 7196 -14392 -7196 NULL NULL -6.0 6.4051596E8 6.067421184198818E-6 -6 13.258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 46 46.0 1969-12-31 15:59:45.334 -7196 -1436934967 5356893556976 NULL NULL 7196 -14392 -7196 NULL NULL -46.0 6.4051596E8 4.651689574552426E-5 -46 1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 30 30.0 1969-12-31 15:59:47.701 -7196 -478323335 1783189392880 NULL NULL 7196 -14392 -7196 NULL NULL -30.0 6.4051596E8 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 7 7.0 1969-12-31 16:00:05.724 -7196 -556098975 2073136978800 NULL NULL 7196 -14392 -7196 NULL NULL -7.0 6.4051596E8 7.078658048231953E-6 -7 11.364714285714285 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 39 39.0 1969-12-31 16:00:10.915 -7196 -361407222 1347326123616 NULL NULL 7196 -14392 -7196 NULL NULL -39.0 6.4051596E8 3.9438237697292314E-5 -39 2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 16:00:13.868 -7196 1875242301 -6990903298128 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 15:59:54.438 -7196 265927514 -991377772192 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:15.69 -7196 -1591295545 5932349791760 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -36 -36.0 1969-12-31 16:00:08.615 -7196 756475174 -2820139448672 NULL NULL 7196 -14392 -7196 NULL NULL 36.0 6.4051596E8 -3.64045271051929E-5 36 -2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -50 -50.0 1969-12-31 15:59:53.689 -7196 1294693950 -4826619045600 NULL NULL 7196 -14392 -7196 NULL NULL 50.0 6.4051596E8 -5.056184320165681E-5 50 -1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:07.204 -7196 1735272327 -6469095235056 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 15:59:48.703 -7196 -1633774587 6090711660336 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -16 -16.0 1969-12-31 15:59:54.619 -7196 -2010404362 7494787461536 NULL NULL 7196 -14392 -7196 NULL NULL 16.0 6.4051596E8 -1.617978982453018E-5 16 -4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 15:59:44.081 -7196 -322878567 1203691297776 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:05.785 -7196 -2045045391 7623929217648 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -26.28 1969-12-31 16:00:10.192 -7196 291891431 -1088171254768 NULL NULL 7196 -14392 -7196 NULL NULL 26.28 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -6 -6.0 1969-12-31 15:59:57.92 -7196 -2124802690 7921264428320 NULL NULL 7196 -14392 -7196 NULL NULL 6.0 6.4051596E8 -6.067421184198818E-6 6 -13.258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -31 -31.0 1969-12-31 15:59:49.226 -7196 -548962072 2046530604416 NULL NULL 7196 -14392 -7196 NULL NULL 31.0 6.4051596E8 -3.134834278502722E-5 31 -2.566225806451613 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -30 -30.0 1969-12-31 15:59:43.82 -7196 1329543519 -4956538238832 NULL NULL 7196 -14392 -7196 NULL NULL 30.0 6.4051596E8 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 16:00:01.125 -7196 -1851730063 6903249674864 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 15:59:49.652 -7196 -2039141896 7601920988288 NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -33 -33.0 1969-12-31 16:00:02.131 -7196 -1264795306 4715156900768 NULL NULL 7196 -14392 -7196 NULL NULL 33.0 6.4051596E8 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 16 16.0 1969-12-31 16:00:16.02 -7196 323260103 -1205113663984 NULL NULL 7196 -14392 -7196 NULL NULL -16.0 6.4051596E8 1.617978982453018E-5 -16 4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:12.663 -7196 -1889458933 7043902902224 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -25 -25.0 1969-12-31 16:00:03.549 -7196 -769039800 2866980374400 NULL NULL 7196 -14392 -7196 NULL NULL 25.0 6.4051596E8 -2.5280921600828406E-5 25 -3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 15:59:44.836 -7196 1003317046 -3740365947488 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 15:59:44.16 -7196 -146790344 547234402432 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -49 -49.0 1969-12-31 15:59:52.715 -7196 1402423611 -5228235221808 NULL NULL 7196 -14392 -7196 NULL NULL 49.0 6.4051596E8 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:07.361 -7196 418917539 -1561724585392 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 34 34.0 1969-12-31 16:00:00.82 -7196 221369308 -825264780224 NULL NULL 7196 -14392 -7196 NULL NULL -34.0 6.4051596E8 3.438205337712663E-5 -34 2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 4 4.0 1969-12-31 16:00:08.327 -7196 -286988419 1069892826032 NULL NULL 7196 -14392 -7196 NULL NULL -4.0 6.4051596E8 4.044947456132545E-6 -4 19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -31 -31.0 1969-12-31 15:59:54.845 -7196 -1024257790 3818433041120 NULL NULL 7196 -14392 -7196 NULL NULL 31.0 6.4051596E8 -3.134834278502722E-5 31 -2.566225806451613 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 30 30.0 1969-12-31 16:00:08.554 -7196 1652888354 -6161967783712 NULL NULL 7196 -14392 -7196 NULL NULL -30.0 6.4051596E8 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 15:59:48.779 -7196 907595786 -3383517090208 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 50 50.0 1969-12-31 16:00:11.048 -7196 -1800692361 6712981121808 NULL NULL 7196 -14392 -7196 NULL NULL -50.0 6.4051596E8 5.056184320165681E-5 -50 1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 15:59:43.64 -7196 -1339164819 4992406445232 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 24 24.0 1969-12-31 16:00:12.66 -7196 -930616249 3469337376272 NULL NULL 7196 -14392 -7196 NULL NULL -24.0 6.4051596E8 2.426968473679527E-5 -24 3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 16:00:00.351 -7196 -983326369 3665840703632 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -2 -2.0 1969-12-31 15:59:47.95 -7196 -787580432 2936099850496 NULL NULL 7196 -14392 -7196 NULL NULL 2.0 6.4051596E8 -2.0224737280662724E-6 2 -39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -35 -35.0 1969-12-31 16:00:12.959 -7196 668477655 -2492084697840 NULL NULL 7196 -14392 -7196 NULL NULL 35.0 6.4051596E8 -3.5393290241159765E-5 35 -2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -30 -30.0 1969-12-31 16:00:13.124 -7196 727610554 -2712532145312 NULL NULL 7196 -14392 -7196 NULL NULL 30.0 6.4051596E8 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -20 -20.0 1969-12-31 16:00:13.131 -7196 -25047971 93378835888 NULL NULL 7196 -14392 -7196 NULL NULL 20.0 6.4051596E8 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 16:00:01.11 -7196 -1144874988 4268093955264 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 15:59:51.184 -7196 1633931264 -6091295752192 NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 15:59:51.725 -7196 -1511601241 5635249426448 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -48 -48.0 1969-12-31 16:00:01.813 -7196 -1035336927 3859736063856 NULL NULL 7196 -14392 -7196 NULL NULL 48.0 6.4051596E8 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 16:00:10.163 -7196 -1964987216 7325472341248 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -48 -48.0 1969-12-31 15:59:44.522 -7196 -954681295 3559051867760 NULL NULL 7196 -14392 -7196 NULL NULL 48.0 6.4051596E8 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -63 -63.0 1969-12-31 16:00:07.375 -7196 -1711796768 6381578351104 NULL NULL 7196 -14392 -7196 NULL NULL 63.0 6.4051596E8 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 13 13.0 1969-12-31 15:59:54.148 -7196 -1987510940 7409440784320 NULL NULL 7196 -14392 -7196 NULL NULL -13.0 6.4051596E8 1.314607923243077E-5 -13 6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 1 1.0 1969-12-31 15:59:55.524 -7196 -860168842 3206709442976 NULL NULL 7196 -14392 -7196 NULL NULL -1.0 6.4051596E8 1.0112368640331362E-6 -1 79.553 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 15:59:52.164 -7196 1306133727 -4869266534256 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 11 11.0 1969-12-31 16:00:06.603 -7196 444257258 -1656191057824 NULL NULL 7196 -14392 -7196 NULL NULL -11.0 6.4051596E8 1.1123605504364498E-5 -11 7.232090909090909 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 16:00:02.373 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 16:00:02.613 -7196 1493254737 -5566853659536 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 16:00:15.188 -7196 -1827273066 6812073990048 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 24 24.0 1969-12-31 15:59:46.471 -7196 813443800 -3032518486400 NULL NULL 7196 -14392 -7196 NULL NULL -24.0 6.4051596E8 2.426968473679527E-5 -24 3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 15:59:55.798 -7196 1723777074 -6426240931872 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 16:00:03.85 -7196 -642836823 2396495676144 NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -53 -53.0 1969-12-31 15:59:57.663 -7196 898472381 -3349505036368 NULL NULL 7196 -14392 -7196 NULL NULL 53.0 6.4051596E8 -5.359555379375622E-5 53 -1.501 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 16:00:07.969 -7196 -773265030 2882732031840 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 16:00:01.592 -7196 988888 -3686574464 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 15:59:44.634 -7196 -1554125282 5793779051296 NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 15:59:47.097 -7196 1918451926 -7151988780128 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 15:59:58.395 -7196 -1367753794 5098986144032 NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -17 -17.0 1969-12-31 15:59:56.135 -7196 -509557318 1899629681504 NULL NULL 7196 -14392 -7196 NULL NULL 17.0 6.4051596E8 -1.7191026688563315E-5 17 -4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -64 -64.0 1969-12-31 16:00:12.339 -7196 1805860756 -6732248898368 NULL NULL 7196 -14392 -7196 NULL NULL 64.0 6.4051596E8 -6.471915929812072E-5 64 -1.243015625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 16:00:03.049 -7196 -1513172815 5641108254320 NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 16:00:11.762 -7196 -969277545 3613466687760 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -3 -3.0 1969-12-31 15:59:57.043 -7196 -815857841 3041518031248 NULL NULL 7196 -14392 -7196 NULL NULL 3.0 6.4051596E8 -3.033710592099409E-6 3 -26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -50 -50.0 1969-12-31 16:00:08.161 -7196 -1283226068 4783866781504 NULL NULL 7196 -14392 -7196 NULL NULL 50.0 6.4051596E8 -5.056184320165681E-5 50 -1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 14 14.0 1969-12-31 15:59:56.518 -7196 -1720768938 6415026600864 NULL NULL 7196 -14392 -7196 NULL NULL -14.0 6.4051596E8 1.4157316096463906E-5 -14 5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -40 -40.0 1969-12-31 16:00:06.489 -7196 -848424137 3162925182736 NULL NULL 7196 -14392 -7196 NULL NULL 40.0 6.4051596E8 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 15:59:54.256 -7196 524247756 -1954395634368 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -33 -33.0 1969-12-31 15:59:52.682 -7196 286555719 -1068279720432 NULL NULL 7196 -14392 -7196 NULL NULL 33.0 6.4051596E8 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:08.234 -7196 -729256990 2718670058720 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 40 40.0 1969-12-31 16:00:14.048 -7196 -1498115170 5584973353760 NULL NULL 7196 -14392 -7196 NULL NULL -40.0 6.4051596E8 4.044947456132545E-5 -40 1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 52 52.0 1969-12-31 15:59:58.309 -7196 1735974184 -6471711757952 NULL NULL 7196 -14392 -7196 NULL NULL -52.0 6.4051596E8 5.258431692972308E-5 -52 1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -34 -34.0 1969-12-31 15:59:50.263 -7196 1591827313 -5934332222864 NULL NULL 7196 -14392 -7196 NULL NULL 34.0 6.4051596E8 -3.438205337712663E-5 34 -2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 30 30.0 1969-12-31 15:59:54.76 -7196 -2060977898 7683325603744 NULL NULL 7196 -14392 -7196 NULL NULL -30.0 6.4051596E8 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -5 -5.0 1969-12-31 15:59:44.323 -7196 1644460062 -6130547111136 NULL NULL 7196 -14392 -7196 NULL NULL 5.0 6.4051596E8 -5.056184320165681E-6 5 -15.910599999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 15:59:53.679 -7196 1279487251 -4769928471728 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -8 -8.0 1969-12-31 15:59:56.367 -7196 994075198 -3705912338144 NULL NULL 7196 -14392 -7196 NULL NULL 8.0 6.4051596E8 -8.08989491226509E-6 8 -9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:07.331 -7196 888822373 -3313529806544 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:11.124 -7196 -364079399 1357287999472 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -2 -2.0 1969-12-31 15:59:48.389 -7196 -1268340526 4728373480928 NULL NULL 7196 -14392 -7196 NULL NULL 2.0 6.4051596E8 -2.0224737280662724E-6 2 -39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 16:00:03.855 -7196 1616977696 -6028092850688 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 16:00:12.427 -7196 -928635185 3461951969680 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -47 -47.0 1969-12-31 15:59:45.028 -7196 1388924857 -5177911866896 NULL NULL 7196 -14392 -7196 NULL NULL 47.0 6.4051596E8 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 35 35.0 1969-12-31 15:59:51.86 -7196 1667895530 -6217914535840 NULL NULL 7196 -14392 -7196 NULL NULL -35.0 6.4051596E8 3.5393290241159765E-5 -35 2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 9 9.0 1969-12-31 16:00:09.285 -7196 -547733153 2041949194384 NULL NULL 7196 -14392 -7196 NULL NULL -9.0 6.4051596E8 9.101131776298225E-6 -9 8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 16:00:11.842 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 12 12.0 1969-12-31 16:00:15.27 -7196 514966110 -1919793658080 NULL NULL 7196 -14392 -7196 NULL NULL -12.0 6.4051596E8 1.2134842368397635E-5 -12 6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 16:00:12.979 -7196 -1110874318 4141339457504 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 16:00:06.624 -7196 918951834 -3425852437152 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 16:00:00.586 -7196 -1104851756 4118887346368 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 12 12.0 1969-12-31 15:59:57.98 -7196 159910702 -596147097056 NULL NULL 7196 -14392 -7196 NULL NULL -12.0 6.4051596E8 1.2134842368397635E-5 -12 6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -4 -4.0 1969-12-31 16:00:13.324 -7196 1264553400 -4714255075200 NULL NULL 7196 -14392 -7196 NULL NULL 4.0 6.4051596E8 -4.044947456132545E-6 4 -19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 51 51.0 1969-12-31 15:59:50.363 -7196 1825079468 -6803896256704 NULL NULL 7196 -14392 -7196 NULL NULL -51.0 6.4051596E8 5.157308006568995E-5 -51 1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -3 -3.0 1969-12-31 15:59:48.04 -7196 -1125097136 4194362123008 NULL NULL 7196 -14392 -7196 NULL NULL 3.0 6.4051596E8 -3.033710592099409E-6 3 -26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 16:00:15.715 -7196 -146384448 545721222144 NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 16:00:10.104 -7196 170904847 -637133269616 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 59 59.0 1969-12-31 16:00:03.463 -7196 -1707264538 6364682197664 NULL NULL 7196 -14392 -7196 NULL NULL -59.0 6.4051596E8 5.966297497795504E-5 -59 1.3483559322033898 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 48 48.0 1969-12-31 16:00:07.257 -7196 1639854261 -6113376685008 NULL NULL 7196 -14392 -7196 NULL NULL -48.0 6.4051596E8 4.853936947359054E-5 -48 1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 16:00:13.064 -7196 659639923 -2459137632944 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -15 -15.0 1969-12-31 15:59:58.668 -7196 -943224537 3516341073936 NULL NULL 7196 -14392 -7196 NULL NULL 15.0 6.4051596E8 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -16 -16.0 1969-12-31 16:00:01.088 -7196 469226089 -1749274859792 NULL NULL 7196 -14392 -7196 NULL NULL 16.0 6.4051596E8 -1.617978982453018E-5 16 -4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 16:00:09.332 -7196 -1352651602 5042685172256 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -1 -1.0 1969-12-31 16:00:09.511 -7196 2011635522 -7499377226016 NULL NULL 7196 -14392 -7196 NULL NULL 1.0 6.4051596E8 -1.0112368640331362E-6 1 -79.553 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 16:00:15.143 -7196 838733994 -3126800329632 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -10 -10.0 1969-12-31 16:00:11.061 -7196 370889082 -1382674497696 NULL NULL 7196 -14392 -7196 NULL NULL 10.0 6.4051596E8 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 15:59:52.976 -7196 -390869916 1457163046848 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 28 28.0 1969-12-31 16:00:12.148 -7196 -1407978842 5248945122976 NULL NULL 7196 -14392 -7196 NULL NULL -28.0 6.4051596E8 2.8314632192927813E-5 -28 2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 33 33.0 1969-12-31 15:59:53.989 -7196 -2095698146 7812762688288 NULL NULL 7196 -14392 -7196 NULL NULL -33.0 6.4051596E8 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 16:00:12.06 -7196 1364337481 -5086250129168 NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 19 19.0 1969-12-31 16:00:01.375 -7196 -1885659257 7029737710096 NULL NULL 7196 -14392 -7196 NULL NULL -19.0 6.4051596E8 1.921350041662959E-5 -19 4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 1 1.0 1969-12-31 15:59:48.361 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL -1.0 6.4051596E8 1.0112368640331362E-6 -1 79.553 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 59 59.0 1969-12-31 16:00:00.551 -7196 854892886 -3187040679008 NULL NULL 7196 -14392 -7196 NULL NULL -59.0 6.4051596E8 5.966297497795504E-5 -59 1.3483559322033898 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -25 -25.0 1969-12-31 15:59:44.455 -7196 -579903586 2161880568608 NULL NULL 7196 -14392 -7196 NULL NULL 25.0 6.4051596E8 -2.5280921600828406E-5 25 -3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 16:00:09.025 -7196 -840223244 3132352253632 NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 --748768326 NULL NULL T6ubsbx62cmP false 11 11.0 1969-12-31 16:00:02.351 NULL -75337224 280857171072 748768326 7.48767462743E8 NULL NULL NULL 1.0 7.48767489023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1023644243 NULL NULL Cxas82oA2hX884xmYQ2jrpDX true 11 11.0 1969-12-31 16:00:02.351 NULL -866431241 3230055666448 1023644243 1.023643379743E9 NULL NULL NULL 1.0 1.023643406023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --670497702 NULL NULL gSJS1mpb5Khx8140U3 false 11 11.0 1969-12-31 16:00:02.351 NULL -413540706 1541679751968 670497702 6.70496838743E8 NULL NULL NULL 1.0 6.70496865023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --248449790 NULL NULL ce6C1MhLw false 11 11.0 1969-12-31 16:00:02.351 NULL -214114609 798219262352 248449790 2.48448926743E8 NULL NULL NULL 1.0 2.48448953023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1041353707 NULL NULL 25Qky6lf2pt5FP47Mqmb true 11 11.0 1969-12-31 16:00:02.351 NULL -931949639 3474308254192 1041353707 1.041352843743E9 NULL NULL NULL 1.0 1.041352870023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --772037548 NULL NULL e4j6pjQIS16PPiA86wnd4Ke false 11 11.0 1969-12-31 16:00:02.351 NULL -748568632 2790663860096 772037548 7.72036684743E8 NULL NULL NULL 1.0 7.72036711023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1047036113 NULL NULL Js07yFa2qnrfVU1j2e3 false 11 11.0 1969-12-31 16:00:02.351 NULL -240113848 895144425344 1047036113 1.047035249743E9 NULL NULL NULL 1.0 1.047035276023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --915318164 NULL NULL IpqVS false 11 11.0 1969-12-31 16:00:02.351 NULL -904453147 3371801332016 915318164 9.15317300743E8 NULL NULL NULL 1.0 9.15317327023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --607145105 NULL NULL 0rtl1C false 11 11.0 1969-12-31 16:00:02.351 NULL -311989648 1163097407744 607145105 6.07144241743E8 NULL NULL NULL 1.0 6.07144268023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --695529452 NULL NULL 7s6O45GD7p4ASq08a26v8 true 11 11.0 1969-12-31 16:00:02.351 NULL -467935754 1744464490912 695529452 6.95528588743E8 NULL NULL NULL 1.0 6.95528615023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --891785445 NULL NULL 31m1d3P3AD false 11 11.0 1969-12-31 16:00:02.351 NULL -670722591 2500453819248 891785445 8.91784581743E8 NULL NULL NULL 1.0 8.91784608023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --566868938 NULL NULL yJ67FYA false 11 11.0 1969-12-31 16:00:02.351 NULL -462200469 1723083348432 566868938 5.66868074743E8 NULL NULL NULL 1.0 5.66868101023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --390244123 NULL NULL JPd15l3I6F4Na true 11 11.0 1969-12-31 16:00:02.351 NULL -69466528 258971216384 390244123 3.90243259743E8 NULL NULL NULL 1.0 3.9024328602299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --434867359 NULL NULL IorWR false 11 11.0 1969-12-31 16:00:02.351 NULL -45980161 171414040208 434867359 4.34866495743E8 NULL NULL NULL 1.0 4.3486652202299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --646339276 NULL NULL 2yd00UDPJUO37S4qfT0gHyg false 11 11.0 1969-12-31 16:00:02.351 NULL -584600510 2179390701280 646339276 6.46338412743E8 NULL NULL NULL 1.0 6.46338439023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --796484582 NULL NULL gj5IRDNe62057M false 11 11.0 1969-12-31 16:00:02.351 NULL -598210892 2230130205376 796484582 7.96483718743E8 NULL NULL NULL 1.0 7.96483745023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1012011232 NULL NULL 7q0iMi2GDq0Q false 11 11.0 1969-12-31 16:00:02.351 NULL -806973080 3008395642240 1012011232 1.012010368743E9 NULL NULL NULL 1.0 1.012010395023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --369004155 NULL NULL r55X6tJ4eKvh false 11 11.0 1969-12-31 16:00:02.351 NULL -242858513 905376536464 369004155 3.69003291743E8 NULL NULL NULL 1.0 3.6900331802299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --157295768 NULL NULL O1Kq8bfOEoDR true 11 11.0 1969-12-31 16:00:02.351 NULL -89010 331829280 157295768 1.57294904743E8 NULL NULL NULL 1.0 1.57294931023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --853118632 NULL NULL er5IUhd505r0lT6sc20Tef5q true 11 11.0 1969-12-31 16:00:02.351 NULL -426033194 1588251747232 853118632 8.53117768743E8 NULL NULL NULL 1.0 8.53117795023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1055185482 NULL NULL l20vn2Awc true 11 11.0 1969-12-31 16:00:02.351 NULL -398806473 1486750531344 1055185482 1.055184618743E9 NULL NULL NULL 1.0 1.055184645023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --153888210 NULL NULL aEi5JQHQPd4Y8 true 11 11.0 1969-12-31 16:00:02.351 NULL -111343268 415087703104 153888210 1.53887346743E8 NULL NULL NULL 1.0 1.53887373023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --691793383 NULL NULL 40i6Qf07 false 11 11.0 1969-12-31 16:00:02.351 NULL -322200600 1201163836800 691793383 6.91792519743E8 NULL NULL NULL 1.0 6.91792546023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --875527384 NULL NULL 3W0GorVd6GStPF5S43 false 11 11.0 1969-12-31 16:00:02.351 NULL -332869795 1240938595760 875527384 8.75526520743E8 NULL NULL NULL 1.0 8.75526547023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --930153712 NULL NULL Jj21024T2xdn6 false 11 11.0 1969-12-31 16:00:02.351 NULL -737116859 2747971650352 930153712 9.30152848743E8 NULL NULL NULL 1.0 9.30152875023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --402903993 NULL NULL SIUKQ52i702FMVn5 false 11 11.0 1969-12-31 16:00:02.351 NULL -106842649 398309395472 402903993 4.02903129743E8 NULL NULL NULL 1.0 4.0290315602299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1054849160 NULL NULL CEGOy true 11 11.0 1969-12-31 16:00:02.351 NULL -1027630923 3831008080944 1054849160 1.054848296743E9 NULL NULL NULL 1.0 1.054848323023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --730200970 NULL NULL Ca1Tsx2aY1q true 11 11.0 1969-12-31 16:00:02.351 NULL -425808646 1587414632288 730200970 7.30200106743E8 NULL NULL NULL 1.0 7.30200133023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --884671420 NULL NULL QbGMK true 11 11.0 1969-12-31 16:00:02.351 NULL -265077470 988208808160 884671420 8.84670556743E8 NULL NULL NULL 1.0 8.84670583023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1023165277 NULL NULL 438Lxo541TwY5ID80cnR5 false 11 11.0 1969-12-31 16:00:02.351 NULL -1004780673 3745822348944 1023165277 1.023164413743E9 NULL NULL NULL 1.0 1.023164440023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --369233503 NULL NULL 4S44vF false 11 11.0 1969-12-31 16:00:02.351 NULL -282004256 1051311866368 369233503 3.69232639743E8 NULL NULL NULL 1.0 3.6923266602299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --592237581 NULL NULL auGhMXSG3mUqnh false 11 11.0 1969-12-31 16:00:02.351 NULL -46848452 174651029056 592237581 5.92236717743E8 NULL NULL NULL 1.0 5.92236744023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --901934849 NULL NULL 6tH7O0gw0gJ true 11 11.0 1969-12-31 16:00:02.351 NULL -824858323 3075071828144 901934849 9.01933985743E8 NULL NULL NULL 1.0 9.01934012023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --750036400 NULL NULL M22umK0Q1S2Q80358P6 true 11 11.0 1969-12-31 16:00:02.351 NULL -131749591 491162475248 750036400 7.50035536743E8 NULL NULL NULL 1.0 7.50035563023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1043979188 NULL NULL 2d3tQdCGQN5k7u7S false 11 11.0 1969-12-31 16:00:02.351 NULL -8894336 33158084608 1043979188 1.043978324743E9 NULL NULL NULL 1.0 1.043978351023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --970640948 NULL NULL frhe0 false 11 11.0 1969-12-31 16:00:02.351 NULL -935612665 3487964015120 970640948 9.70640084743E8 NULL NULL NULL 1.0 9.70640111023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --657225349 NULL NULL U1aid52v false 11 11.0 1969-12-31 16:00:02.351 NULL -432068801 1610752490128 657225349 6.57224485743E8 NULL NULL NULL 1.0 6.57224512023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1069736047 NULL NULL k17Am8uPHWk02cEf1jet true 11 11.0 1969-12-31 16:00:02.351 NULL -453772520 1691663954560 1069736047 1.069735183743E9 NULL NULL NULL 1.0 1.069735210023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --238517065 NULL NULL 7xh48cBvt34812U1at true 11 11.0 1969-12-31 16:00:02.351 NULL -164041058 611545064224 238517065 2.38516201743E8 NULL NULL NULL 1.0 2.38516228023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --234925520 NULL NULL rW58d3yGN1w3XhS7hx3UK1yF true 11 11.0 1969-12-31 16:00:02.351 NULL -34488346 128572553888 234925520 2.34924656743E8 NULL NULL NULL 1.0 2.34924683023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --325931647 NULL NULL 2a7V63IL7jK3o false 11 11.0 1969-12-31 16:00:02.351 NULL -1605000232 5983440864896 325931647 3.25930783743E8 NULL NULL NULL 1.0 3.2593081002299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --854749761 NULL NULL pL11U1oq48Oj202Wy2W7B false 11 11.0 1969-12-31 16:00:02.351 NULL -336553394 1254671052832 854749761 8.54748897743E8 NULL NULL NULL 1.0 8.54748924023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --444756572 NULL NULL I3XOX0B0 true 11 11.0 1969-12-31 16:00:02.351 NULL -5391274 20098669472 444756572 4.44755708743E8 NULL NULL NULL 1.0 4.4475573502299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --850094446 NULL NULL 8Bshk4eu870M3VyJ8c4D1upr false 11 11.0 1969-12-31 16:00:02.351 NULL -709283154 2644207598112 850094446 8.50093582743E8 NULL NULL NULL 1.0 8.50093609023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1026019772 NULL NULL T6Al7d0hN770XB65M0F2g true 11 11.0 1969-12-31 16:00:02.351 NULL -338489479 1261888777712 1026019772 1.026018908743E9 NULL NULL NULL 1.0 1.026018935023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --791904835 NULL NULL 5TVADgO1Sm3 false 11 11.0 1969-12-31 16:00:02.351 NULL -639988447 2385876930416 791904835 7.91903971743E8 NULL NULL NULL 1.0 7.91903998023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --870474082 NULL NULL tdFP6MjN5b true 11 11.0 1969-12-31 16:00:02.351 NULL -148471202 553500641056 870474082 8.70473218743E8 NULL NULL NULL 1.0 8.70473245023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --706227781 NULL NULL jO055kB85qLIyl5VJVkj8 true 11 11.0 1969-12-31 16:00:02.351 NULL -321571126 1198817157728 706227781 7.06226917743E8 NULL NULL NULL 1.0 7.06226944023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --372691367 NULL NULL 5CbP5V2x14qPOqL3J true 11 11.0 1969-12-31 16:00:02.351 NULL -257171499 958735348272 372691367 3.72690503743E8 NULL NULL NULL 1.0 3.7269053002299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --302342259 NULL NULL H5alUwndRKm true 11 11.0 1969-12-31 16:00:02.351 NULL -279191311 1040825207408 302342259 3.02341395743E8 NULL NULL NULL 1.0 3.0234142202299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --323362404 NULL NULL 2h2qsp14cr false 11 11.0 1969-12-31 16:00:02.351 NULL -84799501 316132539728 323362404 3.23361540743E8 NULL NULL NULL 1.0 3.2336156702299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --659186324 NULL NULL QDK4Rtj7CX01p false 11 11.0 1969-12-31 16:00:02.351 NULL -609337705 2271610964240 659186324 6.59185460743E8 NULL NULL NULL 1.0 6.59185487023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --774129472 NULL NULL jeOFkUX5u5flcN5hCr4 false 11 11.0 1969-12-31 16:00:02.351 NULL -129228119 481762427632 774129472 7.74128608743E8 NULL NULL NULL 1.0 7.74128635023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --757031735 NULL NULL 6AmfdSoTPmVvXdgM8CP20sx false 11 11.0 1969-12-31 16:00:02.351 NULL -59385430 221388883040 757031735 7.57030871743E8 NULL NULL NULL 1.0 7.57030898023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --978898374 NULL NULL ShA4jlmOwF8u7kjN false 11 11.0 1969-12-31 16:00:02.351 NULL -277483031 1034456739568 978898374 9.78897510743E8 NULL NULL NULL 1.0 9.78897537023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1069103950 NULL NULL 41A0nYX72UOSfxO4053xy true 11 11.0 1969-12-31 16:00:02.351 NULL -927759444 3458687207232 1069103950 1.069103086743E9 NULL NULL NULL 1.0 1.069103113023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --839336166 NULL NULL r5osh2m507Ot387emvDxNY true 11 11.0 1969-12-31 16:00:02.351 NULL -587232793 2189203852304 839336166 8.39335302743E8 NULL NULL NULL 1.0 8.39335329023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --930463965 NULL NULL ldk1K false 11 11.0 1969-12-31 16:00:02.351 NULL -414014176 1543444848128 930463965 9.30463101743E8 NULL NULL NULL 1.0 9.30463128023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1048097158 NULL NULL fpt3gpLE true 11 11.0 1969-12-31 16:00:02.351 NULL -234579722 874513203616 1048097158 1.048096294743E9 NULL NULL NULL 1.0 1.048096321023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1020466796 NULL NULL 7hCJ5yJvt0775jjgq8S0bX6W false 11 11.0 1969-12-31 16:00:02.351 NULL -926772952 3455009565056 1020466796 1.020465932743E9 NULL NULL NULL 1.0 1.020465959023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --379279396 NULL NULL n3WIT2YtCj true 11 11.0 1969-12-31 16:00:02.351 NULL -48658326 181398239328 379279396 3.79278532743E8 NULL NULL NULL 1.0 3.7927855902299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --239794059 NULL NULL 74w2cGm0 true 11 11.0 1969-12-31 16:00:02.351 NULL -8172686 30467773408 239794059 2.39793195743E8 NULL NULL NULL 1.0 2.39793222023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --988289401 NULL NULL CeG187j false 11 11.0 1969-12-31 16:00:02.351 NULL -446065499 1662932180272 988289401 9.88288537743E8 NULL NULL NULL 1.0 9.88288564023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --528532585 NULL NULL ijU4c false 11 11.0 1969-12-31 16:00:02.351 NULL -511463313 1906735230864 528532585 5.28531721743E8 NULL NULL NULL 1.0 5.2853174802299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --743921863 NULL NULL B7grxpIo8Tf33RjGTg0 true 11 11.0 1969-12-31 16:00:02.351 NULL -517466117 1929113684176 743921863 7.43920999743E8 NULL NULL NULL 1.0 7.43921026023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --391573084 NULL NULL 28Oe6r21yux7Lk47 true 11 11.0 1969-12-31 16:00:02.351 NULL -236100834 880183909152 391573084 3.91572220743E8 NULL NULL NULL 1.0 3.9157224702299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 PREHOOK: query: -- TargetTypeClasses: Long, String, Double, Bool, Timestamp -- Functions: VarP, Var, StDev, StDevP, Max, Sum -- ArithmeticOps: Divide, Remainder, Subtract, Multiply @@ -2265,6 +1116,7 @@ WHERE (((197 > ctinyint) OR (cboolean1 < 0) OR ((cstring1 LIKE '%ss') AND (cfloat <= ctinyint))) +LIMIT 25 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: Long, String, Double, Bool, Timestamp -- Functions: VarP, Var, StDev, StDevP, Max, Sum @@ -2303,23 +1155,46 @@ WHERE (((197 > ctinyint) OR (cboolean1 < 0) OR ((cstring1 LIKE '%ss') AND (cfloat <= ctinyint))) +LIMIT 25 POSTHOOK: type: QUERY STAGE DEPENDENCIES: - Stage-0 is a root stage + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 STAGE PLANS: + Stage: Stage-1 + Tez +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((((197.0 > ctinyint) and (cint = cbigint)) or (cbigint = 359)) or (cboolean1 < 0)) or ((cstring1 like '%ss') and (cfloat <= ctinyint))) (type: boolean) + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int), cbigint (type: bigint), cstring1 (type: string), cboolean1 (type: boolean), cfloat (type: float), cdouble (type: double), ctimestamp2 (type: timestamp), csmallint (type: smallint), cstring2 (type: string), cboolean2 (type: boolean), (cint / cbigint) (type: double), (cbigint % 79.553) (type: double), (- (cint / cbigint)) (type: double), (10.175 % cfloat) (type: double), (- cfloat) (type: float), (cfloat - (- cfloat)) (type: float), ((cfloat - (- cfloat)) % -6432) (type: float), (cdouble * csmallint) (type: double), (- cdouble) (type: double), (- cbigint) (type: bigint), (cfloat - (cint / cbigint)) (type: double), (- csmallint) (type: smallint), (3569 % cbigint) (type: bigint), (359 - cdouble) (type: double), (- csmallint) (type: smallint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24 + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + Stage: Stage-0 Fetch Operator - limit: -1 + limit: 25 Processor Tree: - TableScan - alias: alltypesorc - Filter Operator - predicate: (((((197.0 > ctinyint) and (cint = cbigint)) or (cbigint = 359)) or (cboolean1 < 0)) or ((cstring1 like '%ss') and (cfloat <= ctinyint))) (type: boolean) - Select Operator - expressions: cint (type: int), cbigint (type: bigint), cstring1 (type: string), cboolean1 (type: boolean), cfloat (type: float), cdouble (type: double), ctimestamp2 (type: timestamp), csmallint (type: smallint), cstring2 (type: string), cboolean2 (type: boolean), (cint / cbigint) (type: double), (cbigint % 79.553) (type: double), (- (cint / cbigint)) (type: double), (10.175 % cfloat) (type: double), (- cfloat) (type: float), (cfloat - (- cfloat)) (type: float), ((cfloat - (- cfloat)) % -6432) (type: float), (cdouble * csmallint) (type: double), (- cdouble) (type: double), (- cbigint) (type: bigint), (cfloat - (cint / cbigint)) (type: double), (- csmallint) (type: smallint), (3569 % cbigint) (type: bigint), (359 - cdouble) (type: double), (- csmallint) (type: smallint) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24 - ListSink + ListSink PREHOOK: query: SELECT cint, cbigint, @@ -2353,6 +1228,7 @@ WHERE (((197 > ctinyint) OR (cboolean1 < 0) OR ((cstring1 LIKE '%ss') AND (cfloat <= ctinyint))) +LIMIT 25 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -2388,6 +1264,7 @@ WHERE (((197 > ctinyint) OR (cboolean1 < 0) OR ((cstring1 LIKE '%ss') AND (cfloat <= ctinyint))) +LIMIT 25 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -2431,6 +1308,7 @@ WHERE (((csmallint > -26.28) OR ((cbigint <= cfloat) AND (-26.28 <= csmallint))) ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble +LIMIT 75 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: String, Bool, Double, Long, Timestamp -- Functions: Sum, Max, Avg, Var, StDevP, VarP @@ -2469,6 +1347,7 @@ WHERE (((csmallint > -26.28) OR ((cbigint <= cfloat) AND (-26.28 <= csmallint))) ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble +LIMIT 75 POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage @@ -2505,18 +1384,21 @@ STAGE PLANS: expressions: KEY.reducesinkkey7 (type: int), KEY.reducesinkkey1 (type: string), VALUE._col0 (type: boolean), KEY.reducesinkkey2 (type: timestamp), KEY.reducesinkkey6 (type: double), KEY.reducesinkkey3 (type: float), KEY.reducesinkkey4 (type: bigint), KEY.reducesinkkey8 (type: smallint), KEY.reducesinkkey0 (type: boolean), VALUE._col1 (type: int), VALUE._col2 (type: bigint), VALUE._col3 (type: bigint), VALUE._col4 (type: float), VALUE._col5 (type: bigint), VALUE._col6 (type: double), VALUE._col7 (type: double), VALUE._col8 (type: bigint), VALUE._col9 (type: double), VALUE._col10 (type: double), VALUE._col11 (type: double), VALUE._col12 (type: smallint), VALUE._col13 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21 Statistics: Num rows: 10922 Data size: 335301 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 10922 Data size: 335301 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Limit + Number of rows: 75 + Statistics: Num rows: 75 Data size: 2250 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 75 Data size: 2250 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Execution mode: vectorized Stage: Stage-0 Fetch Operator - limit: -1 + limit: 75 Processor Tree: ListSink @@ -2553,6 +1435,7 @@ WHERE (((csmallint > -26.28) OR ((cbigint <= cfloat) AND (-26.28 <= csmallint))) ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble +LIMIT 75 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -2588,6 +1471,7 @@ WHERE (((csmallint > -26.28) OR ((cbigint <= cfloat) AND (-26.28 <= csmallint))) ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble +LIMIT 75 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -2666,516 +1550,6 @@ NULL NULL false 1969-12-31 15:59:58.456 15601.0 -45.0 -831227593 15601 NULL NULL NULL NULL false 1969-12-31 15:59:58.456 15601.0 -44.0 -1551649760 15601 NULL NULL -1551649716 1551649760 44.0 -3103299476 1.0 -15601.0 NULL -1.551665361E9 0.03156818181818182 -5502.0 -15601 NULL NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -1447719201 15601 NULL NULL -1447719157 1447719201 44.0 -2895438358 1.0 -15601.0 NULL -1.447734802E9 0.03156818181818182 -8805.0 -15601 NULL NULL NULL NULL 1969-12-31 15:59:58.456 15601.0 -44.0 -1416000760 15601 NULL NULL -1416000716 1416000760 44.0 -2832001476 1.0 -15601.0 NULL -1.416016361E9 0.03156818181818182 -7197.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -1032806869 15601 NULL NULL -1032806825 1032806869 44.0 -2065613694 1.0 -15601.0 NULL -1.03282247E9 0.03156818181818182 -5068.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -44.0 -772919195 15601 NULL NULL -772919151 772919195 44.0 -1545838346 1.0 -15601.0 NULL -7.72934796E8 0.03156818181818182 -14453.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -429050254 15601 NULL NULL -429050210 429050254 44.0 -858100464 1.0 -15601.0 NULL -4.29065855E8 0.03156818181818182 -7153.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -399793337 15601 NULL NULL -399793293 399793337 44.0 -799586630 1.0 -15601.0 NULL -3.99808938E8 0.03156818181818182 -2111.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -358755931 15601 NULL NULL -358755887 358755931 44.0 -717511818 1.0 -15601.0 NULL -3.58771532E8 0.03156818181818182 -10936.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -75975416 15601 NULL NULL -75975372 75975416 44.0 -151950788 1.0 -15601.0 NULL -7.5991017E7 0.03156818181818182 -14147.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -43.0 -1111076337 15601 NULL NULL -1111076294 1111076337 43.0 -2222152631 1.0 -15601.0 NULL -1.111091938E9 0.03230232558139535 -4319.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -43.0 -223687300 15601 NULL NULL -223687257 223687300 43.0 -447374557 1.0 -15601.0 NULL -2.23702901E8 0.03230232558139535 -162.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -42.0 -2129158440 15601 NULL NULL -2129158398 2129158440 42.0 -4258316838 1.0 -15601.0 NULL -2.129174041E9 0.03307142857142857 -11965.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -42.0 -1434650528 15601 NULL NULL -1434650486 1434650528 42.0 -2869301014 1.0 -15601.0 NULL -1.434666129E9 0.03307142857142857 -13770.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -42.0 -1003335119 15601 NULL NULL -1003335077 1003335119 42.0 -2006670196 1.0 -15601.0 NULL -1.00335072E9 0.03307142857142857 -3607.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -42.0 -933775134 15601 NULL NULL -933775092 933775134 42.0 -1867550226 1.0 -15601.0 NULL -9.33790735E8 0.03307142857142857 -8481.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -41.0 -1512449609 15601 NULL NULL -1512449568 1512449609 41.0 -3024899177 1.0 -15601.0 NULL -1.51246521E9 0.03387804878048781 -10664.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -41.0 -1064437283 15601 NULL NULL -1064437242 1064437283 41.0 -2128874525 1.0 -15601.0 NULL -1.064452884E9 0.03387804878048781 -12255.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -41.0 -626924299 15601 NULL NULL -626924258 626924299 41.0 -1253848557 1.0 -15601.0 NULL -6.269399E8 0.03387804878048781 -13715.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -41.0 -560714683 15601 NULL NULL -560714642 560714683 41.0 -1121429325 1.0 -15601.0 NULL -5.60730284E8 0.03387804878048781 -14743.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -41.0 -480294523 15601 NULL NULL -480294482 480294523 41.0 -960589005 1.0 -15601.0 NULL -4.80310124E8 0.03387804878048781 -2137.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -40.0 -1723403466 15601 NULL NULL -1723403426 1723403466 40.0 -3446806892 1.0 -15601.0 NULL -1.723419067E9 0.034725 -7799.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -40.0 -1523633607 15601 NULL NULL -1523633567 1523633607 40.0 -3047267174 1.0 -15601.0 NULL -1.523649208E9 0.034725 -8745.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -40.0 -691840768 15601 NULL NULL -691840728 691840768 40.0 -1383681496 1.0 -15601.0 NULL -6.91856369E8 0.034725 -14423.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -40.0 -626007306 15601 NULL NULL -626007266 626007306 40.0 -1252014572 1.0 -15601.0 NULL -6.26022907E8 0.034725 -1580.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -39.0 -1651489748 15601 NULL NULL -1651489709 1651489748 39.0 -3302979457 1.0 -15601.0 NULL -1.651505349E9 0.03561538461538462 -14691.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -39.0 -775351902 15601 NULL NULL -775351863 775351902 39.0 -1550703765 1.0 -15601.0 NULL -7.75367503E8 0.03561538461538462 -13404.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -39.0 -682718731 15601 NULL NULL -682718692 682718731 39.0 -1365437423 1.0 -15601.0 NULL -6.82734332E8 0.03561538461538462 -3370.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -39.0 -176425309 15601 NULL NULL -176425270 176425309 39.0 -352850579 1.0 -15601.0 NULL -1.7644091E8 0.03561538461538462 -9201.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -38.0 -1858689000 15601 NULL NULL -1858688962 1858689000 38.0 -3717377962 1.0 -15601.0 NULL -1.858704601E9 0.03655263157894737 -1461.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -38.0 -1138820207 15601 NULL NULL -1138820169 1138820207 38.0 -2277640376 1.0 -15601.0 NULL -1.138835808E9 0.03655263157894737 -9611.0 -15601 NULL -NULL NULL NULL 1969-12-31 15:59:58.456 15601.0 -38.0 -6432 15601 NULL NULL -6394 6432 38.0 -12826 1.0 -15601.0 NULL -22033.0 0.03655263157894737 -6432.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -37.0 -1665990202 15601 NULL NULL -1665990165 1665990202 37.0 -3331980367 1.0 -15601.0 NULL -1.666005803E9 0.03754054054054054 -6215.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -37.0 -1474993355 15601 NULL NULL -1474993318 1474993355 37.0 -2949986673 1.0 -15601.0 NULL -1.475008956E9 0.03754054054054054 -12411.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -37.0 -1373443946 15601 NULL NULL -1373443909 1373443946 37.0 -2746887855 1.0 -15601.0 NULL -1.373459547E9 0.03754054054054054 -9911.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -37.0 -1274229243 15601 NULL NULL -1274229206 1274229243 37.0 -2548458449 1.0 -15601.0 NULL -1.274244844E9 0.03754054054054054 -1967.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -37.0 -218695361 15601 NULL NULL -218695324 218695361 37.0 -437390685 1.0 -15601.0 NULL -2.18710962E8 0.03754054054054054 -543.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -36.0 -1804756106 15601 NULL NULL -1804756070 1804756106 36.0 -3609512176 1.0 -15601.0 NULL -1.804771707E9 0.03858333333333333 -1224.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -36.0 -1655350680 15601 NULL NULL -1655350644 1655350680 36.0 -3310701324 1.0 -15601.0 NULL -1.655366281E9 0.03858333333333333 -6575.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -35.0 -1000935343 15601 NULL NULL -1000935308 1000935343 35.0 -2001870651 1.0 -15601.0 NULL -1.000950944E9 0.03968571428571429 -6385.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -35.0 -994591123 15601 NULL NULL -994591088 994591123 35.0 -1989182211 1.0 -15601.0 NULL -9.94606724E8 0.03968571428571429 -11772.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -35.0 -621636211 15601 NULL NULL -621636176 621636211 35.0 -1243272387 1.0 -15601.0 NULL -6.21651812E8 0.03968571428571429 -14366.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -34.0 -1225938733 15601 NULL NULL -1225938699 1225938733 34.0 -2451877432 1.0 -15601.0 NULL -1.225954334E9 0.04085294117647059 -12153.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -34.0 -1177680836 15601 NULL NULL -1177680802 1177680836 34.0 -2355361638 1.0 -15601.0 NULL -1.177696437E9 0.04085294117647059 -8149.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -34.0 -671949185 15601 NULL NULL -671949151 671949185 34.0 -1343898336 1.0 -15601.0 NULL -6.71964786E8 0.04085294117647059 -14115.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -33.0 -2080305624 15601 NULL NULL -2080305591 2080305624 33.0 -4160611215 1.0 -15601.0 NULL -2.080321225E9 0.04209090909090909 -5880.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -33.0 -1870761879 15601 NULL NULL -1870761846 1870761879 33.0 -3741523725 1.0 -15601.0 NULL -1.87077748E9 0.04209090909090909 -14767.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -33.0 -1583014792 15601 NULL NULL -1583014759 1583014792 33.0 -3166029551 1.0 -15601.0 NULL -1.583030393E9 0.04209090909090909 -12524.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -33.0 -1465766070 15601 NULL NULL -1465766037 1465766070 33.0 -2931532107 1.0 -15601.0 NULL -1.465781671E9 0.04209090909090909 -5317.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -33.0 -1447184932 15601 NULL NULL -1447184899 1447184932 33.0 -2894369831 1.0 -15601.0 NULL -1.447200533E9 0.04209090909090909 -4970.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -33.0 -226993201 15601 NULL NULL -226993168 226993201 33.0 -453986369 1.0 -15601.0 NULL -2.27008802E8 0.04209090909090909 -14252.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -33.0 -6432 15601 NULL NULL -6399 6432 33.0 -12831 1.0 -15601.0 NULL -22033.0 0.04209090909090909 -6432.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -32.0 -2105144474 15601 NULL NULL -2105144442 2105144474 32.0 -4210288916 1.0 -15601.0 NULL -2.105160075E9 0.04340625 -7938.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -32.0 -1864500604 15601 NULL NULL -1864500572 1864500604 32.0 -3729001176 1.0 -15601.0 NULL -1.864516205E9 0.04340625 -9493.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -32.0 -1473796341 15601 NULL NULL -1473796309 1473796341 32.0 -2947592650 1.0 -15601.0 NULL -1.473811942E9 0.04340625 -1073.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -32.0 -938739544 15601 NULL NULL -938739512 938739544 32.0 -1877479056 1.0 -15601.0 NULL -9.38755145E8 0.04340625 -11773.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -31.0 -2030835158 15601 NULL NULL -2030835127 2030835158 31.0 -4061670285 1.0 -15601.0 NULL -2.030850759E9 0.044806451612903225 -6185.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -31.0 -1784005728 15601 NULL NULL -1784005697 1784005728 31.0 -3568011425 1.0 -15601.0 NULL -1.784021329E9 0.044806451612903225 -176.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -31.0 -1357998994 15601 NULL NULL -1357998963 1357998994 31.0 -2715997957 1.0 -15601.0 NULL -1.358014595E9 0.044806451612903225 -9949.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -31.0 -773540513 15601 NULL NULL -773540482 773540513 31.0 -1547080995 1.0 -15601.0 NULL -7.73556114E8 0.044806451612903225 -11731.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -31.0 -198456342 15601 NULL NULL -198456311 198456342 31.0 -396912653 1.0 -15601.0 NULL -1.98471943E8 0.044806451612903225 -11622.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -31.0 -46453649 15601 NULL NULL -46453618 46453649 31.0 -92907267 1.0 -15601.0 NULL -4.646925E7 0.044806451612903225 -9472.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -30.0 -1617443296 15601 NULL NULL -1617443266 1617443296 30.0 -3234886562 1.0 -15601.0 NULL -1.617458897E9 0.0463 -9621.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -30.0 -532238997 15601 NULL NULL -532238967 532238997 30.0 -1064477964 1.0 -15601.0 NULL -5.32254598E8 0.0463 -10882.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -29.0 -2143024405 15601 NULL NULL -2143024376 2143024405 29.0 -4286048781 1.0 -15601.0 NULL -2.143040006E9 0.04789655172413793 -8641.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -29.0 -1912094416 15601 NULL NULL -1912094387 1912094416 29.0 -3824188803 1.0 -15601.0 NULL -1.912110017E9 0.04789655172413793 -4654.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -29.0 -1703837738 15601 NULL NULL -1703837709 1703837738 29.0 -3407675447 1.0 -15601.0 NULL -1.703853339E9 0.04789655172413793 -5725.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -29.0 -1355363882 15601 NULL NULL -1355363853 1355363882 29.0 -2710727735 1.0 -15601.0 NULL -1.355379483E9 0.04789655172413793 -11406.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -29.0 -427240643 15601 NULL NULL -427240614 427240643 29.0 -854481257 1.0 -15601.0 NULL -4.27256244E8 0.04789655172413793 -7258.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -29.0 -393066261 15601 NULL NULL -393066232 393066261 29.0 -786132493 1.0 -15601.0 NULL -3.93081862E8 0.04789655172413793 -14667.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -28.0 -1297431786 15601 NULL NULL -1297431758 1297431786 28.0 -2594863544 1.0 -15601.0 NULL -1.297447387E9 0.04960714285714286 -5823.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -28.0 -870417768 15601 NULL NULL -870417740 870417768 28.0 -1740835508 1.0 -15601.0 NULL -8.70433369E8 0.04960714285714286 -6776.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -28.0 -357908629 15601 NULL NULL -357908601 357908629 28.0 -715817230 1.0 -15601.0 NULL -3.5792423E8 0.04960714285714286 -6088.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -28.0 -309692433 15601 NULL NULL -309692405 309692433 28.0 -619384838 1.0 -15601.0 NULL -3.09708034E8 0.04960714285714286 -12583.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -27.0 -1152127938 15601 NULL NULL -1152127911 1152127938 27.0 -2304255849 1.0 -15601.0 NULL -1.152143539E9 0.051444444444444445 -9689.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -26.28 -1227267053 15601 NULL NULL -1227267030 1227267053 26.28 -2454534083 1.0 -15601.0 NULL -1.227282654E9 0.06039130434782609 -14388.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -26.0 -2022905886 15601 NULL NULL -2022905860 2022905886 26.0 -4045811746 1.0 -15601.0 NULL -2.022921487E9 0.05342307692307692 -2221.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -26.0 -1931941399 15601 NULL NULL -1931941373 1931941399 26.0 -3863882772 1.0 -15601.0 NULL -1.931957E9 0.05342307692307692 -7165.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -26.0 -1301028273 15601 NULL NULL -1301028247 1301028273 26.0 -2602056520 1.0 -15601.0 NULL -1.301043874E9 0.05342307692307692 -14080.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -26.0 -404509269 15601 NULL NULL -404509243 404509269 26.0 -809018512 1.0 -15601.0 NULL -4.0452487E8 0.05342307692307692 -6541.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -26.0 -354697170 15601 NULL NULL -354697144 354697170 26.0 -709394314 1.0 -15601.0 NULL -3.54712771E8 0.05342307692307692 -8435.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -26.0 -257298466 15601 NULL NULL -257298440 257298466 26.0 -514596906 1.0 -15601.0 NULL -2.57314067E8 0.05342307692307692 -6774.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -25.0 -892983643 15601 NULL NULL -892983618 892983643 25.0 -1785967261 1.0 -15601.0 NULL -8.92999244E8 0.05556 -13605.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -25.0 -414129290 15601 NULL NULL -414129265 414129290 25.0 -828258555 1.0 -15601.0 NULL -4.14144891E8 0.05556 -745.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -24.0 -1496666324 15601 NULL NULL -1496666300 1496666324 24.0 -2993332624 1.0 -15601.0 NULL -1.496681925E9 0.057875 -15591.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -24.0 -402193022 15601 NULL NULL -402192998 402193022 24.0 -804386020 1.0 -15601.0 NULL -4.02208623E8 0.057875 -14843.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -24.0 -278405900 15601 NULL NULL -278405876 278405900 24.0 -556811776 1.0 -15601.0 NULL -2.78421501E8 0.057875 -6055.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -24.0 -214199588 15601 NULL NULL -214199564 214199588 24.0 -428399152 1.0 -15601.0 NULL -2.14215189E8 0.057875 -13459.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -23.0 -2104361963 15601 NULL NULL -2104361940 2104361963 23.0 -4208723903 1.0 -15601.0 NULL -2.104377564E9 0.06039130434782609 -5477.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -23.0 -1864716928 15601 NULL NULL -1864716905 1864716928 23.0 -3729433833 1.0 -15601.0 NULL -1.864732529E9 0.06039130434782609 -7403.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -23.0 -1196406048 15601 NULL NULL -1196406025 1196406048 23.0 -2392812073 1.0 -15601.0 NULL -1.196421649E9 0.06039130434782609 -12161.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -23.0 -1046520269 15601 NULL NULL -1046520246 1046520269 23.0 -2093040515 1.0 -15601.0 NULL -1.04653587E9 0.06039130434782609 -5189.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -23.0 -557847275 15601 NULL NULL -557847252 557847275 23.0 -1115694527 1.0 -15601.0 NULL -5.57862876E8 0.06039130434782609 -2318.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -23.0 -287502046 15601 NULL NULL -287502023 287502046 23.0 -575004069 1.0 -15601.0 NULL -2.87517647E8 0.06039130434782609 -6818.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -22.0 -1843534244 15601 NULL NULL -1843534222 1843534244 22.0 -3687068466 1.0 -15601.0 NULL -1.843549845E9 0.06313636363636364 -10877.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -22.0 -1803981239 15601 NULL NULL -1803981217 1803981239 22.0 -3607962456 1.0 -15601.0 NULL -1.80399684E9 0.06313636363636364 -6407.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -22.0 -1138394041 15601 NULL NULL -1138394019 1138394041 22.0 -2276788060 1.0 -15601.0 NULL -1.138409642E9 0.06313636363636364 -4672.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -22.0 -116661992 15601 NULL NULL -116661970 116661992 22.0 -233323962 1.0 -15601.0 NULL -1.16677593E8 0.06313636363636364 -13315.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -21.0 -1025776200 15601 NULL NULL -1025776179 1025776200 21.0 -2051552379 1.0 -15601.0 NULL -1.025791801E9 0.06614285714285714 -10450.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -21.0 -813809028 15601 NULL NULL -813809007 813809028 21.0 -1627618035 1.0 -15601.0 NULL -8.13824629E8 0.06614285714285714 -14065.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -21.0 -617977476 15601 NULL NULL -617977455 617977476 21.0 -1235954931 1.0 -15601.0 NULL -6.17993077E8 0.06614285714285714 -6265.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -21.0 -264600574 15601 NULL NULL -264600553 264600574 21.0 -529201127 1.0 -15601.0 NULL -2.64616175E8 0.06614285714285714 -7614.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -20.0 -1914520574 15601 NULL NULL -1914520554 1914520574 20.0 -3829041128 1.0 -15601.0 NULL -1.914536175E9 0.06945 -12657.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -20.0 -1569241661 15601 NULL NULL -1569241641 1569241661 20.0 -3138483302 1.0 -15601.0 NULL -1.569257262E9 0.06945 -15076.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -1293754251 15601 NULL NULL -1293754231 1293754251 20.0 -2587508482 1.0 -15601.0 NULL -1.293769852E9 0.06945 -10124.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -990240929 15601 NULL NULL -990240909 990240929 20.0 -1980481838 1.0 -15601.0 NULL -9.9025653E8 0.06945 -14257.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -20.0 -258993110 15601 NULL NULL -258993090 258993110 20.0 -517986200 1.0 -15601.0 NULL -2.59008711E8 0.06945 -909.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -125514283 15601 NULL NULL -125514263 125514283 20.0 -251028546 1.0 -15601.0 NULL -1.25529884E8 0.06945 -4238.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -88020940 15601 NULL NULL -88020920 88020940 20.0 -176041860 1.0 -15601.0 NULL -8.8036541E7 0.06945 -98.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -57923441 15601 NULL NULL -57923421 57923441 20.0 -115846862 1.0 -15601.0 NULL -5.7939042E7 0.06945 -12529.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -41530125 15601 NULL NULL -41530105 41530125 20.0 -83060230 1.0 -15601.0 NULL -4.1545726E7 0.06945 -263.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -1575589254 15601 NULL NULL -1575589235 1575589254 19.0 -3151178489 1.0 -15601.0 NULL -1.575604855E9 0.07310526315789474 -13062.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -19.0 -1322538563 15601 NULL NULL -1322538544 1322538563 19.0 -2645077107 1.0 -15601.0 NULL -1.322554164E9 0.07310526315789474 -10591.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -1293795844 15601 NULL NULL -1293795825 1293795844 19.0 -2587591669 1.0 -15601.0 NULL -1.293811445E9 0.07310526315789474 -4914.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -19.0 -1198536835 15601 NULL NULL -1198536816 1198536835 19.0 -2397073651 1.0 -15601.0 NULL -1.198552436E9 0.07310526315789474 -5611.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -1040575969 15601 NULL NULL -1040575950 1040575969 19.0 -2081151919 1.0 -15601.0 NULL -1.04059157E9 0.07310526315789474 -4870.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -899534452 15601 NULL NULL -899534433 899534452 19.0 -1799068885 1.0 -15601.0 NULL -8.99550053E8 0.07310526315789474 -11994.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -643533009 15601 NULL NULL -643532990 643533009 19.0 -1287065999 1.0 -15601.0 NULL -6.4354861E8 0.07310526315789474 -7360.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -584361640 15601 NULL NULL -584361621 584361640 19.0 -1168723261 1.0 -15601.0 NULL -5.84377241E8 0.07310526315789474 -10584.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -19.0 -285749156 15601 NULL NULL -285749137 285749156 19.0 -571498293 1.0 -15601.0 NULL -2.85764757E8 0.07310526315789474 -1240.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -18.0 -1414044792 15601 NULL NULL -1414044774 1414044792 18.0 -2828089566 1.0 -15601.0 NULL -1.414060393E9 0.07716666666666666 -1354.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -18.0 -1310922279 15601 NULL NULL -1310922261 1310922279 18.0 -2621844540 1.0 -15601.0 NULL -1.31093788E9 0.07716666666666666 -1451.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -18.0 -1185085807 15601 NULL NULL -1185085789 1185085807 18.0 -2370171596 1.0 -15601.0 NULL -1.185101408E9 0.07716666666666666 -2645.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -17.0 -1901567703 15601 NULL NULL -1901567686 1901567703 17.0 -3803135389 1.0 -15601.0 NULL -1.901583304E9 0.08170588235294118 -8616.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -17.0 -1275985495 15601 NULL NULL -1275985478 1275985495 17.0 -2551970973 1.0 -15601.0 NULL -1.276001096E9 0.08170588235294118 -10907.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -17.0 -590153501 15601 NULL NULL -590153484 590153501 17.0 -1180306985 1.0 -15601.0 NULL -5.90169102E8 0.08170588235294118 -14474.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -16.0 -1505978287 15601 NULL NULL -1505978271 1505978287 16.0 -3011956558 1.0 -15601.0 NULL -1.505993888E9 0.0868125 -13757.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -16.0 -598490358 15601 NULL NULL -598490342 598490358 16.0 -1196980700 1.0 -15601.0 NULL -5.98505959E8 0.0868125 -4796.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -15.0 -1925755234 15601 NULL NULL -1925755219 1925755234 15.0 -3851510453 1.0 -15601.0 NULL -1.925770835E9 0.0926 -14597.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -15.0 -937270420 15601 NULL NULL -937270405 937270420 15.0 -1874540825 1.0 -15601.0 NULL -9.37286021E8 0.0926 -9143.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -14.0 -1863202490 15601 NULL NULL -1863202476 1863202490 14.0 -3726404966 1.0 -15601.0 NULL -1.863218091E9 0.09921428571428571 -6262.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -14.0 -946632342 15601 NULL NULL -946632328 946632342 14.0 -1893264670 1.0 -15601.0 NULL -9.46647943E8 0.09921428571428571 -10465.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -14.0 -466156812 15601 NULL NULL -466156798 466156812 14.0 -932313610 1.0 -15601.0 NULL -4.66172413E8 0.09921428571428571 -14533.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -14.0 -205670222 15601 NULL NULL -205670208 205670222 14.0 -411340430 1.0 -15601.0 NULL -2.05685823E8 0.09921428571428571 -2239.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -13.0 -1040843741 15601 NULL NULL -1040843728 1040843741 13.0 -2081687469 1.0 -15601.0 NULL -1.040859342E9 0.10684615384615384 -7425.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -13.0 -928466576 15601 NULL NULL -928466563 928466576 13.0 -1856933139 1.0 -15601.0 NULL -9.28482177E8 0.10684615384615384 -4263.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -11.0 -1985550487 15601 NULL NULL -1985550476 1985550487 11.0 -3971100963 1.0 -15601.0 NULL -1.985566088E9 0.1262727272727273 -11217.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -11.0 -1964641289 15601 NULL NULL -1964641278 1964641289 11.0 -3929282567 1.0 -15601.0 NULL -1.96465689E9 0.1262727272727273 -7359.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -11.0 -1133138233 15601 NULL NULL -1133138222 1133138233 11.0 -2266276455 1.0 -15601.0 NULL -1.133153834E9 0.1262727272727273 -6401.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -11.0 -655443218 15601 NULL NULL -655443207 655443218 11.0 -1310886425 1.0 -15601.0 NULL -6.55458819E8 0.1262727272727273 -14006.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -11.0 -386315686 15601 NULL NULL -386315675 386315686 11.0 -772631361 1.0 -15601.0 NULL -3.86331287E8 0.1262727272727273 -3724.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -11.0 -26446061 15601 NULL NULL -26446050 26446061 11.0 -52892111 1.0 -15601.0 NULL -2.6461662E7 0.1262727272727273 -2366.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -10.0 -1850457201 15601 NULL NULL -1850457191 1850457201 10.0 -3700914392 1.0 -15601.0 NULL -1.850472802E9 0.1389 -6990.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -10.0 -1160428011 15601 NULL NULL -1160428001 1160428011 10.0 -2320856012 1.0 -15601.0 NULL -1.160443612E9 0.1389 -10030.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -10.0 -1086197521 15601 NULL NULL -1086197511 1086197521 10.0 -2172395032 1.0 -15601.0 NULL -1.086213122E9 0.1389 -9098.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -9.0 -911417577 15601 NULL NULL -911417568 911417577 9.0 -1822835145 1.0 -15601.0 NULL -9.11433178E8 0.15433333333333332 -7157.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -9.0 -775282830 15601 NULL NULL -775282821 775282830 9.0 -1550565651 1.0 -15601.0 NULL -7.75298431E8 0.15433333333333332 -6736.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -9.0 -216777441 15601 NULL NULL -216777432 216777441 9.0 -433554873 1.0 -15601.0 NULL -2.16793042E8 0.15433333333333332 -1546.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -2028170063 15601 NULL NULL -2028170055 2028170063 8.0 -4056340118 1.0 -15601.0 NULL -2.028185664E9 0.173625 -8861.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -1998625094 15601 NULL NULL -1998625086 1998625094 8.0 -3997250180 1.0 -15601.0 NULL -1.998640695E9 0.173625 -12186.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -1902104689 15601 NULL NULL -1902104681 1902104689 8.0 -3804209370 1.0 -15601.0 NULL -1.90212029E9 0.173625 -15168.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -1768316238 15601 NULL NULL -1768316230 1768316238 8.0 -3536632468 1.0 -15601.0 NULL -1.768331839E9 0.173625 -5292.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -8.0 -1621359391 15601 NULL NULL -1621359383 1621359391 8.0 -3242718774 1.0 -15601.0 NULL -1.621374992E9 0.173625 -9865.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -1493703726 15601 NULL NULL -1493703718 1493703726 8.0 -2987407444 1.0 -15601.0 NULL -1.493719327E9 0.173625 -1582.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -335617169 15601 NULL NULL -335617161 335617169 8.0 -671234330 1.0 -15601.0 NULL -3.3563277E8 0.173625 -8457.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -8.0 -225001319 15601 NULL NULL -225001311 225001319 8.0 -450002630 1.0 -15601.0 NULL -2.2501692E8 0.173625 -3697.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -1761560547 15601 NULL NULL -1761560541 1761560547 6.0 -3523121088 1.0 -15601.0 NULL -1.761576148E9 0.2315 -4834.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -6.0 -1610058211 15601 NULL NULL -1610058205 1610058211 6.0 -3220116416 1.0 -15601.0 NULL -1.610073812E9 0.2315 -3809.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -1307656088 15601 NULL NULL -1307656082 1307656088 6.0 -2615312170 1.0 -15601.0 NULL -1.307671689E9 0.2315 -11470.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -6.0 -1207674957 15601 NULL NULL -1207674951 1207674957 6.0 -2415349908 1.0 -15601.0 NULL -1.207690558E9 0.2315 -1547.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -847064600 15601 NULL NULL -847064594 847064600 6.0 -1694129194 1.0 -15601.0 NULL -8.47080201E8 0.2315 -8305.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -786134704 15601 NULL NULL -786134698 786134704 6.0 -1572269402 1.0 -15601.0 NULL -7.86150305E8 0.2315 -314.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -659825179 15601 NULL NULL -659825173 659825179 6.0 -1319650352 1.0 -15601.0 NULL -6.5984078E8 0.2315 -12086.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -573372032 15601 NULL NULL -573372026 573372032 6.0 -1146744058 1.0 -15601.0 NULL -5.73387633E8 0.2315 -4080.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -6.0 -337682588 15601 NULL NULL -337682582 337682588 6.0 -675365170 1.0 -15601.0 NULL -3.37698189E8 0.2315 -14544.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -5.0 -1888902550 15601 NULL NULL -1888902545 1888902550 5.0 -3777805095 1.0 -15601.0 NULL -1.888918151E9 0.2778 -11475.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -1844060558 15601 NULL NULL -1844060553 1844060558 5.0 -3688121111 1.0 -15601.0 NULL -1.844076159E9 0.2778 -6757.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -1367836702 15601 NULL NULL -1367836697 1367836702 5.0 -2735673399 1.0 -15601.0 NULL -1.367852303E9 0.2778 -3426.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -1029272743 15601 NULL NULL -1029272738 1029272743 5.0 -2058545481 1.0 -15601.0 NULL -1.029288344E9 0.2778 -12369.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -685821373 15601 NULL NULL -685821368 685821373 5.0 -1371642741 1.0 -15601.0 NULL -6.85836974E8 0.2778 -1413.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -550628565 15601 NULL NULL -550628560 550628565 5.0 -1101257125 1.0 -15601.0 NULL -5.50644166E8 0.2778 -6871.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -13357585 15601 NULL NULL -13357580 13357585 5.0 -26715165 1.0 -15601.0 NULL -1.3373186E7 0.2778 -3129.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -4.0 -2142615863 15601 NULL NULL -2142615859 2142615863 4.0 -4285231722 1.0 -15601.0 NULL -2.142631464E9 0.34725 -5725.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -4.0 -1559306282 15601 NULL NULL -1559306278 1559306282 4.0 -3118612560 1.0 -15601.0 NULL -1.559321883E9 0.34725 -1933.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -4.0 -413080018 15601 NULL NULL -413080014 413080018 4.0 -826160032 1.0 -15601.0 NULL -4.13095619E8 0.34725 -12341.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -4.0 -85097850 15601 NULL NULL -85097846 85097850 4.0 -170195696 1.0 -15601.0 NULL -8.5113451E7 0.34725 -9996.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -3.0 -2076312756 15601 NULL NULL -2076312753 2076312756 3.0 -4152625509 1.0 -15601.0 NULL -2.076328357E9 0.463 -6868.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -3.0 -1714949058 15601 NULL NULL -1714949055 1714949058 3.0 -3429898113 1.0 -15601.0 NULL -1.714964659E9 0.463 -9133.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -3.0 -1263796487 15601 NULL NULL -1263796484 1263796487 3.0 -2527592971 1.0 -15601.0 NULL -1.263812088E9 0.463 -6280.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -2.0 -2115132140 15601 NULL NULL -2115132138 2115132140 2.0 -4230264278 1.0 -15601.0 NULL -2.115147741E9 0.6945 -10964.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -2.0 -430689331 15601 NULL NULL -430689329 430689331 2.0 -861378660 1.0 -15601.0 NULL -4.30704932E8 0.6945 -8125.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -2.0 -338257841 15601 NULL NULL -338257839 338257841 2.0 -676515680 1.0 -15601.0 NULL -3.38273442E8 0.6945 -12560.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -2.0 -319788030 15601 NULL NULL -319788028 319788030 2.0 -639576058 1.0 -15601.0 NULL -3.19803631E8 0.6945 -14333.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -2.0 -64512046 15601 NULL NULL -64512044 64512046 2.0 -129024090 1.0 -15601.0 NULL -6.4527647E7 0.6945 -1911.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -1.0 -789881959 15601 NULL NULL -789881958 789881959 1.0 -1579763917 1.0 -15601.0 NULL -7.8989756E8 1.389 -3329.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -1.0 -630453835 15601 NULL NULL -630453834 630453835 1.0 -1260907669 1.0 -15601.0 NULL -6.30469436E8 1.389 -1824.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -1.0 -532065045 15601 NULL NULL -532065044 532065045 1.0 -1064130089 1.0 -15601.0 NULL -5.32080646E8 1.389 -8541.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -1.0 -457778616 15601 NULL NULL -457778615 457778616 1.0 -915557231 1.0 -15601.0 NULL -4.57794217E8 1.389 -14074.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 0.0 -1355080830 15601 NULL NULL -1355080830 1355080830 -0.0 -2710161660 1.0 -15601.0 NULL -1.355096431E9 NULL -9172.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 0.0 -1300968933 15601 NULL NULL -1300968933 1300968933 -0.0 -2601937866 1.0 -15601.0 NULL -1.300984534E9 NULL -1543.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 0.0 -1111841132 15601 NULL NULL -1111841132 1111841132 -0.0 -2223682264 1.0 -15601.0 NULL -1.111856733E9 NULL -4665.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 0.0 -901264012 15601 NULL NULL -901264012 901264012 -0.0 -1802528024 1.0 -15601.0 NULL -9.01279613E8 NULL -9843.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 0.0 -438779645 15601 NULL NULL -438779645 438779645 -0.0 -877559290 1.0 -15601.0 NULL -4.38795246E8 NULL -1520.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 0.0 -203039588 15601 NULL NULL -203039588 203039588 -0.0 -406079176 1.0 -15601.0 NULL -2.03055189E8 NULL -8174.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 0.0 -39854776 15601 NULL NULL -39854776 39854776 -0.0 -79709552 1.0 -15601.0 NULL -3.9870377E7 NULL -9822.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 1.0 -2136727102 15601 NULL NULL -2136727103 2136727102 -1.0 -4273454205 1.0 -15601.0 NULL -2.136742703E9 -1.389 -14142.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 1.0 -1972121622 15601 NULL NULL -1972121623 1972121622 -1.0 -3944243245 1.0 -15601.0 NULL -1.972137223E9 -1.389 -14813.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 1.0 -1025788056 15601 NULL NULL -1025788057 1025788056 -1.0 -2051576113 1.0 -15601.0 NULL -1.025803657E9 -1.389 -6705.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 1.0 -832606494 15601 NULL NULL -832606495 832606494 -1.0 -1665212989 1.0 -15601.0 NULL -8.32622095E8 -1.389 -12326.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 1.0 -208178544 15601 NULL NULL -208178545 208178544 -1.0 -416357089 1.0 -15601.0 NULL -2.08194145E8 -1.389 -14401.0 -15601 NULL -NULL NULL NULL 1969-12-31 15:59:58.456 15601.0 1.0 -33712062 15601 NULL NULL -33712063 33712062 -1.0 -67424125 1.0 -15601.0 NULL -3.3727663E7 -1.389 -13902.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 2.0 -1084500358 15601 NULL NULL -1084500360 1084500358 -2.0 -2169000718 1.0 -15601.0 NULL -1.084515959E9 -0.6945 -12444.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 2.0 -664588420 15601 NULL NULL -664588422 664588420 -2.0 -1329176842 1.0 -15601.0 NULL -6.64604021E8 -0.6945 -1421.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 2.0 -400080827 15601 NULL NULL -400080829 400080827 -2.0 -800161656 1.0 -15601.0 NULL -4.00096428E8 -0.6945 -8783.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 3.0 -1580362265 15601 NULL NULL -1580362268 1580362265 -3.0 -3160724533 1.0 -15601.0 NULL -1.580377866E9 -0.463 -12167.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 3.0 -1269033095 15601 NULL NULL -1269033098 1269033095 -3.0 -2538066193 1.0 -15601.0 NULL -1.269048696E9 -0.463 -952.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 3.0 -1215180434 15601 NULL NULL -1215180437 1215180434 -3.0 -2430360871 1.0 -15601.0 NULL -1.215196035E9 -0.463 -2943.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 3.0 -662740282 15601 NULL NULL -662740285 662740282 -3.0 -1325480567 1.0 -15601.0 NULL -6.62755883E8 -0.463 -9802.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 4.0 -2118522134 15601 NULL NULL -2118522138 2118522134 -4.0 -4237044272 1.0 -15601.0 NULL -2.118537735E9 -0.34725 -15541.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 4.0 -1677882999 15601 NULL NULL -1677883003 1677882999 -4.0 -3355766002 1.0 -15601.0 NULL -1.6778986E9 -0.34725 -11050.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 4.0 -1096047343 15601 NULL NULL -1096047347 1096047343 -4.0 -2192094690 1.0 -15601.0 NULL -1.096062944E9 -0.34725 -14689.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 4.0 -941884962 15601 NULL NULL -941884966 941884962 -4.0 -1883769928 1.0 -15601.0 NULL -9.41900563E8 -0.34725 -5789.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 4.0 -293394791 15601 NULL NULL -293394795 293394791 -4.0 -586789586 1.0 -15601.0 NULL -2.93410392E8 -0.34725 -2385.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 4.0 -118815110 15601 NULL NULL -118815114 118815110 -4.0 -237630224 1.0 -15601.0 NULL -1.18830711E8 -0.34725 -13495.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 4.0 -25467184 15601 NULL NULL -25467188 25467184 -4.0 -50934372 1.0 -15601.0 NULL -2.5482785E7 -0.34725 -6352.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 5.0 -1668687246 15601 NULL NULL -1668687251 1668687246 -5.0 -3337374497 1.0 -15601.0 NULL -1.668702847E9 -0.2778 -4286.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 5.0 -1611690058 15601 NULL NULL -1611690063 1611690058 -5.0 -3223380121 1.0 -15601.0 NULL -1.611705659E9 -0.2778 -13152.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 5.0 -1456078486 15601 NULL NULL -1456078491 1456078486 -5.0 -2912156977 1.0 -15601.0 NULL -1.456094087E9 -0.2778 -5954.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 5.0 -1405201067 15601 NULL NULL -1405201072 1405201067 -5.0 -2810402139 1.0 -15601.0 NULL -1.405216668E9 -0.2778 -3396.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 5.0 -1332540455 15601 NULL NULL -1332540460 1332540455 -5.0 -2665080915 1.0 -15601.0 NULL -1.332556056E9 -0.2778 -12242.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 5.0 -507162101 15601 NULL NULL -507162106 507162101 -5.0 -1014324207 1.0 -15601.0 NULL -5.07177702E8 -0.2778 -4793.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 5.0 -245067785 15601 NULL NULL -245067790 245067785 -5.0 -490135575 1.0 -15601.0 NULL -2.45083386E8 -0.2778 -7277.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 5.0 -184458103 15601 NULL NULL -184458108 184458103 -5.0 -368916211 1.0 -15601.0 NULL -1.84473704E8 -0.2778 -7480.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 6.0 -1440134532 15601 NULL NULL -1440134538 1440134532 -6.0 -2880269070 1.0 -15601.0 NULL -1.440150133E9 -0.2315 -6222.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 6.0 -1135974844 15601 NULL NULL -1135974850 1135974844 -6.0 -2271949694 1.0 -15601.0 NULL -1.135990445E9 -0.2315 -3630.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 6.0 -940198586 15601 NULL NULL -940198592 940198586 -6.0 -1880397178 1.0 -15601.0 NULL -9.40214187E8 -0.2315 -4321.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 6.0 -921789404 15601 NULL NULL -921789410 921789404 -6.0 -1843578814 1.0 -15601.0 NULL -9.21805005E8 -0.2315 -4319.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 6.0 -47379735 15601 NULL NULL -47379741 47379735 -6.0 -94759476 1.0 -15601.0 NULL -4.7395336E7 -0.2315 -15099.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 7.0 -1487527155 15601 NULL NULL -1487527162 1487527155 -7.0 -2975054317 1.0 -15601.0 NULL -1.487542756E9 -0.19842857142857143 -3007.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 7.0 -484557615 15601 NULL NULL -484557622 484557615 -7.0 -969115237 1.0 -15601.0 NULL -4.84573216E8 -0.19842857142857143 -6156.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 7.0 -335637893 15601 NULL NULL -335637900 335637893 -7.0 -671275793 1.0 -15601.0 NULL -3.35653494E8 -0.19842857142857143 -13580.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 8.0 -1568412240 15601 NULL NULL -1568412248 1568412240 -8.0 -3136824488 1.0 -15601.0 NULL -1.568427841E9 -0.173625 -12508.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 8.0 -1393500402 15601 NULL NULL -1393500410 1393500402 -8.0 -2787000812 1.0 -15601.0 NULL -1.393516003E9 -0.173625 -3481.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 8.0 -671519607 15601 NULL NULL -671519615 671519607 -8.0 -1343039222 1.0 -15601.0 NULL -6.71535208E8 -0.173625 -5764.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 8.0 -590921449 15601 NULL NULL -590921457 590921449 -8.0 -1181842906 1.0 -15601.0 NULL -5.9093705E8 -0.173625 -2372.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 9.0 -2093472028 15601 NULL NULL -2093472037 2093472028 -9.0 -4186944065 1.0 -15601.0 NULL -2.093487629E9 -0.15433333333333332 -5040.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 9.0 -1792474070 15601 NULL NULL -1792474079 1792474070 -9.0 -3584948149 1.0 -15601.0 NULL -1.792489671E9 -0.15433333333333332 -12776.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 9.0 -1620061206 15601 NULL NULL -1620061215 1620061206 -9.0 -3240122421 1.0 -15601.0 NULL -1.620076807E9 -0.15433333333333332 -6563.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 9.0 -1145489043 15601 NULL NULL -1145489052 1145489043 -9.0 -2290978095 1.0 -15601.0 NULL -1.145504644E9 -0.15433333333333332 -1219.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 9.0 -910567691 15601 NULL NULL -910567700 910567691 -9.0 -1821135391 1.0 -15601.0 NULL -9.10583292E8 -0.15433333333333332 -15326.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 9.0 -605773050 15601 NULL NULL -605773059 605773050 -9.0 -1211546109 1.0 -15601.0 NULL -6.05788651E8 -0.15433333333333332 -1821.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 10.0 -1230115822 15601 NULL NULL -1230115832 1230115822 -10.0 -2460231654 1.0 -15601.0 NULL -1.230131423E9 -0.1389 -8174.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 10.0 -1043251982 15601 NULL NULL -1043251992 1043251982 -10.0 -2086503974 1.0 -15601.0 NULL -1.043267583E9 -0.1389 -13112.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 10.0 -720023732 15601 NULL NULL -720023742 720023732 -10.0 -1440047474 1.0 -15601.0 NULL -7.20039333E8 -0.1389 -6380.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 11.0 -1656847358 15601 NULL NULL -1656847369 1656847358 -11.0 -3313694727 1.0 -15601.0 NULL -1.656862959E9 -0.1262727272727273 -5557.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 11.0 -1558180030 15601 NULL NULL -1558180041 1558180030 -11.0 -3116360071 1.0 -15601.0 NULL -1.558195631E9 -0.1262727272727273 -14554.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 11.0 -1474284078 15601 NULL NULL -1474284089 1474284078 -11.0 -2948568167 1.0 -15601.0 NULL -1.474299679E9 -0.1262727272727273 -5179.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 11.0 -843069884 15601 NULL NULL -843069895 843069884 -11.0 -1686139779 1.0 -15601.0 NULL -8.43085485E8 -0.1262727272727273 -7445.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 12.0 -1879970002 15601 NULL NULL -1879970014 1879970002 -12.0 -3759940016 1.0 -15601.0 NULL -1.879985603E9 -0.11575 -2699.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 12.0 -1331125878 15601 NULL NULL -1331125890 1331125878 -12.0 -2662251768 1.0 -15601.0 NULL -1.331141479E9 -0.11575 -1755.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 12.0 -620887667 15601 NULL NULL -620887679 620887667 -12.0 -1241775346 1.0 -15601.0 NULL -6.20903268E8 -0.11575 -14670.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 13.0 -2108715482 15601 NULL NULL -2108715495 2108715482 -13.0 -4217430977 1.0 -15601.0 NULL -2.108731083E9 -0.10684615384615384 -6317.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 13.0 -2058347315 15601 NULL NULL -2058347328 2058347315 -13.0 -4116694643 1.0 -15601.0 NULL -2.058362916E9 -0.10684615384615384 -13779.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 14.0 -1970072997 15601 NULL NULL -1970073011 1970072997 -14.0 -3940146008 1.0 -15601.0 NULL -1.970088598E9 -0.09921428571428571 -9919.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 14.0 -1954298743 15601 NULL NULL -1954298757 1954298743 -14.0 -3908597500 1.0 -15601.0 NULL -1.954314344E9 -0.09921428571428571 -8276.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 14.0 -1555938533 15601 NULL NULL -1555938547 1555938533 -14.0 -3111877080 1.0 -15601.0 NULL -1.555954134E9 -0.09921428571428571 -4000.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 14.0 -1426659283 15601 NULL NULL -1426659297 1426659283 -14.0 -2853318580 1.0 -15601.0 NULL -1.426674884E9 -0.09921428571428571 -10237.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 14.0 -1358164329 15601 NULL NULL -1358164343 1358164329 -14.0 -2716328672 1.0 -15601.0 NULL -1.35817993E9 -0.09921428571428571 -3673.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 15.0 -1964487606 15601 NULL NULL -1964487621 1964487606 -15.0 -3928975227 1.0 -15601.0 NULL -1.964503207E9 -0.0926 -9686.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 15.0 -1675398355 15601 NULL NULL -1675398370 1675398355 -15.0 -3350796725 1.0 -15601.0 NULL -1.675413956E9 -0.0926 -6965.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 15.0 -1540302337 15601 NULL NULL -1540302352 1540302337 -15.0 -3080604689 1.0 -15601.0 NULL -1.540317938E9 -0.0926 -6.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 15.0 -1186641445 15601 NULL NULL -1186641460 1186641445 -15.0 -2373282905 1.0 -15601.0 NULL -1.186657046E9 -0.0926 -13784.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 15.0 -1106735397 15601 NULL NULL -1106735412 1106735397 -15.0 -2213470809 1.0 -15601.0 NULL -1.106750998E9 -0.0926 -457.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 16.0 -1011232927 15601 NULL NULL -1011232943 1011232927 -16.0 -2022465870 1.0 -15601.0 NULL -1.011248528E9 -0.0868125 -7309.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 17.0 -1932369186 15601 NULL NULL -1932369203 1932369186 -17.0 -3864738389 1.0 -15601.0 NULL -1.932384787E9 -0.08170588235294118 -13725.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 17.0 -1749442997 15601 NULL NULL -1749443014 1749442997 -17.0 -3498886011 1.0 -15601.0 NULL -1.749458598E9 -0.08170588235294118 -9261.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 17.0 -784264135 15601 NULL NULL -784264152 784264135 -17.0 -1568528287 1.0 -15601.0 NULL -7.84279736E8 -0.08170588235294118 -1865.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 17.0 -748287945 15601 NULL NULL -748287962 748287945 -17.0 -1496575907 1.0 -15601.0 NULL -7.48303546E8 -0.08170588235294118 -1581.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 17.0 -629005739 15601 NULL NULL -629005756 629005739 -17.0 -1258011495 1.0 -15601.0 NULL -6.2902134E8 -0.08170588235294118 -4621.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 17.0 -402367872 15601 NULL NULL -402367889 402367872 -17.0 -804735761 1.0 -15601.0 NULL -4.02383473E8 -0.08170588235294118 -2481.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 17.0 -191560572 15601 NULL NULL -191560589 191560572 -17.0 -383121161 1.0 -15601.0 NULL -1.91576173E8 -0.08170588235294118 -11494.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 18.0 -2044770406 15601 NULL NULL -2044770424 2044770406 -18.0 -4089540830 1.0 -15601.0 NULL -2.044786007E9 -0.07716666666666666 -9740.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 18.0 -1692252476 15601 NULL NULL -1692252494 1692252476 -18.0 -3384504970 1.0 -15601.0 NULL -1.692268077E9 -0.07716666666666666 -12006.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 18.0 -996134600 15601 NULL NULL -996134618 996134600 -18.0 -1992269218 1.0 -15601.0 NULL -9.96150201E8 -0.07716666666666666 -10750.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 18.0 -973905398 15601 NULL NULL -973905416 973905398 -18.0 -1947810814 1.0 -15601.0 NULL -9.73920999E8 -0.07716666666666666 -12973.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 18.0 -860591619 15601 NULL NULL -860591637 860591619 -18.0 -1721183256 1.0 -15601.0 NULL -8.6060722E8 -0.07716666666666666 -9257.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 18.0 -309614238 15601 NULL NULL -309614256 309614238 -18.0 -619228494 1.0 -15601.0 NULL -3.09629839E8 -0.07716666666666666 -12393.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 18.0 -62733813 15601 NULL NULL -62733831 62733813 -18.0 -125467644 1.0 -15601.0 NULL -6.2749414E7 -0.07716666666666666 -2192.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 19.0 -1644279296 15601 NULL NULL -1644279315 1644279296 -19.0 -3288558611 1.0 -15601.0 NULL -1.644294897E9 -0.07310526315789474 -11901.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 19.0 -1332687894 15601 NULL NULL -1332687913 1332687894 -19.0 -2665375807 1.0 -15601.0 NULL -1.332703495E9 -0.07310526315789474 -3671.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 19.0 -631397801 15601 NULL NULL -631397820 631397801 -19.0 -1262795621 1.0 -15601.0 NULL -6.31413402E8 -0.07310526315789474 -9730.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 19.0 -408304573 15601 NULL NULL -408304592 408304573 -19.0 -816609165 1.0 -15601.0 NULL -4.08320174E8 -0.07310526315789474 -10802.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 20.0 -2050820665 15601 NULL NULL -2050820685 2050820665 -20.0 -4101641350 1.0 -15601.0 NULL -2.050836266E9 -0.06945 -6811.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 20.0 -1972968987 15601 NULL NULL -1972969007 1972968987 -20.0 -3945937994 1.0 -15601.0 NULL -1.972984588E9 -0.06945 -4123.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 20.0 -1644694994 15601 NULL NULL -1644695014 1644694994 -20.0 -3289390008 1.0 -15601.0 NULL -1.644710595E9 -0.06945 -6372.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 20.0 -1195710741 15601 NULL NULL -1195710761 1195710741 -20.0 -2391421502 1.0 -15601.0 NULL -1.195726342E9 -0.06945 -3298.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 20.0 -368721894 15601 NULL NULL -368721914 368721894 -20.0 -737443808 1.0 -15601.0 NULL -3.68737495E8 -0.06945 -7860.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 20.0 -362433250 15601 NULL NULL -362433270 362433250 -20.0 -724866520 1.0 -15601.0 NULL -3.62448851E8 -0.06945 -6419.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 20.0 -89010 15601 NULL NULL -89030 89010 -20.0 -178040 1.0 -15601.0 NULL -104611.0 -0.06945 -11005.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 21.0 -893636289 15601 NULL NULL -893636310 893636289 -21.0 -1787272599 1.0 -15601.0 NULL -8.9365189E8 -0.06614285714285714 -11009.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 22.0 -1875861804 15601 NULL NULL -1875861826 1875861804 -22.0 -3751723630 1.0 -15601.0 NULL -1.875877405E9 -0.06313636363636364 -13165.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 22.0 -1433781206 15601 NULL NULL -1433781228 1433781206 -22.0 -2867562434 1.0 -15601.0 NULL -1.433796807E9 -0.06313636363636364 -2503.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 22.0 -490232669 15601 NULL NULL -490232691 490232669 -22.0 -980465360 1.0 -15601.0 NULL -4.9024827E8 -0.06313636363636364 -2446.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 23.0 -1167276678 15601 NULL NULL -1167276701 1167276678 -23.0 -2334553379 1.0 -15601.0 NULL -1.167292279E9 -0.06039130434782609 -9858.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 23.0 -996165688 15601 NULL NULL -996165711 996165688 -23.0 -1992331399 1.0 -15601.0 NULL -9.96181289E8 -0.06039130434782609 -10636.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 24.0 -1740312484 15601 NULL NULL -1740312508 1740312484 -24.0 -3480624992 1.0 -15601.0 NULL -1.740328085E9 -0.057875 -5333.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 24.0 -1278926860 15601 NULL NULL -1278926884 1278926860 -24.0 -2557853744 1.0 -15601.0 NULL -1.278942461E9 -0.057875 -3683.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 24.0 -404751232 15601 NULL NULL -404751256 404751232 -24.0 -809502488 1.0 -15601.0 NULL -4.04766833E8 -0.057875 -14489.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 25.0 -2030132877 15601 NULL NULL -2030132902 2030132877 -25.0 -4060265779 1.0 -15601.0 NULL -2.030148478E9 -0.05556 -5949.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 25.0 -1178735095 15601 NULL NULL -1178735120 1178735095 -25.0 -2357470215 1.0 -15601.0 NULL -1.178750696E9 -0.05556 -1540.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 25.0 -765146525 15601 NULL NULL -765146550 765146525 -25.0 -1530293075 1.0 -15601.0 NULL -7.65162126E8 -0.05556 -11081.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 26.0 -2141336536 15601 NULL NULL -2141336562 2141336536 -26.0 -4282673098 1.0 -15601.0 NULL -2.141352137E9 -0.05342307692307692 -5680.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 26.0 -692950740 15601 NULL NULL -692950766 692950740 -26.0 -1385901506 1.0 -15601.0 NULL -6.92966341E8 -0.05342307692307692 -1123.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 26.0 -51344670 15601 NULL NULL -51344696 51344670 -26.0 -102689366 1.0 -15601.0 NULL -5.1360271E7 -0.05342307692307692 -1779.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 27.0 -2043827141 15601 NULL NULL -2043827168 2043827141 -27.0 -4087654309 1.0 -15601.0 NULL -2.043842742E9 -0.051444444444444445 -2535.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 27.0 -1535090489 15601 NULL NULL -1535090516 1535090489 -27.0 -3070181005 1.0 -15601.0 NULL -1.53510609E9 -0.051444444444444445 -14493.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 27.0 -67671601 15601 NULL NULL -67671628 67671601 -27.0 -135343229 1.0 -15601.0 NULL -6.7687202E7 -0.051444444444444445 -10064.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 28.0 -1852182045 15601 NULL NULL -1852182073 1852182045 -28.0 -3704364118 1.0 -15601.0 NULL -1.852197646E9 -0.04960714285714286 -123.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 28.0 -1767756774 15601 NULL NULL -1767756802 1767756774 -28.0 -3535513576 1.0 -15601.0 NULL -1.767772375E9 -0.04960714285714286 -7464.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 28.0 -1556827241 15601 NULL NULL -1556827269 1556827241 -28.0 -3113654510 1.0 -15601.0 NULL -1.556842842E9 -0.04960714285714286 -3451.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 29.0 -2052415815 15601 NULL NULL -2052415844 2052415815 -29.0 -4104831659 1.0 -15601.0 NULL -2.052431416E9 -0.04789655172413793 -10659.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 29.0 -508126361 15601 NULL NULL -508126390 508126361 -29.0 -1016252751 1.0 -15601.0 NULL -5.08141962E8 -0.04789655172413793 -1791.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 29.0 -221039350 15601 NULL NULL -221039379 221039350 -29.0 -442078729 1.0 -15601.0 NULL -2.21054951E8 -0.04789655172413793 -4382.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 30.0 -1986754040 15601 NULL NULL -1986754070 1986754040 -30.0 -3973508110 1.0 -15601.0 NULL -1.986769641E9 -0.0463 -13493.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 30.0 -1465963146 15601 NULL NULL -1465963176 1465963146 -30.0 -2931926322 1.0 -15601.0 NULL -1.465978747E9 -0.0463 -15181.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 30.0 -1399138608 15601 NULL NULL -1399138638 1399138608 -30.0 -2798277246 1.0 -15601.0 NULL -1.399154209E9 -0.0463 -9726.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 30.0 -941937506 15601 NULL NULL -941937536 941937506 -30.0 -1883875042 1.0 -15601.0 NULL -9.41953107E8 -0.0463 -11530.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 30.0 -919690155 15601 NULL NULL -919690185 919690155 -30.0 -1839380340 1.0 -15601.0 NULL -9.19705756E8 -0.0463 -11205.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 30.0 -579164639 15601 NULL NULL -579164669 579164639 -30.0 -1158329308 1.0 -15601.0 NULL -5.7918024E8 -0.0463 -8716.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 31.0 -1954992185 15601 NULL NULL -1954992216 1954992185 -31.0 -3909984401 1.0 -15601.0 NULL -1.955007786E9 -0.044806451612903225 -15274.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 31.0 -1407693136 15601 NULL NULL -1407693167 1407693136 -31.0 -2815386303 1.0 -15601.0 NULL -1.407708737E9 -0.044806451612903225 -14906.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 31.0 -810446066 15601 NULL NULL -810446097 810446066 -31.0 -1620892163 1.0 -15601.0 NULL -8.10461667E8 -0.044806451612903225 -5318.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 31.0 -202495882 15601 NULL NULL -202495913 202495882 -31.0 -404991795 1.0 -15601.0 NULL -2.02511483E8 -0.044806451612903225 -10503.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 32.0 -1495050520 15601 NULL NULL -1495050552 1495050520 -32.0 -2990101072 1.0 -15601.0 NULL -1.495066121E9 -0.04340625 -6690.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 32.0 -991138235 15601 NULL NULL -991138267 991138235 -32.0 -1982276502 1.0 -15601.0 NULL -9.91153836E8 -0.04340625 -6705.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 32.0 -747159857 15601 NULL NULL -747159889 747159857 -32.0 -1494319746 1.0 -15601.0 NULL -7.47175458E8 -0.04340625 -12366.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 32.0 -537124320 15601 NULL NULL -537124352 537124320 -32.0 -1074248672 1.0 -15601.0 NULL -5.37139921E8 -0.04340625 -13092.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 33.0 -2081329290 15601 NULL NULL -2081329323 2081329290 -33.0 -4162658613 1.0 -15601.0 NULL -2.081344891E9 -0.04209090909090909 -15481.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 33.0 -667436971 15601 NULL NULL -667437004 667436971 -33.0 -1334873975 1.0 -15601.0 NULL -6.67452572E8 -0.04209090909090909 -10590.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 34.0 -1954258334 15601 NULL NULL -1954258368 1954258334 -34.0 -3908516702 1.0 -15601.0 NULL -1.954273935E9 -0.04085294117647059 -14670.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 34.0 -1175444744 15601 NULL NULL -1175444778 1175444744 -34.0 -2350889522 1.0 -15601.0 NULL -1.175460345E9 -0.04085294117647059 -3000.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 34.0 -1028809597 15601 NULL NULL -1028809631 1028809597 -34.0 -2057619228 1.0 -15601.0 NULL -1.028825198E9 -0.04085294117647059 -1652.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 34.0 -748476723 15601 NULL NULL -748476757 748476723 -34.0 -1496953480 1.0 -15601.0 NULL -7.48492324E8 -0.04085294117647059 -3147.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 34.0 -461126191 15601 NULL NULL -461126225 461126191 -34.0 -922252416 1.0 -15601.0 NULL -4.61141792E8 -0.04085294117647059 -7434.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 34.0 -303944829 15601 NULL NULL -303944863 303944829 -34.0 -607889692 1.0 -15601.0 NULL -3.0396043E8 -0.04085294117647059 -6147.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 35.0 -1198622822 15601 NULL NULL -1198622857 1198622822 -35.0 -2397245679 1.0 -15601.0 NULL -1.198638423E9 -0.03968571428571429 -13593.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 35.0 -987166521 15601 NULL NULL -987166556 987166521 -35.0 -1974333077 1.0 -15601.0 NULL -9.87182122E8 -0.03968571428571429 -13246.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 35.0 -777113949 15601 NULL NULL -777113984 777113949 -35.0 -1554227933 1.0 -15601.0 NULL -7.7712955E8 -0.03968571428571429 -12538.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 35.0 -605058422 15601 NULL NULL -605058457 605058422 -35.0 -1210116879 1.0 -15601.0 NULL -6.05074023E8 -0.03968571428571429 -4839.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 35.0 -419284856 15601 NULL NULL -419284891 419284856 -35.0 -838569747 1.0 -15601.0 NULL -4.19300457E8 -0.03968571428571429 -7981.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 35.0 -370099117 15601 NULL NULL -370099152 370099117 -35.0 -740198269 1.0 -15601.0 NULL -3.70114718E8 -0.03968571428571429 -12195.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 36.0 -1493188887 15601 NULL NULL -1493188923 1493188887 -36.0 -2986377810 1.0 -15601.0 NULL -1.493204488E9 -0.03858333333333333 -1576.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 36.0 -1300587151 15601 NULL NULL -1300587187 1300587151 -36.0 -2601174338 1.0 -15601.0 NULL -1.300602752E9 -0.03858333333333333 -9786.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 38.0 -440412114 15601 NULL NULL -440412152 440412114 -38.0 -880824266 1.0 -15601.0 NULL -4.40427715E8 -0.03655263157894737 -11485.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 39.0 -1351910626 15601 NULL NULL -1351910665 1351910626 -39.0 -2703821291 1.0 -15601.0 NULL -1.351926227E9 -0.03561538461538462 -5971.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 39.0 -1046301933 15601 NULL NULL -1046301972 1046301933 -39.0 -2092603905 1.0 -15601.0 NULL -1.046317534E9 -0.03561538461538462 -5267.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 39.0 -484639113 15601 NULL NULL -484639152 484639113 -39.0 -969278265 1.0 -15601.0 NULL -4.84654714E8 -0.03561538461538462 -9649.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 39.0 -189542740 15601 NULL NULL -189542779 189542740 -39.0 -379085519 1.0 -15601.0 NULL -1.89558341E8 -0.03561538461538462 -6191.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 39.0 -144116978 15601 NULL NULL -144117017 144116978 -39.0 -288233995 1.0 -15601.0 NULL -1.44132579E8 -0.03561538461538462 -10541.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 40.0 -1530632114 15601 NULL NULL -1530632154 1530632114 -40.0 -3061264268 1.0 -15601.0 NULL -1.530647715E9 -0.034725 -2403.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 40.0 -912039001 15601 NULL NULL -912039041 912039001 -40.0 -1824078042 1.0 -15601.0 NULL -9.12054602E8 -0.034725 -4541.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 40.0 -515857483 15601 NULL NULL -515857523 515857483 -40.0 -1031715006 1.0 -15601.0 NULL -5.15873084E8 -0.034725 -10418.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 40.0 -487954385 15601 NULL NULL -487954425 487954385 -40.0 -975908810 1.0 -15601.0 NULL -4.87969986E8 -0.034725 -1908.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 41.0 -1730738390 15601 NULL NULL -1730738431 1730738390 -41.0 -3461476821 1.0 -15601.0 NULL -1.730753991E9 -0.03387804878048781 -10253.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 41.0 -338704173 15601 NULL NULL -338704214 338704173 -41.0 -677408387 1.0 -15601.0 NULL -3.38719774E8 -0.03387804878048781 -6463.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 41.0 -185407727 15601 NULL NULL -185407768 185407727 -41.0 -370815495 1.0 -15601.0 NULL -1.85423328E8 -0.03387804878048781 -5443.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 42.0 -1253747722 15601 NULL NULL -1253747764 1253747722 -42.0 -2507495486 1.0 -15601.0 NULL -1.253763323E9 -0.03307142857142857 -4559.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 42.0 -1127028116 15601 NULL NULL -1127028158 1127028116 -42.0 -2254056274 1.0 -15601.0 NULL -1.127043717E9 -0.03307142857142857 -11876.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 42.0 -658899077 15601 NULL NULL -658899119 658899077 -42.0 -1317798196 1.0 -15601.0 NULL -6.58914678E8 -0.03307142857142857 -6443.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 42.0 -122247742 15601 NULL NULL -122247784 122247742 -42.0 -244495526 1.0 -15601.0 NULL -1.22263343E8 -0.03307142857142857 -13907.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 42.0 -30310351 15601 NULL NULL -30310393 30310351 -42.0 -60620744 1.0 -15601.0 NULL -3.0325952E7 -0.03307142857142857 -13209.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 42.0 -27952228 15601 NULL NULL -27952270 27952228 -42.0 -55904498 1.0 -15601.0 NULL -2.7967829E7 -0.03307142857142857 -10837.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 44.0 -2098300466 15601 NULL NULL -2098300510 2098300466 -44.0 -4196600976 1.0 -15601.0 NULL -2.098316067E9 -0.03156818181818182 -12769.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 44.0 -1144200805 15601 NULL NULL -1144200849 1144200805 -44.0 -2288401654 1.0 -15601.0 NULL -1.144216406E9 -0.03156818181818182 -7864.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 44.0 -1109093265 15601 NULL NULL -1109093309 1109093265 -44.0 -2218186574 1.0 -15601.0 NULL -1.109108866E9 -0.03156818181818182 -2574.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 44.0 -780348314 15601 NULL NULL -780348358 780348314 -44.0 -1560696672 1.0 -15601.0 NULL -7.80363915E8 -0.03156818181818182 -1895.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 45.0 -689749024 15601 NULL NULL -689749069 689749024 -45.0 -1379498093 1.0 -15601.0 NULL -6.89764625E8 -0.030866666666666667 -13213.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 45.0 -223953421 15601 NULL NULL -223953466 223953421 -45.0 -447906887 1.0 -15601.0 NULL -2.23969022E8 -0.030866666666666667 -1066.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 45.0 -195941743 15601 NULL NULL -195941788 195941743 -45.0 -391883531 1.0 -15601.0 NULL -1.95957344E8 -0.030866666666666667 -8784.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 46.0 -1996378319 15601 NULL NULL -1996378365 1996378319 -46.0 -3992756684 1.0 -15601.0 NULL -1.99639392E9 -0.030195652173913044 -11955.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 46.0 -1721221449 15601 NULL NULL -1721221495 1721221449 -46.0 -3442442944 1.0 -15601.0 NULL -1.72123705E9 -0.030195652173913044 -9922.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 46.0 -1116090298 15601 NULL NULL -1116090344 1116090298 -46.0 -2232180642 1.0 -15601.0 NULL -1.116105899E9 -0.030195652173913044 -10359.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 46.0 -1063470233 15601 NULL NULL -1063470279 1063470233 -46.0 -2126940512 1.0 -15601.0 NULL -1.063485834E9 -0.030195652173913044 -12467.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 46.0 -645509327 15601 NULL NULL -645509373 645509327 -46.0 -1291018700 1.0 -15601.0 NULL -6.45524928E8 -0.030195652173913044 -2351.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 46.0 -591161051 15601 NULL NULL -591161097 591161051 -46.0 -1182322148 1.0 -15601.0 NULL -5.91176652E8 -0.030195652173913044 -7959.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 47.0 -1230441185 15601 NULL NULL -1230441232 1230441185 -47.0 -2460882417 1.0 -15601.0 NULL -1.230456786E9 -0.029553191489361703 -5916.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 47.0 -1220505630 15601 NULL NULL -1220505677 1220505630 -47.0 -2441011307 1.0 -15601.0 NULL -1.220521231E9 -0.029553191489361703 -8198.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 47.0 -1045079067 15601 NULL NULL -1045079114 1045079067 -47.0 -2090158181 1.0 -15601.0 NULL -1.045094668E9 -0.029553191489361703 -14880.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 47.0 -1019007115 15601 NULL NULL -1019007162 1019007115 -47.0 -2038014277 1.0 -15601.0 NULL -1.019022716E9 -0.029553191489361703 -12199.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 48.0 -795361000 15601 NULL NULL -795361048 795361000 -48.0 -1590722048 1.0 -15601.0 NULL -7.95376601E8 -0.0289375 -6419.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 48.0 -505179873 15601 NULL NULL -505179921 505179873 -48.0 -1010359794 1.0 -15601.0 NULL -5.05195474E8 -0.0289375 -3892.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -1506320791 15601 NULL NULL -1506320840 1506320791 -49.0 -3012641631 1.0 -15601.0 NULL -1.506336392E9 -0.028346938775510203 -13039.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -1259043484 15601 NULL NULL -1259043533 1259043484 -49.0 -2518087017 1.0 -15601.0 NULL -1.259059085E9 -0.028346938775510203 -11582.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -1107321329 15601 NULL NULL -1107321378 1107321329 -49.0 -2214642707 1.0 -15601.0 NULL -1.10733693E9 -0.028346938775510203 -9152.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 49.0 -839522912 15601 NULL NULL -839522961 839522912 -49.0 -1679045873 1.0 -15601.0 NULL -8.39538513E8 -0.028346938775510203 -1900.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -343392629 15601 NULL NULL -343392678 343392629 -49.0 -686785307 1.0 -15601.0 NULL -3.4340823E8 -0.028346938775510203 -14619.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -170140038 15601 NULL NULL -170140087 170140038 -49.0 -340280125 1.0 -15601.0 NULL -1.70155639E8 -0.028346938775510203 -11133.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -128270777 15601 NULL NULL -128270826 128270777 -49.0 -256541603 1.0 -15601.0 NULL -1.28286378E8 -0.028346938775510203 -14956.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 51.0 -2103985381 15601 NULL NULL -2103985432 2103985381 -51.0 -4207970813 1.0 -15601.0 NULL -2.104000982E9 -0.02723529411764706 -3319.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 51.0 -2040027963 15601 NULL NULL -2040028014 2040027963 -51.0 -4080055977 1.0 -15601.0 NULL -2.040043564E9 -0.02723529411764706 -10001.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 51.0 -232545302 15601 NULL NULL -232545353 232545302 -51.0 -465090655 1.0 -15601.0 NULL -2.32560903E8 -0.02723529411764706 -12397.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 52.0 -2125793790 15601 NULL NULL -2125793842 2125793790 -52.0 -4251587632 1.0 -15601.0 NULL -2.125809391E9 -0.02671153846153846 -1530.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 52.0 -1927777662 15601 NULL NULL -1927777714 1927777662 -52.0 -3855555376 1.0 -15601.0 NULL -1.927793263E9 -0.02671153846153846 -8895.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 52.0 -1846410950 15601 NULL NULL -1846411002 1846410950 -52.0 -3692821952 1.0 -15601.0 NULL -1.846426551E9 -0.02671153846153846 -1398.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 52.0 -1214834730 15601 NULL NULL -1214834782 1214834730 -52.0 -2429669512 1.0 -15601.0 NULL -1.214850331E9 -0.02671153846153846 -461.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 52.0 -746546766 15601 NULL NULL -746546818 746546766 -52.0 -1493093584 1.0 -15601.0 NULL -7.46562367E8 -0.02671153846153846 -7714.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 53.0 -1283930255 15601 NULL NULL -1283930308 1283930255 -53.0 -2567860563 1.0 -15601.0 NULL -1.283945856E9 -0.026207547169811322 -14758.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 53.0 -1231026402 15601 NULL NULL -1231026455 1231026402 -53.0 -2462052857 1.0 -15601.0 NULL -1.231042003E9 -0.026207547169811322 -13896.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 53.0 -782857402 15601 NULL NULL -782857455 782857402 -53.0 -1565714857 1.0 -15601.0 NULL -7.82873003E8 -0.026207547169811322 -14823.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 54.0 -1735553309 15601 NULL NULL -1735553363 1735553309 -54.0 -3471106672 1.0 -15601.0 NULL -1.73556891E9 -0.025722222222222223 -4463.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 54.0 -1711666077 15601 NULL NULL -1711666131 1711666077 -54.0 -3423332208 1.0 -15601.0 NULL -1.711681678E9 -0.025722222222222223 -2362.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 54.0 -1676223874 15601 NULL NULL -1676223928 1676223874 -54.0 -3352447802 1.0 -15601.0 NULL -1.676239475E9 -0.025722222222222223 -5631.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 54.0 -1479988050 15601 NULL NULL -1479988104 1479988050 -54.0 -2959976154 1.0 -15601.0 NULL -1.480003651E9 -0.025722222222222223 -14786.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 54.0 -83357142 15601 NULL NULL -83357196 83357142 -54.0 -166714338 1.0 -15601.0 NULL -8.3372743E7 -0.025722222222222223 -999.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 55.0 -1559932440 15601 NULL NULL -1559932495 1559932440 -55.0 -3119864935 1.0 -15601.0 NULL -1.559948041E9 -0.025254545454545453 -4051.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 55.0 -1224290649 15601 NULL NULL -1224290704 1224290649 -55.0 -2448581353 1.0 -15601.0 NULL -1.22430625E9 -0.025254545454545453 -2174.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 55.0 -1044215393 15601 NULL NULL -1044215448 1044215393 -55.0 -2088430841 1.0 -15601.0 NULL -1.044230994E9 -0.025254545454545453 -9261.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 55.0 -819636483 15601 NULL NULL -819636538 819636483 -55.0 -1639273021 1.0 -15601.0 NULL -8.19652084E8 -0.025254545454545453 -6746.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 55.0 -486340511 15601 NULL NULL -486340566 486340511 -55.0 -972681077 1.0 -15601.0 NULL -4.86356112E8 -0.025254545454545453 -10538.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 56.0 -1971224972 15601 NULL NULL -1971225028 1971224972 -56.0 -3942450000 1.0 -15601.0 NULL -1.971240573E9 -0.02480357142857143 -7420.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 56.0 -1378117091 15601 NULL NULL -1378117147 1378117091 -56.0 -2756234238 1.0 -15601.0 NULL -1.378132692E9 -0.02480357142857143 -2756.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 56.0 -1061994141 15601 NULL NULL -1061994197 1061994141 -56.0 -2123988338 1.0 -15601.0 NULL -1.062009742E9 -0.02480357142857143 -2869.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 56.0 -85144619 15601 NULL NULL -85144675 85144619 -56.0 -170289294 1.0 -15601.0 NULL -8.516022E7 -0.02480357142857143 -9962.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 57.0 -1465657206 15601 NULL NULL -1465657263 1465657206 -57.0 -2931314469 1.0 -15601.0 NULL -1.465672807E9 -0.02436842105263158 -5660.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 57.0 -1393938237 15601 NULL NULL -1393938294 1393938237 -57.0 -2787876531 1.0 -15601.0 NULL -1.393953838E9 -0.02436842105263158 -4488.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 57.0 -865531893 15601 NULL NULL -865531950 865531893 -57.0 -1731063843 1.0 -15601.0 NULL -8.65547494E8 -0.02436842105263158 -4014.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 58.0 -2101713482 15601 NULL NULL -2101713540 2101713482 -58.0 -4203427022 1.0 -15601.0 NULL -2.101729083E9 -0.023948275862068966 -9166.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 58.0 -1624506701 15601 NULL NULL -1624506759 1624506701 -58.0 -3249013460 1.0 -15601.0 NULL -1.624522302E9 -0.023948275862068966 -5773.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 58.0 -1384901601 15601 NULL NULL -1384901659 1384901601 -58.0 -2769803260 1.0 -15601.0 NULL -1.384917202E9 -0.023948275862068966 -831.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 58.0 1575089695 15601 NULL NULL 1575089637 -1575089695 -58.0 3150179332 1.0 -15601.0 NULL 1.575074094E9 -0.023948275862068966 12735.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 59.0 -1374485693 15601 NULL NULL -1374485752 1374485693 -59.0 -2748971445 1.0 -15601.0 NULL -1.374501294E9 -0.02354237288135593 -6391.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 60.0 -1141582332 15601 NULL NULL -1141582392 1141582332 -60.0 -2283164724 1.0 -15601.0 NULL -1.141597933E9 -0.02315 -10359.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 60.0 -977722732 15601 NULL NULL -977722792 977722732 -60.0 -1955445524 1.0 -15601.0 NULL -9.77738333E8 -0.02315 -8062.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 60.0 -657503893 15601 NULL NULL -657503953 657503893 -60.0 -1315007846 1.0 -15601.0 NULL -6.57519494E8 -0.02315 -15349.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 60.0 -640286718 15601 NULL NULL -640286778 640286718 -60.0 -1280573496 1.0 -15601.0 NULL -6.40302319E8 -0.02315 -6077.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 61.0 -1377611623 15601 NULL NULL -1377611684 1377611623 -61.0 -2755223307 1.0 -15601.0 NULL -1.377627224E9 -0.02277049180327869 -12121.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 61.0 -155636656 15601 NULL NULL -155636717 155636656 -61.0 -311273373 1.0 -15601.0 NULL -1.55652257E8 -0.02277049180327869 -1080.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 62.0 -1838132825 15601 NULL NULL -1838132887 1838132825 -62.0 -3676265712 1.0 -15601.0 NULL -1.838148426E9 -0.022403225806451613 -7404.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 62.0 -1488190636 15601 NULL NULL -1488190698 1488190636 -62.0 -2976381334 1.0 -15601.0 NULL -1.488206237E9 -0.022403225806451613 -11246.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 62.0 -1423925704 15601 NULL NULL -1423925766 1423925704 -62.0 -2847851470 1.0 -15601.0 NULL -1.423941305E9 -0.022403225806451613 -6833.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 62.0 -310826420 15601 NULL NULL -310826482 310826420 -62.0 -621652902 1.0 -15601.0 NULL -3.10842021E8 -0.022403225806451613 -7697.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 62.0 -120943153 15601 NULL NULL -120943215 120943153 -62.0 -241886368 1.0 -15601.0 NULL -1.20958754E8 -0.022403225806451613 -4201.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 79.553 -1823591768 15601 NULL NULL -1823591801 1823591768 -79.553 -3647183569 1.0 -15601.0 NULL -1.823607369E9 -0.04209090909090909 -6479.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 79.553 -1452617198 15601 NULL NULL -1452617231 1452617198 -79.553 -2905234429 1.0 -15601.0 NULL -1.452632799E9 -0.04209090909090909 -8088.0 -15601 NULL -526337887 t0346137k7Lk0O true 1969-12-31 15:59:51.609 15044.0 NULL 1864027286 15044 false 526352931 NULL -1864027286 NULL NULL 1.0 -15044.0 -981136225450075266 1.864012242E9 NULL 466.0 -15044 526367975 --367195514 t5805L0xlU0YM true 1969-12-31 15:59:43.799 -13339.0 NULL 1864027286 -13339 false -367208853 NULL -1864027286 NULL NULL 1.0 13339.0 684487321652762958 1.864040625E9 NULL 8748.0 13339 -367222192 --380733719 t7s5did true NULL -2120.0 NULL 1864027286 -2120 false -380735839 NULL -1864027286 NULL NULL 1.0 2120.0 709701992654102954 1.864029406E9 NULL 326.0 2120 -380737959 --104148943 tEO4vj3G true 1969-12-31 15:59:44.53 2248.0 NULL 1864027286 2248 false -104146695 NULL -1864027286 NULL NULL 1.0 -2248.0 194132281226719770 1.864025038E9 NULL 1422.0 -2248 -104144447 --487903609 tINcSR1MT3f2P4 true 1969-12-31 16:00:12.099 -9147.0 NULL 1864027286 -9147 false -487912756 NULL -1864027286 NULL NULL 1.0 9147.0 909482690371460216 1.864036433E9 NULL 5891.0 9147 -487921903 -336056067 tJ7bf true 1969-12-31 15:59:50.481 16124.0 NULL 1864027286 16124 false 336072191 NULL -1864027286 NULL NULL 1.0 -16124.0 -626447734089803626 1.864011162E9 NULL 12266.0 -16124 336088315 --459571311 taArL704d542R82qw8 true 1969-12-31 16:00:00.738 -13901.0 NULL 1864027286 -13901 false -459585212 NULL -1864027286 NULL NULL 1.0 13901.0 856679375410094632 1.864041187E9 NULL 493.0 13901 -459599113 -223484391 tca24E6L true 1969-12-31 16:00:02.505 -12721.0 NULL 1864027286 -12721 false 223471670 NULL -1864027286 NULL NULL 1.0 12721.0 -416557290527987620 1.864040007E9 NULL 6435.0 12721 223458949 -252479879 tdUWi true 1969-12-31 16:00:01.806 -877.0 NULL 1864027286 -877 false 252479002 NULL -1864027286 NULL NULL 1.0 877.0 -470627748870048572 1.864028163E9 NULL 620.0 877 252478125 -1030560824 tmS75um6Mvyb6N1oiKP7 true 1969-12-31 15:59:53.233 -11073.0 NULL 1864027286 -11073 false 1030549751 NULL -1864027286 NULL NULL 1.0 11073.0 -1920972855444505786 1.864038359E9 NULL 9539.0 11073 1030538678 -95424126 txKwQS70d20 true 1969-12-31 16:00:16.343 9766.0 NULL 1864027286 9766 false 95433892 NULL -1864027286 NULL NULL 1.0 -9766.0 -177891378697177112 1.86401752E9 NULL 632.0 -9766 95443658 -396908469 uGD31tQ70Py2E0T true 1969-12-31 15:59:50.224 16084.0 NULL 1864027286 16084 false 396924553 NULL -1864027286 NULL NULL 1.0 -16084.0 -739878197275353158 1.864011202E9 NULL 4274.0 -16084 396940637 --770958258 uXu1mj3tWs36cGpu4p3aHq true 1969-12-31 15:59:56.944 8059.0 NULL 1864027286 8059 false -770950199 NULL -1864027286 NULL NULL 1.0 -8059.0 1437072207083129914 1.864019227E9 NULL 4763.0 -8059 -770942140 --933664265 ue8IUf0GlY18RT325P2tu true 1969-12-31 16:00:02.456 13750.0 NULL 1864027286 13750 false -933650515 NULL -1864027286 NULL NULL 1.0 -13750.0 1740350035547952290 1.864013536E9 NULL 8536.0 -13750 -933636765 --518918140 ugq0uAy0qXj2D0fX true 1969-12-31 16:00:12.479 5245.0 NULL 1864027286 5245 false -518912895 NULL -1864027286 NULL NULL 1.0 -5245.0 967267795337252970 1.864022041E9 NULL 1491.0 -5245 -518907650 --360475292 uq2hp true 1969-12-31 16:00:10.933 -1007.0 NULL 1864027286 -1007 false -360476299 NULL -1864027286 NULL NULL 1.0 1007.0 671937657292294514 1.864028293E9 NULL 803.0 1007 -360477306 --372506148 utfrK57P2tp0 true 1969-12-31 16:00:05.326 -12525.0 NULL 1864027286 -12525 false -372518673 NULL -1864027286 NULL NULL 1.0 12525.0 694384971016511478 1.864039811E9 NULL 6686.0 12525 -372531198 -434741484 uxI8i true 1969-12-31 16:00:12.505 8120.0 NULL 1864027286 8120 false 434749604 NULL -1864027286 NULL NULL 1.0 -8120.0 -810385124433694744 1.864019166E9 NULL 86.0 -8120 434757724 --198739996 uxnt0fsrBtPD807 true 1969-12-31 16:00:11.528 -14709.0 NULL 1864027286 -14709 false -198754705 NULL -1864027286 NULL NULL 1.0 14709.0 370484193340880630 1.864041995E9 NULL 14552.0 14709 -198769414 --452599200 v4L3dR650oy4O8MPhjc true 1969-12-31 15:59:46.988 8757.0 NULL 1864027286 8757 false -452590443 NULL -1864027286 NULL NULL 1.0 -8757.0 843640935134827698 1.864018529E9 NULL 3509.0 -8757 -452581686 --601825532 v4gQqo0bxX256o7EEN42lSoU true 1969-12-31 15:59:58.417 11021.0 NULL 1864027286 11021 false -601814511 NULL -1864027286 NULL NULL 1.0 -11021.0 1121798669614747146 1.864016265E9 NULL 1472.0 -11021 -601803490 --758062600 vA0bEQqO50LlKcj7AAR56P63 true 1969-12-31 16:00:16.169 7111.0 NULL 1864027286 7111 false -758055489 NULL -1864027286 NULL NULL 1.0 -7111.0 1413036115798072854 1.864020175E9 NULL 6634.0 -7111 -758048378 -573439687 vALXyM54AgSH4e0O4IN true 1969-12-31 16:00:10.069 -150.0 NULL 1864027286 -150 false 573439537 NULL -1864027286 NULL NULL 1.0 150.0 -1068906943839206582 1.864027436E9 NULL 86.0 150 573439387 -86487282 vH8AHgcWaDm true 1969-12-31 16:00:10.869 13309.0 NULL 1864027286 13309 false 86500591 NULL -1864027286 NULL NULL 1.0 -13309.0 -161239461879126026 1.864013977E9 NULL 8673.0 -13309 86513900 --520765672 vQalqQ true 1969-12-31 15:59:44.48 -3969.0 NULL 1864027286 -3969 false -520769641 NULL -1864027286 NULL NULL 1.0 3969.0 970728820544424326 1.864031255E9 NULL 2312.0 3969 -520773610 -245429195 vXc7m82uAg2g24 true 1969-12-31 15:59:57.185 -16001.0 NULL 1864027286 -16001 false 245413194 NULL -1864027286 NULL NULL 1.0 16001.0 -457456889960411484 1.864043287E9 NULL 6792.0 16001 245397193 --87388872 veoqj217BlDBBVkN0ei3c true 1969-12-31 16:00:03.492 10039.0 NULL 1864027286 10039 false -87378833 NULL -1864027286 NULL NULL 1.0 -10039.0 162876528930837238 1.864017247E9 NULL 5844.0 -10039 -87368794 --64947310 vvictFVSOgi true 1969-12-31 15:59:48.172 6612.0 NULL 1864027286 6612 false -64940698 NULL -1864027286 NULL NULL 1.0 -6612.0 121051233043885628 1.864020674E9 NULL 5306.0 -6612 -64934086 -773348268 vwb48kytjp0Q2YEb true 1969-12-31 15:59:44.909 12581.0 NULL 1864027286 12581 false 773360849 NULL -1864027286 NULL NULL 1.0 -12581.0 -1441565724460125814 1.864014705E9 NULL 1164.0 -12581 773373430 --532611088 wLWrtVNx188P7uXPV true 1969-12-31 16:00:04.012 -1428.0 NULL 1864027286 -1428 false -532612516 NULL -1864027286 NULL NULL 1.0 1428.0 992804262689111576 1.864028714E9 NULL 338.0 1428 -532613944 -936765787 wP0re2S74Y308jgOTc6 true 1969-12-31 15:59:50.924 -10311.0 NULL 1864027286 -10311 false 936755476 NULL -1864027286 NULL NULL 1.0 10311.0 -1746137767573918136 1.864037597E9 NULL 4706.0 10311 936745165 -236934374 wiBqE2A1x8T8gcT4 true 1969-12-31 16:00:11.324 -15101.0 NULL 1864027286 -15101 false 236919273 NULL -1864027286 NULL NULL 1.0 15101.0 -441623989451283078 1.864042387E9 NULL 5149.0 15101 236904172 -573476034 x1832l1R2m3V true 1969-12-31 15:59:49.722 -5070.0 NULL 1864027286 -5070 false 573470964 NULL -1864027286 NULL NULL 1.0 5070.0 -1068965524624723704 1.864032356E9 NULL 1226.0 5070 573465894 -605953955 x5vy367f6d81FfL8AI8XJ true 1969-12-31 16:00:01.206 11683.0 NULL 1864027286 11683 false 605965638 NULL -1864027286 NULL NULL 1.0 -11683.0 -1129536483610398468 1.864015603E9 NULL 4636.0 -11683 605977321 -2101183 x7By66525 true 1969-12-31 16:00:05.831 -8915.0 NULL 1864027286 -8915 false 2092268 NULL -1864027286 NULL NULL 1.0 8915.0 -3900044641624648 1.864036201E9 NULL 7766.0 8915 2083353 -741306115 y1uSBY0 true 1969-12-31 15:59:56.456 -16032.0 NULL 1864027286 -16032 false 741290083 NULL -1864027286 NULL NULL 1.0 16032.0 -1381784941553204738 1.864043318E9 NULL 2678.0 16032 741274051 -136715714 y2Q3YW true 1969-12-31 15:59:50.737 11813.0 NULL 1864027286 11813 false 136727527 NULL -1864027286 NULL NULL 1.0 -11813.0 -254863841075301722 1.864015473E9 NULL 6764.0 -11813 136739340 --315135285 y4jD1v2Go true 1969-12-31 15:59:43.97 -4683.0 NULL 1864027286 -4683 false -315139968 NULL -1864027286 NULL NULL 1.0 4683.0 587429499261166848 1.864031969E9 NULL 1283.0 4683 -315144651 -855072260 y7S47c5V true 1969-12-31 16:00:08.381 -11734.0 NULL 1864027286 -11734 false 855060526 NULL -1864027286 NULL NULL 1.0 11734.0 -1593856151645512436 1.86403902E9 NULL 10982.0 11734 855048792 --128417177 ygkC2e2sUm2036Sd1U8kCG62 true 1969-12-31 16:00:01.936 -8871.0 NULL 1864027286 -8871 false -128426048 NULL -1864027286 NULL NULL 1.0 8871.0 239389657705145728 1.864036157E9 NULL 8411.0 8871 -128434919 -732924624 yxN0212hM17E8J8bJj8D7b true 1969-12-31 15:59:46.461 -6751.0 NULL 1864027286 -6751 false 732917873 NULL -1864027286 NULL NULL 1.0 6751.0 -1366178913669082678 1.864034037E9 NULL 1925.0 6751 732911122 --778541551 t66fkUkSNP78t2856Lcn true 1969-12-31 16:00:03.35 15678.0 NULL 1864027286 15678 true -778525873 NULL -1864027286 NULL NULL 1.0 -15678.0 1451193470128970678 1.864011608E9 NULL 7154.0 -15678 -778510195 -319983133 t78m7 true 1969-12-31 16:00:09.36 14512.0 NULL 1864027286 14512 true 319997645 NULL -1864027286 NULL NULL 1.0 -14512.0 -596484341735741470 1.864012774E9 NULL 4422.0 -14512 320012157 -58198060 t7Sx50XeM true 1969-12-31 16:00:07.889 7557.0 NULL 1864027286 7557 true 58205617 NULL -1864027286 NULL NULL 1.0 -7557.0 -108496858286465462 1.864019729E9 NULL 2552.0 -7557 58213174 -308450217 t7i26BC11U1YTY8I0p true 1969-12-31 15:59:46.402 1017.0 NULL 1864027286 1017 true 308451234 NULL -1864027286 NULL NULL 1.0 -1017.0 -574961516576370924 1.864026269E9 NULL 530.0 -1017 308452251 --894394703 tFtQ26aDMi1tJ026luPcu true 1969-12-31 15:59:56.928 -3178.0 NULL 1864027286 -3178 true -894397881 NULL -1864027286 NULL NULL 1.0 3178.0 1667182054724580966 1.864030464E9 NULL 3166.0 3178 -894401059 --362733967 tUi8QYP4S53YPcw true 1969-12-31 16:00:00.003 -7959.0 NULL 1864027286 -7959 true -362741926 NULL -1864027286 NULL NULL 1.0 7959.0 676160847840192836 1.864035245E9 NULL 5609.0 7959 -362749885 -426284338 u6ELlhG3 true 1969-12-31 16:00:00.64 -15070.0 NULL 1864027286 -15070 true 426269268 NULL -1864027286 NULL NULL 1.0 15070.0 -794577546735246648 1.864042356E9 NULL 3916.0 15070 426254198 --804390280 uNJPm true 1969-12-31 16:00:12.321 -10737.0 NULL 1864027286 -10737 true -804401017 NULL -1864027286 NULL NULL 1.0 10737.0 1499425444574149862 1.864038023E9 NULL 8927.0 10737 -804411754 --412772386 uO4aN4J0dKv3717r8fPG true 1969-12-31 16:00:07.824 -11809.0 NULL 1864027286 -11809 true -412784195 NULL -1864027286 NULL NULL 1.0 11809.0 769441002709544770 1.864039095E9 NULL 254.0 11809 -412796004 --719899789 umNykRkKiih6Cx6K42 true 1969-12-31 15:59:55.878 -10134.0 NULL 1864027286 -10134 true -719909923 NULL -1864027286 NULL NULL 1.0 10134.0 1341931739934158978 1.86403742E9 NULL 9728.0 10134 -719920057 --110450673 uv5m1sFX10 true 1969-12-31 16:00:16.376 -8148.0 NULL 1864027286 -8148 true -110458821 NULL -1864027286 NULL NULL 1.0 8148.0 205898256323389806 1.864035434E9 NULL 1178.0 8148 -110466969 --804959350 v2wRf43gpDUt1lfieq true 1969-12-31 16:00:08.659 -8072.0 NULL 1864027286 -8072 true -804967422 NULL -1864027286 NULL NULL 1.0 8072.0 1500481238949076692 1.864035358E9 NULL 686.0 8072 -804975494 -460817498 v3A1iI77YBRwl3I16 true 1969-12-31 16:00:08.026 7391.0 NULL 1864027286 7391 true 460824889 NULL -1864027286 NULL NULL 1.0 -7391.0 -858990167163921254 1.864019895E9 NULL 2304.0 -7391 460832280 -108023602 veIw1kh7 true 1969-12-31 16:00:14.188 9239.0 NULL 1864027286 9239 true 108032841 NULL -1864027286 NULL NULL 1.0 -9239.0 -201376163408099526 1.864018047E9 NULL 3602.0 -9239 108042080 --947255611 vgKx505VdPsHO true 1969-12-31 15:59:46.062 13661.0 NULL 1864027286 13661 true -947241950 NULL -1864027286 NULL NULL 1.0 -13661.0 1765684841243847700 1.864013625E9 NULL 11158.0 -13661 -947228289 -194353234 vtad71tYi1fs1e0tcJg0 true 1969-12-31 15:59:55.372 2960.0 NULL 1864027286 2960 true 194356194 NULL -1864027286 NULL NULL 1.0 -2960.0 -362285248819109484 1.864024326E9 NULL 2806.0 -2960 194359154 -97246854 vvK378scVFuBh8Q3HXUJsP true 1969-12-31 16:00:01.629 -9554.0 NULL 1864027286 -9554 true 97237300 NULL -1864027286 NULL NULL 1.0 9554.0 -181252980416967800 1.86403684E9 NULL 3670.0 9554 97227746 -304132102 vxAjxUq0k true 1969-12-31 16:00:03.466 -12962.0 NULL 1864027286 -12962 true 304119140 NULL -1864027286 NULL NULL 1.0 12962.0 -566886375154854040 1.864040248E9 NULL 952.0 12962 304106178 --129248849 w3OO7InLN4ic3M0h8xpvuBMn true 1969-12-31 15:59:48.413 3255.0 NULL 1864027286 3255 true -129245594 NULL -1864027286 NULL NULL 1.0 -3255.0 240917313811277884 1.864024031E9 NULL 2711.0 -3255 -129242339 -466063930 w6OUE6V3UjfE2 true 1969-12-31 15:59:56.958 14276.0 NULL 1864027286 14276 true 466078206 NULL -1864027286 NULL NULL 1.0 -14276.0 -868782493393928916 1.86401301E9 NULL 9966.0 -14276 466092482 -746145173 wEe2THv60F6 true 1969-12-31 16:00:03.372 -5589.0 NULL 1864027286 -5589 true 746139584 NULL -1864027286 NULL NULL 1.0 5589.0 -1390824543740689024 1.864032875E9 NULL 773.0 5589 746133995 --203191502 wK0N1nX22KSjcTVhDYq true 1969-12-31 15:59:49.907 -6663.0 NULL 1864027286 -6663 true -203198165 NULL -1864027286 NULL NULL 1.0 6663.0 378766924025130190 1.864033949E9 NULL 6395.0 6663 -203204828 -54908166 wLIR3B37 true 1969-12-31 16:00:05.971 8499.0 NULL 1864027286 8499 true 54916665 NULL -1864027286 NULL NULL 1.0 -8499.0 -102366162016121190 1.864018787E9 NULL 1109.0 -8499 54925164 -872474570 wT50ouOe760m3AyJ7x4p83U6 true 1969-12-31 15:59:46.57 -2856.0 NULL 1864027286 -2856 true 872471714 NULL -1864027286 NULL NULL 1.0 2856.0 -1626311081159188204 1.864030142E9 NULL 1766.0 2856 872468858 -247204221 wblxBWSlwWlX7E true 1969-12-31 15:59:54.186 4502.0 NULL 1864027286 4502 true 247208723 NULL -1864027286 NULL NULL 1.0 -4502.0 -460803805009215778 1.864022784E9 NULL 1198.0 -4502 247213225 --520054643 wc4Ae163B5VxG2L true 1969-12-31 16:00:06.693 301.0 NULL 1864027286 301 true -520054342 NULL -1864027286 NULL NULL 1.0 -301.0 969395483690775812 1.864026985E9 NULL 205.0 -301 -520054041 --553779656 weQ0d24K116Y0 true 1969-12-31 16:00:12.009 11147.0 NULL 1864027286 11147 true -553768509 NULL -1864027286 NULL NULL 1.0 -11147.0 1032239610903536574 1.864016139E9 NULL 3652.0 -11147 -553757362 -200690208 wfT8d53abPxBj0L true 1969-12-31 16:00:15.522 -12052.0 NULL 1864027286 -12052 true 200678156 NULL -1864027286 NULL NULL 1.0 12052.0 -374069558488164616 1.864039338E9 NULL 4706.0 12052 200666104 -421764768 whw6kHIbH true 1969-12-31 16:00:06.463 5142.0 NULL 1864027286 5142 true 421769910 NULL -1864027286 NULL NULL 1.0 -5142.0 -786190620653764260 1.864022144E9 NULL 866.0 -5142 421775052 --370283300 x0w77gi6iqtTQ1 true 1969-12-31 15:59:44.652 1850.0 NULL 1864027286 1850 true -370281450 NULL -1864027286 NULL NULL 1.0 -1850.0 690214726299644700 1.864025436E9 NULL 586.0 -1850 -370279600 --25028803 x8n40D35c65l true 1969-12-31 15:59:43.775 -4002.0 NULL 1864027286 -4002 true -25032805 NULL -1864027286 NULL NULL 1.0 4002.0 46661831565117230 1.864031288E9 NULL 3740.0 4002 -25036807 --140351494 xh0Qhj80MAcHEMVKx true 1969-12-31 16:00:14.98 -11115.0 NULL 1864027286 -11115 true -140362609 NULL -1864027286 NULL NULL 1.0 11115.0 261639733110149174 1.864038401E9 NULL 8441.0 11115 -140373724 -773036466 xnk564ke0a7kay3aE6IC true 1969-12-31 16:00:12.369 -12066.0 NULL 1864027286 -12066 true 773024400 NULL -1864027286 NULL NULL 1.0 12066.0 -1440938574343778400 1.864039352E9 NULL 11276.0 12066 773012334 -336043289 xow6f03825H0h8mFjVr true 1969-12-31 15:59:51.587 -97.0 NULL 1864027286 -97 true 336043192 NULL -1864027286 NULL NULL 1.0 97.0 -626393679162536912 1.864027383E9 NULL 14.0 97 336043095 --581868488 xqa4i5EAo4CbOQjD true 1969-12-31 16:00:14.891 15218.0 NULL 1864027286 15218 true -581853270 NULL -1864027286 NULL NULL 1.0 -15218.0 1084590371728325220 1.864012068E9 NULL 4902.0 -15218 -581838052 --694015335 y3XV0j2p80 true 1969-12-31 15:59:52.848 9540.0 NULL 1864027286 9540 true -694005795 NULL -1864027286 NULL NULL 1.0 -9540.0 1293645738522122370 1.864017746E9 NULL 6686.0 -9540 -693996255 -35949208 yF6U2FcHNa8 true 1969-12-31 15:59:54.285 6775.0 NULL 1864027286 6775 true 35955983 NULL -1864027286 NULL NULL 1.0 -6775.0 -67022933406952138 1.864020511E9 NULL 1211.0 -6775 35962758 --871616990 yfR36R70W0G1KV4dmi1 true 1969-12-31 15:59:52.407 -15590.0 NULL 1864027286 -15590 true -871632580 NULL -1864027286 NULL NULL 1.0 15590.0 1624746912486577880 1.864042876E9 NULL 8936.0 15590 -871648170 -1036977737 yvNv1q true 1969-12-31 15:59:46.839 7408.0 NULL 1864027286 7408 true 1036985145 NULL -1864027286 NULL NULL 1.0 -7408.0 -1932968605456666470 1.864019878E9 NULL 4102.0 -7408 1036992553 WARNING: Comparing a bigint and a double may result in a loss of precision. PREHOOK: query: -- TargetTypeClasses: Long, String, Double, Timestamp -- Functions: Avg, Min, StDevP, Sum, Var @@ -3207,6 +1581,7 @@ WHERE (((-1.389 >= cint) OR ((cstring1 LIKE 'ss%') AND (10.175 > cbigint))) ORDER BY csmallint, cstring2, cdouble +LIMIT 45 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: Long, String, Double, Timestamp -- Functions: Avg, Min, StDevP, Sum, Var @@ -3238,6 +1613,7 @@ WHERE (((-1.389 >= cint) OR ((cstring1 LIKE 'ss%') AND (10.175 > cbigint))) ORDER BY csmallint, cstring2, cdouble +LIMIT 45 POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage @@ -3274,18 +1650,21 @@ STAGE PLANS: expressions: VALUE._col0 (type: timestamp), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: double), VALUE._col1 (type: float), VALUE._col2 (type: bigint), KEY.reducesinkkey0 (type: smallint), VALUE._col3 (type: double), VALUE._col4 (type: int), VALUE._col5 (type: float), VALUE._col6 (type: double), VALUE._col7 (type: double), VALUE._col8 (type: double), VALUE._col9 (type: float), VALUE._col10 (type: int), VALUE._col6 (type: double), VALUE._col11 (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15 Statistics: Num rows: 3868 Data size: 118746 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 3868 Data size: 118746 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Limit + Number of rows: 45 + Statistics: Num rows: 45 Data size: 1350 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 45 Data size: 1350 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Execution mode: vectorized Stage: Stage-0 Fetch Operator - limit: -1 + limit: 45 Processor Tree: ListSink @@ -3315,6 +1694,7 @@ WHERE (((-1.389 >= cint) OR ((cstring1 LIKE 'ss%') AND (10.175 > cbigint))) ORDER BY csmallint, cstring2, cdouble +LIMIT 45 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -3343,6 +1723,7 @@ WHERE (((-1.389 >= cint) OR ((cstring1 LIKE 'ss%') AND (10.175 > cbigint))) ORDER BY csmallint, cstring2, cdouble +LIMIT 45 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -3391,630 +1772,6 @@ NULL 4hA4KQj2vD3fI6gX82220d 12329.0 NULL -1887561756 12329 -528876.9279910339 -1 1969-12-31 15:59:46.351 155506i0h358vma3m1tGku 15601.0 -57.0 1328883886 15601 372340.6797422247 -15858 366624.0 -15601.0 158740.17500000002 -6432.0 57.0 NULL -15601.0 -2.43391201E8 1969-12-31 16:00:15.522 1618frAK6kL 15601.0 -44.0 1296727292 15601 363330.70664051553 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 1969-12-31 15:59:52.617 16NIx33qB1Thp5q 15601.0 -9.0 1660201497 15601 465172.7366209022 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.488 16jmamsEtKc51n 15601.0 1.0 -832606494 15601 -233288.45446903896 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.419 17i12pGg4fpDVOekj5 15601.0 59.0 -1374485693 15601 -385117.87419445225 -15858 -379488.0 -15601.0 158740.17500000002 -6432.0 -59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.284 17r8lCoU7J3mt47of258 15601.0 59.0 1841882240 15601 516077.9602129448 -15858 -379488.0 -15601.0 158740.17500000002 -6432.0 -59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.883 18032Ok80Rh3ICJd2QqF 15601.0 1.0 -2136727102 15601 -598690.6982347997 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.545 1812MP27X 15601.0 -25.0 882926601 15601 247387.6718968899 -15858 160800.0 -15601.0 158740.17500000002 -6432.0 25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.183 18QAI3 15601.0 0.0 1638241933 15601 459019.8747548333 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.863 1Ewed8Vw3iVfeeaXWE2g7 15601.0 -6.0 -786134704 15601 -220267.49901933313 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.578 1G71L 15601.0 -64.0 -1809291815 15601 -506946.43177360605 -15858 411648.0 -15601.0 158740.17500000002 -6432.0 64.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.691 1GMeP 15601.0 60.0 1480022657 15601 414688.33202577755 -15858 -385920.0 -15601.0 158740.17500000002 -6432.0 -60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.898 1GsrLIbvD7J7l7eyJ7 15601.0 -44.0 -772919195 15601 -216564.63855421686 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.839 1Ic5OYcpB 15601.0 -2.0 -430689331 15601 -120675.07172877557 -15858 12864.0 -15601.0 158740.17500000002 -6432.0 2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.539 1J2G60o 15601.0 -23.0 -1864716928 15601 -522476.0235360045 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.528 1L2401UOQ236aqX6dCr404H 15601.0 -41.0 NULL 15601 NULL -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.571 1NuHbq7wu 15601.0 -42.0 -1434650528 15601 -401975.49117399834 -15858 270144.0 -15601.0 158740.17500000002 -6432.0 42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.377 1Rnl53uFEkUaP567 15601.0 -44.0 -429050254 15601 -120215.81787615578 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.326 1TWVYbo8A06jVpsj 15601.0 -28.0 -1297431786 15601 -363528.09918744746 -15858 180096.0 -15601.0 158740.17500000002 -6432.0 28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.27 1a8dVp 15601.0 15.0 2106881426 15601 590328.2224712805 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.237 1af7dEq0egH 15601.0 -4.0 996077543 15601 279091.49425609416 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.206 1bQgOIC5M1mYO 15601.0 44.0 970663654 15601 271970.7632390025 -15858 -283008.0 -15601.0 158740.17500000002 -6432.0 -44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.31 1cySK1D066 15601.0 25.0 492608996 15601 138024.3754553096 -15858 -160800.0 -15601.0 158740.17500000002 -6432.0 -25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.207 1geCYToEJ2C 15601.0 -48.0 -652336471 15601 -182778.5012608574 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.214 1mwmV 15601.0 60.0 -640286718 15601 -179402.27458671897 -15858 -385920.0 -15601.0 158740.17500000002 -6432.0 -60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.869 1r31LS0 15601.0 16.0 908699526 15601 254609.00140095263 -15858 -102912.0 -15601.0 158740.17500000002 -6432.0 -16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.503 1sHwG4L77O4cr560Mb438A 15601.0 49.0 -343392629 15601 -96215.36256654526 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.224 1t0CR 15601.0 -21.0 1890350821 15601 529658.3975903614 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.894 1tIN2rwDJ0 15601.0 -6.0 -1207674957 15601 -338379.08573830203 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.264 1ydwoKOeCAx7c15W08 15601.0 40.0 2088429109 15601 585158.0579994397 -15858 -257280.0 -15601.0 158740.17500000002 -6432.0 -40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.821 203NY247Byl0uo 15601.0 34.0 1736691817 15601 486604.5998879238 -15858 -218688.0 -15601.0 158740.17500000002 -6432.0 -34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.935 23EpSjnhU1fkij33yNA763AK 15601.0 -19.0 897944388 15601 251595.5135892407 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.154 23HjoS18rjHCx771 15601.0 18.0 -996134600 15601 -279107.4810871393 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.281 23Uv26RhfxYCNyIQS1HJn 15601.0 -23.0 1273456471 15601 356810.44298122724 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.641 23fHhEiKL5D3voA 15601.0 -33.0 -1465766070 15601 -410693.7713645279 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.64 24Brw6 15601.0 7.0 1621296717 15601 454271.985710283 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.723 25EMXg12 15601.0 47.0 1447975413 15601 405708.9977584758 -15858 -302304.0 -15601.0 158740.17500000002 -6432.0 -47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.747 260x8Lpv5ILXWEPxlog248di 15601.0 22.0 1846338753 15601 517326.6329504063 -15858 -141504.0 -15601.0 158740.17500000002 -6432.0 -22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.911 268awl0F5A 15601.0 -39.0 -176425309 15601 -49432.70075651443 -15858 250848.0 -15601.0 158740.17500000002 -6432.0 39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.692 26VAMx7 15601.0 -30.0 1563934122 15601 438199.5298402914 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.459 27iT5rw 15601.0 18.0 -62733813 15601 -17577.420285794342 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.066 28412JHar2yEWJ4rsg 15601.0 -63.0 2059199534 15601 576968.2079013729 -15858 405216.0 -15601.0 158740.17500000002 -6432.0 63.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.241 28ao0HxkN7J72QNhcY 15601.0 2.0 419546737 15601 117553.02241524236 -15858 -12864.0 -15601.0 158740.17500000002 -6432.0 -2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.561 28j21KA5BLfXk8IrHe 15601.0 -33.0 -226993201 15601 -63601.34519473242 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.435 2C1n0DNS8X 15601.0 -26.0 -354697170 15601 -99382.78789576913 -15858 167232.0 -15601.0 158740.17500000002 -6432.0 26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.638 2EgCJP76SeDBsFg6w 15601.0 -33.0 570984089 15601 159984.33426730178 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.553 2FlOO88n5i2I 15601.0 29.0 1674587606 15601 469203.58811992157 -15858 -186528.0 -15601.0 158740.17500000002 -6432.0 -29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.476 2IDKgpJH461h554ubuHe2 15601.0 -55.0 996454184 15601 279197.0254973382 -15858 353760.0 -15601.0 158740.17500000002 -6432.0 55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.11 2M5wNS40c8E03s6aUlur 15601.0 -13.0 -928466576 15601 -260147.54160829363 -15858 83616.0 -15601.0 158740.17500000002 -6432.0 13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.286 2N0G8 15601.0 -47.0 -1828371599 15601 -512292.4065564584 -15858 302304.0 -15601.0 158740.17500000002 -6432.0 47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.95 2O55G 15601.0 -33.0 1958832178 15601 548846.2252731858 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.279 2On21PaPPbpDap7Q55a5Iw 15601.0 -58.0 2144274348 15601 600805.36508826 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.027 2R8parX8OGHj3vE6Hk761a6b 15601.0 62.0 -310826420 15601 -87090.61922107033 -15858 -398784.0 -15601.0 158740.17500000002 -6432.0 -62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.265 2S72XuXwWWB2bpmYpu6Y0q 15601.0 59.0 1762456014 15601 493823.48388904455 -15858 -379488.0 -15601.0 158740.17500000002 -6432.0 -59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.157 2TCJA4qtFeE58 15601.0 -45.0 -1291025659 15601 -361733.1630708882 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.446 2V30r60 15601.0 36.0 -1493188887 15601 -418377.3849817876 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.592 2V48sMwTCo8fdDnY78qDXns 15601.0 -45.0 1675482723 15601 469454.3914261698 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.696 2Y1016lg2I5NaYJ 15601.0 22.0 NULL 15601 NULL -15858 -141504.0 -15601.0 158740.17500000002 -6432.0 -22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.583 2YAbAlSe6FR66WFo 15601.0 -59.0 1364240151 15601 382247.170355842 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.864 2fqi280kgLqm40T8Pg2e47 15601.0 8.0 1990837220 15601 557813.734939759 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.108 2g0kR10R20S8bO7x233PflX 15601.0 -11.0 1810075387 15601 507165.98122723453 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.934 2hyiY02c4fV168hNxjdGqo 15601.0 28.0 -1852182045 15601 -518963.86803026055 -15858 -180096.0 -15601.0 158740.17500000002 -6432.0 -28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.102 2uXU06tULF7itEhNYy5j7k 15601.0 35.0 -987166521 15601 -276594.71028299246 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.975 2uvcn0tEsP42wySb0LWC875U 15601.0 -17.0 -590153501 15601 -165355.42196693752 -15858 109344.0 -15601.0 158740.17500000002 -6432.0 17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.698 2w0w8B85pE4jELXx 15601.0 13.0 -2108715482 15601 -590842.1075931634 -15858 -83616.0 -15601.0 158740.17500000002 -6432.0 -13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.08 2wgGraY3CIxDy8AxH3um15GE 15601.0 59.0 701594431 15601 196580.11515830766 -15858 -379488.0 -15601.0 158740.17500000002 -6432.0 -59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.39 30abVOkSw 15601.0 -57.0 -304247740 15601 -85247.33538806389 -15858 366624.0 -15601.0 158740.17500000002 -6432.0 57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.129 316f2Yg786dK8Bdk 15601.0 20.0 -362433250 15601 -101550.36424768843 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.709 31Sc0dgiT2Ag83txo7 15601.0 -8.0 -335617169 15601 -94036.75231157186 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.504 32XYGA7BOMTt27DGulBeUroc 15601.0 -50.0 -596103241 15601 -167022.48276828244 -15858 321600.0 -15601.0 158740.17500000002 -6432.0 50.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.708 32gboqrESN35shM21v4Y 15601.0 -39.0 2129132384 15601 596562.7301765201 -15858 250848.0 -15601.0 158740.17500000002 -6432.0 39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.097 32u2yKHQehN 15601.0 -5.0 -1844060558 15601 -516688.3042869151 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.729 348A6IBn 15601.0 31.0 954086950 15601 267326.1277668815 -15858 -199392.0 -15601.0 158740.17500000002 -6432.0 -31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.342 34ByCIyiD2b3RM 15601.0 26.0 1802490164 15601 505040.67357803305 -15858 -167232.0 -15601.0 158740.17500000002 -6432.0 -26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.97 3503D1bt0J1Ud74yX4716121 15601.0 -2.0 -319788030 15601 -89601.57747268143 -15858 12864.0 -15601.0 158740.17500000002 -6432.0 2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.894 35MAHX70Py67 15601.0 42.0 1267863526 15601 355243.3527598767 -15858 -270144.0 -15601.0 158740.17500000002 -6432.0 -42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.279 35V0Eq127c7Jbvs862 15601.0 28.0 440950508 15601 123550.15634631549 -15858 -180096.0 -15601.0 158740.17500000002 -6432.0 -28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.644 35kveUkKO3V1ad2 15601.0 -23.0 NULL 15601 NULL -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.524 371wKbMGY2 15601.0 -61.0 1977536065 15601 554086.8772765481 -15858 392352.0 -15601.0 158740.17500000002 -6432.0 61.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.381 375tWcaL 15601.0 27.0 208571945 15601 58439.88372093023 -15858 -173664.0 -15601.0 158740.17500000002 -6432.0 -27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.809 38VIu8r35oI8LI 15601.0 9.0 1445910023 15601 405130.29504062765 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.62 3AXY47D 15601.0 -36.0 1449097159 15601 406023.3003642477 -15858 231552.0 -15601.0 158740.17500000002 -6432.0 36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.367 3DCKPI43L3d 15601.0 19.0 -408304573 15601 -114403.07453068087 -15858 -122208.0 -15601.0 158740.17500000002 -6432.0 -19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.637 3E6lh2b7Mc5EAYo3 15601.0 -8.0 -1768316238 15601 -495465.46315494535 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.14 3HY275 15601.0 -54.0 -989710558 15601 -277307.5253572429 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.309 3I62k00H8W4YkR8UVffhm 15601.0 37.0 1251122304 15601 350552.6209022135 -15858 -237984.0 -15601.0 158740.17500000002 -6432.0 -37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.801 3I6hScTcbL 15601.0 -37.0 333141293 15601 93343.03530400673 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.059 3J5RuDO2K 15601.0 -12.0 1511836517 15601 423602.27430652844 -15858 77184.0 -15601.0 158740.17500000002 -6432.0 12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.251 3J71K25Fc721kce4lIT 15601.0 18.0 827296932 15601 231800.76548052675 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.932 3NKHJC 15601.0 -59.0 -133287350 15601 -37345.853180162514 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.658 3RUv5ya25aqr5127TxoQT251 15601.0 -58.0 1395869576 15601 391109.43569627346 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.684 3RW7h8mx1UYX 15601.0 9.0 -605773050 15601 -169731.87167273747 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.385 3Rql1n377th0WNasiwTIqfAk 15601.0 -16.0 1164066405 15601 326160.38246007287 -15858 102912.0 -15601.0 158740.17500000002 -6432.0 16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.635 3STg8jD7jqGBM52TjVsB46Ab 15601.0 47.0 -1220505630 15601 -341974.1188007845 -15858 -302304.0 -15601.0 158740.17500000002 -6432.0 -47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.554 3T10x1IyRuV5H77 15601.0 -37.0 -218695361 15601 -61276.36901092743 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.978 3U24COBBS7q3TeS3m 15601.0 17.0 -402367872 15601 -112739.66713365089 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.038 3Uyh75B8Qwn 15601.0 -11.0 676428086 15601 189528.74362566546 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.759 3V8UHxN5TBU 15601.0 -51.0 NULL 15601 NULL -15858 328032.0 -15601.0 158740.17500000002 -6432.0 51.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.35 3Xs32r0n4BU2f2tiC 15601.0 -11.0 986909074 15601 276522.5760717288 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.992 3a6E43HeD 15601.0 -60.0 1915758648 15601 536777.4300924629 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.948 3aDifhjuk6b4nntFIF 15601.0 8.0 1327060856 15601 371829.88400112075 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.106 3g41G77ehhX5fI7 15601.0 30.0 -1465963146 15601 -410748.99019333144 -15858 -192960.0 -15601.0 158740.17500000002 -6432.0 -30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.547 3g5v51lNv 15601.0 0.0 473839931 15601 132765.46119361164 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.409 3h42BQqfR5c74WLa 15601.0 -20.0 -57923441 15601 -16229.599607733258 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.346 3iHVpKa1Iy 15601.0 -18.0 -1414044792 15601 -396201.9590921827 -15858 115776.0 -15601.0 158740.17500000002 -6432.0 18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.239 3l33jTxWC 15601.0 -15.0 562442679 15601 157591.11207621184 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.834 3oIYv7OvH2vrLTHsa 15601.0 -23.0 -557847275 15601 -156303.52339590923 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.848 3qT4ePv7ISMeETgFD0b0S1Ly 15601.0 -4.0 -2142615863 15601 -600340.6732978425 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.687 3t5w8EbK07SIW3PEI4 15601.0 10.0 24464415 15601 6854.697394228075 -15858 -64320.0 -15601.0 158740.17500000002 -6432.0 -10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.984 3th76XH6M3nttE4 15601.0 29.0 1956045570 15601 548065.4441019894 -15858 -186528.0 -15601.0 158740.17500000002 -6432.0 -29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.949 3uojQvrD6m41To 15601.0 1.0 829192702 15601 232331.9422807509 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.725 3v66hVGTQa 15601.0 -50.0 -458110015 15601 -128358.08769963575 -15858 321600.0 -15601.0 158740.17500000002 -6432.0 50.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.679 40at262XNm5auTvXDhreVM 15601.0 -5.0 612416000 15601 171593.16335107872 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.992 41k5oTFUiu5nv 15601.0 -28.0 989393728 15601 277218.7525917624 -15858 180096.0 -15601.0 158740.17500000002 -6432.0 28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.413 428fBlpfi 15601.0 51.0 -2040027963 15601 -571596.5152703839 -15858 -328032.0 -15601.0 158740.17500000002 -6432.0 -51.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.884 42egcL8i65 15601.0 8.0 -1568412240 15601 -439454.256094144 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.059 44n5KP8SW 15601.0 -31.0 1250832914 15601 350471.5365648641 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.711 45ehHO1 15601.0 19.0 1981706992 15601 555255.5315214345 -15858 -122208.0 -15601.0 158740.17500000002 -6432.0 -19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.794 465xOUe8A4186sH 15601.0 56.0 -1061994141 15601 -297560.70075651444 -15858 -360192.0 -15601.0 158740.17500000002 -6432.0 -56.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.878 46cPsh 15601.0 -48.0 1544127003 15601 432649.76267862145 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.469 47Sm8wxGLl4syvsh1W8d2eq 15601.0 25.0 -1178735095 15601 -330270.4104791258 -15858 -160800.0 -15601.0 158740.17500000002 -6432.0 -25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.308 47tNFFE0l8022wydms 15601.0 6.0 -921789404 15601 -258276.66124964977 -15858 -38592.0 -15601.0 158740.17500000002 -6432.0 -6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.877 48gL7oUDAKW75kgT 15601.0 5.0 -245067785 15601 -68665.67245727095 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.876 4AqO5U 15601.0 -32.0 -938739544 15601 -263025.9299523676 -15858 205824.0 -15601.0 158740.17500000002 -6432.0 32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.124 4DwyxKwiHK3nV8p6 15601.0 32.0 -747159857 15601 -209347.11599887925 -15858 -205824.0 -15601.0 158740.17500000002 -6432.0 -32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.035 4E0UheoualijJ1rno 15601.0 46.0 -1116090298 15601 -312717.9316335108 -15858 -295872.0 -15601.0 158740.17500000002 -6432.0 -46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.782 4E1jb 15601.0 7.0 -484557615 15601 -135768.45474922948 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.334 4EbBPLvTO2Pe6s33iKn8 15601.0 46.0 -1721221449 15601 -482269.9492855141 -15858 -295872.0 -15601.0 158740.17500000002 -6432.0 -46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.384 4F7q027w 15601.0 -37.0 -1373443946 15601 -384825.9865508546 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.781 4HXsi4dv 15601.0 40.0 -487954385 15601 -136720.19753432335 -15858 -257280.0 -15601.0 158740.17500000002 -6432.0 -40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.777 4J1YKqEsJ2K0e85FB1Q 15601.0 0.0 -203039588 15601 -56889.7696833847 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.379 4L28g68B1xnrTBsnCa 15601.0 -22.0 1593645377 15601 446524.3421126366 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.504 4M0VqYd8r8D5 15601.0 -26.0 2102392175 15601 589070.3768562622 -15858 167232.0 -15601.0 158740.17500000002 -6432.0 26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.031 4P1l3UF37p8CvAKi5qA 15601.0 40.0 -912039001 15601 -255544.69066965536 -15858 -257280.0 -15601.0 158740.17500000002 -6432.0 -40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.249 4Rq1pXQeEsPt 15601.0 42.0 -122247742 15601 -34252.659568506584 -15858 -270144.0 -15601.0 158740.17500000002 -6432.0 -42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.386 4U34tbdGyu6f52ry 15601.0 1.0 254788466 15601 71389.31521434576 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.315 4UWNuEfgp 15601.0 8.0 -1393500402 15601 -390445.61557859345 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.452 4Y8Yutn4b4HF0 15601.0 -6.0 -337682588 15601 -94615.46315494536 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.821 4c7SDx6WePBLWjdjH1o7ix 15601.0 -37.0 79643966 15601 22315.485009806667 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.819 4i342tHD 15601.0 10.0 1177275310 15601 329861.3925469319 -15858 -64320.0 -15601.0 158740.17500000002 -6432.0 -10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.049 4lAdgqS7J8PYkK 15601.0 0.0 1561097160 15601 437404.6399551695 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.397 52cUSOgt7i1PMGWG3 15601.0 0.0 53950949 15601 15116.544970579995 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.798 53J14DdxOk0BwV5x3TunGjou 15601.0 18.0 -860591619 15601 -241129.62146259457 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.432 53X1h8m4Q5y8SGKk0EL74v 15601.0 16.0 326323074 15601 91432.63491173998 -15858 -102912.0 -15601.0 158740.17500000002 -6432.0 -16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.496 53XJFq221K 15601.0 15.0 147916674 15601 41444.8512188288 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.162 545WCULCG83sT3fR1RD38e 15601.0 17.0 -1749442997 15601 -490177.3597646399 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.558 54Q740CGYW4r2 15601.0 -4.0 1385428226 15601 388183.8683104511 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.054 54X76o 15601.0 -18.0 1179135101 15601 330382.488372093 -15858 115776.0 -15601.0 158740.17500000002 -6432.0 18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.094 54gc6c4vFnE7BduQcdm 15601.0 -9.0 -216777441 15601 -60738.98599047352 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.87 56015OKS42DG3ju4KW0a558 15601.0 -31.0 -1784005728 15601 -499861.50966657326 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.166 563BdSoLJFx 15601.0 6.0 -47379735 15601 -13275.353040067246 -15858 -38592.0 -15601.0 158740.17500000002 -6432.0 -6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.697 5684o66hD1A 15601.0 33.0 -667436971 15601 -187009.51835247967 -15858 -212256.0 -15601.0 158740.17500000002 -6432.0 -33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.984 568U4kod3IM212hiu8KM 15601.0 7.0 160900383 15601 45082.76351919305 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.334 56J7AFRtVC30pT458Lc3461 15601.0 28.0 -1767756774 15601 -495308.70664051553 -15858 -180096.0 -15601.0 158740.17500000002 -6432.0 -28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.066 56ac8 15601.0 -20.0 -41530125 15601 -11636.347716447184 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.307 578rPxyhOk6IXAKYJn 15601.0 14.0 NULL 15601 NULL -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.805 57eimVBuq4i3FdRlJi5iNFh5 15601.0 -35.0 1326401578 15601 371645.1605491734 -15858 225120.0 -15601.0 158740.17500000002 -6432.0 35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.548 584i3Q7R5P65nCfCt30B 15601.0 48.0 1276990360 15601 357800.60521154385 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.279 5DJnb 15601.0 38.0 299342203 15601 83872.85037825721 -15858 -244416.0 -15601.0 158740.17500000002 -6432.0 -38.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.68 5EBH67Oqi47O 15601.0 -2.0 1450853557 15601 406515.426449986 -15858 12864.0 -15601.0 158740.17500000002 -6432.0 2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.894 5EIQq8oF 15601.0 4.0 -25467184 15601 -7135.663771364528 -15858 -25728.0 -15601.0 158740.17500000002 -6432.0 -4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.252 5FApe58n1bNcyN52tE 15601.0 -8.0 -1902104689 15601 -532951.720089661 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.763 5Fy3QhweW 15601.0 -29.0 1023307150 15601 286720.97226113756 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.021 5HN44RVUXF0ELkvPAkQntoiB 15601.0 13.0 -2058347315 15601 -576729.4242084618 -15858 -83616.0 -15601.0 158740.17500000002 -6432.0 -13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.124 5JN6of4vi 15601.0 55.0 448409948 15601 125640.22079013729 -15858 -353760.0 -15601.0 158740.17500000002 -6432.0 -55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.493 5MO0A16x7Ec5nM23WnBU 15601.0 -33.0 -6432 15601 -1.8021854861305688 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.86 5Pn1BhiCeCd 15601.0 30.0 160587665 15601 44995.14289717007 -15858 -192960.0 -15601.0 158740.17500000002 -6432.0 -30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.957 5SVe8AEjY848Rf 15601.0 -56.0 -1683701844 15601 -471757.31129167834 -15858 360192.0 -15601.0 158740.17500000002 -6432.0 56.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.344 5Sm77ix2oQa7spX 15601.0 47.0 1640015816 15601 459516.89997198095 -15858 -302304.0 -15601.0 158740.17500000002 -6432.0 -47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.733 5UcDl 15601.0 -63.0 483904240 15601 135585.38526197814 -15858 405216.0 -15601.0 158740.17500000002 -6432.0 63.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.096 5fTGTHvaK 15601.0 -41.0 -480294523 15601 -134573.97674418605 -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.418 5fecwPu2O6YdwAt 15601.0 -20.0 -125514283 15601 -35167.913421126366 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.506 5kH1rO 15601.0 26.0 1341651482 15601 375918.0392266741 -15858 -167232.0 -15601.0 158740.17500000002 -6432.0 -26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.779 5lXRdTnA22VoT16Npr 15601.0 -60.0 1122241452 15601 314441.4267301765 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.066 5rg4D5D3KoH7Em1 15601.0 -58.0 2079381885 15601 582623.1115158307 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.076 5t0xD81bv100c5Tsy0T 15601.0 15.0 1329082102 15601 372396.217988232 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.026 5tCt5 15601.0 8.0 -671519607 15601 -188153.43429532083 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.188 5w4L1fDocLE51HE7N3c 15601.0 -63.0 -1574729892 15601 -441224.4023536004 -15858 405216.0 -15601.0 158740.17500000002 -6432.0 63.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.782 5ydLyNvMP2B2 15601.0 34.0 -1175444744 15601 -329348.4852899972 -15858 -218688.0 -15601.0 158740.17500000002 -6432.0 -34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.832 6002q 15601.0 37.0 676613895 15601 189580.8055477725 -15858 -237984.0 -15601.0 158740.17500000002 -6432.0 -37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.364 60B4H0EgaA4NC5Iyy4O 15601.0 -3.0 211786821 15601 59340.66152984029 -15858 19296.0 -15601.0 158740.17500000002 -6432.0 3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.916 60fy6yAOepPm6l3 15601.0 58.0 -1624506701 15601 -455171.3928271225 -15858 -373056.0 -15601.0 158740.17500000002 -6432.0 -58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.136 60g81s 15601.0 -51.0 1551526522 15601 434723.0378257215 -15858 328032.0 -15601.0 158740.17500000002 -6432.0 51.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.675 60o1F4eW1 15601.0 -41.0 1718435591 15601 481489.3782572149 -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.873 62YSTHdPej50X5u3O1D 15601.0 -62.0 281485844 15601 78869.66769403194 -15858 398784.0 -15601.0 158740.17500000002 -6432.0 62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.124 63N5mknei4aeWJ8V0qwVI 15601.0 5.0 188016060 15601 52680.3194172037 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.198 63eX32F8ps86O 15601.0 -2.0 -2115132140 15601 -592639.9943961895 -15858 12864.0 -15601.0 158740.17500000002 -6432.0 2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.465 63ml1hL17Hky 15601.0 -39.0 -775351902 15601 -217246.26001681143 -15858 250848.0 -15601.0 158740.17500000002 -6432.0 39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.616 64NUjX13Fyeb7AWh5DX2D 15601.0 39.0 333745628 15601 93512.36424768843 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.182 66NbK5Ke 15601.0 -19.0 -1293795844 15601 -362509.34267301764 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.305 66O6v0Vf6jvnQs2Ps62hYr4 15601.0 -30.0 701736845 15601 196620.01821238443 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.179 66S3R 15601.0 52.0 113813447 15601 31889.44998599047 -15858 -334464.0 -15601.0 158740.17500000002 -6432.0 -52.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:43.721 67e72C1HvFm3G61s3E 15601.0 57.0 -1465657206 15601 -410663.26870271785 -15858 -366624.0 -15601.0 158740.17500000002 -6432.0 -57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.752 67jdQgbohcurvMDHh5W 15601.0 36.0 4757615 15601 1333.0386662930794 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.218 67p706r1Gv1cjIO 15601.0 -54.0 -641670659 15601 -179790.0417483889 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.462 68ldxXNy74071w 15601.0 35.0 -777113949 15601 -217739.96889885122 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.388 6A657TNuJgSp1Y6chfUOqyo 15601.0 20.0 1605330367 15601 449798.3656486411 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.299 6C5K3WGc2laGctSI2m0o8 15601.0 47.0 -1019007115 15601 -285516.1431773606 -15858 -302304.0 -15601.0 158740.17500000002 -6432.0 -47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.965 6D4DQRSeJLF51 15601.0 50.0 1278766496 15601 358298.2616979546 -15858 -321600.0 -15601.0 158740.17500000002 -6432.0 -50.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.03 6ERA57C3XFjRG3oJ0 15601.0 25.0 -765146525 15601 -214386.81003082095 -15858 -160800.0 -15601.0 158740.17500000002 -6432.0 -25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.631 6G507mfwId541DtIuy 15601.0 -53.0 1415455683 15601 396597.27738862426 -15858 340896.0 -15601.0 158740.17500000002 -6432.0 53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.034 6HHDm16v6VrJA 15601.0 20.0 811631368 15601 227411.4228075091 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.32 6KJ1McyXPvnI1aVA2m1 15601.0 39.0 -144116978 15601 -40380.21238442141 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.444 6N24JhdOx8Uu368 15601.0 -5.0 -685821373 15601 -192160.65368450547 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.896 6Qtj3B0piVu 15601.0 46.0 -1063470233 15601 -297974.28775567387 -15858 -295872.0 -15601.0 158740.17500000002 -6432.0 -46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.171 6RF0nrPv31V5d7y203yEhP04 15601.0 -11.0 -26446061 15601 -7409.935836368731 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.101 6Ro6sc8i5gt3Yau7O 15601.0 -6.0 -847064600 15601 -237339.47884561503 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.975 6TeJh6uj8yr 15601.0 23.0 446614861 15601 125137.25441300085 -15858 -147936.0 -15601.0 158740.17500000002 -6432.0 -23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.052 6U81A8U3S 15601.0 -22.0 -1138394041 15601 -318967.2291958532 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.88 6UFb57s47rh1M046gK2RyP 15601.0 48.0 1294882412 15601 362813.7887363407 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.811 6WUSYOYu 15601.0 11.0 317708856 15601 89019.01260857383 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.52 6ej7IPl1axJbEoLTlQd2V 15601.0 -35.0 682869093 15601 191333.45278789577 -15858 225120.0 -15601.0 158740.17500000002 -6432.0 35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.045 6ekoSl0HCwx6IuWGt5JC5U0 15601.0 34.0 709756299 15601 198866.9932754273 -15858 -218688.0 -15601.0 158740.17500000002 -6432.0 -34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.338 6hI8NKEDoQHh 15601.0 11.0 1647833756 15601 461707.41272065 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.677 6iO7Vgh08 15601.0 -55.0 -1062767051 15601 -297777.2628187167 -15858 353760.0 -15601.0 158740.17500000002 -6432.0 55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.859 6l8L47 15601.0 -54.0 1882977755 15601 527592.5343233398 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.056 6mWsAi 15601.0 58.0 235428680 15601 65964.88652283553 -15858 -373056.0 -15601.0 158740.17500000002 -6432.0 -58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.467 6oAqXj7Kno4oPwyyvkFHx26E 15601.0 27.0 -67671601 15601 -18960.94172036985 -15858 -173664.0 -15601.0 158740.17500000002 -6432.0 -27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.739 6p3YH01g4Q 15601.0 25.0 1972121187 15601 552569.6797422247 -15858 -160800.0 -15601.0 158740.17500000002 -6432.0 -25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.394 6rMa1i 15601.0 48.0 400830823 15601 112309.00056038106 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.803 6tDKNa 15601.0 35.0 456583571 15601 127930.39254693191 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.703 6ukSO2rt3sY 15601.0 17.0 912955819 15601 255801.5743905856 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.961 6xam34x8s05c60D8BXMDCP 15601.0 32.0 1194813198 15601 334775.34267301764 -15858 -205824.0 -15601.0 158740.17500000002 -6432.0 -32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.733 6ySy81Xi5 15601.0 54.0 -1676223874 15601 -469662.0549173438 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.606 70CwR7G80qU0a 15601.0 29.0 -2052415815 15601 -575067.474082376 -15858 -186528.0 -15601.0 158740.17500000002 -6432.0 -29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.265 70Kvn2dL1ONDAGv22fni5S 15601.0 -44.0 299090584 15601 83802.34911739983 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.779 71w84QYjROpI1LRs 15601.0 12.0 627141836 15601 175719.20313813392 -15858 -77184.0 -15601.0 158740.17500000002 -6432.0 -12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.576 73117URk7G4v 15601.0 -46.0 529529092 15601 148369.03670495938 -15858 295872.0 -15601.0 158740.17500000002 -6432.0 46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.229 73l03Fiy5cx14fg 15601.0 -21.0 1679050126 15601 470453.9439618941 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.495 74B2Y5Q 15601.0 -13.0 -1040843741 15601 -291634.5589801065 -15858 83616.0 -15601.0 158740.17500000002 -6432.0 13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.055 74YmI3NrkE60Skh0247Cef 15601.0 22.0 1592489073 15601 446200.3566825441 -15858 -141504.0 -15601.0 158740.17500000002 -6432.0 -22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.16 770AYojc7s 15601.0 -4.0 1380425571 15601 386782.1717567946 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.81 77KSI1X3EL2 15601.0 -54.0 1750152891 15601 490376.2653404315 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.23 77tF4t 15601.0 30.0 -919690155 15601 -257688.47156066124 -15858 -192960.0 -15601.0 158740.17500000002 -6432.0 -30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.68 78Qfd68RemAlT6Kn8j 15601.0 19.0 605778880 15601 169733.5051835248 -15858 -122208.0 -15601.0 158740.17500000002 -6432.0 -19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.982 7AL73c 15601.0 -21.0 1650023180 15601 462320.86859064165 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.457 7C80P162Dh088i1 15601.0 -32.0 -2105144474 15601 -589841.54497058 -15858 205824.0 -15601.0 158740.17500000002 -6432.0 32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.215 7E0b24sDWE4IdwLO 15601.0 16.0 2125913889 15601 595660.9383580835 -15858 -102912.0 -15601.0 158740.17500000002 -6432.0 -16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.799 7JQfxa2Or8T4qp 15601.0 45.0 761255971 15601 213296.7136452788 -15858 -289440.0 -15601.0 158740.17500000002 -6432.0 -45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.823 7KGMko8S5y3g5jq 15601.0 -59.0 543831209 15601 152376.35444101988 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.184 7MH3oxJA2Tk 15601.0 -11.0 -1964641289 15601 -550473.8831605492 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.054 7Q2u1kLd7Mfy1 15601.0 -14.0 -1863202490 15601 -522051.6923507985 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.506 7QuAXV6VYT7q 15601.0 38.0 1524423680 15601 427129.07817315776 -15858 -244416.0 -15601.0 158740.17500000002 -6432.0 -38.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.393 7RSMUpu2l 15601.0 31.0 1827212970 15601 511967.7696833847 -15858 -199392.0 -15601.0 158740.17500000002 -6432.0 -31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.738 7RTbw57HqNyGPcn 15601.0 17.0 -1932369186 15601 -541431.545530961 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.829 7Ur2a5SGe4m64pM2BC 15601.0 57.0 560414150 15601 157022.7374614738 -15858 -366624.0 -15601.0 158740.17500000002 -6432.0 -57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.093 7V5hA1gBCS673CU337DA24Ce 15601.0 -32.0 1991822914 15601 558089.9170636033 -15858 205824.0 -15601.0 158740.17500000002 -6432.0 32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.457 7W2RwS80JX 15601.0 -26.0 432515401 15601 121186.71924908938 -15858 167232.0 -15601.0 158740.17500000002 -6432.0 26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.555 7Wy08w00BpunUYJVsr05u46 15601.0 20.0 -89010 15601 -24.93975903614458 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.755 7X08u20Av7FQvjLy5L52 15601.0 -31.0 1705300763 15601 477809.1238442141 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.851 7XSN7PgyBJ42NuN87t 15601.0 -49.0 -668597606 15601 -187334.7172877557 -15858 315168.0 -15601.0 158740.17500000002 -6432.0 49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.783 7adFqAqlKXtTQ 15601.0 -8.0 -1493703726 15601 -418521.6379938358 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.383 7arS506d1YXayI 15601.0 -60.0 -1016256928 15601 -284745.5668254413 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.747 7hs2n1g25 15601.0 -13.0 377434477 15601 105753.56598486971 -15858 83616.0 -15601.0 158740.17500000002 -6432.0 13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.022 7jEJE3CR3l027M76o2N81 15601.0 0.0 1018195815 15601 285288.8246007285 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.251 7o8D0lTRw30h 15601.0 36.0 -1300587151 15601 -364412.2025777529 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.609 7od8M476cRRTyd1i 15601.0 -41.0 2067730138 15601 579358.4023536005 -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.039 7rem6u7WK00EsD1mq6gp80 15601.0 0.0 98841361 15601 27694.413281031102 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.377 7s3sR2QjWXv0 15601.0 -44.0 -1032806869 15601 -289382.7035584197 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.615 7vT82OOJ7VpT5J 15601.0 10.0 1661516996 15601 465541.326982348 -15858 -64320.0 -15601.0 158740.17500000002 -6432.0 -10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.209 80rr6EU 15601.0 -41.0 -560714683 15601 -157106.94396189408 -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.79 82g6ygwAG80 15601.0 39.0 -484639113 15601 -135791.28971700757 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.61 8367JQap6U744J2 15601.0 54.0 -1711666077 15601 -479592.62454469036 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.957 85F0x1b1jAwFtt0 15601.0 -7.0 1631784601 15601 457210.5914822079 -15858 45024.0 -15601.0 158740.17500000002 -6432.0 7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.552 85i7Iq6mS56rOtT28bhNjy 15601.0 -42.0 -933775134 15601 -261634.94928551416 -15858 270144.0 -15601.0 158740.17500000002 -6432.0 42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.132 85nENa25nmPijGxYvb5F7 15601.0 -43.0 1489229962 15601 417268.1316895489 -15858 276576.0 -15601.0 158740.17500000002 -6432.0 43.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.845 86Rm22yWrLRgkI6V 15601.0 -1.0 1809122123 15601 506898.88568226394 -15858 6432.0 -15601.0 158740.17500000002 -6432.0 1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.945 87Iw7D4t61rud4M 15601.0 9.0 -910567691 15601 -255132.44354160829 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.755 8C2si8HMM25gTx 15601.0 29.0 252879408 15601 70854.4152423648 -15858 -186528.0 -15601.0 158740.17500000002 -6432.0 -29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.284 8CiP3 15601.0 10.175 99984127 15601 28014.60549173438 -15858 -65445.6 -15601.0 158740.17500000002 -6432.0 -10.175 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.231 8DLDCR7L 15601.0 -4.0 1522352025 15601 426548.6200616419 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.483 8FK46Fy4W5mow61w1EO 15601.0 19.0 -1644279296 15601 -460711.4866909498 -15858 -122208.0 -15601.0 158740.17500000002 -6432.0 -19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.512 8I7242Peq34tib 15601.0 41.0 -338704173 15601 -94901.70159708602 -15858 -263712.0 -15601.0 158740.17500000002 -6432.0 -41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.106 8NB5Hm30xPsXKoQUCdxi 15601.0 -62.0 -1592016120 15601 -446067.83973101707 -15858 398784.0 -15601.0 158740.17500000002 -6432.0 62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.205 8NgNgkpB06N7bMGgBs5QJ 15601.0 14.0 -1954298743 15601 -547575.9997198095 -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.936 8R8xyd522O4QL6chM 15601.0 9.0 -1620061206 15601 -453925.8072289157 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.848 8T0iicu1hkiuJIF6nIYW0G5 15601.0 7.0 821719163 15601 230237.92743065284 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.813 8U6rv3y3cwrlg6L 15601.0 -23.0 380840615 15601 106707.9335948445 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.674 8V43o1S8d0t6u4i 15601.0 37.0 1217409914 15601 341106.7284953769 -15858 -237984.0 -15601.0 158740.17500000002 -6432.0 -37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.267 8Vs552xiccF5j3n60 15601.0 -14.0 862568803 15601 241683.60969459233 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.887 8W4LA8kaxVohu172E 15601.0 -14.0 946654233 15601 265243.5508545811 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.153 8bcU4P2 15601.0 -6.0 -659825179 15601 -184876.76632109834 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.582 8dvkU0qkX4qr 15601.0 29.0 1195930056 15601 335088.2757074811 -15858 -186528.0 -15601.0 158740.17500000002 -6432.0 -29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.383 8e3Ri1wGpcM 15601.0 -33.0 -2080305624 15601 -582881.9344354161 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.695 8e7L21Y4g8xid8j 15601.0 25.0 451518699 15601 126511.26337909779 -15858 -160800.0 -15601.0 158740.17500000002 -6432.0 -25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.218 8fhS6JqUfN 15601.0 39.0 923495645 15601 258754.73381899693 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.915 8fxjs0MMOIa0N27 15601.0 -14.0 -205670222 15601 -57626.84841692351 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.221 8gqle254GhDd1pCxr2k45 15601.0 -40.0 159274870 15601 44627.31017091622 -15858 257280.0 -15601.0 158740.17500000002 -6432.0 40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.612 8qRIl5Mu125F3y0RDS2tJ 15601.0 -30.0 1787283476 15601 500779.9036144578 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.682 8r0tSk 15601.0 -10.0 944581452 15601 264662.777248529 -15858 64320.0 -15601.0 158740.17500000002 -6432.0 10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.237 8rt58A3QR04YRX4t 15601.0 -44.0 -1551649760 15601 -434757.5679462034 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.017 8wAyA76 15601.0 41.0 137074296 15601 38406.91958531801 -15858 -263712.0 -15601.0 158740.17500000002 -6432.0 -41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.962 A1qy8CWr78 15601.0 -11.0 -386315686 15601 -108241.99663771364 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.234 A4g0u43t1BLI4h 15601.0 36.0 873370057 15601 244710.01877276547 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.158 ABOL5huJ5V40JR7Xy5Jh0 15601.0 45.0 -195941743 15601 -54901.02073409919 -15858 -289440.0 -15601.0 158740.17500000002 -6432.0 -45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.343 ABv6FN1qbww204XIw3Pk32nF 15601.0 -34.0 -1177680836 15601 -329975.0170916223 -15858 218688.0 -15601.0 158740.17500000002 -6432.0 34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.983 AIb8nmLQ0Jg4t3gUu75vJeyH 15601.0 -59.0 -2021724111 15601 -566467.9492855142 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.79 AXc2FKJEWhLfD253aoO1 15601.0 -24.0 -278405900 15601 -78006.69655365648 -15858 154368.0 -15601.0 158740.17500000002 -6432.0 24.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.055 AaqE4i62EBu0EEc0j 15601.0 7.0 68454489 15601 19180.299523676098 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.914 Af3LT15L8Onw 15601.0 14.0 -1555938533 15601 -435959.2415242365 -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.999 Alqjt 15601.0 20.0 -1972968987 15601 -552807.2252731858 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.834 AoaeP78qMN6Owq7 15601.0 38.0 951445775 15601 266586.0955449706 -15858 -244416.0 -15601.0 158740.17500000002 -6432.0 -38.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.541 AofL0r45t 15601.0 -12.0 308271363 15601 86374.71644718408 -15858 77184.0 -15601.0 158740.17500000002 -6432.0 12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.038 ApHibcqSn8Oo335QmfLfWnYF 15601.0 8.0 -590921449 15601 -165570.59372373213 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.062 B0L388T3mhPaRCS 15601.0 -58.0 808219026 15601 226455.31689548894 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.07 B204fmP5Do5b 15601.0 -9.0 1788323480 15601 501071.3028859625 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.816 B3sM2VnR 15601.0 15.0 1860728286 15601 521358.44382179884 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.134 B4bPyjY 15601.0 -48.0 -803222928 15601 -225055.45755113478 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.688 B561GDW 15601.0 6.0 273663235 15601 76677.84673578033 -15858 -38592.0 -15601.0 158740.17500000002 -6432.0 -6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.845 B5E1TD86mgjtAtB4 15601.0 -57.0 -1698345590 15601 -475860.350238162 -15858 366624.0 -15601.0 158740.17500000002 -6432.0 57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.51 B5RW2g5yog 15601.0 62.0 1815385311 15601 508653.7716447184 -15858 -398784.0 -15601.0 158740.17500000002 -6432.0 -62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.54 BBP8rjueJ6qT2UgiU51yh 15601.0 20.0 -2050820665 15601 -574620.5281591482 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.858 BClgHeB 15601.0 -55.0 357043363 15601 100040.16895488932 -15858 353760.0 -15601.0 158740.17500000002 -6432.0 55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.408 BEjDfR852Hc1MF836c 15601.0 28.0 1527899325 15601 428102.92098627065 -15858 -180096.0 -15601.0 158740.17500000002 -6432.0 -28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.331 BLO5XwB7 15601.0 12.0 1941610780 15601 544020.9526478006 -15858 -77184.0 -15601.0 158740.17500000002 -6432.0 -12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.84 BR5F00 15601.0 45.0 1903410305 15601 533317.5413281032 -15858 -289440.0 -15601.0 158740.17500000002 -6432.0 -45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.949 BRG7Sv5qr1v0twTX22 15601.0 51.0 -2103985381 15601 -589516.7780891006 -15858 -328032.0 -15601.0 158740.17500000002 -6432.0 -51.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.988 BTHM1wQ6nmd7i4D62 15601.0 17.0 -784264135 15601 -219743.38330064443 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.964 BeKTyMrM8FWn6ewb 15601.0 -36.0 -1804756106 15601 -505675.56906696555 -15858 231552.0 -15601.0 158740.17500000002 -6432.0 36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.92 ByMim67Bdl5Kq5NSjW17G3 15601.0 -22.0 623049731 15601 174572.6340711684 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.483 C0M1vBmsgknoehCiG7 15601.0 -48.0 -1228417392 15601 -344190.919585318 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.293 C53Tn5 15601.0 -31.0 -2030835158 15601 -569020.7783692911 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.672 CJgR7y5fJt25q1 15601.0 18.0 -2044770406 15601 -572925.3028859624 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.627 CQCJ6h0swWhp4 15601.0 -49.0 -230127703 15601 -64479.602970019616 -15858 315168.0 -15601.0 158740.17500000002 -6432.0 49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.714 Cb4HG6630oxk51h5F3W 15601.0 -19.0 -899534452 15601 -252041.03446343515 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.275 Ci5SHf 15601.0 -12.0 642606685 15601 180052.30736901093 -15858 77184.0 -15601.0 158740.17500000002 -6432.0 12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.088 Cl82a 15601.0 -12.0 1553995372 15601 435414.7862146259 -15858 77184.0 -15601.0 158740.17500000002 -6432.0 12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.596 Crds83KvG3egbK 15601.0 -30.0 722336779 15601 202391.92462874754 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.672 CvUplJQ5P60W8 15601.0 2.0 1921019802 15601 538251.5556178201 -15858 -12864.0 -15601.0 158740.17500000002 -6432.0 -2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.197 D0EmwVYsS1R 15601.0 11.0 -1474284078 15601 -413080.43653684505 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.344 D26B67MOpPcteG70IOsMqH 15601.0 -5.0 -13357585 15601 -3742.66881479406 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.924 D8K4E6MSC6E1d7UlX7yS6o2 15601.0 58.0 300682807 15601 84248.4749229476 -15858 -373056.0 -15601.0 158740.17500000002 -6432.0 -58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.142 DANHO0P7GlF6WFPQkFF8 15601.0 79.553 -1823591768 15601 -510953.1431773606 -15858 -511684.9 -15601.0 158740.17500000002 -6432.0 -79.553 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.259 DBTgG3H 15601.0 46.0 1056441941 15601 296005.02689829085 -15858 -295872.0 -15601.0 158740.17500000002 -6432.0 -46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.074 DJq0Lol1I 15601.0 19.0 1089687789 15601 305320.19865508546 -15858 -122208.0 -15601.0 158740.17500000002 -6432.0 -19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.419 DUE3Y1g4jLp345K 15601.0 60.0 -1141582332 15601 -319860.5581395349 -15858 -385920.0 -15601.0 158740.17500000002 -6432.0 -60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.809 DWHPiSxW7ON5vyCNmn 15601.0 -8.0 -2028170063 15601 -568274.0439899132 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.311 Db7CaO 15601.0 43.0 2113671499 15601 592230.7366209022 -15858 -276576.0 -15601.0 158740.17500000002 -6432.0 -43.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.254 Dk66H 15601.0 4.0 1533958255 15601 429800.5757915382 -15858 -25728.0 -15601.0 158740.17500000002 -6432.0 -4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.994 Dncfdm0107vK5Bmwppr1H 15601.0 -15.0 -937270420 15601 -262614.29532081814 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.365 DpXKnXx54Ped8cJeCJL 15601.0 39.0 1210224988 15601 339093.58027458674 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.402 DsLt4LdED7Q7 15601.0 -26.0 -257298466 15601 -72092.59344354161 -15858 167232.0 -15601.0 158740.17500000002 -6432.0 26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.117 E100F0lsE520GtpXYIu 15601.0 -26.0 -404509269 15601 -113339.6662930793 -15858 167232.0 -15601.0 158740.17500000002 -6432.0 26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.413 E2Kbx50LJ7amwF 15601.0 -61.0 -1022679553 15601 -286545.12552535726 -15858 392352.0 -15601.0 158740.17500000002 -6432.0 61.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.254 E865b 15601.0 57.0 761877407 15601 213470.8341272065 -15858 -366624.0 -15601.0 158740.17500000002 -6432.0 -57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.233 EPi08Ihi40O 15601.0 -34.0 113880409 15601 31908.212104230875 -15858 218688.0 -15601.0 158740.17500000002 -6432.0 34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.035 ERwT6401a164 15601.0 12.0 1295172704 15601 362895.12580554775 -15858 -77184.0 -15601.0 158740.17500000002 -6432.0 -12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.989 ETN236368gQub756Dmfp5181 15601.0 -6.0 -1610058211 15601 -451123.0627626786 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.925 EUfLkLQ 15601.0 -10.0 -1086197521 15601 -304342.2586158588 -15858 64320.0 -15601.0 158740.17500000002 -6432.0 10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.279 EcpSw7QRSrw40ueJm 15601.0 -44.0 30909765 15601 8660.623423928271 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:43.705 Ek2sC17CCXFw1Fdq1c3N7o1 15601.0 -12.0 595414579 15601 166829.52619781453 -15858 77184.0 -15601.0 158740.17500000002 -6432.0 12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.256 EmIssCRj 15601.0 21.0 68208550 15601 19111.38974502662 -15858 -135072.0 -15601.0 158740.17500000002 -6432.0 -21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.565 En0gIyb3UWw7Bg5Cs 15601.0 40.0 946637795 15601 265238.9450826562 -15858 -257280.0 -15601.0 158740.17500000002 -6432.0 -40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.305 EpY8iI4vm3q3d3x0862L3 15601.0 32.0 839217757 15601 235140.86775007006 -15858 -205824.0 -15601.0 158740.17500000002 -6432.0 -32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.391 Etkti70 15601.0 -37.0 -1474993355 15601 -413279.16923507984 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.689 ExDDp5f2lgt8O7VUcf12q81T 15601.0 18.0 1105763794 15601 309824.5430092463 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.159 F06d7U0vinY 15601.0 -50.0 1445828009 15601 405107.3154945363 -15858 321600.0 -15601.0 158740.17500000002 -6432.0 50.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.485 F0FeMN5eraBSeNo 15601.0 15.0 -1186641445 15601 -332485.6948725133 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.816 F1D04R4cY5JQbX3M4l6 15601.0 7.0 -1487527155 15601 -416791.02129448025 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.233 F1p7M8ag2lHT1No88g564W0 15601.0 24.0 184592771 15601 51721.14625945643 -15858 -154368.0 -15601.0 158740.17500000002 -6432.0 -24.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.547 F214U41bv 15601.0 26.0 -692950740 15601 -194158.23479966377 -15858 -167232.0 -15601.0 158740.17500000002 -6432.0 -26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.111 F68eh 15601.0 6.0 1274836009 15601 357196.9764639955 -15858 -38592.0 -15601.0 158740.17500000002 -6432.0 -6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.038 F7A5XKmXGD 15601.0 -14.0 -946632342 15601 -265237.41720369854 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.875 FAYy2rCtAk6p6LyMS7S3M 15601.0 45.0 29687887 15601 8318.264780050435 -15858 -289440.0 -15601.0 158740.17500000002 -6432.0 -45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.711 FEfERlrjMF6a37teo6RpLM 15601.0 21.0 1849599424 15601 518240.24208461755 -15858 -135072.0 -15601.0 158740.17500000002 -6432.0 -21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.12 FGD08uu4La5qPEl 15601.0 49.0 1419034476 15601 397600.02129448025 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.145 FH3xC0m38Hp 15601.0 -29.0 -1355363882 15601 -379760.1238442141 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.75 FIB30nWy1482081ypBNk75 15601.0 -22.0 -116661992 15601 -32687.585318016252 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.176 FbU0U126PPV4V80C 15601.0 -53.0 1164180530 15601 326192.3592042589 -15858 340896.0 -15601.0 158740.17500000002 -6432.0 53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.875 FmeinD4GMhc3dR 15601.0 30.0 -941937506 15601 -263921.9686186607 -15858 -192960.0 -15601.0 158740.17500000002 -6432.0 -30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.173 Fo0lvObXB13uFiJ538N1I7EI 15601.0 49.0 172978219 15601 48466.858783973104 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.405 Ftd0f531WF17cjTI2O 15601.0 -61.0 1139675920 15601 319326.39955169515 -15858 392352.0 -15601.0 158740.17500000002 -6432.0 61.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.119 Fwf6Sac6mM2Q5tj38H 15601.0 4.0 -293394791 15601 -82206.44186046511 -15858 -25728.0 -15601.0 158740.17500000002 -6432.0 -4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.925 G2eTbpXOf 15601.0 -46.0 -468932050 15601 -131390.3194172037 -15858 295872.0 -15601.0 158740.17500000002 -6432.0 46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.034 G70732cedJMM0TMdTnO2 15601.0 5.0 -1405201067 15601 -393724.0311011488 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.391 G8YI4g61V5l0 15601.0 -45.0 -831227593 15601 -232902.099467638 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.719 GA848dL72B2dOUfpVmG77J3F 15601.0 39.0 581431028 15601 162911.46763799383 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.066 GG48LXS1XF8 15601.0 -36.0 796380856 15601 223138.37377416642 -15858 231552.0 -15601.0 158740.17500000002 -6432.0 36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.228 GGc5G7 15601.0 3.0 -662740282 15601 -185693.5505743906 -15858 -19296.0 -15601.0 158740.17500000002 -6432.0 -3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.083 GLUkX0100q 15601.0 -31.0 -198456342 15601 -55605.58755954049 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.555 GT18w 15601.0 6.0 -940198586 15601 -263434.739702998 -15858 -38592.0 -15601.0 158740.17500000002 -6432.0 -6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.258 GWyjg3VFq1 15601.0 -25.0 988888 15601 277.07705239562904 -15858 160800.0 -15601.0 158740.17500000002 -6432.0 25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.223 Gi2GkC27Si2F2HcPpxl30H 15601.0 53.0 613322929 15601 171847.27626786215 -15858 -340896.0 -15601.0 158740.17500000002 -6432.0 -53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.76 Gk6NYea0882752C 15601.0 17.0 -191560572 15601 -53673.45811151583 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.259 GkRP5Gp6K6SFm5O21tX1U3 15601.0 -46.0 271210320 15601 75990.56318296441 -15858 295872.0 -15601.0 158740.17500000002 -6432.0 46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.96 GlQD5lVNjayU21uPxj7x6 15601.0 -49.0 -197652849 15601 -55380.45643037265 -15858 315168.0 -15601.0 158740.17500000002 -6432.0 49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.044 Gs7PDk 15601.0 11.0 1518898051 15601 425580.8492574951 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.893 Gv7dDwR 15601.0 -45.0 56009543 15601 15693.343513589241 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.785 H2W5UNJvOk4884lt0u2K 15601.0 -14.0 984832395 15601 275940.71028299246 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.92 H660yyHFbeUy864u1nS1 15601.0 -27.0 711356569 15601 199315.37377416642 -15858 173664.0 -15601.0 158740.17500000002 -6432.0 27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.931 H6EQ3Y5tY82S5U1 15601.0 14.0 -1358164329 15601 -380544.78257214907 -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.553 H85Or4yRdt4A1 15601.0 -42.0 1285310382 15601 360131.79658167553 -15858 270144.0 -15601.0 158740.17500000002 -6432.0 42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.528 HC8S2Tyv8RF 15601.0 -17.0 1158473216 15601 324593.2238722331 -15858 109344.0 -15601.0 158740.17500000002 -6432.0 17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.575 HCje0r5N3C0o3 15601.0 39.0 186460538 15601 52244.476884281314 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.722 HCr4b46Dx6aSa0Q7CRp3 15601.0 -53.0 879759030 15601 246500.14850098066 -15858 340896.0 -15601.0 158740.17500000002 -6432.0 53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.561 HJTchT5CPC84 15601.0 -29.0 -427240643 15601 -119708.78201176801 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.593 HN57u11H8 15601.0 -13.0 2061177369 15601 577522.3785374054 -15858 83616.0 -15601.0 158740.17500000002 -6432.0 13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.096 HUKr4vWS 15601.0 28.0 1781483364 15601 499154.7671616699 -15858 -180096.0 -15601.0 158740.17500000002 -6432.0 -28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.712 HX4NNXplV2R7G35xp 15601.0 37.0 980331206 15601 274679.5197534323 -15858 -237984.0 -15601.0 158740.17500000002 -6432.0 -37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.9 HcoJtE70sS7KuFuuW 15601.0 20.0 -368721894 15601 -103312.38274026338 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.08 HghnGE5gflqVwR76sX18 15601.0 48.0 1766992295 15601 495094.506864668 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.375 HmC2gaY 15601.0 -49.0 -57200424 15601 -16027.017091622303 -15858 315168.0 -15601.0 158740.17500000002 -6432.0 49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.161 Hs4v5FHpNs4 15601.0 -20.0 -1569241661 15601 -439686.6520033623 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.213 Hu8U10iq3 15601.0 1.0 -1972121622 15601 -552569.8016251051 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.328 Hv27a0qU14MJB7 15601.0 -37.0 -1274229243 15601 -357026.9663771365 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.189 HyD5X4wA0G4Ir6Wq6gM5H 15601.0 -16.0 290481712 15601 81390.2247128047 -15858 102912.0 -15601.0 158740.17500000002 -6432.0 16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.83 I086Kg80pX 15601.0 -19.0 -1575589254 15601 -441465.18744746427 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.396 I0S8mgt10Gm 15601.0 -61.0 1114673625 15601 312320.9932754273 -15858 392352.0 -15601.0 158740.17500000002 -6432.0 61.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.434 I7MI02kTvL36N 15601.0 -3.0 -1714949058 15601 -480512.48472961615 -15858 19296.0 -15601.0 158740.17500000002 -6432.0 3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:31.808 IAFkV5cK0Jh10Im806u 15601.0 20.0 1638071199 15601 458972.03670495935 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.476 IAnfq 15601.0 44.0 -2098300466 15601 -587923.9187447465 -15858 -283008.0 -15601.0 158740.17500000002 -6432.0 -44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.025 ICK66G8e8 15601.0 0.0 -901264012 15601 -252525.6407957411 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.965 IDPh0xt5aj4nhjfgvB6O6X3 15601.0 2.0 -664588420 15601 -186211.38133931073 -15858 -12864.0 -15601.0 158740.17500000002 -6432.0 -2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.733 IJRqL2Ec6JGceMcn6bUyuRU8 15601.0 -17.0 -1275985495 15601 -357519.05155505746 -15858 109344.0 -15601.0 158740.17500000002 -6432.0 17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.215 IMC05lv4PYLJb2n3r7T 15601.0 55.0 1582500035 15601 443401.5228355282 -15858 -353760.0 -15601.0 158740.17500000002 -6432.0 -55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.331 ISSP0gjn3qxAC7gH3l11N6 15601.0 8.0 183549371 15601 51428.79546091342 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.778 IYlXj3xg 15601.0 20.0 505524678 15601 141643.22723451947 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.699 Ib62k3A2XLg2TL 15601.0 -29.0 -2143024405 15601 -600455.14289717 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.19 IpDn22 15601.0 -19.0 -1322538563 15601 -370562.78033062484 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.195 Is5DY4nt6n85p8 15601.0 -11.0 -655443218 15601 -183648.98234799664 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.022 IvE07gK77 15601.0 -20.0 -1293754251 15601 -362497.68870832166 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.754 J0I71XNHjvS8 15601.0 -3.0 -2076312756 15601 -581763.1706360325 -15858 19296.0 -15601.0 158740.17500000002 -6432.0 3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.762 J4Fr2Ysig4v1h1y4Yg0QF8w8 15601.0 23.0 1499121057 15601 420039.5228355282 -15858 -147936.0 -15601.0 158740.17500000002 -6432.0 -23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.469 J73U1aQTRUd 15601.0 -6.0 -573372032 15601 -160653.4132810311 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.09 JE6y6UBN33n8Kcs 15601.0 -60.0 -2041965187 15601 -572139.3070888204 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.631 JEVyBv2IqG1xPJASdCL8 15601.0 33.0 739625813 15601 207236.14822079014 -15858 -212256.0 -15601.0 158740.17500000002 -6432.0 -33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.324 JFRQYgF2d57MV 15601.0 49.0 -128270777 15601 -35940.25693471561 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.014 JGPmC0e7g1h87 15601.0 -52.0 -886068046 15601 -248267.8750350238 -15858 334464.0 -15601.0 158740.17500000002 -6432.0 52.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.952 JN1cd 15601.0 14.0 -1426659283 15601 -399736.4200056038 -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.902 JO2608Lv74HyA 15601.0 -21.0 441754322 15601 123775.37741664331 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.741 JeNoQM2514UXI306K8SbN 15601.0 -2.0 624304190 15601 174924.12160268982 -15858 12864.0 -15601.0 158740.17500000002 -6432.0 2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.295 Jf3TV3LhLih 15601.0 45.0 -223953421 15601 -62749.62762678621 -15858 -289440.0 -15601.0 158740.17500000002 -6432.0 -45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.057 JfvDur75VQCb53GicM7hHU 15601.0 3.0 -1580362265 15601 -442802.5399271505 -15858 -19296.0 -15601.0 158740.17500000002 -6432.0 -3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.326 JqulbtcrXcNBymoHD0uDu 15601.0 2.0 496222742 15601 139036.9128607453 -15858 -12864.0 -15601.0 158740.17500000002 -6432.0 -2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.556 Jto1Ej2BS 15601.0 53.0 1556590849 15601 436142.014289717 -15858 -340896.0 -15601.0 158740.17500000002 -6432.0 -53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.383 K3DGd0 15601.0 41.0 -1730738390 15601 -484936.5060240964 -15858 -263712.0 -15601.0 158740.17500000002 -6432.0 -41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.979 K3d77AuD2 15601.0 -37.0 943423950 15601 264338.4561501821 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.114 KO3lYMSBj 15601.0 15.0 -1106735397 15601 -310096.77696833847 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.564 KV5evP72y5O6w7j 15601.0 -19.0 -1040575969 15601 -291559.5318016251 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.914 KX43450qk3ifahho2 15601.0 -19.0 853662696 15601 239188.2028579434 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.84 KXy5w41XCCA8oA 15601.0 12.0 -1331125878 15601 -372968.86466797424 -15858 -77184.0 -15601.0 158740.17500000002 -6432.0 -12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.189 Keq6tT2y4kB7 15601.0 14.0 -1970072997 15601 -551995.796301485 -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.433 Kp7FRaBtqU8i2U1 15601.0 53.0 -1231026402 15601 -344921.9394788456 -15858 -340896.0 -15601.0 158740.17500000002 -6432.0 -53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.579 Kt5AoC5 15601.0 1.0 -208178544 15601 -58329.65648641076 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.284 L1pn2rBecf3v4mOe 15601.0 -50.0 547762198 15601 153477.78033062484 -15858 321600.0 -15601.0 158740.17500000002 -6432.0 50.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.418 L2WL0K8Q3077Q7lHWxq3 15601.0 21.0 -893636289 15601 -250388.42504903334 -15858 -135072.0 -15601.0 158740.17500000002 -6432.0 -21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.918 LGM2rR 15601.0 -5.0 286911598 15601 80389.91258055478 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.07 LLeNMJ3ml 15601.0 44.0 -780348314 15601 -218646.20734099188 -15858 -283008.0 -15601.0 158740.17500000002 -6432.0 -44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.965 LW12Cn18Fa3jK0 15601.0 1.0 1365515285 15601 382604.45082656207 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.771 Lc62N872p2Qx048D8x 15601.0 36.0 503569096 15601 141095.29167834128 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.805 Ljca2gTfVlP3iiRV4Ue 15601.0 55.0 1386764124 15601 388558.1742785094 -15858 -353760.0 -15601.0 158740.17500000002 -6432.0 -55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.104 Lm4jGS6uC6m0buRvp63 15601.0 34.0 -1028809597 15601 -288262.70579994394 -15858 -218688.0 -15601.0 158740.17500000002 -6432.0 -34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.044 Lptx5Gx2Mw5PLl4hSL6T67F 15601.0 35.0 NULL 15601 NULL -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.812 LrcpM 15601.0 35.0 -1198622822 15601 -335842.7632390025 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.903 LxdPDb 15601.0 -25.0 907202969 15601 254189.68030260576 -15858 160800.0 -15601.0 158740.17500000002 -6432.0 25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:43.771 M40e006lkM2L 15601.0 49.0 -1107321329 15601 -310260.9495657047 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.515 MD1CaRLo1Q1yu8633IB 15601.0 -11.0 1417503370 15601 397171.0198935276 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.437 MHUrF1wtS4FCMIT6aP5 15601.0 18.0 1102736886 15601 308976.4320537966 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.302 MKVQYGxtltIv4QN 15601.0 -24.0 146845669 15601 41144.76576071729 -15858 154368.0 -15601.0 158740.17500000002 -6432.0 24.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.069 MO74jra6B1534xeWwCNp0k5 15601.0 -62.0 68899019 15601 19304.85261978145 -15858 398784.0 -15601.0 158740.17500000002 -6432.0 62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.881 MOrNN2vu2e 15601.0 -40.0 561535341 15601 157336.88456150182 -15858 257280.0 -15601.0 158740.17500000002 -6432.0 40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.199 Ma0cUc3gxu236hG 15601.0 -25.0 -414129290 15601 -116035.10507144859 -15858 160800.0 -15601.0 158740.17500000002 -6432.0 25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.766 Mfyi8GP6X7lQ28o3l 15601.0 15.0 -1540302337 15601 -431578.12748669094 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.748 Mg8NV0cpt7B80 15601.0 -14.0 -466156812 15601 -130612.72401232838 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.71 MhnIfCXt3OD 15601.0 -23.0 -1046520269 15601 -293225.0683664892 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.306 MnGh7cJ8Tqfj5SM3i643 15601.0 -49.0 2025282930 15601 567465.0966657327 -15858 315168.0 -15601.0 158740.17500000002 -6432.0 49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.687 Mpl1s7so8 15601.0 20.0 -1195710741 15601 -335026.8257214906 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.372 Ms3HD0o 15601.0 -9.0 108834881 15601 30494.50294200056 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.331 N6s6Ya7n38uF3 15601.0 4.0 -1096047343 15601 -307102.08545811154 -15858 -25728.0 -15601.0 158740.17500000002 -6432.0 -4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.617 N887uW7KRb6LMp 15601.0 -31.0 1521898163 15601 426421.4522275147 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.15 NKt630 15601.0 -11.0 -1133138233 15601 -317494.601569067 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.838 NP22kVaQGeaH604 15601.0 15.0 -1675398355 15601 -469430.75231157185 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.847 NaTC1s58bEK 15601.0 -9.0 NULL 15601 NULL -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.101 Ner2VnJw3kK6StMYD 15601.0 -39.0 -1651489748 15601 -462731.7870551975 -15858 250848.0 -15601.0 158740.17500000002 -6432.0 39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.558 NmR21ryn0FG67 15601.0 -24.0 -1496666324 15601 -419351.7298963295 -15858 154368.0 -15601.0 158740.17500000002 -6432.0 24.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.064 NrCRG0ol8t3w116fK2 15601.0 18.0 NULL 15601 NULL -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.697 O2387e47vBg 15601.0 -1.0 -789881959 15601 -221317.44438217988 -15858 6432.0 -15601.0 158740.17500000002 -6432.0 1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.595 O30yrAd1e8dgm5 15601.0 62.0 -1838132825 15601 -515027.4096385542 -15858 -398784.0 -15601.0 158740.17500000002 -6432.0 -62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.882 O77TCNDlf8w 15601.0 -31.0 -46453649 15601 -13015.87251330905 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.255 OI5Fo 15601.0 -58.0 -1560616588 15601 -437269.98823199776 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.061 OX3YD1C1JMmS52Y 15601.0 5.0 -1668687246 15601 -467550.3631269263 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.345 ObGm1w 15601.0 -37.0 NULL 15601 NULL -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.612 Oc6P2F1UD0D0T0haR 15601.0 21.0 1312374660 15601 367714.9509666573 -15858 -135072.0 -15601.0 158740.17500000002 -6432.0 -21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.186 OgJ3DltBHB87rMQt2d 15601.0 -9.0 -911417577 15601 -255370.573550014 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.05 OgJuBiLW71S 15601.0 59.0 1129363554 15601 316436.97226113756 -15858 -379488.0 -15601.0 158740.17500000002 -6432.0 -59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.805 OqeL462twjC0O34y086scWbW 15601.0 -46.0 157777107 15601 44207.651162790695 -15858 295872.0 -15601.0 158740.17500000002 -6432.0 46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.281 OtS4TXC3o8opoEsRtv5Sj 15601.0 8.0 2060956712 15601 577460.5525357242 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.14 OtgfTpqxm51v6Y 15601.0 -29.0 -393066261 15601 -110133.44382179882 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.996 P66k5ETLyP41K5o5gAT 15601.0 -22.0 NULL 15601 NULL -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:43.931 PEBBi 15601.0 42.0 509177858 15601 142666.81367329785 -15858 -270144.0 -15601.0 158740.17500000002 -6432.0 -42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.18 PFiGGCalsC 15601.0 -5.0 -1029272743 15601 -288392.4749229476 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.912 PIKnd8tj154 15601.0 -45.0 1619226365 15601 453691.89268702717 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.338 PJoW4 15601.0 -3.0 504525087 15601 141363.15130288596 -15858 19296.0 -15601.0 158740.17500000002 -6432.0 3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.21 PK01P7dDg2f8IAPjo662y072 15601.0 58.0 -1384901601 15601 -388036.3129728215 -15858 -373056.0 -15601.0 158740.17500000002 -6432.0 -58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.953 PN27a314v6PyUpVfeiU 15601.0 18.0 -973905398 15601 -272879.0692070608 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.438 PN71Bl6jM 15601.0 -41.0 -1064437283 15601 -298245.24600728496 -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.49 PQyN2mruXRR47dPEkesk 15601.0 5.0 -507162101 15601 -142102.01765200336 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.767 PS4fs5g7Itj843qvX 15601.0 56.0 -1378117091 15601 -386135.3575231157 -15858 -360192.0 -15601.0 158740.17500000002 -6432.0 -56.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.953 PY216BgK57qkoktjrjHb 15601.0 -48.0 1198344254 15601 335764.71112356405 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.695 PxcCoxYeQ5M 15601.0 -34.0 1218760785 15601 341485.2297562342 -15858 218688.0 -15601.0 158740.17500000002 -6432.0 34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.741 PyGaf 15601.0 -16.0 -1505978287 15601 -421960.8537405436 -15858 102912.0 -15601.0 158740.17500000002 -6432.0 16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.789 Q08uv20m 15601.0 39.0 -1046301933 15601 -293163.89268702717 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.986 Q1T7u0syw2NPveOu 15601.0 -18.0 -1185085807 15601 -332049.8198374895 -15858 115776.0 -15601.0 158740.17500000002 -6432.0 18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.38 Q30600R1 15601.0 53.0 -1283930255 15601 -359745.0980666854 -15858 -340896.0 -15601.0 158740.17500000002 -6432.0 -53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.559 Q37LCWVlT8TkMm2f3h7j0d 15601.0 -34.0 1476533372 15601 413710.6674138414 -15858 218688.0 -15601.0 158740.17500000002 -6432.0 34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.961 Q3mmj6mG4EG8H 15601.0 10.0 -720023732 15601 -201743.83076492016 -15858 -64320.0 -15601.0 158740.17500000002 -6432.0 -10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.617 Q4yNJBnb 15601.0 -10.0 1710641158 15601 479305.45194732415 -15858 64320.0 -15601.0 158740.17500000002 -6432.0 10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.42 Q6v087IOF2 15601.0 -9.0 192161117 15601 53841.7251330905 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.315 Q76PX622TlrNxcGCf5p507o8 15601.0 -22.0 1270307708 15601 355928.189408798 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.453 QCY0pTKdHRqrf5P1N58 15601.0 4.0 -1677882999 15601 -470126.9260297002 -15858 -25728.0 -15601.0 158740.17500000002 -6432.0 -4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.681 QFHk87n5xsCYI226 15601.0 53.0 -782857402 15601 -219349.23003642476 -15858 -340896.0 -15601.0 158740.17500000002 -6432.0 -53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.415 QLA5Le5ePE53UgM7km6 15601.0 51.0 -232545302 15601 -65156.99131409358 -15858 -328032.0 -15601.0 158740.17500000002 -6432.0 -51.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.808 QV08okL83Ug1jwOV8h74 15601.0 54.0 493058527 15601 138150.3297842533 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.754 QWSToWHfYl4rAJcLMwO 15601.0 54.0 1825424393 15601 511466.6273465957 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.067 Qq1cBHJkF7A3y3v5crIN0fJ 15601.0 -33.0 -1583014792 15601 -443545.75287195295 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.435 Qq2Jy5Iy15LsnaWwI 15601.0 -55.0 1958873163 15601 548857.7088820398 -15858 353760.0 -15601.0 158740.17500000002 -6432.0 55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.832 QrFWcQo7 15601.0 -27.0 -1152127938 15601 -322815.33706920705 -15858 173664.0 -15601.0 158740.17500000002 -6432.0 27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.603 R4WtD3 15601.0 -54.0 -1754189160 15601 -491507.1896889885 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.587 R68avA7MskCgYOOEP 15601.0 -44.0 1448245990 15601 405784.81087139255 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.331 R8IJh6386ba3D3VS70FSlw6 15601.0 -52.0 440096608 15601 123310.90165312412 -15858 334464.0 -15601.0 158740.17500000002 -6432.0 52.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.054 RFm8XplgEW3ep0R 15601.0 48.0 -505179873 15601 -141546.6161389745 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.579 RO83j2qQsq7 15601.0 1.0 345752927 15601 96876.6957130849 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.727 ROWD7iWDvXjq3RU60LfIm 15601.0 27.0 391612768 15601 109726.18884841692 -15858 -173664.0 -15601.0 158740.17500000002 -6432.0 -27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.368 RV01bFdAim2mhn0is3SuP 15601.0 20.0 -1644694994 15601 -460827.9613337069 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.246 RWDJpR813I70rA48j3St8 15601.0 -8.0 667749103 15601 187096.97478285234 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.232 Rf45Knu04s4160Ic0TDdw 15601.0 -59.0 1781893821 15601 499269.7733258616 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.863 RjYdeaB 15601.0 11.0 -1656847358 15601 -464232.93863827403 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.134 Rkjxcgk8n8m2B3jrKY1PbS3 15601.0 -24.0 -402193022 15601 -112690.6758195573 -15858 154368.0 -15601.0 158740.17500000002 -6432.0 24.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.584 RrQO5beX488KbcA6g4Jnu5 15601.0 -29.0 -1912094416 15601 -535750.7469879518 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.061 S1gQ06M353rQ5vm2a24EMN 15601.0 -19.0 -643533009 15601 -180311.85458111516 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.238 S25uia48N4 15601.0 39.0 -1351910626 15601 -378792.5542168675 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.336 S731TWfDrNnVe8p2yuE1k 15601.0 -4.0 956522842 15601 268008.6416363127 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.747 SD7DWsK 15601.0 54.0 -1479988050 15601 -414678.63547212107 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.26 SJ8F14f7LlNlWpBJ 15601.0 15.0 NULL 15601 NULL -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.754 SJf447 15601.0 20.0 1129495890 15601 316474.05155505746 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.043 STrL4f3N1wj 15601.0 -60.0 -5953872 15601 -1668.2185486130568 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.058 Sfe4pA7B3f5x 15601.0 -15.0 419609353 15601 117570.5668254413 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.132 ShjbW3q38Px24Hx 15601.0 -22.0 -1803981239 15601 -505458.4586718969 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.822 SjG26TSvqw3myt 15601.0 0.0 -39854776 15601 -11166.930792939198 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.18 SpJMvUVUfHrf1A723s10EdC 15601.0 47.0 -1230441185 15601 -344757.96721770806 -15858 -302304.0 -15601.0 158740.17500000002 -6432.0 -47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.051 Sr02RjVo6gEbKjr4Ftm0d 15601.0 35.0 -605058422 15601 -169531.639674979 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.284 SvKL2lM7lc 15601.0 -26.28 808737125 15601 226600.48332866348 -15858 169032.97 -15601.0 158740.17500000002 -6432.0 26.28 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.345 SwEtmG886dSmCVYqhnvUm 15601.0 -48.0 2080590537 15601 582961.7643597646 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.195 Syoe8Gm2 15601.0 -55.0 2020504394 15601 566126.1961333707 -15858 353760.0 -15601.0 158740.17500000002 -6432.0 55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.401 T3KP6V 15601.0 -59.0 -1315413812 15601 -368566.492574951 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.071 T45sp 15601.0 -18.0 1800301969 15601 504427.5620622023 -15858 115776.0 -15601.0 158740.17500000002 -6432.0 18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.108 T5W42P5q3uxBgYya8Et085C 15601.0 9.0 -2093472028 15601 -586571.0361445784 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.884 T7R4Jnl7s3d053wmyOrt 15601.0 -40.0 375928903 15601 105331.71840851779 -15858 257280.0 -15601.0 158740.17500000002 -6432.0 40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.06 T7YaUc10ta 15601.0 55.0 -1224290649 15601 -343034.64527878957 -15858 -353760.0 -15601.0 158740.17500000002 -6432.0 -55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.451 TEM55fi2Ly 15601.0 -57.0 -585350546 15601 -164009.6794620342 -15858 366624.0 -15601.0 158740.17500000002 -6432.0 57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.705 TGfOwisk27yqU43c4NdpO 15601.0 -14.0 1892527183 15601 530268.193611656 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.004 TN1V103235ex7r5y1UnD 15601.0 12.0 1028143712 15601 288076.13112916786 -15858 -77184.0 -15601.0 158740.17500000002 -6432.0 -12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.88 TNE8eY3 15601.0 -42.0 1987471865 15601 556870.7943401512 -15858 270144.0 -15601.0 158740.17500000002 -6432.0 42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.868 TTC6F8qbjDrUwqlWQ674T 15601.0 -56.0 -971846497 15601 -272302.184645559 -15858 360192.0 -15601.0 158740.17500000002 -6432.0 56.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.945 TXaLgi3L562jI1 15601.0 54.0 -1735553309 15601 -486285.6007284954 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.716 Tcvj5uSM1NCQUr 15601.0 1.0 -1025788056 15601 -287416.0986270664 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.445 TwtBSyUgu7uOpsQ 15601.0 48.0 846324964 15601 237132.2398430933 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.396 U2MJbm 15601.0 -20.0 823972698 15601 230869.34659568506 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.732 U62U7O2LVYg 15601.0 21.0 1837742836 15601 514918.1384141216 -15858 -135072.0 -15601.0 158740.17500000002 -6432.0 -21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.57 U75G6OsrKmd7KxMe 15601.0 -29.0 -1703837738 15601 -477399.1980947044 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.054 UG6g10Lb571g 15601.0 -8.0 -1998625094 15601 -559995.8234799664 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.923 UHSnND7vTVfm80W3E3AX5aR 15601.0 -19.0 268499605 15601 75231.04651162791 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.137 UQR88o20Gf453RP 15601.0 -44.0 -1447719201 15601 -405637.2095825161 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.68 UU01Fkn1Fp2d 15601.0 33.0 2094164536 15601 586765.0703278229 -15858 -212256.0 -15601.0 158740.17500000002 -6432.0 -33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.782 UVo71u40can1RQJ0MTNPS 15601.0 -27.0 37567484 15601 10526.053236200616 -15858 173664.0 -15601.0 158740.17500000002 -6432.0 27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.583 UYC1dkb7n5YcmFAAbT2 15601.0 -31.0 -1357998994 15601 -380498.45727094426 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.357 Ubb7l 15601.0 -13.0 1179505870 15601 330486.3743345475 -15858 83616.0 -15601.0 158740.17500000002 -6432.0 13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.137 Uw8VcBX726537W7Nc32f5og1 15601.0 -30.0 -1617443296 15601 -453192.29363967496 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.259 V10T8Fo0d5HOeEM8ysObmPU4 15601.0 5.0 -184458103 15601 -51683.413561221634 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.324 V37l2corMwuEU0F2I4R 15601.0 -38.0 -1138820207 15601 -319086.6368730737 -15858 244416.0 -15601.0 158740.17500000002 -6432.0 38.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.982 V3L2j5d3q 15601.0 2.0 -400080827 15601 -112098.8587839731 -15858 -12864.0 -15601.0 158740.17500000002 -6432.0 -2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.627 V3e7tuWVX0gajjH6X8 15601.0 -32.0 -1473796341 15601 -412943.777248529 -15858 205824.0 -15601.0 158740.17500000002 -6432.0 32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.872 V3ySf 15601.0 7.0 1329225687 15601 372436.4491454189 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.32 V74j2j3Pc8OY7tl 15601.0 -21.0 -813809028 15601 -228021.58251611097 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.545 VHe5j0T1o21J806LMb8ay1 15601.0 -16.0 2066094917 15601 578900.2289156626 -15858 102912.0 -15601.0 158740.17500000002 -6432.0 16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.008 VNQIHXp5B80I 15601.0 -31.0 2006229754 15601 562126.5771924909 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.18 VT72k7T7C3N73lA10202 15601.0 57.0 -1393938237 15601 -390568.29279910336 -15858 -366624.0 -15601.0 158740.17500000002 -6432.0 -57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.121 VTDTuUp 15601.0 -6.0 281019305 15601 78738.94788456151 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.948 VXtbOP4eT6x2R05 15601.0 -58.0 2006398616 15601 562173.8907256934 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.422 Vc0uIW6g2n7P8f75JDUG6yN 15601.0 15.0 274226131 15601 76835.5648641076 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.998 VftK7455nP4C2fb42Guv7I0 15601.0 -40.0 1194316702 15601 334636.2291958532 -15858 257280.0 -15601.0 158740.17500000002 -6432.0 40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.504 VkLA5W0AsJ2v7X7 15601.0 -60.0 -1743144280 15601 -488412.5189128607 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.413 Vt166H6HUcc 15601.0 -32.0 -1864500604 15601 -522415.41159988794 -15858 205824.0 -15601.0 158740.17500000002 -6432.0 32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.14 W087uQpM6uJ2G5aB 15601.0 3.0 270888813 15601 75900.47996637714 -15858 -19296.0 -15601.0 158740.17500000002 -6432.0 -3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.429 W2i72S68FOFb0F0nq0s64Y 15601.0 -23.0 -287502046 15601 -80555.35051835248 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.906 W2o1wfC1yw61GkMU 15601.0 35.0 -419284856 15601 -117479.64583917064 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.697 W3QY4I4LLu6yX 15601.0 -6.0 19993315 15601 5601.9375175119085 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.189 W56kQ5UX8GHpErCJ0X0PiMg 15601.0 -54.0 1304453187 15601 365495.42925189127 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.747 W58KCRgshk2VVbX 15601.0 11.0 2062427061 15601 577872.5304006725 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.83 W5d6CKH 15601.0 -40.0 283135872 15601 79331.98991314093 -15858 257280.0 -15601.0 158740.17500000002 -6432.0 40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.028 W6d48516 15601.0 -18.0 -1310922279 15601 -367308.0075651443 -15858 115776.0 -15601.0 158740.17500000002 -6432.0 18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.91 W6w0xHjP 15601.0 -30.0 -532238997 15601 -149128.32642196695 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.127 WBuN1V4lP1858Dd3 15601.0 -27.0 934071980 15601 261718.12272345196 -15858 173664.0 -15601.0 158740.17500000002 -6432.0 27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.699 WLct4cIh2E3 15601.0 26.0 -2141336536 15601 -599982.217988232 -15858 -167232.0 -15601.0 158740.17500000002 -6432.0 -26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.752 We3u7Ih60iJx1U2kH 15601.0 -33.0 707803275 15601 198319.7744466237 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.327 Wkr033CN8bH7LI 15601.0 26.0 1747188649 15601 489545.7128047072 -15858 -167232.0 -15601.0 158740.17500000002 -6432.0 -26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.894 Wn8om1ooSVQSHxcg5F 15601.0 -34.0 -1225938733 15601 -343496.4228075091 -15858 218688.0 -15601.0 158740.17500000002 -6432.0 34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.244 Wpi2820uS61uJ7Gn7xu822MA 15601.0 58.0 805666814 15601 225740.2112636593 -15858 -373056.0 -15601.0 158740.17500000002 -6432.0 -58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.819 Wqx20H0G3di6k6KN54T 15601.0 -15.0 -1925755234 15601 -539578.378817596 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.027 X03I20xG6O6Agj1sSW0Si3F 15601.0 -15.0 1057122452 15601 296195.6996357523 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.202 X27PKe6lm1EmNx6tkEGfQ 15601.0 -31.0 926099123 15601 259484.203698515 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.459 X3E664G5sA 15601.0 -3.0 1649136404 15601 462072.4023536004 -15858 19296.0 -15601.0 158740.17500000002 -6432.0 3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.567 XKSgnqfq2Nn18h7GB6 15601.0 9.0 -1145489043 15601 -320955.1815634632 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.479 XO40KP8emk1B6Cf4O64 15601.0 -17.0 -1901567703 15601 -532801.2616979546 -15858 109344.0 -15601.0 158740.17500000002 -6432.0 17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.437 XP4nn8i47ipR3tsL4Bua 15601.0 0.0 1049949527 15601 294185.9139815074 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.24 XQkXKeHtwH7 15601.0 0.0 10989626 15601 3079.189128607453 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.801 XfVO17QmuH0yT1uQKCKvFtU 15601.0 23.0 -996165688 15601 -279116.19165032223 -15858 -147936.0 -15601.0 158740.17500000002 -6432.0 -23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.039 XgGvxqJL7ioDnQ4Bue6spR 15601.0 8.0 53656310 15601 15033.989913140937 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.116 XhyV0PF0kbo2yqP47G1M 15601.0 62.0 158194463 15601 44324.590361445786 -15858 -398784.0 -15601.0 158740.17500000002 -6432.0 -62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.754 Xp6aP 15601.0 49.0 46706681 15601 13086.769683384702 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.097 Xt8767d0562DL58h2yksj37 15601.0 52.0 -2125793790 15601 -595627.2877556739 -15858 -334464.0 -15601.0 158740.17500000002 -6432.0 -52.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.652 Xy07hchP3S32iW6YG3cn3 15601.0 41.0 NULL 15601 NULL -15858 -263712.0 -15601.0 158740.17500000002 -6432.0 -41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.085 Y20HmnH71A88V4 15601.0 60.0 1428011023 15601 400115.1647520314 -15858 -385920.0 -15601.0 158740.17500000002 -6432.0 -60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.603 Y6mE20661Ek61Mf7mYtCQV5 15601.0 -7.0 724330421 15601 202950.5242364808 -15858 45024.0 -15601.0 158740.17500000002 -6432.0 7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.707 Y71O40OUSsvw 15601.0 60.0 -657503893 15601 -184226.3639674979 -15858 -385920.0 -15601.0 158740.17500000002 -6432.0 -60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.52 Y7y6VtlL3yi6mWjRecJ60 15601.0 39.0 1748908827 15601 490027.69038946484 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.285 YA630l4W6 15601.0 55.0 -1559932440 15601 -437078.2964415803 -15858 -353760.0 -15601.0 158740.17500000002 -6432.0 -55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.507 YN4su 15601.0 -35.0 1779870001 15601 498702.7181283273 -15858 225120.0 -15601.0 158740.17500000002 -6432.0 35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.205 YY83652Ij 15601.0 -6.0 -1761560547 15601 -493572.58251611097 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.954 YaD841mDwJGjwjRgGtNU2 15601.0 -35.0 -994591123 15601 -278675.0134491454 -15858 225120.0 -15601.0 158740.17500000002 -6432.0 35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.614 Ydu8G8I0720hU85E53t 15601.0 27.0 -2043827141 15601 -572661.0089660969 -15858 -173664.0 -15601.0 158740.17500000002 -6432.0 -27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.218 YfGW4JvD 15601.0 36.0 445347927 15601 124782.27150462315 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.649 YfL70dofbs6lhgKMX8kGsJ 15601.0 -47.0 -493471535 15601 -138266.05071448584 -15858 302304.0 -15601.0 158740.17500000002 -6432.0 47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.098 Yfj785H813DA8 15601.0 44.0 -1144200805 15601 -320594.2294760437 -15858 -283008.0 -15601.0 158740.17500000002 -6432.0 -44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.525 YiKM5PHS02HelmT2C 15601.0 -15.0 364559164 15601 102146.02521714766 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.292 Ym27dR7t0Txx8Syq40cdvJD5 15601.0 -45.0 -1022657523 15601 -286538.95292799105 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.164 YoE3rCoae83u101q 15601.0 -21.0 142487106 15601 39923.53768562622 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 PREHOOK: query: -- TargetTypeClasses: Double, String, Long -- Functions: StDev, Sum, VarP, Count -- ArithmeticOps: Remainder, Divide, Subtract @@ -4038,6 +1795,7 @@ WHERE (((csmallint >= -257)) AND (ctinyint <= cint)))) GROUP BY csmallint ORDER BY csmallint +LIMIT 20 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: Double, String, Long -- Functions: StDev, Sum, VarP, Count @@ -4062,6 +1820,7 @@ WHERE (((csmallint >= -257)) AND (ctinyint <= cint)))) GROUP BY csmallint ORDER BY csmallint +LIMIT 20 POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage @@ -4123,18 +1882,21 @@ STAGE PLANS: expressions: KEY.reducesinkkey0 (type: smallint), VALUE._col0 (type: int), VALUE._col1 (type: double), VALUE._col2 (type: double), VALUE._col3 (type: bigint), VALUE._col4 (type: double), VALUE._col5 (type: int), VALUE._col6 (type: double), VALUE._col7 (type: int), VALUE._col8 (type: bigint), VALUE._col9 (type: bigint) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1251 Data size: 38405 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 1251 Data size: 38405 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Execution mode: vectorized Stage: Stage-0 Fetch Operator - limit: -1 + limit: 20 Processor Tree: ListSink @@ -4156,6 +1918,7 @@ WHERE (((csmallint >= -257)) AND (ctinyint <= cint)))) GROUP BY csmallint ORDER BY csmallint +LIMIT 20 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -4177,6 +1940,7 @@ WHERE (((csmallint >= -257)) AND (ctinyint <= cint)))) GROUP BY csmallint ORDER BY csmallint +LIMIT 20 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -4200,1437 +1964,6 @@ POSTHOOK: Input: default@alltypesorc -49 -49 0.0 0.028346938775510203 NULL NULL 49 0.0 -49 1 89011 -42 -42 0.0 0.03307142857142857 NULL NULL 42 0.0 -42 1 89011 -29 -29 0.0 0.04789655172413793 NULL NULL 29 0.0 -29 1 89011 --14 -14 0.0 0.09921428571428571 NULL NULL 14 0.0 -14 1 89011 -7 7 0.0 -0.19842857142857143 NULL NULL -7 0.0 7 1 89011 -8 8 0.0 -0.173625 NULL NULL -8 156.25 8 2 89012 -10 10 0.0 -0.1389 NULL NULL -10 0.0 10 1 89011 -19 19 0.0 -0.07310526315789474 NULL NULL -19 0.0 19 1 89011 -20 20 0.0 -0.06945 NULL NULL -20 0.0 20 1 89011 -25 25 0.0 -0.05556 NULL NULL -25 0.0 25 1 89011 -32 32 0.0 -0.04340625 NULL NULL -32 0.0 32 1 89011 -37 37 0.0 -0.03754054054054054 NULL NULL -37 0.0 37 1 89011 -41 41 0.0 -0.03387804878048781 NULL NULL -41 0.0 41 1 89011 -56 56 0.0 -0.02480357142857143 NULL NULL -56 0.0 56 1 89011 -72 72 0.0 -0.019291666666666665 NULL NULL -72 0.0 72 1 89011 -74 74 0.0 -0.01877027027027027 NULL NULL -74 16.0 74 2 89012 -77 2 0.0 -0.01803896103896104 NULL NULL -2 0.0 2 1 89011 -94 19 0.0 -0.014776595744680852 NULL NULL -19 0.0 19 1 89011 -99 24 0.0 -0.01403030303030303 NULL NULL -24 0.0 24 1 89011 -102 27 0.0 -0.01361764705882353 NULL NULL -27 0.0 27 1 89011 -130 55 0.0 -0.010684615384615384 NULL NULL -55 0.0 55 1 89011 -163 13 0.0 -0.008521472392638037 NULL NULL -13 0.0 13 1 89011 -181 31 0.0 -0.007674033149171271 NULL NULL -31 0.0 31 1 89011 -197 47 0.0 -0.007050761421319797 NULL NULL -47 256.88888888888886 47 6 89016 -199 49 0.0 -0.006979899497487437 NULL NULL -49 0.0 49 1 89011 -225 0 0.0 -0.006173333333333334 NULL NULL 0 0.0 0 1 89011 -239 14 0.0 -0.005811715481171548 NULL NULL -14 0.0 14 1 89011 -259 34 0.0 -0.005362934362934363 NULL NULL -34 0.0 34 1 89011 -265 40 0.0 -0.005241509433962264 NULL NULL -40 0.0 40 1 89011 -278 53 0.0 -0.004996402877697842 NULL NULL -53 0.0 53 1 89011 -283 58 0.0 -0.004908127208480565 NULL NULL -58 0.0 58 1 89011 -287 62 0.0 -0.0048397212543554 NULL NULL -62 0.0 62 1 89011 -306 6 0.0 -0.0045392156862745095 NULL NULL -6 0.0 6 1 89011 -308 8 0.0 -0.00450974025974026 NULL NULL -8 0.0 8 1 89011 -315 15 0.0 -0.004409523809523809 NULL NULL -15 0.0 15 1 89011 -340 40 0.0 -0.0040852941176470585 NULL NULL -40 0.0 40 1 89011 -359 59 0.0 -0.0038690807799442897 NULL NULL -59 64.0 59 2 89012 -363 63 0.0 -0.0038264462809917354 NULL NULL -63 0.0 63 1 89011 -367 67 0.0 -0.003784741144414169 NULL NULL -67 0.0 67 1 89011 -373 73 0.0 -0.0037238605898123325 NULL NULL -73 0.0 73 1 89011 -377 2 0.0 -0.0036843501326259947 NULL NULL -2 0.0 2 1 89011 -390 15 0.0 -0.0035615384615384615 NULL NULL -15 0.0 15 1 89011 -395 20 0.0 -0.0035164556962025318 NULL NULL -20 12.25 20 2 89012 -411 36 0.0 -0.0033795620437956204 NULL NULL -36 0.0 36 1 89011 -436 61 0.0 -0.0031857798165137617 NULL NULL -61 0.0 61 1 89011 -447 72 0.0 -0.0031073825503355706 NULL NULL -72 0.0 72 1 89011 -465 15 0.0 -0.0029870967741935485 NULL NULL -15 0.0 15 1 89011 -467 17 0.0 -0.002974304068522484 NULL NULL -17 0.0 17 1 89011 -486 36 0.0 -0.002858024691358025 NULL NULL -36 0.0 36 1 89011 -510 60 0.0 -0.002723529411764706 NULL NULL -60 0.0 60 1 89011 -516 66 0.0 -0.002691860465116279 NULL NULL -66 0.0 66 1 89011 -532 7 0.0 -0.0026109022556390976 NULL NULL -7 0.0 7 1 89011 -533 8 0.0 -0.0026060037523452156 NULL NULL -8 0.0 8 1 89011 -546 21 0.0 -0.002543956043956044 NULL NULL -21 256.0 21 2 89012 -547 22 0.0 -0.0025393053016453384 NULL NULL -22 0.0 22 1 89011 -557 32 0.0 -0.002493716337522442 NULL NULL -32 12.25 32 2 89012 -574 49 0.0 -0.0024198606271777 NULL NULL -49 0.0 49 1 89011 -594 69 0.0 -0.0023383838383838383 NULL NULL -69 0.0 69 1 89011 -611 11 0.0 -0.0022733224222585926 NULL NULL -11 0.0 11 1 89011 -612 12 0.0 -0.0022696078431372548 NULL NULL -12 0.0 12 1 89011 -645 45 0.0 -0.0021534883720930233 NULL NULL -45 0.0 45 1 89011 -650 50 0.0 -0.002136923076923077 NULL NULL -50 0.0 50 1 89011 -659 59 0.0 -0.0021077389984825493 NULL NULL -59 0.0 59 1 89011 -682 7 0.0 -0.0020366568914956013 NULL NULL -7 0.0 7 1 89011 -726 51 0.0 -0.0019132231404958677 NULL NULL -51 0.0 51 1 89011 -762 12 0.0 -0.0018228346456692914 NULL NULL -12 0.0 12 1 89011 -767 17 0.0 -0.0018109517601043025 NULL NULL -17 0.0 17 1 89011 -778 28 0.0 -0.0017853470437017994 NULL NULL -28 0.0 28 1 89011 -803 53 0.0 -0.001729763387297634 NULL NULL -53 25.0 53 2 89012 -834 9 0.0 -0.0016654676258992807 NULL NULL -9 0.0 9 1 89011 -838 13 0.0 -0.0016575178997613365 NULL NULL -13 0.0 13 1 89011 -859 34 0.0 -0.0016169965075669382 NULL NULL -34 0.0 34 1 89011 -865 40 0.0 -0.0016057803468208093 NULL NULL -40 0.0 40 1 89011 -876 51 0.0 -0.0015856164383561645 NULL NULL -51 0.0 51 1 89011 -893 68 0.0 -0.001555431131019037 NULL NULL -68 0.0 68 1 89011 -899 74 0.0 -0.0015450500556173526 NULL NULL -74 0.0 74 1 89011 -909 9 0.0 -0.001528052805280528 NULL NULL -9 0.0 9 1 89011 -960 60 0.0 -0.001446875 NULL NULL -60 0.0 60 1 89011 -987 12 0.0 -0.0014072948328267478 NULL NULL -12 0.0 12 1 89011 -995 20 0.0 -0.0013959798994974874 NULL NULL -20 0.0 20 1 89011 -997 22 0.0 -0.0013931795386158475 NULL NULL -22 0.0 22 1 89011 -1028 53 0.0 -0.0013511673151750973 NULL NULL -53 0.0 53 1 89011 -1049 74 0.0 -0.0013241182078169685 NULL NULL -74 0.0 74 1 89011 -1050 0 0.0 -0.0013228571428571428 NULL NULL 0 600.25 0 2 89012 -1083 33 0.0 -0.0012825484764542937 NULL NULL -33 0.0 33 1 89011 -1091 41 0.0 -0.0012731439046746104 NULL NULL -41 0.0 41 1 89011 -1097 47 0.0 -0.0012661804922515952 NULL NULL -47 0.0 47 1 89011 -1111 61 0.0 -0.0012502250225022503 NULL NULL -61 0.0 61 1 89011 -1121 71 0.0 -0.0012390722569134702 NULL NULL -71 0.0 71 1 89011 -1126 1 0.0 -0.001233570159857904 NULL NULL -1 0.0 1 1 89011 -1128 3 0.0 -0.0012313829787234042 NULL NULL -3 0.0 3 1 89011 -1135 10 0.0 -0.0012237885462555067 NULL NULL -10 0.0 10 1 89011 -1148 23 0.0 -0.00120993031358885 NULL NULL -23 0.0 23 1 89011 -1151 26 0.0 -0.001206776715899218 NULL NULL -26 342.25 26 2 89012 -1196 71 0.0 -0.001161371237458194 NULL NULL -71 0.0 71 1 89011 -1202 2 0.0 -0.0011555740432612313 NULL NULL -2 0.0 2 1 89011 -1206 6 0.0 -0.0011517412935323384 NULL NULL -6 0.0 6 1 89011 -1228 28 0.0 -0.0011311074918566775 NULL NULL -28 0.0 28 1 89011 -1232 32 0.0 -0.001127435064935065 NULL NULL -32 0.0 32 1 89011 -1246 46 0.0 -0.0011147672552166935 NULL NULL -46 0.0 46 1 89011 -1268 68 0.0 -0.0010954258675078864 NULL NULL -68 0.0 68 1 89011 -1270 70 0.0 -0.001093700787401575 NULL NULL -70 0.0 70 1 89011 -1274 74 0.0 -0.0010902668759811616 NULL NULL -74 0.0 74 1 89011 -1276 1 0.0 -0.0010885579937304076 NULL NULL -1 0.0 1 1 89011 -1282 7 0.0 -0.0010834633385335413 NULL NULL -7 0.0 7 1 89011 -1289 14 0.0 -0.001077579519006982 NULL NULL -14 0.0 14 1 89011 -1307 32 0.0 -0.0010627390971690894 NULL NULL -32 0.0 32 1 89011 -1310 35 0.0 -0.0010603053435114503 NULL NULL -35 0.0 35 1 89011 -1345 70 0.0 -0.0010327137546468402 NULL NULL -70 0.0 70 1 89011 -1346 71 0.0 -0.0010319465081723626 NULL NULL -71 0.0 71 1 89011 -1356 6 0.0 -0.0010243362831858407 NULL NULL -6 0.0 6 1 89011 -1358 8 0.0 -0.0010228276877761414 NULL NULL -8 0.0 8 1 89011 -1369 19 0.0 -0.001014609203798393 NULL NULL -19 0.0 19 1 89011 -1374 24 0.0 -0.0010109170305676856 NULL NULL -24 0.0 24 1 89011 -1399 49 0.0 -9.928520371694067E-4 NULL NULL -49 0.0 49 1 89011 -1416 66 0.0 -9.809322033898305E-4 NULL NULL -66 0.0 66 1 89011 -1419 69 0.0 -9.788583509513743E-4 NULL NULL -69 0.0 69 1 89011 -1435 10 0.0 -9.679442508710802E-4 NULL NULL -10 0.0 10 1 89011 -1437 12 0.0 -9.665970772442589E-4 NULL NULL -12 0.0 12 1 89011 -1444 19 0.0 -9.619113573407202E-4 NULL NULL -19 0.0 19 1 89011 -1455 30 0.0 -9.54639175257732E-4 NULL NULL -30 0.0 30 1 89011 -1458 33 0.0 -9.526748971193415E-4 NULL NULL -33 0.0 33 1 89011 -1464 39 0.0 -9.487704918032787E-4 NULL NULL -39 0.0 39 1 89011 -1467 42 0.0 -9.468302658486707E-4 NULL NULL -42 0.0 42 1 89011 -1475 50 0.0 -9.416949152542373E-4 NULL NULL -50 0.0 50 1 89011 -1496 71 0.0 -9.28475935828877E-4 NULL NULL -71 0.0 71 1 89011 -1502 2 0.0 -9.247669773635154E-4 NULL NULL -2 0.0 2 1 89011 -1505 5 0.0 -9.229235880398671E-4 NULL NULL -5 0.0 5 1 89011 -1512 12 0.0 -9.186507936507937E-4 NULL NULL -12 0.0 12 1 89011 -1515 15 0.0 -9.168316831683168E-4 NULL NULL -15 0.0 15 1 89011 -1542 42 0.0 -9.007782101167315E-4 NULL NULL -42 0.0 42 1 89011 -1546 46 0.0 -8.984476067270376E-4 NULL NULL -46 0.0 46 1 89011 -1556 56 0.0 -8.926735218508997E-4 NULL NULL -56 0.0 56 1 89011 -1562 62 0.0 -8.892445582586427E-4 NULL NULL -62 0.0 62 1 89011 -1567 67 0.0 -8.864071474154435E-4 NULL NULL -67 0.0 67 1 89011 -1577 2 0.0 -8.807863031071655E-4 NULL NULL -2 0.0 2 1 89011 -1600 25 0.0 -8.68125E-4 NULL NULL -25 0.0 25 1 89011 -1603 28 0.0 -8.66500311915159E-4 NULL NULL -28 0.0 28 1 89011 -1626 51 0.0 -8.542435424354244E-4 NULL NULL -51 0.0 51 1 89011 -1627 52 0.0 -8.537185003073141E-4 NULL NULL -52 0.0 52 1 89011 -1634 59 0.0 -8.500611995104039E-4 NULL NULL -59 0.0 59 1 89011 -1639 64 0.0 -8.474679682733375E-4 NULL NULL -64 0.0 64 1 89011 -1640 65 0.0 -8.469512195121952E-4 NULL NULL -65 0.0 65 1 89011 -1642 67 0.0 -8.459196102314251E-4 NULL NULL -67 0.0 67 1 89011 -1653 3 0.0 -8.402903811252269E-4 NULL NULL -3 0.0 3 1 89011 -1658 8 0.0 -8.377563329312425E-4 NULL NULL -8 0.0 8 1 89011 -1660 10 0.0 -8.367469879518073E-4 NULL NULL -10 0.0 10 1 89011 -1674 24 0.0 -8.297491039426523E-4 NULL NULL -24 0.0 24 1 89011 -1685 35 0.0 -8.243323442136499E-4 NULL NULL -35 0.0 35 1 89011 -1703 53 0.0 -8.15619495008808E-4 NULL NULL -53 0.0 53 1 89011 -1706 56 0.0 -8.141852286049238E-4 NULL NULL -56 0.0 56 1 89011 -1734 9 0.0 -8.01038062283737E-4 NULL NULL -9 0.0 9 1 89011 -1736 11 0.0 -8.001152073732719E-4 NULL NULL -11 0.0 11 1 89011 -1743 18 0.0 -7.969018932874355E-4 NULL NULL -18 0.0 18 1 89011 -1746 21 0.0 -7.955326460481099E-4 NULL NULL -21 0.0 21 1 89011 -1752 27 0.0 -7.928082191780822E-4 NULL NULL -27 0.0 27 1 89011 -1764 39 0.0 -7.874149659863946E-4 NULL NULL -39 462.25 39 2 89012 -1781 56 0.0 -7.798989331836047E-4 NULL NULL -56 0.0 56 1 89011 -1785 60 0.0 -7.781512605042017E-4 NULL NULL -60 0.0 60 1 89011 -1809 9 0.0 -7.678275290215589E-4 NULL NULL -9 0.0 9 1 89011 -1813 13 0.0 -7.661334804191947E-4 NULL NULL -13 0.0 13 1 89011 -1815 15 0.0 -7.652892561983471E-4 NULL NULL -15 0.0 15 1 89011 -1822 22 0.0 -7.623490669593852E-4 NULL NULL -22 0.0 22 1 89011 -1824 24 0.0 -7.615131578947369E-4 NULL NULL -24 0.0 24 1 89011 -1843 43 0.0 -7.5366250678242E-4 NULL NULL -43 0.0 43 1 89011 -1845 45 0.0 -7.528455284552846E-4 NULL NULL -45 0.0 45 1 89011 -1850 50 0.0 -7.508108108108108E-4 NULL NULL -50 0.0 50 1 89011 -1888 13 0.0 -7.356991525423729E-4 NULL NULL -13 0.0 13 1 89011 -1901 26 0.0 -7.306680694371384E-4 NULL NULL -26 0.0 26 1 89011 -1923 48 0.0 -7.223088923556943E-4 NULL NULL -48 0.0 48 1 89011 -1931 56 0.0 -7.193164163645779E-4 NULL NULL -56 361.0 56 2 89012 -1947 72 0.0 -7.134052388289676E-4 NULL NULL -72 0.0 72 1 89011 -1951 1 0.0 -7.119425935417735E-4 NULL NULL -1 0.0 1 1 89011 -1965 15 0.0 -7.068702290076336E-4 NULL NULL -15 0.0 15 1 89011 -1967 17 0.0 -7.061514997458058E-4 NULL NULL -17 0.0 17 1 89011 -1979 29 0.0 -7.018696311268317E-4 NULL NULL -29 0.0 29 1 89011 -2000 50 0.0 -6.945E-4 NULL NULL -50 0.0 50 1 89011 -2006 56 0.0 -6.924227318045863E-4 NULL NULL -56 0.0 56 1 89011 -2007 57 0.0 -6.920777279521674E-4 NULL NULL -57 0.0 57 1 89011 -2011 61 0.0 -6.907011437095972E-4 NULL NULL -61 930.25 61 2 89012 -2014 64 0.0 -6.896722939424032E-4 NULL NULL -64 0.0 64 1 89011 -2015 65 0.0 -6.893300248138958E-4 NULL NULL -65 0.0 65 1 89011 -2021 71 0.0 -6.872835230084117E-4 NULL NULL -71 0.0 71 1 89011 -2075 50 0.0 -6.693975903614458E-4 NULL NULL -50 0.0 50 1 89011 -2078 53 0.0 -6.684311838306064E-4 NULL NULL -53 0.0 53 1 89011 -2109 9 0.0 -6.58605974395448E-4 NULL NULL -9 0.0 9 1 89011 -2112 12 0.0 -6.576704545454545E-4 NULL NULL -12 0.0 12 1 89011 -2119 19 0.0 -6.554978763567721E-4 NULL NULL -19 0.0 19 1 89011 -2123 23 0.0 -6.542628356099859E-4 NULL NULL -23 0.0 23 1 89011 -2157 57 0.0 -6.439499304589708E-4 NULL NULL -57 0.0 57 1 89011 -2164 64 0.0 -6.418669131238447E-4 NULL NULL -64 0.0 64 1 89011 -2166 66 0.0 -6.412742382271468E-4 NULL NULL -66 0.0 66 1 89011 -2170 70 0.0 -6.400921658986175E-4 NULL NULL -70 0.0 70 1 89011 -2171 71 0.0 -6.397973284200829E-4 NULL NULL -71 0.0 71 1 89011 -2176 1 0.0 -6.38327205882353E-4 NULL NULL -1 0.0 1 1 89011 -2192 17 0.0 -6.336678832116788E-4 NULL NULL -17 0.0 17 1 89011 -2201 26 0.0 -6.310767832803272E-4 NULL NULL -26 0.0 26 1 89011 -2208 33 0.0 -6.290760869565217E-4 NULL NULL -33 0.0 33 1 89011 -2211 36 0.0 -6.282225237449118E-4 NULL NULL -36 0.0 36 1 89011 -2213 38 0.0 -6.276547672842296E-4 NULL NULL -38 0.0 38 1 89011 -2216 41 0.0 -6.268050541516245E-4 NULL NULL -41 0.0 41 1 89011 -2227 52 0.0 -6.237090255949708E-4 NULL NULL -52 0.0 52 1 89011 -2234 59 0.0 -6.217547000895255E-4 NULL NULL -59 0.0 59 1 89011 -2242 67 0.0 -6.195361284567351E-4 NULL NULL -67 0.0 67 1 89011 -2251 1 0.0 -6.170590848511773E-4 NULL NULL -1 0.0 1 1 89011 -2269 19 0.0 -6.121639488761569E-4 NULL NULL -19 0.0 19 1 89011 -2272 22 0.0 -6.113556338028169E-4 NULL NULL -22 0.0 22 1 89011 -2280 30 0.0 -6.092105263157895E-4 NULL NULL -30 0.0 30 1 89011 -2284 34 0.0 -6.081436077057794E-4 NULL NULL -34 0.0 34 1 89011 -2308 58 0.0 -6.018197573656846E-4 NULL NULL -58 0.0 58 1 89011 -2310 60 0.0 -6.012987012987013E-4 NULL NULL -60 0.0 60 1 89011 -2316 66 0.0 -5.997409326424871E-4 NULL NULL -66 0.0 66 1 89011 -2319 69 0.0 -5.989650711513584E-4 NULL NULL -69 0.0 69 1 89011 -2322 72 0.0 -5.981912144702843E-4 NULL NULL -72 0.0 72 1 89011 -2339 14 0.0 -5.938435228730227E-4 NULL NULL -14 0.0 14 1 89011 -2353 28 0.0 -5.903102422439439E-4 NULL NULL -28 225.0 28 2 89012 -2359 34 0.0 -5.888088172954642E-4 NULL NULL -34 0.0 34 1 89011 -2372 47 0.0 -5.855817875210792E-4 NULL NULL -47 0.0 47 1 89011 -2384 59 0.0 -5.826342281879195E-4 NULL NULL -59 0.0 59 1 89011 -2389 64 0.0 -5.814148179154458E-4 NULL NULL -64 0.0 64 1 89011 -2396 71 0.0 -5.797161936560935E-4 NULL NULL -71 0.0 71 1 89011 -2403 3 0.0 -5.780274656679151E-4 NULL NULL -3 0.0 3 1 89011 -2404 4 0.0 -5.777870216306157E-4 NULL NULL -4 0.0 4 1 89011 -2407 7 0.0 -5.770668882426257E-4 NULL NULL -7 0.0 7 1 89011 -2443 43 0.0 -5.685632419156775E-4 NULL NULL -43 0.0 43 1 89011 -2445 45 0.0 -5.680981595092025E-4 NULL NULL -45 0.0 45 1 89011 -2448 48 0.0 -5.674019607843137E-4 NULL NULL -48 0.0 48 1 89011 -2452 52 0.0 -5.664763458401305E-4 NULL NULL -52 0.0 52 1 89011 -2479 4 0.0 -5.603065752319483E-4 NULL NULL -4 0.0 4 1 89011 -2488 13 0.0 -5.582797427652733E-4 NULL NULL -13 0.0 13 1 89011 -2492 17 0.0 -5.573836276083467E-4 NULL NULL -17 0.0 17 1 89011 -2494 19 0.0 -5.569366479550922E-4 NULL NULL -19 0.0 19 1 89011 -2496 21 0.0 -5.564903846153847E-4 NULL NULL -21 600.25 21 2 89012 -2497 22 0.0 -5.562675210252303E-4 NULL NULL -22 0.0 22 1 89011 -2508 33 0.0 -5.538277511961722E-4 NULL NULL -33 0.0 33 1 89011 -2541 66 0.0 -5.466351829988194E-4 NULL NULL -66 0.0 66 1 89011 -2578 28 0.0 -5.38789759503491E-4 NULL NULL -28 0.0 28 1 89011 -2580 30 0.0 -5.383720930232558E-4 NULL NULL -30 0.0 30 1 89011 -2582 32 0.0 -5.379550735863672E-4 NULL NULL -32 0.0 32 1 89011 -2585 35 0.0 -5.37330754352031E-4 NULL NULL -35 0.0 35 1 89011 -2592 42 0.0 -5.358796296296296E-4 NULL NULL -42 0.0 42 1 89011 -2594 44 0.0 -5.354664610639938E-4 NULL NULL -44 0.0 44 1 89011 -2601 51 0.0 -5.340253748558247E-4 NULL NULL -51 0.0 51 1 89011 -2610 60 0.0 -5.32183908045977E-4 NULL NULL -60 0.0 60 1 89011 -2611 61 0.0 -5.319800842589047E-4 NULL NULL -61 0.0 61 1 89011 -2617 67 0.0 -5.30760412686282E-4 NULL NULL -67 0.0 67 1 89011 -2643 18 0.0 -5.255391600454029E-4 NULL NULL -18 0.0 18 1 89011 -2657 32 0.0 -5.227700414000753E-4 NULL NULL -32 0.0 32 1 89011 -2666 41 0.0 -5.210052513128282E-4 NULL NULL -41 0.0 41 1 89011 -2676 51 0.0 -5.190582959641256E-4 NULL NULL -51 0.0 51 1 89011 -2696 71 0.0 -5.152077151335311E-4 NULL NULL -71 0.0 71 1 89011 -2698 73 0.0 -5.148257968865827E-4 NULL NULL -73 0.0 73 1 89011 -2700 0 0.0 -5.144444444444444E-4 NULL NULL 0 0.0 0 1 89011 -2707 7 0.0 -5.131141485038789E-4 NULL NULL -7 0.0 7 1 89011 -2710 10 0.0 -5.125461254612546E-4 NULL NULL -10 0.0 10 1 89011 -2719 19 0.0 -5.108495770503862E-4 NULL NULL -19 0.0 19 1 89011 -2752 52 0.0 -5.047238372093023E-4 NULL NULL -52 0.0 52 1 89011 -2775 0 0.0 -5.005405405405406E-4 NULL NULL 0 0.0 0 1 89011 -2804 29 0.0 -4.953637660485022E-4 NULL NULL -29 0.0 29 1 89011 -2814 39 0.0 -4.936034115138592E-4 NULL NULL -39 0.0 39 1 89011 -2820 45 0.0 -4.925531914893618E-4 NULL NULL -45 0.0 45 1 89011 -2824 49 0.0 -4.918555240793201E-4 NULL NULL -49 0.0 49 1 89011 -2826 51 0.0 -4.915074309978769E-4 NULL NULL -51 0.0 51 1 89011 -2844 69 0.0 -4.883966244725738E-4 NULL NULL -69 0.0 69 1 89011 -2915 65 0.0 -4.7650085763293313E-4 NULL NULL -65 0.0 65 1 89011 -2921 71 0.0 -4.755220814789456E-4 NULL NULL -71 0.0 71 1 89011 -2922 72 0.0 -4.753593429158111E-4 NULL NULL -72 1521.0 72 2 89012 -2925 0 0.0 -4.748717948717949E-4 NULL NULL 0 182.25 0 2 89012 -2928 3 0.0 -4.7438524590163935E-4 NULL NULL -3 0.0 3 1 89011 -2933 8 0.0 -4.735765427889533E-4 NULL NULL -8 0.0 8 1 89011 -2969 44 0.0 -4.6783428763893565E-4 NULL NULL -44 0.0 44 1 89011 -2972 47 0.0 -4.673620457604307E-4 NULL NULL -47 0.0 47 1 89011 -2974 49 0.0 -4.670477471418964E-4 NULL NULL -49 0.0 49 1 89011 -2986 61 0.0 -4.651707970529136E-4 NULL NULL -61 0.0 61 1 89011 -2997 72 0.0 -4.6346346346346347E-4 NULL NULL -72 0.0 72 1 89011 -3018 18 0.0 -4.602385685884692E-4 NULL NULL -18 0.0 18 1 89011 -3030 30 0.0 -4.584158415841584E-4 NULL NULL -30 484.0 30 2 89012 -3058 58 0.0 -4.542184434270765E-4 NULL NULL -58 0.0 58 1 89011 -3066 66 0.0 -4.5303326810176126E-4 NULL NULL -66 0.0 66 1 89011 -3088 13 0.0 -4.498056994818653E-4 NULL NULL -13 0.0 13 1 89011 -3090 15 0.0 -4.4951456310679614E-4 NULL NULL -15 0.0 15 1 89011 -3110 35 0.0 -4.4662379421221867E-4 NULL NULL -35 0.0 35 1 89011 -3116 41 0.0 -4.457637997432606E-4 NULL NULL -41 0.0 41 1 89011 -3119 44 0.0 -4.4533504328310355E-4 NULL NULL -44 1.0 44 2 89012 -3139 64 0.0 -4.424976107040459E-4 NULL NULL -64 0.0 64 1 89011 -3140 65 0.0 -4.4235668789808916E-4 NULL NULL -65 0.0 65 1 89011 -3145 70 0.0 -4.4165341812400636E-4 NULL NULL -70 0.0 70 1 89011 -3152 2 0.0 -4.406725888324873E-4 NULL NULL -2 0.0 2 1 89011 -3168 18 0.0 -4.384469696969697E-4 NULL NULL -18 0.0 18 1 89011 -3192 42 0.0 -4.3515037593984965E-4 NULL NULL -42 0.0 42 1 89011 -3199 49 0.0 -4.341981869334167E-4 NULL NULL -49 0.0 49 1 89011 -3208 58 0.0 -4.3298004987531174E-4 NULL NULL -58 0.0 58 1 89011 -3211 61 0.0 -4.3257552164434755E-4 NULL NULL -61 0.0 61 1 89011 -3220 70 0.0 -4.313664596273292E-4 NULL NULL -70 0.0 70 1 89011 -3229 4 0.0 -4.3016413750387116E-4 NULL NULL -4 0.0 4 1 89011 -3236 11 0.0 -4.292336217552534E-4 NULL NULL -11 0.0 11 1 89011 -3248 23 0.0 -4.276477832512315E-4 NULL NULL -23 420.25 23 2 89012 -3256 31 0.0 -4.265970515970516E-4 NULL NULL -31 0.0 31 1 89011 -3333 33 0.0 -4.1674167416741676E-4 NULL NULL -33 0.0 33 1 89011 -3349 49 0.0 -4.14750671842341E-4 NULL NULL -49 0.0 49 1 89011 -3357 57 0.0 -4.1376228775692585E-4 NULL NULL -57 0.0 57 1 89011 -3366 66 0.0 -4.126559714795009E-4 NULL NULL -66 0.0 66 1 89011 -3377 2 0.0 -4.1131181522061E-4 NULL NULL -2 0.0 2 1 89011 -3406 31 0.0 -4.07809747504404E-4 NULL NULL -31 0.0 31 1 89011 -3437 62 0.0 -4.0413151003782367E-4 NULL NULL -62 0.0 62 1 89011 -3440 65 0.0 -4.037790697674419E-4 NULL NULL -65 0.0 65 1 89011 -3446 71 0.0 -4.030760301799188E-4 NULL NULL -71 0.0 71 1 89011 -3510 60 0.0 -3.957264957264957E-4 NULL NULL -60 0.0 60 1 89011 -3519 69 0.0 -3.9471440750213127E-4 NULL NULL -69 0.0 69 1 89011 -3520 70 0.0 -3.946022727272727E-4 NULL NULL -70 81.0 70 2 89012 -3522 72 0.0 -3.9437819420783647E-4 NULL NULL -72 0.0 72 1 89011 -3538 13 0.0 -3.9259468626342566E-4 NULL NULL -13 0.0 13 1 89011 -3555 30 0.0 -3.907172995780591E-4 NULL NULL -30 0.0 30 1 89011 -3571 46 0.0 -3.8896667600112013E-4 NULL NULL -46 0.0 46 1 89011 -3601 1 0.0 -3.857261871702305E-4 NULL NULL -1 0.0 1 1 89011 -3613 13 0.0 -3.8444505950733463E-4 NULL NULL -13 0.0 13 1 89011 -3617 17 0.0 -3.8401990599944705E-4 NULL NULL -17 0.0 17 1 89011 -3630 30 0.0 -3.8264462809917355E-4 NULL NULL -30 0.0 30 1 89011 -3666 66 0.0 -3.7888707037643206E-4 NULL NULL -66 0.0 66 1 89011 -3684 9 0.0 -3.770358306188925E-4 NULL NULL -9 0.0 9 1 89011 -3694 19 0.0 -3.7601515971846236E-4 NULL NULL -19 0.0 19 1 89011 -3708 33 0.0 -3.7459546925566343E-4 NULL NULL -33 0.0 33 1 89011 -3722 47 0.0 -3.7318645889306825E-4 NULL NULL -47 0.0 47 1 89011 -3725 50 0.0 -3.7288590604026846E-4 NULL NULL -50 0.0 50 1 89011 -3730 55 0.0 -3.7238605898123325E-4 NULL NULL -55 0.0 55 1 89011 -3737 62 0.0 -3.716885202033717E-4 NULL NULL -62 0.0 62 1 89011 -3768 18 0.0 -3.6863057324840767E-4 NULL NULL -18 0.0 18 1 89011 -3782 32 0.0 -3.672659968270756E-4 NULL NULL -32 0.0 32 1 89011 -3794 44 0.0 -3.661043753294676E-4 NULL NULL -44 0.0 44 1 89011 -3797 47 0.0 -3.6581511719778774E-4 NULL NULL -47 0.0 47 1 89011 -3799 49 0.0 -3.6562253224532774E-4 NULL NULL -49 0.0 49 1 89011 -3805 55 0.0 -3.650459921156373E-4 NULL NULL -55 1.0 55 2 89012 -3815 65 0.0 -3.6408912188728705E-4 NULL NULL -65 0.0 65 1 89011 -3817 67 0.0 -3.638983494891276E-4 NULL NULL -67 0.0 67 1 89011 -3827 2 0.0 -3.6294747844264436E-4 NULL NULL -2 0.0 2 1 89011 -3834 9 0.0 -3.6228482003129893E-4 NULL NULL -9 0.0 9 1 89011 -3846 21 0.0 -3.6115444617784714E-4 NULL NULL -21 0.0 21 1 89011 -3847 22 0.0 -3.610605666753314E-4 NULL NULL -22 0.0 22 1 89011 -3855 30 0.0 -3.603112840466926E-4 NULL NULL -30 0.0 30 1 89011 -3856 31 0.0 -3.6021784232365145E-4 NULL NULL -31 0.0 31 1 89011 -3874 49 0.0 -3.5854414042333504E-4 NULL NULL -49 0.0 49 1 89011 -3885 60 0.0 -3.575289575289575E-4 NULL NULL -60 0.0 60 1 89011 -3897 72 0.0 -3.5642802155504236E-4 NULL NULL -72 0.0 72 1 89011 -3908 8 0.0 -3.5542476970317296E-4 NULL NULL -8 0.0 8 1 89011 -3911 11 0.0 -3.5515213500383533E-4 NULL NULL -11 0.0 11 1 89011 -3944 44 0.0 -3.521805273833671E-4 NULL NULL -44 0.0 44 1 89011 -3945 45 0.0 -3.520912547528517E-4 NULL NULL -45 0.0 45 1 89011 -3958 58 0.0 -3.5093481556341586E-4 NULL NULL -58 0.0 58 1 89011 -3961 61 0.0 -3.5066902297399647E-4 NULL NULL -61 0.0 61 1 89011 -3971 71 0.0 -3.4978594812389827E-4 NULL NULL -71 0.0 71 1 89011 -4003 28 0.0 -3.469897576817387E-4 NULL NULL -28 0.0 28 1 89011 -4008 33 0.0 -3.465568862275449E-4 NULL NULL -33 0.0 33 1 89011 -4020 45 0.0 -3.455223880597015E-4 NULL NULL -45 0.0 45 1 89011 -4024 49 0.0 -3.451789264413519E-4 NULL NULL -49 0.0 49 1 89011 -4033 58 0.0 -3.4440862881229855E-4 NULL NULL -58 0.0 58 1 89011 -4055 5 0.0 -3.4254007398273737E-4 NULL NULL -5 0.0 5 1 89011 -4087 37 0.0 -3.3985808661609983E-4 NULL NULL -37 0.0 37 1 89011 -4096 46 0.0 -3.39111328125E-4 NULL NULL -46 0.0 46 1 89011 -4120 70 0.0 -3.371359223300971E-4 NULL NULL -70 0.0 70 1 89011 -4124 74 0.0 -3.368089233753637E-4 NULL NULL -74 0.0 74 1 89011 -4128 3 0.0 -3.364825581395349E-4 NULL NULL -3 36.0 3 2 89012 -4136 11 0.0 -3.3583172147001934E-4 NULL NULL -11 0.0 11 1 89011 -4151 26 0.0 -3.346181642977596E-4 NULL NULL -26 0.0 26 1 89011 -4153 28 0.0 -3.3445701902239344E-4 NULL NULL -28 0.0 28 1 89011 -4154 29 0.0 -3.343765045739047E-4 NULL NULL -29 0.0 29 1 89011 -4159 34 0.0 -3.3397451310411157E-4 NULL NULL -34 0.0 34 1 89011 -4162 37 0.0 -3.3373378183565596E-4 NULL NULL -37 0.0 37 1 89011 -4165 40 0.0 -3.334933973589436E-4 NULL NULL -40 0.0 40 1 89011 -4169 44 0.0 -3.331734228831854E-4 NULL NULL -44 0.0 44 1 89011 -4181 56 0.0 -3.3221717292513753E-4 NULL NULL -56 0.0 56 1 89011 -4197 72 0.0 -3.309506790564689E-4 NULL NULL -72 0.0 72 1 89011 -4207 7 0.0 -3.301640123603518E-4 NULL NULL -7 0.0 7 1 89011 -4228 28 0.0 -3.2852412488174076E-4 NULL NULL -28 0.0 28 1 89011 -4245 45 0.0 -3.2720848056537103E-4 NULL NULL -45 0.0 45 1 89011 -4256 56 0.0 -3.263627819548872E-4 NULL NULL -56 0.0 56 1 89011 -4261 61 0.0 -3.259798169443793E-4 NULL NULL -61 0.0 61 1 89011 -4264 64 0.0 -3.2575046904315195E-4 NULL NULL -64 0.0 64 1 89011 -4268 68 0.0 -3.2544517338331774E-4 NULL NULL -68 0.0 68 1 89011 -4292 17 0.0 -3.2362534948741846E-4 NULL NULL -17 0.0 17 1 89011 -4306 31 0.0 -3.2257315373896886E-4 NULL NULL -31 0.0 31 1 89011 -4322 47 0.0 -3.2137899120777416E-4 NULL NULL -47 1056.25 47 2 89012 -4336 61 0.0 -3.203413284132841E-4 NULL NULL -61 0.0 61 1 89011 -4357 7 0.0 -3.187973376176268E-4 NULL NULL -7 0.0 7 1 89011 -4368 18 0.0 -3.179945054945055E-4 NULL NULL -18 0.0 18 1 89011 -4370 20 0.0 -3.1784897025171623E-4 NULL NULL -20 0.0 20 1 89011 -4388 38 0.0 -3.165451230628988E-4 NULL NULL -38 0.0 38 1 89011 -4432 7 0.0 -3.1340252707581225E-4 NULL NULL -7 0.0 7 1 89011 -4440 15 0.0 -3.1283783783783785E-4 NULL NULL -15 0.0 15 1 89011 -4469 44 0.0 -3.108077869769523E-4 NULL NULL -44 0.0 44 1 89011 -4472 47 0.0 -3.105992844364937E-4 NULL NULL -47 0.0 47 1 89011 -4488 63 0.0 -3.094919786096257E-4 NULL NULL -63 0.0 63 1 89011 -4495 70 0.0 -3.0901001112347055E-4 NULL NULL -70 0.0 70 1 89011 -4513 13 0.0 -3.077775315754487E-4 NULL NULL -13 0.0 13 1 89011 -4539 39 0.0 -3.0601454064771975E-4 NULL NULL -39 0.0 39 1 89011 -4544 44 0.0 -3.0567781690140846E-4 NULL NULL -44 0.0 44 1 89011 -4568 68 0.0 -3.040718038528897E-4 NULL NULL -68 0.0 68 1 89011 -4572 72 0.0 -3.038057742782152E-4 NULL NULL -72 0.0 72 1 89011 -4575 0 0.0 -3.036065573770492E-4 NULL NULL 0 0.0 0 1 89011 -4577 2 0.0 -3.0347389119510595E-4 NULL NULL -2 0.0 2 1 89011 -4579 4 0.0 -3.0334134090412757E-4 NULL NULL -4 0.0 4 1 89011 -4585 10 0.0 -3.029443838604144E-4 NULL NULL -10 0.0 10 1 89011 -4587 12 0.0 -3.02812295618051E-4 NULL NULL -12 0.0 12 1 89011 -4612 37 0.0 -3.0117085862966175E-4 NULL NULL -37 0.0 37 1 89011 -4617 42 0.0 -3.008447043534763E-4 NULL NULL -42 0.0 42 1 89011 -4625 50 0.0 -3.003243243243243E-4 NULL NULL -50 0.0 50 1 89011 -4647 72 0.0 -2.989025177533893E-4 NULL NULL -72 0.0 72 1 89011 -4662 12 0.0 -2.979407979407979E-4 NULL NULL -12 0.0 12 1 89011 -4673 23 0.0 -2.972394607318639E-4 NULL NULL -23 0.0 23 1 89011 -4696 46 0.0 -2.957836456558773E-4 NULL NULL -46 0.0 46 1 89011 -4711 61 0.0 -2.9484185947781786E-4 NULL NULL -61 0.0 61 1 89011 -4783 58 0.0 -2.904035124398913E-4 NULL NULL -58 0.0 58 1 89011 -4811 11 0.0 -2.8871336520473913E-4 NULL NULL -11 0.25 11 2 89012 -4812 12 0.0 -2.886533665835411E-4 NULL NULL -12 0.0 12 1 89011 -4828 28 0.0 -2.876967688483844E-4 NULL NULL -28 0.0 28 1 89011 -4832 32 0.0 -2.874586092715232E-4 NULL NULL -32 0.0 32 1 89011 -4836 36 0.0 -2.872208436724566E-4 NULL NULL -36 0.0 36 1 89011 -4871 71 0.0 -2.8515705194005335E-4 NULL NULL -71 0.0 71 1 89011 -4936 61 0.0 -2.8140194489465153E-4 NULL NULL -61 0.0 61 1 89011 -4956 6 0.0 -2.8026634382566584E-4 NULL NULL -6 0.0 6 1 89011 -4963 13 0.0 -2.798710457384646E-4 NULL NULL -13 0.0 13 1 89011 -4967 17 0.0 -2.7964566136500906E-4 NULL NULL -17 0.0 17 1 89011 -4977 27 0.0 -2.7908378541289933E-4 NULL NULL -27 56.0 27 3 89013 -4978 28 0.0 -2.7902772197669744E-4 NULL NULL -28 0.0 28 1 89011 -4983 33 0.0 -2.787477423239013E-4 NULL NULL -33 0.0 33 1 89011 -4994 44 0.0 -2.7813376051261514E-4 NULL NULL -44 0.0 44 1 89011 -4997 47 0.0 -2.779667800680408E-4 NULL NULL -47 0.0 47 1 89011 -5000 50 0.0 -2.778E-4 NULL NULL -50 0.0 50 1 89011 -5015 65 0.0 -2.769690927218345E-4 NULL NULL -65 0.0 65 1 89011 -5025 0 0.0 -2.764179104477612E-4 NULL NULL 0 0.0 0 1 89011 -5028 3 0.0 -2.762529832935561E-4 NULL NULL -3 0.0 3 1 89011 -5042 17 0.0 -2.754859182863943E-4 NULL NULL -17 0.0 17 1 89011 -5063 38 0.0 -2.7434327473829746E-4 NULL NULL -38 0.0 38 1 89011 -5070 45 0.0 -2.7396449704142014E-4 NULL NULL -45 0.0 45 1 89011 -5085 60 0.0 -2.7315634218289084E-4 NULL NULL -60 0.0 60 1 89011 -5092 67 0.0 -2.727808326787117E-4 NULL NULL -67 0.0 67 1 89011 -5105 5 0.0 -2.720861900097943E-4 NULL NULL -5 0.0 5 1 89011 -5109 9 0.0 -2.71873165002936E-4 NULL NULL -9 0.0 9 1 89011 -5130 30 0.0 -2.7076023391812867E-4 NULL NULL -30 0.0 30 1 89011 -5147 47 0.0 -2.6986594132504373E-4 NULL NULL -47 0.0 47 1 89011 -5159 59 0.0 -2.692382244621051E-4 NULL NULL -59 0.0 59 1 89011 -5169 69 0.0 -2.6871735345327915E-4 NULL NULL -69 0.0 69 1 89011 -5190 15 0.0 -2.676300578034682E-4 NULL NULL -15 0.0 15 1 89011 -5201 26 0.0 -2.6706402614881756E-4 NULL NULL -26 0.0 26 1 89011 -5211 36 0.0 -2.665515256188831E-4 NULL NULL -36 0.0 36 1 89011 -5214 39 0.0 -2.663981588032221E-4 NULL NULL -39 0.0 39 1 89011 -5218 43 0.0 -2.6619394403986203E-4 NULL NULL -43 0.0 43 1 89011 -5219 44 0.0 -2.661429392603947E-4 NULL NULL -44 0.0 44 1 89011 -5240 65 0.0 -2.6507633587786257E-4 NULL NULL -65 0.0 65 1 89011 -5241 66 0.0 -2.6502575844304524E-4 NULL NULL -66 529.0 66 2 89012 -5248 73 0.0 -2.64672256097561E-4 NULL NULL -73 0.0 73 1 89011 -5259 9 0.0 -2.641186537364518E-4 NULL NULL -9 0.0 9 1 89011 -5290 40 0.0 -2.6257088846880905E-4 NULL NULL -40 0.0 40 1 89011 -5323 73 0.0 -2.6094307721209845E-4 NULL NULL -73 0.0 73 1 89011 -5327 2 0.0 -2.607471372254552E-4 NULL NULL -2 0.0 2 1 89011 -5348 23 0.0 -2.5972326103216155E-4 NULL NULL -23 0.0 23 1 89011 -5356 31 0.0 -2.5933532486930547E-4 NULL NULL -31 0.0 31 1 89011 -5369 44 0.0 -2.587073943006146E-4 NULL NULL -44 0.0 44 1 89011 -5377 52 0.0 -2.583224846568719E-4 NULL NULL -52 0.0 52 1 89011 -5383 58 0.0 -2.5803455322310977E-4 NULL NULL -58 0.0 58 1 89011 -5393 68 0.0 -2.5755609122937143E-4 NULL NULL -68 0.0 68 1 89011 -5394 69 0.0 -2.575083426028921E-4 NULL NULL -69 0.0 69 1 89011 -5400 0 0.0 -2.572222222222222E-4 NULL NULL 0 0.0 0 1 89011 -5406 6 0.0 -2.569367369589345E-4 NULL NULL -6 0.0 6 1 89011 -5412 12 0.0 -2.566518847006652E-4 NULL NULL -12 0.0 12 1 89011 -5420 20 0.0 -2.562730627306273E-4 NULL NULL -20 0.0 20 1 89011 -5451 51 0.0 -2.5481563015960373E-4 NULL NULL -51 552.25 51 2 89012 -5484 9 0.0 -2.5328227571115976E-4 NULL NULL -9 0.0 9 1 89011 -5487 12 0.0 -2.531437944231821E-4 NULL NULL -12 0.0 12 1 89011 -5495 20 0.0 -2.5277525022747953E-4 NULL NULL -20 0.0 20 1 89011 -5507 32 0.0 -2.5222444161975666E-4 NULL NULL -32 0.0 32 1 89011 -5521 46 0.0 -2.515848578156131E-4 NULL NULL -46 0.0 46 1 89011 -5562 12 0.0 -2.4973031283710896E-4 NULL NULL -12 0.0 12 1 89011 -5568 18 0.0 -2.4946120689655173E-4 NULL NULL -18 0.0 18 1 89011 -5580 30 0.0 -2.489247311827957E-4 NULL NULL -30 0.0 30 1 89011 -5603 53 0.0 -2.479029091558094E-4 NULL NULL -53 0.0 53 1 89011 -5617 67 0.0 -2.4728502759480147E-4 NULL NULL -67 0.0 67 1 89011 -5630 5 0.0 -2.467140319715808E-4 NULL NULL -5 0.0 5 1 89011 -5641 16 0.0 -2.462329374224428E-4 NULL NULL -16 0.0 16 1 89011 -5643 18 0.0 -2.461456671982988E-4 NULL NULL -18 0.0 18 1 89011 -5645 20 0.0 -2.4605845881310893E-4 NULL NULL -20 0.0 20 1 89011 -5654 29 0.0 -2.456667845772904E-4 NULL NULL -29 0.0 29 1 89011 -5661 36 0.0 -2.453630100688924E-4 NULL NULL -36 0.0 36 1 89011 -5663 38 0.0 -2.4527635528871625E-4 NULL NULL -38 0.0 38 1 89011 -5680 55 0.0 -2.4454225352112677E-4 NULL NULL -55 0.0 55 1 89011 -5687 62 0.0 -2.4424125197819587E-4 NULL NULL -62 0.0 62 1 89011 -5707 7 0.0 -2.4338531627825477E-4 NULL NULL -7 0.0 7 1 89011 -5716 16 0.0 -2.4300209937018895E-4 NULL NULL -16 0.0 16 1 89011 -5722 22 0.0 -2.4274729115693813E-4 NULL NULL -22 0.0 22 1 89011 -5741 41 0.0 -2.419439122104163E-4 NULL NULL -41 0.0 41 1 89011 -5752 52 0.0 -2.4148122392211405E-4 NULL NULL -52 0.0 52 1 89011 -5764 64 0.0 -2.4097848716169326E-4 NULL NULL -64 0.0 64 1 89011 -5780 5 0.0 -2.403114186851211E-4 NULL NULL -5 930.25 5 2 89012 -5785 10 0.0 -2.401037165082109E-4 NULL NULL -10 0.0 10 1 89011 -5786 11 0.0 -2.4006221914967162E-4 NULL NULL -11 0.0 11 1 89011 -5790 15 0.0 -2.3989637305699482E-4 NULL NULL -15 0.0 15 1 89011 -5792 17 0.0 -2.3981353591160222E-4 NULL NULL -17 0.0 17 1 89011 -5793 18 0.0 -2.3977213878819266E-4 NULL NULL -18 0.0 18 1 89011 -5814 39 0.0 -2.3890608875129E-4 NULL NULL -39 0.0 39 1 89011 -5815 40 0.0 -2.3886500429922615E-4 NULL NULL -40 0.0 40 1 89011 -5847 72 0.0 -2.375577219086711E-4 NULL NULL -72 0.0 72 1 89011 -5851 1 0.0 -2.3739531703982226E-4 NULL NULL -1 0.0 1 1 89011 -5855 5 0.0 -2.372331340734415E-4 NULL NULL -5 0.0 5 1 89011 -5865 15 0.0 -2.3682864450127878E-4 NULL NULL -15 0.0 15 1 89011 -5885 35 0.0 -2.3602378929481733E-4 NULL NULL -35 12.25 35 2 89012 -5892 42 0.0 -2.3574338085539714E-4 NULL NULL -42 0.0 42 1 89011 -5898 48 0.0 -2.3550356052899288E-4 NULL NULL -48 0.0 48 1 89011 -5927 2 0.0 -2.3435127383161802E-4 NULL NULL -2 0.0 2 1 89011 -5929 4 0.0 -2.342722212852083E-4 NULL NULL -4 0.0 4 1 89011 -5941 16 0.0 -2.3379902373337822E-4 NULL NULL -16 0.0 16 1 89011 -5944 19 0.0 -2.3368102288021534E-4 NULL NULL -19 0.0 19 1 89011 -5961 36 0.0 -2.3301459486663311E-4 NULL NULL -36 0.0 36 1 89011 -5972 47 0.0 -2.325853985264568E-4 NULL NULL -47 0.0 47 1 89011 -5977 52 0.0 -2.3239083152082986E-4 NULL NULL -52 0.0 52 1 89011 -5988 63 0.0 -2.3196392785571141E-4 NULL NULL -63 0.0 63 1 89011 -6004 4 0.0 -2.3134576948700866E-4 NULL NULL -4 0.0 4 1 89011 -6015 15 0.0 -2.309226932668329E-4 NULL NULL -15 0.0 15 1 89011 -6018 18 0.0 -2.308075772681954E-4 NULL NULL -18 0.0 18 1 89011 -6036 36 0.0 -2.301192842942346E-4 NULL NULL -36 0.25 36 2 89012 -6048 48 0.0 -2.296626984126984E-4 NULL NULL -48 0.0 48 1 89011 -6062 62 0.0 -2.2913229957109864E-4 NULL NULL -62 0.0 62 1 89011 -6069 69 0.0 -2.2886801779535343E-4 NULL NULL -69 0.0 69 1 89011 -6072 72 0.0 -2.2875494071146246E-4 NULL NULL -72 0.0 72 1 89011 -6090 15 0.0 -2.2807881773399016E-4 NULL NULL -15 0.0 15 1 89011 -6103 28 0.0 -2.2759298705554647E-4 NULL NULL -28 0.0 28 1 89011 -6114 39 0.0 -2.2718351324828263E-4 NULL NULL -39 0.0 39 1 89011 -6183 33 0.0 -2.2464822901504123E-4 NULL NULL -33 0.0 33 1 89011 -6192 42 0.0 -2.2432170542635658E-4 NULL NULL -42 0.0 42 1 89011 -6228 3 0.0 -2.2302504816955684E-4 NULL NULL -3 0.0 3 1 89011 -6246 21 0.0 -2.223823246878002E-4 NULL NULL -21 0.0 21 1 89011 -6248 23 0.0 -2.2231113956466068E-4 NULL NULL -23 0.0 23 1 89011 -6256 31 0.0 -2.2202685421994885E-4 NULL NULL -31 0.0 31 1 89011 -6264 39 0.0 -2.217432950191571E-4 NULL NULL -39 0.0 39 1 89011 -6297 72 0.0 -2.2058122915674132E-4 NULL NULL -72 0.0 72 1 89011 -6300 0 0.0 -2.2047619047619048E-4 NULL NULL 0 0.0 0 1 89011 -6303 3 0.0 -2.2037125178486436E-4 NULL NULL -3 0.0 3 1 89011 -6311 11 0.0 -2.2009190302646174E-4 NULL NULL -11 0.0 11 1 89011 -6321 21 0.0 -2.197437114380636E-4 NULL NULL -21 0.0 21 1 89011 -6327 27 0.0 -2.1953532479848268E-4 NULL NULL -27 0.0 27 1 89011 -6340 40 0.0 -2.190851735015773E-4 NULL NULL -40 0.0 40 1 89011 -6346 46 0.0 -2.1887803340687046E-4 NULL NULL -46 0.0 46 1 89011 -6349 49 0.0 -2.187746101748307E-4 NULL NULL -49 0.0 49 1 89011 -6380 5 0.0 -2.177115987460815E-4 NULL NULL -5 0.0 5 1 89011 -6385 10 0.0 -2.1754111198120596E-4 NULL NULL -10 0.0 10 1 89011 -6389 14 0.0 -2.174049146971357E-4 NULL NULL -14 0.0 14 1 89011 -6413 38 0.0 -2.165912989240605E-4 NULL NULL -38 0.0 38 1 89011 -6453 3 0.0 -2.1524872152487215E-4 NULL NULL -3 0.0 3 1 89011 -6469 19 0.0 -2.1471633946514146E-4 NULL NULL -19 0.0 19 1 89011 -6506 56 0.0 -2.1349523516753767E-4 NULL NULL -56 0.0 56 1 89011 -6511 61 0.0 -2.133312855168177E-4 NULL NULL -61 0.0 61 1 89011 -6513 63 0.0 -2.1326577614002763E-4 NULL NULL -63 0.0 63 1 89011 -6516 66 0.0 -2.1316758747697974E-4 NULL NULL -66 0.0 66 1 89011 -6523 73 0.0 -2.12938831825847E-4 NULL NULL -73 0.0 73 1 89011 -6546 21 0.0 -2.1219065077910174E-4 NULL NULL -21 0.0 21 1 89011 -6554 29 0.0 -2.119316447970705E-4 NULL NULL -29 0.0 29 1 89011 -6556 31 0.0 -2.1186699206833436E-4 NULL NULL -31 0.0 31 1 89011 -6557 32 0.0 -2.118346804941284E-4 NULL NULL -32 0.0 32 1 89011 -6576 51 0.0 -2.1122262773722627E-4 NULL NULL -51 0.0 51 1 89011 -6578 53 0.0 -2.1115840681058072E-4 NULL NULL -53 0.0 53 1 89011 -6596 71 0.0 -2.10582171012735E-4 NULL NULL -71 0.0 71 1 89011 -6616 16 0.0 -2.0994558645707375E-4 NULL NULL -16 0.0 16 1 89011 -6626 26 0.0 -2.0962873528523995E-4 NULL NULL -26 0.0 26 1 89011 -6654 54 0.0 -2.0874661857529306E-4 NULL NULL -54 0.0 54 1 89011 -6658 58 0.0 -2.086212075698408E-4 NULL NULL -58 0.0 58 1 89011 -6663 63 0.0 -2.0846465556055831E-4 NULL NULL -63 0.0 63 1 89011 -6666 66 0.0 -2.0837083708370838E-4 NULL NULL -66 0.0 66 1 89011 -6667 67 0.0 -2.0833958302084895E-4 NULL NULL -67 0.0 67 1 89011 -6690 15 0.0 -2.0762331838565022E-4 NULL NULL -15 0.0 15 1 89011 -6725 50 0.0 -2.0654275092936802E-4 NULL NULL -50 0.0 50 1 89011 -6731 56 0.0 -2.0635863913237261E-4 NULL NULL -56 0.0 56 1 89011 -6732 57 0.0 -2.0632798573975045E-4 NULL NULL -57 0.0 57 1 89011 -6738 63 0.0 -2.0614425645592164E-4 NULL NULL -63 0.0 63 1 89011 -6749 74 0.0 -2.058082678915395E-4 NULL NULL -74 0.0 74 1 89011 -6760 10 0.0 -2.054733727810651E-4 NULL NULL -10 0.0 10 1 89011 -6775 25 0.0 -2.0501845018450185E-4 NULL NULL -25 0.0 25 1 89011 -6776 26 0.0 -2.0498819362455727E-4 NULL NULL -26 0.0 26 1 89011 -6777 27 0.0 -2.0495794599380258E-4 NULL NULL -27 0.0 27 1 89011 -6790 40 0.0 -2.0456553755522828E-4 NULL NULL -40 0.0 40 1 89011 -6793 43 0.0 -2.044751950537318E-4 NULL NULL -43 0.0 43 1 89011 -6798 48 0.0 -2.0432480141218006E-4 NULL NULL -48 0.0 48 1 89011 -6802 52 0.0 -2.042046456924434E-4 NULL NULL -52 0.0 52 1 89011 -6811 61 0.0 -2.039348113346058E-4 NULL NULL -61 0.0 61 1 89011 -6823 73 0.0 -2.0357613952806683E-4 NULL NULL -73 0.0 73 1 89011 -6827 2 0.0 -2.034568624578878E-4 NULL NULL -2 0.0 2 1 89011 -6838 13 0.0 -2.0312957004972213E-4 NULL NULL -13 0.0 13 1 89011 -6848 23 0.0 -2.0283294392523364E-4 NULL NULL -23 0.0 23 1 89011 -6849 24 0.0 -2.0280332895313184E-4 NULL NULL -24 0.0 24 1 89011 -6852 27 0.0 -2.0271453590192646E-4 NULL NULL -27 0.0 27 1 89011 -6864 39 0.0 -2.0236013986013986E-4 NULL NULL -39 0.0 39 1 89011 -6866 41 0.0 -2.0230119429070784E-4 NULL NULL -41 0.0 41 1 89011 -6898 73 0.0 -2.013627138300957E-4 NULL NULL -73 0.0 73 1 89011 -6903 3 0.0 -2.012168622338114E-4 NULL NULL -3 0.0 3 1 89011 -6910 10 0.0 -2.0101302460202606E-4 NULL NULL -10 0.0 10 1 89011 -6912 12 0.0 -2.0095486111111111E-4 NULL NULL -12 0.0 12 1 89011 -6923 23 0.0 -2.0063556261736243E-4 NULL NULL -23 0.0 23 1 89011 -6935 35 0.0 -2.0028839221341023E-4 NULL NULL -35 0.0 35 1 89011 -6941 41 0.0 -2.001152571675551E-4 NULL NULL -41 0.0 41 1 89011 -6958 58 0.0 -1.9962632940500143E-4 NULL NULL -58 0.0 58 1 89011 -6961 61 0.0 -1.9954029593449217E-4 NULL NULL -61 0.0 61 1 89011 -6967 67 0.0 -1.9936845127027414E-4 NULL NULL -67 0.0 67 1 89011 -6974 74 0.0 -1.9916833954688844E-4 NULL NULL -74 0.0 74 1 89011 -6995 20 0.0 -1.9857040743388136E-4 NULL NULL -20 0.0 20 1 89011 -7006 31 0.0 -1.98258635455324E-4 NULL NULL -31 0.0 31 1 89011 -7007 32 0.0 -1.9823034108748395E-4 NULL NULL -32 0.0 32 1 89011 -7021 46 0.0 -1.978350662298818E-4 NULL NULL -46 0.0 46 1 89011 -7022 47 0.0 -1.9780689262318427E-4 NULL NULL -47 0.0 47 1 89011 -7046 71 0.0 -1.9713312517740563E-4 NULL NULL -71 0.0 71 1 89011 -7060 10 0.0 -1.9674220963172804E-4 NULL NULL -10 0.0 10 1 89011 -7062 12 0.0 -1.9668649107901446E-4 NULL NULL -12 0.0 12 1 89011 -7077 27 0.0 -1.9626960576515473E-4 NULL NULL -27 0.0 27 1 89011 -7085 35 0.0 -1.9604798870853917E-4 NULL NULL -35 0.0 35 1 89011 -7109 59 0.0 -1.9538613025742017E-4 NULL NULL -59 0.0 59 1 89011 -7111 61 0.0 -1.953311770496414E-4 NULL NULL -61 0.0 61 1 89011 -7118 68 0.0 -1.9513908401236303E-4 NULL NULL -68 0.0 68 1 89011 -7162 37 0.0 -1.939402401563809E-4 NULL NULL -37 0.0 37 1 89011 -7175 50 0.0 -1.9358885017421604E-4 NULL NULL -50 0.0 50 1 89011 -7178 53 0.0 -1.9350794093062136E-4 NULL NULL -53 0.0 53 1 89011 -7179 54 0.0 -1.9348098620977853E-4 NULL NULL -54 0.0 54 1 89011 -7180 55 0.0 -1.934540389972145E-4 NULL NULL -55 0.0 55 1 89011 -7182 57 0.0 -1.9340016708437762E-4 NULL NULL -57 0.0 57 1 89011 -7205 5 0.0 -1.9278278972935462E-4 NULL NULL -5 0.0 5 1 89011 -7207 7 0.0 -1.927292909671153E-4 NULL NULL -7 0.0 7 1 89011 -7212 12 0.0 -1.925956738768719E-4 NULL NULL -12 0.0 12 1 89011 -7238 38 0.0 -1.9190384084001106E-4 NULL NULL -38 0.0 38 1 89011 -7243 43 0.0 -1.9177136545630265E-4 NULL NULL -43 0.0 43 1 89011 -7249 49 0.0 -1.916126362256863E-4 NULL NULL -49 0.0 49 1 89011 -7276 1 0.0 -1.9090159428257285E-4 NULL NULL -1 0.0 1 1 89011 -7279 4 0.0 -1.908229152356093E-4 NULL NULL -4 0.0 4 1 89011 -7287 12 0.0 -1.906134211609716E-4 NULL NULL -12 0.0 12 1 89011 -7288 13 0.0 -1.905872667398463E-4 NULL NULL -13 0.0 13 1 89011 -7290 15 0.0 -1.905349794238683E-4 NULL NULL -15 0.0 15 1 89011 -7302 27 0.0 -1.9022185702547247E-4 NULL NULL -27 0.0 27 1 89011 -7316 41 0.0 -1.8985784581738654E-4 NULL NULL -41 0.0 41 1 89011 -7350 0 0.0 -1.8897959183673468E-4 NULL NULL 0 0.0 0 1 89011 -7364 14 0.0 -1.8862031504617057E-4 NULL NULL -14 0.0 14 1 89011 -7365 15 0.0 -1.8859470468431772E-4 NULL NULL -15 0.0 15 1 89011 -7372 22 0.0 -1.88415626695605E-4 NULL NULL -22 0.0 22 1 89011 -7375 25 0.0 -1.8833898305084746E-4 NULL NULL -25 0.0 25 1 89011 -7398 48 0.0 -1.8775344687753446E-4 NULL NULL -48 0.0 48 1 89011 -7412 62 0.0 -1.8739881273610362E-4 NULL NULL -62 0.0 62 1 89011 -7423 73 0.0 -1.8712111006331672E-4 NULL NULL -73 0.0 73 1 89011 -7442 17 0.0 -1.8664337543671056E-4 NULL NULL -17 0.0 17 1 89011 -7457 32 0.0 -1.8626793616735953E-4 NULL NULL -32 0.0 32 1 89011 -7463 38 0.0 -1.861181830363125E-4 NULL NULL -38 0.0 38 1 89011 -7476 51 0.0 -1.8579454253611556E-4 NULL NULL -51 0.0 51 1 89011 -7477 52 0.0 -1.857696937274308E-4 NULL NULL -52 0.0 52 1 89011 -7482 57 0.0 -1.8564554931836409E-4 NULL NULL -57 0.0 57 1 89011 -7485 60 0.0 -1.8557114228456915E-4 NULL NULL -60 0.0 60 1 89011 -7493 68 0.0 -1.8537301481382623E-4 NULL NULL -68 0.0 68 1 89011 -7497 72 0.0 -1.8527410964385755E-4 NULL NULL -72 0.0 72 1 89011 -7500 0 0.0 -1.852E-4 NULL NULL 0 0.0 0 1 89011 -7511 11 0.0 -1.849287711356677E-4 NULL NULL -11 0.0 11 1 89011 -7513 13 0.0 -1.848795421269799E-4 NULL NULL -13 0.0 13 1 89011 -7536 36 0.0 -1.8431528662420384E-4 NULL NULL -36 0.0 36 1 89011 -7538 38 0.0 -1.8426638365614222E-4 NULL NULL -38 0.0 38 1 89011 -7541 41 0.0 -1.8419307784113513E-4 NULL NULL -41 0.0 41 1 89011 -7548 48 0.0 -1.8402225755166933E-4 NULL NULL -48 0.0 48 1 89011 -7552 52 0.0 -1.8392478813559322E-4 NULL NULL -52 0.0 52 1 89011 -7556 56 0.0 -1.8382742191635788E-4 NULL NULL -56 0.0 56 1 89011 -7559 59 0.0 -1.837544648763064E-4 NULL NULL -59 0.0 59 1 89011 -7574 74 0.0 -1.8339054660681278E-4 NULL NULL -74 0.0 74 1 89011 -7588 13 0.0 -1.830521876647338E-4 NULL NULL -13 0.0 13 1 89011 -7599 24 0.0 -1.8278720884326886E-4 NULL NULL -24 0.0 24 1 89011 -7607 32 0.0 -1.8259497830945182E-4 NULL NULL -32 0.0 32 1 89011 -7616 41 0.0 -1.8237920168067228E-4 NULL NULL -41 0.0 41 1 89011 -7623 48 0.0 -1.8221172766627312E-4 NULL NULL -48 0.0 48 1 89011 -7636 61 0.0 -1.8190151911995809E-4 NULL NULL -61 0.0 61 1 89011 -7642 67 0.0 -1.8175870191049464E-4 NULL NULL -67 0.0 67 1 89011 -7648 73 0.0 -1.8161610878661088E-4 NULL NULL -73 256.0 73 2 89012 -7651 1 0.0 -1.8154489609201413E-4 NULL NULL -1 0.0 1 1 89011 -7661 11 0.0 -1.813079232476178E-4 NULL NULL -11 0.0 11 1 89011 -7675 25 0.0 -1.809771986970684E-4 NULL NULL -25 0.0 25 1 89011 -7705 55 0.0 -1.8027255029201818E-4 NULL NULL -55 64.0 55 2 89012 -7709 59 0.0 -1.8017901154494746E-4 NULL NULL -59 0.0 59 1 89011 -7712 62 0.0 -1.8010892116182572E-4 NULL NULL -62 0.0 62 1 89011 -7713 63 0.0 -1.8008556981719174E-4 NULL NULL -63 0.0 63 1 89011 -7723 73 0.0 -1.798523889680176E-4 NULL NULL -73 0.0 73 1 89011 -7731 6 0.0 -1.796662786185487E-4 NULL NULL -6 0.0 6 1 89011 -7759 34 0.0 -1.7901791467972677E-4 NULL NULL -34 0.0 34 1 89011 -7777 52 0.0 -1.786035746431786E-4 NULL NULL -52 0.0 52 1 89011 -7787 62 0.0 -1.7837421343264414E-4 NULL NULL -62 0.0 62 1 89011 -7812 12 0.0 -1.7780337941628263E-4 NULL NULL -12 0.0 12 1 89011 -7813 13 0.0 -1.7778062204018943E-4 NULL NULL -13 0.0 13 1 89011 -7828 28 0.0 -1.7743995912110374E-4 NULL NULL -28 0.0 28 1 89011 -7836 36 0.0 -1.7725880551301685E-4 NULL NULL -36 0.0 36 1 89011 -7847 47 0.0 -1.7701032241621E-4 NULL NULL -47 0.0 47 1 89011 -7854 54 0.0 -1.768525592055004E-4 NULL NULL -54 0.0 54 1 89011 -7860 60 0.0 -1.767175572519084E-4 NULL NULL -60 0.0 60 1 89011 -7891 16 0.0 -1.760233177037131E-4 NULL NULL -16 0.0 16 1 89011 -7902 27 0.0 -1.7577828397873955E-4 NULL NULL -27 0.0 27 1 89011 -7903 28 0.0 -1.7575604200936355E-4 NULL NULL -28 0.0 28 1 89011 -7940 65 0.0 -1.7493702770780858E-4 NULL NULL -65 0.0 65 1 89011 -7942 67 0.0 -1.7489297406194913E-4 NULL NULL -67 0.0 67 1 89011 -7952 2 0.0 -1.7467303822937626E-4 NULL NULL -2 0.0 2 1 89011 -7972 22 0.0 -1.74234821876568E-4 NULL NULL -22 0.0 22 1 89011 -7974 24 0.0 -1.7419112114371707E-4 NULL NULL -24 0.0 24 1 89011 -7985 35 0.0 -1.7395115842204132E-4 NULL NULL -35 0.0 35 1 89011 -7993 43 0.0 -1.7377705492305768E-4 NULL NULL -43 0.0 43 1 89011 -8000 50 0.0 -1.73625E-4 NULL NULL -50 0.0 50 1 89011 -8001 51 0.0 -1.7360329958755156E-4 NULL NULL -51 0.0 51 1 89011 -8007 57 0.0 -1.7347321094042712E-4 NULL NULL -57 0.0 57 1 89011 -8031 6 0.0 -1.72954800149421E-4 NULL NULL -6 0.0 6 1 89011 -8035 10 0.0 -1.7286869943995023E-4 NULL NULL -10 0.0 10 1 89011 -8046 21 0.0 -1.726323639075317E-4 NULL NULL -21 0.0 21 1 89011 -8048 23 0.0 -1.7258946322067594E-4 NULL NULL -23 0.0 23 1 89011 -8050 25 0.0 -1.7254658385093167E-4 NULL NULL -25 0.0 25 1 89011 -8063 38 0.0 -1.7226838645665384E-4 NULL NULL -38 0.0 38 1 89011 -8072 47 0.0 -1.720763131813677E-4 NULL NULL -47 0.0 47 1 89011 -8076 51 0.0 -1.7199108469539377E-4 NULL NULL -51 0.0 51 1 89011 -8084 59 0.0 -1.7182088075210291E-4 NULL NULL -59 0.0 59 1 89011 -8091 66 0.0 -1.7167222840192806E-4 NULL NULL -66 0.0 66 1 89011 -8096 71 0.0 -1.7156620553359685E-4 NULL NULL -71 0.0 71 1 89011 -8104 4 0.0 -1.713968410661402E-4 NULL NULL -4 0.0 4 1 89011 -8105 5 0.0 -1.713756940160395E-4 NULL NULL -5 0.0 5 1 89011 -8129 29 0.0 -1.7086972567351459E-4 NULL NULL -29 0.0 29 1 89011 -8142 42 0.0 -1.7059690493736183E-4 NULL NULL -42 0.0 42 1 89011 -8191 16 0.0 -1.69576364302283E-4 NULL NULL -16 0.0 16 1 89011 -8201 26 0.0 -1.6936958907450312E-4 NULL NULL -26 0.0 26 1 89011 -8229 54 0.0 -1.6879329201604083E-4 NULL NULL -54 0.0 54 1 89011 -8231 56 0.0 -1.6875227797351477E-4 NULL NULL -56 0.0 56 1 89011 -8234 59 0.0 -1.6869079426767064E-4 NULL NULL -59 0.0 59 1 89011 -8237 62 0.0 -1.686293553478208E-4 NULL NULL -62 0.0 62 1 89011 -8267 17 0.0 -1.680174186524737E-4 NULL NULL -17 0.0 17 1 89011 -8270 20 0.0 -1.6795646916565902E-4 NULL NULL -20 0.0 20 1 89011 -8296 46 0.0 -1.674300867888139E-4 NULL NULL -46 0.0 46 1 89011 -8301 51 0.0 -1.6732923744127213E-4 NULL NULL -51 0.0 51 1 89011 -8319 69 0.0 -1.6696718355571584E-4 NULL NULL -69 0.0 69 1 89011 -8340 15 0.0 -1.6654676258992805E-4 NULL NULL -15 30.25 15 2 89012 -8341 16 0.0 -1.6652679534827957E-4 NULL NULL -16 0.0 16 1 89011 -8346 21 0.0 -1.6642703091301222E-4 NULL NULL -21 0.0 21 1 89011 -8347 22 0.0 -1.6640709236851565E-4 NULL NULL -22 0.0 22 1 89011 -8351 26 0.0 -1.6632738594180339E-4 NULL NULL -26 0.0 26 1 89011 -8353 28 0.0 -1.6628756135520173E-4 NULL NULL -28 0.0 28 1 89011 -8354 29 0.0 -1.6626765621259278E-4 NULL NULL -29 0.0 29 1 89011 -8365 40 0.0 -1.6604901374775853E-4 NULL NULL -40 0.0 40 1 89011 -8368 43 0.0 -1.6598948374760993E-4 NULL NULL -43 0.0 43 1 89011 -8370 45 0.0 -1.6594982078853046E-4 NULL NULL -45 0.0 45 1 89011 -8375 50 0.0 -1.6585074626865673E-4 NULL NULL -50 0.0 50 1 89011 -8384 59 0.0 -1.6567270992366413E-4 NULL NULL -59 0.0 59 1 89011 -8386 61 0.0 -1.656331981874553E-4 NULL NULL -61 0.0 61 1 89011 -8402 2 0.0 -1.6531778148059985E-4 NULL NULL -2 0.0 2 1 89011 -8408 8 0.0 -1.6519980970504283E-4 NULL NULL -8 0.0 8 1 89011 -8429 29 0.0 -1.6478823110689287E-4 NULL NULL -29 0.0 29 1 89011 -8442 42 0.0 -1.6453447050461976E-4 NULL NULL -42 0.0 42 1 89011 -8445 45 0.0 -1.644760213143872E-4 NULL NULL -45 0.0 45 1 89011 -8448 48 0.0 -1.6441761363636363E-4 NULL NULL -48 0.0 48 1 89011 -8451 51 0.0 -1.6435924742634007E-4 NULL NULL -51 0.0 51 1 89011 -8465 65 0.0 -1.6408741878322505E-4 NULL NULL -65 0.0 65 1 89011 -8471 71 0.0 -1.6397119584464644E-4 NULL NULL -71 0.0 71 1 89011 -8487 12 0.0 -1.6366207140332273E-4 NULL NULL -12 0.0 12 1 89011 -8499 24 0.0 -1.6343099188139782E-4 NULL NULL -24 0.0 24 1 89011 -8505 30 0.0 -1.6331569664902997E-4 NULL NULL -30 0.0 30 1 89011 -8523 48 0.0 -1.6297078493488209E-4 NULL NULL -48 0.0 48 1 89011 -8540 65 0.0 -1.626463700234192E-4 NULL NULL -65 0.0 65 1 89011 -8549 74 0.0 -1.6247514329161306E-4 NULL NULL -74 36.0 74 2 89012 -8580 30 0.0 -1.618881118881119E-4 NULL NULL -30 0.0 30 1 89011 -8584 34 0.0 -1.6181267474370923E-4 NULL NULL -34 0.0 34 1 89011 -8625 0 0.0 -1.6104347826086956E-4 NULL NULL 0 0.0 0 1 89011 -8648 23 0.0 -1.6061517113783534E-4 NULL NULL -23 0.0 23 1 89011 -8661 36 0.0 -1.6037409075164531E-4 NULL NULL -36 0.0 36 1 89011 -8662 37 0.0 -1.603555760794274E-4 NULL NULL -37 0.0 37 1 89011 -8675 50 0.0 -1.6011527377521613E-4 NULL NULL -50 0.0 50 1 89011 -8676 51 0.0 -1.6009681881051175E-4 NULL NULL -51 0.0 51 1 89011 -8683 58 0.0 -1.5996775308073247E-4 NULL NULL -58 0.0 58 1 89011 -8692 67 0.0 -1.5980211688909341E-4 NULL NULL -67 0.0 67 1 89011 -8693 68 0.0 -1.5978373403888185E-4 NULL NULL -68 0.0 68 1 89011 -8695 70 0.0 -1.5974698102357677E-4 NULL NULL -70 0.0 70 1 89011 -8703 3 0.0 -1.5960013788348846E-4 NULL NULL -3 0.0 3 1 89011 -8704 4 0.0 -1.5958180147058825E-4 NULL NULL -4 0.0 4 1 89011 -8709 9 0.0 -1.5949018256975544E-4 NULL NULL -9 0.0 9 1 89011 -8726 26 0.0 -1.5917946367178547E-4 NULL NULL -26 0.0 26 1 89011 -8740 40 0.0 -1.5892448512585812E-4 NULL NULL -40 0.0 40 1 89011 -8742 42 0.0 -1.5888812628689087E-4 NULL NULL -42 0.0 42 1 89011 -8744 44 0.0 -1.5885178408051235E-4 NULL NULL -44 0.0 44 1 89011 -8745 45 0.0 -1.588336192109777E-4 NULL NULL -45 0.0 45 1 89011 -8748 48 0.0 -1.5877914951989026E-4 NULL NULL -48 0.0 48 1 89011 -8757 57 0.0 -1.5861596437136006E-4 NULL NULL -57 0.0 57 1 89011 -8762 62 0.0 -1.585254508103173E-4 NULL NULL -62 0.0 62 1 89011 -8781 6 0.0 -1.5818243935770415E-4 NULL NULL -6 0.0 6 1 89011 -8784 9 0.0 -1.5812841530054645E-4 NULL NULL -9 0.0 9 1 89011 -8785 10 0.0 -1.5811041548093342E-4 NULL NULL -10 0.0 10 1 89011 -8790 15 0.0 -1.5802047781569967E-4 NULL NULL -15 0.0 15 1 89011 -8793 18 0.0 -1.5796656431252132E-4 NULL NULL -18 0.0 18 1 89011 -8804 29 0.0 -1.577691958200818E-4 NULL NULL -29 0.0 29 1 89011 -8827 52 0.0 -1.5735810581171407E-4 NULL NULL -52 0.0 52 1 89011 -8837 62 0.0 -1.5718003847459545E-4 NULL NULL -62 0.0 62 1 89011 -8841 66 0.0 -1.5710892432982694E-4 NULL NULL -66 0.0 66 1 89011 -8852 2 0.0 -1.569136918210574E-4 NULL NULL -2 0.0 2 1 89011 -8854 4 0.0 -1.568782471199458E-4 NULL NULL -4 0.0 4 1 89011 -8868 18 0.0 -1.5663058186738836E-4 NULL NULL -18 0.0 18 1 89011 -8875 25 0.0 -1.5650704225352114E-4 NULL NULL -25 0.0 25 1 89011 -8876 26 0.0 -1.5648940964398377E-4 NULL NULL -26 0.0 26 1 89011 -8882 32 0.0 -1.5638369736545822E-4 NULL NULL -32 0.0 32 1 89011 -8884 34 0.0 -1.5634849167041874E-4 NULL NULL -34 0.0 34 1 89011 -8896 46 0.0 -1.5613758992805756E-4 NULL NULL -46 289.0 46 2 89012 -8941 16 0.0 -1.5535175036349402E-4 NULL NULL -16 0.0 16 1 89011 -8950 25 0.0 -1.5519553072625698E-4 NULL NULL -25 0.0 25 1 89011 -8983 58 0.0 -1.5462540354002003E-4 NULL NULL -58 0.0 58 1 89011 -8986 61 0.0 -1.5457378143779213E-4 NULL NULL -61 0.0 61 1 89011 -9001 1 0.0 -1.543161870903233E-4 NULL NULL -1 0.0 1 1 89011 -9011 11 0.0 -1.541449339695927E-4 NULL NULL -11 0.0 11 1 89011 -9050 50 0.0 -1.534806629834254E-4 NULL NULL -50 0.0 50 1 89011 -9052 52 0.0 -1.5344675209898366E-4 NULL NULL -52 0.0 52 1 89011 -9059 59 0.0 -1.5332818191853405E-4 NULL NULL -59 0.0 59 1 89011 -9063 63 0.0 -1.5326050976497847E-4 NULL NULL -63 0.0 63 1 89011 -9100 25 0.0 -1.5263736263736264E-4 NULL NULL -25 0.0 25 1 89011 -9107 32 0.0 -1.5252003953003185E-4 NULL NULL -32 0.0 32 1 89011 -9111 36 0.0 -1.5245307869608167E-4 NULL NULL -36 0.0 36 1 89011 -9128 53 0.0 -1.5216914986853638E-4 NULL NULL -53 0.0 53 1 89011 -9140 65 0.0 -1.5196936542669586E-4 NULL NULL -65 0.0 65 1 89011 -9161 11 0.0 -1.516210020740094E-4 NULL NULL -11 0.0 11 1 89011 -9168 18 0.0 -1.5150523560209425E-4 NULL NULL -18 0.0 18 1 89011 -9169 19 0.0 -1.514887119642273E-4 NULL NULL -19 0.0 19 1 89011 -9182 32 0.0 -1.5127423219342192E-4 NULL NULL -32 0.0 32 1 89011 -9210 60 0.0 -1.50814332247557E-4 NULL NULL -60 0.0 60 1 89011 -9227 2 0.0 -1.5053646905819877E-4 NULL NULL -2 0.0 2 1 89011 -9235 10 0.0 -1.5040606388738495E-4 NULL NULL -10 0.0 10 1 89011 -9237 12 0.0 -1.5037349788892497E-4 NULL NULL -12 0.0 12 1 89011 -9238 13 0.0 -1.503572201775276E-4 NULL NULL -13 0.0 13 1 89011 -9243 18 0.0 -1.5027588445309963E-4 NULL NULL -18 0.0 18 1 89011 -9292 67 0.0 -1.4948342660352993E-4 NULL NULL -67 0.0 67 1 89011 -9304 4 0.0 -1.4929062768701633E-4 NULL NULL -4 0.0 4 1 89011 -9315 15 0.0 -1.4911433172302738E-4 NULL NULL -15 0.0 15 1 89011 -9351 51 0.0 -1.4854026307346808E-4 NULL NULL -51 0.0 51 1 89011 -9353 53 0.0 -1.4850849994654122E-4 NULL NULL -53 0.0 53 1 89011 -9360 60 0.0 -1.4839743589743589E-4 NULL NULL -60 0.0 60 1 89011 -9364 64 0.0 -1.4833404527979496E-4 NULL NULL -64 0.0 64 1 89011 -9365 65 0.0 -1.4831820608649226E-4 NULL NULL -65 0.0 65 1 89011 -9366 66 0.0 -1.4830237027546446E-4 NULL NULL -66 0.0 66 1 89011 -9373 73 0.0 -1.481916142110317E-4 NULL NULL -73 0.0 73 1 89011 -9388 13 0.0 -1.4795483596080102E-4 NULL NULL -13 0.0 13 1 89011 -9390 15 0.0 -1.4792332268370606E-4 NULL NULL -15 0.0 15 1 89011 -9393 18 0.0 -1.4787607793037368E-4 NULL NULL -18 0.0 18 1 89011 -9395 20 0.0 -1.4784459819052687E-4 NULL NULL -20 0.0 20 1 89011 -9402 27 0.0 -1.477345245692406E-4 NULL NULL -27 0.0 27 1 89011 -9404 29 0.0 -1.477031050616759E-4 NULL NULL -29 0.0 29 1 89011 -9426 51 0.0 -1.4735837046467217E-4 NULL NULL -51 0.0 51 1 89011 -9433 58 0.0 -1.472490193999788E-4 NULL NULL -58 1024.0 58 2 89012 -9442 67 0.0 -1.471086634187672E-4 NULL NULL -67 0.0 67 1 89011 -9444 69 0.0 -1.4707750952986024E-4 NULL NULL -69 0.0 69 1 89011 -9447 72 0.0 -1.470308034296602E-4 NULL NULL -72 0.0 72 1 89011 -9452 2 0.0 -1.469530258146424E-4 NULL NULL -2 16.0 2 2 89012 -9455 5 0.0 -1.4690639873083026E-4 NULL NULL -5 0.0 5 1 89011 -9472 22 0.0 -1.4664273648648648E-4 NULL NULL -22 0.0 22 1 89011 -9476 26 0.0 -1.465808357956944E-4 NULL NULL -26 0.0 26 1 89011 -9498 48 0.0 -1.4624131396083386E-4 NULL NULL -48 0.0 48 1 89011 -9510 60 0.0 -1.4605678233438487E-4 NULL NULL -60 0.0 60 1 89011 -9512 62 0.0 -1.4602607232968882E-4 NULL NULL -62 0.0 62 1 89011 -9539 14 0.0 -1.4561274766747038E-4 NULL NULL -14 2704.0 14 2 89012 -9556 31 0.0 -1.4535370447886145E-4 NULL NULL -31 0.0 31 1 89011 -9561 36 0.0 -1.452776906181362E-4 NULL NULL -36 0.0 36 1 89011 -9583 58 0.0 -1.4494417197119899E-4 NULL NULL -58 0.0 58 1 89011 -9597 72 0.0 -1.4473272897780557E-4 NULL NULL -72 0.0 72 1 89011 -9642 42 0.0 -1.4405724953329185E-4 NULL NULL -42 0.0 42 1 89011 -9644 44 0.0 -1.4402737453338865E-4 NULL NULL -44 0.0 44 1 89011 -9650 50 0.0 -1.439378238341969E-4 NULL NULL -50 0.0 50 1 89011 -9659 59 0.0 -1.4380370638782483E-4 NULL NULL -59 0.0 59 1 89011 -9682 7 0.0 -1.4346209460855197E-4 NULL NULL -7 0.0 7 1 89011 -9719 44 0.0 -1.4291593785368864E-4 NULL NULL -44 0.0 44 1 89011 -9720 45 0.0 -1.4290123456790123E-4 NULL NULL -45 0.0 45 1 89011 -9723 48 0.0 -1.4285714285714287E-4 NULL NULL -48 0.0 48 1 89011 -9740 65 0.0 -1.4260780287474333E-4 NULL NULL -65 0.0 65 1 89011 -9752 2 0.0 -1.4243232157506154E-4 NULL NULL -2 0.0 2 1 89011 -9759 9 0.0 -1.4233015677835844E-4 NULL NULL -9 0.0 9 1 89011 -9761 11 0.0 -1.423009937506403E-4 NULL NULL -11 0.0 11 1 89011 -9767 17 0.0 -1.4221357632845295E-4 NULL NULL -17 0.0 17 1 89011 -9782 32 0.0 -1.419955019423431E-4 NULL NULL -32 0.0 32 1 89011 -9786 36 0.0 -1.4193746167995096E-4 NULL NULL -36 0.0 36 1 89011 -9791 41 0.0 -1.4186497804105812E-4 NULL NULL -41 0.0 41 1 89011 -9792 42 0.0 -1.4185049019607842E-4 NULL NULL -42 0.0 42 1 89011 -9801 51 0.0 -1.4172023262932354E-4 NULL NULL -51 0.0 51 1 89011 -9802 52 0.0 -1.4170577433176903E-4 NULL NULL -52 0.0 52 1 89011 -9828 3 0.0 -1.4133089133089134E-4 NULL NULL -3 0.0 3 1 89011 -9842 17 0.0 -1.4112985165616745E-4 NULL NULL -17 0.0 17 1 89011 -9857 32 0.0 -1.409150857258801E-4 NULL NULL -32 0.0 32 1 89011 -9883 58 0.0 -1.4054436911868865E-4 NULL NULL -58 0.0 58 1 89011 -9892 67 0.0 -1.4041649818034776E-4 NULL NULL -67 0.0 67 1 89011 -9907 7 0.0 -1.4020389623498535E-4 NULL NULL -7 0.0 7 1 89011 -9922 22 0.0 -1.3999193710945374E-4 NULL NULL -22 0.0 22 1 89011 -9924 24 0.0 -1.3996372430471584E-4 NULL NULL -24 0.0 24 1 89011 -9925 25 0.0 -1.3994962216624685E-4 NULL NULL -25 0.0 25 1 89011 -9926 26 0.0 -1.399355228692323E-4 NULL NULL -26 0.0 26 1 89011 -9929 29 0.0 -1.3989324201833014E-4 NULL NULL -29 0.0 29 1 89011 -9930 30 0.0 -1.3987915407854984E-4 NULL NULL -30 0.0 30 1 89011 -9934 34 0.0 -1.3982283068250453E-4 NULL NULL -34 0.0 34 1 89011 -9951 51 0.0 -1.3958396141091348E-4 NULL NULL -51 0.0 51 1 89011 -9969 69 0.0 -1.393319289798375E-4 NULL NULL -69 0.0 69 1 89011 -9971 71 0.0 -1.3930398154648481E-4 NULL NULL -71 0.0 71 1 89011 -9987 12 0.0 -1.3908080504656053E-4 NULL NULL -12 0.0 12 1 89011 -10036 61 0.0 -1.384017536867278E-4 NULL NULL -61 0.0 61 1 89011 -10044 69 0.0 -1.382915173237754E-4 NULL NULL -69 0.0 69 1 89011 -10058 8 0.0 -1.380990256512229E-4 NULL NULL -8 0.0 8 1 89011 -10065 15 0.0 -1.3800298062593145E-4 NULL NULL -15 0.0 15 1 89011 -10077 27 0.0 -1.3783864245311105E-4 NULL NULL -27 0.0 27 1 89011 -10096 46 0.0 -1.3757923930269415E-4 NULL NULL -46 0.0 46 1 89011 -10097 47 0.0 -1.3756561354857878E-4 NULL NULL -47 0.0 47 1 89011 -10104 54 0.0 -1.3747030878859858E-4 NULL NULL -54 0.0 54 1 89011 -10120 70 0.0 -1.3725296442687748E-4 NULL NULL -70 0.0 70 1 89011 -10129 4 0.0 -1.3713100997136932E-4 NULL NULL -4 0.0 4 1 89011 -10131 6 0.0 -1.3710393840687E-4 NULL NULL -6 0.0 6 1 89011 -10139 14 0.0 -1.3699575895058684E-4 NULL NULL -14 0.0 14 1 89011 -10149 24 0.0 -1.3686077446053798E-4 NULL NULL -24 0.0 24 1 89011 -10174 49 0.0 -1.365244741497936E-4 NULL NULL -49 0.0 49 1 89011 -10187 62 0.0 -1.3635025031903406E-4 NULL NULL -62 0.0 62 1 89011 -10198 73 0.0 -1.3620317709354775E-4 NULL NULL -73 0.0 73 1 89011 -10205 5 0.0 -1.3610975012248898E-4 NULL NULL -5 0.0 5 1 89011 -10211 11 0.0 -1.3602977181470963E-4 NULL NULL -11 0.0 11 1 89011 -10227 27 0.0 -1.3581695511880317E-4 NULL NULL -27 0.0 27 1 89011 -10230 30 0.0 -1.3577712609970675E-4 NULL NULL -30 0.0 30 1 89011 -10242 42 0.0 -1.3561804335090802E-4 NULL NULL -42 0.0 42 1 89011 -10273 73 0.0 -1.3520879976637788E-4 NULL NULL -73 0.0 73 1 89011 -10284 9 0.0 -1.3506417736289383E-4 NULL NULL -9 0.0 9 1 89011 -10285 10 0.0 -1.35051045211473E-4 NULL NULL -10 0.0 10 1 89011 -10295 20 0.0 -1.3491986401165614E-4 NULL NULL -20 0.0 20 1 89011 -10304 29 0.0 -1.3480201863354038E-4 NULL NULL -29 0.0 29 1 89011 -10310 35 0.0 -1.3472356935014548E-4 NULL NULL -35 0.0 35 1 89011 -10312 37 0.0 -1.3469743987587276E-4 NULL NULL -37 0.0 37 1 89011 -10321 46 0.0 -1.3457998255982947E-4 NULL NULL -46 0.0 46 1 89011 -10346 71 0.0 -1.3425478445776146E-4 NULL NULL -71 0.0 71 1 89011 -10364 14 0.0 -1.3402161327672713E-4 NULL NULL -14 0.0 14 1 89011 -10383 33 0.0 -1.3377636521236637E-4 NULL NULL -33 0.0 33 1 89011 -10394 44 0.0 -1.336347893015201E-4 NULL NULL -44 900.0 44 2 89012 -10401 51 0.0 -1.335448514565907E-4 NULL NULL -51 0.0 51 1 89011 -10403 53 0.0 -1.3351917716043448E-4 NULL NULL -53 0.0 53 1 89011 -10415 65 0.0 -1.3336533845415268E-4 NULL NULL -65 0.0 65 1 89011 -10436 11 0.0 -1.3309697201993102E-4 NULL NULL -11 0.0 11 1 89011 -10451 26 0.0 -1.3290594201511818E-4 NULL NULL -26 0.0 26 1 89011 -10452 27 0.0 -1.3289322617680827E-4 NULL NULL -27 0.0 27 1 89011 -10467 42 0.0 -1.3270278016623674E-4 NULL NULL -42 0.0 42 1 89011 -10470 45 0.0 -1.326647564469914E-4 NULL NULL -45 812.25 45 2 89012 -10484 59 0.0 -1.324876001526135E-4 NULL NULL -59 0.0 59 1 89011 -10485 60 0.0 -1.3247496423462088E-4 NULL NULL -60 1600.0 60 2 89012 -10495 70 0.0 -1.323487374940448E-4 NULL NULL -70 0.0 70 1 89011 -10496 71 0.0 -1.323361280487805E-4 NULL NULL -71 12.25 71 2 89012 -10520 20 0.0 -1.320342205323194E-4 NULL NULL -20 0.0 20 1 89011 -10522 22 0.0 -1.320091237407337E-4 NULL NULL -22 0.0 22 1 89011 -10528 28 0.0 -1.319338905775076E-4 NULL NULL -28 0.0 28 1 89011 -10532 32 0.0 -1.3188378275731105E-4 NULL NULL -32 0.0 32 1 89011 -10538 38 0.0 -1.3180869235148986E-4 NULL NULL -38 0.0 38 1 89011 -10548 48 0.0 -1.3168373151308305E-4 NULL NULL -48 0.0 48 1 89011 -10551 51 0.0 -1.3164628945123684E-4 NULL NULL -51 0.0 51 1 89011 -10553 53 0.0 -1.3162133990334503E-4 NULL NULL -53 0.0 53 1 89011 -10554 54 0.0 -1.3160886867538373E-4 NULL NULL -54 0.0 54 1 89011 -10558 58 0.0 -1.3155900738776282E-4 NULL NULL -58 0.0 58 1 89011 -10576 1 0.0 -1.3133509833585476E-4 NULL NULL -1 0.0 1 1 89011 -10592 17 0.0 -1.3113670694864048E-4 NULL NULL -17 0.0 17 1 89011 -10601 26 0.0 -1.3102537496462597E-4 NULL NULL -26 0.0 26 1 89011 -10637 62 0.0 -1.3058193099558147E-4 NULL NULL -62 0.0 62 1 89011 -10649 74 0.0 -1.3043478260869564E-4 NULL NULL -74 0.0 74 1 89011 -10652 2 0.0 -1.303980473150582E-4 NULL NULL -2 0.0 2 1 89011 -10653 3 0.0 -1.303858068149817E-4 NULL NULL -3 0.0 3 1 89011 -10663 13 0.0 -1.3026352808778017E-4 NULL NULL -13 0.0 13 1 89011 -10666 16 0.0 -1.3022688918057379E-4 NULL NULL -16 0.0 16 1 89011 -10672 22 0.0 -1.301536731634183E-4 NULL NULL -22 0.0 22 1 89011 -10688 38 0.0 -1.2995883233532935E-4 NULL NULL -38 0.0 38 1 89011 -10701 51 0.0 -1.298009531819456E-4 NULL NULL -51 0.0 51 1 89011 -10713 63 0.0 -1.2965555866704004E-4 NULL NULL -63 0.0 63 1 89011 -10723 73 0.0 -1.295346451552737E-4 NULL NULL -73 0.0 73 1 89011 -10725 0 0.0 -1.2951048951048951E-4 NULL NULL 0 0.0 0 1 89011 -10770 45 0.0 -1.2896935933147632E-4 NULL NULL -45 0.0 45 1 89011 -10785 60 0.0 -1.2878998609179416E-4 NULL NULL -60 0.0 60 1 89011 -10802 2 0.0 -1.2858729864839846E-4 NULL NULL -2 0.0 2 1 89011 -10807 7 0.0 -1.285278060516332E-4 NULL NULL -7 0.0 7 1 89011 -10827 27 0.0 -1.282903851482405E-4 NULL NULL -27 0.0 27 1 89011 -10845 45 0.0 -1.280774550484094E-4 NULL NULL -45 0.0 45 1 89011 -10858 58 0.0 -1.2792411125437465E-4 NULL NULL -58 0.0 58 1 89011 -10861 61 0.0 -1.2788877635576835E-4 NULL NULL -61 0.0 61 1 89011 -10867 67 0.0 -1.2781816508696052E-4 NULL NULL -67 0.0 67 1 89011 -10871 71 0.0 -1.2777113421028424E-4 NULL NULL -71 0.0 71 1 89011 -10903 28 0.0 -1.2739612950564064E-4 NULL NULL -28 0.0 28 1 89011 -10907 32 0.0 -1.2734940863665537E-4 NULL NULL -32 0.0 32 1 89011 -10912 37 0.0 -1.2729105571847508E-4 NULL NULL -37 0.0 37 1 89011 -10921 46 0.0 -1.2718615511400055E-4 NULL NULL -46 0.0 46 1 89011 -10922 47 0.0 -1.2717451016297382E-4 NULL NULL -47 0.0 47 1 89011 -10952 2 0.0 -1.2682615047479912E-4 NULL NULL -2 0.0 2 1 89011 -10953 3 0.0 -1.2681457135031498E-4 NULL NULL -3 0.0 3 1 89011 -11014 64 0.0 -1.2611222080987833E-4 NULL NULL -64 0.0 64 1 89011 -11022 72 0.0 -1.2602068590092543E-4 NULL NULL -72 0.0 72 1 89011 -11028 3 0.0 -1.2595212187159957E-4 NULL NULL -3 0.0 3 1 89011 -11044 19 0.0 -1.2576964867801521E-4 NULL NULL -19 0.0 19 1 89011 -11049 24 0.0 -1.2571273418408906E-4 NULL NULL -24 0.0 24 1 89011 -11054 29 0.0 -1.2565587117785418E-4 NULL NULL -29 0.0 29 1 89011 -11059 34 0.0 -1.2559905958947463E-4 NULL NULL -34 0.0 34 1 89011 -11065 40 0.0 -1.2553095345684592E-4 NULL NULL -40 0.0 40 1 89011 -11080 55 0.0 -1.253610108303249E-4 NULL NULL -55 0.0 55 1 89011 -11081 56 0.0 -1.2534969768071474E-4 NULL NULL -56 0.0 56 1 89011 -11083 58 0.0 -1.2532707750609041E-4 NULL NULL -58 0.0 58 1 89011 -11092 67 0.0 -1.2522538766678688E-4 NULL NULL -67 0.0 67 1 89011 -11097 72 0.0 -1.2516896458502299E-4 NULL NULL -72 0.0 72 1 89011 -11102 2 0.0 -1.2511259232570707E-4 NULL NULL -2 0.0 2 1 89011 -11112 12 0.0 -1.25E-4 NULL NULL -12 0.0 12 1 89011 -11148 48 0.0 -1.2459634015069966E-4 NULL NULL -48 0.0 48 1 89011 -11150 50 0.0 -1.2457399103139015E-4 NULL NULL -50 64.0 50 2 89012 -11165 65 0.0 -1.2440662785490373E-4 NULL NULL -65 0.0 65 1 89011 -11168 68 0.0 -1.2437320916905444E-4 NULL NULL -68 0.0 68 1 89011 -11181 6 0.0 -1.2422860209283606E-4 NULL NULL -6 0.0 6 1 89011 -11189 14 0.0 -1.2413978014121012E-4 NULL NULL -14 0.0 14 1 89011 -11197 22 0.0 -1.2405108511208358E-4 NULL NULL -22 0.0 22 1 89011 -11214 39 0.0 -1.2386302835741038E-4 NULL NULL -39 0.0 39 1 89011 -11230 55 0.0 -1.2368655387355297E-4 NULL NULL -55 0.0 55 1 89011 -11231 56 0.0 -1.2367554091354286E-4 NULL NULL -56 0.0 56 1 89011 -11236 61 0.0 -1.2362050551797794E-4 NULL NULL -61 0.0 61 1 89011 -11242 67 0.0 -1.235545276641167E-4 NULL NULL -67 0.0 67 1 89011 -11246 71 0.0 -1.2351058154010314E-4 NULL NULL -71 0.0 71 1 89011 -11286 36 0.0 -1.230728335991494E-4 NULL NULL -36 0.0 36 1 89011 -11302 52 0.0 -1.2289860201734207E-4 NULL NULL -52 0.0 52 1 89011 -11319 69 0.0 -1.2271402067320434E-4 NULL NULL -69 0.0 69 1 89011 -11333 8 0.0 -1.225624283067149E-4 NULL NULL -8 0.0 8 1 89011 -11334 9 0.0 -1.2255161461090523E-4 NULL NULL -9 0.0 9 1 89011 -11342 17 0.0 -1.224651736907071E-4 NULL NULL -17 0.0 17 1 89011 -11343 18 0.0 -1.2245437714890242E-4 NULL NULL -18 0.0 18 1 89011 -11350 25 0.0 -1.2237885462555067E-4 NULL NULL -25 0.0 25 1 89011 -11357 32 0.0 -1.22303425200317E-4 NULL NULL -32 0.0 32 1 89011 -11359 34 0.0 -1.222818910115327E-4 NULL NULL -34 0.0 34 1 89011 -11391 66 0.0 -1.2193837239926257E-4 NULL NULL -66 0.0 66 1 89011 -11394 69 0.0 -1.2190626645602949E-4 NULL NULL -69 0.0 69 1 89011 -11401 1 0.0 -1.2183141829664064E-4 NULL NULL -1 0.0 1 1 89011 -11411 11 0.0 -1.2172465165191482E-4 NULL NULL -11 0.0 11 1 89011 -11419 19 0.0 -1.2163937297486645E-4 NULL NULL -19 0.0 19 1 89011 -11443 43 0.0 -1.2138425238136852E-4 NULL NULL -43 0.0 43 1 89011 -11449 49 0.0 -1.213206393571491E-4 NULL NULL -49 0.0 49 1 89011 -11457 57 0.0 -1.2123592563498298E-4 NULL NULL -57 0.0 57 1 89011 -11459 59 0.0 -1.2121476568636007E-4 NULL NULL -59 0.0 59 1 89011 -11476 1 0.0 -1.2103520390379924E-4 NULL NULL -1 0.0 1 1 89011 -11494 19 0.0 -1.208456586044893E-4 NULL NULL -19 0.0 19 1 89011 -11505 30 0.0 -1.2073011734028684E-4 NULL NULL -30 0.0 30 1 89011 -11511 36 0.0 -1.2066718790721918E-4 NULL NULL -36 0.0 36 1 89011 -11515 40 0.0 -1.206252713851498E-4 NULL NULL -40 0.0 40 1 89011 -11528 53 0.0 -1.2048924358084663E-4 NULL NULL -53 0.0 53 1 89011 -11534 59 0.0 -1.2042656493844287E-4 NULL NULL -59 0.0 59 1 89011 -11561 11 0.0 -1.2014531614912205E-4 NULL NULL -11 0.0 11 1 89011 -11565 15 0.0 -1.2010376134889754E-4 NULL NULL -15 0.0 15 1 89011 -11579 29 0.0 -1.1995854564297434E-4 NULL NULL -29 0.0 29 1 89011 -11583 33 0.0 -1.1991711991711992E-4 NULL NULL -33 0.0 33 1 89011 -11595 45 0.0 -1.1979301423027167E-4 NULL NULL -45 0.0 45 1 89011 -11598 48 0.0 -1.1976202793585102E-4 NULL NULL -48 0.0 48 1 89011 -11625 0 0.0 -1.1948387096774193E-4 NULL NULL 0 0.0 0 1 89011 -11632 7 0.0 -1.1941196698762036E-4 NULL NULL -7 0.0 7 1 89011 -11641 16 0.0 -1.193196460785156E-4 NULL NULL -16 0.0 16 1 89011 -11642 17 0.0 -1.1930939701082288E-4 NULL NULL -17 0.0 17 1 89011 -11654 29 0.0 -1.1918654539214004E-4 NULL NULL -29 0.0 29 1 89011 -11658 33 0.0 -1.1914565105506949E-4 NULL NULL -33 0.0 33 1 89011 -11668 43 0.0 -1.1904353788138499E-4 NULL NULL -43 0.0 43 1 89011 -11673 48 0.0 -1.1899254690310974E-4 NULL NULL -48 0.0 48 1 89011 -11675 50 0.0 -1.1897216274089935E-4 NULL NULL -50 0.0 50 1 89011 -11681 56 0.0 -1.1891105213594727E-4 NULL NULL -56 0.0 56 1 89011 -11737 37 0.0 -1.1834369941211553E-4 NULL NULL -37 0.0 37 1 89011 -11758 58 0.0 -1.1813233543119579E-4 NULL NULL -58 0.0 58 1 89011 -11767 67 0.0 -1.1804198181354636E-4 NULL NULL -67 0.0 67 1 89011 -11771 71 0.0 -1.1800186900008496E-4 NULL NULL -71 0.0 71 1 89011 -11794 19 0.0 -1.1777174834661693E-4 NULL NULL -19 0.0 19 1 89011 -11811 36 0.0 -1.176022352044704E-4 NULL NULL -36 0.0 36 1 89011 -11833 58 0.0 -1.1738358827009211E-4 NULL NULL -58 0.0 58 1 89011 -11841 66 0.0 -1.1730428173296175E-4 NULL NULL -66 0.0 66 1 89011 -11847 72 0.0 -1.1724487211952393E-4 NULL NULL -72 100.0 72 2 89012 -11867 17 0.0 -1.1704727395297885E-4 NULL NULL -17 0.0 17 1 89011 -11883 33 0.0 -1.168896743246655E-4 NULL NULL -33 1406.25 33 2 89012 -11886 36 0.0 -1.1686017163048965E-4 NULL NULL -36 0.0 36 1 89011 -11913 63 0.0 -1.1659531604129942E-4 NULL NULL -63 0.0 63 1 89011 -11932 7 0.0 -1.1640965471002346E-4 NULL NULL -7 0.0 7 1 89011 -11935 10 0.0 -1.1638039379974864E-4 NULL NULL -10 0.0 10 1 89011 -11936 11 0.0 -1.1637064343163539E-4 NULL NULL -11 0.0 11 1 89011 -11952 27 0.0 -1.1621485943775101E-4 NULL NULL -27 0.0 27 1 89011 -11953 28 0.0 -1.1620513678574417E-4 NULL NULL -28 0.0 28 1 89011 -11977 52 0.0 -1.1597228020372381E-4 NULL NULL -52 0.0 52 1 89011 -11979 54 0.0 -1.1595291760581017E-4 NULL NULL -54 0.0 54 1 89011 -11996 71 0.0 -1.1578859619873292E-4 NULL NULL -71 0.0 71 1 89011 -12024 24 0.0 -1.1551896207584831E-4 NULL NULL -24 0.0 24 1 89011 -12034 34 0.0 -1.1542296825660629E-4 NULL NULL -34 0.0 34 1 89011 -12050 50 0.0 -1.1526970954356847E-4 NULL NULL -50 0.0 50 1 89011 -12059 59 0.0 -1.1518368023882577E-4 NULL NULL -59 0.0 59 1 89011 -12060 60 0.0 -1.1517412935323383E-4 NULL NULL -60 0.0 60 1 89011 -12078 3 0.0 -1.1500248385494287E-4 NULL NULL -3 0.0 3 1 89011 -12081 6 0.0 -1.1497392599950335E-4 NULL NULL -6 0.0 6 1 89011 -12104 29 0.0 -1.1475545274289491E-4 NULL NULL -29 0.0 29 1 89011 -12112 37 0.0 -1.1467965653896962E-4 NULL NULL -37 0.0 37 1 89011 -12136 61 0.0 -1.1445286750164798E-4 NULL NULL -61 0.0 61 1 89011 -12141 66 0.0 -1.1440573264146281E-4 NULL NULL -66 0.0 66 1 89011 -12157 7 0.0 -1.1425516163527185E-4 NULL NULL -7 0.0 7 1 89011 -12161 11 0.0 -1.1421758079105337E-4 NULL NULL -11 0.0 11 1 89011 -12170 20 0.0 -1.1413311421528348E-4 NULL NULL -20 0.0 20 1 89011 -12176 26 0.0 -1.1407687253613667E-4 NULL NULL -26 0.0 26 1 89011 -12181 31 0.0 -1.1403004679418767E-4 NULL NULL -31 0.0 31 1 89011 -12183 33 0.0 -1.1401132725929574E-4 NULL NULL -33 1482.25 33 2 89012 -12200 50 0.0 -1.1385245901639344E-4 NULL NULL -50 0.0 50 1 89011 -12208 58 0.0 -1.1377785058977719E-4 NULL NULL -58 0.0 58 1 89011 -12227 2 0.0 -1.1360104686349881E-4 NULL NULL -2 0.0 2 1 89011 -12230 5 0.0 -1.1357318070318888E-4 NULL NULL -5 0.0 5 1 89011 -12235 10 0.0 -1.1352676747037188E-4 NULL NULL -10 0.0 10 1 89011 -12269 44 0.0 -1.1321216073029587E-4 NULL NULL -44 0.0 44 1 89011 -12272 47 0.0 -1.1318448500651891E-4 NULL NULL -47 0.0 47 1 89011 -12273 48 0.0 -1.131752627719384E-4 NULL NULL -48 0.0 48 1 89011 -12291 66 0.0 -1.1300951916036124E-4 NULL NULL -66 272.25 66 2 89012 -12292 67 0.0 -1.13000325414904E-4 NULL NULL -67 0.0 67 1 89011 -12322 22 0.0 -1.127252069469242E-4 NULL NULL -22 0.0 22 1 89011 -12339 39 0.0 -1.1256990031607099E-4 NULL NULL -39 1892.25 39 2 89012 -12348 48 0.0 -1.1248785228377065E-4 NULL NULL -48 0.0 48 1 89011 -12353 53 0.0 -1.1244232170322999E-4 NULL NULL -53 0.0 53 1 89011 -12363 63 0.0 -1.1235137102644989E-4 NULL NULL -63 0.0 63 1 89011 -12375 0 0.0 -1.1224242424242424E-4 NULL NULL 0 0.0 0 1 89011 -12400 25 0.0 -1.1201612903225807E-4 NULL NULL -25 0.0 25 1 89011 -12403 28 0.0 -1.1198903491090865E-4 NULL NULL -28 0.0 28 1 89011 -12417 42 0.0 -1.1186276878473061E-4 NULL NULL -42 0.0 42 1 89011 -12420 45 0.0 -1.1183574879227053E-4 NULL NULL -45 0.0 45 1 89011 -12422 47 0.0 -1.1181774271453872E-4 NULL NULL -47 0.0 47 1 89011 -12470 20 0.0 -1.1138732959101844E-4 NULL NULL -20 0.0 20 1 89011 -12473 23 0.0 -1.1136053876372965E-4 NULL NULL -23 0.0 23 1 89011 -12477 27 0.0 -1.1132483770137052E-4 NULL NULL -27 0.0 27 1 89011 -12494 44 0.0 -1.1117336321434288E-4 NULL NULL -44 0.0 44 1 89011 -12520 70 0.0 -1.1094249201277955E-4 NULL NULL -70 0.0 70 1 89011 -12525 0 0.0 -1.1089820359281437E-4 NULL NULL 0 0.0 0 1 89011 -12526 1 0.0 -1.1088935015168449E-4 NULL NULL -1 0.0 1 1 89011 -12529 4 0.0 -1.1086279830792561E-4 NULL NULL -4 0.0 4 1 89011 -12531 6 0.0 -1.1084510414172851E-4 NULL NULL -6 0.0 6 1 89011 -12550 25 0.0 -1.1067729083665338E-4 NULL NULL -25 0.0 25 1 89011 -12554 29 0.0 -1.1064202644575435E-4 NULL NULL -29 0.0 29 1 89011 -12557 32 0.0 -1.1061559289639245E-4 NULL NULL -32 0.0 32 1 89011 -12560 35 0.0 -1.1058917197452229E-4 NULL NULL -35 0.0 35 1 89011 -12563 38 0.0 -1.1056276367109768E-4 NULL NULL -38 0.0 38 1 89011 -12574 49 0.0 -1.104660410370606E-4 NULL NULL -49 0.0 49 1 89011 -12581 56 0.0 -1.1040457833240601E-4 NULL NULL -56 0.0 56 1 89011 -12593 68 0.0 -1.1029937266735488E-4 NULL NULL -68 0.0 68 1 89011 -12613 13 0.0 -1.101244747482756E-4 NULL NULL -13 0.0 13 1 89011 -12641 41 0.0 -1.0988054742504549E-4 NULL NULL -41 0.0 41 1 89011 -12643 43 0.0 -1.0986316538796172E-4 NULL NULL -43 0.0 43 1 89011 -12652 52 0.0 -1.0978501422699968E-4 NULL NULL -52 0.0 52 1 89011 -12660 60 0.0 -1.0971563981042654E-4 NULL NULL -60 0.0 60 1 89011 -12665 65 0.0 -1.0967232530596132E-4 NULL NULL -65 0.0 65 1 89011 -12734 59 0.0 -1.0907805874038009E-4 NULL NULL -59 0.0 59 1 89011 -12746 71 0.0 -1.089753648203358E-4 NULL NULL -71 0.0 71 1 89011 -12750 0 0.0 -1.0894117647058824E-4 NULL NULL 0 0.0 0 1 89011 -12752 2 0.0 -1.0892409033877039E-4 NULL NULL -2 0.0 2 1 89011 -12772 22 0.0 -1.0875352333228939E-4 NULL NULL -22 0.0 22 1 89011 -12778 28 0.0 -1.0870245734856785E-4 NULL NULL -28 0.0 28 1 89011 -12781 31 0.0 -1.0867694233628042E-4 NULL NULL -31 169.0 31 2 89012 -12849 24 0.0 -1.0810179780527668E-4 NULL NULL -24 0.0 24 1 89011 -12857 32 0.0 -1.080345337170413E-4 NULL NULL -32 0.0 32 1 89011 -12870 45 0.0 -1.0792540792540792E-4 NULL NULL -45 0.0 45 1 89011 -12880 55 0.0 -1.078416149068323E-4 NULL NULL -55 0.0 55 1 89011 -12901 1 0.0 -1.0766607239748857E-4 NULL NULL -1 0.0 1 1 89011 -12905 5 0.0 -1.0763270050368074E-4 NULL NULL -5 0.0 5 1 89011 -12918 18 0.0 -1.075243845796563E-4 NULL NULL -18 0.0 18 1 89011 -12935 35 0.0 -1.0738306919211443E-4 NULL NULL -35 0.0 35 1 89011 -12936 36 0.0 -1.073747680890538E-4 NULL NULL -36 0.0 36 1 89011 -12940 40 0.0 -1.0734157650695519E-4 NULL NULL -40 0.0 40 1 89011 -13008 33 0.0 -1.0678044280442804E-4 NULL NULL -33 0.0 33 1 89011 -13023 48 0.0 -1.0665745219995393E-4 NULL NULL -48 0.0 48 1 89011 -13026 51 0.0 -1.0663288807001381E-4 NULL NULL -51 0.0 51 1 89011 -13062 12 0.0 -1.0633899862195683E-4 NULL NULL -12 0.0 12 1 89011 -13071 21 0.0 -1.062657792058756E-4 NULL NULL -21 0.0 21 1 89011 -13074 24 0.0 -1.0624139513538321E-4 NULL NULL -24 0.0 24 1 89011 -13078 28 0.0 -1.0620890044349289E-4 NULL NULL -28 0.0 28 1 89011 -13087 37 0.0 -1.0613586001375411E-4 NULL NULL -37 0.0 37 1 89011 -13092 42 0.0 -1.0609532538955087E-4 NULL NULL -42 0.0 42 1 89011 -13093 43 0.0 -1.0608722217979074E-4 NULL NULL -43 0.0 43 1 89011 -13117 67 0.0 -1.0589311580391858E-4 NULL NULL -67 0.0 67 1 89011 -13132 7 0.0 -1.057721596101127E-4 NULL NULL -7 0.0 7 1 89011 -13144 19 0.0 -1.0567559342665856E-4 NULL NULL -19 0.0 19 1 89011 -13153 28 0.0 -1.0560328442180491E-4 NULL NULL -28 0.0 28 1 89011 -13164 39 0.0 -1.0551504102096627E-4 NULL NULL -39 0.0 39 1 89011 -13169 44 0.0 -1.0547497911762472E-4 NULL NULL -44 0.0 44 1 89011 -13192 67 0.0 -1.052910855063675E-4 NULL NULL -67 0.0 67 1 89011 -13209 9 0.0 -1.0515557574381104E-4 NULL NULL -9 0.0 9 1 89011 -13221 21 0.0 -1.0506013160880418E-4 NULL NULL -21 0.0 21 1 89011 -13232 32 0.0 -1.0497279322853688E-4 NULL NULL -32 0.0 32 1 89011 -13253 53 0.0 -1.0480645891496266E-4 NULL NULL -53 0.0 53 1 89011 -13259 59 0.0 -1.0475903160117655E-4 NULL NULL -59 0.0 59 1 89011 -13271 71 0.0 -1.0466430562881471E-4 NULL NULL -71 0.0 71 1 89011 -13300 25 0.0 -1.044360902255639E-4 NULL NULL -25 0.0 25 1 89011 -13338 63 0.0 -1.0413855150697256E-4 NULL NULL -63 0.0 63 1 89011 -13347 72 0.0 -1.0406832996178917E-4 NULL NULL -72 0.0 72 1 89011 -13350 0 0.0 -1.0404494382022472E-4 NULL NULL 0 0.0 0 1 89011 -13352 2 0.0 -1.0402935889754344E-4 NULL NULL -2 0.0 2 1 89011 -13374 24 0.0 -1.0385823239120682E-4 NULL NULL -24 0.0 24 1 89011 -13383 33 0.0 -1.0378838825375477E-4 NULL NULL -33 2916.0 33 2 89012 -13387 37 0.0 -1.0375737655934862E-4 NULL NULL -37 0.0 37 1 89011 -13396 46 0.0 -1.0368766796058525E-4 NULL NULL -46 0.0 46 1 89011 -13404 54 0.0 -1.0362578334825425E-4 NULL NULL -54 0.0 54 1 89011 -13411 61 0.0 -1.035716948773395E-4 NULL NULL -61 0.0 61 1 89011 -13422 72 0.0 -1.0348681269557443E-4 NULL NULL -72 0.0 72 1 89011 -13436 11 0.0 -1.0337898183983328E-4 NULL NULL -11 0.0 11 1 89011 -13438 13 0.0 -1.0336359577318054E-4 NULL NULL -13 0.0 13 1 89011 -13439 14 0.0 -1.0335590445717688E-4 NULL NULL -14 0.0 14 1 89011 -13455 30 0.0 -1.032329988851728E-4 NULL NULL -30 0.0 30 1 89011 -13495 70 0.0 -1.0292701000370507E-4 NULL NULL -70 0.0 70 1 89011 -13539 39 0.0 -1.0259251052514956E-4 NULL NULL -39 0.0 39 1 89011 -13567 67 0.0 -1.0238077688508882E-4 NULL NULL -67 0.0 67 1 89011 -13589 14 0.0 -1.0221502685996026E-4 NULL NULL -14 0.0 14 1 89011 -13605 30 0.0 -1.0209481808158765E-4 NULL NULL -30 0.0 30 1 89011 -13612 37 0.0 -1.0204231560387894E-4 NULL NULL -37 0.0 37 1 89011 -13613 38 0.0 -1.0203481965768015E-4 NULL NULL -38 0.0 38 1 89011 -13638 63 0.0 -1.0184777826660801E-4 NULL NULL -63 0.0 63 1 89011 -13677 27 0.0 -1.0155735906997149E-4 NULL NULL -27 0.0 27 1 89011 -13678 28 0.0 -1.0154993420090656E-4 NULL NULL -28 0.0 28 1 89011 -13680 30 0.0 -1.0153508771929825E-4 NULL NULL -30 0.0 30 1 89011 -13684 34 0.0 -1.0150540777550424E-4 NULL NULL -34 0.0 34 1 89011 -13686 36 0.0 -1.0149057430951338E-4 NULL NULL -36 0.0 36 1 89011 -13701 51 0.0 -1.013794613531859E-4 NULL NULL -51 0.0 51 1 89011 -13710 60 0.0 -1.0131291028446389E-4 NULL NULL -60 0.0 60 1 89011 -13717 67 0.0 -1.0126120871910768E-4 NULL NULL -67 0.0 67 1 89011 -13720 70 0.0 -1.0123906705539358E-4 NULL NULL -70 0.0 70 1 89011 -13741 16 0.0 -1.010843461174587E-4 NULL NULL -16 625.0 16 2 89012 -13748 23 0.0 -1.0103287750945592E-4 NULL NULL -23 0.0 23 1 89011 -13752 27 0.0 -1.0100349040139616E-4 NULL NULL -27 0.0 27 1 89011 -13783 58 0.0 -1.0077631865341363E-4 NULL NULL -58 0.0 58 1 89011 -13800 0 0.0 -1.0065217391304348E-4 NULL NULL 0 0.0 0 1 89011 -13801 1 0.0 -1.0064488080573871E-4 NULL NULL -1 0.0 1 1 89011 -13802 2 0.0 -1.0063758875525286E-4 NULL NULL -2 0.0 2 1 89011 -13825 25 0.0 -1.0047016274864376E-4 NULL NULL -25 0.0 25 1 89011 -13833 33 0.0 -1.0041205812188246E-4 NULL NULL -33 0.0 33 1 89011 -13835 35 0.0 -1.0039754246476329E-4 NULL NULL -35 0.0 35 1 89011 -13893 18 0.0 -9.997840639170806E-5 NULL NULL -18 0.0 18 1 89011 -13909 34 0.0 -9.986339779998562E-5 NULL NULL -34 0.0 34 1 89011 -13941 66 0.0 -9.96341725844631E-5 NULL NULL -66 0.0 66 1 89011 -13947 72 0.0 -9.9591309959131E-5 NULL NULL -72 0.0 72 1 89011 -13953 3 0.0 -9.954848419694689E-5 NULL NULL -3 2162.25 3 2 89012 -13958 8 0.0 -9.951282418684626E-5 NULL NULL -8 0.0 8 1 89011 -13978 28 0.0 -9.937043926169695E-5 NULL NULL -28 0.0 28 1 89011 -13987 37 0.0 -9.930649889182813E-5 NULL NULL -37 0.0 37 1 89011 -13994 44 0.0 -9.925682435329427E-5 NULL NULL -44 0.0 44 1 89011 -14011 61 0.0 -9.91363928342017E-5 NULL NULL -61 0.0 61 1 89011 -14040 15 0.0 -9.893162393162393E-5 NULL NULL -15 0.0 15 1 89011 -14043 18 0.0 -9.89104892117069E-5 NULL NULL -18 0.0 18 1 89011 -14071 46 0.0 -9.871366640608343E-5 NULL NULL -46 0.0 46 1 89011 -14072 47 0.0 -9.87066515065378E-5 NULL NULL -47 0.0 47 1 89011 -14073 48 0.0 -9.86996376039224E-5 NULL NULL -48 0.0 48 1 89011 -14076 51 0.0 -9.867860187553282E-5 NULL NULL -51 0.0 51 1 89011 -14084 59 0.0 -9.862255041181483E-5 NULL NULL -59 0.0 59 1 89011 -14111 11 0.0 -9.843384593579477E-5 NULL NULL -11 0.0 11 1 89011 -14118 18 0.0 -9.838504037399065E-5 NULL NULL -18 0.0 18 1 89011 -14120 20 0.0 -9.837110481586402E-5 NULL NULL -20 0.0 20 1 89011 -14127 27 0.0 -9.832236143554896E-5 NULL NULL -27 0.0 27 1 89011 -14133 33 0.0 -9.828061982593929E-5 NULL NULL -33 0.0 33 1 89011 -14143 43 0.0 -9.821112918051333E-5 NULL NULL -43 0.0 43 1 89011 -14152 52 0.0 -9.814867156585641E-5 NULL NULL -52 0.0 52 1 89011 -14154 54 0.0 -9.813480288257736E-5 NULL NULL -54 0.0 54 1 89011 -14159 59 0.0 -9.810014831555901E-5 NULL NULL -59 0.0 59 1 89011 -14172 72 0.0 -9.801016088060965E-5 NULL NULL -72 0.0 72 1 89011 -14191 16 0.0 -9.78789373546614E-5 NULL NULL -16 0.0 16 1 89011 -14195 20 0.0 -9.785135611130679E-5 NULL NULL -20 0.0 20 1 89011 -14225 50 0.0 -9.764499121265377E-5 NULL NULL -50 0.0 50 1 89011 -14239 64 0.0 -9.754898518154365E-5 NULL NULL -64 0.0 64 1 89011 -14241 66 0.0 -9.753528544343796E-5 NULL NULL -66 0.0 66 1 89011 -14247 72 0.0 -9.749420930722258E-5 NULL NULL -72 0.0 72 1 89011 -14282 32 0.0 -9.725528637445735E-5 NULL NULL -32 0.0 32 1 89011 -14318 68 0.0 -9.701075569213577E-5 NULL NULL -68 0.0 68 1 89011 -14341 16 0.0 -9.685517049020292E-5 NULL NULL -16 0.0 16 1 89011 -14343 18 0.0 -9.684166492365614E-5 NULL NULL -18 0.0 18 1 89011 -14347 22 0.0 -9.681466508677772E-5 NULL NULL -22 0.0 22 1 89011 -14349 24 0.0 -9.68011708132971E-5 NULL NULL -24 0.0 24 1 89011 -14370 45 0.0 -9.665970772442588E-5 NULL NULL -45 0.0 45 1 89011 -14388 63 0.0 -9.653878231859883E-5 NULL NULL -63 0.0 63 1 89011 -14404 4 0.0 -9.643154679255763E-5 NULL NULL -4 0.0 4 1 89011 -14410 10 0.0 -9.639139486467731E-5 NULL NULL -10 0.0 10 1 89011 -14436 36 0.0 -9.621778886118039E-5 NULL NULL -36 0.0 36 1 89011 -14517 42 0.0 -9.5680925811118E-5 NULL NULL -42 0.0 42 1 89011 -14524 49 0.0 -9.563481134673643E-5 NULL NULL -49 0.0 49 1 89011 -14530 55 0.0 -9.559532002752925E-5 NULL NULL -55 0.0 55 1 89011 -14536 61 0.0 -9.55558613098514E-5 NULL NULL -61 0.0 61 1 89011 -14547 72 0.0 -9.548360486698288E-5 NULL NULL -72 0.0 72 1 89011 -14548 73 0.0 -9.54770415177344E-5 NULL NULL -73 0.0 73 1 89011 -14562 12 0.0 -9.53852492789452E-5 NULL NULL -12 0.0 12 1 89011 -14567 17 0.0 -9.53525090959017E-5 NULL NULL -17 0.0 17 1 89011 -14569 19 0.0 -9.533941931498387E-5 NULL NULL -19 0.0 19 1 89011 -14582 32 0.0 -9.525442326155534E-5 NULL NULL -32 0.0 32 1 89011 -14605 55 0.0 -9.510441629578912E-5 NULL NULL -55 0.0 55 1 89011 -14609 59 0.0 -9.507837634334998E-5 NULL NULL -59 0.0 59 1 89011 -14625 0 0.0 -9.497435897435898E-5 NULL NULL 0 0.0 0 1 89011 -14626 1 0.0 -9.496786544509778E-5 NULL NULL -1 0.0 1 1 89011 -14662 37 0.0 -9.47346883099168E-5 NULL NULL -37 0.0 37 1 89011 -14685 60 0.0 -9.458631256384066E-5 NULL NULL -60 0.0 60 1 89011 -14689 64 0.0 -9.456055551773435E-5 NULL NULL -64 0.0 64 1 89011 -14694 69 0.0 -9.452837893017558E-5 NULL NULL -69 3025.0 69 2 89012 -14709 9 0.0 -9.443198042015093E-5 NULL NULL -9 0.0 9 1 89011 -14744 44 0.0 -9.42078133478025E-5 NULL NULL -44 0.0 44 1 89011 -14751 51 0.0 -9.416310758592637E-5 NULL NULL -51 0.0 51 1 89011 -14761 61 0.0 -9.40993157645146E-5 NULL NULL -61 0.0 61 1 89011 -14778 3 0.0 -9.399106780349168E-5 NULL NULL -3 0.0 3 1 89011 -14785 10 0.0 -9.39465674670274E-5 NULL NULL -10 0.0 10 1 89011 -14806 31 0.0 -9.381331892476024E-5 NULL NULL -31 0.0 31 1 89011 -14809 34 0.0 -9.379431426835033E-5 NULL NULL -34 0.0 34 1 89011 -14821 46 0.0 -9.371837257944809E-5 NULL NULL -46 0.0 46 1 89011 -14822 47 0.0 -9.371204965591688E-5 NULL NULL -47 0.0 47 1 89011 -14848 73 0.0 -9.35479525862069E-5 NULL NULL -73 0.0 73 1 89011 -14854 4 0.0 -9.351016561195638E-5 NULL NULL -4 0.0 4 1 89011 -14872 22 0.0 -9.339698762775686E-5 NULL NULL -22 0.0 22 1 89011 -14889 39 0.0 -9.329034857948821E-5 NULL NULL -39 0.0 39 1 89011 -14899 49 0.0 -9.32277334049265E-5 NULL NULL -49 0.0 49 1 89011 -14900 50 0.0 -9.322147651006712E-5 NULL NULL -50 0.0 50 1 89011 -14907 57 0.0 -9.317770175085531E-5 NULL NULL -57 225.0 57 2 89012 -14909 59 0.0 -9.316520222684285E-5 NULL NULL -59 0.0 59 1 89011 -14921 71 0.0 -9.309027545070706E-5 NULL NULL -71 0.0 71 1 89011 -14933 8 0.0 -9.30154690952923E-5 NULL NULL -8 0.0 8 1 89011 -14965 40 0.0 -9.281657200133645E-5 NULL NULL -40 0.0 40 1 89011 -14966 41 0.0 -9.281037017239075E-5 NULL NULL -41 0.0 41 1 89011 -14974 49 0.0 -9.276078536129291E-5 NULL NULL -49 0.0 49 1 89011 -14985 60 0.0 -9.269269269269269E-5 NULL NULL -60 36.0 60 2 89012 -15006 6 0.0 -9.256297481007597E-5 NULL NULL -6 0.0 6 1 89011 -15007 7 0.0 -9.255680682348237E-5 NULL NULL -7 0.0 7 1 89011 -15012 12 0.0 -9.25259792166267E-5 NULL NULL -12 0.0 12 1 89011 -15013 13 0.0 -9.251981615932858E-5 NULL NULL -13 0.0 13 1 89011 -15014 14 0.0 -9.25136539230052E-5 NULL NULL -14 0.0 14 1 89011 -15035 35 0.0 -9.238443631526438E-5 NULL NULL -35 0.0 35 1 89011 -15038 38 0.0 -9.236600611783483E-5 NULL NULL -38 0.0 38 1 89011 -15061 61 0.0 -9.222495186242614E-5 NULL NULL -61 0.0 61 1 89011 -15065 65 0.0 -9.22004646531696E-5 NULL NULL -65 0.0 65 1 89011 -15071 71 0.0 -9.216375821113397E-5 NULL NULL -71 0.0 71 1 89011 -15082 7 0.0 -9.209653892056756E-5 NULL NULL -7 0.0 7 1 89011 -15091 16 0.0 -9.204161420714332E-5 NULL NULL -16 0.0 16 1 89011 -15092 17 0.0 -9.203551550490326E-5 NULL NULL -17 0.0 17 1 89011 -15101 26 0.0 -9.19806635322164E-5 NULL NULL -26 0.0 26 1 89011 -15103 28 0.0 -9.196848308283122E-5 NULL NULL -28 0.0 28 1 89011 -15111 36 0.0 -9.19197935278936E-5 NULL NULL -36 0.0 36 1 89011 -15112 37 0.0 -9.191371095817894E-5 NULL NULL -37 0.0 37 1 89011 -15119 44 0.0 -9.187115549970236E-5 NULL NULL -44 0.0 44 1 89011 -15143 68 0.0 -9.172554975896454E-5 NULL NULL -68 0.0 68 1 89011 -15148 73 0.0 -9.169527330340639E-5 NULL NULL -73 0.0 73 1 89011 -15153 3 0.0 -9.166501682835082E-5 NULL NULL -3 0.0 3 1 89011 -15169 19 0.0 -9.156833014701034E-5 NULL NULL -19 0.0 19 1 89011 -15180 30 0.0 -9.150197628458498E-5 NULL NULL -30 0.0 30 1 89011 -15188 38 0.0 -9.145377929944693E-5 NULL NULL -38 0.0 38 1 89011 -15193 43 0.0 -9.142368195879682E-5 NULL NULL -43 0.0 43 1 89011 -15198 48 0.0 -9.139360442163443E-5 NULL NULL -48 0.0 48 1 89011 -15223 73 0.0 -9.124351310516981E-5 NULL NULL -73 0.0 73 1 89011 -15227 2 0.0 -9.121954423064294E-5 NULL NULL -2 0.0 2 1 89011 -15232 7 0.0 -9.118960084033614E-5 NULL NULL -7 0.0 7 1 89011 -15234 9 0.0 -9.117762898779047E-5 NULL NULL -9 0.0 9 1 89011 -15242 17 0.0 -9.112977299566986E-5 NULL NULL -17 400.0 17 2 89012 -15254 29 0.0 -9.105808312573752E-5 NULL NULL -29 0.0 29 1 89011 -15275 50 0.0 -9.09328968903437E-5 NULL NULL -50 0.0 50 1 89011 -15277 52 0.0 -9.092099234142829E-5 NULL NULL -52 0.0 52 1 89011 -15278 53 0.0 -9.091504123576385E-5 NULL NULL -53 0.0 53 1 89011 -15296 71 0.0 -9.080805439330544E-5 NULL NULL -71 0.0 71 1 89011 -15298 73 0.0 -9.079618250751732E-5 NULL NULL -73 0.0 73 1 89011 -15313 13 0.0 -9.070724221249919E-5 NULL NULL -13 0.0 13 1 89011 -15324 24 0.0 -9.064212999216915E-5 NULL NULL -24 0.0 24 1 89011 -15325 25 0.0 -9.063621533442089E-5 NULL NULL -25 0.0 25 1 89011 -15328 28 0.0 -9.061847599164927E-5 NULL NULL -28 0.0 28 1 89011 -15340 40 0.0 -9.054758800521513E-5 NULL NULL -40 0.0 40 1 89011 -15369 69 0.0 -9.037673238336912E-5 NULL NULL -69 0.0 69 1 89011 -15375 0 0.0 -9.034146341463415E-5 NULL NULL 0 0.0 0 1 89011 -15401 26 0.0 -9.018894876956042E-5 NULL NULL -26 0.0 26 1 89011 -15416 41 0.0 -9.010119356512714E-5 NULL NULL -41 0.0 41 1 89011 -15417 42 0.0 -9.009534928974509E-5 NULL NULL -42 0.0 42 1 89011 -15423 48 0.0 -9.006029955261622E-5 NULL NULL -48 0.0 48 1 89011 -15429 54 0.0 -9.002527707563679E-5 NULL NULL -54 0.0 54 1 89011 -15436 61 0.0 -8.998445193055195E-5 NULL NULL -61 0.0 61 1 89011 -15443 68 0.0 -8.994366379589458E-5 NULL NULL -68 0.0 68 1 89011 -15456 6 0.0 -8.986801242236025E-5 NULL NULL -6 0.0 6 1 89011 -15509 59 0.0 -8.956090012250952E-5 NULL NULL -59 0.0 59 1 89011 -15512 62 0.0 -8.95435791645178E-5 NULL NULL -62 0.0 62 1 89011 -15516 66 0.0 -8.952049497293117E-5 NULL NULL -66 0.0 66 1 89011 -15523 73 0.0 -8.948012626425304E-5 NULL NULL -73 0.0 73 1 89011 -15541 16 0.0 -8.937648799948523E-5 NULL NULL -16 0.0 16 1 89011 -15545 20 0.0 -8.93534898681248E-5 NULL NULL -20 0.0 20 1 89011 -15548 23 0.0 -8.933624903524569E-5 NULL NULL -23 0.0 23 1 89011 -15549 24 0.0 -8.933050356936138E-5 NULL NULL -24 0.0 24 1 89011 -15551 26 0.0 -8.93190148543502E-5 NULL NULL -26 0.0 26 1 89011 -15588 63 0.0 -8.910700538876059E-5 NULL NULL -63 0.0 63 1 89011 -15593 68 0.0 -8.907843263002629E-5 NULL NULL -68 0.0 68 1 89011 -15602 2 0.0 -8.902704781438277E-5 NULL NULL -2 0.0 2 1 89011 -15605 5 0.0 -8.900993271387376E-5 NULL NULL -5 0.0 5 1 89011 -15609 9 0.0 -8.89871228137613E-5 NULL NULL -9 0.0 9 1 89011 -15616 16 0.0 -8.894723360655738E-5 NULL NULL -16 0.0 16 1 89011 -15620 20 0.0 -8.892445582586428E-5 NULL NULL -20 0.0 20 1 89011 -15625 25 0.0 -8.8896E-5 NULL NULL -25 0.0 25 1 89011 -15626 26 0.0 -8.889031102009471E-5 NULL NULL -26 0.0 26 1 89011 -15646 46 0.0 -8.877668413652051E-5 NULL NULL -46 0.0 46 1 89011 -15655 55 0.0 -8.872564675822421E-5 NULL NULL -55 0.0 55 1 89011 -15668 68 0.0 -8.865202961450089E-5 NULL NULL -68 0.0 68 1 89011 -15678 3 0.0 -8.859548411787218E-5 NULL NULL -3 0.0 3 1 89011 -15694 19 0.0 -8.8505161208105E-5 NULL NULL -19 0.0 19 1 89011 -15699 24 0.0 -8.847697305560863E-5 NULL NULL -24 0.0 24 1 89011 -15705 30 0.0 -8.844317096466093E-5 NULL NULL -30 0.0 30 1 89011 -15707 32 0.0 -8.843190933978481E-5 NULL NULL -32 0.0 32 1 89011 -15717 42 0.0 -8.837564420690972E-5 NULL NULL -42 0.0 42 1 89011 -15726 51 0.0 -8.8325066768409E-5 NULL NULL -51 0.0 51 1 89011 -15745 70 0.0 -8.821848205779612E-5 NULL NULL -70 0.0 70 1 89011 -15749 74 0.0 -8.819607594132961E-5 NULL NULL -74 0.0 74 1 89011 -15752 2 0.0 -8.817927882173692E-5 NULL NULL -2 0.0 2 1 89011 -15754 4 0.0 -8.81680842960518E-5 NULL NULL -4 0.0 4 1 89011 -15764 14 0.0 -8.811215427556457E-5 NULL NULL -14 0.0 14 1 89011 -15769 19 0.0 -8.808421586657366E-5 NULL NULL -19 0.0 19 1 89011 -15827 2 0.0 -8.776142035761673E-5 NULL NULL -2 0.0 2 1 89011 -15841 16 0.0 -8.768385834227637E-5 NULL NULL -16 0.0 16 1 89011 -15861 36 0.0 -8.757329298278797E-5 NULL NULL -36 0.0 36 1 89011 -15890 65 0.0 -8.741346758967904E-5 NULL NULL -65 0.0 65 1 89011 -15909 9 0.0 -8.730907033754479E-5 NULL NULL -9 0.0 9 1 89011 -15921 21 0.0 -8.724326361409459E-5 NULL NULL -21 0.0 21 1 89011 -15932 32 0.0 -8.718302786844088E-5 NULL NULL -32 0.0 32 1 89011 -15933 33 0.0 -8.717755601581623E-5 NULL NULL -33 0.0 33 1 89011 -15956 56 0.0 -8.705189270493858E-5 NULL NULL -56 0.0 56 1 89011 -15958 58 0.0 -8.704098257927059E-5 NULL NULL -58 0.0 58 1 89011 -15965 65 0.0 -8.70028186658315E-5 NULL NULL -65 0.0 65 1 89011 -15969 69 0.0 -8.698102573736615E-5 NULL NULL -69 0.0 69 1 89011 -15973 73 0.0 -8.695924372378389E-5 NULL NULL -73 0.0 73 1 89011 -15985 10 0.0 -8.689396309039725E-5 NULL NULL -10 0.0 10 1 89011 -16030 55 0.0 -8.665003119151591E-5 NULL NULL -55 0.0 55 1 89011 -16036 61 0.0 -8.661761037665253E-5 NULL NULL -61 0.0 61 1 89011 -16045 70 0.0 -8.656902461826114E-5 NULL NULL -70 0.0 70 1 89011 -16055 5 0.0 -8.651510432886951E-5 NULL NULL -5 0.0 5 1 89011 -16056 6 0.0 -8.650971599402093E-5 NULL NULL -6 0.0 6 1 89011 -16069 19 0.0 -8.643972867011015E-5 NULL NULL -19 0.0 19 1 89011 -16070 20 0.0 -8.643434971997511E-5 NULL NULL -20 0.0 20 1 89011 -16096 46 0.0 -8.629473161033797E-5 NULL NULL -46 342.25 46 2 89012 -16125 0 0.0 -8.613953488372093E-5 NULL NULL 0 0.0 0 1 89011 -16127 2 0.0 -8.612885223538166E-5 NULL NULL -2 0.0 2 1 89011 -16146 21 0.0 -8.602749907097733E-5 NULL NULL -21 0.0 21 1 89011 -16165 40 0.0 -8.59263841633158E-5 NULL NULL -40 0.0 40 1 89011 -16174 49 0.0 -8.587857054531965E-5 NULL NULL -49 0.0 49 1 89011 -16178 53 0.0 -8.585733712449006E-5 NULL NULL -53 0.0 53 1 89011 -16189 64 0.0 -8.579899932052628E-5 NULL NULL -64 306.25 64 2 89012 -16191 66 0.0 -8.578840096349824E-5 NULL NULL -66 0.0 66 1 89011 -16212 12 0.0 -8.567727609178386E-5 NULL NULL -12 0.0 12 1 89011 -16219 19 0.0 -8.564029841543868E-5 NULL NULL -19 0.0 19 1 89011 -16227 27 0.0 -8.559807727860973E-5 NULL NULL -27 0.0 27 1 89011 -16228 28 0.0 -8.559280256347055E-5 NULL NULL -28 0.0 28 1 89011 -16232 32 0.0 -8.557171020206999E-5 NULL NULL -32 306.25 32 2 89012 -16238 38 0.0 -8.554009114422959E-5 NULL NULL -38 0.0 38 1 89011 -16240 40 0.0 -8.552955665024631E-5 NULL NULL -40 0.0 40 1 89011 -16270 70 0.0 -8.537185003073141E-5 NULL NULL -70 0.0 70 1 89011 -16274 74 0.0 -8.535086641268281E-5 NULL NULL -74 0.0 74 1 89011 -16276 1 0.0 -8.534037847136889E-5 NULL NULL -1 0.0 1 1 89011 -16278 3 0.0 -8.532989310726133E-5 NULL NULL -3 0.0 3 1 89011 -16279 4 0.0 -8.53246513913631E-5 NULL NULL -4 0.0 4 1 89011 -16280 5 0.0 -8.531941031941033E-5 NULL NULL -5 0.0 5 1 89011 -16282 7 0.0 -8.530893010686648E-5 NULL NULL -7 0.0 7 1 89011 -16285 10 0.0 -8.529321461467609E-5 NULL NULL -10 0.0 10 1 89011 -16298 23 0.0 -8.522518100380415E-5 NULL NULL -23 0.0 23 1 89011 -16319 44 0.0 -8.511550952877014E-5 NULL NULL -44 0.0 44 1 89011 -16337 62 0.0 -8.502172981575565E-5 NULL NULL -62 0.0 62 1 89011 -16338 63 0.0 -8.501652589056188E-5 NULL NULL -63 0.0 63 1 89011 -16352 2 0.0 -8.494373776908023E-5 NULL NULL -2 0.0 2 1 89011 -16368 18 0.0 -8.486070381231672E-5 NULL NULL -18 0.0 18 1 89011 -16370 20 0.0 -8.485033598045205E-5 NULL NULL -20 0.0 20 1 89011 WARNING: Comparing a bigint and a double may result in a loss of precision. WARNING: Comparing a bigint and a double may result in a loss of precision. PREHOOK: query: -- TargetTypeClasses: Long, Double, Timestamp @@ -5881,14 +2214,15 @@ WHERE (((ctimestamp1 != 0)) AND ((((-257 != ctinyint) AND (cboolean2 IS NOT NULL)) AND ((cstring1 RLIKE '.*ss') - AND (-10669 < ctimestamp1))) - OR (ctimestamp2 = -10669) + AND (-3 < ctimestamp1))) + OR (ctimestamp2 = -5) OR ((ctimestamp1 < 0) AND (cstring2 LIKE '%b%')) OR (cdouble = cint) OR ((cboolean1 IS NULL) AND (cfloat < cint)))) GROUP BY ctimestamp1, cstring1 +LIMIT 50 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: Bool, Timestamp, String, Double, Long -- Functions: StDevP, Avg, Count, Min, Var, VarP, Sum @@ -5939,14 +2273,15 @@ WHERE (((ctimestamp1 != 0)) AND ((((-257 != ctinyint) AND (cboolean2 IS NOT NULL)) AND ((cstring1 RLIKE '.*ss') - AND (-10669 < ctimestamp1))) - OR (ctimestamp2 = -10669) + AND (-3 < ctimestamp1))) + OR (ctimestamp2 = -5) OR ((ctimestamp1 < 0) AND (cstring2 LIKE '%b%')) OR (cdouble = cint) OR ((cboolean1 IS NULL) AND (cfloat < cint)))) GROUP BY ctimestamp1, cstring1 +LIMIT 50 POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage @@ -5965,7 +2300,7 @@ STAGE PLANS: alias: alltypesorc Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((ctimestamp1 <> 0) and (((((((-257 <> ctinyint) and cboolean2 is not null) and ((cstring1 rlike '.*ss') and (-10669 < ctimestamp1))) or (ctimestamp2 = -10669)) or ((ctimestamp1 < 0) and (cstring2 like '%b%'))) or (cdouble = cint)) or (cboolean1 is null and (cfloat < cint)))) (type: boolean) + predicate: ((ctimestamp1 <> 0) and (((((((-257 <> ctinyint) and cboolean2 is not null) and ((cstring1 rlike '.*ss') and (-3 < ctimestamp1))) or (ctimestamp2 = -5)) or ((ctimestamp1 < 0) and (cstring2 like '%b%'))) or (cdouble = cint)) or (cboolean1 is null and (cfloat < cint)))) (type: boolean) Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ctimestamp1 (type: timestamp), cstring1 (type: string), cint (type: int), csmallint (type: smallint), ctinyint (type: tinyint), cfloat (type: float), cdouble (type: double) @@ -5996,17 +2331,20 @@ STAGE PLANS: expressions: _col0 (type: timestamp), _col1 (type: string), _col2 (type: double), (_col2 * 10.175) (type: double), (- _col2) (type: double), _col3 (type: double), (- _col2) (type: double), (-26.28 - _col2) (type: double), _col4 (type: bigint), (- _col4) (type: bigint), ((-26.28 - _col2) * (- _col2)) (type: double), _col5 (type: tinyint), (((-26.28 - _col2) * (- _col2)) * (- _col4)) (type: double), (- (_col2 * 10.175)) (type: double), _col6 (type: double), (_col6 + (((-26.28 - _col2) * (- _col2)) * (- _col4))) (type: double), (- (- _col2)) (type: double), ((- _col4) / _col2) (type: double), _col7 (type: double), (10.175 / _col3) (type: double), _col8 (type: double), _col9 (type: double), ((_col6 + (((-26.28 - _col2) * (- _col2)) * (- _col4))) - (((-26.28 - _col2) * (- _col2)) * (- _col4))) (type: double), (- (- (_col2 * 10.175))) (type: double), _col10 (type: double), (((_col6 + (((-26.28 - _col2) * (- _col2)) * (- _col4))) - (((-26.28 - _col2) * (- _col2)) * (- _col4))) * 10.175) (type: double), (10.175 % (10.175 / _col3)) (type: double), (- _col5) (type: tinyint), _col11 (type: double), _col12 (type: double), (- ((-26.28 - _col2) * (- _col2))) (type: double), ((- _col2) % _col10) (type: double), (-26.28 / (- _col5)) (type: double), _col13 (type: double), _col14 (type: bigint), ((_col6 + (((-26.28 - _col2) * (- _col2)) * (- _col4))) / _col7) (type: double), (- (- _col4)) (type: bigint), _col4 (type: bigint), ((_col6 + (((-26.28 - _col2) * (- _col2)) * (- _col4))) % -26.28) (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35, _col36, _col37, _col38 Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Limit + Number of rows: 50 + Statistics: Num rows: 50 Data size: 1500 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 50 Data size: 1500 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Stage: Stage-0 Fetch Operator - limit: -1 + limit: 50 Processor Tree: ListSink @@ -6054,14 +2392,15 @@ WHERE (((ctimestamp1 != 0)) AND ((((-257 != ctinyint) AND (cboolean2 IS NOT NULL)) AND ((cstring1 RLIKE '.*ss') - AND (-10669 < ctimestamp1))) - OR (ctimestamp2 = -10669) + AND (-3 < ctimestamp1))) + OR (ctimestamp2 = -5) OR ((ctimestamp1 < 0) AND (cstring2 LIKE '%b%')) OR (cdouble = cint) OR ((cboolean1 IS NULL) AND (cfloat < cint)))) GROUP BY ctimestamp1, cstring1 +LIMIT 50 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -6109,14 +2448,15 @@ WHERE (((ctimestamp1 != 0)) AND ((((-257 != ctinyint) AND (cboolean2 IS NOT NULL)) AND ((cstring1 RLIKE '.*ss') - AND (-10669 < ctimestamp1))) - OR (ctimestamp2 = -10669) + AND (-3 < ctimestamp1))) + OR (ctimestamp2 = -5) OR ((ctimestamp1 < 0) AND (cstring2 LIKE '%b%')) OR (cdouble = cint) OR ((cboolean1 IS NULL) AND (cfloat < cint)))) GROUP BY ctimestamp1, cstring1 +LIMIT 50 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -6170,201 +2510,6 @@ POSTHOOK: Input: default@alltypesorc 1969-12-31 15:59:46.82 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -46 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -46.0 NULL 6.522017819364598E-4 46 15601.0 0.0 NULL NULL -0.571304347826087 0.0 NULL NULL 1 1 NULL 1969-12-31 15:59:46.847 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -26 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -26.0 NULL 0.001413979988882123 26 -7196.0 0.0 NULL NULL -1.0107692307692309 0.0 NULL NULL 1 1 NULL 1969-12-31 15:59:46.915 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -25 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -25.0 NULL 0.0 25 -200.0 0.0 NULL NULL -1.0512000000000001 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:46.953 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 47 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 47.0 NULL 6.522017819364598E-4 -47 15601.0 0.0 NULL NULL 0.5591489361702128 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:46.966 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 38 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 38.0 NULL 0.001413979988882123 -38 -7196.0 0.0 NULL NULL 0.6915789473684211 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:46.978 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 32 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 32.0 NULL 0.001413979988882123 -32 -7196.0 0.0 NULL NULL 0.82125 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.031 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -7 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -7.0 NULL 0.001413979988882123 7 -7196.0 0.0 NULL NULL -3.7542857142857144 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.134 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -48 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -48.0 NULL 6.522017819364598E-4 48 15601.0 0.0 NULL NULL -0.5475 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.263 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 17 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 17.0 NULL 0.0 -17 -200.0 0.0 NULL NULL 1.5458823529411765 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.282 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 56 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 56.0 NULL 0.0 -56 -200.0 0.0 NULL NULL 0.4692857142857143 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.406 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -58 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -58.0 NULL 6.522017819364598E-4 58 15601.0 0.0 NULL NULL -0.4531034482758621 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.493 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -27.0 NULL 0.001413979988882123 27 -7196.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.511 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -55 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -55.0 NULL 6.522017819364598E-4 55 15601.0 0.0 NULL NULL -0.47781818181818186 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.616 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 39 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 39.0 NULL 6.522017819364598E-4 -39 15601.0 0.0 NULL NULL 0.6738461538461539 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.666 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 44 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 44.0 NULL 0.0 -44 -200.0 0.0 NULL NULL 0.5972727272727273 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.859 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -58 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -58.0 NULL 0.001413979988882123 58 -7196.0 0.0 NULL NULL -0.4531034482758621 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.921 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 52 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 52.0 NULL 0.0 -52 -200.0 0.0 NULL NULL 0.5053846153846154 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.975 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -17 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -17.0 NULL 6.522017819364598E-4 17 15601.0 0.0 NULL NULL -1.5458823529411765 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.022 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 35 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 35.0 NULL 0.001413979988882123 -35 -7196.0 0.0 NULL NULL 0.7508571428571429 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.052 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 15 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 15.0 NULL 6.522017819364598E-4 -15 15601.0 0.0 NULL NULL 1.752 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.12 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 8 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 8.0 NULL 0.001413979988882123 -8 -7196.0 0.0 NULL NULL 3.285 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.133 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -16.0 NULL 0.0 16 -200.0 0.0 NULL NULL -1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.152 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -31 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -31.0 NULL 0.0 31 -200.0 0.0 NULL NULL -0.847741935483871 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.299 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -60 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -60.0 NULL 6.522017819364598E-4 60 15601.0 0.0 NULL NULL -0.438 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.341 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 16.0 NULL 0.0 -16 -200.0 0.0 NULL NULL 1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.429 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -23 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -23.0 NULL 6.522017819364598E-4 23 15601.0 0.0 NULL NULL -1.142608695652174 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.462 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -16.0 NULL 0.001413979988882123 16 -7196.0 0.0 NULL NULL -1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.473 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 34 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 34.0 NULL 0.0 -34 -200.0 0.0 NULL NULL 0.7729411764705882 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.499 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 26 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 26.0 NULL 0.001413979988882123 -26 -7196.0 0.0 NULL NULL 1.0107692307692309 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.552 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -42 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -42.0 NULL 6.522017819364598E-4 42 15601.0 0.0 NULL NULL -0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.622 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 19 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 19.0 NULL 0.001413979988882123 -19 -7196.0 0.0 NULL NULL 1.3831578947368421 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.663 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 26 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 26.0 NULL 0.0 -26 -200.0 0.0 NULL NULL 1.0107692307692309 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.678 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -59 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -59.0 NULL 0.0 59 -200.0 0.0 NULL NULL -0.44542372881355935 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.679 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -60 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -60.0 NULL 6.522017819364598E-4 60 15601.0 0.0 NULL NULL -0.438 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.703 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -13 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -13.0 NULL 0.001413979988882123 13 -7196.0 0.0 NULL NULL -2.0215384615384617 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.734 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 62 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 62.0 NULL 0.001413979988882123 -62 -7196.0 0.0 NULL NULL 0.4238709677419355 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.779 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -34 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -34.0 NULL 0.001413979988882123 34 -7196.0 0.0 NULL NULL -0.7729411764705882 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.929 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -12 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -12.0 NULL 0.001413979988882123 12 -7196.0 0.0 NULL NULL -2.19 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.943 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 11 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 11.0 NULL 6.522017819364598E-4 -11 15601.0 0.0 NULL NULL 2.389090909090909 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.021 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 2 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 2.0 NULL 0.001413979988882123 -2 -7196.0 0.0 NULL NULL 13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.051 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 15 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 15.0 NULL 0.001413979988882123 -15 -7196.0 0.0 NULL NULL 1.752 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.053 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 62 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 62.0 NULL 0.0 -62 -200.0 0.0 NULL NULL 0.4238709677419355 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.062 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 41 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 41.0 NULL 0.0 -41 -200.0 0.0 NULL NULL 0.6409756097560976 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.198 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -9 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -9.0 NULL 0.0 9 -200.0 0.0 NULL NULL -2.92 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.23 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 40 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 40.0 NULL 0.001413979988882123 -40 -7196.0 0.0 NULL NULL 0.657 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.314 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -46 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -46.0 NULL 0.001413979988882123 46 -7196.0 0.0 NULL NULL -0.571304347826087 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.326 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 39 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 39.0 NULL 0.001413979988882123 -39 -7196.0 0.0 NULL NULL 0.6738461538461539 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.331 NULL NULL NULL NULL 5067.0 NULL NULL 3 -3 NULL -52 NULL NULL 8.3223867E7 NULL NULL NULL 1323.5555555555557 0.0020080915729228342 NULL 1985.3333333333335 NULL NULL -23.333333333333332 NULL 0.002008091572922567 52 -200.0 5.5482578E7 NULL NULL -0.5053846153846154 36.38070306571267 NULL NULL 3 3 NULL -1969-12-31 15:59:49.383 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -43 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -43.0 NULL 0.0 43 -200.0 0.0 NULL NULL -0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.567 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 38 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 38.0 NULL 0.0 -38 -200.0 0.0 NULL NULL 0.6915789473684211 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.762 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -43 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -43.0 NULL 0.0 43 -200.0 0.0 NULL NULL -0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.896 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -22 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -22.0 NULL 6.522017819364598E-4 22 15601.0 0.0 NULL NULL -1.1945454545454546 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.046 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 27.0 NULL 0.001413979988882123 -27 -7196.0 0.0 NULL NULL 0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.074 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -40 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -40.0 NULL 0.0 40 -200.0 0.0 NULL NULL -0.657 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.093 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -2 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -2.0 NULL 0.001413979988882123 2 -7196.0 0.0 NULL NULL -13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.345 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -37 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -37.0 NULL 6.522017819364598E-4 37 15601.0 0.0 NULL NULL -0.7102702702702703 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.404 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 16.0 NULL 0.001413979988882123 -16 -7196.0 0.0 NULL NULL 1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.54 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -51 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -51.0 NULL 0.001413979988882123 51 -7196.0 0.0 NULL NULL -0.5152941176470588 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.573 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -26 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -26.0 NULL 0.0 26 -200.0 0.0 NULL NULL -1.0107692307692309 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.66 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 62 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 62.0 NULL 6.522017819364598E-4 -62 15601.0 0.0 NULL NULL 0.4238709677419355 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.675 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 51 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 51.0 NULL 0.0 -51 -200.0 0.0 NULL NULL 0.5152941176470588 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.843 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -44 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -44.0 NULL 0.001413979988882123 44 -7196.0 0.0 NULL NULL -0.5972727272727273 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.893 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 43 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 43.0 NULL 0.0 -43 -200.0 0.0 NULL NULL 0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.009 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -49 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -49.0 NULL 0.001413979988882123 49 -7196.0 0.0 NULL NULL -0.5363265306122449 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.024 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 55 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 55.0 NULL 0.0 -55 -200.0 0.0 NULL NULL 0.47781818181818186 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.104 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 34 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 34.0 NULL 6.522017819364598E-4 -34 15601.0 0.0 NULL NULL 0.7729411764705882 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.208 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -33 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -33.0 NULL 0.001413979988882123 33 -7196.0 0.0 NULL NULL -0.7963636363636364 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.232 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 10 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 10.0 NULL 0.001413979988882123 -10 -7196.0 0.0 NULL NULL 2.628 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.265 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 59 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 59.0 NULL 6.522017819364598E-4 -59 15601.0 0.0 NULL NULL 0.44542372881355935 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.413 NULL NULL NULL NULL 7700.5 NULL NULL 2 -2 NULL -61 NULL NULL 1.248358005E8 NULL NULL NULL 90.25 0.0013213427699500034 NULL 180.5 NULL NULL -51.5 NULL 6.606713849747906E-4 61 -200.0 6.241790025E7 NULL NULL -0.4308196721311476 9.5 NULL NULL 2 2 NULL -1969-12-31 15:59:51.417 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -17 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -17.0 NULL 0.0 17 -200.0 0.0 NULL NULL -1.5458823529411765 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.555 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 49 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 49.0 NULL 0.0 -49 -200.0 0.0 NULL NULL 0.5363265306122449 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.561 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -35 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -35.0 NULL 0.001413979988882123 35 -7196.0 0.0 NULL NULL -0.7508571428571429 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.596 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -30 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -30.0 NULL 6.522017819364598E-4 30 15601.0 0.0 NULL NULL -0.876 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.637 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -8 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -8.0 NULL 6.522017819364598E-4 8 15601.0 0.0 NULL NULL -3.285 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.719 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -47 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -47.0 NULL 0.0 47 -200.0 0.0 NULL NULL -0.5591489361702128 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.725 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 57 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 57.0 NULL 0.001413979988882123 -57 -7196.0 0.0 NULL NULL 0.4610526315789474 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.803 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 42 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 42.0 NULL 0.001413979988882123 -42 -7196.0 0.0 NULL NULL 0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.845 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -27.0 NULL 0.0 27 -200.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.884 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 55 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 55.0 NULL 0.0 -55 -200.0 0.0 NULL NULL 0.47781818181818186 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.052 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -49 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -49.0 NULL 0.001413979988882123 49 -7196.0 0.0 NULL NULL -0.5363265306122449 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.076 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 15 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 15.0 NULL 6.522017819364598E-4 -15 15601.0 0.0 NULL NULL 1.752 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.118 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 47 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 47.0 NULL 0.0 -47 -200.0 0.0 NULL NULL 0.5591489361702128 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.311 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 43 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 43.0 NULL 6.522017819364598E-4 -43 15601.0 0.0 NULL NULL 0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.326 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 2 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 2.0 NULL 6.522017819364598E-4 -2 15601.0 0.0 NULL NULL 13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.343 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -16.0 NULL 0.0 16 -200.0 0.0 NULL NULL -1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.357 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 55 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 55.0 NULL 6.522017819364598E-4 -55 15601.0 0.0 NULL NULL 0.47781818181818186 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.408 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -60 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -60.0 NULL 0.001413979988882123 60 -7196.0 0.0 NULL NULL -0.438 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.411 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 45 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 45.0 NULL 0.001413979988882123 -45 -7196.0 0.0 NULL NULL 0.5840000000000001 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.587 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -33 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -33.0 NULL 6.522017819364598E-4 33 15601.0 0.0 NULL NULL -0.7963636363636364 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.815 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -52 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -52.0 NULL 0.0 52 -200.0 0.0 NULL NULL -0.5053846153846154 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.969 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -27.0 NULL 0.001413979988882123 27 -7196.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.038 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 8 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 8.0 NULL 6.522017819364598E-4 -8 15601.0 0.0 NULL NULL 3.285 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.06 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 34 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 34.0 NULL 0.0 -34 -200.0 0.0 NULL NULL 0.7729411764705882 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.246 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -8 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -8.0 NULL 0.0 8 -200.0 0.0 NULL NULL -3.285 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.458 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 29 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 29.0 NULL 0.001413979988882123 -29 -7196.0 0.0 NULL NULL 0.9062068965517242 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.546 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -27.0 NULL 0.0 27 -200.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.583 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -59 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -59.0 NULL 6.522017819364598E-4 59 15601.0 0.0 NULL NULL -0.44542372881355935 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.584 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -29 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -29.0 NULL 6.522017819364598E-4 29 15601.0 0.0 NULL NULL -0.9062068965517242 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.635 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 47 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 47.0 NULL 6.522017819364598E-4 -47 15601.0 0.0 NULL NULL 0.5591489361702128 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.876 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 37 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 37.0 NULL 0.001413979988882123 -37 -7196.0 0.0 NULL NULL 0.7102702702702703 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.024 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 13 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 13.0 NULL 6.522017819364598E-4 -13 15601.0 0.0 NULL NULL 2.0215384615384617 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.072 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 25 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 25.0 NULL 0.0 -25 -200.0 0.0 NULL NULL 1.0512000000000001 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.116 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 62 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 62.0 NULL 6.522017819364598E-4 -62 15601.0 0.0 NULL NULL 0.4238709677419355 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.131 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -9 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -9.0 NULL 0.0 9 -200.0 0.0 NULL NULL -2.92 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.179 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -18 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -18.0 NULL 0.001413979988882123 18 -7196.0 0.0 NULL NULL -1.46 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.256 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 62 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 62.0 NULL 0.001413979988882123 -62 -7196.0 0.0 NULL NULL 0.4238709677419355 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.307 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -47 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -47.0 NULL 0.001413979988882123 47 -7196.0 0.0 NULL NULL -0.5591489361702128 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.334 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 46 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 46.0 NULL 6.522017819364598E-4 -46 15601.0 0.0 NULL NULL 0.571304347826087 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.342 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 26 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 26.0 NULL 6.522017819364598E-4 -26 15601.0 0.0 NULL NULL 1.0107692307692309 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.454 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 6 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 6.0 NULL 6.522017819364598E-4 -6 15601.0 0.0 NULL NULL 4.38 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.503 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 18 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 18.0 NULL 0.001413979988882123 -18 -7196.0 0.0 NULL NULL 1.46 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.583 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -31 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -31.0 NULL 6.522017819364598E-4 31 15601.0 0.0 NULL NULL -0.847741935483871 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.63 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -29 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -29.0 NULL 0.001413979988882123 29 -7196.0 0.0 NULL NULL -0.9062068965517242 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.742 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -49 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -49.0 NULL 0.001413979988882123 49 -7196.0 0.0 NULL NULL -0.5363265306122449 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.853 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 42 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 42.0 NULL 0.001413979988882123 -42 -7196.0 0.0 NULL NULL 0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.929 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 43 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 43.0 NULL 0.0 -43 -200.0 0.0 NULL NULL 0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.934 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -33 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -33.0 NULL 0.001413979988882123 33 -7196.0 0.0 NULL NULL -0.7963636363636364 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.994 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -1 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -1.0 NULL 6.522017819364598E-4 1 15601.0 0.0 NULL NULL -26.28 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.043 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -16.0 NULL 0.0 16 -200.0 0.0 NULL NULL -1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.143 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -53 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -53.0 NULL 0.001413979988882123 53 -7196.0 0.0 NULL NULL -0.4958490566037736 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.204 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 30 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 30.0 NULL 0.0 -30 -200.0 0.0 NULL NULL 0.876 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.411 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -43 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -43.0 NULL 6.522017819364598E-4 43 15601.0 0.0 NULL NULL -0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.492 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 14 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 14.0 NULL 0.001413979988882123 -14 -7196.0 0.0 NULL NULL 1.8771428571428572 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.508 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 31 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 31.0 NULL 0.0 -31 -200.0 0.0 NULL NULL 0.847741935483871 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.755 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -33 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -33.0 NULL 0.0 33 -200.0 0.0 NULL NULL -0.7963636363636364 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.829 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 0 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 0.0 NULL 0.0 0 -200.0 0.0 NULL NULL NULL 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.847 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -9 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -9.0 NULL 6.522017819364598E-4 9 15601.0 0.0 NULL NULL -2.92 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.9 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -21 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -21.0 NULL 0.001413979988882123 21 -7196.0 0.0 NULL NULL -1.2514285714285716 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.971 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 8 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 8.0 NULL 0.001413979988882123 -8 -7196.0 0.0 NULL NULL 3.285 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.989 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -6 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -6.0 NULL 6.522017819364598E-4 6 15601.0 0.0 NULL NULL -4.38 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.998 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -40 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -40.0 NULL 6.522017819364598E-4 40 15601.0 0.0 NULL NULL -0.657 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.068 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 46 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 46.0 NULL 6.522017819364598E-4 -46 15601.0 0.0 NULL NULL 0.571304347826087 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.109 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -21 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -21.0 NULL 0.0 21 -200.0 0.0 NULL NULL -1.2514285714285716 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.218 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -4 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -4.0 NULL 0.0 4 -200.0 0.0 NULL NULL -6.57 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.31 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 27.0 NULL 0.001413979988882123 -27 -7196.0 0.0 NULL NULL 0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.319 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -5 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -5.0 NULL 0.0 5 -200.0 0.0 NULL NULL -5.256 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.338 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -44 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -44.0 NULL 6.522017819364598E-4 44 15601.0 0.0 NULL NULL -0.5972727272727273 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.399 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 2 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 2.0 NULL 0.0 -2 -200.0 0.0 NULL NULL 13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.426 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 5 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 5.0 NULL 0.001413979988882123 -5 -7196.0 0.0 NULL NULL 5.256 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.568 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 55 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 55.0 NULL 0.001413979988882123 -55 -7196.0 0.0 NULL NULL 0.47781818181818186 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.762 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 1 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 1.0 NULL 0.0 -1 -200.0 0.0 NULL NULL 26.28 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.806 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 42 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 42.0 NULL 6.522017819364598E-4 -42 15601.0 0.0 NULL NULL 0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.858 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 38 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 38.0 NULL 6.522017819364598E-4 -38 15601.0 0.0 NULL NULL 0.6915789473684211 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.913 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 53 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 53.0 NULL 6.522017819364598E-4 -53 15601.0 0.0 NULL NULL 0.4958490566037736 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.928 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -42 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -42.0 NULL 0.001413979988882123 42 -7196.0 0.0 NULL NULL -0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.97 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -2 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -2.0 NULL 6.522017819364598E-4 2 15601.0 0.0 NULL NULL -13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.215 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 16 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 16.0 NULL 6.522017819364598E-4 -16 15601.0 0.0 NULL NULL 1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.245 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 16.0 NULL 0.0 -16 -200.0 0.0 NULL NULL 1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.261 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 19 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 19.0 NULL 6.522017819364598E-4 -19 15601.0 0.0 NULL NULL 1.3831578947368421 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.269 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -4 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -4.0 NULL 0.0 4 -200.0 0.0 NULL NULL -6.57 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.28 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 42 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 42.0 NULL 6.522017819364598E-4 -42 15601.0 0.0 NULL NULL 0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.386 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 1 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 1.0 NULL 6.522017819364598E-4 -1 15601.0 0.0 NULL NULL 26.28 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.447 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 53 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 53.0 NULL 0.001413979988882123 -53 -7196.0 0.0 NULL NULL 0.4958490566037736 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.524 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -61 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -61.0 NULL 6.522017819364598E-4 61 15601.0 0.0 NULL NULL -0.4308196721311476 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.604 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -41 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -41.0 NULL 0.0 41 -200.0 0.0 NULL NULL -0.6409756097560976 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.678 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -56 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -56.0 NULL 6.522017819364598E-4 56 15601.0 0.0 NULL NULL -0.4692857142857143 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.729 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 30 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 30.0 NULL 6.522017819364598E-4 -30 15601.0 0.0 NULL NULL 0.876 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.765 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -3 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -3.0 NULL 0.001413979988882123 3 -7196.0 0.0 NULL NULL -8.76 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.847 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 50 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 50.0 NULL 0.0 -50 -200.0 0.0 NULL NULL 0.5256000000000001 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.887 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -10 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -10.0 NULL 0.001413979988882123 10 -7196.0 0.0 NULL NULL -2.628 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.916 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 4 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 4.0 NULL 0.001413979988882123 -4 -7196.0 0.0 NULL NULL 6.57 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.92 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -6 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -6.0 NULL 0.001413979988882123 6 -7196.0 0.0 NULL NULL -4.38 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.932 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -43 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -43.0 NULL 6.522017819364598E-4 43 15601.0 0.0 NULL NULL -0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.951 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 26 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 26.0 NULL 0.0 -26 -200.0 0.0 NULL NULL 1.0107692307692309 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.061 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -9 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -9.0 NULL 0.001413979988882123 9 -7196.0 0.0 NULL NULL -2.92 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.134 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -24 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -24.0 NULL 6.522017819364598E-4 24 15601.0 0.0 NULL NULL -1.095 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.158 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -53 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -53.0 NULL 0.0 53 -200.0 0.0 NULL NULL -0.4958490566037736 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.171 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -27.0 NULL 0.0 27 -200.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.214 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 22 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 22.0 NULL 0.001413979988882123 -22 -7196.0 0.0 NULL NULL 1.1945454545454546 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.272 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 7 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 7.0 NULL 0.0 -7 -200.0 0.0 NULL NULL 3.7542857142857144 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.279 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -58 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -58.0 NULL 6.522017819364598E-4 58 15601.0 0.0 NULL NULL -0.4531034482758621 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.298 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 32 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 32.0 NULL 0.0 -32 -200.0 0.0 NULL NULL 0.82125 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.343 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -34 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -34.0 NULL 6.522017819364598E-4 34 15601.0 0.0 NULL NULL -0.7729411764705882 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.382 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -56 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -56.0 NULL 0.001413979988882123 56 -7196.0 0.0 NULL NULL -0.4692857142857143 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.463 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -7 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -7.0 NULL 0.001413979988882123 7 -7196.0 0.0 NULL NULL -3.7542857142857144 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.561 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -17 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -17.0 NULL 0.0 17 -200.0 0.0 NULL NULL -1.5458823529411765 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.578 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -41 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -41.0 NULL 0.001413979988882123 41 -7196.0 0.0 NULL NULL -0.6409756097560976 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.752 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 36 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 36.0 NULL 6.522017819364598E-4 -36 15601.0 0.0 NULL NULL 0.73 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.825 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -9 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -9.0 NULL 0.001413979988882123 9 -7196.0 0.0 NULL NULL -2.92 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.892 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -10 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -10.0 NULL 0.0 10 -200.0 0.0 NULL NULL -2.628 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.897 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -27.0 NULL 0.0 27 -200.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.923 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -22 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -22.0 NULL 0.0 22 -200.0 0.0 NULL NULL -1.1945454545454546 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.93 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 2 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 2.0 NULL 0.0 -2 -200.0 0.0 NULL NULL 13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.957 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 49 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 49.0 NULL 0.0 -49 -200.0 0.0 NULL NULL 0.5363265306122449 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.962 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 32 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 32.0 NULL 0.001413979988882123 -32 -7196.0 0.0 NULL NULL 0.82125 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.989 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -10 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -10.0 NULL 0.0 10 -200.0 0.0 NULL NULL -2.628 0.0 NULL NULL 1 1 NULL -1969-12-31 16:00:02.351 NULL 3.430705936548119E8 3.4907432904377117E9 -3.430705936548119E8 NULL -3.430705936548119E8 -3.430706199348119E8 8 -8 1.17697441246560272E17 11 -9.4157952997248218E17 -3.4907432904377117E9 NULL NULL 3.430705936548119E8 -2.3318815858783212E-8 0.0 NULL 4.4783048325E8 0.0 NULL 3.4907432904377117E9 11.0 NULL NULL -11 NULL NULL -1.17697441246560272E17 -8.654811918735504 2.389090909090909 0.0 3582643866 NULL 8 8 NULL -1969-12-31 16:00:02.351 HtI02nss6t8S0fqH4vcLkCD 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 11 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL -7980033.0 0.0 NULL 0.0 11.0 NULL NULL -11 NULL NULL -0.0 -0.0 2.389090909090909 0.0 -7980033 NULL 1 1 NULL -1969-12-31 16:00:02.351 MgMjEMssUEN1 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 11 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL -7.27471145E8 0.0 NULL 0.0 11.0 NULL NULL -11 NULL NULL -0.0 -0.0 2.389090909090909 0.0 -727471145 NULL 1 1 NULL -1969-12-31 16:00:02.351 rss1vw14N 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 11 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL -2.6632375E8 0.0 NULL 0.0 11.0 NULL NULL -11 NULL NULL -0.0 -0.0 2.389090909090909 0.0 -266323750 NULL 1 1 NULL -1969-12-31 16:00:02.351 xM1Gglkeqdcp2kE2v6ss5Cb 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 11 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL 5.0130433E8 0.0 NULL 0.0 11.0 NULL NULL -11 NULL NULL -0.0 -0.0 2.389090909090909 0.0 501304330 NULL 1 1 NULL -1969-12-31 16:00:08.451 NULL 2.650627591471319E8 2.6970135743220673E9 -2.650627591471319E8 NULL -2.650627591471319E8 -2.650627854271319E8 9 -9 7.025827325253976E16 -51 -6.3232445927285786E17 -2.6970135743220673E9 NULL NULL 2.650627591471319E8 -3.395422287521066E-8 0.0 NULL 6.486577994444444E8 0.0 NULL 2.6970135743220673E9 -51.0 NULL NULL 51 NULL NULL -7.025827325253976E16 -0.14713189005851746 -0.5152941176470588 0.0 5837920195 NULL 9 9 NULL -1969-12-31 16:00:08.451 Yssb82rdfylDv4K NULL NULL NULL NULL NULL NULL 1 -1 NULL -51 NULL NULL NULL NULL NULL NULL 0.0 NULL NULL 0.0 NULL NULL -51.0 NULL NULL 51 NULL NULL NULL NULL -0.5152941176470588 0.0 NULL NULL 1 1 NULL -1969-12-31 16:00:08.451 ss 8.6150685E7 8.765832198750001E8 -8.6150685E7 NULL -8.6150685E7 -8.615071128E7 2 -2 7.421942790009227E15 -51 -1.4843885580018454E16 -8.765832198750001E8 NULL NULL 8.6150685E7 -2.3215137523282605E-8 0.0 NULL -5.48990416E8 0.0 NULL 8.765832198750001E8 -51.0 NULL NULL 51 NULL NULL -7.421942790009227E15 -6.0 -0.5152941176470588 0.0 -1097980832 NULL 2 2 NULL -1969-12-31 16:00:08.451 ss2PoJAipj6B1tn75O 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 -51 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL -5.85770596E8 0.0 NULL 0.0 -51.0 NULL NULL 51 NULL NULL -0.0 -0.0 -0.5152941176470588 0.0 -585770596 NULL 1 1 NULL -1969-12-31 16:00:15.892 NULL 3.552743011247774E8 3.61491601394461E9 -3.552743011247774E8 NULL -3.552743011247774E8 -3.5527432740477735E8 10 -10 1.26219838376307616E17 8 -1.2621983837630761E18 -3.61491601394461E9 NULL NULL 3.552743011247774E8 -2.8147265277394375E-8 0.0 NULL 6.585487822E8 0.0 NULL 3.61491601394461E9 8.0 NULL NULL -8 NULL NULL -1.26219838376307616E17 -5.124777376651764 3.285 0.0 6585487822 NULL 10 10 NULL -1969-12-31 16:00:15.892 M4HtnssfQiEAD0jYL6 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 8 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL 6.87282226E8 0.0 NULL 0.0 8.0 NULL NULL -8 NULL NULL -0.0 -0.0 3.285 0.0 687282226 NULL 1 1 NULL WARNING: Comparing a bigint and a double may result in a loss of precision. PREHOOK: query: -- TargetTypeClasses: Double, Long, String, Timestamp, Bool -- Functions: Max, Sum, Var, Avg, Min, VarP, StDev, StDevP diff --git a/ql/src/test/results/clientpositive/vectorization_13.q.out b/ql/src/test/results/clientpositive/vectorization_13.q.out index ce002256037c..1cefe30b3f55 100644 --- a/ql/src/test/results/clientpositive/vectorization_13.q.out +++ b/ql/src/test/results/clientpositive/vectorization_13.q.out @@ -1,3 +1,126 @@ +PREHOOK: query: EXPLAIN +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > 11) + AND ((ctimestamp2 != 12) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > 11) + AND ((ctimestamp2 != 12) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((cfloat < 3569.0) and ((10.175 >= cdouble) and (cboolean1 <> 1))) or ((ctimestamp1 > 11) and ((ctimestamp2 <> 12) and (ctinyint < 9763215.5639)))) (type: boolean) + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cboolean1 (type: boolean), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cfloat (type: float), cstring1 (type: string) + outputColumnNames: cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(ctinyint), sum(cfloat), stddev_pop(cfloat), stddev_pop(ctinyint), max(cfloat), min(ctinyint) + keys: cboolean1 (type: boolean), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cfloat (type: float), cstring1 (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string) + sort order: +++++ + Map-reduce partition columns: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string) + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + value expressions: _col5 (type: tinyint), _col6 (type: double), _col7 (type: struct), _col8 (type: struct), _col9 (type: float), _col10 (type: tinyint) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0), sum(VALUE._col1), stddev_pop(VALUE._col2), stddev_pop(VALUE._col3), max(VALUE._col4), min(VALUE._col5) + keys: KEY._col0 (type: boolean), KEY._col1 (type: tinyint), KEY._col2 (type: timestamp), KEY._col3 (type: float), KEY._col4 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string), (- _col1) (type: tinyint), _col5 (type: tinyint), ((- _col1) + _col5) (type: tinyint), _col6 (type: double), (_col6 * ((- _col1) + _col5)) (type: double), (- _col6) (type: double), (79.553 * _col3) (type: double), _col7 (type: double), (- _col6) (type: double), _col8 (type: double), (((- _col1) + _col5) - 10.175) (type: double), (- (- _col6)) (type: double), (-26.28 / (- (- _col6))) (type: double), _col9 (type: float), ((_col6 * ((- _col1) + _col5)) / _col1) (type: double), _col10 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 40 + Statistics: Num rows: 40 Data size: 1200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 40 Data size: 1200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 40 + Processor Tree: + ListSink + PREHOOK: query: SELECT cboolean1, ctinyint, ctimestamp1, @@ -23,10 +146,11 @@ FROM alltypesorc WHERE (((cfloat < 3569) AND ((10.175 >= cdouble) AND (cboolean1 != 1))) - OR ((ctimestamp1 > -29071) - AND ((ctimestamp2 != -29071) + OR ((ctimestamp1 > 11) + AND ((ctimestamp2 != 12) AND (ctinyint < 9763215.5639)))) GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -55,3222 +179,282 @@ FROM alltypesorc WHERE (((cfloat < 3569) AND ((10.175 >= cdouble) AND (cboolean1 != 1))) - OR ((ctimestamp1 > -29071) - AND ((ctimestamp2 != -29071) + OR ((ctimestamp1 > 11) + AND ((ctimestamp2 != 12) AND (ctinyint < 9763215.5639)))) GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### -NULL -64 1969-12-31 16:00:00.199 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -64 1969-12-31 16:00:00.29 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -64 1969-12-31 16:00:01.785 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -64 1969-12-31 16:00:03.944 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -64 1969-12-31 16:00:05.997 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -64 1969-12-31 16:00:10.858 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 NULL -64 1969-12-31 16:00:11.912 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 NULL -64 1969-12-31 16:00:12.339 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 NULL -64 1969-12-31 16:00:13.274 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -NULL -63 1969-12-31 16:00:01.843 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -NULL -63 1969-12-31 16:00:03.552 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -NULL -63 1969-12-31 16:00:06.852 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -NULL -63 1969-12-31 16:00:07.375 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -NULL -63 1969-12-31 16:00:10.205 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 NULL -63 1969-12-31 16:00:11.946 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 NULL -63 1969-12-31 16:00:12.188 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 NULL -63 1969-12-31 16:00:15.436 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -NULL -62 1969-12-31 16:00:00.037 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:01.22 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:01.515 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:01.734 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:02.373 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:03.85 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:08.198 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:09.025 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:09.889 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:10.069 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:10.225 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -62 1969-12-31 16:00:10.485 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:12.388 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:12.591 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:14.154 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:14.247 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:14.517 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 NULL -62 1969-12-31 16:00:14.965 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -NULL -61 1969-12-31 16:00:00.142 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:02.698 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:03.049 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:04.165 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:04.977 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:05.613 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:06.848 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:07.405 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -61 1969-12-31 16:00:10.239 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 NULL -61 1969-12-31 16:00:11.842 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 NULL -61 1969-12-31 16:00:12.454 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 NULL -61 1969-12-31 16:00:14.192 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 NULL -61 1969-12-31 16:00:16.558 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -NULL -60 1969-12-31 16:00:00.043 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:02.322 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:02.742 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:03.823 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:10.548 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:10.618 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -60 1969-12-31 16:00:10.953 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 NULL -60 1969-12-31 16:00:11.504 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 NULL -60 1969-12-31 16:00:11.641 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 NULL -60 1969-12-31 16:00:11.996 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 NULL -60 1969-12-31 16:00:12.779 -60.0 NULL 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -NULL -59 1969-12-31 16:00:00.831 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:01.737 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:03.73 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:04.16 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:05.927 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:05.932 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:06.777 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:08.314 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:09.401 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:09.498 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -59 1969-12-31 16:00:10.983 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 NULL -59 1969-12-31 16:00:12.008 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 NULL -59 1969-12-31 16:00:13.15 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 NULL -59 1969-12-31 16:00:13.625 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 NULL -59 1969-12-31 16:00:15.296 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 NULL -59 1969-12-31 16:00:15.861 -59.0 NULL 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -NULL -58 1969-12-31 16:00:02.972 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -58 1969-12-31 16:00:04.682 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -58 1969-12-31 16:00:06.255 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -58 1969-12-31 16:00:08.05 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -58 1969-12-31 16:00:08.74 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -58 1969-12-31 16:00:09.622 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 NULL -58 1969-12-31 16:00:12.065 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 NULL -58 1969-12-31 16:00:12.683 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 NULL -58 1969-12-31 16:00:12.948 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 NULL -58 1969-12-31 16:00:14.066 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 NULL -58 1969-12-31 16:00:15.658 -58.0 NULL 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -NULL -57 1969-12-31 16:00:00.833 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:02.12 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:02.592 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:02.707 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:04.659 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:05.5 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:06.664 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:06.845 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:09.1 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -57 1969-12-31 16:00:09.925 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 NULL -57 1969-12-31 16:00:11.451 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 NULL -57 1969-12-31 16:00:11.883 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 NULL -57 1969-12-31 16:00:12.626 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 NULL -57 1969-12-31 16:00:13.578 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 NULL -57 1969-12-31 16:00:15.39 -57.0 NULL 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -NULL -56 1969-12-31 16:00:00.417 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:01.468 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:02.298 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:03.199 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:03.273 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:06.489 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:07.212 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:08.868 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -56 1969-12-31 16:00:09.818 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 NULL -56 1969-12-31 16:00:13.602 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 NULL -56 1969-12-31 16:00:13.958 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 NULL -56 1969-12-31 16:00:15.038 -56.0 NULL 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -NULL -55 1969-12-31 16:00:00.476 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:00.547 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:01.138 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:03.737 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:05.195 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:05.793 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:08.229 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:08.896 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:09.421 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 NULL -55 1969-12-31 16:00:11.38 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 NULL -55 1969-12-31 16:00:11.751 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -55 1969-12-31 16:00:13.249 -55.0 NULL 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -NULL -54 1969-12-31 16:00:00.168 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:01.14 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:02.859 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:05.688 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:06.484 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:08.805 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:11.198 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:12.181 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -54 1969-12-31 16:00:13.616 -54.0 NULL 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -NULL -53 1969-12-31 16:00:00.446 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:03.722 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:06.935 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:08.176 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:09.061 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:10.631 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:11.36 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:11.746 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:11.936 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -53 1969-12-31 16:00:14.563 -53.0 NULL 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -NULL -52 1969-12-31 16:00:01.289 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -52 1969-12-31 16:00:02.621 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -52 1969-12-31 16:00:03.963 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -52 1969-12-31 16:00:04.518 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -52 1969-12-31 16:00:05.377 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -52 1969-12-31 16:00:13.014 -52.0 NULL 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -NULL -51 1969-12-31 16:00:00.156 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:02.011 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:02.723 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:03.136 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:05.279 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:07.536 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:08.448 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:12.141 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:12.494 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -51 1969-12-31 16:00:13.197 -51.0 NULL 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -NULL -50 1969-12-31 16:00:00.568 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:02.434 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:03.09 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:04.696 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:05.159 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:05.725 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:08.161 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:08.638 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:10.867 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:11.284 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:12.292 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:13.253 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:13.663 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:14.134 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:14.175 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:15.707 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -50 1969-12-31 16:00:15.764 -50.0 NULL 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -NULL -49 1969-12-31 16:00:00.612 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:01.336 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:01.458 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:02.05 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:02.325 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:04.112 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:04.168 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:04.868 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:05.814 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:05.83 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:06.851 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:09.473 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:10.521 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:11.627 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -49 1969-12-31 16:00:14.208 -49.0 NULL 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -NULL -48 1969-12-31 16:00:00.172 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:00.953 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:00.96 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:01.813 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:03.188 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:04.552 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:05.978 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:06.198 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:06.337 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:06.363 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:07.046 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:07.783 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:08.693 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:13.878 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:14.704 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:15.207 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -48 1969-12-31 16:00:15.63 -48.0 NULL 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -NULL -47 1969-12-31 16:00:00.074 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:00.235 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:00.436 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:00.555 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:01.05 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:01.673 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:02.508 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:04.351 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:04.977 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:08.091 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:08.884 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:10.274 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:10.649 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:13.73 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -47 1969-12-31 16:00:14.216 -47.0 NULL 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -NULL -46 1969-12-31 16:00:00.013 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:00.025 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:00.601 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:02.285 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:02.925 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:05.229 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:07.744 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:08.334 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -46 1969-12-31 16:00:15.805 -46.0 NULL 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -NULL -45 1969-12-31 16:00:00.287 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:00.46 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:01.592 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:02.814 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:05.68 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:07.391 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:07.592 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:07.705 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:08.351 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:09.332 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:10.036 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:11.856 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:12.648 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:12.685 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:12.921 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -45 1969-12-31 16:00:16.216 -45.0 NULL 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -NULL -44 1969-12-31 16:00:00.247 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:00.289 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:00.835 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:01.377 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:03.002 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:03.265 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:03.333 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:03.357 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:04.442 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:08.12 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:10.096 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:10.131 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:10.898 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:12.538 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:14.237 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:14.848 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:15.014 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -44 1969-12-31 16:00:15.522 -44.0 NULL 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -NULL -43 1969-12-31 16:00:00.026 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:01.901 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:02.393 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:03.341 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:05.132 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:06.507 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:08.967 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:10.835 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:13.212 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:14.048 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:14.536 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:15.091 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -43 1969-12-31 16:00:16.096 -43.0 NULL 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -NULL -42 1969-12-31 16:00:02.754 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:02.88 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:05.729 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:08.553 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:09.144 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:09.72 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:12.041 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:12.748 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -42 1969-12-31 16:00:16.191 -42.0 NULL 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -NULL -41 1969-12-31 16:00:00.096 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:00.282 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:00.951 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:02.969 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:03.544 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:04.827 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:05.609 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:05.785 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:07.204 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:07.461 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:08.011 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:11.565 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:14.973 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -41 1969-12-31 16:00:15.69 -41.0 NULL 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -NULL -40 1969-12-31 16:00:02.171 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:03.741 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:05.192 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:06.489 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:07.622 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:07.83 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:10.027 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:13.221 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -40 1969-12-31 16:00:15.699 -40.0 NULL 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -NULL -39 1969-12-31 16:00:00.39 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:00.553 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:00.708 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:00.958 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:01.534 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:02.014 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:07.721 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:08.449 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:08.852 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:09.101 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:10.104 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:13.046 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:13.092 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:13.144 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:13.358 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:14.626 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -39 1969-12-31 16:00:14.911 -39.0 NULL 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -NULL -38 1969-12-31 16:00:00.843 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:01.282 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:02.007 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:05.324 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:07.008 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:07.111 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:08.04 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:09.402 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:09.644 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:11.569 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:12.213 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:14.118 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:14.127 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -38 1969-12-31 16:00:14.548 -38.0 NULL 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -NULL -37 1969-12-31 16:00:00.539 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:02.112 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:05.391 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:06.069 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:08.141 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:09.111 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:09.88 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:11.241 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:11.738 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:13.801 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:14.662 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:15.215 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:15.979 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -37 1969-12-31 16:00:16.202 -37.0 NULL 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -NULL -36 1969-12-31 16:00:01.626 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:02.066 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:04.964 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:06.072 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:06.661 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:08.615 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:09.804 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:15.111 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:15.277 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -36 1969-12-31 16:00:15.62 -36.0 NULL 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -NULL -35 1969-12-31 16:00:00.8 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:04.52 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:05.143 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:11.847 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:12.959 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:12.966 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:13.605 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:13.819 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:13.954 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:14.819 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -35 1969-12-31 16:00:15.507 -35.0 NULL 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -NULL -34 1969-12-31 16:00:00.357 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:01.396 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:01.562 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:04.695 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:04.756 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:06.405 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:08.233 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:09.894 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -34 1969-12-31 16:00:11.611 -34.0 NULL 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -NULL -33 1969-12-31 16:00:00.611 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:01.351 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:02.131 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:02.752 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:07.499 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:08.046 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:08.493 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:10.959 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:11.95 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:13.638 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:14.257 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -33 1969-12-31 16:00:15.375 -33.0 NULL 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -NULL -32 1969-12-31 16:00:00.527 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:01.093 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:01.531 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:02.67 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:04.577 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:05.178 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:08.488 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:10.649 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:11.928 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -32 1969-12-31 16:00:12.413 -32.0 NULL 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -NULL -31 1969-12-31 16:00:00.755 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:00.882 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:00.931 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:01.702 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:05.617 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:05.643 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:07.398 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:11.841 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:13.087 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:13.552 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:13.868 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:15.012 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:15.169 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -31 1969-12-31 16:00:16.059 -31.0 NULL 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -NULL -30 1969-12-31 16:00:00.137 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:00.434 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:01.165 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:02.234 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:04.236 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:08.346 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:10.211 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:11.15 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:11.91 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:12.935 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:13.124 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:14.921 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:15.136 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -30 1969-12-31 16:00:16.178 -30.0 NULL 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -NULL -29 1969-12-31 16:00:00.699 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:01.125 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:02.82 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:03.116 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:03.506 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:03.855 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:04.004 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:09.14 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:09.485 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:10.721 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:11.145 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:11.703 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:11.762 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -29 1969-12-31 16:00:16.065 -29.0 NULL 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -NULL -28 1969-12-31 16:00:00.003 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:00.157 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:00.326 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:00.759 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:01.627 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:02.58 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:04.149 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:04.747 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:09.589 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:09.93 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:11.236 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:12.581 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:12.796 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:13.922 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -28 1969-12-31 16:00:16.192 -28.0 NULL 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -NULL -27 1969-12-31 16:00:00.692 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:02.92 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:03.127 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:06.385 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:08.365 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:08.608 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:08.832 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:09.782 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:10.289 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:11.72 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:14.065 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -27 1969-12-31 16:00:15.435 -27.0 NULL 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -NULL -26 1969-12-31 16:00:01.121 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:02.445 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:03.874 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:04.435 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:05.037 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:06.457 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:07.919 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:08.33 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:13.117 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:14.191 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:14.315 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -26 1969-12-31 16:00:14.661 -26.0 NULL 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -NULL -25 1969-12-31 16:00:03.328 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:03.549 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:05.258 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:06.199 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:06.506 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:07.022 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:09.682 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:11.469 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:13.374 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:14.903 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:15.769 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -25 1969-12-31 16:00:15.965 -25.0 NULL 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -NULL -24 1969-12-31 16:00:06.568 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:06.866 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:07.302 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:07.642 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:07.696 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:07.857 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:08.839 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:10.302 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:10.383 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:10.682 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:14.558 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -24 1969-12-31 16:00:16.03 -24.0 NULL 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -NULL -23 1969-12-31 16:00:00.244 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:00.885 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:01.644 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:01.764 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:01.813 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:02.834 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:03.539 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:03.695 -26.28 NULL 23 -23 0 -26.280000686645508 -0.0 26.280000686645508 -2090.65289462471 0.0 26.280000686645508 0.0 -10.175 -26.280000686645508 0.9999999738719373 -26.28 0.0 -23 -NULL -23 1969-12-31 16:00:03.888 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:04.124 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:06.243 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:06.523 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:07.71 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:07.844 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:10.192 -26.28 NULL 23 -23 0 -26.280000686645508 -0.0 26.280000686645508 -2090.65289462471 0.0 26.280000686645508 0.0 -10.175 -26.280000686645508 0.9999999738719373 -26.28 0.0 -23 -NULL -23 1969-12-31 16:00:11.124 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:11.284 -26.28 NULL 23 -23 0 -26.280000686645508 -0.0 26.280000686645508 -2090.65289462471 0.0 26.280000686645508 0.0 -10.175 -26.280000686645508 0.9999999738719373 -26.28 0.0 -23 -NULL -23 1969-12-31 16:00:11.402 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:12.317 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:12.663 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:13.118 -26.28 NULL 23 -23 0 -26.280000686645508 -0.0 26.280000686645508 -2090.65289462471 0.0 26.280000686645508 0.0 -10.175 -26.280000686645508 0.9999999738719373 -26.28 0.0 -23 -NULL -23 1969-12-31 16:00:13.835 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:14.071 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:15.004 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -23 1969-12-31 16:00:16.07 -23.0 NULL 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -NULL -22 1969-12-31 16:00:00.229 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:00.586 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:02.221 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:02.227 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:04.494 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:04.92 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:05.218 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:05.996 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:07.379 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:07.969 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:10.132 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:12.901 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:13.052 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:13.315 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -22 1969-12-31 16:00:15.409 -22.0 NULL 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -NULL -21 1969-12-31 16:00:01.062 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:01.599 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:03.31 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:04.229 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:05.635 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:07.982 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:09.052 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:09.182 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:12.544 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:13.32 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:14.073 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:14.72 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -21 1969-12-31 16:00:15.188 -21.0 NULL 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -NULL -20 1969-12-31 16:00:00.396 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:00.51 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:00.825 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:02.91 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:07.942 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:09.416 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:10.551 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:11.847 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:13.066 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:13.131 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:13.612 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:13.778 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:15.161 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -20 1969-12-31 16:00:15.793 -20.0 NULL 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -NULL -19 1969-12-31 16:00:00.182 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:01.564 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:01.714 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:01.781 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:01.923 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:02.925 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:03.381 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:03.446 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:04.02 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:04.301 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:05.105 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:05.914 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:05.963 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:05.972 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:06.188 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:07.935 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:08.607 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:09.061 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:10.814 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:13.495 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:14.809 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:14.83 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -19 1969-12-31 16:00:15.223 -19.0 NULL 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -NULL -18 1969-12-31 16:00:00.564 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:00.959 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:04.071 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:04.625 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:04.699 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:05.241 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:06.015 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:06.848 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:07.986 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:09.974 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -18 1969-12-31 16:00:16.054 -18.0 NULL 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -NULL -17 1969-12-31 16:00:02.974 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:06.738 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:09.528 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:09.761 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:10.104 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:10.939 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:13.479 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:13.549 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -17 1969-12-31 16:00:14.733 -17.0 NULL 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -NULL -16 1969-12-31 16:00:00.545 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:01.088 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:02.239 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:02.267 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:03.189 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:04.741 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:05.487 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:06.481 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:10.394 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:12.574 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -16 1969-12-31 16:00:16.127 -16.0 NULL 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -NULL -15 1969-12-31 16:00:00.819 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:03.261 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:05.113 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:07.485 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:09.027 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:11.257 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:13.058 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:13.438 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:14.525 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:15.186 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -15 1969-12-31 16:00:16.239 -15.0 NULL 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -NULL -14 1969-12-31 16:00:04.574 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:04.772 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:04.887 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:07.6 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:07.785 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:08.549 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:08.704 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:09.123 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:10.884 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:11.065 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:14.79 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:14.831 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -14 1969-12-31 16:00:16.274 -14.0 NULL 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -NULL -13 1969-12-31 16:00:02.492 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:02.495 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:02.613 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:03.11 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:03.134 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:03.395 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:05.24 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:06.004 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:09.357 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:12.905 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:14.436 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -13 1969-12-31 16:00:15.003 -13.0 NULL 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -NULL -12 1969-12-31 16:00:01.059 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:02.93 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:03.275 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:03.541 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:04.154 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:09.088 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:09.524 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:13.678 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:15.749 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -12 1969-12-31 16:00:15.92 -12.0 NULL 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -NULL -11 1969-12-31 16:00:00.108 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:01.462 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:02.894 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:05.35 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:07.184 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:07.946 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:07.962 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:09.419 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:10.496 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:11.09 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:11.515 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:13.15 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -11 1969-12-31 16:00:13.638 -11.0 NULL 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -NULL -10 1969-12-31 16:00:00.553 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:00.916 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:03.029 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:03.043 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:03.248 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:05.617 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:06.264 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:06.413 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:07.925 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:08.386 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:08.882 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:11.061 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:12.682 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:13.613 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:13.684 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -10 1969-12-31 16:00:13.743 -10.0 NULL 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -NULL -9 1969-12-31 16:00:02.075 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:03.03 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:03.167 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:04.372 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:07.651 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:09.792 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:10.227 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:10.452 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:10.92 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:11.08 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:11.758 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:13.071 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:13.473 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:13.651 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -9 1969-12-31 16:00:14.094 -9.0 NULL 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -NULL -8 1969-12-31 16:00:00.054 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:00.122 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:00.475 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:00.65 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:03.136 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:03.809 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:04.443 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:06.828 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:08.007 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:08.252 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:08.783 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -8 1969-12-31 16:00:09.994 -8.0 NULL 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -NULL -7 1969-12-31 16:00:00.523 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:02.436 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:04.199 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:04.342 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:05.452 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:07.058 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:08.319 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:10.957 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:12.641 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:13.029 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:15.593 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -7 1969-12-31 16:00:16.076 -7.0 NULL 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -NULL -6 1969-12-31 16:00:00.052 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:00.472 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:00.863 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:01.153 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:02.928 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:04.136 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:05.495 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:06.4 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:06.692 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:07.423 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:08.781 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:08.894 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:09.101 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:10.435 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:11.883 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:12.469 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:14.452 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -6 1969-12-31 16:00:14.697 -6.0 NULL 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -NULL -5 1969-12-31 16:00:02.021 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:02.502 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:03.52 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:04.679 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:05.385 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:08.267 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:08.583 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:10.249 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:10.326 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:12.18 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:14.505 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:16.107 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -5 1969-12-31 16:00:16.344 -5.0 NULL 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -NULL -4 1969-12-31 16:00:00.648 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:02.16 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:03.231 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:05.056 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:06.776 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:07.712 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:08.129 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:12.848 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:13.237 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:13.324 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:13.865 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:14.04 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:14.562 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:14.592 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:15.671 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -4 1969-12-31 16:00:16.558 -4.0 NULL 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -NULL -3 1969-12-31 16:00:00.02 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:00.554 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:01.723 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:01.822 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:03.349 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:07.754 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:09.434 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:09.819 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:11.059 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:11.637 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:11.642 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:11.847 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:16.197 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -3 1969-12-31 16:00:16.338 -3.0 NULL 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -NULL -2 1969-12-31 16:00:00.381 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:00.574 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:00.741 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:03.174 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:03.198 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:06.498 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:07.711 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:10.681 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:11.181 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:11.494 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:13.839 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -2 1969-12-31 16:00:14.391 -2.0 NULL 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -NULL -1 1969-12-31 16:00:00.697 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:04.836 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:04.994 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:06.358 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:08.27 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:08.845 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:09.511 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:10.785 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:11.049 -1.389 NULL 1 -1 0 -1.3890000581741333 -0.0 1.3890000581741333 -110.49912162792683 0.0 1.3890000581741333 0.0 -10.175 -1.3890000581741333 18.920085600677048 -1.389 0.0 -1 -NULL -1 1969-12-31 16:00:12.403 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL -1 1969-12-31 16:00:14.985 -1.0 NULL 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -NULL 0 1969-12-31 16:00:00.183 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:00.437 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:00.705 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:02.71 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:04.055 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:04.626 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:04.662 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:05.959 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:09.544 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:10.139 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:10.24 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:11.089 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:12.049 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:13.039 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:13.396 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:14.343 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:14.822 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:15.616 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:15.629 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 0 1969-12-31 16:00:15.777 0.0 NULL 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -NULL 1 1969-12-31 16:00:00.519 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:02.579 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:04.916 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:06.965 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:08.488 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:10.364 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:11.949 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:13.509 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:14.567 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 1 1969-12-31 16:00:15.883 1.0 NULL -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -NULL 2 1969-12-31 16:00:00.45 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:01.489 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:02.196 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:02.752 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:03.369 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:03.672 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:06.982 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:07.654 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:09.161 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:10.045 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:10.198 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:11.342 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:12.06 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:15.965 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 2 1969-12-31 16:00:16.324 2.0 NULL -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -NULL 3 1969-12-31 16:00:00.074 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:01.057 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:05.162 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:06.132 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:06.624 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:07.648 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 3 1969-12-31 16:00:13.064 3.0 NULL -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -NULL 4 1969-12-31 16:00:00.019 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:00.031 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:00.119 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:00.308 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:00.563 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:04.207 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:04.735 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:07.163 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:07.759 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:07.836 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:08.327 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:11.153 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:11.457 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:12.291 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:12.309 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:14.894 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:15.331 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 4 1969-12-31 16:00:16.08 4.0 NULL -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -NULL 5 1969-12-31 16:00:00.49 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:00.959 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:04.058 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:04.259 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:05.034 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:06.877 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:08.427 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:09.903 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:10.885 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:10.973 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:11.083 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:11.642 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:13.574 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 5 1969-12-31 16:00:14.201 5.0 NULL -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -NULL 6 1969-12-31 16:00:01.308 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:02.166 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:02.826 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:05.688 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:06.061 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:07.204 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:07.713 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:09.111 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:11.364 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:13.132 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 6 1969-12-31 16:00:15.958 6.0 NULL -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -NULL 7 1969-12-31 16:00:00.984 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:01.055 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:05.724 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:06.018 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:09.539 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:13.807 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 7 1969-12-31 16:00:14.872 7.0 NULL -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -NULL 8 1969-12-31 16:00:00.613 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:00.664 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:01.653 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:06.469 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:08.757 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:08.948 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:09.39 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:09.519 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:09.961 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:09.995 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:11.315 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:15.683 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 8 1969-12-31 16:00:15.969 8.0 NULL -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -NULL 9 1969-12-31 16:00:00.684 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:00.945 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:03.557 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:04.745 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:09.285 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:10.473 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:11.148 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:12.205 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:13.686 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 9 1969-12-31 16:00:31.808 9.0 NULL -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -NULL 10 1969-12-31 16:00:03.139 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:04.687 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:05.348 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:05.383 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:06.849 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:07.365 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:09.22 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:12.104 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:12.322 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:12.529 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:13.961 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:15.298 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 10 1969-12-31 16:00:15.615 10.0 NULL -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -NULL 11 1969-12-31 16:00:06.603 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:07.204 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:07.9 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:08.27 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:08.745 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:08.857 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:09.984 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:13.383 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:14.569 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:14.747 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:15.338 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:15.602 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:16.044 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 11 1969-12-31 16:00:16.197 11.0 NULL -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -NULL 12 1969-12-31 16:00:00.038 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:00.526 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:00.674 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:00.911 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:08.34 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:08.779 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:09.556 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:10.331 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:12.608 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:12.772 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:15.27 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 12 1969-12-31 16:00:15.321 12.0 NULL -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -NULL 13 1969-12-31 16:00:00.025 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:00.655 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:03.794 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:05.028 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:05.368 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:06.749 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:07.723 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:09.387 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:10.573 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:12.021 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:12.498 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:14.548 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 13 1969-12-31 16:00:15.956 13.0 NULL -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -NULL 14 1969-12-31 16:00:00.394 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:00.931 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:01.873 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:01.952 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:03.834 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:04.516 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:06.3 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:06.731 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:09.21 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:10.189 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:10.307 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:12.205 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 14 1969-12-31 16:00:12.477 14.0 NULL -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -NULL 15 1969-12-31 16:00:00.515 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:00.766 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:00.778 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:00.838 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:00.951 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:03.256 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:04.585 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:04.971 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:05.63 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:05.784 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:07.607 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:08.615 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:10.415 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:11.15 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:11.485 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:11.526 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:12.58 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:13.114 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:13.404 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:13.735 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:14.98 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 15 1969-12-31 16:00:15.923 15.0 NULL -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -NULL 16 1969-12-31 16:00:00.649 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:00.999 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:02.208 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:02.221 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:02.582 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:05.865 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:07.678 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:08.432 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:08.966 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:13.869 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:15.143 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 16 1969-12-31 16:00:16.02 16.0 NULL -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -NULL 17 1969-12-31 16:00:00.197 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:00.284 10.175 NULL -17 17 0 10.175000190734863 0.0 -10.175000190734863 809.4517901735305 0.0 -10.175000190734863 0.0 -10.175 10.175000190734863 -2.58280093438524 10.175 0.0 17 -NULL 17 1969-12-31 16:00:01.235 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:02.436 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:04.513 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:05.162 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:05.562 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:07.243 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:07.296 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:07.548 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:07.703 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:10.672 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:10.701 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:10.738 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:11.758 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:13.008 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:13.411 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:15.082 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 17 1969-12-31 16:00:15.338 17.0 NULL -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -NULL 18 1969-12-31 16:00:00.251 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:00.459 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:02.295 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:02.659 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:05.064 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:05.804 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:07.087 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:07.846 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:11.197 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:12.437 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:13.689 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 18 1969-12-31 16:00:15.89 18.0 NULL -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -NULL 19 1969-12-31 16:00:01.375 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:02.483 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:03.44 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:08.201 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:09.001 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:10.711 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:10.723 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:11.771 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:13.074 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:14.464 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 19 1969-12-31 16:00:15.68 19.0 NULL -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -NULL 20 1969-12-31 16:00:00.54 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:01.267 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:01.687 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:05.147 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:05.722 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:06.034 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:06.404 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:06.482 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:06.754 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:08.368 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:08.388 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:09.778 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:11.342 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:11.595 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:15.803 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:15.846 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 20 1969-12-31 16:00:31.808 20.0 NULL -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -NULL 21 1969-12-31 16:00:00.418 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:01.707 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:02.931 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:03.4 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:04.469 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:08.048 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:09.07 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:10.652 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:12.52 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:13.153 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:14.256 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:14.318 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:15.417 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 21 1969-12-31 16:00:15.732 21.0 NULL -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -NULL 22 1969-12-31 16:00:00.073 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:00.306 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:00.621 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:00.767 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:00.893 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:05.334 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:05.696 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:05.731 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:06.688 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:07.249 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:09.697 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:09.842 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:09.869 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:09.911 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:10.436 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:12.112 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:12.747 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 22 1969-12-31 16:00:15.715 22.0 NULL -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -NULL 23 1969-12-31 16:00:00.103 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:00.315 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:06.391 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:08.307 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:11.785 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:12.759 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 23 1969-12-31 16:00:14.241 23.0 NULL -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -NULL 24 1969-12-31 16:00:01.369 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:02.543 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:10.421 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:12.66 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:13.787 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:14.524 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 24 1969-12-31 16:00:15.061 24.0 NULL -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -NULL 25 1969-12-31 16:00:00.52 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:00.73 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:01.111 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:02.722 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:03.599 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:03.855 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:05.555 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:06.03 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:06.38 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:07.331 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:08.234 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:10.14 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:11.681 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:11.749 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:12.163 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:12.469 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 25 1969-12-31 16:00:12.473 25.0 NULL -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -NULL 26 1969-12-31 16:00:00.521 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:00.547 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:00.923 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:01.389 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:01.871 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:03.657 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:03.857 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:04.233 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:04.699 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:05.219 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:05.327 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:08.152 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:08.286 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:10.285 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 26 1969-12-31 16:00:10.506 26.0 NULL -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -NULL 27 1969-12-31 16:00:00.381 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:00.614 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:03.727 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:06.511 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:09.971 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:13.951 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 27 1969-12-31 16:00:15.909 27.0 NULL -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -NULL 28 1969-12-31 16:00:02.344 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:02.795 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:05.451 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:06.092 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:08.292 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:10.674 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:11.858 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:12.148 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:12.334 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:12.853 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:13.409 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 28 1969-12-31 16:00:16.279 28.0 NULL -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -NULL 29 1969-12-31 16:00:02.432 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:02.6 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:02.777 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:04.204 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:05.79 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:05.944 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:08.001 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:11.081 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:13.093 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:13.455 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:14.829 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:15.582 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 29 1969-12-31 16:00:16.19 29.0 NULL -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -NULL 30 1969-12-31 16:00:02.401 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:03.809 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:03.875 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:04.199 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:05.066 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:06.315 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:08.142 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:08.554 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:11.876 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 30 1969-12-31 16:00:14.23 30.0 NULL -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -NULL 31 1969-12-31 16:00:01.849 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:02.119 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:02.363 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:03.219 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:05.892 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:06.729 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:06.838 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:08.03 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:09.393 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:12.63 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 31 1969-12-31 16:00:13.816 31.0 NULL -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -NULL 32 1969-12-31 16:00:00.12 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:02.305 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:02.445 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:03.571 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:03.818 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:04.928 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:06.576 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:07.155 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:07.675 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:08 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:08.961 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:13.823 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:14.026 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:15.193 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 32 1969-12-31 16:00:15.868 32.0 NULL -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -NULL 33 1969-12-31 16:00:00.318 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:00.761 79.553 NULL -33 33 0 79.5530014038086 0.0 -79.5530014038086 6328.679920677185 0.0 -79.5530014038086 0.0 -10.175 79.5530014038086 -0.33034580136836733 79.553 0.0 33 -NULL 33 1969-12-31 16:00:01.228 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:01.27 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:02.585 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:02.983 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:04.063 79.553 NULL -33 33 0 79.5530014038086 0.0 -79.5530014038086 6328.679920677185 0.0 -79.5530014038086 0.0 -10.175 79.5530014038086 -0.33034580136836733 79.553 0.0 33 -NULL 33 1969-12-31 16:00:04.396 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:04.568 79.553 NULL -33 33 0 79.5530014038086 0.0 -79.5530014038086 6328.679920677185 0.0 -79.5530014038086 0.0 -10.175 79.5530014038086 -0.33034580136836733 79.553 0.0 33 -NULL 33 1969-12-31 16:00:04.631 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:07.006 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:07.421 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:14.872 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:15.142 79.553 NULL -33 33 0 79.5530014038086 0.0 -79.5530014038086 6328.679920677185 0.0 -79.5530014038086 0.0 -10.175 79.5530014038086 -0.33034580136836733 79.553 0.0 33 -NULL 33 1969-12-31 16:00:15.198 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 33 1969-12-31 16:00:15.99 33.0 NULL -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -NULL 34 1969-12-31 16:00:00.82 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:01.232 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:02.403 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:02.7 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:04.36 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:06.34 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:07.045 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:08.234 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:09.65 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:09.791 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:12.502 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:13.955 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:14.654 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:14.909 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 34 1969-12-31 16:00:15.609 34.0 NULL -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -NULL 35 1969-12-31 16:00:00.249 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:00.546 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:00.812 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:00.9 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:01.792 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:02.494 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:05.007 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:06.051 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:07.613 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:07.763 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:08.37 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:08.58 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:09.892 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:10.259 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:11.356 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 35 1969-12-31 16:00:14.084 35.0 NULL -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -NULL 36 1969-12-31 16:00:00.554 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:00.865 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:05.234 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:05.251 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:06.494 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:06.51 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:07.27 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:07.504 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:10.467 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:12.979 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:13.717 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:14.011 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 36 1969-12-31 16:00:15.446 36.0 NULL -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -NULL 37 1969-12-31 16:00:00.024 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:00.051 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:01.979 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:05.356 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:06.69 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:08.692 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:09.907 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:09.934 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:11.091 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:11.309 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:12.712 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:12.728 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:14.674 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:14.747 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 37 1969-12-31 16:00:16.313 37.0 NULL -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -NULL 38 1969-12-31 16:00:00.272 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:00.887 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:05.29 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:05.478 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:08.703 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:11.028 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:11.102 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:13.506 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:14.648 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:16.165 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:16.279 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 38 1969-12-31 16:00:16.322 38.0 NULL -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -NULL 39 1969-12-31 16:00:00.395 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:01.122 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:02.789 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:02.804 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:05.707 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:06.149 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:06.206 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:07.541 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:09.365 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:10.575 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:10.915 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:12.557 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:12.719 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:14.32 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:14.79 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:15.146 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 39 1969-12-31 16:00:15.52 39.0 NULL -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -NULL 40 1969-12-31 16:00:00.258 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:00.781 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:01.103 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:01.356 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:03.406 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:05.031 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:06.346 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:06.827 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:07.109 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:08.06 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:12.353 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:14.048 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:14.565 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:14.977 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 40 1969-12-31 16:00:15.311 40.0 NULL -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -NULL 41 1969-12-31 16:00:00.123 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:00.469 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:01.424 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:01.652 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:01.951 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:03.512 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:04.12 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:07.175 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:08.408 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:08.418 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:09.951 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:10.42 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 41 1969-12-31 16:00:14.017 41.0 NULL -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -NULL 42 1969-12-31 16:00:00.11 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:00.992 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:02.249 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:05.092 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:05.173 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:07.179 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:08.726 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:10.894 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:11.591 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:11.758 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:13.183 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:13.385 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:15.369 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:16.037 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 42 1969-12-31 16:00:16.251 42.0 NULL -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -NULL 43 1969-12-31 16:00:00.104 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 43 1969-12-31 16:00:01.097 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 43 1969-12-31 16:00:06.578 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 43 1969-12-31 16:00:08.554 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 43 1969-12-31 16:00:13.812 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 43 1969-12-31 16:00:14.685 43.0 NULL -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -NULL 44 1969-12-31 16:00:00.206 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:01.54 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:03.211 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:03.63 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:03.89 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:04.431 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:05.434 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:06.91 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:07.731 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:08.171 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:09.07 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:10.163 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:12.427 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:14.098 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 44 1969-12-31 16:00:16.279 44.0 NULL -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -NULL 45 1969-12-31 16:00:00.304 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:00.543 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:00.663 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:01.005 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:02.135 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:03.875 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:04.572 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:05.29 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:07.497 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:08.378 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:08.799 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:11.443 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:11.515 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:12.295 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:15.07 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:16.149 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 45 1969-12-31 16:00:16.167 45.0 NULL -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -NULL 46 1969-12-31 16:00:00.259 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:00.382 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:01.388 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:04.102 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:04.717 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:05.226 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:06.353 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:07.743 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:09.441 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:09.752 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:09.883 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 46 1969-12-31 16:00:09.963 46.0 NULL -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -NULL 47 1969-12-31 16:00:00.351 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:01.694 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:02 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:02.32 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:04.997 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:05.344 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:06.256 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:06.299 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:06.723 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:07.333 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:08.18 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:11.165 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:12.183 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 47 1969-12-31 16:00:15.105 47.0 NULL -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -NULL 48 1969-12-31 16:00:00.008 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:00.88 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:02.043 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:05.616 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:06.529 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:07.08 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:07.115 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:07.257 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:08.445 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:09.582 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:09.824 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:10.548 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:10.669 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:11.476 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:15.512 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:15.548 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 48 1969-12-31 16:00:16.19 48.0 NULL -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -NULL 49 1969-12-31 16:00:00.148 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:00.578 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:00.754 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:00.805 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:01.128 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:02.657 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:03.074 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:04.12 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:05.369 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:08.301 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:08.726 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:10.173 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:10.324 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:10.523 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:11.333 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:12.006 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:12.104 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:12.977 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:13.503 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:13.879 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 49 1969-12-31 16:00:15.113 49.0 NULL -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -NULL 50 1969-12-31 16:00:00.022 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:04.228 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:05.051 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:06.371 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:08.38 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:08.584 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:09.364 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:09.965 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:10.654 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:11.048 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 50 1969-12-31 16:00:15.232 50.0 NULL -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -NULL 51 1969-12-31 16:00:00.147 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:00.899 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:01.211 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:02.415 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:06.516 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:06.906 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:08.063 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:08.949 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:10.321 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 51 1969-12-31 16:00:15.668 51.0 NULL -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -NULL 52 1969-12-31 16:00:00.072 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:00.158 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:01.062 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:02.269 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:04.024 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:05.484 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:06.616 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:06.737 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:10.394 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:13.14 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 52 1969-12-31 16:00:15.227 52.0 NULL -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -NULL 53 1969-12-31 16:00:00.557 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 53 1969-12-31 16:00:02.966 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 53 1969-12-31 16:00:13.231 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 53 1969-12-31 16:00:15.223 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 53 1969-12-31 16:00:15.38 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 53 1969-12-31 16:00:15.401 53.0 NULL -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -NULL 54 1969-12-31 16:00:00.105 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:00.546 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:01.733 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:01.841 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:05.43 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:06.945 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:08.241 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:08.667 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:08.793 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:10.187 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:10.45 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:13.128 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 54 1969-12-31 16:00:14.808 54.0 NULL -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -NULL 55 1969-12-31 16:00:00.124 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:00.805 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:01.229 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:02.215 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:02.488 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:03.384 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:08.191 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:09.69 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:10.601 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:14.709 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 55 1969-12-31 16:00:15.035 55.0 NULL -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -NULL 56 1969-12-31 16:00:00.446 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 56 1969-12-31 16:00:00.909 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 56 1969-12-31 16:00:09.452 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 56 1969-12-31 16:00:10.767 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 56 1969-12-31 16:00:11.845 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 56 1969-12-31 16:00:16.056 56.0 NULL -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -NULL 57 1969-12-31 16:00:00.363 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:01.811 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:03.066 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:03.351 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:04.207 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:04.254 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:06.997 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:07.361 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:07.907 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:09.441 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:12.523 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:13.023 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:14.011 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:14.076 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 57 1969-12-31 16:00:15.76 57.0 NULL -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -NULL 58 1969-12-31 16:00:01.148 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:03.239 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:03.366 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:04.031 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:04.21 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:11.353 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:11.449 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:12.924 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:13.801 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:14.013 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 58 1969-12-31 16:00:15.841 58.0 NULL -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -NULL 59 1969-12-31 16:00:00.419 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:00.551 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:00.738 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:01.496 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:03.463 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:03.671 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:04.284 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:04.476 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:05.13 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:09.343 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:10.956 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:12.325 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 59 1969-12-31 16:00:15.05 59.0 NULL -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -NULL 60 1969-12-31 16:00:02.526 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:05.691 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:06.811 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:07.419 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:07.707 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:08.373 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:11.003 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:13.214 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 60 1969-12-31 16:00:13.71 60.0 NULL -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -NULL 61 1969-12-31 16:00:01.091 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:01.11 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:01.505 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:02.361 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:05.697 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:07.588 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:09.251 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:11.132 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:12.2 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:13.868 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 61 1969-12-31 16:00:15.143 61.0 NULL -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -NULL 62 1969-12-31 16:00:00.056 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:00.461 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:02.308 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:02.38 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:02.861 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:04.967 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:05.027 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:07.828 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:10.51 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:11.213 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:12.36 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:12.762 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:13.422 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:13.524 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:14.364 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -NULL 62 1969-12-31 16:00:14.982 62.0 NULL -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true -64 1969-12-31 16:00:00.013 -64.0 1cGVWH7n1QU 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:00.172 -64.0 1cGVWH7n1QU 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:00.631 -64.0 1cGVWH7n1QU 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:01.305 -64.0 cvLH6Eat2yFsyy7p 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:01.79 -64.0 1cGVWH7n1QU 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:02.496 -64.0 821UdmGbkEf4j 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:03.088 -64.0 cvLH6Eat2yFsyy7p 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:04.662 -64.0 821UdmGbkEf4j 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:10.273 -64.0 821UdmGbkEf4j 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:11.952 -64.0 821UdmGbkEf4j 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -64 1969-12-31 16:00:12.857 -64.0 821UdmGbkEf4j 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 -true -63 1969-12-31 16:00:05.654 -63.0 821UdmGbkEf4j 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -63 1969-12-31 16:00:07.623 -63.0 cvLH6Eat2yFsyy7p 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -63 1969-12-31 16:00:09.14 -63.0 821UdmGbkEf4j 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -63 1969-12-31 16:00:13.752 -63.0 cvLH6Eat2yFsyy7p 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -63 1969-12-31 16:00:14.899 -63.0 cvLH6Eat2yFsyy7p 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -63 1969-12-31 16:00:15.827 -63.0 cvLH6Eat2yFsyy7p 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 -true -62 1969-12-31 16:00:00.337 -62.0 1cGVWH7n1QU 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:00.659 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:00.684 -62.0 cvLH6Eat2yFsyy7p 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:01.419 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:02.123 -62.0 1cGVWH7n1QU 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:02.922 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:04.978 -62.0 cvLH6Eat2yFsyy7p 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:07.756 -62.0 1cGVWH7n1QU 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:07.847 -62.0 cvLH6Eat2yFsyy7p 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:07.903 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:13.677 -62.0 cvLH6Eat2yFsyy7p 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:14.872 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -62 1969-12-31 16:00:15.153 -62.0 821UdmGbkEf4j 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 -true -61 1969-12-31 16:00:00.554 -61.0 1cGVWH7n1QU 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:02.339 -61.0 cvLH6Eat2yFsyy7p 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:02.497 -61.0 cvLH6Eat2yFsyy7p 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:03.742 -61.0 1cGVWH7n1QU 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:07.538 -61.0 821UdmGbkEf4j 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:09.809 -61.0 1cGVWH7n1QU 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:10.713 -61.0 cvLH6Eat2yFsyy7p 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:12.045 -61.0 1cGVWH7n1QU 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:12.75 -61.0 cvLH6Eat2yFsyy7p 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:15.325 -61.0 821UdmGbkEf4j 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -61 1969-12-31 16:00:15.694 -61.0 cvLH6Eat2yFsyy7p 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 -true -60 1969-12-31 16:00:02.636 -60.0 1cGVWH7n1QU 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:05.661 -60.0 821UdmGbkEf4j 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:06.389 -60.0 cvLH6Eat2yFsyy7p 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:06.658 -60.0 821UdmGbkEf4j 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:07.838 -60.0 1cGVWH7n1QU 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:08.445 -60.0 cvLH6Eat2yFsyy7p 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:11.849 -60.0 1cGVWH7n1QU 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:12.223 -60.0 1cGVWH7n1QU 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:12.291 -60.0 821UdmGbkEf4j 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:13.567 -60.0 821UdmGbkEf4j 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:15.188 -60.0 cvLH6Eat2yFsyy7p 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -60 1969-12-31 16:00:16.165 -60.0 cvLH6Eat2yFsyy7p 60 -60 0 -60.0 -0.0 60.0 -4773.18 0.0 60.0 0.0 -10.175 -60.0 0.438 -60.0 0.0 -60 -true -59 1969-12-31 16:00:00.418 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:00.516 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:00.648 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:00.838 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:07.905 -59.0 1cGVWH7n1QU 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:10.532 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:11.065 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:11.109 -59.0 1cGVWH7n1QU 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:11.231 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:11.758 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:12.227 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:15.242 -59.0 821UdmGbkEf4j 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:15.278 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:16.069 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -59 1969-12-31 16:00:16.125 -59.0 cvLH6Eat2yFsyy7p 59 -59 0 -59.0 -0.0 59.0 -4693.6269999999995 0.0 59.0 0.0 -10.175 -59.0 0.44542372881355935 -59.0 0.0 -59 -true -58 1969-12-31 16:00:00.027 -58.0 1cGVWH7n1QU 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:00.238 -58.0 1cGVWH7n1QU 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:01.246 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:02.404 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:02.61 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:02.915 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:03.03 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:03.684 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:03.782 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:07.288 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:08.661 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:10.922 -58.0 821UdmGbkEf4j 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:12.918 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:13.209 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -58 1969-12-31 16:00:14.933 -58.0 cvLH6Eat2yFsyy7p 58 -58 0 -58.0 -0.0 58.0 -4614.074 0.0 58.0 0.0 -10.175 -58.0 0.4531034482758621 -58.0 0.0 -58 -true -57 1969-12-31 16:00:00.56 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:01.322 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:01.831 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:03.817 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:05.19 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:05.318 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:06.898 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:08.471 -57.0 cvLH6Eat2yFsyy7p 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:08.709 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:08.941 -57.0 cvLH6Eat2yFsyy7p 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:09.066 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:10.312 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:10.994 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:11.534 -57.0 cvLH6Eat2yFsyy7p 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:13.365 -57.0 1cGVWH7n1QU 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -57 1969-12-31 16:00:14.225 -57.0 821UdmGbkEf4j 57 -57 0 -57.0 -0.0 57.0 -4534.521 0.0 57.0 0.0 -10.175 -57.0 0.4610526315789474 -57.0 0.0 -57 -true -56 1969-12-31 16:00:00.274 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:00.298 -56.0 1cGVWH7n1QU 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:00.575 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:00.65 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:01.467 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:05.674 -56.0 1cGVWH7n1QU 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:05.851 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:06.303 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:06.802 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:07.316 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:07.364 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:07.559 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:08.296 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:08.784 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:10.802 -56.0 821UdmGbkEf4j 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:11.242 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:13.534 -56.0 1cGVWH7n1QU 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:14.038 -56.0 1cGVWH7n1QU 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:14.689 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -56 1969-12-31 16:00:16.37 -56.0 cvLH6Eat2yFsyy7p 56 -56 0 -56.0 -0.0 56.0 -4454.968 0.0 56.0 0.0 -10.175 -56.0 0.4692857142857143 -56.0 0.0 -56 -true -55 1969-12-31 16:00:00.557 -55.0 821UdmGbkEf4j 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:02.71 -55.0 821UdmGbkEf4j 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:03.885 -55.0 821UdmGbkEf4j 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:05.36 -55.0 1cGVWH7n1QU 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:05.568 -55.0 cvLH6Eat2yFsyy7p 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:05.591 -55.0 1cGVWH7n1QU 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:06.667 -55.0 cvLH6Eat2yFsyy7p 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:07.022 -55.0 821UdmGbkEf4j 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:07.854 -55.0 1cGVWH7n1QU 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:12.297 -55.0 1cGVWH7n1QU 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:13.15 -55.0 1cGVWH7n1QU 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -55 1969-12-31 16:00:16.055 -55.0 cvLH6Eat2yFsyy7p 55 -55 0 -55.0 -0.0 55.0 -4375.415 0.0 55.0 0.0 -10.175 -55.0 0.47781818181818186 -55.0 0.0 -55 -true -54 1969-12-31 16:00:00.023 -54.0 1cGVWH7n1QU 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:00.043 -54.0 821UdmGbkEf4j 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:01.64 -54.0 821UdmGbkEf4j 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:01.822 -54.0 cvLH6Eat2yFsyy7p 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:01.931 -54.0 cvLH6Eat2yFsyy7p 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:02.201 -54.0 cvLH6Eat2yFsyy7p 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:03.119 -54.0 cvLH6Eat2yFsyy7p 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:03.601 -54.0 821UdmGbkEf4j 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:03.725 -54.0 1cGVWH7n1QU 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:04.345 -54.0 1cGVWH7n1QU 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -54 1969-12-31 16:00:05.201 -54.0 cvLH6Eat2yFsyy7p 54 -54 0 -54.0 -0.0 54.0 -4295.862 0.0 54.0 0.0 -10.175 -54.0 0.4866666666666667 -54.0 0.0 -54 -true -53 1969-12-31 16:00:00.234 -53.0 821UdmGbkEf4j 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:01.437 -53.0 821UdmGbkEf4j 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:05.412 -53.0 cvLH6Eat2yFsyy7p 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:09.276 -53.0 1cGVWH7n1QU 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:09.583 -53.0 821UdmGbkEf4j 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:11.419 -53.0 cvLH6Eat2yFsyy7p 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:11.598 -53.0 821UdmGbkEf4j 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:11.977 -53.0 821UdmGbkEf4j 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:13.701 -53.0 cvLH6Eat2yFsyy7p 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -53 1969-12-31 16:00:14.582 -53.0 cvLH6Eat2yFsyy7p 53 -53 0 -53.0 -0.0 53.0 -4216.309 0.0 53.0 0.0 -10.175 -53.0 0.4958490566037736 -53.0 0.0 -53 -true -52 1969-12-31 16:00:00.309 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:00.849 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:01.455 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:01.824 -52.0 821UdmGbkEf4j 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:02.177 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:02.242 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:03.914 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:04.169 -52.0 821UdmGbkEf4j 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:06.732 -52.0 821UdmGbkEf4j 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:07.94 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:09.062 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:09.929 -52.0 821UdmGbkEf4j 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:10.304 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:10.928 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:14.251 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:14.404 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:14.489 -52.0 1cGVWH7n1QU 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:15.545 -52.0 821UdmGbkEf4j 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -52 1969-12-31 16:00:15.752 -52.0 cvLH6Eat2yFsyy7p 52 -52 0 -52.0 -0.0 52.0 -4136.755999999999 0.0 52.0 0.0 -10.175 -52.0 0.5053846153846154 -52.0 0.0 -52 -true -51 1969-12-31 16:00:00.231 -51.0 1cGVWH7n1QU 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:00.447 -51.0 cvLH6Eat2yFsyy7p 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:02.479 -51.0 cvLH6Eat2yFsyy7p 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:04.159 -51.0 cvLH6Eat2yFsyy7p 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:10.827 -51.0 821UdmGbkEf4j 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:11.394 -51.0 cvLH6Eat2yFsyy7p 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:13.026 -51.0 cvLH6Eat2yFsyy7p 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:13.085 -51.0 1cGVWH7n1QU 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -51 1969-12-31 16:00:14.909 -51.0 1cGVWH7n1QU 51 -51 0 -51.0 -0.0 51.0 -4057.203 0.0 51.0 0.0 -10.175 -51.0 0.5152941176470588 -51.0 0.0 -51 -true -50 1969-12-31 16:00:00.274 -50.0 821UdmGbkEf4j 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:01.151 -50.0 821UdmGbkEf4j 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:01.706 -50.0 cvLH6Eat2yFsyy7p 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:02.251 -50.0 821UdmGbkEf4j 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:02.775 -50.0 821UdmGbkEf4j 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:06.167 -50.0 1cGVWH7n1QU 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:06.726 -50.0 1cGVWH7n1QU 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:07.249 -50.0 821UdmGbkEf4j 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:08.153 -50.0 1cGVWH7n1QU 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:08.354 -50.0 cvLH6Eat2yFsyy7p 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:08.625 -50.0 cvLH6Eat2yFsyy7p 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:11.234 -50.0 1cGVWH7n1QU 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -50 1969-12-31 16:00:12.339 -50.0 cvLH6Eat2yFsyy7p 50 -50 0 -50.0 -0.0 50.0 -3977.6499999999996 0.0 50.0 0.0 -10.175 -50.0 0.5256000000000001 -50.0 0.0 -50 -true -49 1969-12-31 16:00:00.071 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:01.658 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:04.575 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:04.977 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:05.159 -49.0 821UdmGbkEf4j 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:06.919 -49.0 1cGVWH7n1QU 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:09.767 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:10.097 -49.0 cvLH6Eat2yFsyy7p 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:10.242 -49.0 821UdmGbkEf4j 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:11.021 -49.0 1cGVWH7n1QU 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -49 1969-12-31 16:00:12.602 -49.0 1cGVWH7n1QU 49 -49 0 -49.0 -0.0 49.0 -3898.0969999999998 0.0 49.0 0.0 -10.175 -49.0 0.5363265306122449 -49.0 0.0 -49 -true -48 1969-12-31 16:00:00.077 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:00.309 -48.0 1cGVWH7n1QU 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:00.329 -48.0 821UdmGbkEf4j 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:00.645 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:02.316 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:02.921 -48.0 821UdmGbkEf4j 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:04.812 -48.0 821UdmGbkEf4j 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:06.725 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:09.393 -48.0 821UdmGbkEf4j 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:09.472 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:11.189 -48.0 821UdmGbkEf4j 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:12.531 -48.0 cvLH6Eat2yFsyy7p 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -48 1969-12-31 16:00:15.716 -48.0 1cGVWH7n1QU 48 -48 0 -48.0 -0.0 48.0 -3818.544 0.0 48.0 0.0 -10.175 -48.0 0.5475 -48.0 0.0 -48 -true -47 1969-12-31 16:00:00.702 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:00.984 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:01.905 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:02.527 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:03.722 -47.0 821UdmGbkEf4j 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:04.811 -47.0 cvLH6Eat2yFsyy7p 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:05.786 -47.0 821UdmGbkEf4j 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:06.297 -47.0 821UdmGbkEf4j 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:08.056 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:09.447 -47.0 cvLH6Eat2yFsyy7p 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -47 1969-12-31 16:00:11.938 -47.0 1cGVWH7n1QU 47 -47 0 -47.0 -0.0 47.0 -3738.991 0.0 47.0 0.0 -10.175 -47.0 0.5591489361702128 -47.0 0.0 -47 -true -46 1969-12-31 16:00:01.274 -46.0 cvLH6Eat2yFsyy7p 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:01.562 -46.0 cvLH6Eat2yFsyy7p 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:01.743 -46.0 cvLH6Eat2yFsyy7p 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:03.399 -46.0 1cGVWH7n1QU 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:04.272 -46.0 1cGVWH7n1QU 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:05.815 -46.0 821UdmGbkEf4j 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:06.837 -46.0 1cGVWH7n1QU 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:07.878 -46.0 1cGVWH7n1QU 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:11.411 -46.0 821UdmGbkEf4j 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:12.348 -46.0 821UdmGbkEf4j 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:13.166 -46.0 1cGVWH7n1QU 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:14.854 -46.0 cvLH6Eat2yFsyy7p 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -46 1969-12-31 16:00:16.298 -46.0 cvLH6Eat2yFsyy7p 46 -46 0 -46.0 -0.0 46.0 -3659.438 0.0 46.0 0.0 -10.175 -46.0 0.571304347826087 -46.0 0.0 -46 -true -45 1969-12-31 16:00:00.01 -45.0 cvLH6Eat2yFsyy7p 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:00.066 -45.0 1cGVWH7n1QU 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:00.41 -45.0 1cGVWH7n1QU 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:00.726 -45.0 821UdmGbkEf4j 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:04.832 -45.0 cvLH6Eat2yFsyy7p 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:08.096 -45.0 821UdmGbkEf4j 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:09.426 -45.0 cvLH6Eat2yFsyy7p 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:09.949 -45.0 1cGVWH7n1QU 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -45 1969-12-31 16:00:11.903 -45.0 1cGVWH7n1QU 45 -45 0 -45.0 -0.0 45.0 -3579.8849999999998 0.0 45.0 0.0 -10.175 -45.0 0.5840000000000001 -45.0 0.0 -45 -true -44 1969-12-31 16:00:00.163 -44.0 cvLH6Eat2yFsyy7p 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:03.152 -44.0 821UdmGbkEf4j 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:04.357 -44.0 cvLH6Eat2yFsyy7p 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:04.472 -44.0 821UdmGbkEf4j 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:05.272 -44.0 1cGVWH7n1QU 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:06.76 -44.0 821UdmGbkEf4j 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:08.237 -44.0 821UdmGbkEf4j 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:08.744 -44.0 cvLH6Eat2yFsyy7p 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:10.921 -44.0 cvLH6Eat2yFsyy7p 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:11.092 -44.0 cvLH6Eat2yFsyy7p 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:12.936 -44.0 821UdmGbkEf4j 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:13.489 -44.0 1cGVWH7n1QU 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -44 1969-12-31 16:00:15.658 -44.0 1cGVWH7n1QU 44 -44 0 -44.0 -0.0 44.0 -3500.332 0.0 44.0 0.0 -10.175 -44.0 0.5972727272727273 -44.0 0.0 -44 -true -43 1969-12-31 16:00:01.345 -43.0 cvLH6Eat2yFsyy7p 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:01.416 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:01.52 -43.0 1cGVWH7n1QU 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:02.601 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:04.539 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:05.025 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:05.983 -43.0 1cGVWH7n1QU 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:08.384 -43.0 cvLH6Eat2yFsyy7p 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:08.695 -43.0 cvLH6Eat2yFsyy7p 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:09.786 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:12.417 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:12.637 -43.0 1cGVWH7n1QU 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:15.006 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -43 1969-12-31 16:00:15.119 -43.0 821UdmGbkEf4j 43 -43 0 -43.0 -0.0 43.0 -3420.779 0.0 43.0 0.0 -10.175 -43.0 0.6111627906976744 -43.0 0.0 -43 -true -42 1969-12-31 16:00:01.783 -42.0 1cGVWH7n1QU 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -true -42 1969-12-31 16:00:02.57 -42.0 1cGVWH7n1QU 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -true -42 1969-12-31 16:00:03.248 -42.0 cvLH6Eat2yFsyy7p 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -true -42 1969-12-31 16:00:05.941 -42.0 821UdmGbkEf4j 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -true -42 1969-12-31 16:00:15.646 -42.0 cvLH6Eat2yFsyy7p 42 -42 0 -42.0 -0.0 42.0 -3341.2259999999997 0.0 42.0 0.0 -10.175 -42.0 0.6257142857142858 -42.0 0.0 -42 -true -41 1969-12-31 16:00:02.99 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:03.19 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:03.81 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:04.781 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:05.707 -41.0 cvLH6Eat2yFsyy7p 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:11.132 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:15.219 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -41 1969-12-31 16:00:16.139 -41.0 1cGVWH7n1QU 41 -41 0 -41.0 -0.0 41.0 -3261.673 0.0 41.0 0.0 -10.175 -41.0 0.6409756097560976 -41.0 0.0 -41 -true -40 1969-12-31 16:00:01.965 -40.0 821UdmGbkEf4j 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:03.604 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:03.802 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:05.741 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:05.804 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:07.846 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:07.985 -40.0 821UdmGbkEf4j 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:11.097 -40.0 cvLH6Eat2yFsyy7p 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:11.833 -40.0 cvLH6Eat2yFsyy7p 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:12.957 -40.0 1cGVWH7n1QU 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -40 1969-12-31 16:00:14.282 -40.0 821UdmGbkEf4j 40 -40 0 -40.0 -0.0 40.0 -3182.12 0.0 40.0 0.0 -10.175 -40.0 0.657 -40.0 0.0 -40 -true -39 1969-12-31 16:00:01.29 -39.0 1cGVWH7n1QU 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:03.694 -39.0 821UdmGbkEf4j 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:03.958 -39.0 821UdmGbkEf4j 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:04.52 -39.0 1cGVWH7n1QU 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:12.799 -39.0 1cGVWH7n1QU 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:15.263 -39.0 1cGVWH7n1QU 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -39 1969-12-31 16:00:16.219 -39.0 821UdmGbkEf4j 39 -39 0 -39.0 -0.0 39.0 -3102.567 0.0 39.0 0.0 -10.175 -39.0 0.6738461538461539 -39.0 0.0 -39 -true -38 1969-12-31 16:00:00.1 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:01.135 -38.0 cvLH6Eat2yFsyy7p 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:01.464 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:01.845 -38.0 cvLH6Eat2yFsyy7p 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:02.382 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:04.474 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:06.823 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:07.574 -38.0 cvLH6Eat2yFsyy7p 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:08.084 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:09.246 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:10.952 -38.0 cvLH6Eat2yFsyy7p 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:11.319 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:11.404 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:11.654 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:11.661 -38.0 1cGVWH7n1QU 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:14.195 -38.0 cvLH6Eat2yFsyy7p 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -38 1969-12-31 16:00:14.751 -38.0 821UdmGbkEf4j 38 -38 0 -38.0 -0.0 38.0 -3023.014 0.0 38.0 0.0 -10.175 -38.0 0.6915789473684211 -38.0 0.0 -38 -true -37 1969-12-31 16:00:03.236 -37.0 821UdmGbkEf4j 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:05.792 -37.0 cvLH6Eat2yFsyy7p 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:05.855 -37.0 cvLH6Eat2yFsyy7p 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:07.278 -37.0 1cGVWH7n1QU 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:08.368 -37.0 cvLH6Eat2yFsyy7p 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:09.597 -37.0 cvLH6Eat2yFsyy7p 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:11.953 -37.0 821UdmGbkEf4j 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -37 1969-12-31 16:00:13.3 -37.0 cvLH6Eat2yFsyy7p 37 -37 0 -37.0 -0.0 37.0 -2943.461 0.0 37.0 0.0 -10.175 -37.0 0.7102702702702703 -37.0 0.0 -37 -true -36 1969-12-31 16:00:00.186 -36.0 cvLH6Eat2yFsyy7p 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:00.355 -36.0 1cGVWH7n1QU 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:00.913 -36.0 1cGVWH7n1QU 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:01.444 -36.0 cvLH6Eat2yFsyy7p 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:07.214 -36.0 1cGVWH7n1QU 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:08.739 -36.0 1cGVWH7n1QU 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:09.433 -36.0 cvLH6Eat2yFsyy7p 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:09.972 -36.0 1cGVWH7n1QU 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:11.014 -36.0 821UdmGbkEf4j 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:12.94 -36.0 821UdmGbkEf4j 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:13.164 -36.0 821UdmGbkEf4j 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:14.806 -36.0 821UdmGbkEf4j 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:15.112 -36.0 cvLH6Eat2yFsyy7p 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -36 1969-12-31 16:00:15.18 -36.0 cvLH6Eat2yFsyy7p 36 -36 0 -36.0 -0.0 36.0 -2863.908 0.0 36.0 0.0 -10.175 -36.0 0.73 -36.0 0.0 -36 -true -35 1969-12-31 16:00:01.435 -35.0 821UdmGbkEf4j 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:02.424 -35.0 1cGVWH7n1QU 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:03.708 -35.0 cvLH6Eat2yFsyy7p 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:04.001 -35.0 1cGVWH7n1QU 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:04.568 -35.0 1cGVWH7n1QU 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:05.647 -35.0 1cGVWH7n1QU 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:07.511 -35.0 821UdmGbkEf4j 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:09.395 -35.0 821UdmGbkEf4j 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:10.321 -35.0 cvLH6Eat2yFsyy7p 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:14.5 -35.0 1cGVWH7n1QU 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:15.328 -35.0 821UdmGbkEf4j 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -35 1969-12-31 16:00:16.174 -35.0 821UdmGbkEf4j 35 -35 0 -35.0 -0.0 35.0 -2784.355 0.0 35.0 0.0 -10.175 -35.0 0.7508571428571429 -35.0 0.0 -35 -true -34 1969-12-31 16:00:00.008 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:00.963 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:00.987 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:01.278 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:02.696 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:03.97 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:04.261 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:06.557 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:06.737 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:07.5 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:08.47 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:10.346 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:10.696 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:11.334 -34.0 cvLH6Eat2yFsyy7p 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:13.249 -34.0 1cGVWH7n1QU 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:14.043 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:14.41 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:15.254 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -34 1969-12-31 16:00:15.726 -34.0 821UdmGbkEf4j 34 -34 0 -34.0 -0.0 34.0 -2704.8019999999997 0.0 34.0 0.0 -10.175 -34.0 0.7729411764705882 -34.0 0.0 -34 -true -33 1969-12-31 16:00:01.399 -33.0 821UdmGbkEf4j 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:03.018 -33.0 821UdmGbkEf4j 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:03.168 -33.0 cvLH6Eat2yFsyy7p 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:03.229 -33.0 821UdmGbkEf4j 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:07.952 -33.0 cvLH6Eat2yFsyy7p 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:08.231 -33.0 821UdmGbkEf4j 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -33 1969-12-31 16:00:08.579 -33.0 1cGVWH7n1QU 33 -33 0 -33.0 -0.0 33.0 -2625.249 0.0 33.0 0.0 -10.175 -33.0 0.7963636363636364 -33.0 0.0 -33 -true -32 1969-12-31 16:00:00.211 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:00.779 -32.0 1cGVWH7n1QU 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:00.995 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:01.642 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:02.211 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:02.585 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:07.118 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:09.05 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:09.353 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:09.404 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:09.512 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:14.143 -32.0 cvLH6Eat2yFsyy7p 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:15.275 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -32 1969-12-31 16:00:15.62 -32.0 821UdmGbkEf4j 32 -32 0 -32.0 -0.0 32.0 -2545.696 0.0 32.0 0.0 -10.175 -32.0 0.82125 -32.0 0.0 -32 -true -31 1969-12-31 16:00:00.572 -31.0 1cGVWH7n1QU 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:06.79 -31.0 cvLH6Eat2yFsyy7p 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:09.452 -31.0 821UdmGbkEf4j 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:10.653 -31.0 821UdmGbkEf4j 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:10.861 -31.0 821UdmGbkEf4j 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:12.081 -31.0 cvLH6Eat2yFsyy7p 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:14.694 -31.0 cvLH6Eat2yFsyy7p 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -31 1969-12-31 16:00:15.429 -31.0 cvLH6Eat2yFsyy7p 31 -31 0 -31.0 -0.0 31.0 -2466.143 0.0 31.0 0.0 -10.175 -31.0 0.847741935483871 -31.0 0.0 -31 -true -30 1969-12-31 16:00:03.7 -30.0 1cGVWH7n1QU 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:04.427 -30.0 1cGVWH7n1QU 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:07.062 -30.0 1cGVWH7n1QU 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:07.185 -30.0 1cGVWH7n1QU 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:10.003 -30.0 1cGVWH7n1QU 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:11.913 -30.0 cvLH6Eat2yFsyy7p 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:14.072 -30.0 cvLH6Eat2yFsyy7p 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:14.53 -30.0 821UdmGbkEf4j 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -30 1969-12-31 16:00:16.146 -30.0 821UdmGbkEf4j 30 -30 0 -30.0 -0.0 30.0 -2386.59 0.0 30.0 0.0 -10.175 -30.0 0.876 -30.0 0.0 -30 -true -29 1969-12-31 16:00:00.02 -29.0 821UdmGbkEf4j 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:00.709 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:01.752 -29.0 821UdmGbkEf4j 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:02.452 -29.0 cvLH6Eat2yFsyy7p 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:03.586 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:04.151 -29.0 821UdmGbkEf4j 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:04.544 -29.0 cvLH6Eat2yFsyy7p 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:05.209 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:05.887 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:05.977 -29.0 821UdmGbkEf4j 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:08.063 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:08.488 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:11.804 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:12.018 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -29 1969-12-31 16:00:14.504 -29.0 1cGVWH7n1QU 29 -29 0 -29.0 -0.0 29.0 -2307.037 0.0 29.0 0.0 -10.175 -29.0 0.9062068965517242 -29.0 0.0 -29 -true -28 1969-12-31 16:00:00.185 -28.0 821UdmGbkEf4j 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:00.39 -28.0 821UdmGbkEf4j 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:00.74 -28.0 cvLH6Eat2yFsyy7p 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:01.475 -28.0 cvLH6Eat2yFsyy7p 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:01.66 -28.0 cvLH6Eat2yFsyy7p 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:05.042 -28.0 cvLH6Eat2yFsyy7p 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:10.554 -28.0 821UdmGbkEf4j 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:11.675 -28.0 cvLH6Eat2yFsyy7p 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:12.375 -28.0 821UdmGbkEf4j 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -28 1969-12-31 16:00:14.761 -28.0 821UdmGbkEf4j 28 -28 0 -28.0 -0.0 28.0 -2227.484 0.0 28.0 0.0 -10.175 -28.0 0.9385714285714286 -28.0 0.0 -28 -true -27 1969-12-31 16:00:00.094 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:00.186 -27.0 1cGVWH7n1QU 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:01.346 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:04.008 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:04.162 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:04.256 -27.0 821UdmGbkEf4j 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:05.617 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:07.616 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:13.117 -27.0 821UdmGbkEf4j 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:13.651 -27.0 1cGVWH7n1QU 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:13.68 -27.0 cvLH6Eat2yFsyy7p 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -27 1969-12-31 16:00:14.723 -27.0 1cGVWH7n1QU 27 -27 0 -27.0 -0.0 27.0 -2147.931 0.0 27.0 0.0 -10.175 -27.0 0.9733333333333334 -27.0 0.0 -27 -true -26 1969-12-31 16:00:00.599 -26.0 cvLH6Eat2yFsyy7p 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:01.542 -26.0 821UdmGbkEf4j 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:03.086 -26.0 1cGVWH7n1QU 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:03.52 -26.0 cvLH6Eat2yFsyy7p 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:05.641 -26.0 821UdmGbkEf4j 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:07.287 -26.0 821UdmGbkEf4j 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:10.915 -26.0 1cGVWH7n1QU 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:13.49 -26.0 1cGVWH7n1QU 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:15.49 -26.0 1cGVWH7n1QU 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -26 1969-12-31 16:00:16.28 -26.0 821UdmGbkEf4j 26 -26 0 -26.0 -0.0 26.0 -2068.3779999999997 0.0 26.0 0.0 -10.175 -26.0 1.0107692307692309 -26.0 0.0 -26 -true -25 1969-12-31 16:00:00.041 -25.0 cvLH6Eat2yFsyy7p 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:00.056 -25.0 1cGVWH7n1QU 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:05.169 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:07.101 -25.0 1cGVWH7n1QU 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:08.375 -25.0 cvLH6Eat2yFsyy7p 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:10.484 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:13.381 -25.0 1cGVWH7n1QU 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:13.947 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:13.978 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:15.516 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -25 1969-12-31 16:00:16.285 -25.0 821UdmGbkEf4j 25 -25 0 -25.0 -0.0 25.0 -1988.8249999999998 0.0 25.0 0.0 -10.175 -25.0 1.0512000000000001 -25.0 0.0 -25 -true -24 1969-12-31 16:00:02.676 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:03.22 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:03.519 -24.0 cvLH6Eat2yFsyy7p 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:06.321 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:06.349 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:06.636 -24.0 1cGVWH7n1QU 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:06.756 -24.0 1cGVWH7n1QU 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:07.494 -24.0 1cGVWH7n1QU 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:08.076 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:10.461 -24.0 cvLH6Eat2yFsyy7p 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:11.168 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:11.23 -24.0 cvLH6Eat2yFsyy7p 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:12.17 -24.0 cvLH6Eat2yFsyy7p 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:13.56 -24.0 1cGVWH7n1QU 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:14.987 -24.0 1cGVWH7n1QU 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -24 1969-12-31 16:00:16.212 -24.0 821UdmGbkEf4j 24 -24 0 -24.0 -0.0 24.0 -1909.272 0.0 24.0 0.0 -10.175 -24.0 1.095 -24.0 0.0 -24 -true -23 1969-12-31 16:00:00.707 -23.0 821UdmGbkEf4j 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:00.859 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:01.685 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:03.701 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:03.774 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:05.259 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:05.716 -23.0 821UdmGbkEf4j 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:06.775 -23.0 821UdmGbkEf4j 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:08.804 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:09.011 -23.0 821UdmGbkEf4j 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:09.177 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:10.268 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:12.563 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:12.734 -23.0 821UdmGbkEf4j 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:13.35 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:13.984 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:14.625 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:14.9 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:14.966 -23.0 cvLH6Eat2yFsyy7p 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -23 1969-12-31 16:00:15.855 -23.0 1cGVWH7n1QU 23 -23 0 -23.0 -0.0 23.0 -1829.719 0.0 23.0 0.0 -10.175 -23.0 1.142608695652174 -23.0 0.0 -23 -true -22 1969-12-31 16:00:00.557 -22.0 cvLH6Eat2yFsyy7p 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:08.505 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:09.476 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:12.136 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:14.318 -22.0 1cGVWH7n1QU 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:14.444 -22.0 1cGVWH7n1QU 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:14.821 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:15.234 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:15.626 -22.0 cvLH6Eat2yFsyy7p 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -22 1969-12-31 16:00:16.27 -22.0 821UdmGbkEf4j 22 -22 0 -22.0 -0.0 22.0 -1750.166 0.0 22.0 0.0 -10.175 -22.0 1.1945454545454546 -22.0 0.0 -22 -true -21 1969-12-31 16:00:00.704 -21.0 821UdmGbkEf4j 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:00.826 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:01.037 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:07.599 -21.0 821UdmGbkEf4j 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:09.755 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:10.129 -21.0 821UdmGbkEf4j 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:10.284 -21.0 cvLH6Eat2yFsyy7p 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:10.437 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:12.522 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:14.783 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -21 1969-12-31 16:00:15.712 -21.0 1cGVWH7n1QU 21 -21 0 -21.0 -0.0 21.0 -1670.6129999999998 0.0 21.0 0.0 -10.175 -21.0 1.2514285714285716 -21.0 0.0 -21 -true -20 1969-12-31 16:00:00.063 -20.0 cvLH6Eat2yFsyy7p 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:00.278 -20.0 821UdmGbkEf4j 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:02.242 -20.0 1cGVWH7n1QU 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:02.353 -20.0 821UdmGbkEf4j 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:08.986 -20.0 cvLH6Eat2yFsyy7p 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:09.015 -20.0 1cGVWH7n1QU 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:09.451 -20.0 1cGVWH7n1QU 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:09.969 -20.0 821UdmGbkEf4j 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:10.077 -20.0 821UdmGbkEf4j 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:10.485 -20.0 cvLH6Eat2yFsyy7p 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:13.8 -20.0 cvLH6Eat2yFsyy7p 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:13.823 -20.0 1cGVWH7n1QU 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -20 1969-12-31 16:00:13.893 -20.0 821UdmGbkEf4j 20 -20 0 -20.0 -0.0 20.0 -1591.06 0.0 20.0 0.0 -10.175 -20.0 1.314 -20.0 0.0 -20 -true -19 1969-12-31 16:00:00.075 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:00.348 -19.0 1cGVWH7n1QU 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:01.339 -19.0 1cGVWH7n1QU 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:01.577 -19.0 821UdmGbkEf4j 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:04.587 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:06.036 -19.0 821UdmGbkEf4j 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:07.812 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:08.34 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:10.174 -19.0 821UdmGbkEf4j 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:14.37 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:14.471 -19.0 1cGVWH7n1QU 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:15.416 -19.0 cvLH6Eat2yFsyy7p 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -19 1969-12-31 16:00:15.86 -19.0 1cGVWH7n1QU 19 -19 0 -19.0 -0.0 19.0 -1511.507 0.0 19.0 0.0 -10.175 -19.0 1.3831578947368421 -19.0 0.0 -19 -true -18 1969-12-31 16:00:00.368 -18.0 821UdmGbkEf4j 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:04.617 -18.0 821UdmGbkEf4j 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:07.777 -18.0 821UdmGbkEf4j 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:08.671 -18.0 1cGVWH7n1QU 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:08.837 -18.0 1cGVWH7n1QU 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:09.315 -18.0 cvLH6Eat2yFsyy7p 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:11.022 -18.0 821UdmGbkEf4j 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:11.231 -18.0 1cGVWH7n1QU 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:12.23 -18.0 cvLH6Eat2yFsyy7p 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:12.593 -18.0 cvLH6Eat2yFsyy7p 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:13.748 -18.0 cvLH6Eat2yFsyy7p 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -18 1969-12-31 16:00:15.324 -18.0 821UdmGbkEf4j 18 -18 0 -18.0 -0.0 18.0 -1431.954 0.0 18.0 0.0 -10.175 -18.0 1.46 -18.0 0.0 -18 -true -17 1969-12-31 16:00:02.925 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:07.477 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:08.072 -17.0 821UdmGbkEf4j 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:09.292 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:11.767 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:12.685 -17.0 1cGVWH7n1QU 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:12.88 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:14.547 -17.0 cvLH6Eat2yFsyy7p 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -17 1969-12-31 16:00:15.987 -17.0 1cGVWH7n1QU 17 -17 0 -17.0 -0.0 17.0 -1352.4009999999998 0.0 17.0 0.0 -10.175 -17.0 1.5458823529411765 -17.0 0.0 -17 -true -16 1969-12-31 16:00:00.262 -16.0 821UdmGbkEf4j 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:01.416 -16.0 1cGVWH7n1QU 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:03.867 -16.0 1cGVWH7n1QU 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:08.035 -16.0 cvLH6Eat2yFsyy7p 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:08.402 -16.0 cvLH6Eat2yFsyy7p 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:09.246 -16.0 1cGVWH7n1QU 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:10.725 -16.0 cvLH6Eat2yFsyy7p 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:13.51 -16.0 1cGVWH7n1QU 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -16 1969-12-31 16:00:14.172 -16.0 821UdmGbkEf4j 16 -16 0 -16.0 -0.0 16.0 -1272.848 0.0 16.0 0.0 -10.175 -16.0 1.6425 -16.0 0.0 -16 -true -15 1969-12-31 16:00:01.343 -15.0 821UdmGbkEf4j 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:02.719 -15.0 821UdmGbkEf4j 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:04.37 -15.0 821UdmGbkEf4j 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:07.482 -15.0 cvLH6Eat2yFsyy7p 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:08.841 -15.0 cvLH6Eat2yFsyy7p 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:09.694 -15.0 1cGVWH7n1QU 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:11.044 -15.0 821UdmGbkEf4j 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:11.513 -15.0 1cGVWH7n1QU 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:12.037 -15.0 1cGVWH7n1QU 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:13.192 -15.0 cvLH6Eat2yFsyy7p 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:13.271 -15.0 821UdmGbkEf4j 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -15 1969-12-31 16:00:16.004 -15.0 1cGVWH7n1QU 15 -15 0 -15.0 -0.0 15.0 -1193.295 0.0 15.0 0.0 -10.175 -15.0 1.752 -15.0 0.0 -15 -true -14 1969-12-31 16:00:00.82 -14.0 cvLH6Eat2yFsyy7p 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:03.522 -14.0 821UdmGbkEf4j 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:07.207 -14.0 821UdmGbkEf4j 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:08.605 -14.0 1cGVWH7n1QU 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:09.002 -14.0 1cGVWH7n1QU 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:11.533 -14.0 1cGVWH7n1QU 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:13.802 -14.0 cvLH6Eat2yFsyy7p 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:14.341 -14.0 821UdmGbkEf4j 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:14.609 -14.0 821UdmGbkEf4j 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -14 1969-12-31 16:00:15.625 -14.0 cvLH6Eat2yFsyy7p 14 -14 0 -14.0 -0.0 14.0 -1113.742 0.0 14.0 0.0 -10.175 -14.0 1.8771428571428572 -14.0 0.0 -14 -true -13 1969-12-31 16:00:00.457 -13.0 cvLH6Eat2yFsyy7p 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:01.828 -13.0 1cGVWH7n1QU 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:02.166 -13.0 821UdmGbkEf4j 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:03.377 -13.0 821UdmGbkEf4j 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:04.238 -13.0 1cGVWH7n1QU 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:07.375 -13.0 821UdmGbkEf4j 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:08.499 -13.0 cvLH6Eat2yFsyy7p 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:08.675 -13.0 cvLH6Eat2yFsyy7p 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:13.506 -13.0 1cGVWH7n1QU 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:15.223 -13.0 1cGVWH7n1QU 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:15.294 -13.0 1cGVWH7n1QU 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -13 1969-12-31 16:00:15.588 -13.0 cvLH6Eat2yFsyy7p 13 -13 0 -13.0 -0.0 13.0 -1034.1889999999999 0.0 13.0 0.0 -10.175 -13.0 2.0215384615384617 -13.0 0.0 -13 -true -12 1969-12-31 16:00:01.374 -12.0 821UdmGbkEf4j 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:01.967 -12.0 1cGVWH7n1QU 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:03.985 -12.0 1cGVWH7n1QU 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:04.049 -12.0 1cGVWH7n1QU 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:04.871 -12.0 cvLH6Eat2yFsyy7p 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:06.245 -12.0 1cGVWH7n1QU 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:13.178 -12.0 1cGVWH7n1QU 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:13.783 -12.0 cvLH6Eat2yFsyy7p 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -12 1969-12-31 16:00:14.907 -12.0 cvLH6Eat2yFsyy7p 12 -12 0 -12.0 -0.0 12.0 -954.636 0.0 12.0 0.0 -10.175 -12.0 2.19 -12.0 0.0 -12 -true -11 1969-12-31 16:00:00.639 -11.0 cvLH6Eat2yFsyy7p 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:01.785 -11.0 cvLH6Eat2yFsyy7p 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:08.448 -11.0 821UdmGbkEf4j 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:09.351 -11.0 cvLH6Eat2yFsyy7p 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:11.149 -11.0 1cGVWH7n1QU 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:12.484 -11.0 1cGVWH7n1QU 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:13.832 -11.0 1cGVWH7n1QU 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:14.985 -11.0 cvLH6Eat2yFsyy7p 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -11 1969-12-31 16:00:16.232 -11.0 cvLH6Eat2yFsyy7p 11 -11 0 -11.0 -0.0 11.0 -875.083 0.0 11.0 0.0 -10.175 -11.0 2.389090909090909 -11.0 0.0 -11 -true -10 1969-12-31 16:00:00.082 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:00.619 -10.0 cvLH6Eat2yFsyy7p 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:00.986 -10.0 821UdmGbkEf4j 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:01.784 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:02.006 -10.0 821UdmGbkEf4j 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:02.372 -10.0 821UdmGbkEf4j 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:05.104 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:05.636 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:08.086 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:08.523 -10.0 cvLH6Eat2yFsyy7p 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:08.676 -10.0 cvLH6Eat2yFsyy7p 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:09.433 -10.0 821UdmGbkEf4j 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:09.51 -10.0 cvLH6Eat2yFsyy7p 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:10.058 -10.0 821UdmGbkEf4j 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -10 1969-12-31 16:00:13.048 -10.0 1cGVWH7n1QU 10 -10 0 -10.0 -0.0 10.0 -795.53 0.0 10.0 0.0 -10.175 -10.0 2.628 -10.0 0.0 -10 -true -9 1969-12-31 16:00:02.666 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:03.805 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:05.687 -9.0 821UdmGbkEf4j 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:06.798 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:07.981 -9.0 1cGVWH7n1QU 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:08.432 -9.0 1cGVWH7n1QU 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:10.035 -9.0 1cGVWH7n1QU 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:10.52 -9.0 821UdmGbkEf4j 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:10.522 -9.0 821UdmGbkEf4j 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:10.558 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:10.652 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:11.632 -9.0 cvLH6Eat2yFsyy7p 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:11.732 -9.0 1cGVWH7n1QU 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:13.814 -9.0 1cGVWH7n1QU 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -9 1969-12-31 16:00:14.605 -9.0 821UdmGbkEf4j 9 -9 0 -9.0 -0.0 9.0 -715.977 0.0 9.0 0.0 -10.175 -9.0 2.92 -9.0 0.0 -9 -true -8 1969-12-31 16:00:00.511 -8.0 1cGVWH7n1QU 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:00.532 -8.0 cvLH6Eat2yFsyy7p 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:02.109 -8.0 cvLH6Eat2yFsyy7p 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:06.513 -8.0 821UdmGbkEf4j 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:07.588 -8.0 821UdmGbkEf4j 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:08.365 -8.0 1cGVWH7n1QU 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -8 1969-12-31 16:00:09.987 -8.0 cvLH6Eat2yFsyy7p 8 -8 0 -8.0 -0.0 8.0 -636.424 0.0 8.0 0.0 -10.175 -8.0 3.285 -8.0 0.0 -8 -true -7 1969-12-31 16:00:00.315 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:01.162 -7.0 1cGVWH7n1QU 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:01.603 -7.0 821UdmGbkEf4j 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:02.17 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:04.292 -7.0 821UdmGbkEf4j 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:04.368 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:05.662 -7.0 1cGVWH7n1QU 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:08.341 -7.0 821UdmGbkEf4j 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:08.353 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:09.128 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -7 1969-12-31 16:00:13.994 -7.0 cvLH6Eat2yFsyy7p 7 -7 0 -7.0 -0.0 7.0 -556.871 0.0 7.0 0.0 -10.175 -7.0 3.7542857142857144 -7.0 0.0 -7 -true -6 1969-12-31 16:00:01.845 -6.0 1cGVWH7n1QU 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:02.834 -6.0 821UdmGbkEf4j 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:03.613 -6.0 821UdmGbkEf4j 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:05.07 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:06.144 -6.0 1cGVWH7n1QU 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:06.209 -6.0 1cGVWH7n1QU 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:07.372 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:07.442 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:08.798 -6.0 1cGVWH7n1QU 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:09.052 -6.0 821UdmGbkEf4j 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:11.511 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:11.794 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:12.157 -6.0 cvLH6Eat2yFsyy7p 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -6 1969-12-31 16:00:14.192 -6.0 1cGVWH7n1QU 6 -6 0 -6.0 -0.0 6.0 -477.318 0.0 6.0 0.0 -10.175 -6.0 4.38 -6.0 0.0 -6 -true -5 1969-12-31 16:00:00.037 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:00.594 -5.0 821UdmGbkEf4j 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:00.611 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:00.834 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:01.728 -5.0 1cGVWH7n1QU 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:04.033 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:05.4 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:06.123 -5.0 1cGVWH7n1QU 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:07.276 -5.0 821UdmGbkEf4j 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:11.811 -5.0 cvLH6Eat2yFsyy7p 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:13.518 -5.0 1cGVWH7n1QU 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:15.054 -5.0 1cGVWH7n1QU 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:15.466 -5.0 1cGVWH7n1QU 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -5 1969-12-31 16:00:16.337 -5.0 821UdmGbkEf4j 5 -5 0 -5.0 -0.0 5.0 -397.765 0.0 5.0 0.0 -10.175 -5.0 5.256 -5.0 0.0 -5 -true -4 1969-12-31 16:00:00.032 -4.0 cvLH6Eat2yFsyy7p 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:01.567 -4.0 cvLH6Eat2yFsyy7p 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:03.293 -4.0 1cGVWH7n1QU 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:03.366 -4.0 821UdmGbkEf4j 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:05.323 -4.0 821UdmGbkEf4j 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:05.764 -4.0 821UdmGbkEf4j 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:07.238 -4.0 cvLH6Eat2yFsyy7p 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:07.66 -4.0 1cGVWH7n1QU 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:08.5 -4.0 1cGVWH7n1QU 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:09.922 -4.0 821UdmGbkEf4j 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:11.875 -4.0 1cGVWH7n1QU 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -4 1969-12-31 16:00:14.16 -4.0 1cGVWH7n1QU 4 -4 0 -4.0 -0.0 4.0 -318.212 0.0 4.0 0.0 -10.175 -4.0 6.57 -4.0 0.0 -4 -true -3 1969-12-31 16:00:07.182 -3.0 821UdmGbkEf4j 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -true -3 1969-12-31 16:00:08.429 -3.0 821UdmGbkEf4j 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -true -3 1969-12-31 16:00:12.866 -3.0 1cGVWH7n1QU 3 -3 0 -3.0 -0.0 3.0 -238.659 0.0 3.0 0.0 -10.175 -3.0 8.76 -3.0 0.0 -3 -true -2 1969-12-31 16:00:00.395 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:03.27 -2.0 1cGVWH7n1QU 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:09.237 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:10.495 -2.0 821UdmGbkEf4j 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:11.979 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:13.347 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:13.941 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:15.431 -2.0 1cGVWH7n1QU 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -2 1969-12-31 16:00:15.921 -2.0 cvLH6Eat2yFsyy7p 2 -2 0 -2.0 -0.0 2.0 -159.106 0.0 2.0 0.0 -10.175 -2.0 13.14 -2.0 0.0 -2 -true -1 1969-12-31 16:00:00.107 -1.0 1cGVWH7n1QU 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:00.519 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:00.839 -1.0 1cGVWH7n1QU 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:01.502 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:02.578 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:03.106 -1.389 1cGVWH7n1QU 1 -1 0 -1.3890000581741333 -0.0 1.3890000581741333 -110.49912162792683 0.0 1.3890000581741333 0.0 -10.175 -1.3890000581741333 18.920085600677048 -1.389 0.0 -1 -true -1 1969-12-31 16:00:04.956 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:05.451 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:05.785 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:06.036 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:08.104 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:09.723 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:11.459 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:11.932 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:13.333 -1.0 1cGVWH7n1QU 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:15.065 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:15.242 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:16.189 -1.0 cvLH6Eat2yFsyy7p 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true -1 1969-12-31 16:00:16.228 -1.0 821UdmGbkEf4j 1 -1 0 -1.0 -0.0 1.0 -79.553 0.0 1.0 0.0 -10.175 -1.0 26.28 -1.0 0.0 -1 -true 0 1969-12-31 16:00:00.181 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:01.268 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:02.284 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:04.336 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:05.166 0.0 1cGVWH7n1QU 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:06.311 0.0 821UdmGbkEf4j 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:07.552 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:07.615 0.0 1cGVWH7n1QU 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:08.742 0.0 821UdmGbkEf4j 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:09.017 0.0 1cGVWH7n1QU 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:09.566 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:09.922 0.0 1cGVWH7n1QU 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 0 1969-12-31 16:00:10.688 0.0 cvLH6Eat2yFsyy7p 0 0 0 0.0 0.0 -0.0 0.0 0.0 -0.0 0.0 -10.175 0.0 NULL 0.0 NULL 0 -true 1 1969-12-31 16:00:00.106 1.0 1cGVWH7n1QU -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:00.125 1.0 cvLH6Eat2yFsyy7p -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:00.342 1.0 1cGVWH7n1QU -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:01.191 1.0 1cGVWH7n1QU -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:01.746 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:01.798 1.0 1cGVWH7n1QU -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:02.594 1.0 cvLH6Eat2yFsyy7p -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:03.617 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:06.974 1.0 cvLH6Eat2yFsyy7p -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:09.74 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:10.149 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:10.401 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:11.583 1.0 821UdmGbkEf4j -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 1 1969-12-31 16:00:11.658 1.0 cvLH6Eat2yFsyy7p -1 1 0 1.0 0.0 -1.0 79.553 0.0 -1.0 0.0 -10.175 1.0 -26.28 1.0 0.0 1 -true 2 1969-12-31 16:00:01.703 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:01.923 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:02.359 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:03.805 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:06.546 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:07.06 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:07.062 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:07.556 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:08.762 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:12.4 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:14.787 2.0 1cGVWH7n1QU -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:15.071 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:15.103 2.0 cvLH6Eat2yFsyy7p -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 2 1969-12-31 16:00:16.352 2.0 821UdmGbkEf4j -2 2 0 2.0 0.0 -2.0 159.106 0.0 -2.0 0.0 -10.175 2.0 -13.14 2.0 0.0 2 -true 3 1969-12-31 16:00:01.634 3.0 cvLH6Eat2yFsyy7p -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.119 3.0 cvLH6Eat2yFsyy7p -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.192 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.256 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.321 3.0 cvLH6Eat2yFsyy7p -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.437 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:03.941 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:04.64 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:05.406 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:05.988 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:07.913 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:08.876 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:10.098 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:10.295 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:11.471 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:13.736 3.0 1cGVWH7n1QU -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:13.741 3.0 cvLH6Eat2yFsyy7p -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:14.349 3.0 cvLH6Eat2yFsyy7p -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 3 1969-12-31 16:00:31.808 3.0 821UdmGbkEf4j -3 3 0 3.0 0.0 -3.0 238.659 0.0 -3.0 0.0 -10.175 3.0 -8.76 3.0 0.0 3 -true 4 1969-12-31 16:00:00.237 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:02.212 4.0 1cGVWH7n1QU -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:05.752 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:06.663 4.0 cvLH6Eat2yFsyy7p -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:06.666 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:06.941 4.0 cvLH6Eat2yFsyy7p -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:08.036 4.0 1cGVWH7n1QU -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:09.934 4.0 1cGVWH7n1QU -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:12.526 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:12.665 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:15.509 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:15.754 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:15.932 4.0 821UdmGbkEf4j -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 4 1969-12-31 16:00:16.558 4.0 1cGVWH7n1QU -4 4 0 4.0 0.0 -4.0 318.212 0.0 -4.0 0.0 -10.175 4.0 -6.57 4.0 0.0 4 -true 5 1969-12-31 16:00:00.344 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:00.467 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:02.011 5.0 821UdmGbkEf4j -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:03.11 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:05.015 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:05.085 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:05.78 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:08.493 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:09.238 5.0 821UdmGbkEf4j -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:10.233 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:10.605 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:11.561 5.0 821UdmGbkEf4j -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:11.803 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:13.612 5.0 cvLH6Eat2yFsyy7p -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 5 1969-12-31 16:00:16.144 5.0 1cGVWH7n1QU -5 5 0 5.0 0.0 -5.0 397.765 0.0 -5.0 0.0 -10.175 5.0 -5.256 5.0 0.0 5 -true 6 1969-12-31 16:00:02.078 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:03.916 6.0 1cGVWH7n1QU -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:04.003 6.0 821UdmGbkEf4j -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:04.783 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:04.89 6.0 1cGVWH7n1QU -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:04.901 6.0 1cGVWH7n1QU -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:04.983 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:05.885 6.0 821UdmGbkEf4j -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:07.375 6.0 1cGVWH7n1QU -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:09.107 6.0 821UdmGbkEf4j -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:09.388 6.0 821UdmGbkEf4j -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:09.857 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:11.357 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 6 1969-12-31 16:00:13.987 6.0 cvLH6Eat2yFsyy7p -6 6 0 6.0 0.0 -6.0 477.318 0.0 -6.0 0.0 -10.175 6.0 -4.38 6.0 0.0 6 -true 7 1969-12-31 16:00:01.437 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:02.213 7.0 cvLH6Eat2yFsyy7p -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:03.214 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:03.526 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:03.846 7.0 cvLH6Eat2yFsyy7p -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:07.336 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:08.334 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:09.168 7.0 821UdmGbkEf4j -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:09.828 7.0 821UdmGbkEf4j -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:11.886 7.0 cvLH6Eat2yFsyy7p -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:12.06 7.0 cvLH6Eat2yFsyy7p -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:14.867 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:15.313 7.0 821UdmGbkEf4j -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:15.998 7.0 1cGVWH7n1QU -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 7 1969-12-31 16:00:16.238 7.0 cvLH6Eat2yFsyy7p -7 7 0 7.0 0.0 -7.0 556.871 0.0 -7.0 0.0 -10.175 7.0 -3.7542857142857144 7.0 0.0 7 -true 8 1969-12-31 16:00:00.335 8.0 cvLH6Eat2yFsyy7p -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:00.687 8.0 821UdmGbkEf4j -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:05.063 8.0 cvLH6Eat2yFsyy7p -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:05.214 8.0 cvLH6Eat2yFsyy7p -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:06.327 8.0 cvLH6Eat2yFsyy7p -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:07.452 8.0 1cGVWH7n1QU -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:07.661 8.0 cvLH6Eat2yFsyy7p -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:07.74 8.0 1cGVWH7n1QU -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:08.749 8.0 1cGVWH7n1QU -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:08.893 8.0 1cGVWH7n1QU -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:09.373 8.0 821UdmGbkEf4j -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:10.496 8.0 821UdmGbkEf4j -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 8 1969-12-31 16:00:11.236 8.0 1cGVWH7n1QU -8 8 0 8.0 0.0 -8.0 636.424 0.0 -8.0 0.0 -10.175 8.0 -3.285 8.0 0.0 8 -true 9 1969-12-31 16:00:00.278 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:00.377 9.0 cvLH6Eat2yFsyy7p -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:00.706 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:03.354 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:03.961 9.0 cvLH6Eat2yFsyy7p -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:07.037 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:09.063 9.0 821UdmGbkEf4j -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:09.444 9.0 821UdmGbkEf4j -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:11.544 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:12.42 9.0 821UdmGbkEf4j -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:13.387 9.0 cvLH6Eat2yFsyy7p -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:14.974 9.0 cvLH6Eat2yFsyy7p -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:15.745 9.0 cvLH6Eat2yFsyy7p -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 9 1969-12-31 16:00:15.747 9.0 1cGVWH7n1QU -9 9 0 9.0 0.0 -9.0 715.977 0.0 -9.0 0.0 -10.175 9.0 -2.92 9.0 0.0 9 -true 10 1969-12-31 16:00:00.55 10.0 1cGVWH7n1QU -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:01.358 10.0 cvLH6Eat2yFsyy7p -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:03.631 10.0 1cGVWH7n1QU -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:03.847 10.0 821UdmGbkEf4j -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:04.197 10.0 cvLH6Eat2yFsyy7p -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:06.923 10.0 821UdmGbkEf4j -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:07.636 10.0 821UdmGbkEf4j -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:08.135 10.0 1cGVWH7n1QU -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:08.442 10.0 cvLH6Eat2yFsyy7p -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:09.539 10.0 821UdmGbkEf4j -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:12.034 10.0 821UdmGbkEf4j -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:12.05 10.0 cvLH6Eat2yFsyy7p -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:12.588 10.0 1cGVWH7n1QU -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 10 1969-12-31 16:00:16.281 10.0 1cGVWH7n1QU -10 10 0 10.0 0.0 -10.0 795.53 0.0 -10.0 0.0 -10.175 10.0 -2.628 10.0 0.0 10 -true 11 1969-12-31 16:00:02.192 11.0 cvLH6Eat2yFsyy7p -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:02.389 11.0 cvLH6Eat2yFsyy7p -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:02.521 11.0 1cGVWH7n1QU -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:03.211 11.0 1cGVWH7n1QU -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:06.062 11.0 cvLH6Eat2yFsyy7p -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:07.581 11.0 1cGVWH7n1QU -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:08.428 11.0 1cGVWH7n1QU -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:08.95 11.0 821UdmGbkEf4j -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:09.532 11.0 1cGVWH7n1QU -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:10.912 11.0 821UdmGbkEf4j -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 11 1969-12-31 16:00:13.613 11.0 cvLH6Eat2yFsyy7p -11 11 0 11.0 0.0 -11.0 875.083 0.0 -11.0 0.0 -10.175 11.0 -2.389090909090909 11.0 0.0 11 -true 12 1969-12-31 16:00:00.997 12.0 821UdmGbkEf4j -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 12 1969-12-31 16:00:04.811 12.0 cvLH6Eat2yFsyy7p -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 12 1969-12-31 16:00:09.759 12.0 cvLH6Eat2yFsyy7p -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 12 1969-12-31 16:00:13.265 12.0 1cGVWH7n1QU -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 12 1969-12-31 16:00:13.383 12.0 821UdmGbkEf4j -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 12 1969-12-31 16:00:14.744 12.0 821UdmGbkEf4j -12 12 0 12.0 0.0 -12.0 954.636 0.0 -12.0 0.0 -10.175 12.0 -2.19 12.0 0.0 12 -true 13 1969-12-31 16:00:00.029 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:02.001 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:04.711 13.0 821UdmGbkEf4j -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:05.942 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:06.453 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:07.709 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:08.347 13.0 821UdmGbkEf4j -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:08.549 13.0 821UdmGbkEf4j -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:08.799 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:09.642 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:09.802 13.0 821UdmGbkEf4j -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:09.923 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:10.815 13.0 1cGVWH7n1QU -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:12.554 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:13.062 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 13 1969-12-31 16:00:16.045 13.0 cvLH6Eat2yFsyy7p -13 13 0 13.0 0.0 -13.0 1034.1889999999999 0.0 -13.0 0.0 -10.175 13.0 -2.0215384615384617 13.0 0.0 13 -true 14 1969-12-31 16:00:00.334 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:00.34 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:00.546 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:00.938 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:01.815 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:03.058 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:03.666 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:03.911 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:05.663 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:07.812 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:08.209 14.0 1cGVWH7n1QU -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:11.302 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:11.528 14.0 821UdmGbkEf4j -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:12.103 14.0 1cGVWH7n1QU -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:12.781 14.0 cvLH6Eat2yFsyy7p -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 14 1969-12-31 16:00:15.709 14.0 1cGVWH7n1QU -14 14 0 14.0 0.0 -14.0 1113.742 0.0 -14.0 0.0 -10.175 14.0 -1.8771428571428572 14.0 0.0 14 -true 15 1969-12-31 16:00:00.019 15.0 cvLH6Eat2yFsyy7p -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:00.465 15.0 cvLH6Eat2yFsyy7p -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:01.054 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:01.115 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:02.353 15.0 821UdmGbkEf4j -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:02.598 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:03.901 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:06.182 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:06.748 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:08.54 15.0 cvLH6Eat2yFsyy7p -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:09.577 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:10.576 15.0 821UdmGbkEf4j -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:11.483 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:11.832 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:12.059 15.0 821UdmGbkEf4j -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:12.078 15.0 cvLH6Eat2yFsyy7p -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:12.746 15.0 821UdmGbkEf4j -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:14.822 15.0 821UdmGbkEf4j -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:16.133 15.0 1cGVWH7n1QU -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 15 1969-12-31 16:00:16.232 15.0 cvLH6Eat2yFsyy7p -15 15 0 15.0 0.0 -15.0 1193.295 0.0 -15.0 0.0 -10.175 15.0 -1.752 15.0 0.0 15 -true 16 1969-12-31 16:00:00.147 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:00.98 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:01.151 16.0 821UdmGbkEf4j -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:02.28 16.0 cvLH6Eat2yFsyy7p -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:05.013 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:06.813 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:07.201 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:08.735 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:11.214 16.0 821UdmGbkEf4j -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:15.698 16.0 1cGVWH7n1QU -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 16 1969-12-31 16:00:16.227 16.0 821UdmGbkEf4j -16 16 0 16.0 0.0 -16.0 1272.848 0.0 -16.0 0.0 -10.175 16.0 -1.6425 16.0 0.0 16 -true 17 1969-12-31 16:00:00.225 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:00.229 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:00.283 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:00.499 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:00.597 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:00.863 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:01.764 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:02.933 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:03.478 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:04.153 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:08.246 17.0 1cGVWH7n1QU -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:09.719 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:11.246 17.0 821UdmGbkEf4j -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:14.12 17.0 cvLH6Eat2yFsyy7p -17 17 0 17.0 0.0 -17.0 1352.4009999999998 0.0 -17.0 0.0 -10.175 17.0 -1.5458823529411765 17.0 0.0 17 -true 17 1969-12-31 16:00:16.558 10.175 cvLH6Eat2yFsyy7p -17 17 0 10.175000190734863 0.0 -10.175000190734863 809.4517901735305 0.0 -10.175000190734863 0.0 -10.175 10.175000190734863 -2.58280093438524 10.175 0.0 17 -true 18 1969-12-31 16:00:00.259 18.0 cvLH6Eat2yFsyy7p -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:00.909 18.0 cvLH6Eat2yFsyy7p -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:01.154 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:02.986 18.0 821UdmGbkEf4j -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:03.108 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:03.703 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:09.509 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:09.747 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:10.553 18.0 821UdmGbkEf4j -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:10.881 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:12.339 18.0 cvLH6Eat2yFsyy7p -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 18 1969-12-31 16:00:13.767 18.0 1cGVWH7n1QU -18 18 0 18.0 0.0 -18.0 1431.954 0.0 -18.0 0.0 -10.175 18.0 -1.46 18.0 0.0 18 -true 19 1969-12-31 16:00:01.663 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:02.609 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:03.827 19.0 cvLH6Eat2yFsyy7p -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:09.507 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:11.092 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:11.333 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:11.452 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:11.579 19.0 821UdmGbkEf4j -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:11.847 19.0 cvLH6Eat2yFsyy7p -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:12.161 19.0 cvLH6Eat2yFsyy7p -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:13.106 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 19 1969-12-31 16:00:14.479 19.0 1cGVWH7n1QU -19 19 0 19.0 0.0 -19.0 1511.507 0.0 -19.0 0.0 -10.175 19.0 -1.3831578947368421 19.0 0.0 19 -true 20 1969-12-31 16:00:01.6 20.0 821UdmGbkEf4j -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:01.943 20.0 1cGVWH7n1QU -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:02.164 20.0 cvLH6Eat2yFsyy7p -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:04.545 20.0 1cGVWH7n1QU -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:07.187 20.0 1cGVWH7n1QU -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:07.813 20.0 821UdmGbkEf4j -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:12.269 20.0 821UdmGbkEf4j -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 20 1969-12-31 16:00:14.818 20.0 1cGVWH7n1QU -20 20 0 20.0 0.0 -20.0 1591.06 0.0 -20.0 0.0 -10.175 20.0 -1.314 20.0 0.0 20 -true 21 1969-12-31 16:00:00.651 21.0 1cGVWH7n1QU -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:02.216 21.0 821UdmGbkEf4j -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:03.882 21.0 1cGVWH7n1QU -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:06.912 21.0 821UdmGbkEf4j -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:07.784 21.0 1cGVWH7n1QU -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:08.648 21.0 cvLH6Eat2yFsyy7p -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:10.044 21.0 cvLH6Eat2yFsyy7p -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:10.871 21.0 cvLH6Eat2yFsyy7p -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:11.525 21.0 1cGVWH7n1QU -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 21 1969-12-31 16:00:12.594 21.0 1cGVWH7n1QU -21 21 0 21.0 0.0 -21.0 1670.6129999999998 0.0 -21.0 0.0 -10.175 21.0 -1.2514285714285716 21.0 0.0 21 -true 22 1969-12-31 16:00:00.012 22.0 1cGVWH7n1QU -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:01.809 22.0 cvLH6Eat2yFsyy7p -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:03.555 22.0 821UdmGbkEf4j -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:03.815 22.0 821UdmGbkEf4j -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:04.322 22.0 821UdmGbkEf4j -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:08.487 22.0 cvLH6Eat2yFsyy7p -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:09.701 22.0 1cGVWH7n1QU -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:10.098 22.0 1cGVWH7n1QU -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:10.47 22.0 821UdmGbkEf4j -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:12.272 22.0 cvLH6Eat2yFsyy7p -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:12.849 22.0 821UdmGbkEf4j -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:13.395 22.0 1cGVWH7n1QU -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 22 1969-12-31 16:00:16.163 22.0 1cGVWH7n1QU -22 22 0 22.0 0.0 -22.0 1750.166 0.0 -22.0 0.0 -10.175 22.0 -1.1945454545454546 22.0 0.0 22 -true 23 1969-12-31 16:00:01.779 23.0 1cGVWH7n1QU -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:05.929 23.0 821UdmGbkEf4j -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:06.192 23.0 821UdmGbkEf4j -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:06.967 23.0 cvLH6Eat2yFsyy7p -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:07.993 23.0 cvLH6Eat2yFsyy7p -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:09.059 23.0 821UdmGbkEf4j -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:10.47 23.0 1cGVWH7n1QU -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:10.907 23.0 821UdmGbkEf4j -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:11.343 23.0 cvLH6Eat2yFsyy7p -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:12 23.0 1cGVWH7n1QU -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:12.66 23.0 cvLH6Eat2yFsyy7p -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:13.439 23.0 821UdmGbkEf4j -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:14.752 23.0 1cGVWH7n1QU -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 23 1969-12-31 16:00:15.551 23.0 cvLH6Eat2yFsyy7p -23 23 0 23.0 0.0 -23.0 1829.719 0.0 -23.0 0.0 -10.175 23.0 -1.142608695652174 23.0 0.0 23 -true 24 1969-12-31 16:00:00.294 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:00.723 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:01.055 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:01.85 24.0 821UdmGbkEf4j -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:02.541 24.0 cvLH6Eat2yFsyy7p -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:04.096 24.0 cvLH6Eat2yFsyy7p -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:06.905 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:07.164 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:07.534 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:07.86 24.0 cvLH6Eat2yFsyy7p -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:08.868 24.0 821UdmGbkEf4j -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:08.983 24.0 cvLH6Eat2yFsyy7p -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:11.34 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:11.359 24.0 821UdmGbkEf4j -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:11.867 24.0 821UdmGbkEf4j -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 24 1969-12-31 16:00:13.844 24.0 1cGVWH7n1QU -24 24 0 24.0 0.0 -24.0 1909.272 0.0 -24.0 0.0 -10.175 24.0 -1.095 24.0 0.0 24 -true 25 1969-12-31 16:00:00.094 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:00.533 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:00.803 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:00.925 25.0 1cGVWH7n1QU -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:01.111 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:02.319 25.0 821UdmGbkEf4j -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:03.508 25.0 1cGVWH7n1QU -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:05.327 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:06.136 25.0 1cGVWH7n1QU -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:07.493 25.0 821UdmGbkEf4j -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:09.765 25.0 1cGVWH7n1QU -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:10.528 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:12.226 25.0 1cGVWH7n1QU -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 25 1969-12-31 16:00:13.338 25.0 cvLH6Eat2yFsyy7p -25 25 0 25.0 0.0 -25.0 1988.8249999999998 0.0 -25.0 0.0 -10.175 25.0 -1.0512000000000001 25.0 0.0 25 -true 26 1969-12-31 16:00:00.479 26.0 cvLH6Eat2yFsyy7p -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:02.272 26.0 cvLH6Eat2yFsyy7p -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:02.396 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:02.407 26.0 cvLH6Eat2yFsyy7p -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:02.824 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:03.158 26.0 1cGVWH7n1QU -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:03.945 26.0 cvLH6Eat2yFsyy7p -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:05.384 26.0 1cGVWH7n1QU -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:06.115 26.0 1cGVWH7n1QU -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:07.972 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:08.896 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:10.31 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:10.776 26.0 1cGVWH7n1QU -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:14.341 26.0 1cGVWH7n1QU -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 26 1969-12-31 16:00:16.191 26.0 821UdmGbkEf4j -26 26 0 26.0 0.0 -26.0 2068.3779999999997 0.0 -26.0 0.0 -10.175 26.0 -1.0107692307692309 26.0 0.0 26 -true 27 1969-12-31 16:00:00.18 27.0 821UdmGbkEf4j -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:00.547 27.0 821UdmGbkEf4j -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:00.957 27.0 1cGVWH7n1QU -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:01.083 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:02.384 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:04.963 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:09.093 27.0 1cGVWH7n1QU -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:09.243 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:11.668 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:12.422 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:12.725 27.0 1cGVWH7n1QU -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 27 1969-12-31 16:00:16.319 27.0 cvLH6Eat2yFsyy7p -27 27 0 27.0 0.0 -27.0 2147.931 0.0 -27.0 0.0 -10.175 27.0 -0.9733333333333334 27.0 0.0 27 -true 28 1969-12-31 16:00:00.682 28.0 821UdmGbkEf4j -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:02.496 28.0 cvLH6Eat2yFsyy7p -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:02.779 28.0 1cGVWH7n1QU -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:03.856 28.0 cvLH6Eat2yFsyy7p -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:04.975 28.0 1cGVWH7n1QU -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:06.311 28.0 1cGVWH7n1QU -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:06.969 28.0 1cGVWH7n1QU -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:09.304 28.0 821UdmGbkEf4j -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:09.36 28.0 821UdmGbkEf4j -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:10.666 28.0 cvLH6Eat2yFsyy7p -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:11.35 28.0 821UdmGbkEf4j -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:15.571 28.0 1cGVWH7n1QU -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:15.605 28.0 cvLH6Eat2yFsyy7p -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 28 1969-12-31 16:00:16.036 28.0 821UdmGbkEf4j -28 28 0 28.0 0.0 -28.0 2227.484 0.0 -28.0 0.0 -10.175 28.0 -0.9385714285714286 28.0 0.0 28 -true 29 1969-12-31 16:00:00.66 29.0 821UdmGbkEf4j -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 29 1969-12-31 16:00:01.202 29.0 cvLH6Eat2yFsyy7p -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 29 1969-12-31 16:00:05.536 29.0 1cGVWH7n1QU -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 29 1969-12-31 16:00:06.958 29.0 cvLH6Eat2yFsyy7p -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 29 1969-12-31 16:00:07.007 29.0 cvLH6Eat2yFsyy7p -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 29 1969-12-31 16:00:15.007 29.0 cvLH6Eat2yFsyy7p -29 29 0 29.0 0.0 -29.0 2307.037 0.0 -29.0 0.0 -10.175 29.0 -0.9062068965517242 29.0 0.0 29 -true 30 1969-12-31 16:00:04.165 30.0 1cGVWH7n1QU -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:04.647 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:04.777 30.0 1cGVWH7n1QU -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:04.936 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:05.847 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:06.183 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:07.457 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:07.513 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:07.902 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:09.227 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:10.538 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:15.705 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:16.189 30.0 821UdmGbkEf4j -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 30 1969-12-31 16:00:16.282 30.0 cvLH6Eat2yFsyy7p -30 30 0 30.0 0.0 -30.0 2386.59 0.0 -30.0 0.0 -10.175 30.0 -0.876 30.0 0.0 30 -true 31 1969-12-31 16:00:00.876 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:02.219 31.0 1cGVWH7n1QU -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:04.388 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:04.579 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:05.58 31.0 821UdmGbkEf4j -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:06.147 31.0 1cGVWH7n1QU -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:07.021 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:07.412 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:08.78 31.0 1cGVWH7n1QU -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:08.854 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:12.208 31.0 cvLH6Eat2yFsyy7p -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:12.363 31.0 821UdmGbkEf4j -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 31 1969-12-31 16:00:14.388 31.0 821UdmGbkEf4j -31 31 0 31.0 0.0 -31.0 2466.143 0.0 -31.0 0.0 -10.175 31.0 -0.847741935483871 31.0 0.0 31 -true 32 1969-12-31 16:00:03.538 32.0 821UdmGbkEf4j -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:03.761 32.0 1cGVWH7n1QU -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:04.264 32.0 cvLH6Eat2yFsyy7p -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:05.11 32.0 1cGVWH7n1QU -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:07.085 32.0 cvLH6Eat2yFsyy7p -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:07.18 32.0 821UdmGbkEf4j -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:07.661 32.0 1cGVWH7n1QU -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:10.451 32.0 821UdmGbkEf4j -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:11.054 32.0 cvLH6Eat2yFsyy7p -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:12.525 32.0 cvLH6Eat2yFsyy7p -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:13.909 32.0 cvLH6Eat2yFsyy7p -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 32 1969-12-31 16:00:15.375 32.0 1cGVWH7n1QU -32 32 0 32.0 0.0 -32.0 2545.696 0.0 -32.0 0.0 -10.175 32.0 -0.82125 32.0 0.0 32 -true 33 1969-12-31 16:00:00.323 79.553 1cGVWH7n1QU -33 33 0 79.5530014038086 0.0 -79.5530014038086 6328.679920677185 0.0 -79.5530014038086 0.0 -10.175 79.5530014038086 -0.33034580136836733 79.553 0.0 33 -true 33 1969-12-31 16:00:02.176 33.0 cvLH6Eat2yFsyy7p -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:03.208 33.0 cvLH6Eat2yFsyy7p -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:04.672 33.0 1cGVWH7n1QU -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:06.848 33.0 cvLH6Eat2yFsyy7p -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:09.801 33.0 821UdmGbkEf4j -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:09.924 33.0 cvLH6Eat2yFsyy7p -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:10.724 33.0 1cGVWH7n1QU -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:11.673 33.0 821UdmGbkEf4j -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:12.176 33.0 821UdmGbkEf4j -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:15.655 33.0 cvLH6Eat2yFsyy7p -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:15.717 33.0 821UdmGbkEf4j -33 33 0 33.0 0.0 -33.0 2625.249 0.0 -33.0 0.0 -10.175 33.0 -0.7963636363636364 33.0 0.0 33 -true 33 1969-12-31 16:00:31.808 79.553 cvLH6Eat2yFsyy7p -33 33 0 159.1060028076172 0.0 -159.1060028076172 6328.679920677185 0.0 -159.1060028076172 0.0 -10.175 159.1060028076172 -0.16517290068418367 79.553 0.0 33 -true 34 1969-12-31 16:00:00.411 34.0 821UdmGbkEf4j -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:00.535 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:00.668 34.0 cvLH6Eat2yFsyy7p -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:01.639 34.0 cvLH6Eat2yFsyy7p -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:01.931 34.0 821UdmGbkEf4j -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:01.975 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:05.177 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:07.178 34.0 cvLH6Eat2yFsyy7p -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:07.279 34.0 821UdmGbkEf4j -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:07.426 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:09.488 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:10.23 34.0 821UdmGbkEf4j -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:10.818 34.0 1cGVWH7n1QU -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 34 1969-12-31 16:00:13.221 34.0 821UdmGbkEf4j -34 34 0 34.0 0.0 -34.0 2704.8019999999997 0.0 -34.0 0.0 -10.175 34.0 -0.7729411764705882 34.0 0.0 34 -true 35 1969-12-31 16:00:00.508 35.0 cvLH6Eat2yFsyy7p -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:01.851 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:02.583 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:03.768 35.0 cvLH6Eat2yFsyy7p -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:03.799 35.0 821UdmGbkEf4j -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:05.741 35.0 cvLH6Eat2yFsyy7p -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:09.647 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:10.916 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:11.763 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:14.07 35.0 1cGVWH7n1QU -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 35 1969-12-31 16:00:15.668 35.0 cvLH6Eat2yFsyy7p -35 35 0 35.0 0.0 -35.0 2784.355 0.0 -35.0 0.0 -10.175 35.0 -0.7508571428571429 35.0 0.0 35 -true 36 1969-12-31 16:00:00.797 36.0 cvLH6Eat2yFsyy7p -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:02.123 36.0 821UdmGbkEf4j -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:02.752 36.0 1cGVWH7n1QU -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:04.026 36.0 1cGVWH7n1QU -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:04.432 36.0 cvLH6Eat2yFsyy7p -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:13.825 36.0 cvLH6Eat2yFsyy7p -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:14.347 36.0 821UdmGbkEf4j -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 36 1969-12-31 16:00:15.145 36.0 1cGVWH7n1QU -36 36 0 36.0 0.0 -36.0 2863.908 0.0 -36.0 0.0 -10.175 36.0 -0.73 36.0 0.0 36 -true 37 1969-12-31 16:00:00.829 37.0 cvLH6Eat2yFsyy7p -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:02.443 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:04.495 37.0 cvLH6Eat2yFsyy7p -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:04.828 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:05.645 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:06.547 37.0 1cGVWH7n1QU -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:08.438 37.0 1cGVWH7n1QU -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:10.807 37.0 cvLH6Eat2yFsyy7p -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:12.643 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:14.475 37.0 1cGVWH7n1QU -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:14.889 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:14.907 37.0 cvLH6Eat2yFsyy7p -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:15.549 37.0 821UdmGbkEf4j -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 37 1969-12-31 16:00:15.562 37.0 1cGVWH7n1QU -37 37 0 37.0 0.0 -37.0 2943.461 0.0 -37.0 0.0 -10.175 37.0 -0.7102702702702703 37.0 0.0 37 -true 38 1969-12-31 16:00:00.044 38.0 1cGVWH7n1QU -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:00.265 38.0 821UdmGbkEf4j -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:00.711 38.0 1cGVWH7n1QU -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:00.78 38.0 821UdmGbkEf4j -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:01.947 38.0 821UdmGbkEf4j -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:03.145 38.0 821UdmGbkEf4j -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:06.103 38.0 cvLH6Eat2yFsyy7p -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:08.278 38.0 1cGVWH7n1QU -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:09.169 38.0 cvLH6Eat2yFsyy7p -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:09.366 38.0 cvLH6Eat2yFsyy7p -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:12.819 38.0 1cGVWH7n1QU -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:14.239 38.0 821UdmGbkEf4j -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 38 1969-12-31 16:00:31.808 38.0 1cGVWH7n1QU -38 38 0 38.0 0.0 -38.0 3023.014 0.0 -38.0 0.0 -10.175 38.0 -0.6915789473684211 38.0 0.0 38 -true 39 1969-12-31 16:00:00.078 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:00.102 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:00.271 39.0 821UdmGbkEf4j -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:00.494 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:02.535 39.0 1cGVWH7n1QU -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:06.228 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:07.162 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:07.854 39.0 821UdmGbkEf4j -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:10.12 39.0 cvLH6Eat2yFsyy7p -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:10.399 39.0 1cGVWH7n1QU -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 39 1969-12-31 16:00:10.403 39.0 821UdmGbkEf4j -39 39 0 39.0 0.0 -39.0 3102.567 0.0 -39.0 0.0 -10.175 39.0 -0.6738461538461539 39.0 0.0 39 -true 40 1969-12-31 16:00:01.206 40.0 cvLH6Eat2yFsyy7p -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:02.488 40.0 821UdmGbkEf4j -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:02.643 40.0 821UdmGbkEf4j -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:02.842 40.0 1cGVWH7n1QU -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:05.521 40.0 cvLH6Eat2yFsyy7p -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:05.614 40.0 1cGVWH7n1QU -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:08.105 40.0 821UdmGbkEf4j -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:08.242 40.0 1cGVWH7n1QU -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:08.785 40.0 1cGVWH7n1QU -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:14.159 40.0 cvLH6Eat2yFsyy7p -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:15.973 40.0 cvLH6Eat2yFsyy7p -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 40 1969-12-31 16:00:16.188 40.0 1cGVWH7n1QU -40 40 0 40.0 0.0 -40.0 3182.12 0.0 -40.0 0.0 -10.175 40.0 -0.657 40.0 0.0 40 -true 41 1969-12-31 16:00:00.085 41.0 1cGVWH7n1QU -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:00.805 41.0 1cGVWH7n1QU -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:00.832 41.0 cvLH6Eat2yFsyy7p -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:04.128 41.0 cvLH6Eat2yFsyy7p -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:04.306 41.0 821UdmGbkEf4j -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:05.885 41.0 cvLH6Eat2yFsyy7p -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:05.897 41.0 1cGVWH7n1QU -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:06.554 41.0 cvLH6Eat2yFsyy7p -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 41 1969-12-31 16:00:12.235 41.0 cvLH6Eat2yFsyy7p -41 41 0 41.0 0.0 -41.0 3261.673 0.0 -41.0 0.0 -10.175 41.0 -0.6409756097560976 41.0 0.0 41 -true 42 1969-12-31 16:00:00.007 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:00.021 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:00.302 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:00.367 42.0 cvLH6Eat2yFsyy7p -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:00.865 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:03.797 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:03.871 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:06.511 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:06.575 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:08.737 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:08.791 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:09.782 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:11.391 42.0 cvLH6Eat2yFsyy7p -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:11.581 42.0 1cGVWH7n1QU -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:12.024 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:13.078 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:14.111 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 42 1969-12-31 16:00:14.152 42.0 821UdmGbkEf4j -42 42 0 42.0 0.0 -42.0 3341.2259999999997 0.0 -42.0 0.0 -10.175 42.0 -0.6257142857142858 42.0 0.0 42 -true 43 1969-12-31 16:00:00.74 43.0 1cGVWH7n1QU -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:01.028 43.0 821UdmGbkEf4j -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:02.649 43.0 1cGVWH7n1QU -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:02.844 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:03.818 43.0 1cGVWH7n1QU -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:06.114 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:06.596 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:07.435 43.0 1cGVWH7n1QU -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:07.891 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:10.637 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:12.613 43.0 821UdmGbkEf4j -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:12.781 43.0 821UdmGbkEf4j -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:13.539 43.0 821UdmGbkEf4j -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:14.133 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 43 1969-12-31 16:00:15.933 43.0 cvLH6Eat2yFsyy7p -43 43 0 43.0 0.0 -43.0 3420.779 0.0 -43.0 0.0 -10.175 43.0 -0.6111627906976744 43.0 0.0 43 -true 44 1969-12-31 16:00:04.242 44.0 1cGVWH7n1QU -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:05.278 44.0 1cGVWH7n1QU -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:06.09 44.0 821UdmGbkEf4j -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:09.561 44.0 821UdmGbkEf4j -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:11.625 44.0 cvLH6Eat2yFsyy7p -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:11.935 44.0 cvLH6Eat2yFsyy7p -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:12.47 44.0 821UdmGbkEf4j -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 44 1969-12-31 16:00:12.55 44.0 cvLH6Eat2yFsyy7p -44 44 0 44.0 0.0 -44.0 3500.332 0.0 -44.0 0.0 -10.175 44.0 -0.5972727272727273 44.0 0.0 44 -true 45 1969-12-31 16:00:01.31 45.0 821UdmGbkEf4j -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:03.14 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:05.109 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:05.308 45.0 1cGVWH7n1QU -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:05.42 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:05.536 45.0 1cGVWH7n1QU -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:06.248 45.0 821UdmGbkEf4j -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:06.903 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:11.503 45.0 1cGVWH7n1QU -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:11.522 45.0 1cGVWH7n1QU -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:13.953 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 45 1969-12-31 16:00:15.985 45.0 cvLH6Eat2yFsyy7p -45 45 0 45.0 0.0 -45.0 3579.8849999999998 0.0 -45.0 0.0 -10.175 45.0 -0.5840000000000001 45.0 0.0 45 -true 46 1969-12-31 16:00:00.863 46.0 1cGVWH7n1QU -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:00.971 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:01.276 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:02.015 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:02.31 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:04.245 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:04.301 46.0 1cGVWH7n1QU -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:05.211 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:05.507 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:06.626 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:08.662 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:09.654 46.0 1cGVWH7n1QU -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:12.772 46.0 1cGVWH7n1QU -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:13.074 46.0 cvLH6Eat2yFsyy7p -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:15.456 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:16.276 46.0 821UdmGbkEf4j -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 46 1969-12-31 16:00:31.808 46.0 1cGVWH7n1QU -46 46 0 46.0 0.0 -46.0 3659.438 0.0 -46.0 0.0 -10.175 46.0 -0.571304347826087 46.0 0.0 46 -true 47 1969-12-31 16:00:00.513 47.0 1cGVWH7n1QU -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:00.803 47.0 cvLH6Eat2yFsyy7p -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:02.024 47.0 1cGVWH7n1QU -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:05.241 47.0 cvLH6Eat2yFsyy7p -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:11.046 47.0 1cGVWH7n1QU -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:11.112 47.0 821UdmGbkEf4j -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:12.778 47.0 cvLH6Eat2yFsyy7p -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 47 1969-12-31 16:00:13.684 47.0 821UdmGbkEf4j -47 47 0 47.0 0.0 -47.0 3738.991 0.0 -47.0 0.0 -10.175 47.0 -0.5591489361702128 47.0 0.0 47 -true 48 1969-12-31 16:00:00.108 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:00.13 48.0 cvLH6Eat2yFsyy7p -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:00.511 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:00.905 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:00.923 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:01.05 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:01.307 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:01.512 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:03.11 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:04.561 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:06.604 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:06.864 48.0 cvLH6Eat2yFsyy7p -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:07.205 48.0 cvLH6Eat2yFsyy7p -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:07.463 48.0 821UdmGbkEf4j -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:13.232 48.0 cvLH6Eat2yFsyy7p -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 48 1969-12-31 16:00:15.654 48.0 1cGVWH7n1QU -48 48 0 48.0 0.0 -48.0 3818.544 0.0 -48.0 0.0 -10.175 48.0 -0.5475 48.0 0.0 48 -true 49 1969-12-31 16:00:00.662 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:04.128 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:04.907 49.0 1cGVWH7n1QU -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:05.028 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:05.248 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:06.048 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:07.091 49.0 1cGVWH7n1QU -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:07.648 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:08.827 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:09.365 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:11.401 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:12.273 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:12.87 49.0 821UdmGbkEf4j -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:13.146 49.0 1cGVWH7n1QU -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:13.889 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:14.778 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:15.523 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 49 1969-12-31 16:00:15.541 49.0 cvLH6Eat2yFsyy7p -49 49 0 49.0 0.0 -49.0 3898.0969999999998 0.0 -49.0 0.0 -10.175 49.0 -0.5363265306122449 49.0 0.0 49 -true 50 1969-12-31 16:00:00.099 50.0 cvLH6Eat2yFsyy7p -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:03.897 50.0 cvLH6Eat2yFsyy7p -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:03.971 50.0 821UdmGbkEf4j -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:04.834 50.0 1cGVWH7n1QU -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:09.041 50.0 1cGVWH7n1QU -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:09.868 50.0 1cGVWH7n1QU -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:11.087 50.0 1cGVWH7n1QU -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:13.169 50.0 cvLH6Eat2yFsyy7p -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:15.443 50.0 cvLH6Eat2yFsyy7p -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:15.938 50.0 1cGVWH7n1QU -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:16.096 50.0 821UdmGbkEf4j -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 50 1969-12-31 16:00:16.338 50.0 821UdmGbkEf4j -50 50 0 50.0 0.0 -50.0 3977.6499999999996 0.0 -50.0 0.0 -10.175 50.0 -0.5256000000000001 50.0 0.0 50 -true 51 1969-12-31 16:00:00.383 51.0 821UdmGbkEf4j -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:00.882 51.0 821UdmGbkEf4j -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:05.78 51.0 821UdmGbkEf4j -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:07.406 51.0 1cGVWH7n1QU -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:07.476 51.0 cvLH6Eat2yFsyy7p -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:08.804 51.0 1cGVWH7n1QU -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 51 1969-12-31 16:00:12.56 51.0 821UdmGbkEf4j -51 51 0 51.0 0.0 -51.0 4057.203 0.0 -51.0 0.0 -10.175 51.0 -0.5152941176470588 51.0 0.0 51 -true 52 1969-12-31 16:00:00.199 52.0 821UdmGbkEf4j -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:01.196 52.0 cvLH6Eat2yFsyy7p -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:06.246 52.0 cvLH6Eat2yFsyy7p -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:06.556 52.0 821UdmGbkEf4j -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:07.428 52.0 1cGVWH7n1QU -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:09.665 52.0 1cGVWH7n1QU -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:10.592 52.0 821UdmGbkEf4j -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:12.652 52.0 821UdmGbkEf4j -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:13.72 52.0 cvLH6Eat2yFsyy7p -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 52 1969-12-31 16:00:15.483 52.0 1cGVWH7n1QU -52 52 0 52.0 0.0 -52.0 4136.755999999999 0.0 -52.0 0.0 -10.175 52.0 -0.5053846153846154 52.0 0.0 52 -true 53 1969-12-31 16:00:00.51 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:00.751 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:02.611 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:03.259 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:03.287 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:04.181 53.0 cvLH6Eat2yFsyy7p -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:05.393 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:05.897 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:06.654 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:07.077 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:07.35 53.0 cvLH6Eat2yFsyy7p -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:08.79 53.0 cvLH6Eat2yFsyy7p -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:09.926 53.0 821UdmGbkEf4j -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:10.607 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:11.254 53.0 cvLH6Eat2yFsyy7p -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:11.362 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:14.694 53.0 cvLH6Eat2yFsyy7p -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 53 1969-12-31 16:00:16.36 53.0 1cGVWH7n1QU -53 53 0 53.0 0.0 -53.0 4216.309 0.0 -53.0 0.0 -10.175 53.0 -0.4958490566037736 53.0 0.0 53 -true 54 1969-12-31 16:00:04.268 54.0 821UdmGbkEf4j -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:05.961 54.0 cvLH6Eat2yFsyy7p -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:06.995 54.0 821UdmGbkEf4j -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:10.663 54.0 821UdmGbkEf4j -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:11.256 54.0 1cGVWH7n1QU -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:13.953 54.0 cvLH6Eat2yFsyy7p -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:16.368 54.0 cvLH6Eat2yFsyy7p -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 54 1969-12-31 16:00:16.558 54.0 1cGVWH7n1QU -54 54 0 54.0 0.0 -54.0 4295.862 0.0 -54.0 0.0 -10.175 54.0 -0.4866666666666667 54.0 0.0 54 -true 55 1969-12-31 16:00:00.672 55.0 821UdmGbkEf4j -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:08.465 55.0 cvLH6Eat2yFsyy7p -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:08.748 55.0 821UdmGbkEf4j -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:11.504 55.0 1cGVWH7n1QU -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:12.871 55.0 1cGVWH7n1QU -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:13.67 55.0 1cGVWH7n1QU -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:15.013 55.0 821UdmGbkEf4j -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 55 1969-12-31 16:00:15.678 55.0 cvLH6Eat2yFsyy7p -55 55 0 55.0 0.0 -55.0 4375.415 0.0 -55.0 0.0 -10.175 55.0 -0.47781818181818186 55.0 0.0 55 -true 56 1969-12-31 16:00:00.192 56.0 821UdmGbkEf4j -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:00.239 56.0 cvLH6Eat2yFsyy7p -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:00.762 56.0 cvLH6Eat2yFsyy7p -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:01.556 56.0 cvLH6Eat2yFsyy7p -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:04.286 56.0 1cGVWH7n1QU -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:05 56.0 821UdmGbkEf4j -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:05.898 56.0 821UdmGbkEf4j -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:08.683 56.0 821UdmGbkEf4j -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:13.259 56.0 cvLH6Eat2yFsyy7p -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 56 1969-12-31 16:00:14.785 56.0 821UdmGbkEf4j -56 56 0 56.0 0.0 -56.0 4454.968 0.0 -56.0 0.0 -10.175 56.0 -0.4692857142857143 56.0 0.0 56 -true 57 1969-12-31 16:00:00.002 57.0 1cGVWH7n1QU -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:00.646 57.0 821UdmGbkEf4j -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:00.652 57.0 821UdmGbkEf4j -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:01.967 57.0 cvLH6Eat2yFsyy7p -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:07.705 57.0 cvLH6Eat2yFsyy7p -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:08.429 57.0 1cGVWH7n1QU -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:08.837 57.0 821UdmGbkEf4j -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:11.286 57.0 821UdmGbkEf4j -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:11.699 57.0 1cGVWH7n1QU -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:13.71 57.0 cvLH6Eat2yFsyy7p -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:14.889 57.0 1cGVWH7n1QU -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 57 1969-12-31 16:00:16.278 57.0 821UdmGbkEf4j -57 57 0 57.0 0.0 -57.0 4534.521 0.0 -57.0 0.0 -10.175 57.0 -0.4610526315789474 57.0 0.0 57 -true 58 1969-12-31 16:00:01.049 58.0 cvLH6Eat2yFsyy7p -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:02.09 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:02.777 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:03.855 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:04.612 58.0 cvLH6Eat2yFsyy7p -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:07.29 58.0 cvLH6Eat2yFsyy7p -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:07.377 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:08.031 58.0 821UdmGbkEf4j -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:11.54 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 58 1969-12-31 16:00:14.693 58.0 1cGVWH7n1QU -58 58 0 58.0 0.0 -58.0 4614.074 0.0 -58.0 0.0 -10.175 58.0 -0.4531034482758621 58.0 0.0 58 -true 59 1969-12-31 16:00:00.373 59.0 cvLH6Eat2yFsyy7p -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:00.636 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:01.126 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:01.736 59.0 cvLH6Eat2yFsyy7p -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:02.157 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:04.322 59.0 cvLH6Eat2yFsyy7p -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:04.432 59.0 1cGVWH7n1QU -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:06.7 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:07.546 59.0 1cGVWH7n1QU -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:10.47 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:10.903 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 59 1969-12-31 16:00:16.24 59.0 821UdmGbkEf4j -59 59 0 59.0 0.0 -59.0 4693.6269999999995 0.0 -59.0 0.0 -10.175 59.0 -0.44542372881355935 59.0 0.0 59 -true 60 1969-12-31 16:00:00.865 60.0 821UdmGbkEf4j -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:01.679 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:02.089 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:02.827 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:02.958 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:04.44 60.0 821UdmGbkEf4j -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:04.488 60.0 821UdmGbkEf4j -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:05.963 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:05.986 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:07.642 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:08.462 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:10.065 60.0 821UdmGbkEf4j -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 60 1969-12-31 16:00:12.437 60.0 1cGVWH7n1QU -60 60 0 60.0 0.0 -60.0 4773.18 0.0 -60.0 0.0 -10.175 60.0 -0.438 60.0 0.0 60 -true 61 1969-12-31 16:00:02.617 61.0 cvLH6Eat2yFsyy7p -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:02.688 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:03.992 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:05.172 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:05.391 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:05.394 61.0 cvLH6Eat2yFsyy7p -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:07.514 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:07.974 61.0 cvLH6Eat2yFsyy7p -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:08.3 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:11.737 61.0 cvLH6Eat2yFsyy7p -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:12.397 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:13.741 61.0 821UdmGbkEf4j -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:15.101 61.0 821UdmGbkEf4j -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 61 1969-12-31 16:00:15.673 61.0 1cGVWH7n1QU -61 61 0 61.0 0.0 -61.0 4852.733 0.0 -61.0 0.0 -10.175 61.0 -0.4308196721311476 61.0 0.0 61 -true 62 1969-12-31 16:00:01.674 62.0 cvLH6Eat2yFsyy7p -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:01.936 62.0 1cGVWH7n1QU -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:02.922 62.0 821UdmGbkEf4j -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:06.409 62.0 1cGVWH7n1QU -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:08.785 62.0 cvLH6Eat2yFsyy7p -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:09.442 62.0 821UdmGbkEf4j -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:09.455 62.0 821UdmGbkEf4j -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:09.659 62.0 821UdmGbkEf4j -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:10.845 62.0 821UdmGbkEf4j -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 -true 62 1969-12-31 16:00:11.073 62.0 1cGVWH7n1QU -62 62 0 62.0 0.0 -62.0 4932.286 0.0 -62.0 0.0 -10.175 62.0 -0.4238709677419355 62.0 0.0 62 +PREHOOK: query: -- double compare timestamp +EXPLAIN +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > -1.388) + AND ((ctimestamp2 != -1.3359999999999999) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +PREHOOK: type: QUERY +POSTHOOK: query: -- double compare timestamp +EXPLAIN +SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > -1.388) + AND ((ctimestamp2 != -1.3359999999999999) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((cfloat < 3569.0) and ((10.175 >= cdouble) and (cboolean1 <> 1))) or ((ctimestamp1 > -1.388) and ((ctimestamp2 <> -1.3359999999999999) and (ctinyint < 9763215.5639)))) (type: boolean) + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cboolean1 (type: boolean), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cfloat (type: float), cstring1 (type: string) + outputColumnNames: cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(ctinyint), sum(cfloat), stddev_pop(cfloat), stddev_pop(ctinyint), max(cfloat), min(ctinyint) + keys: cboolean1 (type: boolean), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cfloat (type: float), cstring1 (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string) + sort order: +++++ + Map-reduce partition columns: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string) + Statistics: Num rows: 2730 Data size: 83809 Basic stats: COMPLETE Column stats: NONE + value expressions: _col5 (type: tinyint), _col6 (type: double), _col7 (type: struct), _col8 (type: struct), _col9 (type: float), _col10 (type: tinyint) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0), sum(VALUE._col1), stddev_pop(VALUE._col2), stddev_pop(VALUE._col3), max(VALUE._col4), min(VALUE._col5) + keys: KEY._col0 (type: boolean), KEY._col1 (type: tinyint), KEY._col2 (type: timestamp), KEY._col3 (type: float), KEY._col4 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: boolean), _col1 (type: tinyint), _col2 (type: timestamp), _col3 (type: float), _col4 (type: string), (- _col1) (type: tinyint), _col5 (type: tinyint), ((- _col1) + _col5) (type: tinyint), _col6 (type: double), (_col6 * ((- _col1) + _col5)) (type: double), (- _col6) (type: double), (79.553 * _col3) (type: double), _col7 (type: double), (- _col6) (type: double), _col8 (type: double), (((- _col1) + _col5) - 10.175) (type: double), (- (- _col6)) (type: double), (-26.28 / (- (- _col6))) (type: double), _col9 (type: float), ((_col6 * ((- _col1) + _col5)) / _col1) (type: double), _col10 (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20 + Statistics: Num rows: 1365 Data size: 41904 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 40 + Statistics: Num rows: 40 Data size: 1200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 40 Data size: 1200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 40 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > -1.388) + AND ((ctimestamp2 != -1.3359999999999999) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cboolean1, + ctinyint, + ctimestamp1, + cfloat, + cstring1, + (-(ctinyint)), + MAX(ctinyint), + ((-(ctinyint)) + MAX(ctinyint)), + SUM(cfloat), + (SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))), + (-(SUM(cfloat))), + (79.553 * cfloat), + STDDEV_POP(cfloat), + (-(SUM(cfloat))), + STDDEV_POP(ctinyint), + (((-(ctinyint)) + MAX(ctinyint)) - 10.175), + (-((-(SUM(cfloat))))), + (-26.28 / (-((-(SUM(cfloat)))))), + MAX(cfloat), + ((SUM(cfloat) * ((-(ctinyint)) + MAX(ctinyint))) / ctinyint), + MIN(ctinyint) +FROM alltypesorc +WHERE (((cfloat < 3569) + AND ((10.175 >= cdouble) + AND (cboolean1 != 1))) + OR ((ctimestamp1 > -1.388) + AND ((ctimestamp2 != -1.3359999999999999) + AND (ctinyint < 9763215.5639)))) +GROUP BY cboolean1, ctinyint, ctimestamp1, cfloat, cstring1 +LIMIT 40 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL -64 1969-12-31 16:00:00.199 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:00.29 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:01.785 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:03.944 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:05.997 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:10.858 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:11.912 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:12.339 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -64 1969-12-31 16:00:13.274 -64.0 NULL 64 -64 0 -64.0 -0.0 64.0 -5091.392 0.0 64.0 0.0 -10.175 -64.0 0.410625 -64.0 0.0 -64 +NULL -63 1969-12-31 16:00:01.843 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:03.552 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:06.852 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:07.375 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:10.205 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:11.946 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:12.188 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -63 1969-12-31 16:00:15.436 -63.0 NULL 63 -63 0 -63.0 -0.0 63.0 -5011.839 0.0 63.0 0.0 -10.175 -63.0 0.41714285714285715 -63.0 0.0 -63 +NULL -62 1969-12-31 16:00:00.037 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:01.22 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:01.515 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:01.734 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:02.373 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:03.85 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:08.198 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:09.025 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:09.889 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:10.069 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:10.225 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:10.485 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:12.388 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:12.591 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:14.154 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:14.247 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:14.517 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -62 1969-12-31 16:00:14.965 -62.0 NULL 62 -62 0 -62.0 -0.0 62.0 -4932.286 0.0 62.0 0.0 -10.175 -62.0 0.4238709677419355 -62.0 0.0 -62 +NULL -61 1969-12-31 16:00:00.142 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 +NULL -61 1969-12-31 16:00:02.698 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 +NULL -61 1969-12-31 16:00:03.049 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 +NULL -61 1969-12-31 16:00:04.165 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 +NULL -61 1969-12-31 16:00:04.977 -61.0 NULL 61 -61 0 -61.0 -0.0 61.0 -4852.733 0.0 61.0 0.0 -10.175 -61.0 0.4308196721311476 -61.0 0.0 -61 diff --git a/ql/src/test/results/clientpositive/vectorization_7.q.out b/ql/src/test/results/clientpositive/vectorization_7.q.out index c78de7372e57..a4b7b4097e9f 100644 --- a/ql/src/test/results/clientpositive/vectorization_7.q.out +++ b/ql/src/test/results/clientpositive/vectorization_7.q.out @@ -1,3 +1,91 @@ +PREHOOK: query: EXPLAIN +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > -15) + AND (3569 >= cdouble))))) +LIMIT 25 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > -15) + AND (3569 >= cdouble))))) +LIMIT 25 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((ctinyint <> 0) and ((ctimestamp1 <= 0) or ((ctinyint = cint) or (cstring2 like 'ss')))) and ((988888.0 < cdouble) or ((ctimestamp2 > -15) and (3569.0 >= cdouble)))) (type: boolean) + Statistics: Num rows: 7281 Data size: 223523 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cboolean1 (type: boolean), cbigint (type: bigint), csmallint (type: smallint), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cstring1 (type: string), (cbigint + cbigint) (type: bigint), (csmallint % -257) (type: int), (- csmallint) (type: smallint), (- ctinyint) (type: tinyint), ((- ctinyint) + 17) (type: int), (cbigint * (- csmallint)) (type: bigint), (cint % csmallint) (type: int), (- ctinyint) (type: tinyint), ((- ctinyint) % ctinyint) (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14 + Statistics: Num rows: 7281 Data size: 223523 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 25 + Processor Tree: + ListSink + PREHOOK: query: SELECT cboolean1, cbigint, csmallint, @@ -19,8 +107,9 @@ WHERE ((ctinyint != 0) OR ((ctinyint = cint) OR (cstring2 LIKE 'ss'))) AND ((988888 < cdouble) - OR ((ctimestamp2 > -29071) + OR ((ctimestamp2 > -15) AND (3569 >= cdouble))))) +LIMIT 25 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -45,8 +134,9 @@ WHERE ((ctinyint != 0) OR ((ctinyint = cint) OR (cstring2 LIKE 'ss'))) AND ((988888 < cdouble) - OR ((ctimestamp2 > -29071) + OR ((ctimestamp2 > -15) AND (3569 >= cdouble))))) +LIMIT 25 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -54,486 +144,193 @@ true NULL -13326 -50 1969-12-31 15:59:46.674 cvLH6Eat2yFsyy7p NULL -219 13326 50 true NULL -15813 -28 1969-12-31 15:59:55.787 cvLH6Eat2yFsyy7p NULL -136 15813 28 45 NULL 1055 28 0 true NULL -9566 31 1969-12-31 15:59:44.187 cvLH6Eat2yFsyy7p NULL -57 9566 -31 -14 NULL 3701 -31 0 true NULL -15431 -11 1969-12-31 15:59:52.176 cvLH6Eat2yFsyy7p NULL -11 15431 11 28 NULL 7586 11 0 +true NULL -15549 61 1969-12-31 15:59:44.569 cvLH6Eat2yFsyy7p NULL -129 15549 -61 -44 NULL 8708 -61 0 +true NULL 10 -62 1969-12-31 15:59:52.265 cvLH6Eat2yFsyy7p NULL 10 -10 62 79 NULL 7 62 0 true NULL -10909 39 1969-12-31 15:59:58.276 cvLH6Eat2yFsyy7p NULL -115 10909 -39 -22 NULL 4626 -39 0 +true NULL -10154 -23 1969-12-31 15:59:44.088 cvLH6Eat2yFsyy7p NULL -131 10154 23 40 NULL 8913 23 0 +true NULL -7449 -55 1969-12-31 15:59:49.846 cvLH6Eat2yFsyy7p NULL -253 7449 55 72 NULL 5870 55 0 true NULL 163 -24 1969-12-31 15:59:55.51 cvLH6Eat2yFsyy7p NULL 163 -163 24 41 NULL 95 24 0 true NULL -14739 4 1969-12-31 15:59:55.188 cvLH6Eat2yFsyy7p NULL -90 14739 -4 13 NULL 8966 -4 0 true NULL -11492 -57 1969-12-31 15:59:45.261 cvLH6Eat2yFsyy7p NULL -184 11492 57 74 NULL 6195 57 0 true NULL -6583 38 1969-12-31 15:59:53.078 cvLH6Eat2yFsyy7p NULL -158 6583 -38 -21 NULL 5446 -38 0 true NULL -10268 -54 1969-12-31 15:59:53.417 cvLH6Eat2yFsyy7p NULL -245 10268 54 71 NULL 10003 54 0 +true NULL -15790 51 1969-12-31 15:59:49.871 cvLH6Eat2yFsyy7p NULL -113 15790 -51 -34 NULL 11887 -51 0 true NULL -3045 18 1969-12-31 15:59:47.829 cvLH6Eat2yFsyy7p NULL -218 3045 -18 -1 NULL 1937 -18 0 true NULL -814 30 1969-12-31 15:59:56.955 cvLH6Eat2yFsyy7p NULL -43 814 -30 -13 NULL 497 -30 0 +true NULL -7353 -55 1969-12-31 15:59:44.941 cvLH6Eat2yFsyy7p NULL -157 7353 55 72 NULL 1127 55 0 +true NULL -4463 -40 1969-12-31 15:59:52.647 cvLH6Eat2yFsyy7p NULL -94 4463 40 57 NULL 3992 40 0 true NULL 3168 -21 1969-12-31 15:59:56.834 cvLH6Eat2yFsyy7p NULL 84 -3168 21 38 NULL 1487 21 0 +true NULL -3419 -53 1969-12-31 15:59:46.771 cvLH6Eat2yFsyy7p NULL -78 3419 53 70 NULL 1814 53 0 +true NULL -4255 34 1969-12-31 15:59:56.581 cvLH6Eat2yFsyy7p NULL -143 4255 -34 -17 NULL 4197 -34 0 true NULL -7183 -21 1969-12-31 15:59:45.035 cvLH6Eat2yFsyy7p NULL -244 7183 21 38 NULL 2444 21 0 true NULL 1475 43 1969-12-31 15:59:56.988 cvLH6Eat2yFsyy7p NULL 190 -1475 -43 -26 NULL 967 -43 0 -true NULL 1345 2 1969-12-31 15:59:55.333 cvLH6Eat2yFsyy7p NULL 60 -1345 -2 15 NULL 877 -2 0 -true NULL -75 -1 1969-12-31 15:59:49.331 cvLH6Eat2yFsyy7p NULL -75 75 1 18 NULL 17 1 0 +true NULL 37 41 1969-12-31 15:59:52.817 cvLH6Eat2yFsyy7p NULL 37 -37 -41 -24 NULL 16 -41 0 +PREHOOK: query: -- double compare timestamp +EXPLAIN +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0.0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > 7.6850000000000005) + AND (3569 >= cdouble))))) +LIMIT 25 +PREHOOK: type: QUERY +POSTHOOK: query: -- double compare timestamp +EXPLAIN +SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0.0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > 7.6850000000000005) + AND (3569 >= cdouble))))) +LIMIT 25 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((ctinyint <> 0) and ((ctimestamp1 <= 0.0) or ((ctinyint = cint) or (cstring2 like 'ss')))) and ((988888.0 < cdouble) or ((ctimestamp2 > 7.6850000000000005) and (3569.0 >= cdouble)))) (type: boolean) + Statistics: Num rows: 7281 Data size: 223523 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cboolean1 (type: boolean), cbigint (type: bigint), csmallint (type: smallint), ctinyint (type: tinyint), ctimestamp1 (type: timestamp), cstring1 (type: string), (cbigint + cbigint) (type: bigint), (csmallint % -257) (type: int), (- csmallint) (type: smallint), (- ctinyint) (type: tinyint), ((- ctinyint) + 17) (type: int), (cbigint * (- csmallint)) (type: bigint), (cint % csmallint) (type: int), (- ctinyint) (type: tinyint), ((- ctinyint) % ctinyint) (type: tinyint) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14 + Statistics: Num rows: 7281 Data size: 223523 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 25 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0.0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > 7.6850000000000005) + AND (3569 >= cdouble))))) +LIMIT 25 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cboolean1, + cbigint, + csmallint, + ctinyint, + ctimestamp1, + cstring1, + (cbigint + cbigint), + (csmallint % -257), + (-(csmallint)), + (-(ctinyint)), + ((-(ctinyint)) + 17), + (cbigint * (-(csmallint))), + (cint % csmallint), + (-(ctinyint)), + ((-(ctinyint)) % ctinyint) +FROM alltypesorc +WHERE ((ctinyint != 0) + AND (((ctimestamp1 <= 0.0) + OR ((ctinyint = cint) + OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > 7.6850000000000005) + AND (3569 >= cdouble))))) +LIMIT 25 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +true NULL -13326 -50 1969-12-31 15:59:46.674 cvLH6Eat2yFsyy7p NULL -219 13326 50 67 NULL 12281 50 0 +true NULL -15431 -11 1969-12-31 15:59:52.176 cvLH6Eat2yFsyy7p NULL -11 15431 11 28 NULL 7586 11 0 +true NULL -10909 39 1969-12-31 15:59:58.276 cvLH6Eat2yFsyy7p NULL -115 10909 -39 -22 NULL 4626 -39 0 +true NULL -14739 4 1969-12-31 15:59:55.188 cvLH6Eat2yFsyy7p NULL -90 14739 -4 13 NULL 8966 -4 0 +true NULL -814 30 1969-12-31 15:59:56.955 cvLH6Eat2yFsyy7p NULL -43 814 -30 -13 NULL 497 -30 0 +true NULL 3168 -21 1969-12-31 15:59:56.834 cvLH6Eat2yFsyy7p NULL 84 -3168 21 38 NULL 1487 21 0 true NULL -1027 -4 1969-12-31 15:59:46.628 cvLH6Eat2yFsyy7p NULL -256 1027 4 21 NULL 514 4 0 -true NULL -2468 -47 1969-12-31 15:59:48.68 cvLH6Eat2yFsyy7p NULL -155 2468 47 64 NULL 227 47 0 true NULL -6294 -7 1969-12-31 15:59:58.973 cvLH6Eat2yFsyy7p NULL -126 6294 7 24 NULL 2411 7 0 true NULL -9139 42 1969-12-31 15:59:57.532 cvLH6Eat2yFsyy7p NULL -144 9139 -42 -25 NULL 8119 -42 0 -true NULL -3191 56 1969-12-31 15:59:50.861 cvLH6Eat2yFsyy7p NULL -107 3191 -56 -39 NULL 3055 -56 0 true NULL -15478 7 1969-12-31 15:59:56.809 cvLH6Eat2yFsyy7p NULL -58 15478 -7 10 NULL 7501 -7 0 -true NULL -10096 -55 1969-12-31 15:59:44.522 cvLH6Eat2yFsyy7p NULL -73 10096 55 72 NULL 9167 55 0 true NULL -7151 -31 1969-12-31 15:59:48.202 cvLH6Eat2yFsyy7p NULL -212 7151 31 48 NULL 4357 31 0 true NULL -9098 -57 1969-12-31 15:59:52.146 cvLH6Eat2yFsyy7p NULL -103 9098 57 74 NULL 4653 57 0 -true NULL -3309 30 1969-12-31 15:59:47.778 cvLH6Eat2yFsyy7p NULL -225 3309 -30 -13 NULL 1433 -30 0 -true NULL -7654 39 1969-12-31 15:59:51.244 cvLH6Eat2yFsyy7p NULL -201 7654 -39 -22 NULL 3105 -39 0 true NULL 3519 39 1969-12-31 15:59:45.43 cvLH6Eat2yFsyy7p NULL 178 -3519 -39 -22 NULL 2081 -39 0 true NULL -9837 -7 1969-12-31 15:59:52.346 cvLH6Eat2yFsyy7p NULL -71 9837 7 24 NULL 2594 7 0 true NULL 1268 -3 1969-12-31 15:59:50.163 cvLH6Eat2yFsyy7p NULL 240 -1268 3 20 NULL 667 3 0 true NULL -3110 6 1969-12-31 15:59:58.248 cvLH6Eat2yFsyy7p NULL -26 3110 -6 11 NULL 2707 -6 0 -true NULL -7018 13 1969-12-31 15:59:57.57 cvLH6Eat2yFsyy7p NULL -79 7018 -13 4 NULL 2169 -13 0 true NULL -5588 4 1969-12-31 15:59:52.982 cvLH6Eat2yFsyy7p NULL -191 5588 -4 13 NULL 4963 -4 0 -true NULL -4951 -52 1969-12-31 15:59:52.112 cvLH6Eat2yFsyy7p NULL -68 4951 52 69 NULL 664 52 0 -true NULL -7727 -19 1969-12-31 15:59:47.685 cvLH6Eat2yFsyy7p NULL -17 7727 19 36 NULL 240 19 0 -true NULL -9312 41 1969-12-31 15:59:43.631 cvLH6Eat2yFsyy7p NULL -60 9312 -41 -24 NULL 4271 -41 0 true NULL -14375 -60 1969-12-31 15:59:46.425 cvLH6Eat2yFsyy7p NULL -240 14375 60 77 NULL 9142 60 0 -true NULL -14213 -30 1969-12-31 15:59:50.688 cvLH6Eat2yFsyy7p NULL -78 14213 30 47 NULL 10149 30 0 -true NULL -15789 -59 1969-12-31 15:59:45.787 cvLH6Eat2yFsyy7p NULL -112 15789 59 76 NULL 13781 59 0 -true NULL -8752 4 1969-12-31 15:59:45.484 cvLH6Eat2yFsyy7p NULL -14 8752 -4 13 NULL 1487 -4 0 true NULL -15659 -11 1969-12-31 15:59:48.466 cvLH6Eat2yFsyy7p NULL -239 15659 11 28 NULL 12199 11 0 -true NULL -3738 40 1969-12-31 15:59:50.671 cvLH6Eat2yFsyy7p NULL -140 3738 -40 -23 NULL 257 -40 0 -true NULL -3463 48 1969-12-31 15:59:51.248 cvLH6Eat2yFsyy7p NULL -122 3463 -48 -31 NULL 1318 -48 0 true NULL -14433 -7 1969-12-31 15:59:48.736 cvLH6Eat2yFsyy7p NULL -41 14433 7 24 NULL 12740 7 0 true NULL -11497 -13 1969-12-31 15:59:45.567 cvLH6Eat2yFsyy7p NULL -189 11497 13 30 NULL 6180 13 0 true NULL -6770 7 1969-12-31 15:59:58.755 cvLH6Eat2yFsyy7p NULL -88 6770 -7 10 NULL 867 -7 0 true NULL -180 -30 1969-12-31 15:59:48.503 cvLH6Eat2yFsyy7p NULL -180 180 30 47 NULL 47 30 0 -true NULL 94 -40 1969-12-31 15:59:48.978 cvLH6Eat2yFsyy7p NULL 94 -94 40 57 NULL 27 40 0 -true NULL -506 34 1969-12-31 15:59:53.23 cvLH6Eat2yFsyy7p NULL -249 506 -34 -17 NULL 57 -34 0 true NULL -8841 -48 1969-12-31 15:59:57.746 cvLH6Eat2yFsyy7p NULL -103 8841 48 65 NULL 2105 48 0 -true NULL 99 -15 1969-12-31 15:59:51.159 cvLH6Eat2yFsyy7p NULL 99 -99 15 32 NULL 2 15 0 -true NULL -10962 -62 1969-12-31 15:59:57.475 cvLH6Eat2yFsyy7p NULL -168 10962 62 79 NULL 1937 62 0 true NULL 838 -48 1969-12-31 15:59:46.43 cvLH6Eat2yFsyy7p NULL 67 -838 48 65 NULL 625 48 0 -true NULL -9953 37 1969-12-31 15:59:57.805 cvLH6Eat2yFsyy7p NULL -187 9953 -37 -20 NULL 608 -37 0 -true NULL -2075 -56 1969-12-31 15:59:49.782 cvLH6Eat2yFsyy7p NULL -19 2075 56 73 NULL 1142 56 0 -true NULL -11071 23 1969-12-31 15:59:57.925 cvLH6Eat2yFsyy7p NULL -20 11071 -23 -6 NULL 5227 -23 0 -true NULL -6937 27 1969-12-31 15:59:44.266 cvLH6Eat2yFsyy7p NULL -255 6937 -27 -10 NULL 4737 -27 0 -true NULL 3510 -62 1969-12-31 15:59:50.51 cvLH6Eat2yFsyy7p NULL 169 -3510 62 79 NULL 2477 62 0 -true NULL -389 -8 1969-12-31 15:59:45.939 cvLH6Eat2yFsyy7p NULL -132 389 8 25 NULL 78 8 0 -true NULL -9123 -11 1969-12-31 15:59:56.431 cvLH6Eat2yFsyy7p NULL -128 9123 11 28 NULL 2885 11 0 -true NULL -6251 32 1969-12-31 15:59:47.221 cvLH6Eat2yFsyy7p NULL -83 6251 -32 -15 NULL 215 -32 0 -true NULL -15794 53 1969-12-31 15:59:53.749 cvLH6Eat2yFsyy7p NULL -117 15794 -53 -36 NULL 4351 -53 0 -true NULL -3899 -31 1969-12-31 15:59:44.934 cvLH6Eat2yFsyy7p NULL -44 3899 31 48 NULL 1923 31 0 -true NULL -13636 12 1969-12-31 15:59:53.526 cvLH6Eat2yFsyy7p NULL -15 13636 -12 5 NULL 3407 -12 0 -true NULL -7627 -20 1969-12-31 15:59:53.103 cvLH6Eat2yFsyy7p NULL -174 7627 20 37 NULL 6548 20 0 -true NULL -11287 -55 1969-12-31 15:59:46.364 cvLH6Eat2yFsyy7p NULL -236 11287 55 72 NULL 9705 55 0 -true NULL -3929 -6 1969-12-31 15:59:46.27 cvLH6Eat2yFsyy7p NULL -74 3929 6 23 NULL 1758 6 0 -true NULL -13283 31 1969-12-31 15:59:46.106 cvLH6Eat2yFsyy7p NULL -176 13283 -31 -14 NULL 4197 -31 0 -true NULL -14354 38 1969-12-31 15:59:46.965 cvLH6Eat2yFsyy7p NULL -219 14354 -38 -21 NULL 6133 -38 0 -true NULL -15612 -39 1969-12-31 15:59:45.929 cvLH6Eat2yFsyy7p NULL -192 15612 39 56 NULL 6119 39 0 -true NULL -8353 32 1969-12-31 15:59:49.915 cvLH6Eat2yFsyy7p NULL -129 8353 -32 -15 NULL 7045 -32 0 -true NULL -5036 30 1969-12-31 15:59:52.78 cvLH6Eat2yFsyy7p NULL -153 5036 -30 -13 NULL 1531 -30 0 -true NULL 995 56 1969-12-31 15:59:54.84 cvLH6Eat2yFsyy7p NULL 224 -995 -56 -39 NULL 717 -56 0 -true NULL -1740 16 1969-12-31 15:59:52.686 cvLH6Eat2yFsyy7p NULL -198 1740 -16 1 NULL 1067 -16 0 -true NULL -6247 -14 1969-12-31 15:59:54.625 cvLH6Eat2yFsyy7p NULL -79 6247 14 31 NULL 1085 14 0 -true NULL -3925 -48 1969-12-31 15:59:50.234 cvLH6Eat2yFsyy7p NULL -70 3925 48 65 NULL 2117 48 0 -true NULL -12518 -22 1969-12-31 15:59:45.889 cvLH6Eat2yFsyy7p NULL -182 12518 22 39 NULL 12289 22 0 -true NULL 2272 60 1969-12-31 15:59:48.088 cvLH6Eat2yFsyy7p NULL 216 -2272 -60 -43 NULL 1679 -60 0 -true NULL -4905 44 1969-12-31 15:59:47.482 cvLH6Eat2yFsyy7p NULL -22 4905 -44 -27 NULL 1397 -44 0 -true NULL -6264 -60 1969-12-31 15:59:49.298 cvLH6Eat2yFsyy7p NULL -96 6264 60 77 NULL 3503 60 0 -true NULL -8445 11 1969-12-31 15:59:52.234 cvLH6Eat2yFsyy7p NULL -221 8445 -11 6 NULL 4442 -11 0 -true NULL -9293 -59 1969-12-31 15:59:56.413 cvLH6Eat2yFsyy7p NULL -41 9293 59 76 NULL 4685 59 0 -true NULL -9807 49 1969-12-31 15:59:51.555 cvLH6Eat2yFsyy7p NULL -41 9807 -49 -32 NULL 6116 -49 0 -true NULL -16025 -42 1969-12-31 15:59:54.534 cvLH6Eat2yFsyy7p NULL -91 16025 42 59 NULL 14242 42 0 -true NULL -7121 29 1969-12-31 15:59:50.193 cvLH6Eat2yFsyy7p NULL -182 7121 -29 -12 NULL 7026 -29 0 -true NULL -3621 38 1969-12-31 15:59:48.953 cvLH6Eat2yFsyy7p NULL -23 3621 -38 -21 NULL 2744 -38 0 -true NULL -6807 -12 1969-12-31 15:59:56.534 cvLH6Eat2yFsyy7p NULL -125 6807 12 29 NULL 5252 12 0 -true NULL 32 -16 1969-12-31 15:59:53.193 cvLH6Eat2yFsyy7p NULL 32 -32 16 33 NULL 15 16 0 -true NULL -3897 20 1969-12-31 15:59:48.799 cvLH6Eat2yFsyy7p NULL -42 3897 -20 -3 NULL 245 -20 0 -true NULL -2735 -21 1969-12-31 15:59:56.103 cvLH6Eat2yFsyy7p NULL -165 2735 21 38 NULL 1487 21 0 -true NULL -4871 -54 1969-12-31 15:59:47.705 cvLH6Eat2yFsyy7p NULL -245 4871 54 71 NULL 2041 54 0 -true NULL 2015 -39 1969-12-31 15:59:55.015 cvLH6Eat2yFsyy7p NULL 216 -2015 39 56 NULL 267 39 0 -true NULL -15920 -64 1969-12-31 15:59:51.859 cvLH6Eat2yFsyy7p NULL -243 15920 64 81 NULL 6687 64 0 -true NULL -7658 -32 1969-12-31 15:59:46.215 cvLH6Eat2yFsyy7p NULL -205 7658 32 49 NULL 2581 32 0 -true NULL -15446 -13 1969-12-31 15:59:50.946 cvLH6Eat2yFsyy7p NULL -26 15446 13 30 NULL 3539 13 0 -true NULL 1642 13 1969-12-31 15:59:44.08 cvLH6Eat2yFsyy7p NULL 100 -1642 -13 4 NULL 1239 -13 0 -true NULL -6547 -32 1969-12-31 15:59:52.342 cvLH6Eat2yFsyy7p NULL -122 6547 32 49 NULL 2004 32 0 -true NULL -14678 -8 1969-12-31 15:59:56.997 cvLH6Eat2yFsyy7p NULL -29 14678 8 25 NULL 9343 8 0 -true NULL -11076 10 1969-12-31 15:59:45.322 cvLH6Eat2yFsyy7p NULL -25 11076 -10 7 NULL 10199 -10 0 -true NULL -5480 47 1969-12-31 15:59:53.794 cvLH6Eat2yFsyy7p NULL -83 5480 -47 -30 NULL 5207 -47 0 -true NULL 41 61 1969-12-31 15:59:55.708 cvLH6Eat2yFsyy7p NULL 41 -41 -61 -44 NULL 36 -61 0 -true NULL -9698 39 1969-12-31 15:59:55.356 cvLH6Eat2yFsyy7p NULL -189 9698 -39 -22 NULL 3465 -39 0 -true NULL -5740 8 1969-12-31 15:59:54.969 cvLH6Eat2yFsyy7p NULL -86 5740 -8 9 NULL 1307 -8 0 -true NULL -5576 -49 1969-12-31 15:59:50.959 cvLH6Eat2yFsyy7p NULL -179 5576 49 66 NULL 2455 49 0 -true NULL -8403 -45 1969-12-31 15:59:50.138 cvLH6Eat2yFsyy7p NULL -179 8403 45 62 NULL 2873 45 0 -true NULL -15450 -34 1969-12-31 15:59:55.681 cvLH6Eat2yFsyy7p NULL -30 15450 34 51 NULL 5717 34 0 -true NULL -9657 -49 1969-12-31 15:59:55.679 cvLH6Eat2yFsyy7p NULL -148 9657 49 66 NULL 7157 49 0 -true NULL 1685 -60 1969-12-31 15:59:54.963 cvLH6Eat2yFsyy7p NULL 143 -1685 60 77 NULL 817 60 0 -true NULL 8 6 1969-12-31 15:59:45.459 cvLH6Eat2yFsyy7p NULL 8 -8 -6 11 NULL 7 -6 0 -true NULL -1242 -18 1969-12-31 15:59:48.51 cvLH6Eat2yFsyy7p NULL -214 1242 18 35 NULL 425 18 0 -true NULL -7450 -57 1969-12-31 15:59:47.112 cvLH6Eat2yFsyy7p NULL -254 7450 57 74 NULL 1967 57 0 -true NULL -3174 -52 1969-12-31 15:59:58.758 cvLH6Eat2yFsyy7p NULL -90 3174 52 69 NULL 287 52 0 -true NULL 2176 34 1969-12-31 15:59:52.55 cvLH6Eat2yFsyy7p NULL 120 -2176 -34 -17 NULL 1775 -34 0 -true NULL -3165 31 1969-12-31 15:59:49.338 cvLH6Eat2yFsyy7p NULL -81 3165 -31 -14 NULL 1922 -31 0 -true NULL -13950 29 1969-12-31 15:59:47.418 cvLH6Eat2yFsyy7p NULL -72 13950 -29 -12 NULL 11117 -29 0 -true NULL -15388 49 1969-12-31 15:59:58.545 cvLH6Eat2yFsyy7p NULL -225 15388 -49 -32 NULL 3131 -49 0 -true NULL -9207 -26 1969-12-31 15:59:56.835 cvLH6Eat2yFsyy7p NULL -212 9207 26 43 NULL 6932 26 0 -true NULL -3010 -24 1969-12-31 15:59:46.05 cvLH6Eat2yFsyy7p NULL -183 3010 24 41 NULL 2847 24 0 -true NULL -14152 -50 1969-12-31 15:59:44.947 cvLH6Eat2yFsyy7p NULL -17 14152 50 67 NULL 23 50 0 -true NULL -6314 11 1969-12-31 15:59:53.533 cvLH6Eat2yFsyy7p NULL -146 6314 -11 6 NULL 2455 -11 0 -true NULL -12366 35 1969-12-31 15:59:44.113 cvLH6Eat2yFsyy7p NULL -30 12366 -35 -18 NULL 11927 -35 0 -true NULL -13291 10 1969-12-31 15:59:51.953 cvLH6Eat2yFsyy7p NULL -184 13291 -10 7 NULL 4861 -10 0 -true NULL -16207 -4 1969-12-31 15:59:45.956 cvLH6Eat2yFsyy7p NULL -16 16207 4 21 NULL 8290 4 0 -true NULL -15686 -26 1969-12-31 15:59:47.634 cvLH6Eat2yFsyy7p NULL -9 15686 26 43 NULL 10683 26 0 -true NULL -2940 -34 1969-12-31 15:59:47.243 cvLH6Eat2yFsyy7p NULL -113 2940 34 51 NULL 2147 34 0 -true NULL -12129 -45 1969-12-31 15:59:55.91 cvLH6Eat2yFsyy7p NULL -50 12129 45 62 NULL 1463 45 0 -true NULL 1822 3 1969-12-31 15:59:57.06 cvLH6Eat2yFsyy7p NULL 23 -1822 -3 14 NULL 1719 -3 0 -true NULL -11109 -42 1969-12-31 15:59:58.478 cvLH6Eat2yFsyy7p NULL -58 11109 42 59 NULL 1874 42 0 -true NULL 1888 -50 1969-12-31 15:59:46.293 cvLH6Eat2yFsyy7p NULL 89 -1888 50 67 NULL 495 50 0 -true NULL -5121 -41 1969-12-31 15:59:45.185 cvLH6Eat2yFsyy7p NULL -238 5121 41 58 NULL 1478 41 0 -true NULL 197 -1 1969-12-31 15:59:49.331 cvLH6Eat2yFsyy7p NULL 197 -197 1 18 NULL 118 1 0 -true NULL 533 51 1969-12-31 15:59:50.545 cvLH6Eat2yFsyy7p NULL 19 -533 -51 -34 NULL 241 -51 0 -true NULL 1815 -61 1969-12-31 15:59:54.879 cvLH6Eat2yFsyy7p NULL 16 -1815 61 78 NULL 1322 61 0 -true NULL -4616 43 1969-12-31 15:59:57.4 cvLH6Eat2yFsyy7p NULL -247 4616 -43 -26 NULL 2767 -43 0 -true NULL -12677 5 1969-12-31 15:59:44.538 cvLH6Eat2yFsyy7p NULL -84 12677 -5 12 NULL 5283 -5 0 -true NULL -3637 -49 1969-12-31 15:59:45.701 cvLH6Eat2yFsyy7p NULL -39 3637 49 66 NULL 2290 49 0 -true NULL -3773 -58 1969-12-31 15:59:44.065 cvLH6Eat2yFsyy7p NULL -175 3773 58 75 NULL 1608 58 0 -true NULL -6677 -4 1969-12-31 15:59:55.105 cvLH6Eat2yFsyy7p NULL -252 6677 4 21 NULL 3478 4 0 -true NULL -8972 61 1969-12-31 15:59:56.158 cvLH6Eat2yFsyy7p NULL -234 8972 -61 -44 NULL 3219 -61 0 -true NULL -15923 49 1969-12-31 15:59:47.323 cvLH6Eat2yFsyy7p NULL -246 15923 -49 -32 NULL 2628 -49 0 -true NULL -582 -6 1969-12-31 15:59:51.028 cvLH6Eat2yFsyy7p NULL -68 582 6 23 NULL 197 6 0 -true NULL -6144 -36 1969-12-31 15:59:50.855 cvLH6Eat2yFsyy7p NULL -233 6144 36 53 NULL 3311 36 0 -true NULL -7597 -61 1969-12-31 15:59:49.017 cvLH6Eat2yFsyy7p NULL -144 7597 61 78 NULL 3880 61 0 -true NULL -4493 35 1969-12-31 15:59:53.856 cvLH6Eat2yFsyy7p NULL -124 4493 -35 -18 NULL 712 -35 0 -true NULL 532 -36 1969-12-31 15:59:54.022 cvLH6Eat2yFsyy7p NULL 18 -532 36 53 NULL 215 36 0 -true NULL -8673 -19 1969-12-31 15:59:53.541 cvLH6Eat2yFsyy7p NULL -192 8673 19 36 NULL 2147 19 0 -true NULL -3034 33 1969-12-31 15:59:46.087 cvLH6Eat2yFsyy7p NULL -207 3034 -33 -16 NULL 2865 -33 0 -true NULL -9775 3 1969-12-31 15:59:51.327 cvLH6Eat2yFsyy7p NULL -9 9775 -3 14 NULL 517 -3 0 -true NULL -12335 41 1969-12-31 15:59:47.484 cvLH6Eat2yFsyy7p NULL -256 12335 -41 -24 NULL 4687 -41 0 -true NULL -6484 -55 1969-12-31 15:59:51.161 cvLH6Eat2yFsyy7p NULL -59 6484 55 72 NULL 4475 55 0 -true NULL 2696 -30 1969-12-31 15:59:56.389 cvLH6Eat2yFsyy7p NULL 126 -2696 30 47 NULL 143 30 0 -true NULL 1743 -31 1969-12-31 15:59:51.636 cvLH6Eat2yFsyy7p NULL 201 -1743 31 48 NULL 1391 31 0 -true NULL -2781 -12 1969-12-31 15:59:56.53 cvLH6Eat2yFsyy7p NULL -211 2781 12 29 NULL 155 12 0 -true NULL -13629 9 1969-12-31 15:59:57.219 cvLH6Eat2yFsyy7p NULL -8 13629 -9 8 NULL 2147 -9 0 -true NULL -12669 -26 1969-12-31 15:59:58.294 cvLH6Eat2yFsyy7p NULL -76 12669 26 43 NULL 9425 26 0 -true NULL -7617 4 1969-12-31 15:59:50.659 cvLH6Eat2yFsyy7p NULL -164 7617 -4 13 NULL 6371 -4 0 -true NULL -2198 -7 1969-12-31 15:59:44.097 cvLH6Eat2yFsyy7p NULL -142 2198 7 24 NULL 1489 7 0 -true NULL -2865 34 1969-12-31 15:59:53.328 cvLH6Eat2yFsyy7p NULL -38 2865 -34 -17 NULL 2432 -34 0 -true NULL 3248 -16 1969-12-31 15:59:52.068 821UdmGbkEf4j NULL 164 -3248 16 33 NULL 1215 16 0 -true NULL -5672 13 1969-12-31 15:59:53.866 821UdmGbkEf4j NULL -18 5672 -13 4 NULL 3191 -13 0 -true NULL 2208 -56 1969-12-31 15:59:47.3 821UdmGbkEf4j NULL 152 -2208 56 73 NULL 1823 56 0 -true NULL -1695 -1 1969-12-31 15:59:43.877 821UdmGbkEf4j NULL -153 1695 1 18 NULL 809 1 0 -true NULL -12737 21 1969-12-31 15:59:43.878 821UdmGbkEf4j NULL -144 12737 -21 -4 NULL 8539 -21 0 -true NULL 1901 4 1969-12-31 15:59:52.774 821UdmGbkEf4j NULL 102 -1901 -4 13 NULL 493 -4 0 -true NULL -15711 -60 1969-12-31 15:59:53.115 821UdmGbkEf4j NULL -34 15711 60 77 NULL 7646 60 0 -true NULL -7727 -10 1969-12-31 15:59:57.79 821UdmGbkEf4j NULL -17 7727 10 27 NULL 1261 10 0 -true NULL -9142 -43 1969-12-31 15:59:54.953 821UdmGbkEf4j NULL -147 9142 43 60 NULL 1887 43 0 -true NULL -3901 -17 1969-12-31 15:59:48.141 821UdmGbkEf4j NULL -46 3901 17 34 NULL 1771 17 0 -true NULL -2118 26 1969-12-31 15:59:49.77 821UdmGbkEf4j NULL -62 2118 -26 -9 NULL 2033 -26 0 -true NULL -15547 35 1969-12-31 15:59:46.126 821UdmGbkEf4j NULL -127 15547 -35 -18 NULL 6451 -35 0 -true NULL -1852 -33 1969-12-31 15:59:52.68 821UdmGbkEf4j NULL -53 1852 33 50 NULL 1307 33 0 -true NULL -13464 20 1969-12-31 15:59:58.765 821UdmGbkEf4j NULL -100 13464 -20 -3 NULL 12911 -20 0 -true NULL -15892 29 1969-12-31 15:59:57.937 821UdmGbkEf4j NULL -215 15892 -29 -12 NULL 171 -29 0 -true NULL -8570 30 1969-12-31 15:59:52.494 821UdmGbkEf4j NULL -89 8570 -30 -13 NULL 2469 -30 0 -true NULL -3231 -8 1969-12-31 15:59:50.299 821UdmGbkEf4j NULL -147 3231 8 25 NULL 3056 8 0 -true NULL -3246 -58 1969-12-31 15:59:50.047 821UdmGbkEf4j NULL -162 3246 58 75 NULL 977 58 0 -true NULL -13632 -3 1969-12-31 15:59:54.004 821UdmGbkEf4j NULL -11 13632 3 20 NULL 1631 3 0 -true NULL 308 -4 1969-12-31 15:59:56.971 821UdmGbkEf4j NULL 51 -308 4 21 NULL 151 4 0 -true NULL -6268 35 1969-12-31 15:59:47.724 821UdmGbkEf4j NULL -100 6268 -35 -18 NULL 4587 -35 0 -true NULL -6940 -13 1969-12-31 15:59:44.222 821UdmGbkEf4j NULL -1 6940 13 30 NULL 5719 13 0 -true NULL -1871 -35 1969-12-31 15:59:45.228 821UdmGbkEf4j NULL -72 1871 35 52 NULL 225 35 0 -true NULL -15620 57 1969-12-31 15:59:58.797 821UdmGbkEf4j NULL -200 15620 -57 -40 NULL 14979 -57 0 -true NULL -8095 -38 1969-12-31 15:59:47.145 821UdmGbkEf4j NULL -128 8095 38 55 NULL 6404 38 0 -true NULL -7388 48 1969-12-31 15:59:44.489 821UdmGbkEf4j NULL -192 7388 -48 -31 NULL 163 -48 0 -true NULL -6352 24 1969-12-31 15:59:44.565 821UdmGbkEf4j NULL -184 6352 -24 -7 NULL 335 -24 0 -true NULL -4971 -37 1969-12-31 15:59:47.932 821UdmGbkEf4j NULL -88 4971 37 54 NULL 1043 37 0 -true NULL 2119 -51 1969-12-31 15:59:57.771 821UdmGbkEf4j NULL 63 -2119 51 68 NULL 577 51 0 -true NULL -4018 -64 1969-12-31 15:59:58.959 821UdmGbkEf4j NULL -163 4018 64 81 NULL 3175 64 0 -true NULL -12172 9 1969-12-31 15:59:58.644 821UdmGbkEf4j NULL -93 12172 -9 8 NULL 4819 -9 0 -true NULL -49 -42 1969-12-31 15:59:47.994 821UdmGbkEf4j NULL -49 49 42 59 NULL 39 42 0 -true NULL -2755 40 1969-12-31 15:59:44.555 821UdmGbkEf4j NULL -185 2755 -40 -23 NULL 1389 -40 0 -true NULL 1505 12 1969-12-31 15:59:46.608 821UdmGbkEf4j NULL 220 -1505 -12 5 NULL 879 -12 0 -true NULL -5516 -60 1969-12-31 15:59:50.437 821UdmGbkEf4j NULL -119 5516 60 77 NULL 2699 60 0 -true NULL -2206 62 1969-12-31 15:59:58.621 821UdmGbkEf4j NULL -150 2206 -62 -45 NULL 539 -62 0 -true NULL -2457 61 1969-12-31 15:59:44.762 821UdmGbkEf4j NULL -144 2457 -61 -44 NULL 473 -61 0 -true NULL -2253 33 1969-12-31 15:59:48.569 821UdmGbkEf4j NULL -197 2253 -33 -16 NULL 1646 -33 0 -true NULL -13843 -57 1969-12-31 15:59:46.373 821UdmGbkEf4j NULL -222 13843 57 74 NULL 1895 57 0 -true NULL 1843 -6 1969-12-31 15:59:47.458 821UdmGbkEf4j NULL 44 -1843 6 23 NULL 1427 6 0 -true NULL -4895 17 1969-12-31 15:59:54.127 821UdmGbkEf4j NULL -12 4895 -17 0 NULL 1449 -17 0 -true NULL 1764 33 1969-12-31 15:59:54.464 821UdmGbkEf4j NULL 222 -1764 -33 -16 NULL 1607 -33 0 -true NULL -13480 41 1969-12-31 15:59:47.919 821UdmGbkEf4j NULL -116 13480 -41 -24 NULL 9319 -41 0 -true NULL -9427 -1 1969-12-31 15:59:44.84 821UdmGbkEf4j NULL -175 9427 1 18 NULL 9325 1 0 -true NULL -11709 14 1969-12-31 15:59:47.416 821UdmGbkEf4j NULL -144 11709 -14 3 NULL 401 -14 0 -true NULL -2432 -45 1969-12-31 15:59:44.954 821UdmGbkEf4j NULL -119 2432 45 62 NULL 287 45 0 -true NULL -9526 -38 1969-12-31 15:59:58.879 821UdmGbkEf4j NULL -17 9526 38 55 NULL 8093 38 0 -true NULL -7934 -15 1969-12-31 15:59:47.872 821UdmGbkEf4j NULL -224 7934 15 32 NULL 2801 15 0 -true NULL -14894 -10 1969-12-31 15:59:50.613 821UdmGbkEf4j NULL -245 14894 10 27 NULL 5431 10 0 -true NULL -8059 -29 1969-12-31 15:59:44.846 821UdmGbkEf4j NULL -92 8059 29 46 NULL 6010 29 0 -true NULL -4957 -59 1969-12-31 15:59:43.764 821UdmGbkEf4j NULL -74 4957 59 76 NULL 1975 59 0 -true NULL -7394 52 1969-12-31 15:59:56.903 821UdmGbkEf4j NULL -198 7394 -52 -35 NULL 1207 -52 0 -true NULL 2592 -13 1969-12-31 15:59:56.983 821UdmGbkEf4j NULL 22 -2592 13 30 NULL 1823 13 0 -true NULL -11383 39 1969-12-31 15:59:44.134 821UdmGbkEf4j NULL -75 11383 -39 -22 NULL 4954 -39 0 -true NULL -2759 32 1969-12-31 15:59:55.594 821UdmGbkEf4j NULL -189 2759 -32 -15 NULL 1627 -32 0 -true NULL -437 -49 1969-12-31 15:59:53.731 821UdmGbkEf4j NULL -180 437 49 66 NULL 420 49 0 -true NULL -14909 -11 1969-12-31 15:59:50.935 821UdmGbkEf4j NULL -3 14909 11 28 NULL 229 11 0 -true NULL -2530 14 1969-12-31 15:59:51.258 821UdmGbkEf4j NULL -217 2530 -14 3 NULL 2329 -14 0 -true NULL 3090 33 1969-12-31 15:59:56.352 821UdmGbkEf4j NULL 6 -3090 -33 -16 NULL 2849 -33 0 -true NULL -8559 -35 1969-12-31 15:59:46.809 821UdmGbkEf4j NULL -78 8559 35 52 NULL 2606 35 0 -true NULL -13111 -38 1969-12-31 15:59:44.914 821UdmGbkEf4j NULL -4 13111 38 55 NULL 8103 38 0 -true NULL -13489 -12 1969-12-31 15:59:53.836 821UdmGbkEf4j NULL -125 13489 12 29 NULL 8915 12 0 -true NULL -12310 -14 1969-12-31 15:59:45.444 821UdmGbkEf4j NULL -231 12310 14 31 NULL 12309 14 0 -true NULL -7832 -59 1969-12-31 15:59:56.792 821UdmGbkEf4j NULL -122 7832 59 76 NULL 3407 59 0 -true NULL -14017 -25 1969-12-31 15:59:52.893 821UdmGbkEf4j NULL -139 14017 25 42 NULL 13354 25 0 -true NULL -479 -50 1969-12-31 15:59:48.937 821UdmGbkEf4j NULL -222 479 50 67 NULL 336 50 0 -true NULL -16076 59 1969-12-31 15:59:55.023 821UdmGbkEf4j NULL -142 16076 -59 -42 NULL 7907 -59 0 -true NULL -6552 47 1969-12-31 15:59:45.727 821UdmGbkEf4j NULL -127 6552 -47 -30 NULL 2111 -47 0 -true NULL -15948 31 1969-12-31 15:59:47.577 821UdmGbkEf4j NULL -14 15948 -31 -14 NULL 7799 -31 0 -true NULL -858 6 1969-12-31 15:59:56.033 821UdmGbkEf4j NULL -87 858 -6 11 NULL 239 -6 0 -true NULL -15134 -51 1969-12-31 15:59:56.038 821UdmGbkEf4j NULL -228 15134 51 68 NULL 12863 51 0 -true NULL -1439 37 1969-12-31 15:59:47.551 821UdmGbkEf4j NULL -154 1439 -37 -20 NULL 305 -37 0 -true NULL -8434 -19 1969-12-31 15:59:46.734 821UdmGbkEf4j NULL -210 8434 19 36 NULL 7591 19 0 -true NULL -10511 -32 1969-12-31 15:59:50.988 821UdmGbkEf4j NULL -231 10511 32 49 NULL 5595 32 0 -true NULL -11983 -10 1969-12-31 15:59:52.351 821UdmGbkEf4j NULL -161 11983 10 27 NULL 9068 10 0 -true NULL 2698 5 1969-12-31 15:59:58.319 821UdmGbkEf4j NULL 128 -2698 -5 12 NULL 211 -5 0 -true NULL -2731 -13 1969-12-31 15:59:45.541 821UdmGbkEf4j NULL -161 2731 13 30 NULL 781 13 0 -true NULL -11185 44 1969-12-31 15:59:48.851 821UdmGbkEf4j NULL -134 11185 -44 -27 NULL 4429 -44 0 -true NULL -4204 -1 1969-12-31 15:59:57.03 821UdmGbkEf4j NULL -92 4204 1 18 NULL 2179 1 0 -true NULL -4965 -16 1969-12-31 15:59:51.766 821UdmGbkEf4j NULL -82 4965 16 33 NULL 3059 16 0 -true NULL -11492 -21 1969-12-31 15:59:54.951 821UdmGbkEf4j NULL -184 11492 21 38 NULL 603 21 0 -true NULL 3211 -16 1969-12-31 15:59:55.242 821UdmGbkEf4j NULL 127 -3211 16 33 NULL 1617 16 0 -true NULL -12288 56 1969-12-31 15:59:52.006 821UdmGbkEf4j NULL -209 12288 -56 -39 NULL 2207 -56 0 -true NULL -3611 -55 1969-12-31 15:59:48.654 821UdmGbkEf4j NULL -13 3611 55 72 NULL 3525 55 0 -true NULL -11632 -51 1969-12-31 15:59:43.695 821UdmGbkEf4j NULL -67 11632 51 68 NULL 5407 51 0 -true NULL -974 -7 1969-12-31 15:59:51.865 821UdmGbkEf4j NULL -203 974 7 24 NULL 787 7 0 -true NULL -84 -48 1969-12-31 15:59:58.453 821UdmGbkEf4j NULL -84 84 48 65 NULL 11 48 0 -true NULL -8281 -61 1969-12-31 15:59:55.561 821UdmGbkEf4j NULL -57 8281 61 78 NULL 2293 61 0 -true NULL -6482 57 1969-12-31 15:59:44.186 821UdmGbkEf4j NULL -57 6482 -57 -40 NULL 4085 -57 0 -true NULL -4796 26 1969-12-31 15:59:43.847 821UdmGbkEf4j NULL -170 4796 -26 -9 NULL 151 -26 0 -true NULL -9178 -53 1969-12-31 15:59:58.898 821UdmGbkEf4j NULL -183 9178 53 70 NULL 2033 53 0 -true NULL -7684 41 1969-12-31 15:59:45.68 821UdmGbkEf4j NULL -231 7684 -41 -24 NULL 1487 -41 0 -true NULL -16059 -35 1969-12-31 15:59:53.038 821UdmGbkEf4j NULL -125 16059 35 52 NULL 12437 35 0 -true NULL -12023 -10 1969-12-31 15:59:48.157 821UdmGbkEf4j NULL -201 12023 10 27 NULL 8390 10 0 -true NULL -11322 -51 1969-12-31 15:59:57.192 821UdmGbkEf4j NULL -14 11322 51 68 NULL 1895 51 0 -true NULL -2043 19 1969-12-31 15:59:57.011 821UdmGbkEf4j NULL -244 2043 -19 -2 NULL 527 -19 0 -true NULL -436 -53 1969-12-31 15:59:48.203 821UdmGbkEf4j NULL -179 436 53 70 NULL 151 53 0 -true NULL -10029 43 1969-12-31 15:59:46.307 821UdmGbkEf4j NULL -6 10029 -43 -26 NULL 860 -43 0 -true NULL 1128 -18 1969-12-31 15:59:58.195 821UdmGbkEf4j NULL 100 -1128 18 35 NULL 455 18 0 -true NULL -8809 -1 1969-12-31 15:59:46.003 821UdmGbkEf4j NULL -71 8809 1 18 NULL 4767 1 0 -true NULL 2494 -31 1969-12-31 15:59:57.951 821UdmGbkEf4j NULL 181 -2494 31 48 NULL 1911 31 0 -true NULL -13238 -54 1969-12-31 15:59:53.818 821UdmGbkEf4j NULL -131 13238 54 71 NULL 11713 54 0 -true NULL 2974 55 1969-12-31 15:59:47.663 821UdmGbkEf4j NULL 147 -2974 -55 -38 NULL 1505 -55 0 -true NULL -2873 -4 1969-12-31 15:59:54.119 821UdmGbkEf4j NULL -46 2873 4 21 NULL 603 4 0 -true NULL -2790 -23 1969-12-31 15:59:45.999 821UdmGbkEf4j NULL -220 2790 23 40 NULL 2309 23 0 -true NULL -14483 5 1969-12-31 15:59:53.696 821UdmGbkEf4j NULL -91 14483 -5 12 NULL 12541 -5 0 -true NULL 1091 -43 1969-12-31 15:59:58.178 821UdmGbkEf4j NULL 63 -1091 43 60 NULL 167 43 0 -true NULL -5438 2 1969-12-31 15:59:47.713 821UdmGbkEf4j NULL -41 5438 -2 15 NULL 3849 -2 0 -true NULL 2075 3 1969-12-31 15:59:54.878 821UdmGbkEf4j NULL 19 -2075 -3 14 NULL 1854 -3 0 -true NULL -14030 -6 1969-12-31 15:59:57.686 821UdmGbkEf4j NULL -152 14030 6 23 NULL 7159 6 0 -true NULL -4492 53 1969-12-31 15:59:50.275 821UdmGbkEf4j NULL -123 4492 -53 -36 NULL 2191 -53 0 -true NULL -5089 -20 1969-12-31 15:59:46.583 821UdmGbkEf4j NULL -206 5089 20 37 NULL 4680 20 0 -true NULL -2666 -33 1969-12-31 15:59:56.349 821UdmGbkEf4j NULL -96 2666 33 50 NULL 449 33 0 -true NULL -13924 8 1969-12-31 15:59:44.108 821UdmGbkEf4j NULL -46 13924 -8 9 NULL 9503 -8 0 -true NULL 2928 -19 1969-12-31 15:59:47.186 821UdmGbkEf4j NULL 101 -2928 19 36 NULL 815 19 0 -true NULL 2322 -41 1969-12-31 15:59:50.619 821UdmGbkEf4j NULL 9 -2322 41 58 NULL 2255 41 0 -true NULL -3782 58 1969-12-31 15:59:58.736 821UdmGbkEf4j NULL -184 3782 -58 -41 NULL 449 -58 0 -true NULL -16017 -21 1969-12-31 15:59:44.02 821UdmGbkEf4j NULL -83 16017 21 38 NULL 2282 21 0 -true NULL -9479 58 1969-12-31 15:59:44.362 821UdmGbkEf4j NULL -227 9479 -58 -41 NULL 1577 -58 0 -true NULL -2919 -64 1969-12-31 15:59:56.333 821UdmGbkEf4j NULL -92 2919 64 81 NULL 1292 64 0 -true NULL 363 -63 1969-12-31 15:59:45.102 821UdmGbkEf4j NULL 106 -363 63 80 NULL 173 63 0 -true NULL -15899 50 1969-12-31 15:59:46.926 821UdmGbkEf4j NULL -222 15899 -50 -33 NULL 10210 -50 0 -true NULL -1108 -44 1969-12-31 15:59:52.735 821UdmGbkEf4j NULL -80 1108 44 61 NULL 659 44 0 -true NULL -3841 62 1969-12-31 15:59:58.155 821UdmGbkEf4j NULL -243 3841 -62 -45 NULL 3341 -62 0 -true NULL -14837 -2 1969-12-31 15:59:48.283 821UdmGbkEf4j NULL -188 14837 2 19 NULL 1081 2 0 -true NULL -11840 26 1969-12-31 15:59:50.012 821UdmGbkEf4j NULL -18 11840 -26 -9 NULL 7519 -26 0 -true NULL -3205 -31 1969-12-31 15:59:57.583 821UdmGbkEf4j NULL -121 3205 31 48 NULL 39 31 0 -true NULL -8613 -11 1969-12-31 15:59:44.139 821UdmGbkEf4j NULL -132 8613 11 28 NULL 635 11 0 -true NULL -7331 -15 1969-12-31 15:59:51.722 821UdmGbkEf4j NULL -135 7331 15 32 NULL 5883 15 0 -true NULL -337 -43 1969-12-31 15:59:46.394 821UdmGbkEf4j NULL -80 337 43 60 NULL 220 43 0 -true NULL 25 -30 1969-12-31 15:59:50.829 821UdmGbkEf4j NULL 25 -25 30 47 NULL 4 30 0 -true NULL -11708 13 1969-12-31 15:59:47.009 821UdmGbkEf4j NULL -143 11708 -13 4 NULL 7111 -13 0 -true NULL -2307 34 1969-12-31 15:59:52.158 821UdmGbkEf4j NULL -251 2307 -34 -17 NULL 1043 -34 0 -true NULL 546 -21 1969-12-31 15:59:44.463 821UdmGbkEf4j NULL 32 -546 21 38 NULL 473 21 0 -true NULL -3803 32 1969-12-31 15:59:46.374 821UdmGbkEf4j NULL -205 3803 -32 -15 NULL 2932 -32 0 -true NULL -1735 -21 1969-12-31 15:59:55.721 821UdmGbkEf4j NULL -193 1735 21 38 NULL 514 21 0 -true NULL -10014 -31 1969-12-31 15:59:43.645 821UdmGbkEf4j NULL -248 10014 31 48 NULL 7223 31 0 -true NULL -5652 46 1969-12-31 15:59:57.911 821UdmGbkEf4j NULL -255 5652 -46 -29 NULL 3839 -46 0 -true NULL -257 33 1969-12-31 15:59:51.326 821UdmGbkEf4j NULL 0 257 -33 -16 NULL 192 -33 0 -true NULL -15344 48 1969-12-31 15:59:54.853 821UdmGbkEf4j NULL -181 15344 -48 -31 NULL 13871 -48 0 -true NULL -14135 -39 1969-12-31 15:59:49.268 821UdmGbkEf4j NULL 0 14135 39 56 NULL 8159 39 0 -true NULL -7731 53 1969-12-31 15:59:52.626 821UdmGbkEf4j NULL -21 7731 -53 -36 NULL 1427 -53 0 -true NULL -7185 -54 1969-12-31 15:59:50.158 821UdmGbkEf4j NULL -246 7185 54 71 NULL 3689 54 0 -true NULL -8155 -53 1969-12-31 15:59:52.041 821UdmGbkEf4j NULL -188 8155 53 70 NULL 8054 53 0 -true NULL 611 -61 1969-12-31 15:59:45.724 821UdmGbkEf4j NULL 97 -611 61 78 NULL 408 61 0 -true NULL -14771 13 1969-12-31 15:59:58.839 821UdmGbkEf4j NULL -122 14771 -13 4 NULL 12897 -13 0 -true NULL 2826 -57 1969-12-31 15:59:46.619 821UdmGbkEf4j NULL 256 -2826 57 74 NULL 1013 57 0 -true NULL -15922 -17 1969-12-31 15:59:46.164 821UdmGbkEf4j NULL -245 15922 17 34 NULL 10851 17 0 -true NULL -2997 16 1969-12-31 15:59:54.651 821UdmGbkEf4j NULL -170 2997 -16 1 NULL 2228 -16 0 -true NULL -6745 -30 1969-12-31 15:59:49.346 821UdmGbkEf4j NULL -63 6745 30 47 NULL 2909 30 0 -true NULL -3724 51 1969-12-31 15:59:50.382 821UdmGbkEf4j NULL -126 3724 -51 -34 NULL 3175 -51 0 -true NULL -15852 61 1969-12-31 15:59:46.778 821UdmGbkEf4j NULL -175 15852 -61 -44 NULL 8783 -61 0 -true NULL -4992 -19 1969-12-31 15:59:47.24 821UdmGbkEf4j NULL -109 4992 19 36 NULL 3359 19 0 -true NULL -8133 26 1969-12-31 15:59:47.325 821UdmGbkEf4j NULL -166 8133 -26 -9 NULL 7640 -26 0 -true NULL -13273 16 1969-12-31 15:59:44.333 821UdmGbkEf4j NULL -166 13273 -16 1 NULL 70 -16 0 -true NULL -1560 17 1969-12-31 15:59:58.908 821UdmGbkEf4j NULL -18 1560 -17 0 NULL 239 -17 0 -true NULL -5996 -14 1969-12-31 15:59:50.983 821UdmGbkEf4j NULL -85 5996 14 31 NULL 5903 14 0 -true NULL -8340 -52 1969-12-31 15:59:47.375 821UdmGbkEf4j NULL -116 8340 52 69 NULL 5879 52 0 -true NULL -5813 20 1969-12-31 15:59:57.591 821UdmGbkEf4j NULL -159 5813 -20 -3 NULL 3255 -20 0 -true NULL 2269 -43 1969-12-31 15:59:43.874 821UdmGbkEf4j NULL 213 -2269 43 60 NULL 1248 43 0 -true NULL -2035 -60 1969-12-31 15:59:55.161 821UdmGbkEf4j NULL -236 2035 60 77 NULL 1229 60 0 -true NULL 2007 53 1969-12-31 15:59:45.545 821UdmGbkEf4j NULL 208 -2007 -53 -36 NULL 1103 -53 0 -true NULL -11404 38 1969-12-31 15:59:44.842 821UdmGbkEf4j NULL -96 11404 -38 -21 NULL 183 -38 0 -true NULL -9382 -17 1969-12-31 15:59:49.236 821UdmGbkEf4j NULL -130 9382 17 34 NULL 9057 17 0 -true NULL -9456 59 1969-12-31 15:59:53.192 821UdmGbkEf4j NULL -204 9456 -59 -42 NULL 335 -59 0 -true NULL -14696 11 1969-12-31 15:59:51.647 821UdmGbkEf4j NULL -47 14696 -11 6 NULL 7015 -11 0 -true NULL -9602 39 1969-12-31 15:59:55.859 821UdmGbkEf4j NULL -93 9602 -39 -22 NULL 9099 -39 0 -true NULL -763 -39 1969-12-31 15:59:54.376 1cGVWH7n1QU NULL -249 763 39 56 NULL 685 39 0 -true NULL -313 -13 1969-12-31 15:59:57.303 1cGVWH7n1QU NULL -56 313 13 30 NULL 160 13 0 -true NULL 1467 -2 1969-12-31 15:59:53.551 1cGVWH7n1QU NULL 182 -1467 2 19 NULL 538 2 0 -true NULL -12700 9 1969-12-31 15:59:43.939 1cGVWH7n1QU NULL -107 12700 -9 8 NULL 8276 -9 0 -true NULL -5899 -14 1969-12-31 15:59:47.854 1cGVWH7n1QU NULL -245 5899 14 31 NULL 2477 14 0 -true NULL -11224 52 1969-12-31 15:59:58.567 1cGVWH7n1QU NULL -173 11224 -52 -35 NULL 2976 -52 0 -true NULL -8229 -8 1969-12-31 15:59:52.999 1cGVWH7n1QU NULL -5 8229 8 25 NULL 6451 8 0 -true NULL -16122 50 1969-12-31 15:59:51.608 1cGVWH7n1QU NULL -188 16122 -50 -33 NULL 1828 -50 0 -true NULL -5047 -18 1969-12-31 15:59:51.28 1cGVWH7n1QU NULL -164 5047 18 35 NULL 3156 18 0 -true NULL -2964 11 1969-12-31 15:59:54.453 1cGVWH7n1QU NULL -137 2964 -11 6 NULL 328 -11 0 -true NULL -10230 36 1969-12-31 15:59:49.202 1cGVWH7n1QU NULL -207 10230 -36 -19 NULL 2296 -36 0 -true NULL -10334 26 1969-12-31 15:59:48.448 1cGVWH7n1QU NULL -54 10334 -26 -9 NULL 7012 -26 0 -true NULL -7320 -63 1969-12-31 15:59:49.804 1cGVWH7n1QU NULL -124 7320 63 80 NULL 5416 63 0 -true NULL 2448 12 1969-12-31 15:59:47.74 1cGVWH7n1QU NULL 135 -2448 -12 5 NULL 1168 -12 0 -true NULL -7506 -48 1969-12-31 15:59:55.223 1cGVWH7n1QU NULL -53 7506 48 65 NULL 106 48 0 -true NULL 2372 61 1969-12-31 15:59:46.866 1cGVWH7n1QU NULL 59 -2372 -61 -44 NULL 1324 -61 0 -true NULL -9953 -44 1969-12-31 15:59:45.647 1cGVWH7n1QU NULL -187 9953 44 61 NULL 3218 44 0 -true NULL -4489 20 1969-12-31 15:59:44.57 1cGVWH7n1QU NULL -120 4489 -20 -3 NULL 964 -20 0 -true NULL -2853 15 1969-12-31 15:59:46.721 1cGVWH7n1QU NULL -26 2853 -15 2 NULL 2293 -15 0 -true NULL 3538 10 1969-12-31 15:59:50.277 1cGVWH7n1QU NULL 197 -3538 -10 7 NULL 1390 -10 0 -true NULL -11322 -50 1969-12-31 15:59:58.779 1cGVWH7n1QU NULL -14 11322 50 67 NULL 7288 50 0 -true NULL -1203 -34 1969-12-31 15:59:46.974 1cGVWH7n1QU NULL -175 1203 34 51 NULL 796 34 0 -true NULL -15555 -2 1969-12-31 15:59:58.773 1cGVWH7n1QU NULL -135 15555 2 19 NULL 9991 2 0 -true NULL -12855 -50 1969-12-31 15:59:55.676 1cGVWH7n1QU NULL -5 12855 50 67 NULL 10516 50 0 -true NULL -15435 -21 1969-12-31 15:59:54.705 1cGVWH7n1QU NULL -15 15435 21 38 NULL 6586 21 0 -true NULL -11745 34 1969-12-31 15:59:55.748 1cGVWH7n1QU NULL -180 11745 -34 -17 NULL 8611 -34 0 -true NULL -1352 -14 1969-12-31 15:59:46.944 1cGVWH7n1QU NULL -67 1352 14 31 NULL 432 14 0 -true NULL -6351 59 1969-12-31 15:59:51.877 1cGVWH7n1QU NULL -183 6351 -59 -42 NULL 85 -59 0 -true NULL -16221 -12 1969-12-31 15:59:45.877 1cGVWH7n1QU NULL -30 16221 12 29 NULL 1378 12 0 -true NULL -9838 -48 1969-12-31 15:59:55.428 1cGVWH7n1QU NULL -72 9838 48 65 NULL 2384 48 0 -true NULL -16036 -15 1969-12-31 15:59:58.681 1cGVWH7n1QU NULL -102 16036 15 32 NULL 7928 15 0 -true NULL -15238 31 1969-12-31 15:59:48.028 1cGVWH7n1QU NULL -75 15238 -31 -14 NULL 13628 -31 0 -true NULL -11431 -2 1969-12-31 15:59:45.061 1cGVWH7n1QU NULL -123 11431 2 19 NULL 55 2 0 -true NULL -5868 1 1969-12-31 15:59:52.554 1cGVWH7n1QU NULL -214 5868 -1 16 NULL 3472 -1 0 -true NULL -5873 -61 1969-12-31 15:59:58.255 1cGVWH7n1QU NULL -219 5873 61 78 NULL 4633 61 0 -true NULL -14307 -62 1969-12-31 15:59:54.753 1cGVWH7n1QU NULL -172 14307 62 79 NULL 2266 62 0 -true NULL -9387 5 1969-12-31 15:59:44.178 1cGVWH7n1QU NULL -135 9387 -5 12 NULL 475 -5 0 -true NULL -2151 -48 1969-12-31 15:59:49.684 1cGVWH7n1QU NULL -95 2151 48 65 NULL 97 48 0 -true NULL 2610 45 1969-12-31 15:59:49.767 1cGVWH7n1QU NULL 40 -2610 -45 -28 NULL 2086 -45 0 -true NULL -9743 -49 1969-12-31 15:59:50.03 1cGVWH7n1QU NULL -234 9743 49 66 NULL 6371 49 0 -true NULL -8930 -3 1969-12-31 15:59:54.943 1cGVWH7n1QU NULL -192 8930 3 20 NULL 8726 3 0 -true NULL -3664 2 1969-12-31 15:59:58.26 1cGVWH7n1QU NULL -66 3664 -2 15 NULL 2992 -2 0 -true NULL -5705 3 1969-12-31 15:59:55.913 1cGVWH7n1QU NULL -51 5705 -3 14 NULL 3961 -3 0 -true NULL -3648 -1 1969-12-31 15:59:57.355 1cGVWH7n1QU NULL -50 3648 1 18 NULL 1696 1 0 -true NULL -6866 23 1969-12-31 15:59:49.864 1cGVWH7n1QU NULL -184 6866 -23 -6 NULL 1006 -23 0 -true NULL -2444 32 1969-12-31 15:59:50.866 1cGVWH7n1QU NULL -131 2444 -32 -15 NULL 172 -32 0 -true NULL -13403 -49 1969-12-31 15:59:48.805 1cGVWH7n1QU NULL -39 13403 49 66 NULL 198 49 0 -true NULL 2824 -25 1969-12-31 15:59:53.52 1cGVWH7n1QU NULL 254 -2824 25 42 NULL 2400 25 0 -true NULL -14556 47 1969-12-31 15:59:56.768 1cGVWH7n1QU NULL -164 14556 -47 -30 NULL 12520 -47 0 -true NULL -13681 38 1969-12-31 15:59:52.756 1cGVWH7n1QU NULL -60 13681 -38 -21 NULL 5955 -38 0 -true NULL 2006 -6 1969-12-31 15:59:46.281 1cGVWH7n1QU NULL 207 -2006 6 23 NULL 658 6 0 -true NULL -293 -33 1969-12-31 15:59:48.264 1cGVWH7n1QU NULL -36 293 33 50 NULL 40 33 0 -true NULL -5230 -37 1969-12-31 15:59:45.249 1cGVWH7n1QU NULL -90 5230 37 54 NULL 5146 37 0 -true NULL -11620 15 1969-12-31 15:59:50.009 1cGVWH7n1QU NULL -55 11620 -15 2 NULL 776 -15 0 -true NULL -15228 38 1969-12-31 15:59:57.88 1cGVWH7n1QU NULL -65 15228 -38 -21 NULL 12580 -38 0 -true NULL -14273 -59 1969-12-31 15:59:44.612 1cGVWH7n1QU NULL -138 14273 59 76 NULL 5620 59 0 -true NULL -9527 -23 1969-12-31 15:59:54.718 1cGVWH7n1QU NULL -18 9527 23 40 NULL 9001 23 0 -true NULL -16169 5 1969-12-31 15:59:45.059 1cGVWH7n1QU NULL -235 16169 -5 12 NULL 6104 -5 0 -true NULL -15149 20 1969-12-31 15:59:46.575 1cGVWH7n1QU NULL -243 15149 -20 -3 NULL 10520 -20 0 -true NULL -2016 -3 1969-12-31 15:59:52.45 1cGVWH7n1QU NULL -217 2016 3 20 NULL 160 3 0 -true NULL -13266 12 1969-12-31 15:59:48.168 1cGVWH7n1QU NULL -159 13266 -12 5 NULL 6190 -12 0 -true NULL -9012 -19 1969-12-31 15:59:53.158 1cGVWH7n1QU NULL -17 9012 19 36 NULL 4612 19 0 -true NULL -8077 1 1969-12-31 15:59:55.047 1cGVWH7n1QU NULL -110 8077 -1 16 NULL 7191 -1 0 -true NULL -8818 51 1969-12-31 15:59:43.868 1cGVWH7n1QU NULL -80 8818 -51 -34 NULL 6788 -51 0 -true NULL 1310 6 1969-12-31 15:59:43.619 1cGVWH7n1QU NULL 25 -1310 -6 11 NULL 906 -6 0 -true NULL -789 -54 1969-12-31 15:59:52.435 1cGVWH7n1QU NULL -18 789 54 71 NULL 298 54 0 -true NULL -5515 -1 1969-12-31 15:59:44.449 1cGVWH7n1QU NULL -118 5515 1 18 NULL 2951 1 0 -true NULL -1141 34 1969-12-31 15:59:46.83 1cGVWH7n1QU NULL -113 1141 -34 -17 NULL 538 -34 0 -true NULL -820 -59 1969-12-31 15:59:46.706 1cGVWH7n1QU NULL -49 820 59 76 NULL 16 59 0 -true NULL 1965 -31 1969-12-31 15:59:55.642 1cGVWH7n1QU NULL 166 -1965 31 48 NULL 1561 31 0 -true NULL -4758 -41 1969-12-31 15:59:57.375 1cGVWH7n1QU NULL -132 4758 41 58 NULL 2122 41 0 -true NULL -13664 52 1969-12-31 15:59:50.288 1cGVWH7n1QU NULL -43 13664 -52 -35 NULL 6880 -52 0 -true NULL -12163 14 1969-12-31 15:59:44.867 1cGVWH7n1QU NULL -84 12163 -14 3 NULL 6011 -14 0 -true NULL -12530 62 1969-12-31 15:59:57.447 1cGVWH7n1QU NULL -194 12530 -62 -45 NULL 8056 -62 0 -true NULL -7475 5 1969-12-31 15:59:57.683 1cGVWH7n1QU NULL -22 7475 -5 12 NULL 1251 -5 0 -true NULL -7103 -42 1969-12-31 15:59:51.833 1cGVWH7n1QU NULL -164 7103 42 59 NULL 3040 42 0 -true NULL -9727 -35 1969-12-31 15:59:43.745 1cGVWH7n1QU NULL -218 9727 35 52 NULL 4670 35 0 -true NULL -6884 20 1969-12-31 15:59:51.362 1cGVWH7n1QU NULL -202 6884 -20 -3 NULL 3744 -20 0 -true NULL -11020 50 1969-12-31 15:59:54.029 1cGVWH7n1QU NULL -226 11020 -50 -33 NULL 7016 -50 0 -true NULL -3204 56 1969-12-31 15:59:56.824 1cGVWH7n1QU NULL -120 3204 -56 -39 NULL 1492 -56 0 -true NULL -9512 32 1969-12-31 15:59:57.296 1cGVWH7n1QU NULL -3 9512 -32 -15 NULL 8872 -32 0 -true NULL -1316 56 1969-12-31 15:59:48.872 1cGVWH7n1QU NULL -31 1316 -56 -39 NULL 1112 -56 0 -true NULL -3606 14 1969-12-31 15:59:52.186 1cGVWH7n1QU NULL -8 3606 -14 3 NULL 1306 -14 0 -true NULL -2579 60 1969-12-31 15:59:49.331 1cGVWH7n1QU NULL -9 2579 -60 -43 NULL 94 -60 0 -true NULL -16153 35 1969-12-31 15:59:52.036 1cGVWH7n1QU NULL -219 16153 -35 -18 NULL 14817 -35 0 -true NULL -15809 -20 1969-12-31 15:59:50.406 1cGVWH7n1QU NULL -132 15809 20 37 NULL 9971 20 0 -true NULL 3377 41 1969-12-31 15:59:54.531 1cGVWH7n1QU NULL 36 -3377 -41 -24 NULL 2021 -41 0 -true NULL -6193 -13 1969-12-31 15:59:52.027 1cGVWH7n1QU NULL -25 6193 13 30 NULL 96 13 0 -true NULL -14192 -43 1969-12-31 15:59:58.372 1cGVWH7n1QU NULL -57 14192 43 60 NULL 11760 43 0 -true NULL -2989 52 1969-12-31 15:59:49.49 1cGVWH7n1QU NULL -162 2989 -52 -35 NULL 902 -52 0 -true NULL -490 4 1969-12-31 15:59:56.372 1cGVWH7n1QU NULL -233 490 -4 13 NULL 216 -4 0 -true NULL -6733 26 1969-12-31 15:59:43.785 1cGVWH7n1QU NULL -51 6733 -26 -9 NULL 6334 -26 0 -true NULL -14 -3 1969-12-31 15:59:57.453 1cGVWH7n1QU NULL -14 14 3 20 NULL 6 3 0 -true NULL -1625 -6 1969-12-31 15:59:49.703 1cGVWH7n1QU NULL -83 1625 6 23 NULL 1251 6 0 -true NULL -1246 -11 1969-12-31 15:59:56.212 1cGVWH7n1QU NULL -218 1246 11 28 NULL 958 11 0 -true NULL -1805 8 1969-12-31 15:59:56.758 1cGVWH7n1QU NULL -6 1805 -8 9 NULL 1506 -8 0 -true NULL 2676 -28 1969-12-31 15:59:46.746 1cGVWH7n1QU NULL 106 -2676 28 45 NULL 1984 28 0 -true NULL -6342 10 1969-12-31 15:59:58.616 1cGVWH7n1QU NULL -174 6342 -10 7 NULL 4402 -10 0 -true NULL -8756 38 1969-12-31 15:59:54.961 1cGVWH7n1QU NULL -18 8756 -38 -21 NULL 4056 -38 0 -true NULL -14681 22 1969-12-31 15:59:58.908 1cGVWH7n1QU NULL -32 14681 -22 -5 NULL 7058 -22 0 -true NULL -12879 51 1969-12-31 15:59:49.562 1cGVWH7n1QU NULL -29 12879 -51 -34 NULL 592 -51 0 -true NULL -12337 -5 1969-12-31 15:59:55.717 1cGVWH7n1QU NULL -1 12337 5 22 NULL 4319 5 0 -true NULL -8260 -23 1969-12-31 15:59:49.529 1cGVWH7n1QU NULL -36 8260 23 40 NULL 776 23 0 -true NULL -5881 -50 1969-12-31 15:59:49.005 1cGVWH7n1QU NULL -227 5881 50 67 NULL 203 50 0 -true NULL -9755 48 1969-12-31 15:59:52.631 1cGVWH7n1QU NULL -246 9755 -48 -31 NULL 6111 -48 0 -true NULL 1028 -23 1969-12-31 15:59:52.705 1cGVWH7n1QU NULL 0 -1028 23 40 NULL 208 23 0 -true NULL -4578 -20 1969-12-31 15:59:57.088 1cGVWH7n1QU NULL -209 4578 20 37 NULL 2974 20 0 -true NULL -11148 35 1969-12-31 15:59:52.648 1cGVWH7n1QU NULL -97 11148 -35 -18 NULL 3784 -35 0 -true NULL 2922 -25 1969-12-31 15:59:49.954 1cGVWH7n1QU NULL 95 -2922 25 42 NULL 712 25 0 -true NULL -10069 21 1969-12-31 15:59:47.638 1cGVWH7n1QU NULL -46 10069 -21 -4 NULL 7128 -21 0 -true NULL -364 46 1969-12-31 15:59:54.814 1cGVWH7n1QU NULL -107 364 -46 -29 NULL 328 -46 0 -true NULL -9725 35 1969-12-31 15:59:45.278 1cGVWH7n1QU NULL -216 9725 -35 -18 NULL 8201 -35 0 -true NULL -8277 -57 1969-12-31 15:59:46.756 1cGVWH7n1QU NULL -53 8277 57 74 NULL 157 57 0 -true NULL -13985 22 1969-12-31 15:59:51.926 1cGVWH7n1QU NULL -107 13985 -22 -5 NULL 5446 -22 0 -true NULL 3437 -13 1969-12-31 15:59:51.497 1cGVWH7n1QU NULL 96 -3437 13 30 NULL 1028 13 0 -true NULL -1373 23 1969-12-31 15:59:58.398 1cGVWH7n1QU NULL -88 1373 -23 -6 NULL 880 -23 0 -true NULL -13020 -16 1969-12-31 15:59:46.218 1cGVWH7n1QU NULL -170 13020 16 33 NULL 9736 16 0 -true NULL -15770 -23 1969-12-31 15:59:56.822 1cGVWH7n1QU NULL -93 15770 23 40 NULL 4926 23 0 -true NULL -808 -46 1969-12-31 15:59:43.811 1cGVWH7n1QU NULL -37 808 46 63 NULL 240 46 0 -true NULL -1264 14 1969-12-31 15:59:43.71 1cGVWH7n1QU NULL -236 1264 -14 3 NULL 800 -14 0 -true NULL -15980 -6 1969-12-31 15:59:54.84 1cGVWH7n1QU NULL -46 15980 6 23 NULL 14836 6 0 -true NULL 2211 1 1969-12-31 15:59:46.984 1cGVWH7n1QU NULL 155 -2211 -1 16 NULL 1768 -1 0 -true NULL -3468 -17 1969-12-31 15:59:56.604 1cGVWH7n1QU NULL -127 3468 17 34 NULL 1984 17 0 -true NULL 2775 -5 1969-12-31 15:59:53.592 1cGVWH7n1QU NULL 205 -2775 5 22 NULL 2626 5 0 -true NULL 1126 -12 1969-12-31 15:59:45.354 1cGVWH7n1QU NULL 98 -1126 12 29 NULL 96 12 0 -true NULL -13074 -47 1969-12-31 15:59:56.989 1cGVWH7n1QU NULL -224 13074 47 64 NULL 3628 47 0 -true NULL -8255 11 1969-12-31 15:59:54.322 1cGVWH7n1QU NULL -31 8255 -11 6 NULL 5736 -11 0 -true NULL -14584 -7 1969-12-31 15:59:46.965 1cGVWH7n1QU NULL -192 14584 7 24 NULL 5864 7 0 -true NULL 340 -25 1969-12-31 15:59:46.673 1cGVWH7n1QU NULL 83 -340 25 42 NULL 216 25 0 -true NULL -11755 -45 1969-12-31 15:59:57.12 1cGVWH7n1QU NULL -190 11755 45 62 NULL 4231 45 0 -true NULL -9988 -47 1969-12-31 15:59:47.353 1cGVWH7n1QU NULL -222 9988 47 64 NULL 140 47 0 -true NULL -6270 -25 1969-12-31 15:59:53.398 1cGVWH7n1QU NULL -102 6270 25 42 NULL 6256 25 0 -true NULL -5497 -37 1969-12-31 15:59:53.366 1cGVWH7n1QU NULL -100 5497 37 54 NULL 814 37 0 -true NULL -13569 16 1969-12-31 15:59:47.784 1cGVWH7n1QU NULL -205 13569 -16 1 NULL 6490 -16 0 -true NULL -11917 -44 1969-12-31 15:59:53.902 1cGVWH7n1QU NULL -95 11917 44 61 NULL 114 44 0 -true NULL -4477 2 1969-12-31 15:59:53.669 1cGVWH7n1QU NULL -108 4477 -2 15 NULL 3033 -2 0 -true NULL -7842 22 1969-12-31 15:59:49.457 1cGVWH7n1QU NULL -132 7842 -22 -5 NULL 202 -22 0 -true NULL -2455 -18 1969-12-31 15:59:56.85 1cGVWH7n1QU NULL -142 2455 18 35 NULL 46 18 0 -true NULL -14820 34 1969-12-31 15:59:44.16 1cGVWH7n1QU NULL -171 14820 -34 -17 NULL 6256 -34 0 -true NULL -4279 -50 1969-12-31 15:59:58.524 1cGVWH7n1QU NULL -167 4279 50 67 NULL 1977 50 0 -true NULL -3752 -36 1969-12-31 15:59:56.007 1cGVWH7n1QU NULL -154 3752 36 53 NULL 160 36 0 -true NULL -7706 -12 1969-12-31 15:59:46.926 1cGVWH7n1QU NULL -253 7706 12 29 NULL 6974 12 0 -true NULL -10445 50 1969-12-31 15:59:45.232 1cGVWH7n1QU NULL -165 10445 -50 -33 NULL 8551 -50 0 -true NULL -12792 -14 1969-12-31 15:59:55.373 1cGVWH7n1QU NULL -199 12792 14 31 NULL 16 14 0 -true NULL -7374 -3 1969-12-31 15:59:44.04 1cGVWH7n1QU NULL -178 7374 3 20 NULL 7150 3 0 -true NULL -13413 -28 1969-12-31 15:59:49.794 1cGVWH7n1QU NULL -49 13413 28 45 NULL 12133 28 0 -true NULL -5349 26 1969-12-31 15:59:52.548 1cGVWH7n1QU NULL -209 5349 -26 -9 NULL 5098 -26 0 -true NULL -10654 25 1969-12-31 15:59:57.973 1cGVWH7n1QU NULL -117 10654 -25 -8 NULL 4290 -25 0 -true NULL 1151 13 1969-12-31 15:59:55.135 1cGVWH7n1QU NULL 123 -1151 -13 4 NULL 1090 -13 0 -true NULL 1542 11 1969-12-31 15:59:47.768 1cGVWH7n1QU NULL 0 -1542 -11 6 NULL 208 -11 0 -true NULL -2269 -8 1969-12-31 15:59:46.699 1cGVWH7n1QU NULL -213 2269 8 25 NULL 252 8 0 -true NULL -13701 -25 1969-12-31 15:59:50.187 1cGVWH7n1QU NULL -80 13701 25 42 NULL 5062 25 0 -true NULL -15948 6 1969-12-31 15:59:49.269 1cGVWH7n1QU NULL -14 15948 -6 11 NULL 12436 -6 0 -true NULL -8684 -49 1969-12-31 15:59:45.8 1cGVWH7n1QU NULL -203 8684 49 66 NULL 5736 49 0 -true NULL -14127 20 1969-12-31 15:59:58.868 1cGVWH7n1QU NULL -249 14127 -20 -3 NULL 964 -20 0 -true NULL -1121 -48 1969-12-31 15:59:51.841 1cGVWH7n1QU NULL -93 1121 48 65 NULL 1012 48 0 -true NULL -4839 38 1969-12-31 15:59:51.059 1cGVWH7n1QU NULL -213 4839 -38 -21 NULL 157 -38 0 -true NULL 1464 40 1969-12-31 15:59:58.696 1cGVWH7n1QU NULL 179 -1464 -40 -23 NULL 1024 -40 0 -true NULL -5444 -6 1969-12-31 15:59:53.353 1cGVWH7n1QU NULL -47 5444 6 23 NULL 2196 6 0 -true NULL 3256 -40 1969-12-31 15:59:48.056 1cGVWH7n1QU NULL 172 -3256 40 57 NULL 184 40 0 -true NULL -12878 27 1969-12-31 15:59:45.24 1cGVWH7n1QU NULL -28 12878 -27 -10 NULL 7410 -27 0 diff --git a/ql/src/test/results/clientpositive/vectorization_8.q.out b/ql/src/test/results/clientpositive/vectorization_8.q.out index 9ff1b8bc44f6..c300faa3a616 100644 --- a/ql/src/test/results/clientpositive/vectorization_8.q.out +++ b/ql/src/test/results/clientpositive/vectorization_8.q.out @@ -1,3 +1,87 @@ +PREHOOK: query: EXPLAIN +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 10) + AND (ctimestamp2 != 16))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 10) + AND (ctimestamp2 != 16))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((cstring2 is not null and ((ctimestamp1 <= 10) and (ctimestamp2 <> 16))) or ((cfloat < -6432) or (cboolean1 is not null and (cdouble = 988888.0)))) (type: boolean) + Statistics: Num rows: 9216 Data size: 282927 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ctimestamp1 (type: timestamp), cdouble (type: double), cboolean1 (type: boolean), cstring1 (type: string), cfloat (type: float), (- cdouble) (type: double), (-5638.15 - cdouble) (type: double), (cdouble * -257) (type: double), (cint + cfloat) (type: float), ((- cdouble) + cbigint) (type: double), (- cdouble) (type: double), (-1.389 - cfloat) (type: double), (- cfloat) (type: float), ((-5638.15 - cdouble) + (cint + cfloat)) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13 + Statistics: Num rows: 9216 Data size: 282927 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + PREHOOK: query: SELECT ctimestamp1, cdouble, cboolean1, @@ -14,11 +98,12 @@ PREHOOK: query: SELECT ctimestamp1, ((-5638.15 - cdouble) + (cint + cfloat)) FROM alltypesorc WHERE (((cstring2 IS NOT NULL) - AND ((ctimestamp1 <= -29071) - AND (ctimestamp2 != 16558))) + AND ((ctimestamp1 <= 10) + AND (ctimestamp2 != 16))) OR ((cfloat < -6432) OR ((cboolean1 IS NOT NULL) AND (cdouble = 988888)))) +LIMIT 20 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -38,1407 +123,188 @@ POSTHOOK: query: SELECT ctimestamp1, ((-5638.15 - cdouble) + (cint + cfloat)) FROM alltypesorc WHERE (((cstring2 IS NOT NULL) - AND ((ctimestamp1 <= -29071) - AND (ctimestamp2 != 16558))) + AND ((ctimestamp1 <= 10) + AND (ctimestamp2 != 16))) OR ((cfloat < -6432) OR ((cboolean1 IS NOT NULL) AND (cdouble = 988888)))) +LIMIT 20 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### +1969-12-31 16:00:05.478 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL -1.090413913E9 200.0 -39.389 -38.0 NULL 1969-12-31 15:59:49.567 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL 1.576772582E9 200.0 -39.389 -38.0 NULL +1969-12-31 16:00:07.648 -200.0 NULL NULL 3.0 200.0 -5438.15 51400.0 NULL -1.438142292E9 200.0 -4.389 -3.0 NULL 1969-12-31 15:59:54.739 -200.0 NULL NULL 31.0 200.0 -5438.15 51400.0 NULL -2.45476531E8 200.0 -32.389 -31.0 NULL +1969-12-31 16:00:03.248 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL -1.818374453E9 200.0 8.611 10.0 NULL 1969-12-31 15:59:46.007 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL -1.236645108E9 200.0 -9.389 -8.0 NULL +1969-12-31 16:00:06.852 -200.0 NULL NULL -63.0 200.0 -5438.15 51400.0 NULL 1.927856572E9 200.0 61.611 63.0 NULL 1969-12-31 15:59:44.842 -200.0 NULL NULL -30.0 200.0 -5438.15 51400.0 NULL -8.15880983E8 200.0 28.611 30.0 NULL +1969-12-31 16:00:00.958 -200.0 NULL NULL -39.0 200.0 -5438.15 51400.0 NULL 9.44478114E8 200.0 37.611 39.0 NULL 1969-12-31 15:59:54.328 -200.0 NULL NULL -39.0 200.0 -5438.15 51400.0 NULL -1.74772438E9 200.0 37.611 39.0 NULL 1969-12-31 15:59:44.55 -200.0 NULL NULL 24.0 200.0 -5438.15 51400.0 NULL -4.99521157E8 200.0 -25.389 -24.0 NULL +1969-12-31 16:00:02.208 -200.0 NULL NULL 16.0 200.0 -5438.15 51400.0 NULL 1.043214222E9 200.0 -17.389 -16.0 NULL 1969-12-31 15:59:58.305 -200.0 NULL NULL -12.0 200.0 -5438.15 51400.0 NULL -9.97940606E8 200.0 10.611 12.0 NULL +1969-12-31 16:00:00.911 -200.0 NULL NULL 12.0 200.0 -5438.15 51400.0 NULL 1.153060648E9 200.0 -13.389 -12.0 NULL +1969-12-31 16:00:03.139 -200.0 NULL NULL 10.0 200.0 -5438.15 51400.0 NULL -1.709273652E9 200.0 -11.389 -10.0 NULL 1969-12-31 15:59:54.199 -200.0 NULL NULL 55.0 200.0 -5438.15 51400.0 NULL -1.151590935E9 200.0 -56.389 -55.0 NULL 1969-12-31 15:59:54.016 -200.0 NULL NULL 46.0 200.0 -5438.15 51400.0 NULL -5.17349102E8 200.0 -47.389 -46.0 NULL 1969-12-31 15:59:57.847 -200.0 NULL NULL 50.0 200.0 -5438.15 51400.0 NULL 1.819421586E9 200.0 -51.389 -50.0 NULL 1969-12-31 15:59:49.764 -200.0 NULL NULL -20.0 200.0 -5438.15 51400.0 NULL 1.115401341E9 200.0 18.611 20.0 NULL 1969-12-31 15:59:51.417 -200.0 NULL NULL -17.0 200.0 -5438.15 51400.0 NULL 1.806593848E9 200.0 15.611 17.0 NULL -1969-12-31 15:59:51.342 -200.0 NULL NULL 60.0 200.0 -5438.15 51400.0 NULL 1.98114074E9 200.0 -61.389 -60.0 NULL -1969-12-31 15:59:46.273 -200.0 NULL NULL -31.0 200.0 -5438.15 51400.0 NULL 2.06297808E9 200.0 29.611 31.0 NULL -1969-12-31 15:59:47.263 -200.0 NULL NULL 17.0 200.0 -5438.15 51400.0 NULL -1.100744231E9 200.0 -18.389 -17.0 NULL -1969-12-31 15:59:52.337 -200.0 NULL NULL -55.0 200.0 -5438.15 51400.0 NULL 1.629617133E9 200.0 53.611 55.0 NULL -1969-12-31 15:59:45.169 -200.0 NULL NULL -60.0 200.0 -5438.15 51400.0 NULL -1.062217266E9 200.0 58.611 60.0 NULL -1969-12-31 15:59:53.476 -200.0 NULL NULL -22.0 200.0 -5438.15 51400.0 NULL 1.50711704E8 200.0 20.611 22.0 NULL -1969-12-31 15:59:52.316 -200.0 NULL NULL -44.0 200.0 -5438.15 51400.0 NULL 1.117076802E9 200.0 42.611 44.0 NULL -1969-12-31 15:59:44.289 -200.0 NULL NULL 49.0 200.0 -5438.15 51400.0 NULL 1.713733903E9 200.0 -50.389 -49.0 NULL -1969-12-31 15:59:47.974 -200.0 NULL NULL -63.0 200.0 -5438.15 51400.0 NULL -2.070832261E9 200.0 61.611 63.0 NULL -1969-12-31 15:59:56.217 -200.0 NULL NULL 50.0 200.0 -5438.15 51400.0 NULL -1.595717523E9 200.0 -51.389 -50.0 NULL -1969-12-31 15:59:52.273 -200.0 NULL NULL 18.0 200.0 -5438.15 51400.0 NULL 3.15038939E8 200.0 -19.389 -18.0 NULL -1969-12-31 15:59:45.748 -200.0 NULL NULL -36.0 200.0 -5438.15 51400.0 NULL -2.00621655E9 200.0 34.611 36.0 NULL -1969-12-31 15:59:50.858 -200.0 NULL NULL -13.0 200.0 -5438.15 51400.0 NULL -5.1927871E8 200.0 11.611 13.0 NULL -1969-12-31 15:59:56.099 -200.0 NULL NULL 19.0 200.0 -5438.15 51400.0 NULL 1.490159761E9 200.0 -20.389 -19.0 NULL -1969-12-31 15:59:52.751 -200.0 NULL NULL 16.0 200.0 -5438.15 51400.0 NULL 1.918188807E9 200.0 -17.389 -16.0 NULL -1969-12-31 15:59:53.743 -200.0 NULL NULL 25.0 200.0 -5438.15 51400.0 NULL 1.861913353E9 200.0 -26.389 -25.0 NULL -1969-12-31 15:59:57.882 -200.0 NULL NULL -29.0 200.0 -5438.15 51400.0 NULL 1.896459139E9 200.0 27.611 29.0 NULL -1969-12-31 15:59:44.453 -200.0 NULL NULL -16.0 200.0 -5438.15 51400.0 NULL -1.624098665E9 200.0 14.611 16.0 NULL -1969-12-31 15:59:44.448 -200.0 NULL NULL 22.0 200.0 -5438.15 51400.0 NULL 1.28704354E8 200.0 -23.389 -22.0 NULL -1969-12-31 15:59:58.148 -200.0 NULL NULL -14.0 200.0 -5438.15 51400.0 NULL -1.44944638E9 200.0 12.611 14.0 NULL -1969-12-31 15:59:46.536 -200.0 NULL NULL -29.0 200.0 -5438.15 51400.0 NULL 1.674924483E9 200.0 27.611 29.0 NULL -1969-12-31 15:59:51.43 -200.0 NULL NULL -43.0 200.0 -5438.15 51400.0 NULL 8.18800398E8 200.0 41.611 43.0 NULL -1969-12-31 15:59:58.512 -200.0 NULL NULL -20.0 200.0 -5438.15 51400.0 NULL 8.37822575E8 200.0 18.611 20.0 NULL -1969-12-31 15:59:44.616 -200.0 NULL NULL 6.0 200.0 -5438.15 51400.0 NULL -1.991270253E9 200.0 -7.389 -6.0 NULL -1969-12-31 15:59:43.773 -200.0 NULL NULL -24.0 200.0 -5438.15 51400.0 NULL -1.046049502E9 200.0 22.611 24.0 NULL -1969-12-31 15:59:55.755 -200.0 NULL NULL -33.0 200.0 -5438.15 51400.0 NULL -5.67292157E8 200.0 31.611 33.0 NULL -1969-12-31 15:59:56.769 -200.0 NULL NULL -38.0 200.0 -5438.15 51400.0 NULL 4.5048554E8 200.0 36.611 38.0 NULL -1969-12-31 15:59:56.754 -200.0 NULL NULL -21.0 200.0 -5438.15 51400.0 NULL -3.29013096E8 200.0 19.611 21.0 NULL -1969-12-31 15:59:46.449 -200.0 NULL NULL -4.0 200.0 -5438.15 51400.0 NULL -6.89000845E8 200.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:46.368 -200.0 NULL NULL 39.0 200.0 -5438.15 51400.0 NULL 1.1295074E8 200.0 -40.389 -39.0 NULL -1969-12-31 15:59:53.592 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL 1.922447914E9 200.0 -39.389 -38.0 NULL -1969-12-31 15:59:47.17 -200.0 NULL NULL 47.0 200.0 -5438.15 51400.0 NULL 1.24159373E9 200.0 -48.389 -47.0 NULL -1969-12-31 15:59:55.064 -200.0 NULL NULL 53.0 200.0 -5438.15 51400.0 NULL 8.01413972E8 200.0 -54.389 -53.0 NULL -1969-12-31 15:59:47.994 -200.0 NULL NULL 49.0 200.0 -5438.15 51400.0 NULL -1.370471656E9 200.0 -50.389 -49.0 NULL -1969-12-31 15:59:50.892 -200.0 NULL NULL -17.0 200.0 -5438.15 51400.0 NULL -1.677620437E9 200.0 15.611 17.0 NULL -1969-12-31 15:59:58.788 -200.0 NULL NULL 24.0 200.0 -5438.15 51400.0 NULL 8.05288017E8 200.0 -25.389 -24.0 NULL -1969-12-31 15:59:57.901 -200.0 NULL NULL -1.0 200.0 -5438.15 51400.0 NULL -2.50914999E8 200.0 -0.389 1.0 NULL -1969-12-31 15:59:50.675 -200.0 NULL NULL 51.0 200.0 -5438.15 51400.0 NULL 1.403895934E9 200.0 -52.389 -51.0 NULL -1969-12-31 15:59:57.646 -200.0 NULL NULL -46.0 200.0 -5438.15 51400.0 NULL -6.24367572E8 200.0 44.611 46.0 NULL -1969-12-31 15:59:53.732 -200.0 NULL NULL -29.0 200.0 -5438.15 51400.0 NULL 1.399455299E9 200.0 27.611 29.0 NULL -1969-12-31 15:59:45.722 -200.0 NULL NULL 16.0 200.0 -5438.15 51400.0 NULL -2.069084975E9 200.0 -17.389 -16.0 NULL -1969-12-31 15:59:56.163 -200.0 NULL NULL 46.0 200.0 -5438.15 51400.0 NULL -1.275647101E9 200.0 -47.389 -46.0 NULL -1969-12-31 15:59:53.06 -200.0 NULL NULL 34.0 200.0 -5438.15 51400.0 NULL -1.958595995E9 200.0 -35.389 -34.0 NULL -1969-12-31 15:59:44.973 -200.0 NULL NULL 30.0 200.0 -5438.15 51400.0 NULL 2.02681039E8 200.0 -31.389 -30.0 NULL -1969-12-31 15:59:58.129 -200.0 NULL NULL 37.0 200.0 -5438.15 51400.0 NULL 1.838442562E9 200.0 -38.389 -37.0 NULL -1969-12-31 15:59:48.475 -200.0 NULL NULL 4.0 200.0 -5438.15 51400.0 NULL 1.511790475E9 200.0 -5.389 -4.0 NULL -1969-12-31 15:59:44.38 -200.0 NULL NULL -41.0 200.0 -5438.15 51400.0 NULL -6.88353743E8 200.0 39.611 41.0 NULL -1969-12-31 15:59:51.905 -200.0 NULL NULL -41.0 200.0 -5438.15 51400.0 NULL 6.19127102E8 200.0 39.611 41.0 NULL -1969-12-31 15:59:46.137 -200.0 NULL NULL 62.0 200.0 -5438.15 51400.0 NULL -1.3322977E9 200.0 -63.389 -62.0 NULL -1969-12-31 15:59:52.612 -200.0 NULL NULL -52.0 200.0 -5438.15 51400.0 NULL 6.78275644E8 200.0 50.611 52.0 NULL -1969-12-31 15:59:49.331 -200.0 NULL NULL -46.0 200.0 -5438.15 51400.0 NULL -2.034714906E9 200.0 44.611 46.0 NULL -1969-12-31 15:59:48.372 -200.0 NULL NULL -25.0 200.0 -5438.15 51400.0 NULL 1.516831754E9 200.0 23.611 25.0 NULL -1969-12-31 15:59:55.116 -200.0 NULL NULL -37.0 200.0 -5438.15 51400.0 NULL 8.7260339E8 200.0 35.611 37.0 NULL -1969-12-31 15:59:55.029 -200.0 NULL NULL 58.0 200.0 -5438.15 51400.0 NULL -5.98014371E8 200.0 -59.389 -58.0 NULL -1969-12-31 15:59:56.128 -200.0 NULL NULL 60.0 200.0 -5438.15 51400.0 NULL -1.08929436E8 200.0 -61.389 -60.0 NULL -1969-12-31 15:59:54.103 -200.0 NULL NULL 50.0 200.0 -5438.15 51400.0 NULL 2.12665655E9 200.0 -51.389 -50.0 NULL -1969-12-31 15:59:55.982 -200.0 NULL NULL 4.0 200.0 -5438.15 51400.0 NULL 4.16821176E8 200.0 -5.389 -4.0 NULL -1969-12-31 15:59:54.349 -200.0 NULL NULL -42.0 200.0 -5438.15 51400.0 NULL -3.90050257E8 200.0 40.611 42.0 NULL -1969-12-31 15:59:51.555 -200.0 NULL NULL 49.0 200.0 -5438.15 51400.0 NULL 1.235418887E9 200.0 -50.389 -49.0 NULL -1969-12-31 15:59:47.952 -200.0 NULL NULL -4.0 200.0 -5438.15 51400.0 NULL -4.4940127E8 200.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:47.828 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL -7.15660533E8 200.0 8.611 10.0 NULL -1969-12-31 15:59:48.367 -200.0 NULL NULL 49.0 200.0 -5438.15 51400.0 NULL 1.709812489E9 200.0 -50.389 -49.0 NULL -1969-12-31 15:59:45.016 -200.0 NULL NULL 30.0 200.0 -5438.15 51400.0 NULL -1.200219122E9 200.0 -31.389 -30.0 NULL -1969-12-31 15:59:49.293 -200.0 NULL NULL -25.0 200.0 -5438.15 51400.0 NULL -7.76496913E8 200.0 23.611 25.0 NULL -1969-12-31 15:59:55.747 -200.0 NULL NULL -3.0 200.0 -5438.15 51400.0 NULL 2.001870927E9 200.0 1.611 3.0 NULL -1969-12-31 15:59:56.776 -200.0 NULL NULL 55.0 200.0 -5438.15 51400.0 NULL 1.254338421E9 200.0 -56.389 -55.0 NULL -1969-12-31 15:59:57.118 -200.0 NULL NULL 37.0 200.0 -5438.15 51400.0 NULL 2.48910279E8 200.0 -38.389 -37.0 NULL -1969-12-31 15:59:54.075 -200.0 NULL NULL -24.0 200.0 -5438.15 51400.0 NULL 1.91358685E8 200.0 22.611 24.0 NULL -1969-12-31 15:59:57.56 -200.0 NULL NULL 56.0 200.0 -5438.15 51400.0 NULL 9.51463837E8 200.0 -57.389 -56.0 NULL -1969-12-31 15:59:45.489 -200.0 NULL NULL 58.0 200.0 -5438.15 51400.0 NULL 1.300104254E9 200.0 -59.389 -58.0 NULL -1969-12-31 15:59:51.899 -200.0 NULL NULL -31.0 200.0 -5438.15 51400.0 NULL 8.18480875E8 200.0 29.611 31.0 NULL -1969-12-31 15:59:55.023 -200.0 NULL NULL -48.0 200.0 -5438.15 51400.0 NULL 1.7520644E7 200.0 46.611 48.0 NULL -1969-12-31 15:59:44.457 -200.0 NULL NULL -14.0 200.0 -5438.15 51400.0 NULL 1.678325285E9 200.0 12.611 14.0 NULL -1969-12-31 15:59:57.245 -200.0 NULL NULL 16.0 200.0 -5438.15 51400.0 NULL 1.713761192E9 200.0 -17.389 -16.0 NULL -1969-12-31 15:59:54.484 -200.0 NULL NULL -58.0 200.0 -5438.15 51400.0 NULL 1.126210129E9 200.0 56.611 58.0 NULL -1969-12-31 15:59:53.898 -200.0 NULL NULL 4.0 200.0 -5438.15 51400.0 NULL -1.597851053E9 200.0 -5.389 -4.0 NULL -1969-12-31 15:59:57.794 -200.0 NULL NULL -5.0 200.0 -5438.15 51400.0 NULL 2.05645923E8 200.0 3.6109999999999998 5.0 NULL -1969-12-31 15:59:58.046 -200.0 NULL NULL -62.0 200.0 -5438.15 51400.0 NULL 2.071666627E9 200.0 60.611 62.0 NULL -1969-12-31 15:59:57.543 -200.0 NULL NULL 32.0 200.0 -5438.15 51400.0 NULL 1.053538928E9 200.0 -33.389 -32.0 NULL -1969-12-31 15:59:57.747 -200.0 NULL NULL -60.0 200.0 -5438.15 51400.0 NULL 1.20832011E9 200.0 58.611 60.0 NULL -1969-12-31 15:59:55.056 -200.0 NULL NULL 20.0 200.0 -5438.15 51400.0 NULL -1.403730464E9 200.0 -21.389 -20.0 NULL -1969-12-31 15:59:58.65 -200.0 NULL NULL 43.0 200.0 -5438.15 51400.0 NULL 7.62545474E8 200.0 -44.389 -43.0 NULL -1969-12-31 15:59:46.157 -200.0 NULL NULL 55.0 200.0 -5438.15 51400.0 NULL -7.02814507E8 200.0 -56.389 -55.0 NULL -1969-12-31 15:59:54.131 -200.0 NULL NULL -9.0 200.0 -5438.15 51400.0 NULL -1.518454595E9 200.0 7.611 9.0 NULL -1969-12-31 15:59:55.155 -200.0 NULL NULL -52.0 200.0 -5438.15 51400.0 NULL -1.814251365E9 200.0 50.611 52.0 NULL -1969-12-31 15:59:44.297 -200.0 NULL NULL 14.0 200.0 -5438.15 51400.0 NULL 2.120344458E9 200.0 -15.389 -14.0 NULL -1969-12-31 15:59:47.24 -200.0 NULL NULL -58.0 200.0 -5438.15 51400.0 NULL 1.257221299E9 200.0 56.611 58.0 NULL -1969-12-31 15:59:44.393 -200.0 NULL NULL -19.0 200.0 -5438.15 51400.0 NULL 9.75140129E8 200.0 17.611 19.0 NULL -1969-12-31 15:59:55.105 -200.0 NULL NULL -38.0 200.0 -5438.15 51400.0 NULL 1.857898801E9 200.0 36.611 38.0 NULL -1969-12-31 15:59:46.52 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL 1.304928472E9 200.0 -9.389 -8.0 NULL -1969-12-31 15:59:50.573 -200.0 NULL NULL -26.0 200.0 -5438.15 51400.0 NULL -1.087207414E9 200.0 24.611 26.0 NULL -1969-12-31 15:59:46.028 -200.0 NULL NULL 46.0 200.0 -5438.15 51400.0 NULL 1.4115302E7 200.0 -47.389 -46.0 NULL -1969-12-31 15:59:48.291 -200.0 NULL NULL -26.28 200.0 -5438.15 51400.0 NULL 8.22477743E8 200.0 24.89100068664551 26.28 NULL -1969-12-31 15:59:57.953 -200.0 NULL NULL 15.0 200.0 -5438.15 51400.0 NULL -3.0844755E7 200.0 -16.389 -15.0 NULL -1969-12-31 15:59:46.893 -200.0 NULL NULL 2.0 200.0 -5438.15 51400.0 NULL 1.767036177E9 200.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:47.921 -200.0 NULL NULL 52.0 200.0 -5438.15 51400.0 NULL 5.05653902E8 200.0 -53.389 -52.0 NULL -1969-12-31 15:59:44.291 -200.0 NULL NULL -32.0 200.0 -5438.15 51400.0 NULL -8384254.0 200.0 30.611 32.0 NULL -1969-12-31 15:59:48.452 -200.0 NULL NULL 17.0 200.0 -5438.15 51400.0 NULL -8.9991931E8 200.0 -18.389 -17.0 NULL -1969-12-31 15:59:54.886 -200.0 NULL NULL 52.0 200.0 -5438.15 51400.0 NULL 2.029008149E9 200.0 -53.389 -52.0 NULL -1969-12-31 15:59:57.568 -200.0 NULL NULL 6.0 200.0 -5438.15 51400.0 NULL 5.5913323E8 200.0 -7.389 -6.0 NULL -1969-12-31 15:59:50.474 -200.0 NULL NULL 29.0 200.0 -5438.15 51400.0 NULL -5.11852921E8 200.0 -30.389 -29.0 NULL -1969-12-31 15:59:49.52 -200.0 NULL NULL -41.0 200.0 -5438.15 51400.0 NULL -2.60138027E8 200.0 39.611 41.0 NULL -1969-12-31 15:59:55.197 -200.0 NULL NULL 40.0 200.0 -5438.15 51400.0 NULL 1.958187927E9 200.0 -41.389 -40.0 NULL -1969-12-31 15:59:57.528 -200.0 NULL NULL -60.0 200.0 -5438.15 51400.0 NULL 1.17243172E9 200.0 58.611 60.0 NULL -1969-12-31 15:59:52.066 -200.0 NULL NULL -61.0 200.0 -5438.15 51400.0 NULL 6.23787802E8 200.0 59.611 61.0 NULL -1969-12-31 15:59:45.106 -200.0 NULL NULL 48.0 200.0 -5438.15 51400.0 NULL 1.03929501E9 200.0 -49.389 -48.0 NULL -1969-12-31 15:59:46.38 -200.0 NULL NULL 28.0 200.0 -5438.15 51400.0 NULL -1.439489241E9 200.0 -29.389 -28.0 NULL -1969-12-31 15:59:56.055 -200.0 NULL NULL 45.0 200.0 -5438.15 51400.0 NULL -1.251321375E9 200.0 -46.389 -45.0 NULL -1969-12-31 15:59:51.941 -200.0 NULL NULL -34.0 200.0 -5438.15 51400.0 NULL -9.31598182E8 200.0 32.611 34.0 NULL -1969-12-31 15:59:58.624 -200.0 NULL NULL 50.0 200.0 -5438.15 51400.0 NULL -5.74324681E8 200.0 -51.389 -50.0 NULL -1969-12-31 15:59:57.273 -200.0 NULL NULL -6.0 200.0 -5438.15 51400.0 NULL 1.94260654E9 200.0 4.611 6.0 NULL -1969-12-31 15:59:51.788 -200.0 NULL NULL 47.0 200.0 -5438.15 51400.0 NULL 1.394915012E9 200.0 -48.389 -47.0 NULL -1969-12-31 15:59:47.194 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL 6.62360573E8 200.0 8.611 10.0 NULL -1969-12-31 15:59:43.904 -200.0 NULL NULL 7.0 200.0 -5438.15 51400.0 NULL -2.90665457E8 200.0 -8.389 -7.0 NULL -1969-12-31 15:59:45.074 -200.0 NULL NULL 53.0 200.0 -5438.15 51400.0 NULL -1.405259547E9 200.0 -54.389 -53.0 NULL -1969-12-31 15:59:55.043 -200.0 NULL NULL -16.0 200.0 -5438.15 51400.0 NULL 8.2971873E7 200.0 14.611 16.0 NULL -1969-12-31 15:59:45.1 -200.0 NULL NULL -33.0 200.0 -5438.15 51400.0 NULL -3.75567761E8 200.0 31.611 33.0 NULL -1969-12-31 15:59:52.606 -200.0 NULL NULL 4.0 200.0 -5438.15 51400.0 NULL 2.05937506E9 200.0 -5.389 -4.0 NULL -1969-12-31 15:59:48.617 -200.0 NULL NULL -52.0 200.0 -5438.15 51400.0 NULL -7.93753702E8 200.0 50.611 52.0 NULL -1969-12-31 15:59:43.72 -200.0 NULL NULL -18.0 200.0 -5438.15 51400.0 NULL 1.809037075E9 200.0 16.611 18.0 NULL -1969-12-31 15:59:56.399 -200.0 NULL NULL 2.0 200.0 -5438.15 51400.0 NULL -2.04230297E9 200.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:54.979 -200.0 NULL NULL -30.0 200.0 -5438.15 51400.0 NULL 1.848283981E9 200.0 28.611 30.0 NULL -1969-12-31 15:59:44.486 -200.0 NULL NULL -55.0 200.0 -5438.15 51400.0 NULL -6.80853882E8 200.0 53.611 55.0 NULL -1969-12-31 15:59:53.546 -200.0 NULL NULL -27.0 200.0 -5438.15 51400.0 NULL -4.99602401E8 200.0 25.611 27.0 NULL -1969-12-31 15:59:48.771 -200.0 NULL NULL 60.0 200.0 -5438.15 51400.0 NULL 1.026483547E9 200.0 -61.389 -60.0 NULL -1969-12-31 15:59:45.091 -200.0 NULL NULL 30.0 200.0 -5438.15 51400.0 NULL 1.092631227E9 200.0 -31.389 -30.0 NULL -1969-12-31 15:59:55.701 -200.0 NULL NULL 31.0 200.0 -5438.15 51400.0 NULL -1.951049507E9 200.0 -32.389 -31.0 NULL -1969-12-31 15:59:57.47 -200.0 NULL NULL 6.0 200.0 -5438.15 51400.0 NULL -1.169268894E9 200.0 -7.389 -6.0 NULL -1969-12-31 15:59:49.195 -200.0 NULL NULL 61.0 200.0 -5438.15 51400.0 NULL 1.478238066E9 200.0 -62.389 -61.0 NULL -1969-12-31 15:59:47.019 -200.0 NULL NULL 60.0 200.0 -5438.15 51400.0 NULL -2.13223191E9 200.0 -61.389 -60.0 NULL -1969-12-31 15:59:46.116 -200.0 NULL NULL -20.0 200.0 -5438.15 51400.0 NULL 1.579121253E9 200.0 18.611 20.0 NULL -1969-12-31 15:59:44.922 -200.0 NULL NULL -28.0 200.0 -5438.15 51400.0 NULL -5.9699565E8 200.0 26.611 28.0 NULL -1969-12-31 15:59:45.985 -200.0 NULL NULL -44.0 200.0 -5438.15 51400.0 NULL -1.226409381E9 200.0 42.611 44.0 NULL -1969-12-31 15:59:47.066 -200.0 NULL NULL -6.0 200.0 -5438.15 51400.0 NULL 1.361253697E9 200.0 4.611 6.0 NULL -1969-12-31 15:59:46.29 -200.0 NULL NULL 1.0 200.0 -5438.15 51400.0 NULL 1.968356828E9 200.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:54.522 -200.0 NULL NULL -23.0 200.0 -5438.15 51400.0 NULL -1.369228315E9 200.0 21.611 23.0 NULL -1969-12-31 15:59:47.034 -200.0 NULL NULL -61.0 200.0 -5438.15 51400.0 NULL 1.399483416E9 200.0 59.611 61.0 NULL -1969-12-31 15:59:51.519 -200.0 NULL NULL 40.0 200.0 -5438.15 51400.0 NULL 1.165114521E9 200.0 -41.389 -40.0 NULL -1969-12-31 15:59:52.467 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL -1.078074007E9 200.0 -9.389 -8.0 NULL -1969-12-31 15:59:49.419 -200.0 NULL NULL 15.0 200.0 -5438.15 51400.0 NULL -1.031296141E9 200.0 -16.389 -15.0 NULL -1969-12-31 15:59:51.441 -200.0 NULL NULL 6.0 200.0 -5438.15 51400.0 NULL 1.038571236E9 200.0 -7.389 -6.0 NULL -1969-12-31 15:59:46.889 -200.0 NULL NULL -56.0 200.0 -5438.15 51400.0 NULL 6.86904963E8 200.0 54.611 56.0 NULL -1969-12-31 15:59:43.952 -200.0 NULL NULL 49.0 200.0 -5438.15 51400.0 NULL -7.53159404E8 200.0 -50.389 -49.0 NULL -1969-12-31 15:59:46.511 -200.0 NULL NULL 43.0 200.0 -5438.15 51400.0 NULL -1.168580114E9 200.0 -44.389 -43.0 NULL -1969-12-31 15:59:47.69 -200.0 NULL NULL -32.0 200.0 -5438.15 51400.0 NULL -6.79776776E8 200.0 30.611 32.0 NULL -1969-12-31 15:59:56.044 -200.0 NULL NULL -54.0 200.0 -5438.15 51400.0 NULL -1.011980358E9 200.0 52.611 54.0 NULL -1969-12-31 15:59:55.61 -200.0 NULL NULL -16.0 200.0 -5438.15 51400.0 NULL -1.878233163E9 200.0 14.611 16.0 NULL -1969-12-31 15:59:49.499 -200.0 NULL NULL 13.0 200.0 -5438.15 51400.0 NULL -1.92798195E8 200.0 -14.389 -13.0 NULL -1969-12-31 15:59:46.834 -200.0 NULL NULL 2.0 200.0 -5438.15 51400.0 NULL -9.09348407E8 200.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:52.168 -200.0 NULL NULL 54.0 200.0 -5438.15 51400.0 NULL -9.94299391E8 200.0 -55.389 -54.0 NULL -1969-12-31 15:59:45.983 -200.0 NULL NULL 58.0 200.0 -5438.15 51400.0 NULL -4.39773507E8 200.0 -59.389 -58.0 NULL -1969-12-31 15:59:58.923 -200.0 NULL NULL -22.0 200.0 -5438.15 51400.0 NULL -4.35427974E8 200.0 20.611 22.0 NULL -1969-12-31 15:59:54.866 -200.0 NULL NULL -26.0 200.0 -5438.15 51400.0 NULL -2.81745985E8 200.0 24.611 26.0 NULL -1969-12-31 15:59:30.929 -200.0 NULL NULL 12.0 200.0 -5438.15 51400.0 NULL 2.128824065E9 200.0 -13.389 -12.0 NULL -1969-12-31 15:59:45.971 -200.0 NULL NULL 41.0 200.0 -5438.15 51400.0 NULL -1.614419539E9 200.0 -42.389 -41.0 NULL -1969-12-31 15:59:53.186 -200.0 NULL NULL 9.0 200.0 -5438.15 51400.0 NULL -1.553646318E9 200.0 -10.389 -9.0 NULL -1969-12-31 15:59:43.924 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL -4.6788231E8 200.0 -39.389 -38.0 NULL -1969-12-31 15:59:44.549 -200.0 NULL NULL 59.0 200.0 -5438.15 51400.0 NULL 1.88494959E8 200.0 -60.389 -59.0 NULL -1969-12-31 15:59:50.129 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL -1.94532861E8 200.0 -9.389 -8.0 NULL -1969-12-31 15:59:58.298 -200.0 NULL NULL 32.0 200.0 -5438.15 51400.0 NULL 9.27442864E8 200.0 -33.389 -32.0 NULL -1969-12-31 15:59:57.828 -200.0 NULL NULL -34.0 200.0 -5438.15 51400.0 NULL 1.018093697E9 200.0 32.611 34.0 NULL -1969-12-31 15:59:48.021 -200.0 NULL NULL 34.0 200.0 -5438.15 51400.0 NULL -8.24104912E8 200.0 -35.389 -34.0 NULL -1969-12-31 15:59:53.448 -200.0 NULL NULL 44.0 200.0 -5438.15 51400.0 NULL -1.773070193E9 200.0 -45.389 -44.0 NULL -1969-12-31 15:59:44.052 -200.0 NULL NULL -4.0 200.0 -5438.15 51400.0 NULL -7.4396307E7 200.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:57.951 -200.0 NULL NULL 26.0 200.0 -5438.15 51400.0 NULL -1.781562438E9 200.0 -27.389 -26.0 NULL -1969-12-31 15:59:58.26 -200.0 NULL NULL -1.0 200.0 -5438.15 51400.0 NULL -8.30447328E8 200.0 -0.389 1.0 NULL -1969-12-31 15:59:53.052 -200.0 NULL NULL 24.0 200.0 -5438.15 51400.0 NULL 8.21428266E8 200.0 -25.389 -24.0 NULL -1969-12-31 15:59:44.866 -200.0 NULL NULL -27.0 200.0 -5438.15 51400.0 NULL -2.52256344E8 200.0 25.611 27.0 NULL -1969-12-31 15:59:45.427 -200.0 NULL NULL -7.0 200.0 -5438.15 51400.0 NULL -1.48747514E8 200.0 5.611 7.0 NULL -1969-12-31 15:59:58.561 -200.0 NULL NULL -17.0 200.0 -5438.15 51400.0 NULL 3.03232716E8 200.0 15.611 17.0 NULL -1969-12-31 15:59:56.7 -200.0 NULL NULL -58.0 200.0 -5438.15 51400.0 NULL -3.52393106E8 200.0 56.611 58.0 NULL -1969-12-31 15:59:50.708 -200.0 NULL NULL -31.0 200.0 -5438.15 51400.0 NULL -1.840712594E9 200.0 29.611 31.0 NULL -1969-12-31 15:59:44.289 -200.0 NULL NULL -16.0 200.0 -5438.15 51400.0 NULL -1.197793061E9 200.0 14.611 16.0 NULL -1969-12-31 15:59:51.566 -200.0 NULL NULL 37.0 200.0 -5438.15 51400.0 NULL 1.829107601E9 200.0 -38.389 -37.0 NULL -1969-12-31 15:59:45.107 -200.0 NULL NULL 15.0 200.0 -5438.15 51400.0 NULL 1.565122176E9 200.0 -16.389 -15.0 NULL -1969-12-31 15:59:49.489 -200.0 NULL NULL 33.0 200.0 -5438.15 51400.0 NULL 1.531927045E9 200.0 -34.389 -33.0 NULL -1969-12-31 15:59:57.063 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL 1.430481543E9 200.0 -9.389 -8.0 NULL -1969-12-31 15:59:48.017 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL 4.28518939E8 200.0 -39.389 -38.0 NULL -1969-12-31 15:59:51.711 -200.0 NULL NULL 56.0 200.0 -5438.15 51400.0 NULL -1.03192034E8 200.0 -57.389 -56.0 NULL -1969-12-31 15:59:48.152 -200.0 NULL NULL -31.0 200.0 -5438.15 51400.0 NULL -1.69044779E9 200.0 29.611 31.0 NULL -1969-12-31 15:59:44.772 -200.0 NULL NULL 23.0 200.0 -5438.15 51400.0 NULL 7.52629042E8 200.0 -24.389 -23.0 NULL -1969-12-31 15:59:56.426 -200.0 NULL NULL -26.0 200.0 -5438.15 51400.0 NULL -2.40265214E8 200.0 24.611 26.0 NULL -1969-12-31 15:59:57.269 -200.0 NULL NULL -4.0 200.0 -5438.15 51400.0 NULL 1.170453502E9 200.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:45.644 -200.0 NULL NULL -52.0 200.0 -5438.15 51400.0 NULL 1.16462078E8 200.0 50.611 52.0 NULL -1969-12-31 15:59:48.815 -200.0 NULL NULL 62.0 200.0 -5438.15 51400.0 NULL -7.01190908E8 200.0 -63.389 -62.0 NULL -1969-12-31 15:59:55.796 -200.0 NULL NULL -43.0 200.0 -5438.15 51400.0 NULL 5.21702893E8 200.0 41.611 43.0 NULL -1969-12-31 15:59:55.035 -200.0 NULL NULL 60.0 200.0 -5438.15 51400.0 NULL 1.810792603E9 200.0 -61.389 -60.0 NULL -1969-12-31 15:59:57.349 -200.0 NULL NULL -56.0 200.0 -5438.15 51400.0 NULL 6.11008441E8 200.0 54.611 56.0 NULL -1969-12-31 15:59:57.237 -200.0 NULL NULL -3.0 200.0 -5438.15 51400.0 NULL -7.8015972E8 200.0 1.611 3.0 NULL -1969-12-31 15:59:53.817 -200.0 NULL NULL -36.0 200.0 -5438.15 51400.0 NULL 1.5998792E9 200.0 34.611 36.0 NULL -1969-12-31 15:59:44.208 -200.0 NULL NULL -59.0 200.0 -5438.15 51400.0 NULL 3.07601997E8 200.0 57.611 59.0 NULL -1969-12-31 15:59:46.148 -200.0 NULL NULL -40.0 200.0 -5438.15 51400.0 NULL -1.741735236E9 200.0 38.611 40.0 NULL -1969-12-31 15:59:52.202 -200.0 NULL NULL -50.0 200.0 -5438.15 51400.0 NULL 6.8053373E7 200.0 48.611 50.0 NULL -1969-12-31 15:59:56.969 -200.0 NULL NULL -57.0 200.0 -5438.15 51400.0 NULL 1.223378814E9 200.0 55.611 57.0 NULL -1969-12-31 15:59:48.479 -200.0 NULL NULL 32.0 200.0 -5438.15 51400.0 NULL -3.64565093E8 200.0 -33.389 -32.0 NULL -1969-12-31 15:59:56.877 -200.0 NULL NULL -59.0 200.0 -5438.15 51400.0 NULL -1.931142479E9 200.0 57.611 59.0 NULL -1969-12-31 15:59:45.322 -200.0 NULL NULL -15.0 200.0 -5438.15 51400.0 NULL -1.28995278E9 200.0 13.611 15.0 NULL -1969-12-31 15:59:48.508 -200.0 NULL NULL 57.0 200.0 -5438.15 51400.0 NULL 1.228278236E9 200.0 -58.389 -57.0 NULL -1969-12-31 15:59:43.661 -200.0 NULL NULL 13.0 200.0 -5438.15 51400.0 NULL -6.8063459E7 200.0 -14.389 -13.0 NULL -1969-12-31 15:59:57.942 -200.0 NULL NULL -40.0 200.0 -5438.15 51400.0 NULL 1.122557005E9 200.0 38.611 40.0 NULL -1969-12-31 15:59:47.712 -200.0 NULL NULL -28.0 200.0 -5438.15 51400.0 NULL -6.0966412E7 200.0 26.611 28.0 NULL -1969-12-31 15:59:58.245 -200.0 NULL NULL -35.0 200.0 -5438.15 51400.0 NULL 7.2948487E7 200.0 33.611 35.0 NULL -1969-12-31 15:59:46.952 -200.0 NULL NULL 2.0 200.0 -5438.15 51400.0 NULL -1.0302207E8 200.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:56.389 -200.0 NULL NULL -28.0 200.0 -5438.15 51400.0 NULL -7.8920357E7 200.0 26.611 28.0 NULL -1969-12-31 15:59:48.368 -200.0 NULL NULL -11.0 200.0 -5438.15 51400.0 NULL -1.894580011E9 200.0 9.611 11.0 NULL -1969-12-31 15:59:50.905 -200.0 NULL NULL -30.0 200.0 -5438.15 51400.0 NULL 6.81143455E8 200.0 28.611 30.0 NULL -1969-12-31 15:59:48.698 -200.0 NULL NULL 4.0 200.0 -5438.15 51400.0 NULL 1.546508845E9 200.0 -5.389 -4.0 NULL -1969-12-31 15:59:45.137 -200.0 NULL NULL -32.0 200.0 -5438.15 51400.0 NULL 6.8462912E8 200.0 30.611 32.0 NULL -1969-12-31 15:59:56.14 -200.0 NULL NULL 61.0 200.0 -5438.15 51400.0 NULL 1.648986948E9 200.0 -62.389 -61.0 NULL -1969-12-31 15:59:49.635 -200.0 NULL NULL -34.0 200.0 -5438.15 51400.0 NULL -2.1865791E8 200.0 32.611 34.0 NULL -1969-12-31 15:59:45.39 -200.0 NULL NULL -16.0 200.0 -5438.15 51400.0 NULL 6.70803665E8 200.0 14.611 16.0 NULL -1969-12-31 15:59:50.611 -200.0 NULL NULL 9.0 200.0 -5438.15 51400.0 NULL -1.955716783E9 200.0 -10.389 -9.0 NULL -1969-12-31 15:59:58.893 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL 1.435344914E9 200.0 8.611 10.0 NULL -1969-12-31 15:59:52.732 -200.0 NULL NULL -23.0 200.0 -5438.15 51400.0 NULL 4.71298181E8 200.0 21.611 23.0 NULL -1969-12-31 15:59:49.538 -200.0 NULL NULL 45.0 200.0 -5438.15 51400.0 NULL -1.811082647E9 200.0 -46.389 -45.0 NULL -1969-12-31 15:59:46.454 -200.0 NULL NULL 28.0 200.0 -5438.15 51400.0 NULL -1.91114932E9 200.0 -29.389 -28.0 NULL -1969-12-31 15:59:48.791 -200.0 NULL NULL 27.0 200.0 -5438.15 51400.0 NULL 1.8047577E7 200.0 -28.389 -27.0 NULL -1969-12-31 15:59:50.802 -200.0 NULL NULL -41.0 200.0 -5438.15 51400.0 NULL 7.74611565E8 200.0 39.611 41.0 NULL -1969-12-31 15:59:48.341 -200.0 NULL NULL 16.0 200.0 -5438.15 51400.0 NULL -6.21135847E8 200.0 -17.389 -16.0 NULL -1969-12-31 15:59:56.131 -200.0 NULL NULL 26.0 200.0 -5438.15 51400.0 NULL 8.14424246E8 200.0 -27.389 -26.0 NULL -1969-12-31 15:59:56.762 -200.0 NULL NULL 1.0 200.0 -5438.15 51400.0 NULL -1.786392539E9 200.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:45.707 -200.0 NULL NULL 40.0 200.0 -5438.15 51400.0 NULL 1.83831874E8 200.0 -41.389 -40.0 NULL -1969-12-31 15:59:56.555 -200.0 NULL NULL -40.0 200.0 -5438.15 51400.0 NULL -9.06495724E8 200.0 38.611 40.0 NULL -1969-12-31 15:59:57.794 -200.0 NULL NULL 12.0 200.0 -5438.15 51400.0 NULL -1.949450283E9 200.0 -13.389 -12.0 NULL -1969-12-31 15:59:56.174 -200.0 NULL NULL -36.0 200.0 -5438.15 51400.0 NULL 1.728430374E9 200.0 34.611 36.0 NULL -1969-12-31 15:59:56.319 -200.0 NULL NULL -5.0 200.0 -5438.15 51400.0 NULL 2.112230977E9 200.0 3.6109999999999998 5.0 NULL -1969-12-31 15:59:46.383 -200.0 NULL NULL 23.0 200.0 -5438.15 51400.0 NULL 2.050527901E9 200.0 -24.389 -23.0 NULL -1969-12-31 15:59:51.849 -200.0 NULL NULL -35.0 200.0 -5438.15 51400.0 NULL -1.903319781E9 200.0 33.611 35.0 NULL -1969-12-31 15:59:48.673 -200.0 NULL NULL -21.0 200.0 -5438.15 51400.0 NULL -4.03609969E8 200.0 19.611 21.0 NULL -1969-12-31 15:59:44.559 -200.0 NULL NULL -34.0 200.0 -5438.15 51400.0 NULL -8.31359651E8 200.0 32.611 34.0 NULL -1969-12-31 15:59:51.719 -200.0 NULL NULL -47.0 200.0 -5438.15 51400.0 NULL 1.201860145E9 200.0 45.611 47.0 NULL -1969-12-31 15:59:53.518 -200.0 NULL NULL 58.0 200.0 -5438.15 51400.0 NULL -6.00281505E8 200.0 -59.389 -58.0 NULL -1969-12-31 15:59:56.109 -200.0 NULL NULL -21.0 200.0 -5438.15 51400.0 NULL -1.83556796E9 200.0 19.611 21.0 NULL -1969-12-31 15:59:57.369 -200.0 NULL NULL -54.0 200.0 -5438.15 51400.0 NULL 5.34194376E8 200.0 52.611 54.0 NULL -1969-12-31 15:59:49.507 -200.0 NULL NULL -22.0 200.0 -5438.15 51400.0 NULL 1.62175854E8 200.0 20.611 22.0 NULL -1969-12-31 15:59:55.204 -200.0 NULL NULL 30.0 200.0 -5438.15 51400.0 NULL -5.01815754E8 200.0 -31.389 -30.0 NULL -1969-12-31 15:59:58.455 -200.0 NULL NULL 57.0 200.0 -5438.15 51400.0 NULL 7.35056842E8 200.0 -58.389 -57.0 NULL -1969-12-31 15:59:44.301 -200.0 NULL NULL -18.0 200.0 -5438.15 51400.0 NULL 1.945049031E9 200.0 16.611 18.0 NULL -1969-12-31 15:59:53.274 -200.0 NULL NULL 60.0 200.0 -5438.15 51400.0 NULL 1.90450183E8 200.0 -61.389 -60.0 NULL -1969-12-31 15:59:50.822 -200.0 NULL NULL -60.0 200.0 -5438.15 51400.0 NULL -1.860186461E9 200.0 58.611 60.0 NULL -1969-12-31 15:59:48.103 -200.0 NULL NULL 7.0 200.0 -5438.15 51400.0 NULL -6.79670859E8 200.0 -8.389 -7.0 NULL -1969-12-31 15:59:47.68 -200.0 NULL NULL -21.0 200.0 -5438.15 51400.0 NULL -1.160034607E9 200.0 19.611 21.0 NULL -1969-12-31 15:59:47.897 -200.0 NULL NULL -56.0 200.0 -5438.15 51400.0 NULL -3.8881831E8 200.0 54.611 56.0 NULL -1969-12-31 15:59:51.33 -200.0 NULL NULL -21.0 200.0 -5438.15 51400.0 NULL -7.4143037E8 200.0 19.611 21.0 NULL -1969-12-31 15:59:44.001 -200.0 NULL NULL 55.0 200.0 -5438.15 51400.0 NULL -1.472728899E9 200.0 -56.389 -55.0 NULL -1969-12-31 15:59:52.316 -200.0 NULL NULL -29.0 200.0 -5438.15 51400.0 NULL -1.367099379E9 200.0 27.611 29.0 NULL -1969-12-31 15:59:43.941 -200.0 NULL NULL -32.0 200.0 -5438.15 51400.0 NULL 1.23595769E8 200.0 30.611 32.0 NULL -1969-12-31 15:59:50.863 -200.0 NULL NULL -28.0 200.0 -5438.15 51400.0 NULL 1.20420211E9 200.0 26.611 28.0 NULL -1969-12-31 15:59:47.977 -200.0 NULL NULL 28.0 200.0 -5438.15 51400.0 NULL -1.45664433E8 200.0 -29.389 -28.0 NULL -1969-12-31 15:59:45.269 -200.0 NULL NULL -23.0 200.0 -5438.15 51400.0 NULL 1.277033825E9 200.0 21.611 23.0 NULL -1969-12-31 15:59:58.594 -200.0 NULL NULL -23.0 200.0 -5438.15 51400.0 NULL 1.576112057E9 200.0 21.611 23.0 NULL -1969-12-31 15:59:48.678 -200.0 NULL NULL -59.0 200.0 -5438.15 51400.0 NULL -1.201694886E9 200.0 57.611 59.0 NULL -1969-12-31 15:59:47.369 -200.0 NULL NULL 49.0 200.0 -5438.15 51400.0 NULL -1.745527375E9 200.0 -50.389 -49.0 NULL -1969-12-31 15:59:57.957 -200.0 NULL NULL -6.0 200.0 -5438.15 51400.0 NULL 1.845320208E9 200.0 4.611 6.0 NULL -1969-12-31 15:59:54.929 -200.0 NULL NULL 43.0 200.0 -5438.15 51400.0 NULL -1.908377835E9 200.0 -44.389 -43.0 NULL -1969-12-31 15:59:45.015 -200.0 NULL NULL 52.0 200.0 -5438.15 51400.0 NULL -4.33242647E8 200.0 -53.389 -52.0 NULL -1969-12-31 15:59:56.414 -200.0 NULL NULL -23.0 200.0 -5438.15 51400.0 NULL 2.07363044E9 200.0 21.611 23.0 NULL -1969-12-31 15:59:45.693 -200.0 NULL NULL 32.0 200.0 -5438.15 51400.0 NULL 1.568173633E9 200.0 -33.389 -32.0 NULL -1969-12-31 15:59:49.971 -200.0 NULL NULL 31.0 200.0 -5438.15 51400.0 NULL -6.99313505E8 200.0 -32.389 -31.0 NULL -1969-12-31 15:59:46.878 -200.0 NULL NULL -11.0 200.0 -5438.15 51400.0 NULL -1.926900993E9 200.0 9.611 11.0 NULL -1969-12-31 15:59:54.243 -200.0 NULL NULL 5.0 200.0 -5438.15 51400.0 NULL 1.202887495E9 200.0 -6.389 -5.0 NULL -1969-12-31 15:59:46.953 -200.0 NULL NULL -16.0 200.0 -5438.15 51400.0 NULL 9.00721305E8 200.0 14.611 16.0 NULL -1969-12-31 15:59:52.563 -200.0 NULL NULL 26.0 200.0 -5438.15 51400.0 NULL 1.609052054E9 200.0 -27.389 -26.0 NULL -1969-12-31 15:59:49.331 -200.0 NULL NULL 28.0 200.0 -5438.15 51400.0 NULL 8.52989335E8 200.0 -29.389 -28.0 NULL -1969-12-31 15:59:48.468 -200.0 NULL NULL 20.0 200.0 -5438.15 51400.0 NULL 8.55930273E8 200.0 -21.389 -20.0 NULL -1969-12-31 15:59:48.021 -200.0 NULL NULL -29.0 200.0 -5438.15 51400.0 NULL 1.463496059E9 200.0 27.611 29.0 NULL -1969-12-31 15:59:51.191 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL 5.26273481E8 200.0 -9.389 -8.0 NULL -1969-12-31 15:59:57.604 -200.0 NULL NULL -41.0 200.0 -5438.15 51400.0 NULL -1.0302341E9 200.0 39.611 41.0 NULL -1969-12-31 15:59:48.473 -200.0 NULL NULL 34.0 200.0 -5438.15 51400.0 NULL 1.44591685E8 200.0 -35.389 -34.0 NULL -1969-12-31 15:59:58.173 -200.0 NULL NULL -17.0 200.0 -5438.15 51400.0 NULL 2.052691827E9 200.0 15.611 17.0 NULL -1969-12-31 15:59:47.666 -200.0 NULL NULL 44.0 200.0 -5438.15 51400.0 NULL -1.963113601E9 200.0 -45.389 -44.0 NULL -1969-12-31 15:59:48.451 -200.0 NULL NULL 53.0 200.0 -5438.15 51400.0 NULL -1.501171921E9 200.0 -54.389 -53.0 NULL -1969-12-31 15:59:44.456 -200.0 NULL NULL 23.0 200.0 -5438.15 51400.0 NULL 4.88664094E8 200.0 -24.389 -23.0 NULL -1969-12-31 15:59:46.762 -200.0 NULL NULL 12.0 200.0 -5438.15 51400.0 NULL -9.01883878E8 200.0 -13.389 -12.0 NULL -1969-12-31 15:59:52.022 -200.0 NULL NULL -32.0 200.0 -5438.15 51400.0 NULL 1.868646766E9 200.0 30.611 32.0 NULL -1969-12-31 15:59:57.127 -200.0 NULL NULL 25.0 200.0 -5438.15 51400.0 NULL -1.484913093E9 200.0 -26.389 -25.0 NULL -1969-12-31 15:59:54.952 -200.0 NULL NULL -40.0 200.0 -5438.15 51400.0 NULL 1.496680412E9 200.0 38.611 40.0 NULL -1969-12-31 15:59:57.048 -200.0 NULL NULL 9.0 200.0 -5438.15 51400.0 NULL 1.9135462E8 200.0 -10.389 -9.0 NULL -1969-12-31 15:59:48.102 -200.0 NULL NULL -29.0 200.0 -5438.15 51400.0 NULL 4.81032805E8 200.0 27.611 29.0 NULL -1969-12-31 15:59:53.713 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL 1.508970806E9 200.0 -9.389 -8.0 NULL -1969-12-31 15:59:46.915 -200.0 NULL NULL -25.0 200.0 -5438.15 51400.0 NULL -2.002317756E9 200.0 23.611 25.0 NULL -1969-12-31 15:59:46.506 -200.0 NULL NULL -51.0 200.0 -5438.15 51400.0 NULL 5.7827439E7 200.0 49.611 51.0 NULL -1969-12-31 15:59:51.884 -200.0 NULL NULL 55.0 200.0 -5438.15 51400.0 NULL 3.91675386E8 200.0 -56.389 -55.0 NULL -1969-12-31 15:59:48.188 -200.0 NULL NULL 18.0 200.0 -5438.15 51400.0 NULL -8.34070059E8 200.0 -19.389 -18.0 NULL -1969-12-31 15:59:52.482 -200.0 NULL NULL 1.0 200.0 -5438.15 51400.0 NULL -6.09104632E8 200.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:45.198 -200.0 NULL NULL 47.0 200.0 -5438.15 51400.0 NULL 3.26580252E8 200.0 -48.389 -47.0 NULL -1969-12-31 15:59:57.21 -200.0 NULL NULL -42.0 200.0 -5438.15 51400.0 NULL 7.00255117E8 200.0 40.611 42.0 NULL -1969-12-31 15:59:45.517 -200.0 NULL NULL 13.0 200.0 -5438.15 51400.0 NULL 5.22220086E8 200.0 -14.389 -13.0 NULL -1969-12-31 15:59:50.074 -200.0 NULL NULL -40.0 200.0 -5438.15 51400.0 NULL 2.47086075E8 200.0 38.611 40.0 NULL -1969-12-31 15:59:52.343 -200.0 NULL NULL -16.0 200.0 -5438.15 51400.0 NULL 3.09905538E8 200.0 14.611 16.0 NULL -1969-12-31 15:59:45.082 -200.0 NULL NULL 32.0 200.0 -5438.15 51400.0 NULL 5.60864311E8 200.0 -33.389 -32.0 NULL -1969-12-31 15:59:49.554 -200.0 NULL NULL -58.0 200.0 -5438.15 51400.0 NULL -1.904774124E9 200.0 56.611 58.0 NULL -1969-12-31 15:59:48.663 -200.0 NULL NULL 26.0 200.0 -5438.15 51400.0 NULL 8.2731487E8 200.0 -27.389 -26.0 NULL -1969-12-31 15:59:54.562 -200.0 NULL NULL 58.0 200.0 -5438.15 51400.0 NULL -6.4914347E8 200.0 -59.389 -58.0 NULL -1969-12-31 15:59:51.882 -200.0 NULL NULL -35.0 200.0 -5438.15 51400.0 NULL -5.72971145E8 200.0 33.611 35.0 NULL -1969-12-31 15:59:53.28 -200.0 NULL NULL -3.0 200.0 -5438.15 51400.0 NULL -1.413849636E9 200.0 1.611 3.0 NULL -1969-12-31 15:59:54.762 -200.0 NULL NULL 62.0 200.0 -5438.15 51400.0 NULL 1.011458948E9 200.0 -63.389 -62.0 NULL -1969-12-31 15:59:45.97 -200.0 NULL NULL 61.0 200.0 -5438.15 51400.0 NULL 1.333492863E9 200.0 -62.389 -61.0 NULL -1969-12-31 15:59:50.999 -200.0 NULL NULL 22.0 200.0 -5438.15 51400.0 NULL -1.193114776E9 200.0 -23.389 -22.0 NULL -1969-12-31 15:59:53.246 -200.0 NULL NULL -8.0 200.0 -5438.15 51400.0 NULL 3.71982629E8 200.0 6.611 8.0 NULL -1969-12-31 15:59:55.508 -200.0 NULL NULL 31.0 200.0 -5438.15 51400.0 NULL 3.22893823E8 200.0 -32.389 -31.0 NULL -1969-12-31 15:59:51.083 -200.0 NULL NULL -21.0 200.0 -5438.15 51400.0 NULL 1.386823442E9 200.0 19.611 21.0 NULL -1969-12-31 15:59:54.911 -200.0 NULL NULL -39.0 200.0 -5438.15 51400.0 NULL 1.86732987E8 200.0 37.611 39.0 NULL -1969-12-31 15:59:55.829 -200.0 NULL NULL 0.0 200.0 -5438.15 51400.0 NULL -2.29831918E8 200.0 -1.389 -0.0 NULL -1969-12-31 15:59:52.474 -200.0 NULL NULL -31.0 200.0 -5438.15 51400.0 NULL -2.81572963E8 200.0 29.611 31.0 NULL -1969-12-31 15:59:54.955 -200.0 NULL NULL 14.0 200.0 -5438.15 51400.0 NULL -7.14555897E8 200.0 -15.389 -14.0 NULL -1969-12-31 15:59:57.334 -200.0 NULL NULL 33.0 200.0 -5438.15 51400.0 NULL -1.10470445E9 200.0 -34.389 -33.0 NULL -1969-12-31 15:59:57.524 -200.0 NULL NULL 33.0 200.0 -5438.15 51400.0 NULL -1.336805662E9 200.0 -34.389 -33.0 NULL -1969-12-31 15:59:50.306 -200.0 NULL NULL 59.0 200.0 -5438.15 51400.0 NULL 7.71123894E8 200.0 -60.389 -59.0 NULL -1969-12-31 15:59:45.372 -200.0 NULL NULL -18.0 200.0 -5438.15 51400.0 NULL -7.1979911E7 200.0 16.611 18.0 NULL -1969-12-31 15:59:49.383 -200.0 NULL NULL -43.0 200.0 -5438.15 51400.0 NULL -1.17758475E9 200.0 41.611 43.0 NULL -1969-12-31 15:59:55.241 -200.0 NULL NULL 46.0 200.0 -5438.15 51400.0 NULL -1.70158316E8 200.0 -47.389 -46.0 NULL -1969-12-31 15:59:44.904 -200.0 NULL NULL 0.0 200.0 -5438.15 51400.0 NULL 2.144209809E9 200.0 -1.389 -0.0 NULL -1969-12-31 15:59:54.883 -200.0 NULL NULL -15.0 200.0 -5438.15 51400.0 NULL -1.41196435E9 200.0 13.611 15.0 NULL -1969-12-31 15:59:46.076 -200.0 NULL NULL 9.0 200.0 -5438.15 51400.0 NULL -1.578105724E9 200.0 -10.389 -9.0 NULL -1969-12-31 15:59:57.027 -200.0 NULL NULL -39.0 200.0 -5438.15 51400.0 NULL 1.034473952E9 200.0 37.611 39.0 NULL -1969-12-31 15:59:56.796 -200.0 NULL NULL 17.0 200.0 -5438.15 51400.0 NULL -6.7513143E7 200.0 -18.389 -17.0 NULL -1969-12-31 15:59:43.676 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL 8.34296111E8 200.0 8.611 10.0 NULL -1969-12-31 15:59:55.491 -200.0 NULL NULL 50.0 200.0 -5438.15 51400.0 NULL 8.20068305E8 200.0 -51.389 -50.0 NULL -1969-12-31 15:59:52.431 -200.0 NULL NULL -30.0 200.0 -5438.15 51400.0 NULL -1.23509982E9 200.0 28.611 30.0 NULL -1969-12-31 15:59:53.671 -200.0 NULL NULL 52.0 200.0 -5438.15 51400.0 NULL 6.43105482E8 200.0 -53.389 -52.0 NULL -1969-12-31 15:59:55.382 -200.0 NULL NULL 18.0 200.0 -5438.15 51400.0 NULL -1.505775446E9 200.0 -19.389 -18.0 NULL -1969-12-31 15:59:56.218 -200.0 NULL NULL -4.0 200.0 -5438.15 51400.0 NULL 9.64506412E8 200.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:43.983 -200.0 NULL NULL 9.0 200.0 -5438.15 51400.0 NULL 1.928524094E9 200.0 -10.389 -9.0 NULL -1969-12-31 15:59:44.671 -200.0 NULL NULL 47.0 200.0 -5438.15 51400.0 NULL 6.5009221E8 200.0 -48.389 -47.0 NULL -1969-12-31 15:59:50.521 -200.0 NULL NULL 19.0 200.0 -5438.15 51400.0 NULL 1.514245478E9 200.0 -20.389 -19.0 NULL -1969-12-31 15:59:57.081 -200.0 NULL NULL 10.0 200.0 -5438.15 51400.0 NULL -1.731141267E9 200.0 -11.389 -10.0 NULL -1969-12-31 15:59:54.471 -200.0 NULL NULL 4.0 200.0 -5438.15 51400.0 NULL 2.96811722E8 200.0 -5.389 -4.0 NULL -1969-12-31 15:59:52.118 -200.0 NULL NULL 47.0 200.0 -5438.15 51400.0 NULL 1.683928579E9 200.0 -48.389 -47.0 NULL -1969-12-31 15:59:50.023 -200.0 NULL NULL -43.0 200.0 -5438.15 51400.0 NULL -1.184912804E9 200.0 41.611 43.0 NULL -1969-12-31 15:59:58.416 -200.0 NULL NULL 2.0 200.0 -5438.15 51400.0 NULL -5.16985052E8 200.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:51.77 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL 8.35190085E8 200.0 -39.389 -38.0 NULL -1969-12-31 15:59:48.97 -200.0 NULL NULL -63.0 200.0 -5438.15 51400.0 NULL 5.07317926E8 200.0 61.611 63.0 NULL -1969-12-31 15:59:44.101 -200.0 NULL NULL 30.0 200.0 -5438.15 51400.0 NULL -6.86795769E8 200.0 -31.389 -30.0 NULL -1969-12-31 15:59:58.112 -200.0 NULL NULL -54.0 200.0 -5438.15 51400.0 NULL 3.6476384E8 200.0 52.611 54.0 NULL -1969-12-31 15:59:48.586 -200.0 NULL NULL -20.0 200.0 -5438.15 51400.0 NULL -3.04357989E8 200.0 18.611 20.0 NULL -1969-12-31 15:59:58.272 -200.0 NULL NULL 7.0 200.0 -5438.15 51400.0 NULL 1.986428163E9 200.0 -8.389 -7.0 NULL -1969-12-31 15:59:54.731 -200.0 NULL NULL -8.0 200.0 -5438.15 51400.0 NULL 5.08093812E8 200.0 6.611 8.0 NULL -1969-12-31 15:59:54.69 -200.0 NULL NULL -58.0 200.0 -5438.15 51400.0 NULL 8.3601606E8 200.0 56.611 58.0 NULL -1969-12-31 15:59:56.436 -200.0 NULL NULL -33.0 200.0 -5438.15 51400.0 NULL 2.046441811E9 200.0 31.611 33.0 NULL -1969-12-31 15:59:58.892 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL -1.086650005E9 200.0 8.611 10.0 NULL -1969-12-31 15:59:46.633 -200.0 NULL NULL -62.0 200.0 -5438.15 51400.0 NULL -1.67812432E8 200.0 60.611 62.0 NULL -1969-12-31 15:59:58.93 -200.0 NULL NULL 2.0 200.0 -5438.15 51400.0 NULL 7.80442699E8 200.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:56.159 -200.0 NULL NULL -49.0 200.0 -5438.15 51400.0 NULL 1.436496835E9 200.0 47.611 49.0 NULL -1969-12-31 15:59:48.139 -200.0 NULL NULL 7.0 200.0 -5438.15 51400.0 NULL 8.14832609E8 200.0 -8.389 -7.0 NULL -1969-12-31 15:59:48.785 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL 1.356532937E9 200.0 -9.389 -8.0 NULL -1969-12-31 15:59:45.163 -200.0 NULL NULL 33.0 200.0 -5438.15 51400.0 NULL 7.66974326E8 200.0 -34.389 -33.0 NULL -1969-12-31 15:59:48.16 -200.0 NULL NULL 17.0 200.0 -5438.15 51400.0 NULL -3.95589555E8 200.0 -18.389 -17.0 NULL -1969-12-31 15:59:47.922 -200.0 NULL NULL 2.0 200.0 -5438.15 51400.0 NULL -3.43230779E8 200.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:56.795 -200.0 NULL NULL 28.0 200.0 -5438.15 51400.0 NULL 8.52198265E8 200.0 -29.389 -28.0 NULL -1969-12-31 15:59:51.387 -200.0 NULL NULL 41.0 200.0 -5438.15 51400.0 NULL 6.89333515E8 200.0 -42.389 -41.0 NULL -1969-12-31 15:59:52.669 -200.0 NULL NULL -44.0 200.0 -5438.15 51400.0 NULL -4.58594967E8 200.0 42.611 44.0 NULL -1969-12-31 15:59:51.76 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL -1.859319901E9 200.0 8.611 10.0 NULL -1969-12-31 15:59:44.008 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL -5.73654793E8 200.0 8.611 10.0 NULL -1969-12-31 15:59:44.221 -200.0 NULL NULL -9.0 200.0 -5438.15 51400.0 NULL 1.37182656E9 200.0 7.611 9.0 NULL -1969-12-31 15:59:48.182 -200.0 NULL NULL -20.0 200.0 -5438.15 51400.0 NULL 1.406877765E9 200.0 18.611 20.0 NULL -1969-12-31 15:59:51.063 -200.0 NULL NULL 58.0 200.0 -5438.15 51400.0 NULL -4.32104822E8 200.0 -59.389 -58.0 NULL -1969-12-31 15:59:48.763 -200.0 NULL NULL -8.0 200.0 -5438.15 51400.0 NULL 1.471734224E9 200.0 6.611 8.0 NULL -1969-12-31 15:59:43.628 -200.0 NULL NULL 23.0 200.0 -5438.15 51400.0 NULL 2.034056161E9 200.0 -24.389 -23.0 NULL -1969-12-31 15:59:50.681 -200.0 NULL NULL -58.0 200.0 -5438.15 51400.0 NULL -2.2464108E7 200.0 56.611 58.0 NULL -1969-12-31 15:59:58.989 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL 4.75712607E8 200.0 8.611 10.0 NULL -1969-12-31 15:59:54.657 -200.0 NULL NULL -26.0 200.0 -5438.15 51400.0 NULL -9.24585311E8 200.0 24.611 26.0 NULL -1969-12-31 15:59:43.891 -200.0 NULL NULL 15.0 200.0 -5438.15 51400.0 NULL -8.80413921E8 200.0 -16.389 -15.0 NULL -1969-12-31 15:59:48.292 -200.0 NULL NULL 42.0 200.0 -5438.15 51400.0 NULL 7.60034397E8 200.0 -43.389 -42.0 NULL -1969-12-31 15:59:48.997 -200.0 NULL NULL 39.0 200.0 -5438.15 51400.0 NULL -5.29852171E8 200.0 -40.389 -39.0 NULL -1969-12-31 15:59:55.874 -200.0 NULL NULL 57.0 200.0 -5438.15 51400.0 NULL -1.166575738E9 200.0 -58.389 -57.0 NULL -1969-12-31 15:59:57.693 -200.0 NULL NULL -63.0 200.0 -5438.15 51400.0 NULL 9.56381149E8 200.0 61.611 63.0 NULL -1969-12-31 15:59:58.957 -200.0 NULL NULL 49.0 200.0 -5438.15 51400.0 NULL -1.811428485E9 200.0 -50.389 -49.0 NULL -1969-12-31 15:59:44.04 -200.0 NULL NULL 32.0 200.0 -5438.15 51400.0 NULL -2.57169255E8 200.0 -33.389 -32.0 NULL -1969-12-31 15:59:57.256 -200.0 NULL NULL -48.0 200.0 -5438.15 51400.0 NULL 1.126672777E9 200.0 46.611 48.0 NULL -1969-12-31 15:59:45.739 -200.0 NULL NULL -60.0 200.0 -5438.15 51400.0 NULL -1.690528781E9 200.0 58.611 60.0 NULL -1969-12-31 15:59:56.197 -200.0 NULL NULL -42.0 200.0 -5438.15 51400.0 NULL 1.157618285E9 200.0 40.611 42.0 NULL -1969-12-31 15:59:43.783 -200.0 NULL NULL -11.0 200.0 -5438.15 51400.0 NULL 1.2116287E7 200.0 9.611 11.0 NULL -1969-12-31 15:59:47.998 -200.0 NULL NULL -38.0 200.0 -5438.15 51400.0 NULL 1.667900495E9 200.0 36.611 38.0 NULL -1969-12-31 15:59:54.072 -200.0 NULL NULL 25.0 200.0 -5438.15 51400.0 NULL 1.405645108E9 200.0 -26.389 -25.0 NULL -1969-12-31 15:59:58.265 -200.0 NULL NULL -8.0 200.0 -5438.15 51400.0 NULL 8.69832355E8 200.0 6.611 8.0 NULL -1969-12-31 15:59:49.986 -200.0 NULL NULL -8.0 200.0 -5438.15 51400.0 NULL -1.515409954E9 200.0 6.611 8.0 NULL -1969-12-31 15:59:54.348 -200.0 NULL NULL 28.0 200.0 -5438.15 51400.0 NULL 2.074965277E9 200.0 -29.389 -28.0 NULL -1969-12-31 15:59:51.852 -200.0 NULL NULL -42.0 200.0 -5438.15 51400.0 NULL 1.40560324E8 200.0 40.611 42.0 NULL -1969-12-31 15:59:47.282 -200.0 NULL NULL 56.0 200.0 -5438.15 51400.0 NULL -1.789568762E9 200.0 -57.389 -56.0 NULL -1969-12-31 15:59:30.929 -200.0 NULL NULL 42.0 200.0 -5438.15 51400.0 NULL -5.78935585E8 200.0 -43.389 -42.0 NULL -1969-12-31 15:59:48.712 -200.0 NULL NULL 12.0 200.0 -5438.15 51400.0 NULL 2.046607851E9 200.0 -13.389 -12.0 NULL -1969-12-31 15:59:44.656 -200.0 NULL NULL -57.0 200.0 -5438.15 51400.0 NULL -5.68830753E8 200.0 55.611 57.0 NULL -1969-12-31 15:59:45.865 -200.0 NULL NULL 34.0 200.0 -5438.15 51400.0 NULL -1.014234587E9 200.0 -35.389 -34.0 NULL -1969-12-31 15:59:57.434 -200.0 NULL NULL 54.0 200.0 -5438.15 51400.0 NULL 1.08834136E8 200.0 -55.389 -54.0 NULL -1969-12-31 15:59:53.694 -200.0 NULL NULL -46.0 200.0 -5438.15 51400.0 NULL -1.338441135E9 200.0 44.611 46.0 NULL -1969-12-31 15:59:54.446 -200.0 NULL NULL -51.0 200.0 -5438.15 51400.0 NULL -1.87314238E9 200.0 49.611 51.0 NULL -1969-12-31 15:59:45.299 -200.0 NULL NULL 14.0 200.0 -5438.15 51400.0 NULL -6.5343952E8 200.0 -15.389 -14.0 NULL -1969-12-31 15:59:55.423 -200.0 NULL NULL -51.0 200.0 -5438.15 51400.0 NULL 3.16202689E8 200.0 49.611 51.0 NULL -1969-12-31 15:59:52.269 -200.0 NULL NULL -33.0 200.0 -5438.15 51400.0 NULL -1.888871461E9 200.0 31.611 33.0 NULL -1969-12-31 15:59:52.815 -200.0 NULL NULL -52.0 200.0 -5438.15 51400.0 NULL 2.016875507E9 200.0 50.611 52.0 NULL -1969-12-31 15:59:51.845 -200.0 NULL NULL -27.0 200.0 -5438.15 51400.0 NULL -8.74775633E8 200.0 25.611 27.0 NULL -1969-12-31 15:59:48.662 -200.0 NULL NULL -26.0 200.0 -5438.15 51400.0 NULL -1.820077102E9 200.0 24.611 26.0 NULL -1969-12-31 15:59:45.229 -200.0 NULL NULL 39.0 200.0 -5438.15 51400.0 NULL 1.564077367E9 200.0 -40.389 -39.0 NULL -1969-12-31 15:59:53.886 -200.0 NULL NULL 54.0 200.0 -5438.15 51400.0 NULL 1.838082389E9 200.0 -55.389 -54.0 NULL -1969-12-31 15:59:44.078 -200.0 NULL NULL 19.0 200.0 -5438.15 51400.0 NULL 1.503250697E9 200.0 -20.389 -19.0 NULL -1969-12-31 15:59:53.255 -200.0 NULL NULL 7.0 200.0 -5438.15 51400.0 NULL 1.45875675E8 200.0 -8.389 -7.0 NULL -1969-12-31 15:59:51.882 -200.0 NULL NULL 35.0 200.0 -5438.15 51400.0 NULL 1.045814382E9 200.0 -36.389 -35.0 NULL -1969-12-31 15:59:56.276 -200.0 NULL NULL -60.0 200.0 -5438.15 51400.0 NULL 1.590458706E9 200.0 58.611 60.0 NULL -1969-12-31 15:59:47.233 -200.0 NULL NULL -50.0 200.0 -5438.15 51400.0 NULL 8.24529548E8 200.0 48.611 50.0 NULL -1969-12-31 15:59:49.762 -200.0 NULL NULL -43.0 200.0 -5438.15 51400.0 NULL 4.08511579E8 200.0 41.611 43.0 NULL -1969-12-31 15:59:56.691 -200.0 NULL NULL 41.0 200.0 -5438.15 51400.0 NULL 1.642331717E9 200.0 -42.389 -41.0 NULL -1969-12-31 15:59:44.148 -200.0 NULL NULL -59.0 200.0 -5438.15 51400.0 NULL -6.39531171E8 200.0 57.611 59.0 NULL -1969-12-31 15:59:46.045 -200.0 NULL NULL 14.0 200.0 -5438.15 51400.0 NULL 1.66002585E8 200.0 -15.389 -14.0 NULL -1969-12-31 15:59:46.022 -200.0 NULL NULL 19.0 200.0 -5438.15 51400.0 NULL 1.911972224E9 200.0 -20.389 -19.0 NULL -1969-12-31 15:59:55.008 -200.0 NULL NULL 23.0 200.0 -5438.15 51400.0 NULL 1.257490374E9 200.0 -24.389 -23.0 NULL -1969-12-31 15:59:49.198 -200.0 NULL NULL -9.0 200.0 -5438.15 51400.0 NULL 1.383285444E9 200.0 7.611 9.0 NULL -1969-12-31 15:59:44.138 -200.0 NULL NULL 34.0 200.0 -5438.15 51400.0 NULL -1.723056293E9 200.0 -35.389 -34.0 NULL -1969-12-31 15:59:52.833 -200.0 NULL NULL -57.0 200.0 -5438.15 51400.0 NULL 6.88495143E8 200.0 55.611 57.0 NULL -1969-12-31 15:59:54.584 -200.0 NULL NULL -22.0 200.0 -5438.15 51400.0 NULL 1.322102137E9 200.0 20.611 22.0 NULL -1969-12-31 15:59:51.867 -200.0 NULL NULL -28.0 200.0 -5438.15 51400.0 NULL 7.06928117E8 200.0 26.611 28.0 NULL -1969-12-31 15:59:47.92 -200.0 NULL NULL 36.0 200.0 -5438.15 51400.0 NULL -2.020926616E9 200.0 -37.389 -36.0 NULL -1969-12-31 15:59:50.893 -200.0 NULL NULL 43.0 200.0 -5438.15 51400.0 NULL 1.796171494E9 200.0 -44.389 -43.0 NULL -1969-12-31 15:59:46.727 -200.0 NULL NULL -26.0 200.0 -5438.15 51400.0 NULL 4.7748866E8 200.0 24.611 26.0 NULL -1969-12-31 15:59:58.44 -200.0 NULL NULL 31.0 200.0 -5438.15 51400.0 NULL -7.42095171E8 200.0 -32.389 -31.0 NULL -1969-12-31 15:59:48.406 -200.0 NULL NULL 46.0 200.0 -5438.15 51400.0 NULL 1.457394945E9 200.0 -47.389 -46.0 NULL -1969-12-31 15:59:48.133 -200.0 NULL NULL -16.0 200.0 -5438.15 51400.0 NULL -1.056161746E9 200.0 14.611 16.0 NULL -1969-12-31 15:59:56.197 -200.0 NULL NULL -26.28 200.0 -5438.15 51400.0 NULL -1.899525604E9 200.0 24.89100068664551 26.28 NULL -1969-12-31 15:59:49.881 -200.0 NULL NULL 45.0 200.0 -5438.15 51400.0 NULL 8.77201646E8 200.0 -46.389 -45.0 NULL -1969-12-31 15:59:54.004 -200.0 NULL NULL -15.0 200.0 -5438.15 51400.0 NULL -5.41559561E8 200.0 13.611 15.0 NULL -1969-12-31 15:59:56.477 -200.0 NULL NULL -47.0 200.0 -5438.15 51400.0 NULL 1.593306E7 200.0 45.611 47.0 NULL -1969-12-31 15:59:48.171 -200.0 NULL NULL -13.0 200.0 -5438.15 51400.0 NULL 9.01571239E8 200.0 11.611 13.0 NULL -1969-12-31 15:59:58.897 -200.0 NULL NULL -27.0 200.0 -5438.15 51400.0 NULL -1.35811001E8 200.0 25.611 27.0 NULL -1969-12-31 15:59:46.525 -200.0 NULL NULL 13.0 200.0 -5438.15 51400.0 NULL -1.069199691E9 200.0 -14.389 -13.0 NULL -1969-12-31 15:59:56.929 -200.0 NULL NULL 61.0 200.0 -5438.15 51400.0 NULL 1.198240464E9 200.0 -62.389 -61.0 NULL -1969-12-31 15:59:51.66 -200.0 NULL NULL 33.0 200.0 -5438.15 51400.0 NULL -1.537502493E9 200.0 -34.389 -33.0 NULL -1969-12-31 15:59:50.052 -200.0 NULL NULL -48.0 200.0 -5438.15 51400.0 NULL 2.67944736E8 200.0 46.611 48.0 NULL -1969-12-31 15:59:45.574 -200.0 NULL NULL 41.0 200.0 -5438.15 51400.0 NULL -2.080163991E9 200.0 -42.389 -41.0 NULL -1969-12-31 15:59:55.433 -200.0 NULL NULL -34.0 200.0 -5438.15 51400.0 NULL 2.084858585E9 200.0 32.611 34.0 NULL -1969-12-31 15:59:45.699 -200.0 NULL NULL -42.0 200.0 -5438.15 51400.0 NULL -1.126241299E9 200.0 40.611 42.0 NULL -1969-12-31 15:59:58.654 -200.0 NULL NULL 26.0 200.0 -5438.15 51400.0 NULL -1.384566696E9 200.0 -27.389 -26.0 NULL -1969-12-31 15:59:45.546 -200.0 NULL NULL 43.0 200.0 -5438.15 51400.0 NULL 3.13485094E8 200.0 -44.389 -43.0 NULL -1969-12-31 15:59:54.187 -200.0 NULL NULL -45.0 200.0 -5438.15 51400.0 NULL 1.421418597E9 200.0 43.611 45.0 NULL -1969-12-31 15:59:53.034 -200.0 NULL NULL 7.0 200.0 -5438.15 51400.0 NULL 5.14569496E8 200.0 -8.389 -7.0 NULL -1969-12-31 15:59:55.799 -200.0 NULL NULL 19.0 200.0 -5438.15 51400.0 NULL 7.51099988E8 200.0 -20.389 -19.0 NULL -1969-12-31 15:59:56.085 -200.0 NULL NULL -27.0 200.0 -5438.15 51400.0 NULL -4.23629936E8 200.0 25.611 27.0 NULL -1969-12-31 15:59:58.171 -200.0 NULL NULL -27.0 200.0 -5438.15 51400.0 NULL -1.703126676E9 200.0 25.611 27.0 NULL -1969-12-31 15:59:49.053 -200.0 NULL NULL 62.0 200.0 -5438.15 51400.0 NULL 1.277285067E9 200.0 -63.389 -62.0 NULL -1969-12-31 15:59:47.925 -200.0 NULL NULL -23.0 200.0 -5438.15 51400.0 NULL 2.057273014E9 200.0 21.611 23.0 NULL -1969-12-31 15:59:57.965 -200.0 NULL NULL -9.0 200.0 -5438.15 51400.0 NULL 1.095897076E9 200.0 7.611 9.0 NULL -1969-12-31 15:59:51.682 -200.0 NULL NULL 60.0 200.0 -5438.15 51400.0 NULL -1.493892928E9 200.0 -61.389 -60.0 NULL -1969-12-31 15:59:56.345 -200.0 NULL NULL 54.0 200.0 -5438.15 51400.0 NULL 1.756262095E9 200.0 -55.389 -54.0 NULL -1969-12-31 15:59:51.024 -200.0 NULL NULL 55.0 200.0 -5438.15 51400.0 NULL 4522193.0 200.0 -56.389 -55.0 NULL -1969-12-31 15:59:44.081 -200.0 NULL NULL 36.0 200.0 -5438.15 51400.0 NULL -1.267159717E9 200.0 -37.389 -36.0 NULL -1969-12-31 15:59:49.062 -200.0 NULL NULL 41.0 200.0 -5438.15 51400.0 NULL -5.12762393E8 200.0 -42.389 -41.0 NULL -1969-12-31 15:59:52.313 -200.0 NULL NULL 24.0 200.0 -5438.15 51400.0 NULL 1.037704501E9 200.0 -25.389 -24.0 NULL -1969-12-31 15:59:51.413 -200.0 NULL NULL -42.0 200.0 -5438.15 51400.0 NULL -9.13829043E8 200.0 40.611 42.0 NULL -1969-12-31 15:59:48.596 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL 1.54790233E8 200.0 8.611 10.0 NULL -1969-12-31 15:59:56.094 -200.0 NULL NULL -6.0 200.0 -5438.15 51400.0 NULL -5.85807267E8 200.0 4.611 6.0 NULL -1969-12-31 15:59:46.338 -200.0 NULL NULL 62.0 200.0 -5438.15 51400.0 NULL 1.75991422E8 200.0 -63.389 -62.0 NULL -1969-12-31 15:59:46.316 -200.0 NULL NULL -11.0 200.0 -5438.15 51400.0 NULL 2.03654717E8 200.0 9.611 11.0 NULL -1969-12-31 15:59:44.813 -200.0 NULL NULL 14.0 200.0 -5438.15 51400.0 NULL 1.188242378E9 200.0 -15.389 -14.0 NULL -1969-12-31 15:59:45.314 -200.0 NULL NULL 56.0 200.0 -5438.15 51400.0 NULL -2.019609507E9 200.0 -57.389 -56.0 NULL -1969-12-31 15:59:51.377 -200.0 NULL NULL -45.0 200.0 -5438.15 51400.0 NULL -7.99231189E8 200.0 43.611 45.0 NULL -1969-12-31 15:59:50.618 -200.0 NULL NULL -60.0 200.0 -5438.15 51400.0 NULL 9.2784774E8 200.0 58.611 60.0 NULL -1969-12-31 15:59:50.544 -200.0 NULL NULL -4.0 200.0 -5438.15 51400.0 NULL -9.92748648E8 200.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:50.845 -200.0 NULL NULL -7.0 200.0 -5438.15 51400.0 NULL 1.24569751E9 200.0 5.611 7.0 NULL -1969-12-31 15:59:58.158 -200.0 NULL NULL -53.0 200.0 -5438.15 51400.0 NULL 1.905162559E9 200.0 51.611 53.0 NULL -1969-12-31 15:59:45.304 -200.0 NULL NULL -41.0 200.0 -5438.15 51400.0 NULL 1.972218068E9 200.0 39.611 41.0 NULL -1969-12-31 15:59:50.515 -200.0 NULL NULL 45.0 200.0 -5438.15 51400.0 NULL 1.618117291E9 200.0 -46.389 -45.0 NULL -1969-12-31 15:59:45.153 -200.0 NULL NULL 42.0 200.0 -5438.15 51400.0 NULL -1.800642655E9 200.0 -43.389 -42.0 NULL -1969-12-31 15:59:50.398 -200.0 NULL NULL -43.0 200.0 -5438.15 51400.0 NULL 989088.0 200.0 41.611 43.0 NULL -1969-12-31 15:59:49.936 15601.0 NULL NULL -10.0 -15601.0 -21239.15 -4009457.0 NULL -1.160443612E9 -15601.0 8.611 10.0 NULL -1969-12-31 15:59:30.929 15601.0 NULL NULL -54.0 -15601.0 -21239.15 -4009457.0 NULL -1.114185408E9 -15601.0 52.611 54.0 NULL -1969-12-31 15:59:50.754 15601.0 NULL NULL 49.0 -15601.0 -21239.15 -4009457.0 NULL 4.669108E7 -15601.0 -50.389 -49.0 NULL -1969-12-31 15:59:52.786 15601.0 NULL NULL -1.0 -15601.0 -21239.15 -4009457.0 NULL 6.7249676E8 -15601.0 -0.389 1.0 NULL -1969-12-31 15:59:47.476 15601.0 NULL NULL 44.0 -15601.0 -21239.15 -4009457.0 NULL -2.098316067E9 -15601.0 -45.389 -44.0 NULL -1969-12-31 15:59:44.816 15601.0 NULL NULL 15.0 -15601.0 -21239.15 -4009457.0 NULL 1.860712685E9 -15601.0 -16.389 -15.0 NULL -1969-12-31 15:59:58.279 15601.0 NULL NULL -58.0 -15601.0 -21239.15 -4009457.0 NULL 2.144258747E9 -15601.0 56.611 58.0 NULL -1969-12-31 15:59:50.435 15601.0 NULL NULL -55.0 -15601.0 -21239.15 -4009457.0 NULL 1.958857562E9 -15601.0 53.611 55.0 NULL -1969-12-31 15:59:54.135 15601.0 NULL NULL -20.0 -15601.0 -21239.15 -4009457.0 NULL -1.914536175E9 -15601.0 18.611 20.0 NULL -1969-12-31 15:59:51.805 15601.0 NULL NULL -35.0 -15601.0 -21239.15 -4009457.0 NULL 1.326385977E9 -15601.0 33.611 35.0 NULL -1969-12-31 15:59:46.504 15601.0 NULL NULL -26.0 -15601.0 -21239.15 -4009457.0 NULL 2.102376574E9 -15601.0 24.611 26.0 NULL -1969-12-31 15:59:47.621 15601.0 NULL NULL -12.0 -15601.0 -21239.15 -4009457.0 NULL 1.053988521E9 -15601.0 10.611 12.0 NULL -1969-12-31 15:59:51.444 15601.0 NULL NULL 30.0 -15601.0 -21239.15 -4009457.0 NULL -1.399154209E9 -15601.0 -31.389 -30.0 NULL -1969-12-31 15:59:45.686 15601.0 NULL NULL 42.0 -15601.0 -21239.15 -4009457.0 NULL 1.273884852E9 -15601.0 -43.389 -42.0 NULL -1969-12-31 15:59:48.045 15601.0 NULL NULL 40.0 -15601.0 -21239.15 -4009457.0 NULL 3.64096618E8 -15601.0 -41.389 -40.0 NULL -1969-12-31 15:59:54.026 15601.0 NULL NULL 8.0 -15601.0 -21239.15 -4009457.0 NULL -6.71535208E8 -15601.0 -9.389 -8.0 NULL -1969-12-31 15:59:55.483 15601.0 NULL NULL -48.0 -15601.0 -21239.15 -4009457.0 NULL -1.228432993E9 -15601.0 46.611 48.0 NULL -1969-12-31 15:59:57.35 15601.0 NULL NULL 34.0 -15601.0 -21239.15 -4009457.0 NULL -4.61141792E8 -15601.0 -35.389 -34.0 NULL -1969-12-31 15:59:56.128 15601.0 NULL NULL -63.0 -15601.0 -21239.15 -4009457.0 NULL -2.00558202E8 -15601.0 61.611 63.0 NULL -1969-12-31 15:59:46.465 15601.0 NULL NULL -39.0 -15601.0 -21239.15 -4009457.0 NULL -7.75367503E8 -15601.0 37.611 39.0 NULL -1969-12-31 15:59:58.103 15601.0 NULL NULL 0.0 -15601.0 -21239.15 -4009457.0 NULL -1.111856733E9 -15601.0 -1.389 -0.0 NULL -1969-12-31 15:59:50.873 15601.0 NULL NULL -62.0 -15601.0 -21239.15 -4009457.0 NULL 2.81470243E8 -15601.0 60.611 62.0 NULL -1969-12-31 15:59:56.363 15601.0 NULL NULL -39.0 -15601.0 -21239.15 -4009457.0 NULL -6.82734332E8 -15601.0 37.611 39.0 NULL -1969-12-31 15:59:45.129 15601.0 NULL NULL 20.0 -15601.0 -21239.15 -4009457.0 NULL -3.62448851E8 -15601.0 -21.389 -20.0 NULL -1969-12-31 15:59:53.124 15601.0 NULL NULL 5.0 -15601.0 -21239.15 -4009457.0 NULL 1.88000459E8 -15601.0 -6.389 -5.0 NULL -1969-12-31 15:59:54.821 15601.0 NULL NULL 34.0 -15601.0 -21239.15 -4009457.0 NULL 1.736676216E9 -15601.0 -35.389 -34.0 NULL -1969-12-31 15:59:54.334 15601.0 NULL NULL 46.0 -15601.0 -21239.15 -4009457.0 NULL -1.72123705E9 -15601.0 -47.389 -46.0 NULL -1969-12-31 15:59:48.771 15601.0 NULL NULL 36.0 -15601.0 -21239.15 -4009457.0 NULL 5.03553495E8 -15601.0 -37.389 -36.0 NULL -1969-12-31 15:59:46.62 15601.0 NULL NULL -35.0 -15601.0 -21239.15 -4009457.0 NULL -1.000950944E9 -15601.0 33.611 35.0 NULL -1969-12-31 15:59:58.134 15601.0 NULL NULL -24.0 -15601.0 -21239.15 -4009457.0 NULL -4.02208623E8 -15601.0 22.611 24.0 NULL -1969-12-31 15:59:50.916 15601.0 NULL NULL 58.0 -15601.0 -21239.15 -4009457.0 NULL -1.624522302E9 -15601.0 -59.389 -58.0 NULL -1969-12-31 15:59:48.433 15601.0 NULL NULL 53.0 -15601.0 -21239.15 -4009457.0 NULL -1.231042003E9 -15601.0 -54.389 -53.0 NULL -1969-12-31 15:59:50.593 15601.0 NULL NULL -13.0 -15601.0 -21239.15 -4009457.0 NULL 2.061161768E9 -15601.0 11.611 13.0 NULL -1969-12-31 15:59:52.326 15601.0 NULL NULL 2.0 -15601.0 -21239.15 -4009457.0 NULL 4.96207141E8 -15601.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:48.763 15601.0 NULL NULL -29.0 -15601.0 -21239.15 -4009457.0 NULL 1.023291549E9 -15601.0 27.611 29.0 NULL -1969-12-31 15:59:45.484 15601.0 NULL NULL -1.0 -15601.0 -21239.15 -4009457.0 NULL -5.32080646E8 -15601.0 -0.389 1.0 NULL -1969-12-31 15:59:57.102 15601.0 NULL NULL 35.0 -15601.0 -21239.15 -4009457.0 NULL -9.87182122E8 -15601.0 -36.389 -35.0 NULL -1969-12-31 15:59:45.022 15601.0 NULL NULL 0.0 -15601.0 -21239.15 -4009457.0 NULL 1.018180214E9 -15601.0 -1.389 -0.0 NULL -1969-12-31 15:59:57.096 15601.0 NULL NULL 28.0 -15601.0 -21239.15 -4009457.0 NULL 1.781467763E9 -15601.0 -29.389 -28.0 NULL -1969-12-31 15:59:56.481 15601.0 NULL NULL 10.0 -15601.0 -21239.15 -4009457.0 NULL -1.230131423E9 -15601.0 -11.389 -10.0 NULL -1969-12-31 15:59:52.595 15601.0 NULL NULL 62.0 -15601.0 -21239.15 -4009457.0 NULL -1.838148426E9 -15601.0 -63.389 -62.0 NULL -1969-12-31 15:59:56.068 15601.0 NULL NULL 46.0 -15601.0 -21239.15 -4009457.0 NULL -1.99639392E9 -15601.0 -47.389 -46.0 NULL -1969-12-31 15:59:46.4 15601.0 NULL NULL 11.0 -15601.0 -21239.15 -4009457.0 NULL 1.1055115E7 -15601.0 -12.389 -11.0 NULL -1969-12-31 15:59:51.265 15601.0 NULL NULL 59.0 -15601.0 -21239.15 -4009457.0 NULL 1.762440413E9 -15601.0 -60.389 -59.0 NULL -1969-12-31 15:59:47.984 15601.0 NULL NULL 29.0 -15601.0 -21239.15 -4009457.0 NULL 1.956029969E9 -15601.0 -30.389 -29.0 NULL -1969-12-31 15:59:48.304 15601.0 NULL NULL 47.0 -15601.0 -21239.15 -4009457.0 NULL -1.045094668E9 -15601.0 -48.389 -47.0 NULL -1969-12-31 15:59:48.457 15601.0 NULL NULL -32.0 -15601.0 -21239.15 -4009457.0 NULL -2.105160075E9 -15601.0 30.611 32.0 NULL -1969-12-31 15:59:54.285 15601.0 NULL NULL 55.0 -15601.0 -21239.15 -4009457.0 NULL -1.559948041E9 -15601.0 -56.389 -55.0 NULL -1969-12-31 15:59:55.025 15601.0 NULL NULL 0.0 -15601.0 -21239.15 -4009457.0 NULL -9.01279613E8 -15601.0 -1.389 -0.0 NULL -1969-12-31 15:59:46.443 15601.0 NULL NULL -43.0 -15601.0 -21239.15 -4009457.0 NULL -2.23702901E8 -15601.0 41.611 43.0 NULL -1969-12-31 15:59:44.115 15601.0 NULL NULL -20.0 -15601.0 -21239.15 -4009457.0 NULL -2.59008711E8 -15601.0 18.611 20.0 NULL -1969-12-31 15:59:49.896 15601.0 NULL NULL -22.0 -15601.0 -21239.15 -4009457.0 NULL -1.843549845E9 -15601.0 20.611 22.0 NULL -1969-12-31 15:59:52.832 15601.0 NULL NULL 37.0 -15601.0 -21239.15 -4009457.0 NULL 6.76598294E8 -15601.0 -38.389 -37.0 NULL -1969-12-31 15:59:49.711 15601.0 NULL NULL 21.0 -15601.0 -21239.15 -4009457.0 NULL 1.849583823E9 -15601.0 -22.389 -21.0 NULL -1969-12-31 15:59:51.106 15601.0 NULL NULL 30.0 -15601.0 -21239.15 -4009457.0 NULL -1.465978747E9 -15601.0 -31.389 -30.0 NULL -1969-12-31 15:59:44.754 15601.0 NULL NULL 54.0 -15601.0 -21239.15 -4009457.0 NULL 1.825408792E9 -15601.0 -55.389 -54.0 NULL -1969-12-31 15:59:48.561 15601.0 NULL NULL -33.0 -15601.0 -21239.15 -4009457.0 NULL -2.27008802E8 -15601.0 31.611 33.0 NULL -1969-12-31 15:59:44.121 15601.0 NULL NULL -6.0 -15601.0 -21239.15 -4009457.0 NULL 2.81003704E8 -15601.0 4.611 6.0 NULL -1969-12-31 15:59:56.467 15601.0 NULL NULL 27.0 -15601.0 -21239.15 -4009457.0 NULL -6.7687202E7 -15601.0 -28.389 -27.0 NULL -1969-12-31 15:59:48.552 15601.0 NULL NULL 62.0 -15601.0 -21239.15 -4009457.0 NULL -1.488206237E9 -15601.0 -63.389 -62.0 NULL -1969-12-31 15:59:52.964 15601.0 NULL NULL -28.0 -15601.0 -21239.15 -4009457.0 NULL 2.04999046E9 -15601.0 26.611 28.0 NULL -1969-12-31 15:59:58.672 15601.0 NULL NULL 18.0 -15601.0 -21239.15 -4009457.0 NULL -2.044786007E9 -15601.0 -19.389 -18.0 NULL -1969-12-31 15:59:51.104 15601.0 NULL NULL 34.0 -15601.0 -21239.15 -4009457.0 NULL -1.028825198E9 -15601.0 -35.389 -34.0 NULL -1969-12-31 15:59:57.932 15601.0 NULL NULL -43.0 -15601.0 -21239.15 -4009457.0 NULL 5.42456815E8 -15601.0 41.611 43.0 NULL -1969-12-31 15:59:46.33 15601.0 NULL NULL 24.0 -15601.0 -21239.15 -4009457.0 NULL -1.740328085E9 -15601.0 -25.389 -24.0 NULL -1969-12-31 15:59:57.462 15601.0 NULL NULL 35.0 -15601.0 -21239.15 -4009457.0 NULL -7.7712955E8 -15601.0 -36.389 -35.0 NULL -1969-12-31 15:59:52.035 15601.0 NULL NULL 12.0 -15601.0 -21239.15 -4009457.0 NULL 1.295157103E9 -15601.0 -13.389 -12.0 NULL -1969-12-31 15:59:52.069 15601.0 NULL NULL 49.0 -15601.0 -21239.15 -4009457.0 NULL 9.40264683E8 -15601.0 -50.389 -49.0 NULL -1969-12-31 15:59:45.438 15601.0 NULL NULL -41.0 -15601.0 -21239.15 -4009457.0 NULL -1.064452884E9 -15601.0 39.611 41.0 NULL -1969-12-31 15:59:54.987 15601.0 NULL NULL 56.0 -15601.0 -21239.15 -4009457.0 NULL -8.516022E7 -15601.0 -57.389 -56.0 NULL -1969-12-31 15:59:54.286 15601.0 NULL NULL -47.0 -15601.0 -21239.15 -4009457.0 NULL -1.8283872E9 -15601.0 45.611 47.0 NULL -1969-12-31 15:59:50.918 15601.0 NULL NULL -5.0 -15601.0 -21239.15 -4009457.0 NULL 2.86895997E8 -15601.0 3.6109999999999998 5.0 NULL -1969-12-31 15:59:55.418 15601.0 NULL NULL -20.0 -15601.0 -21239.15 -4009457.0 NULL -1.25529884E8 -15601.0 18.611 20.0 NULL -1969-12-31 15:59:56.545 15601.0 NULL NULL -25.0 -15601.0 -21239.15 -4009457.0 NULL 8.82911E8 -15601.0 23.611 25.0 NULL -1969-12-31 15:59:45.655 15601.0 NULL NULL -23.0 -15601.0 -21239.15 -4009457.0 NULL 6.49187017E8 -15601.0 21.611 23.0 NULL -1969-12-31 15:59:45.825 15601.0 NULL NULL 7.0 -15601.0 -21239.15 -4009457.0 NULL -3.35653494E8 -15601.0 -8.389 -7.0 NULL -1969-12-31 15:59:46.953 15601.0 NULL NULL 47.0 -15601.0 -21239.15 -4009457.0 NULL 6.61389306E8 -15601.0 -48.389 -47.0 NULL -1969-12-31 15:59:55.054 15601.0 NULL NULL 48.0 -15601.0 -21239.15 -4009457.0 NULL -5.05195474E8 -15601.0 -49.389 -48.0 NULL -1969-12-31 15:59:54.024 15601.0 NULL NULL 13.0 -15601.0 -21239.15 -4009457.0 NULL 2.089294418E9 -15601.0 -14.389 -13.0 NULL -1969-12-31 15:59:48.429 15601.0 NULL NULL -23.0 -15601.0 -21239.15 -4009457.0 NULL -2.87517647E8 -15601.0 21.611 23.0 NULL -1969-12-31 15:59:44.27 15601.0 NULL NULL 15.0 -15601.0 -21239.15 -4009457.0 NULL 2.106865825E9 -15601.0 -16.389 -15.0 NULL -1969-12-31 15:59:56.385 15601.0 NULL NULL -16.0 -15601.0 -21239.15 -4009457.0 NULL 1.164050804E9 -15601.0 14.611 16.0 NULL -1969-12-31 15:59:45.195 15601.0 NULL NULL -11.0 -15601.0 -21239.15 -4009457.0 NULL -6.55458819E8 -15601.0 9.611 11.0 NULL -1969-12-31 15:59:48.052 15601.0 NULL NULL 15.0 -15601.0 -21239.15 -4009457.0 NULL 1.075556669E9 -15601.0 -16.389 -15.0 NULL -1969-12-31 15:59:48.363 15601.0 NULL NULL 59.0 -15601.0 -21239.15 -4009457.0 NULL 2.109711378E9 -15601.0 -60.389 -59.0 NULL -1969-12-31 15:59:44.304 15601.0 NULL NULL -42.0 -15601.0 -21239.15 -4009457.0 NULL 9.60547897E8 -15601.0 40.611 42.0 NULL -1969-12-31 15:59:50.66 15601.0 NULL NULL 62.0 -15601.0 -21239.15 -4009457.0 NULL -1.20958754E8 -15601.0 -63.389 -62.0 NULL -1969-12-31 15:59:51.596 15601.0 NULL NULL -30.0 -15601.0 -21239.15 -4009457.0 NULL 7.22321178E8 -15601.0 28.611 30.0 NULL -1969-12-31 15:59:48.264 15601.0 NULL NULL 40.0 -15601.0 -21239.15 -4009457.0 NULL 2.088413508E9 -15601.0 -41.389 -40.0 NULL -1969-12-31 15:59:58.465 15601.0 NULL NULL 29.0 -15601.0 -21239.15 -4009457.0 NULL 3.46301739E8 -15601.0 -30.389 -29.0 NULL -1969-12-31 15:59:45.476 15601.0 NULL NULL 28.0 -15601.0 -21239.15 -4009457.0 NULL 1.21444513E9 -15601.0 -29.389 -28.0 NULL -1969-12-31 15:59:54.075 15601.0 NULL NULL -35.0 -15601.0 -21239.15 -4009457.0 NULL 9.99758279E8 -15601.0 33.611 35.0 NULL -1969-12-31 15:59:54.994 15601.0 NULL NULL -1.0 -15601.0 -21239.15 -4009457.0 NULL -4.57794217E8 -15601.0 -0.389 1.0 NULL -1969-12-31 15:59:46.377 15601.0 NULL NULL -34.0 -15601.0 -21239.15 -4009457.0 NULL -6.71964786E8 -15601.0 32.611 34.0 NULL -1969-12-31 15:59:55.989 15601.0 NULL NULL -36.0 -15601.0 -21239.15 -4009457.0 NULL 6.65125262E8 -15601.0 34.611 36.0 NULL -1969-12-31 15:59:49.864 15601.0 NULL NULL 8.0 -15601.0 -21239.15 -4009457.0 NULL 1.990821619E9 -15601.0 -9.389 -8.0 NULL -1969-12-31 15:59:52.617 15601.0 NULL NULL -9.0 -15601.0 -21239.15 -4009457.0 NULL 1.660185896E9 -15601.0 7.611 9.0 NULL -1969-12-31 15:59:44.325 15601.0 NULL NULL 21.0 -15601.0 -21239.15 -4009457.0 NULL 3.48697368E8 -15601.0 -22.389 -21.0 NULL -1969-12-31 15:59:49.331 15601.0 NULL NULL 8.0 -15601.0 -21239.15 -4009457.0 NULL 1.8353377E8 -15601.0 -9.389 -8.0 NULL -1969-12-31 15:59:55.218 15601.0 NULL NULL 36.0 -15601.0 -21239.15 -4009457.0 NULL 4.45332326E8 -15601.0 -37.389 -36.0 NULL -1969-12-31 15:59:57.215 15601.0 NULL NULL 16.0 -15601.0 -21239.15 -4009457.0 NULL 2.125898288E9 -15601.0 -17.389 -16.0 NULL -1969-12-31 15:59:51.813 15601.0 NULL NULL -23.0 -15601.0 -21239.15 -4009457.0 NULL 3.80825014E8 -15601.0 21.611 23.0 NULL -1969-12-31 15:59:47.218 15601.0 NULL NULL -54.0 -15601.0 -21239.15 -4009457.0 NULL -6.4168626E8 -15601.0 52.611 54.0 NULL -1969-12-31 15:59:53.834 15601.0 NULL NULL 38.0 -15601.0 -21239.15 -4009457.0 NULL 9.51430174E8 -15601.0 -39.389 -38.0 NULL -1969-12-31 15:59:56.394 15601.0 NULL NULL 48.0 -15601.0 -21239.15 -4009457.0 NULL 4.00815222E8 -15601.0 -49.389 -48.0 NULL -1969-12-31 15:59:51.829 15601.0 NULL NULL 57.0 -15601.0 -21239.15 -4009457.0 NULL 5.60398549E8 -15601.0 -58.389 -57.0 NULL -1969-12-31 15:59:57.801 15601.0 NULL NULL 23.0 -15601.0 -21239.15 -4009457.0 NULL -9.96181289E8 -15601.0 -24.389 -23.0 NULL -1969-12-31 15:59:45.126 15601.0 NULL NULL -25.0 -15601.0 -21239.15 -4009457.0 NULL 1.813340195E9 -15601.0 23.611 25.0 NULL -1969-12-31 15:59:46.82 15601.0 NULL NULL -46.0 -15601.0 -21239.15 -4009457.0 NULL -2.08947865E8 -15601.0 44.611 46.0 NULL -1969-12-31 15:59:47.134 15601.0 NULL NULL -48.0 -15601.0 -21239.15 -4009457.0 NULL -8.03238529E8 -15601.0 46.611 48.0 NULL -1969-12-31 15:59:45.553 15601.0 NULL NULL 29.0 -15601.0 -21239.15 -4009457.0 NULL 1.674572005E9 -15601.0 -30.389 -29.0 NULL -1969-12-31 15:59:55.762 15601.0 NULL NULL 23.0 -15601.0 -21239.15 -4009457.0 NULL 1.499105456E9 -15601.0 -24.389 -23.0 NULL -1969-12-31 15:59:44.848 15601.0 NULL NULL 7.0 -15601.0 -21239.15 -4009457.0 NULL 8.21703562E8 -15601.0 -8.389 -7.0 NULL -1969-12-31 15:59:51.022 15601.0 NULL NULL -20.0 -15601.0 -21239.15 -4009457.0 NULL -1.293769852E9 -15601.0 18.611 20.0 NULL -1969-12-31 15:59:54.066 15601.0 NULL NULL -63.0 -15601.0 -21239.15 -4009457.0 NULL 2.059183933E9 -15601.0 61.611 63.0 NULL -1969-12-31 15:59:51.833 15601.0 NULL NULL -48.0 -15601.0 -21239.15 -4009457.0 NULL -1.294852602E9 -15601.0 46.611 48.0 NULL -1969-12-31 15:59:45.26 15601.0 NULL NULL 15.0 -15601.0 -21239.15 -4009457.0 NULL NULL -15601.0 -16.389 -15.0 NULL -1969-12-31 15:59:50.821 15601.0 NULL NULL -25.0 -15601.0 -21239.15 -4009457.0 NULL 1.281174307E9 -15601.0 23.611 25.0 NULL -1969-12-31 15:59:57.386 15601.0 NULL NULL 1.0 -15601.0 -21239.15 -4009457.0 NULL 2.54772865E8 -15601.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:54.68 15601.0 NULL NULL 33.0 -15601.0 -21239.15 -4009457.0 NULL 2.094148935E9 -15601.0 -34.389 -33.0 NULL -1969-12-31 15:59:52.612 15601.0 NULL NULL -30.0 -15601.0 -21239.15 -4009457.0 NULL 1.787267875E9 -15601.0 28.611 30.0 NULL -1969-12-31 15:59:46.755 15601.0 NULL NULL 29.0 -15601.0 -21239.15 -4009457.0 NULL 2.52863807E8 -15601.0 -30.389 -29.0 NULL -1969-12-31 15:59:54.705 15601.0 NULL NULL -14.0 -15601.0 -21239.15 -4009457.0 NULL 1.892511582E9 -15601.0 12.611 14.0 NULL -1969-12-31 15:59:49.517 15601.0 NULL NULL -25.0 -15601.0 -21239.15 -4009457.0 NULL -8.92999244E8 -15601.0 23.611 25.0 NULL -1969-12-31 15:59:45.717 15601.0 NULL NULL 34.0 -15601.0 -21239.15 -4009457.0 NULL 1.425472484E9 -15601.0 -35.389 -34.0 NULL -1969-12-31 15:59:48.028 15601.0 NULL NULL -18.0 -15601.0 -21239.15 -4009457.0 NULL -1.31093788E9 -15601.0 16.611 18.0 NULL -1969-12-31 15:59:48.902 15601.0 NULL NULL 34.0 -15601.0 -21239.15 -4009457.0 NULL -1.954273935E9 -15601.0 -35.389 -34.0 NULL -1969-12-31 15:59:45.673 15601.0 NULL NULL -61.0 -15601.0 -21239.15 -4009457.0 NULL 9.19923553E8 -15601.0 59.611 61.0 NULL -1969-12-31 15:59:48.747 15601.0 NULL NULL -13.0 -15601.0 -21239.15 -4009457.0 NULL 3.77418876E8 -15601.0 11.611 13.0 NULL -1969-12-31 15:59:47.511 15601.0 NULL NULL -55.0 -15601.0 -21239.15 -4009457.0 NULL 1.850907391E9 -15601.0 53.611 55.0 NULL -1969-12-31 15:59:57.729 15601.0 NULL NULL 30.0 -15601.0 -21239.15 -4009457.0 NULL -1.986769641E9 -15601.0 -31.389 -30.0 NULL -1969-12-31 15:59:57.696 15601.0 NULL NULL -43.0 -15601.0 -21239.15 -4009457.0 NULL 1.008694886E9 -15601.0 41.611 43.0 NULL -1969-12-31 15:59:58.061 15601.0 NULL NULL 5.0 -15601.0 -21239.15 -4009457.0 NULL -1.668702847E9 -15601.0 -6.389 -5.0 NULL -1969-12-31 15:59:54.746 15601.0 NULL NULL -24.0 -15601.0 -21239.15 -4009457.0 NULL 1.665926826E9 -15601.0 22.611 24.0 NULL -1969-12-31 15:59:57.765 15601.0 NULL NULL -2.0 -15601.0 -21239.15 -4009457.0 NULL -6.4527647E7 -15601.0 0.611 2.0 NULL -1969-12-31 15:59:52.902 15601.0 NULL NULL -21.0 -15601.0 -21239.15 -4009457.0 NULL 4.41738721E8 -15601.0 19.611 21.0 NULL -1969-12-31 15:59:58.422 15601.0 NULL NULL 15.0 -15601.0 -21239.15 -4009457.0 NULL 2.7421053E8 -15601.0 -16.389 -15.0 NULL -1969-12-31 15:59:52.409 15601.0 NULL NULL -56.0 -15601.0 -21239.15 -4009457.0 NULL 1.440673975E9 -15601.0 54.611 56.0 NULL -1969-12-31 15:59:50.277 15601.0 NULL NULL -24.0 -15601.0 -21239.15 -4009457.0 NULL -2.14215189E8 -15601.0 22.611 24.0 NULL -1969-12-31 15:59:50.575 15601.0 NULL NULL 29.0 -15601.0 -21239.15 -4009457.0 NULL -2.21054951E8 -15601.0 -30.389 -29.0 NULL -1969-12-31 15:59:49.244 15601.0 NULL NULL -40.0 -15601.0 -21239.15 -4009457.0 NULL 8.4278826E7 -15601.0 38.611 40.0 NULL -1969-12-31 15:59:53.233 15601.0 NULL NULL 24.0 -15601.0 -21239.15 -4009457.0 NULL 1.8457717E8 -15601.0 -25.389 -24.0 NULL -1969-12-31 15:59:51.108 15601.0 NULL NULL 9.0 -15601.0 -21239.15 -4009457.0 NULL -2.093487629E9 -15601.0 -10.389 -9.0 NULL -1969-12-31 15:59:56.858 15601.0 NULL NULL 38.0 -15601.0 -21239.15 -4009457.0 NULL 9.54024744E8 -15601.0 -39.389 -38.0 NULL -1969-12-31 15:59:46.716 15601.0 NULL NULL 1.0 -15601.0 -21239.15 -4009457.0 NULL -1.025803657E9 -15601.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:43.992 15601.0 NULL NULL -52.0 -15601.0 -21239.15 -4009457.0 NULL -2.097305303E9 -15601.0 50.611 52.0 NULL -1969-12-31 15:59:54.097 15601.0 NULL NULL -5.0 -15601.0 -21239.15 -4009457.0 NULL -1.844076159E9 -15601.0 3.6109999999999998 5.0 NULL -1969-12-31 15:59:50.48 15601.0 NULL NULL -33.0 -15601.0 -21239.15 -4009457.0 NULL 2.73963712E8 -15601.0 31.611 33.0 NULL -1969-12-31 15:59:58.752 15601.0 NULL NULL 36.0 -15601.0 -21239.15 -4009457.0 NULL 4742014.0 -15601.0 -37.389 -36.0 NULL -1969-12-31 15:59:48.857 15601.0 NULL NULL -16.0 -15601.0 -21239.15 -4009457.0 NULL 9.15172499E8 -15601.0 14.611 16.0 NULL -1969-12-31 15:59:56.277 15601.0 NULL NULL -51.0 -15601.0 -21239.15 -4009457.0 NULL 1.588618082E9 -15601.0 49.611 51.0 NULL -1969-12-31 15:59:51.994 15601.0 NULL NULL -15.0 -15601.0 -21239.15 -4009457.0 NULL -9.37286021E8 -15601.0 13.611 15.0 NULL -1969-12-31 15:59:55.681 15601.0 NULL NULL 53.0 -15601.0 -21239.15 -4009457.0 NULL -7.82873003E8 -15601.0 -54.389 -53.0 NULL -1969-12-31 15:59:52.496 15601.0 NULL NULL 15.0 -15601.0 -21239.15 -4009457.0 NULL 1.47901073E8 -15601.0 -16.389 -15.0 NULL -1969-12-31 15:59:54.345 15601.0 NULL NULL -48.0 -15601.0 -21239.15 -4009457.0 NULL 2.080574936E9 -15601.0 46.611 48.0 NULL -1969-12-31 15:59:46.978 15601.0 NULL NULL -20.0 -15601.0 -21239.15 -4009457.0 NULL -8.8036541E7 -15601.0 18.611 20.0 NULL -1969-12-31 15:59:46.747 15601.0 NULL NULL 54.0 -15601.0 -21239.15 -4009457.0 NULL -1.480003651E9 -15601.0 -55.389 -54.0 NULL -1969-12-31 15:59:48.672 15601.0 NULL NULL -63.0 -15601.0 -21239.15 -4009457.0 NULL -7.21260309E8 -15601.0 61.611 63.0 NULL -1969-12-31 15:59:51.933 15601.0 NULL NULL 27.0 -15601.0 -21239.15 -4009457.0 NULL -1.53510609E9 -15601.0 -28.389 -27.0 NULL -1969-12-31 15:59:55.69 15601.0 NULL NULL -61.0 -15601.0 -21239.15 -4009457.0 NULL -8.54909179E8 -15601.0 59.611 61.0 NULL -1969-12-31 15:59:53.86 15601.0 NULL NULL 30.0 -15601.0 -21239.15 -4009457.0 NULL 1.60572064E8 -15601.0 -31.389 -30.0 NULL -1969-12-31 15:59:45.798 15601.0 NULL NULL 18.0 -15601.0 -21239.15 -4009457.0 NULL -8.6060722E8 -15601.0 -19.389 -18.0 NULL -1969-12-31 15:59:53.584 15601.0 NULL NULL -29.0 -15601.0 -21239.15 -4009457.0 NULL -1.912110017E9 -15601.0 27.611 29.0 NULL -1969-12-31 15:59:53.583 15601.0 NULL NULL -59.0 -15601.0 -21239.15 -4009457.0 NULL 1.36422455E9 -15601.0 57.611 59.0 NULL -1969-12-31 15:59:47.893 15601.0 NULL NULL -45.0 -15601.0 -21239.15 -4009457.0 NULL 5.5993942E7 -15601.0 43.611 45.0 NULL -1969-12-31 15:59:48.222 15601.0 NULL NULL -40.0 -15601.0 -21239.15 -4009457.0 NULL 1.868283802E9 -15601.0 38.611 40.0 NULL -1969-12-31 15:59:56.567 15601.0 NULL NULL 9.0 -15601.0 -21239.15 -4009457.0 NULL -1.145504644E9 -15601.0 -10.389 -9.0 NULL -1969-12-31 15:59:46.258 15601.0 NULL NULL -26.0 -15601.0 -21239.15 -4009457.0 NULL 1.351227771E9 -15601.0 24.611 26.0 NULL -1969-12-31 15:59:58.614 15601.0 NULL NULL -38.0 -15601.0 -21239.15 -4009457.0 NULL -1.858704601E9 -15601.0 36.611 38.0 NULL -1969-12-31 15:59:57.319 15601.0 NULL NULL 42.0 -15601.0 -21239.15 -4009457.0 NULL 1.756889028E9 -15601.0 -43.389 -42.0 NULL -1969-12-31 15:59:58.705 15601.0 NULL NULL 40.0 -15601.0 -21239.15 -4009457.0 NULL -5.15873084E8 -15601.0 -41.389 -40.0 NULL -1969-12-31 15:59:46.106 15601.0 NULL NULL -62.0 -15601.0 -21239.15 -4009457.0 NULL -1.592031721E9 -15601.0 60.611 62.0 NULL -1969-12-31 15:59:52.157 15601.0 NULL NULL -45.0 -15601.0 -21239.15 -4009457.0 NULL -1.29104126E9 -15601.0 43.611 45.0 NULL -1969-12-31 15:59:51.164 15601.0 NULL NULL -21.0 -15601.0 -21239.15 -4009457.0 NULL 1.42471505E8 -15601.0 19.611 21.0 NULL -1969-12-31 15:59:54.384 15601.0 NULL NULL -59.0 -15601.0 -21239.15 -4009457.0 NULL 1.850060768E9 -15601.0 57.611 59.0 NULL -1969-12-31 15:59:48.782 15601.0 NULL NULL 34.0 -15601.0 -21239.15 -4009457.0 NULL -1.175460345E9 -15601.0 -35.389 -34.0 NULL -1969-12-31 15:59:56.806 15601.0 NULL NULL 42.0 -15601.0 -21239.15 -4009457.0 NULL -1.127043717E9 -15601.0 -43.389 -42.0 NULL -1969-12-31 15:59:46.798 15601.0 NULL NULL 10.0 -15601.0 -21239.15 -4009457.0 NULL 1.35169274E9 -15601.0 -11.389 -10.0 NULL -1969-12-31 15:59:53.232 15601.0 NULL NULL -59.0 -15601.0 -21239.15 -4009457.0 NULL 1.78187822E9 -15601.0 57.611 59.0 NULL -1969-12-31 15:59:45.566 15601.0 NULL NULL 17.0 -15601.0 -21239.15 -4009457.0 NULL -6.2902134E8 -15601.0 -18.389 -17.0 NULL -1969-12-31 15:59:54.583 15601.0 NULL NULL -31.0 -15601.0 -21239.15 -4009457.0 NULL -1.358014595E9 -15601.0 29.611 31.0 NULL -1969-12-31 15:59:54.062 15601.0 NULL NULL -58.0 -15601.0 -21239.15 -4009457.0 NULL 8.08203425E8 -15601.0 56.611 58.0 NULL -1969-12-31 15:59:46.281 15601.0 NULL NULL -23.0 -15601.0 -21239.15 -4009457.0 NULL 1.27344087E9 -15601.0 21.611 23.0 NULL -1969-12-31 15:59:52.12 15601.0 NULL NULL -39.0 -15601.0 -21239.15 -4009457.0 NULL 1.195141703E9 -15601.0 37.611 39.0 NULL -1969-12-31 15:59:55.733 15601.0 NULL NULL -63.0 -15601.0 -21239.15 -4009457.0 NULL 4.83888639E8 -15601.0 61.611 63.0 NULL -1969-12-31 15:59:54.124 15601.0 NULL NULL 32.0 -15601.0 -21239.15 -4009457.0 NULL -7.47175458E8 -15601.0 -33.389 -32.0 NULL -1969-12-31 15:59:54.228 15601.0 NULL NULL 3.0 -15601.0 -21239.15 -4009457.0 NULL -6.62755883E8 -15601.0 -4.389 -3.0 NULL -1969-12-31 15:59:46.114 15601.0 NULL NULL -3.0 -15601.0 -21239.15 -4009457.0 NULL -1.263812088E9 -15601.0 1.611 3.0 NULL -1969-12-31 15:59:50.364 15601.0 NULL NULL -3.0 -15601.0 -21239.15 -4009457.0 NULL 2.1177122E8 -15601.0 1.611 3.0 NULL -1969-12-31 15:59:45.037 15601.0 NULL NULL -29.0 -15601.0 -21239.15 -4009457.0 NULL 2.1138966E7 -15601.0 27.611 29.0 NULL -1969-12-31 15:59:54.144 15601.0 NULL NULL -47.0 -15601.0 -21239.15 -4009457.0 NULL 2.16273122E8 -15601.0 45.611 47.0 NULL -1969-12-31 15:59:51.698 15601.0 NULL NULL 13.0 -15601.0 -21239.15 -4009457.0 NULL -2.108731083E9 -15601.0 -14.389 -13.0 NULL -1969-12-31 15:59:47.305 15601.0 NULL NULL -1.0 -15601.0 -21239.15 -4009457.0 NULL 2.70643232E8 -15601.0 -0.389 1.0 NULL -1969-12-31 15:59:56.656 15601.0 NULL NULL -48.0 -15601.0 -21239.15 -4009457.0 NULL 1.575002211E9 -15601.0 46.611 48.0 NULL -1969-12-31 15:59:55.972 15601.0 NULL NULL 24.0 -15601.0 -21239.15 -4009457.0 NULL -1.278942461E9 -15601.0 -25.389 -24.0 NULL -1969-12-31 15:59:49.512 15601.0 NULL NULL -20.0 -15601.0 -21239.15 -4009457.0 NULL -9.9025653E8 -15601.0 18.611 20.0 NULL -1969-12-31 15:59:56.004 15601.0 NULL NULL 12.0 -15601.0 -21239.15 -4009457.0 NULL 1.028128111E9 -15601.0 -13.389 -12.0 NULL -1969-12-31 15:59:50.9 15601.0 NULL NULL 20.0 -15601.0 -21239.15 -4009457.0 NULL -3.68737495E8 -15601.0 -21.389 -20.0 NULL -1969-12-31 15:59:49.097 15601.0 NULL NULL 52.0 -15601.0 -21239.15 -4009457.0 NULL -2.125809391E9 -15601.0 -53.389 -52.0 NULL -1969-12-31 15:59:51.189 15601.0 NULL NULL -54.0 -15601.0 -21239.15 -4009457.0 NULL 1.304437586E9 -15601.0 52.611 54.0 NULL -1969-12-31 15:59:50.803 15601.0 NULL NULL 35.0 -15601.0 -21239.15 -4009457.0 NULL 4.5656797E8 -15601.0 -36.389 -35.0 NULL -1969-12-31 15:59:47.436 15601.0 NULL NULL -51.0 -15601.0 -21239.15 -4009457.0 NULL 6.9433097E7 -15601.0 49.611 51.0 NULL -1969-12-31 15:59:56.187 15601.0 NULL NULL 38.0 -15601.0 -21239.15 -4009457.0 NULL -4.40427715E8 -15601.0 -39.389 -38.0 NULL -1969-12-31 15:59:49.331 15601.0 NULL NULL -52.0 -15601.0 -21239.15 -4009457.0 NULL 4.40081007E8 -15601.0 50.611 52.0 NULL -1969-12-31 15:59:44.686 15601.0 NULL NULL -55.0 -15601.0 -21239.15 -4009457.0 NULL 9.95770459E8 -15601.0 53.611 55.0 NULL -1969-12-31 15:59:43.771 15601.0 NULL NULL 49.0 -15601.0 -21239.15 -4009457.0 NULL -1.10733693E9 -15601.0 -50.389 -49.0 NULL -1969-12-31 15:59:52.406 15601.0 NULL NULL 52.0 -15601.0 -21239.15 -4009457.0 NULL -1.846426551E9 -15601.0 -53.389 -52.0 NULL -1969-12-31 15:59:45.464 15601.0 NULL NULL -1.0 -15601.0 -21239.15 -4009457.0 NULL -6.30469436E8 -15601.0 -0.389 1.0 NULL -1969-12-31 15:59:53.18 15601.0 NULL NULL 57.0 -15601.0 -21239.15 -4009457.0 NULL -1.393953838E9 -15601.0 -58.389 -57.0 NULL -1969-12-31 15:59:52.675 15601.0 NULL NULL -41.0 -15601.0 -21239.15 -4009457.0 NULL 1.71841999E9 -15601.0 39.611 41.0 NULL -1969-12-31 15:59:50.007 15601.0 NULL NULL 16.0 -15601.0 -21239.15 -4009457.0 NULL 4.1419609E8 -15601.0 -17.389 -16.0 NULL -1969-12-31 15:59:48.71 15601.0 NULL NULL -30.0 -15601.0 -21239.15 -4009457.0 NULL 1.221825344E9 -15601.0 28.611 30.0 NULL -1969-12-31 15:59:47.035 15601.0 NULL NULL -4.0 -15601.0 -21239.15 -4009457.0 NULL -8.5113451E7 -15601.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:45.561 15601.0 NULL NULL -52.0 -15601.0 -21239.15 -4009457.0 NULL 1.433937401E9 -15601.0 50.611 52.0 NULL -1969-12-31 15:59:56.261 15601.0 NULL NULL -63.0 -15601.0 -21239.15 -4009457.0 NULL -1.996017576E9 -15601.0 61.611 63.0 NULL -1969-12-31 15:59:55.989 15601.0 NULL NULL -6.0 -15601.0 -21239.15 -4009457.0 NULL -1.610073812E9 -15601.0 4.611 6.0 NULL -1969-12-31 15:59:54.612 15601.0 NULL NULL 21.0 -15601.0 -21239.15 -4009457.0 NULL 1.312359059E9 -15601.0 -22.389 -21.0 NULL -1969-12-31 15:59:44.458 15601.0 NULL NULL -26.0 -15601.0 -21239.15 -4009457.0 NULL -1.301043874E9 -15601.0 24.611 26.0 NULL -1969-12-31 15:59:46.929 15601.0 NULL NULL 24.0 -15601.0 -21239.15 -4009457.0 NULL -4.04766833E8 -15601.0 -25.389 -24.0 NULL -1969-12-31 15:59:53.383 15601.0 NULL NULL -33.0 -15601.0 -21239.15 -4009457.0 NULL -2.080321225E9 -15601.0 31.611 33.0 NULL -1969-12-31 15:59:51.453 15601.0 NULL NULL 4.0 -15601.0 -21239.15 -4009457.0 NULL -1.6778986E9 -15601.0 -5.389 -4.0 NULL -1969-12-31 15:59:54.51 15601.0 NULL NULL -41.0 -15601.0 -21239.15 -4009457.0 NULL 1.943574077E9 -15601.0 39.611 41.0 NULL -1969-12-31 15:59:47.576 15601.0 NULL NULL -46.0 -15601.0 -21239.15 -4009457.0 NULL 5.29513491E8 -15601.0 44.611 46.0 NULL -1969-12-31 15:59:52.241 15601.0 NULL NULL 2.0 -15601.0 -21239.15 -4009457.0 NULL 4.19531136E8 -15601.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:46.351 15601.0 NULL NULL -57.0 -15601.0 -21239.15 -4009457.0 NULL 1.328868285E9 -15601.0 55.611 57.0 NULL -1969-12-31 15:59:45.193 15601.0 NULL NULL -10.0 -15601.0 -21239.15 -4009457.0 NULL 1.40140997E8 -15601.0 8.611 10.0 NULL -1969-12-31 15:59:45.402 15601.0 NULL NULL -26.0 -15601.0 -21239.15 -4009457.0 NULL -2.57314067E8 -15601.0 24.611 26.0 NULL -1969-12-31 15:59:50.155 15601.0 NULL NULL 12.0 -15601.0 -21239.15 -4009457.0 NULL -6.20903268E8 -15601.0 -13.389 -12.0 NULL -1969-12-31 15:59:47.616 15601.0 NULL NULL 39.0 -15601.0 -21239.15 -4009457.0 NULL 3.33730027E8 -15601.0 -40.389 -39.0 NULL -1969-12-31 15:59:52.154 15601.0 NULL NULL 18.0 -15601.0 -21239.15 -4009457.0 NULL -9.96150201E8 -15601.0 -19.389 -18.0 NULL -1969-12-31 15:59:47.171 15601.0 NULL NULL 31.0 -15601.0 -21239.15 -4009457.0 NULL -2.02511483E8 -15601.0 -32.389 -31.0 NULL -1969-12-31 15:59:47.884 15601.0 NULL NULL -40.0 -15601.0 -21239.15 -4009457.0 NULL 3.75913302E8 -15601.0 38.611 40.0 NULL -1969-12-31 15:59:55.863 15601.0 NULL NULL 11.0 -15601.0 -21239.15 -4009457.0 NULL -1.656862959E9 -15601.0 -12.389 -11.0 NULL -1969-12-31 15:59:57.28 15601.0 NULL NULL 42.0 -15601.0 -21239.15 -4009457.0 NULL -1.253763323E9 -15601.0 -43.389 -42.0 NULL -1969-12-31 15:59:57.678 15601.0 NULL NULL -56.0 -15601.0 -21239.15 -4009457.0 NULL -1.466378983E9 -15601.0 54.611 56.0 NULL -1969-12-31 15:59:44.748 15601.0 NULL NULL -14.0 -15601.0 -21239.15 -4009457.0 NULL -4.66172413E8 -15601.0 12.611 14.0 NULL -1969-12-31 15:59:54.073 15601.0 NULL NULL 49.0 -15601.0 -21239.15 -4009457.0 NULL -1.259059085E9 -15601.0 -50.389 -49.0 NULL -1969-12-31 15:59:48.397 15601.0 NULL NULL 0.0 -15601.0 -21239.15 -4009457.0 NULL 5.3935348E7 -15601.0 -1.389 -0.0 NULL -1969-12-31 15:59:47.81 15601.0 NULL NULL -54.0 -15601.0 -21239.15 -4009457.0 NULL 1.75013729E9 -15601.0 52.611 54.0 NULL -1969-12-31 15:59:57.479 15601.0 NULL NULL 18.0 -15601.0 -21239.15 -4009457.0 NULL -3.09629839E8 -15601.0 -19.389 -18.0 NULL -1969-12-31 15:59:58.015 15601.0 NULL NULL 38.0 -15601.0 -21239.15 -4009457.0 NULL 1.202418438E9 -15601.0 -39.389 -38.0 NULL -1969-12-31 15:59:44.571 15601.0 NULL NULL -42.0 -15601.0 -21239.15 -4009457.0 NULL -1.434666129E9 -15601.0 40.611 42.0 NULL -1969-12-31 15:59:47.246 15601.0 NULL NULL -8.0 -15601.0 -21239.15 -4009457.0 NULL 6.67733502E8 -15601.0 6.611 8.0 NULL -1969-12-31 15:59:51.171 15601.0 NULL NULL -11.0 -15601.0 -21239.15 -4009457.0 NULL -2.6461662E7 -15601.0 9.611 11.0 NULL -1969-12-31 15:59:58.541 15601.0 NULL NULL -61.0 -15601.0 -21239.15 -4009457.0 NULL 4.84530934E8 -15601.0 59.611 61.0 NULL -1969-12-31 15:59:50.412 15601.0 NULL NULL -35.0 -15601.0 -21239.15 -4009457.0 NULL -6.21651812E8 -15601.0 33.611 35.0 NULL -1969-12-31 15:59:50.627 15601.0 NULL NULL -32.0 -15601.0 -21239.15 -4009457.0 NULL -1.473811942E9 -15601.0 30.611 32.0 NULL -1969-12-31 15:59:49.073 15601.0 NULL NULL 27.0 -15601.0 -21239.15 -4009457.0 NULL 3.051475E8 -15601.0 -28.389 -27.0 NULL -1969-12-31 15:59:45.377 15601.0 NULL NULL -44.0 -15601.0 -21239.15 -4009457.0 NULL -1.03282247E9 -15601.0 42.611 44.0 NULL -1969-12-31 15:59:49.622 15601.0 NULL NULL -15.0 -15601.0 -21239.15 -4009457.0 NULL 1.3111317E9 -15601.0 13.611 15.0 NULL -1969-12-31 15:59:55.677 15601.0 NULL NULL -55.0 -15601.0 -21239.15 -4009457.0 NULL -1.062782652E9 -15601.0 53.611 55.0 NULL -1969-12-31 15:59:47.561 15601.0 NULL NULL -29.0 -15601.0 -21239.15 -4009457.0 NULL -4.27256244E8 -15601.0 27.611 29.0 NULL -1969-12-31 15:59:58.42 15601.0 NULL NULL -9.0 -15601.0 -21239.15 -4009457.0 NULL 1.92145516E8 -15601.0 7.611 9.0 NULL -1969-12-31 15:59:48.697 15601.0 NULL NULL 39.0 -15601.0 -21239.15 -4009457.0 NULL -1.89558341E8 -15601.0 -40.389 -39.0 NULL -1969-12-31 15:59:48.975 15601.0 NULL NULL 23.0 -15601.0 -21239.15 -4009457.0 NULL 4.4659926E8 -15601.0 -24.389 -23.0 NULL -1969-12-31 15:59:44.181 15601.0 NULL NULL -19.0 -15601.0 -21239.15 -4009457.0 NULL -1.198552436E9 -15601.0 17.611 19.0 NULL -1969-12-31 15:59:58.09 15601.0 NULL NULL -60.0 -15601.0 -21239.15 -4009457.0 NULL -2.041980788E9 -15601.0 58.611 60.0 NULL -1969-12-31 15:59:54.587 15601.0 NULL NULL -44.0 -15601.0 -21239.15 -4009457.0 NULL 1.448230389E9 -15601.0 42.611 44.0 NULL -1969-12-31 15:59:52.881 15601.0 NULL NULL -40.0 -15601.0 -21239.15 -4009457.0 NULL 5.6151974E8 -15601.0 38.611 40.0 NULL -1969-12-31 15:59:56.759 15601.0 NULL NULL -51.0 -15601.0 -21239.15 -4009457.0 NULL NULL -15601.0 49.611 51.0 NULL -1969-12-31 15:59:48.943 15601.0 NULL NULL 11.0 -15601.0 -21239.15 -4009457.0 NULL 1.496133126E9 -15601.0 -12.389 -11.0 NULL -1969-12-31 15:59:49.29 15601.0 NULL NULL 45.0 -15601.0 -21239.15 -4009457.0 NULL 1.477346043E9 -15601.0 -46.389 -45.0 NULL -1969-12-31 15:59:44.915 15601.0 NULL NULL -14.0 -15601.0 -21239.15 -4009457.0 NULL -2.05685823E8 -15601.0 12.611 14.0 NULL -1969-12-31 15:59:51.79 15601.0 NULL NULL -24.0 -15601.0 -21239.15 -4009457.0 NULL -2.78421501E8 -15601.0 22.611 24.0 NULL -1969-12-31 15:59:50.686 15601.0 NULL NULL 49.0 -15601.0 -21239.15 -4009457.0 NULL 1.911660586E9 -15601.0 -50.389 -49.0 NULL -1969-12-31 15:59:53.209 15601.0 NULL NULL -41.0 -15601.0 -21239.15 -4009457.0 NULL -5.60730284E8 -15601.0 39.611 41.0 NULL -1969-12-31 15:59:55.137 15601.0 NULL NULL -44.0 -15601.0 -21239.15 -4009457.0 NULL -1.447734802E9 -15601.0 42.611 44.0 NULL -1969-12-31 15:59:51.381 15601.0 NULL NULL -40.0 -15601.0 -21239.15 -4009457.0 NULL -1.523649208E9 -15601.0 38.611 40.0 NULL -1969-12-31 15:59:58.695 15601.0 NULL NULL 25.0 -15601.0 -21239.15 -4009457.0 NULL 4.51503098E8 -15601.0 -26.389 -25.0 NULL -1969-12-31 15:59:57.739 15601.0 NULL NULL 25.0 -15601.0 -21239.15 -4009457.0 NULL 1.972105586E9 -15601.0 -26.389 -25.0 NULL -1969-12-31 15:59:44.394 15601.0 NULL NULL 31.0 -15601.0 -21239.15 -4009457.0 NULL 4.51436148E8 -15601.0 -32.389 -31.0 NULL -1969-12-31 15:59:56.555 15601.0 NULL NULL 20.0 -15601.0 -21239.15 -4009457.0 NULL -104611.0 -15601.0 -21.389 -20.0 NULL -1969-12-31 15:59:50.205 15601.0 NULL NULL -6.0 -15601.0 -21239.15 -4009457.0 NULL -1.761576148E9 -15601.0 4.611 6.0 NULL -1969-12-31 15:59:54.641 15601.0 NULL NULL -33.0 -15601.0 -21239.15 -4009457.0 NULL -1.465781671E9 -15601.0 31.611 33.0 NULL -1969-12-31 15:59:55.411 15601.0 NULL NULL -43.0 -15601.0 -21239.15 -4009457.0 NULL 5.28174478E8 -15601.0 41.611 43.0 NULL -1969-12-31 15:59:56.97 15601.0 NULL NULL -2.0 -15601.0 -21239.15 -4009457.0 NULL -3.19803631E8 -15601.0 0.611 2.0 NULL -1969-12-31 15:59:48.679 15601.0 NULL NULL -60.0 -15601.0 -21239.15 -4009457.0 NULL 1.761942169E9 -15601.0 58.611 60.0 NULL -1969-12-31 15:59:53.953 15601.0 NULL NULL -56.0 -15601.0 -21239.15 -4009457.0 NULL -1.105337774E9 -15601.0 54.611 56.0 NULL -1969-12-31 15:59:57.999 15601.0 NULL NULL 20.0 -15601.0 -21239.15 -4009457.0 NULL -1.972984588E9 -15601.0 -21.389 -20.0 NULL -1969-12-31 15:59:52.389 15601.0 NULL NULL -37.0 -15601.0 -21239.15 -4009457.0 NULL -1.666005803E9 -15601.0 35.611 37.0 NULL -1969-12-31 15:59:45.816 15601.0 NULL NULL 7.0 -15601.0 -21239.15 -4009457.0 NULL -1.487542756E9 -15601.0 -8.389 -7.0 NULL -1969-12-31 15:59:52.713 15601.0 NULL NULL -40.0 -15601.0 -21239.15 -4009457.0 NULL -1.723419067E9 -15601.0 38.611 40.0 NULL -1969-12-31 15:59:53.906 15601.0 NULL NULL 35.0 -15601.0 -21239.15 -4009457.0 NULL -4.19300457E8 -15601.0 -36.389 -35.0 NULL -1969-12-31 15:59:47.57 15601.0 NULL NULL -29.0 -15601.0 -21239.15 -4009457.0 NULL -1.703853339E9 -15601.0 27.611 29.0 NULL -1969-12-31 15:59:44.07 15601.0 NULL NULL -9.0 -15601.0 -21239.15 -4009457.0 NULL 1.788307879E9 -15601.0 7.611 9.0 NULL -1969-12-31 15:59:58.038 15601.0 NULL NULL -14.0 -15601.0 -21239.15 -4009457.0 NULL -9.46647943E8 -15601.0 12.611 14.0 NULL -1969-12-31 15:59:53.715 15601.0 NULL NULL -44.0 -15601.0 -21239.15 -4009457.0 NULL -7.5991017E7 -15601.0 42.611 44.0 NULL -1969-12-31 15:59:44.708 15601.0 NULL NULL -22.0 -15601.0 -21239.15 -4009457.0 NULL 1.553787355E9 -15601.0 20.611 22.0 NULL -1969-12-31 15:59:57.554 15601.0 NULL NULL -37.0 -15601.0 -21239.15 -4009457.0 NULL -2.18710962E8 -15601.0 35.611 37.0 NULL -1969-12-31 15:59:55.496 15601.0 NULL NULL 21.0 -15601.0 -21239.15 -4009457.0 NULL 6.22580071E8 -15601.0 -22.389 -21.0 NULL -1969-12-31 15:59:47.981 15601.0 NULL NULL -12.0 -15601.0 -21239.15 -4009457.0 NULL 1.233557746E9 -15601.0 10.611 12.0 NULL -1969-12-31 15:59:58.306 15601.0 NULL NULL -49.0 -15601.0 -21239.15 -4009457.0 NULL 2.025267329E9 -15601.0 47.611 49.0 NULL -1969-12-31 15:59:43.709 15601.0 NULL NULL 61.0 -15601.0 -21239.15 -4009457.0 NULL -1.55652257E8 -15601.0 -62.389 -61.0 NULL -1969-12-31 15:59:57.75 15601.0 NULL NULL -22.0 -15601.0 -21239.15 -4009457.0 NULL -1.16677593E8 -15601.0 20.611 22.0 NULL -1969-12-31 15:59:58.704 15601.0 NULL NULL -55.0 -15601.0 -21239.15 -4009457.0 NULL -1.338683366E9 -15601.0 53.611 55.0 NULL -1969-12-31 15:59:47.586 15601.0 NULL NULL -13.0 -15601.0 -21239.15 -4009457.0 NULL 4.88609068E8 -15601.0 11.611 13.0 NULL -1969-12-31 15:59:44.568 15601.0 NULL NULL 22.0 -15601.0 -21239.15 -4009457.0 NULL -4.9024827E8 -15601.0 -23.389 -22.0 NULL -1969-12-31 15:59:48.932 15601.0 NULL NULL 16.0 -15601.0 -21239.15 -4009457.0 NULL NULL -15601.0 -17.389 -16.0 NULL -1969-12-31 15:59:54.179 15601.0 NULL NULL 52.0 -15601.0 -21239.15 -4009457.0 NULL 1.13797846E8 -15601.0 -53.389 -52.0 NULL -1969-12-31 15:59:50.651 15601.0 NULL NULL -9.0 -15601.0 -21239.15 -4009457.0 NULL -7.75298431E8 -15601.0 7.611 9.0 NULL -1969-12-31 15:59:54.334 15601.0 NULL NULL 11.0 -15601.0 -21239.15 -4009457.0 NULL -1.558195631E9 -15601.0 -12.389 -11.0 NULL -1969-12-31 15:59:46.455 15601.0 NULL NULL 3.0 -15601.0 -21239.15 -4009457.0 NULL -1.215196035E9 -15601.0 -4.389 -3.0 NULL -1969-12-31 15:59:46.664 15601.0 NULL NULL -58.0 -15601.0 -21239.15 -4009457.0 NULL -1.07235103E9 -15601.0 56.611 58.0 NULL -1969-12-31 15:59:55.459 15601.0 NULL NULL -3.0 -15601.0 -21239.15 -4009457.0 NULL 1.649120803E9 -15601.0 1.611 3.0 NULL -1969-12-31 15:59:52.408 15601.0 NULL NULL 28.0 -15601.0 -21239.15 -4009457.0 NULL 1.527883724E9 -15601.0 -29.389 -28.0 NULL -1969-12-31 15:59:51.346 15601.0 NULL NULL -18.0 -15601.0 -21239.15 -4009457.0 NULL -1.414060393E9 -15601.0 16.611 18.0 NULL -1969-12-31 15:59:45.035 15601.0 NULL NULL 46.0 -15601.0 -21239.15 -4009457.0 NULL -1.116105899E9 -15601.0 -47.389 -46.0 NULL -1969-12-31 15:59:55.738 15601.0 NULL NULL -8.0 -15601.0 -21239.15 -4009457.0 NULL 1.821263578E9 -15601.0 6.611 8.0 NULL -1969-12-31 15:59:53.224 15601.0 NULL NULL -21.0 -15601.0 -21239.15 -4009457.0 NULL 1.89033522E9 -15601.0 19.611 21.0 NULL -1969-12-31 15:59:57.555 15601.0 NULL NULL 6.0 -15601.0 -21239.15 -4009457.0 NULL -9.40214187E8 -15601.0 -7.389 -6.0 NULL -1969-12-31 15:59:54.116 15601.0 NULL NULL 62.0 -15601.0 -21239.15 -4009457.0 NULL 1.58178862E8 -15601.0 -63.389 -62.0 NULL -1969-12-31 15:59:45.937 15601.0 NULL NULL -54.0 -15601.0 -21239.15 -4009457.0 NULL -1.984675411E9 -15601.0 52.611 54.0 NULL -1969-12-31 15:59:54.454 15601.0 NULL NULL 6.0 -15601.0 -21239.15 -4009457.0 NULL -1.135990445E9 -15601.0 -7.389 -6.0 NULL -1969-12-31 15:59:57.609 15601.0 NULL NULL 2.0 -15601.0 -21239.15 -4009457.0 NULL 3.16672504E8 -15601.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:49.444 15601.0 NULL NULL -5.0 -15601.0 -21239.15 -4009457.0 NULL -6.85836974E8 -15601.0 3.6109999999999998 5.0 NULL -1969-12-31 15:59:57.261 15601.0 NULL NULL 19.0 -15601.0 -21239.15 -4009457.0 NULL -1.332703495E9 -15601.0 -20.389 -19.0 NULL -1969-12-31 15:59:45.238 15601.0 NULL NULL 39.0 -15601.0 -21239.15 -4009457.0 NULL -1.351926227E9 -15601.0 -40.389 -39.0 NULL -1969-12-31 15:59:46.809 15601.0 NULL NULL 9.0 -15601.0 -21239.15 -4009457.0 NULL 1.445894422E9 -15601.0 -10.389 -9.0 NULL -1969-12-31 15:59:51.819 15601.0 NULL NULL 10.0 -15601.0 -21239.15 -4009457.0 NULL 1.177259709E9 -15601.0 -11.389 -10.0 NULL -1969-12-31 15:59:47.953 15601.0 NULL NULL 18.0 -15601.0 -21239.15 -4009457.0 NULL -9.73920999E8 -15601.0 -19.389 -18.0 NULL -1969-12-31 15:59:57.158 15601.0 NULL NULL 45.0 -15601.0 -21239.15 -4009457.0 NULL -1.95957344E8 -15601.0 -46.389 -45.0 NULL -1969-12-31 15:59:51.697 15601.0 NULL NULL 33.0 -15601.0 -21239.15 -4009457.0 NULL -6.67452572E8 -15601.0 -34.389 -33.0 NULL -1969-12-31 15:59:48.862 15601.0 NULL NULL -62.0 -15601.0 -21239.15 -4009457.0 NULL 7.3945375E7 -15601.0 60.611 62.0 NULL -1969-12-31 15:59:47.709 15601.0 NULL NULL -8.0 -15601.0 -21239.15 -4009457.0 NULL -3.3563277E8 -15601.0 6.611 8.0 NULL -1969-12-31 15:59:58.727 15601.0 NULL NULL -16.0 -15601.0 -21239.15 -4009457.0 NULL -5.98505959E8 -15601.0 14.611 16.0 NULL -1969-12-31 15:59:50.345 15601.0 NULL NULL -37.0 -15601.0 -21239.15 -4009457.0 NULL NULL -15601.0 35.611 37.0 NULL -1969-12-31 15:59:45.008 15601.0 NULL NULL -31.0 -15601.0 -21239.15 -4009457.0 NULL 2.006214153E9 -15601.0 29.611 31.0 NULL -1969-12-31 15:59:53.384 15601.0 NULL NULL -37.0 -15601.0 -21239.15 -4009457.0 NULL -1.373459547E9 -15601.0 35.611 37.0 NULL -1969-12-31 15:59:49.504 15601.0 NULL NULL -50.0 -15601.0 -21239.15 -4009457.0 NULL -5.96118842E8 -15601.0 48.611 50.0 NULL -1969-12-31 15:59:54.999 15601.0 NULL NULL 39.0 -15601.0 -21239.15 -4009457.0 NULL 2.102404185E9 -15601.0 -40.389 -39.0 NULL -1969-12-31 15:59:47.613 15601.0 NULL NULL -13.0 -15601.0 -21239.15 -4009457.0 NULL 2.128543718E9 -15601.0 11.611 13.0 NULL -1969-12-31 15:59:57.84 15601.0 NULL NULL 12.0 -15601.0 -21239.15 -4009457.0 NULL -1.331141479E9 -15601.0 -13.389 -12.0 NULL -1969-12-31 15:59:51.637 15601.0 NULL NULL -8.0 -15601.0 -21239.15 -4009457.0 NULL -1.768331839E9 -15601.0 6.611 8.0 NULL -1969-12-31 15:59:43.93 15601.0 NULL NULL 54.0 -15601.0 -21239.15 -4009457.0 NULL -8.3372743E7 -15601.0 -55.389 -54.0 NULL -1969-12-31 15:59:48.876 15601.0 NULL NULL -32.0 -15601.0 -21239.15 -4009457.0 NULL -9.38755145E8 -15601.0 30.611 32.0 NULL -1969-12-31 15:59:51.988 15601.0 NULL NULL 17.0 -15601.0 -21239.15 -4009457.0 NULL -7.84279736E8 -15601.0 -18.389 -17.0 NULL -1969-12-31 15:59:58.134 15601.0 NULL NULL 60.0 -15601.0 -21239.15 -4009457.0 NULL -9.77738333E8 -15601.0 -61.389 -60.0 NULL -1969-12-31 15:59:50.992 15601.0 NULL NULL -28.0 -15601.0 -21239.15 -4009457.0 NULL 9.89378127E8 -15601.0 26.611 28.0 NULL -1969-12-31 15:59:56.389 15601.0 NULL NULL 52.0 -15601.0 -21239.15 -4009457.0 NULL -1.214850331E9 -15601.0 -53.389 -52.0 NULL -1969-12-31 15:59:51.153 15601.0 NULL NULL -44.0 -15601.0 -21239.15 -4009457.0 NULL -3.99808938E8 -15601.0 42.611 44.0 NULL -1969-12-31 15:59:55.64 15601.0 NULL NULL 7.0 -15601.0 -21239.15 -4009457.0 NULL 1.621281116E9 -15601.0 -8.389 -7.0 NULL -1969-12-31 15:59:43.721 15601.0 NULL NULL 57.0 -15601.0 -21239.15 -4009457.0 NULL -1.465672807E9 -15601.0 -58.389 -57.0 NULL -1969-12-31 15:59:45.579 15601.0 NULL NULL 1.0 -15601.0 -21239.15 -4009457.0 NULL 3.45737326E8 -15601.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:53.727 15601.0 NULL NULL 16.0 -15601.0 -21239.15 -4009457.0 NULL -1.011248528E9 -15601.0 -17.389 -16.0 NULL -1969-12-31 15:59:46.056 15601.0 NULL NULL 58.0 -15601.0 -21239.15 -4009457.0 NULL 2.35413079E8 -15601.0 -59.389 -58.0 NULL -1969-12-31 15:59:51.259 15601.0 NULL NULL -46.0 -15601.0 -21239.15 -4009457.0 NULL 2.71194719E8 -15601.0 44.611 46.0 NULL -1969-12-31 15:59:55.998 15601.0 NULL NULL -40.0 -15601.0 -21239.15 -4009457.0 NULL 1.194301101E9 -15601.0 38.611 40.0 NULL -1969-12-31 15:59:44.511 15601.0 NULL NULL -32.0 -15601.0 -21239.15 -4009457.0 NULL 6.8476476E7 -15601.0 30.611 32.0 NULL -1969-12-31 15:59:48.19 15601.0 NULL NULL -19.0 -15601.0 -21239.15 -4009457.0 NULL -1.322554164E9 -15601.0 17.611 19.0 NULL -1969-12-31 15:59:58.383 15601.0 NULL NULL -60.0 -15601.0 -21239.15 -4009457.0 NULL -1.016272529E9 -15601.0 58.611 60.0 NULL -1969-12-31 15:59:46.559 15601.0 NULL NULL -34.0 -15601.0 -21239.15 -4009457.0 NULL 1.476517771E9 -15601.0 32.611 34.0 NULL -1969-12-31 15:59:57.87 15601.0 NULL NULL -31.0 -15601.0 -21239.15 -4009457.0 NULL -1.784021329E9 -15601.0 29.611 31.0 NULL -1969-12-31 15:59:52.083 15601.0 NULL NULL -31.0 -15601.0 -21239.15 -4009457.0 NULL -1.98471943E8 -15601.0 29.611 31.0 NULL -1969-12-31 15:59:54.06 15601.0 NULL NULL 55.0 -15601.0 -21239.15 -4009457.0 NULL -1.22430625E9 -15601.0 -56.389 -55.0 NULL -1969-12-31 15:59:45.399 15601.0 NULL NULL 31.0 -15601.0 -21239.15 -4009457.0 NULL -1.955007786E9 -15601.0 -32.389 -31.0 NULL -1969-12-31 15:59:44.782 15601.0 NULL NULL 7.0 -15601.0 -21239.15 -4009457.0 NULL -4.84573216E8 -15601.0 -8.389 -7.0 NULL -1969-12-31 15:59:54.253 15601.0 NULL NULL -44.0 -15601.0 -21239.15 -4009457.0 NULL 2.72352835E8 -15601.0 42.611 44.0 NULL -1969-12-31 15:59:44.661 15601.0 NULL NULL 25.0 -15601.0 -21239.15 -4009457.0 NULL -2.030148478E9 -15601.0 -26.389 -25.0 NULL -1969-12-31 15:59:52.044 15601.0 NULL NULL 35.0 -15601.0 -21239.15 -4009457.0 NULL NULL -15601.0 -36.389 -35.0 NULL -1969-12-31 15:59:54.267 15601.0 NULL NULL -14.0 -15601.0 -21239.15 -4009457.0 NULL 8.62553202E8 -15601.0 12.611 14.0 NULL -1969-12-31 15:59:44.914 15601.0 NULL NULL 14.0 -15601.0 -21239.15 -4009457.0 NULL -1.555954134E9 -15601.0 -15.389 -14.0 NULL -1969-12-31 15:59:51.811 15601.0 NULL NULL 11.0 -15601.0 -21239.15 -4009457.0 NULL 3.17693255E8 -15601.0 -12.389 -11.0 NULL -1969-12-31 15:59:47.858 15601.0 NULL NULL -55.0 -15601.0 -21239.15 -4009457.0 NULL 3.57027762E8 -15601.0 53.611 55.0 NULL -1969-12-31 15:59:50.692 15601.0 NULL NULL -30.0 -15601.0 -21239.15 -4009457.0 NULL 1.563918521E9 -15601.0 28.611 30.0 NULL -1969-12-31 15:59:54.68 15601.0 NULL NULL -2.0 -15601.0 -21239.15 -4009457.0 NULL 1.450837956E9 -15601.0 0.611 2.0 NULL -1969-12-31 15:59:49.063 15601.0 NULL NULL 3.0 -15601.0 -21239.15 -4009457.0 NULL -1.269048696E9 -15601.0 -4.389 -3.0 NULL -1969-12-31 15:59:54.292 15601.0 NULL NULL -45.0 -15601.0 -21239.15 -4009457.0 NULL -1.022673124E9 -15601.0 43.611 45.0 NULL -1969-12-31 15:59:54.342 15601.0 NULL NULL 26.0 -15601.0 -21239.15 -4009457.0 NULL 1.802474563E9 -15601.0 -27.389 -26.0 NULL -1969-12-31 15:59:55.225 15601.0 NULL NULL -6.0 -15601.0 -21239.15 -4009457.0 NULL -1.307671689E9 -15601.0 4.611 6.0 NULL -1969-12-31 15:59:44.31 15601.0 NULL NULL 25.0 -15601.0 -21239.15 -4009457.0 NULL 4.92593395E8 -15601.0 -26.389 -25.0 NULL -1969-12-31 15:59:45.375 15601.0 NULL NULL -49.0 -15601.0 -21239.15 -4009457.0 NULL -5.7216025E7 -15601.0 47.611 49.0 NULL -1969-12-31 15:59:48.067 15601.0 NULL NULL -33.0 -15601.0 -21239.15 -4009457.0 NULL -1.583030393E9 -15601.0 31.611 33.0 NULL -1969-12-31 15:59:49.794 15601.0 NULL NULL 56.0 -15601.0 -21239.15 -4009457.0 NULL -1.062009742E9 -15601.0 -57.389 -56.0 NULL -1969-12-31 15:59:58.343 15601.0 NULL NULL -34.0 -15601.0 -21239.15 -4009457.0 NULL -1.177696437E9 -15601.0 32.611 34.0 NULL -1969-12-31 15:59:49.98 15601.0 NULL NULL -51.0 -15601.0 -21239.15 -4009457.0 NULL -5.46845646E8 -15601.0 49.611 51.0 NULL -1969-12-31 15:59:44.556 15601.0 NULL NULL 53.0 -15601.0 -21239.15 -4009457.0 NULL 1.556575248E9 -15601.0 -54.389 -53.0 NULL -1969-12-31 15:59:46.085 15601.0 NULL NULL 60.0 -15601.0 -21239.15 -4009457.0 NULL 1.427995422E9 -15601.0 -61.389 -60.0 NULL -1969-12-31 15:59:50.336 15601.0 NULL NULL -4.0 -15601.0 -21239.15 -4009457.0 NULL 9.56507241E8 -15601.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:48.605 15601.0 NULL NULL 7.0 -15601.0 -21239.15 -4009457.0 NULL 1.375301835E9 -15601.0 -8.389 -7.0 NULL -1969-12-31 15:59:51.186 15601.0 NULL NULL -9.0 -15601.0 -21239.15 -4009457.0 NULL -9.11433178E8 -15601.0 7.611 9.0 NULL -1969-12-31 15:59:44.61 15601.0 NULL NULL 54.0 -15601.0 -21239.15 -4009457.0 NULL -1.711681678E9 -15601.0 -55.389 -54.0 NULL -1969-12-31 15:59:54.524 15601.0 NULL NULL 52.0 -15601.0 -21239.15 -4009457.0 NULL 1.551247045E9 -15601.0 -53.389 -52.0 NULL -1969-12-31 15:59:47.975 15601.0 NULL NULL -17.0 -15601.0 -21239.15 -4009457.0 NULL -5.90169102E8 -15601.0 15.611 17.0 NULL -1969-12-31 15:59:53.355 15601.0 NULL NULL 18.0 -15601.0 -21239.15 -4009457.0 NULL 7.88549022E8 -15601.0 -19.389 -18.0 NULL -1969-12-31 15:59:43.705 15601.0 NULL NULL -12.0 -15601.0 -21239.15 -4009457.0 NULL 5.95398978E8 -15601.0 10.611 12.0 NULL -1969-12-31 15:59:52.778 15601.0 NULL NULL 4.0 -15601.0 -21239.15 -4009457.0 NULL -9.41900563E8 -15601.0 -5.389 -4.0 NULL -1969-12-31 15:59:53.84 15601.0 NULL NULL 45.0 -15601.0 -21239.15 -4009457.0 NULL 1.903394704E9 -15601.0 -46.389 -45.0 NULL -1969-12-31 15:59:44.821 15601.0 NULL NULL -37.0 -15601.0 -21239.15 -4009457.0 NULL 7.9628365E7 -15601.0 35.611 37.0 NULL -1969-12-31 15:59:56.707 15601.0 NULL NULL -11.0 -15601.0 -21239.15 -4009457.0 NULL -1.985566088E9 -15601.0 9.611 11.0 NULL -1969-12-31 15:59:51.413 15601.0 NULL NULL -61.0 -15601.0 -21239.15 -4009457.0 NULL -1.022695154E9 -15601.0 59.611 61.0 NULL -1969-12-31 15:59:43.931 15601.0 NULL NULL 42.0 -15601.0 -21239.15 -4009457.0 NULL 5.09162257E8 -15601.0 -43.389 -42.0 NULL -1969-12-31 15:59:51.535 15601.0 NULL NULL 55.0 -15601.0 -21239.15 -4009457.0 NULL -1.044230994E9 -15601.0 -56.389 -55.0 NULL -1969-12-31 15:59:44.179 15601.0 NULL NULL 34.0 -15601.0 -21239.15 -4009457.0 NULL 1.56325605E9 -15601.0 -35.389 -34.0 NULL -1969-12-31 15:59:45.528 15601.0 NULL NULL -41.0 -15601.0 -21239.15 -4009457.0 NULL NULL -15601.0 39.611 41.0 NULL -1969-12-31 15:59:56.881 15601.0 NULL NULL -52.0 -15601.0 -21239.15 -4009457.0 NULL -2.074150246E9 -15601.0 50.611 52.0 NULL -1969-12-31 15:59:56.992 15601.0 NULL NULL -60.0 -15601.0 -21239.15 -4009457.0 NULL 1.915743047E9 -15601.0 58.611 60.0 NULL -1969-12-31 15:59:46.684 15601.0 NULL NULL 49.0 -15601.0 -21239.15 -4009457.0 NULL -1.70155639E8 -15601.0 -50.389 -49.0 NULL -1969-12-31 15:59:57.791 15601.0 NULL NULL -26.0 -15601.0 -21239.15 -4009457.0 NULL -1.931957E9 -15601.0 24.611 26.0 NULL -1969-12-31 15:59:56.527 15601.0 NULL NULL 58.0 -15601.0 -21239.15 -4009457.0 NULL 1.575074094E9 -15601.0 -59.389 -58.0 NULL -1969-12-31 15:59:53.165 15601.0 NULL NULL -11.0 -15601.0 -21239.15 -4009457.0 NULL 1.511962376E9 -15601.0 9.611 11.0 NULL -1969-12-31 15:59:53.039 15601.0 NULL NULL 8.0 -15601.0 -21239.15 -4009457.0 NULL 5.3640709E7 -15601.0 -9.389 -8.0 NULL -1969-12-31 15:59:46.606 15601.0 NULL NULL 29.0 -15601.0 -21239.15 -4009457.0 NULL -2.052431416E9 -15601.0 -30.389 -29.0 NULL -1969-12-31 15:59:46.104 15601.0 NULL NULL 25.0 -15601.0 -21239.15 -4009457.0 NULL 3.47954653E8 -15601.0 -26.389 -25.0 NULL -1969-12-31 15:59:45.218 15601.0 NULL NULL 39.0 -15601.0 -21239.15 -4009457.0 NULL 9.23480044E8 -15601.0 -40.389 -39.0 NULL -1969-12-31 15:59:48.76 15601.0 NULL NULL 17.0 -15601.0 -21239.15 -4009457.0 NULL -1.91576173E8 -15601.0 -18.389 -17.0 NULL -1969-12-31 15:59:52.076 15601.0 NULL NULL 15.0 -15601.0 -21239.15 -4009457.0 NULL 1.329066501E9 -15601.0 -16.389 -15.0 NULL -1969-12-31 15:59:57.597 15601.0 NULL NULL 34.0 -15601.0 -21239.15 -4009457.0 NULL -7.48492324E8 -15601.0 -35.389 -34.0 NULL -1969-12-31 15:59:57.912 15601.0 NULL NULL -45.0 -15601.0 -21239.15 -4009457.0 NULL 1.619210764E9 -15601.0 43.611 45.0 NULL -1969-12-31 15:59:56.913 15601.0 NULL NULL 53.0 -15601.0 -21239.15 -4009457.0 NULL 2.049783001E9 -15601.0 -54.389 -53.0 NULL -1969-12-31 15:59:50.936 15601.0 NULL NULL 9.0 -15601.0 -21239.15 -4009457.0 NULL -1.620076807E9 -15601.0 -10.389 -9.0 NULL -1969-12-31 15:59:44.477 15601.0 NULL NULL -42.0 -15601.0 -21239.15 -4009457.0 NULL -1.00335072E9 -15601.0 40.611 42.0 NULL -1969-12-31 15:59:54.213 15601.0 NULL NULL 1.0 -15601.0 -21239.15 -4009457.0 NULL -1.972137223E9 -15601.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:45.347 15601.0 NULL NULL 45.0 -15601.0 -21239.15 -4009457.0 NULL 1.100104702E9 -15601.0 -46.389 -45.0 NULL -1969-12-31 15:59:46.957 15601.0 NULL NULL -56.0 -15601.0 -21239.15 -4009457.0 NULL -1.683717445E9 -15601.0 54.611 56.0 NULL -1969-12-31 15:59:55.413 15601.0 NULL NULL 51.0 -15601.0 -21239.15 -4009457.0 NULL -2.040043564E9 -15601.0 -52.389 -51.0 NULL -1969-12-31 15:59:46.494 15601.0 NULL NULL 17.0 -15601.0 -21239.15 -4009457.0 NULL 1.825947635E9 -15601.0 -18.389 -17.0 NULL -1969-12-31 15:59:44.235 15601.0 NULL NULL 50.0 -15601.0 -21239.15 -4009457.0 NULL 1.492018914E9 -15601.0 -51.389 -50.0 NULL -1969-12-31 15:59:51.578 15601.0 NULL NULL -64.0 -15601.0 -21239.15 -4009457.0 NULL -1.809307416E9 -15601.0 62.611 64.0 NULL -1969-12-31 15:59:45.08 15601.0 NULL NULL 59.0 -15601.0 -21239.15 -4009457.0 NULL 7.0157883E8 -15601.0 -60.389 -59.0 NULL -1969-12-31 15:59:58.383 15601.0 NULL NULL 41.0 -15601.0 -21239.15 -4009457.0 NULL -1.730753991E9 -15601.0 -42.389 -41.0 NULL -1969-12-31 15:59:48.293 15601.0 NULL NULL -31.0 -15601.0 -21239.15 -4009457.0 NULL -2.030850759E9 -15601.0 29.611 31.0 NULL -1969-12-31 15:59:57.056 15601.0 NULL NULL -46.0 -15601.0 -21239.15 -4009457.0 NULL 6.25447117E8 -15601.0 44.611 46.0 NULL -1969-12-31 15:59:56.305 15601.0 NULL NULL -30.0 -15601.0 -21239.15 -4009457.0 NULL 7.01721244E8 -15601.0 28.611 30.0 NULL -1969-12-31 15:59:48.481 15601.0 NULL NULL -41.0 -15601.0 -21239.15 -4009457.0 NULL -1.51246521E9 -15601.0 39.611 41.0 NULL -1969-12-31 15:59:50.235 15601.0 NULL NULL 48.0 -15601.0 -21239.15 -4009457.0 NULL -7.95376601E8 -15601.0 -49.389 -48.0 NULL -1969-12-31 15:59:51.468 15601.0 NULL NULL 44.0 -15601.0 -21239.15 -4009457.0 NULL 1.265035488E9 -15601.0 -45.389 -44.0 NULL -1969-12-31 15:59:55.847 15601.0 NULL NULL -9.0 -15601.0 -21239.15 -4009457.0 NULL NULL -15601.0 7.611 9.0 NULL -1969-12-31 15:59:43.919 15601.0 NULL NULL -21.0 -15601.0 -21239.15 -4009457.0 NULL -2.64616175E8 -15601.0 19.611 21.0 NULL -1969-12-31 15:59:53.396 15601.0 NULL NULL -61.0 -15601.0 -21239.15 -4009457.0 NULL 1.114658024E9 -15601.0 59.611 61.0 NULL -1969-12-31 15:59:51.645 15601.0 NULL NULL 10.0 -15601.0 -21239.15 -4009457.0 NULL -1.043267583E9 -15601.0 -11.389 -10.0 NULL -1969-12-31 15:59:53.038 15601.0 NULL NULL 8.0 -15601.0 -21239.15 -4009457.0 NULL -5.9093705E8 -15601.0 -9.389 -8.0 NULL -1969-12-31 15:59:51.055 15601.0 NULL NULL 22.0 -15601.0 -21239.15 -4009457.0 NULL 1.592473472E9 -15601.0 -23.389 -22.0 NULL -1969-12-31 15:59:57.038 15601.0 NULL NULL -11.0 -15601.0 -21239.15 -4009457.0 NULL 6.76412485E8 -15601.0 9.611 11.0 NULL -1969-12-31 15:59:50.254 15601.0 NULL NULL 4.0 -15601.0 -21239.15 -4009457.0 NULL 1.533942654E9 -15601.0 -5.389 -4.0 NULL -1969-12-31 15:59:46.689 15601.0 NULL NULL 22.0 -15601.0 -21239.15 -4009457.0 NULL 1.990144546E9 -15601.0 -23.389 -22.0 NULL -1969-12-31 15:59:48.884 15601.0 NULL NULL 8.0 -15601.0 -21239.15 -4009457.0 NULL -1.568427841E9 -15601.0 -9.389 -8.0 NULL -1969-12-31 15:59:56.823 15601.0 NULL NULL -59.0 -15601.0 -21239.15 -4009457.0 NULL 5.43815608E8 -15601.0 57.611 59.0 NULL -1969-12-31 15:59:56.651 15601.0 NULL NULL 12.0 -15601.0 -21239.15 -4009457.0 NULL -1.879985603E9 -15601.0 -13.389 -12.0 NULL -1969-12-31 15:59:53.279 15601.0 NULL NULL -11.0 -15601.0 -21239.15 -4009457.0 NULL 1.77807403E9 -15601.0 9.611 11.0 NULL -1969-12-31 15:59:53.635 15601.0 NULL NULL 47.0 -15601.0 -21239.15 -4009457.0 NULL -1.220521231E9 -15601.0 -48.389 -47.0 NULL -1969-12-31 15:59:48.552 15601.0 NULL NULL -42.0 -15601.0 -21239.15 -4009457.0 NULL -9.33790735E8 -15601.0 40.611 42.0 NULL -1969-12-31 15:59:47.547 15601.0 NULL NULL 0.0 -15601.0 -21239.15 -4009457.0 NULL 4.7382433E8 -15601.0 -1.389 -0.0 NULL -1969-12-31 15:59:49.586 15601.0 NULL NULL -5.0 -15601.0 -21239.15 -4009457.0 NULL -1.888918151E9 -15601.0 3.6109999999999998 5.0 NULL -1969-12-31 15:59:54.417 15601.0 NULL NULL 5.0 -15601.0 -21239.15 -4009457.0 NULL 1.522317427E9 -15601.0 -6.389 -5.0 NULL -1969-12-31 15:59:47.409 15601.0 NULL NULL -20.0 -15601.0 -21239.15 -4009457.0 NULL -5.7939042E7 -15601.0 18.611 20.0 NULL -1969-12-31 15:59:56.338 15601.0 NULL NULL -44.0 -15601.0 -21239.15 -4009457.0 NULL -3.58771532E8 -15601.0 42.611 44.0 NULL -1969-12-31 15:59:52.357 15601.0 NULL NULL 55.0 -15601.0 -21239.15 -4009457.0 NULL -8.19652084E8 -15601.0 -56.389 -55.0 NULL -1969-12-31 15:59:57.279 15601.0 NULL NULL -44.0 -15601.0 -21239.15 -4009457.0 NULL 3.0894164E7 -15601.0 42.611 44.0 NULL -1969-12-31 15:59:49.341 15601.0 NULL NULL -34.0 -15601.0 -21239.15 -4009457.0 NULL 8.68007687E8 -15601.0 32.611 34.0 NULL -1969-12-31 15:59:47.406 15601.0 NULL NULL -58.0 -15601.0 -21239.15 -4009457.0 NULL 1.835934226E9 -15601.0 56.611 58.0 NULL -1969-12-31 15:59:58.281 15601.0 NULL NULL 8.0 -15601.0 -21239.15 -4009457.0 NULL 2.060941111E9 -15601.0 -9.389 -8.0 NULL -1969-12-31 15:59:50.978 15601.0 NULL NULL 17.0 -15601.0 -21239.15 -4009457.0 NULL -4.02383473E8 -15601.0 -18.389 -17.0 NULL -1969-12-31 15:59:44.603 15601.0 NULL NULL -7.0 -15601.0 -21239.15 -4009457.0 NULL 7.2431482E8 -15601.0 5.611 7.0 NULL -1969-12-31 15:59:58.202 15601.0 NULL NULL -31.0 -15601.0 -21239.15 -4009457.0 NULL 9.26083522E8 -15601.0 29.611 31.0 NULL -1969-12-31 15:59:57.524 15601.0 NULL NULL -61.0 -15601.0 -21239.15 -4009457.0 NULL 1.977520464E9 -15601.0 59.611 61.0 NULL -1969-12-31 15:59:50.14 15601.0 NULL NULL 3.0 -15601.0 -21239.15 -4009457.0 NULL 2.70873212E8 -15601.0 -4.389 -3.0 NULL -1969-12-31 15:59:51.603 15601.0 NULL NULL -54.0 -15601.0 -21239.15 -4009457.0 NULL -1.754204761E9 -15601.0 52.611 54.0 NULL -1969-12-31 15:59:51.799 15601.0 NULL NULL -40.0 -15601.0 -21239.15 -4009457.0 NULL -6.26022907E8 -15601.0 38.611 40.0 NULL -1969-12-31 15:59:54.367 15601.0 NULL NULL 19.0 -15601.0 -21239.15 -4009457.0 NULL -4.08320174E8 -15601.0 -20.389 -19.0 NULL -1969-12-31 15:59:47.934 15601.0 NULL NULL 28.0 -15601.0 -21239.15 -4009457.0 NULL -1.852197646E9 -15601.0 -29.389 -28.0 NULL -1969-12-31 15:59:48.299 15601.0 NULL NULL -60.0 -15601.0 -21239.15 -4009457.0 NULL -5.19769452E8 -15601.0 58.611 60.0 NULL -1969-12-31 15:59:52.587 15601.0 NULL NULL -33.0 -15601.0 -21239.15 -4009457.0 NULL -1.447200533E9 -15601.0 31.611 33.0 NULL -1969-12-31 15:59:48.244 15601.0 NULL NULL 58.0 -15601.0 -21239.15 -4009457.0 NULL 8.05651213E8 -15601.0 -59.389 -58.0 NULL -1969-12-31 15:59:44.054 15601.0 NULL NULL -14.0 -15601.0 -21239.15 -4009457.0 NULL -1.863218091E9 -15601.0 12.611 14.0 NULL -1969-12-31 15:59:52.311 15601.0 NULL NULL 43.0 -15601.0 -21239.15 -4009457.0 NULL 2.113655898E9 -15601.0 -44.389 -43.0 NULL -1969-12-31 15:59:49.896 15601.0 NULL NULL 46.0 -15601.0 -21239.15 -4009457.0 NULL -1.063485834E9 -15601.0 -47.389 -46.0 NULL -1969-12-31 15:59:47.81 15601.0 NULL NULL -33.0 -15601.0 -21239.15 -4009457.0 NULL -1.87077748E9 -15601.0 31.611 33.0 NULL -1969-12-31 15:59:44.96 15601.0 NULL NULL -49.0 -15601.0 -21239.15 -4009457.0 NULL -1.9766845E8 -15601.0 47.611 49.0 NULL -1969-12-31 15:59:46.328 15601.0 NULL NULL -37.0 -15601.0 -21239.15 -4009457.0 NULL -1.274244844E9 -15601.0 35.611 37.0 NULL -1969-12-31 15:59:53.953 -7196.0 NULL NULL -13.0 7196.0 1557.8500000000004 1849372.0 NULL -1.493809095E9 7196.0 11.611 13.0 NULL -1969-12-31 15:59:57.154 -7196.0 NULL NULL 57.0 7196.0 1557.8500000000004 1849372.0 NULL 1.073643179E9 7196.0 -58.389 -57.0 NULL -1969-12-31 15:59:53.609 -7196.0 NULL NULL 10.0 7196.0 1557.8500000000004 1849372.0 NULL 1.467133758E9 7196.0 -11.389 -10.0 NULL -1969-12-31 15:59:54.927 -7196.0 NULL NULL 26.0 7196.0 1557.8500000000004 1849372.0 NULL 1.462755707E9 7196.0 -27.389 -26.0 NULL -1969-12-31 15:59:55.105 -7196.0 NULL NULL 44.0 7196.0 1557.8500000000004 1849372.0 NULL -5.56475393E8 7196.0 -45.389 -44.0 NULL -1969-12-31 15:59:53.129 -7196.0 NULL NULL 57.0 7196.0 1557.8500000000004 1849372.0 NULL -1.15050011E8 7196.0 -58.389 -57.0 NULL -1969-12-31 15:59:48.136 -7196.0 NULL NULL 0.0 7196.0 1557.8500000000004 1849372.0 NULL 2.136723612E9 7196.0 -1.389 -0.0 NULL -1969-12-31 15:59:52.955 -7196.0 NULL NULL -20.0 7196.0 1557.8500000000004 1849372.0 NULL -1.90579536E8 7196.0 18.611 20.0 NULL -1969-12-31 15:59:54.133 -7196.0 NULL NULL 11.0 7196.0 1557.8500000000004 1849372.0 NULL 1.182976304E9 7196.0 -12.389 -11.0 NULL -1969-12-31 15:59:49.006 -7196.0 NULL NULL -40.0 7196.0 1557.8500000000004 1849372.0 NULL -1.732832672E9 7196.0 38.611 40.0 NULL -1969-12-31 15:59:50.54 -7196.0 NULL NULL -51.0 7196.0 1557.8500000000004 1849372.0 NULL -7.41899242E8 7196.0 49.611 51.0 NULL -1969-12-31 15:59:52.22 -7196.0 NULL NULL 61.0 7196.0 1557.8500000000004 1849372.0 NULL -1.680611716E9 7196.0 -62.389 -61.0 NULL -1969-12-31 15:59:58.876 -7196.0 NULL NULL 10.0 7196.0 1557.8500000000004 1849372.0 NULL -5.43553783E8 7196.0 -11.389 -10.0 NULL -1969-12-31 15:59:48.85 -7196.0 NULL NULL 25.0 7196.0 1557.8500000000004 1849372.0 NULL -2.084383767E9 7196.0 -26.389 -25.0 NULL -1969-12-31 15:59:57.771 -7196.0 NULL NULL 45.0 7196.0 1557.8500000000004 1849372.0 NULL 2.6150282E7 7196.0 -46.389 -45.0 NULL -1969-12-31 15:59:44.942 -7196.0 NULL NULL 59.0 7196.0 1557.8500000000004 1849372.0 NULL 1.48239219E9 7196.0 -60.389 -59.0 NULL -1969-12-31 15:59:57.222 -7196.0 NULL NULL 2.0 7196.0 1557.8500000000004 1849372.0 NULL 3.82932678E8 7196.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:48.688 -7196.0 NULL NULL 52.0 7196.0 1557.8500000000004 1849372.0 NULL 6.49954192E8 7196.0 -53.389 -52.0 NULL -1969-12-31 15:59:54.179 -7196.0 NULL NULL -18.0 7196.0 1557.8500000000004 1849372.0 NULL 1.219110634E9 7196.0 16.611 18.0 NULL -1969-12-31 15:59:46.194 -7196.0 NULL NULL 3.0 7196.0 1557.8500000000004 1849372.0 NULL -1.126600084E9 7196.0 -4.389 -3.0 NULL -1969-12-31 15:59:53.97 -7196.0 NULL NULL 25.0 7196.0 1557.8500000000004 1849372.0 NULL -1.591140012E9 7196.0 -26.389 -25.0 NULL -1969-12-31 15:59:57.86 -7196.0 NULL NULL -52.0 7196.0 1557.8500000000004 1849372.0 NULL -2.6302093E7 7196.0 50.611 52.0 NULL -1969-12-31 15:59:55.626 -7196.0 NULL NULL -15.0 7196.0 1557.8500000000004 1849372.0 NULL 1.509591622E9 7196.0 13.611 15.0 NULL -1969-12-31 15:59:50.595 -7196.0 NULL NULL -25.0 7196.0 1557.8500000000004 1849372.0 NULL 4.3936613E8 7196.0 23.611 25.0 NULL -1969-12-31 15:59:52.31 -7196.0 NULL NULL -37.0 7196.0 1557.8500000000004 1849372.0 NULL -6.62483065E8 7196.0 35.611 37.0 NULL -1969-12-31 15:59:43.874 -7196.0 NULL NULL -8.0 7196.0 1557.8500000000004 1849372.0 NULL -1.877561582E9 7196.0 6.611 8.0 NULL -1969-12-31 15:59:47.859 -7196.0 NULL NULL -58.0 7196.0 1557.8500000000004 1849372.0 NULL -1.770436678E9 7196.0 56.611 58.0 NULL -1969-12-31 15:59:57.048 -7196.0 NULL NULL 38.0 7196.0 1557.8500000000004 1849372.0 NULL 8.06495441E8 7196.0 -39.389 -38.0 NULL -1969-12-31 15:59:46.727 -7196.0 NULL NULL 16.0 7196.0 1557.8500000000004 1849372.0 NULL 1.233041715E9 7196.0 -17.389 -16.0 NULL -1969-12-31 15:59:58.991 -7196.0 NULL NULL -22.0 7196.0 1557.8500000000004 1849372.0 NULL -1.635026882E9 7196.0 20.611 22.0 NULL -1969-12-31 15:59:44.947 -7196.0 NULL NULL -29.0 7196.0 1557.8500000000004 1849372.0 NULL -5.50145718E8 7196.0 27.611 29.0 NULL -1969-12-31 15:59:58.214 -7196.0 NULL NULL 22.0 7196.0 1557.8500000000004 1849372.0 NULL 9.74116673E8 7196.0 -23.389 -22.0 NULL -1969-12-31 15:59:53.503 -7196.0 NULL NULL -38.0 7196.0 1557.8500000000004 1849372.0 NULL NULL 7196.0 36.611 38.0 NULL -1969-12-31 15:59:48.12 -7196.0 NULL NULL 8.0 7196.0 1557.8500000000004 1849372.0 NULL 1.658899636E9 7196.0 -9.389 -8.0 NULL -1969-12-31 15:59:48.734 -7196.0 NULL NULL 62.0 7196.0 1557.8500000000004 1849372.0 NULL 1.602163782E9 7196.0 -63.389 -62.0 NULL -1969-12-31 15:59:44.281 -7196.0 NULL NULL -30.0 7196.0 1557.8500000000004 1849372.0 NULL 1.385310682E9 7196.0 28.611 30.0 NULL -1969-12-31 15:59:56.084 -7196.0 NULL NULL 17.0 7196.0 1557.8500000000004 1849372.0 NULL 1.8243404E7 7196.0 -18.389 -17.0 NULL -1969-12-31 15:59:54.742 -7196.0 NULL NULL -49.0 7196.0 1557.8500000000004 1849372.0 NULL -7.52914609E8 7196.0 47.611 49.0 NULL -1969-12-31 15:59:58.329 -7196.0 NULL NULL -6.0 7196.0 1557.8500000000004 1849372.0 NULL -1.416086847E9 7196.0 4.611 6.0 NULL -1969-12-31 15:59:55.9 -7196.0 NULL NULL -21.0 7196.0 1557.8500000000004 1849372.0 NULL 1.542436196E9 7196.0 19.611 21.0 NULL -1969-12-31 15:59:54.701 -7196.0 NULL NULL 29.0 7196.0 1557.8500000000004 1849372.0 NULL 1.841107666E9 7196.0 -30.389 -29.0 NULL -1969-12-31 15:59:55.065 -7196.0 NULL NULL 18.0 7196.0 1557.8500000000004 1849372.0 NULL 6.67678582E8 7196.0 -19.389 -18.0 NULL -1969-12-31 15:59:53.648 -7196.0 NULL NULL -20.0 7196.0 1557.8500000000004 1849372.0 NULL -3.0444556E8 7196.0 18.611 20.0 NULL -1969-12-31 15:59:57.765 -7196.0 NULL NULL -3.0 7196.0 1557.8500000000004 1849372.0 NULL -1.330731844E9 7196.0 1.611 3.0 NULL -1969-12-31 15:59:43.948 -7196.0 NULL NULL -5.0 7196.0 1557.8500000000004 1849372.0 NULL -1.556791801E9 7196.0 3.6109999999999998 5.0 NULL -1969-12-31 15:59:52.435 -7196.0 NULL NULL -36.0 7196.0 1557.8500000000004 1849372.0 NULL 2.04172669E8 7196.0 34.611 36.0 NULL -1969-12-31 15:59:43.854 -7196.0 NULL NULL 18.0 7196.0 1557.8500000000004 1849372.0 NULL 3.07012781E8 7196.0 -19.389 -18.0 NULL -1969-12-31 15:59:30.929 -7196.0 NULL NULL 49.0 7196.0 1557.8500000000004 1849372.0 NULL 1.948230809E9 7196.0 -50.389 -49.0 NULL -1969-12-31 15:59:46.019 -7196.0 NULL NULL 36.0 7196.0 1557.8500000000004 1849372.0 NULL 1.086114917E9 7196.0 -37.389 -36.0 NULL -1969-12-31 15:59:49.316 -7196.0 NULL NULL 12.0 7196.0 1557.8500000000004 1849372.0 NULL 5.03280706E8 7196.0 -13.389 -12.0 NULL -1969-12-31 15:59:58.102 -7196.0 NULL NULL -14.0 7196.0 1557.8500000000004 1849372.0 NULL 1.02836952E8 7196.0 12.611 14.0 NULL -1969-12-31 15:59:45.046 -7196.0 NULL NULL -57.0 7196.0 1557.8500000000004 1849372.0 NULL -7.29441319E8 7196.0 55.611 57.0 NULL -1969-12-31 15:59:55.971 -7196.0 NULL NULL 8.0 7196.0 1557.8500000000004 1849372.0 NULL -2.81028289E8 7196.0 -9.389 -8.0 NULL -1969-12-31 15:59:52.408 -7196.0 NULL NULL -60.0 7196.0 1557.8500000000004 1849372.0 NULL 1.516321946E9 7196.0 58.611 60.0 NULL -1969-12-31 15:59:48.035 -7196.0 NULL NULL -61.0 7196.0 1557.8500000000004 1849372.0 NULL 1.237555513E9 7196.0 59.611 61.0 NULL -1969-12-31 15:59:53.876 -7196.0 NULL NULL 37.0 7196.0 1557.8500000000004 1849372.0 NULL -1.880059528E9 7196.0 -38.389 -37.0 NULL -1969-12-31 15:59:52.044 -7196.0 NULL NULL 26.0 7196.0 1557.8500000000004 1849372.0 NULL 7.684931E8 7196.0 -27.389 -26.0 NULL -1969-12-31 15:59:55.667 -7196.0 NULL NULL 56.0 7196.0 1557.8500000000004 1849372.0 NULL -2.145474795E9 7196.0 -57.389 -56.0 NULL -1969-12-31 15:59:46.891 -7196.0 NULL NULL 57.0 7196.0 1557.8500000000004 1849372.0 NULL -1.653543471E9 7196.0 -58.389 -57.0 NULL -1969-12-31 15:59:52.256 -7196.0 NULL NULL -39.0 7196.0 1557.8500000000004 1849372.0 NULL -1.668968626E9 7196.0 37.611 39.0 NULL -1969-12-31 15:59:55.143 -7196.0 NULL NULL -53.0 7196.0 1557.8500000000004 1849372.0 NULL -6.18483745E8 7196.0 51.611 53.0 NULL -1969-12-31 15:59:58.264 -7196.0 NULL NULL 34.0 7196.0 1557.8500000000004 1849372.0 NULL -6.2408234E8 7196.0 -35.389 -34.0 NULL -1969-12-31 15:59:52.092 -7196.0 NULL NULL -51.0 7196.0 1557.8500000000004 1849372.0 NULL 1.693407502E9 7196.0 49.611 51.0 NULL -1969-12-31 15:59:46.743 -7196.0 NULL NULL -22.0 7196.0 1557.8500000000004 1849372.0 NULL -1.867591815E9 7196.0 20.611 22.0 NULL -1969-12-31 15:59:52.424 -7196.0 NULL NULL -50.0 7196.0 1557.8500000000004 1849372.0 NULL NULL 7196.0 48.611 50.0 NULL -1969-12-31 15:59:48.083 -7196.0 NULL NULL 9.0 7196.0 1557.8500000000004 1849372.0 NULL 1.53665061E8 7196.0 -10.389 -9.0 NULL -1969-12-31 15:59:51.992 -7196.0 NULL NULL 44.0 7196.0 1557.8500000000004 1849372.0 NULL -8.4625491E8 7196.0 -45.389 -44.0 NULL -1969-12-31 15:59:54.134 -7196.0 NULL NULL 5.0 7196.0 1557.8500000000004 1849372.0 NULL 6.48756573E8 7196.0 -6.389 -5.0 NULL -1969-12-31 15:59:51.453 -7196.0 NULL NULL -18.0 7196.0 1557.8500000000004 1849372.0 NULL 1.088546062E9 7196.0 16.611 18.0 NULL -1969-12-31 15:59:47.902 -7196.0 NULL NULL 21.0 7196.0 1557.8500000000004 1849372.0 NULL 9.33200634E8 7196.0 -22.389 -21.0 NULL -1969-12-31 15:59:58.615 -7196.0 NULL NULL 25.0 7196.0 1557.8500000000004 1849372.0 NULL 2.12117686E9 7196.0 -26.389 -25.0 NULL -1969-12-31 15:59:46.511 -7196.0 NULL NULL 11.0 7196.0 1557.8500000000004 1849372.0 NULL 1.37554708E9 7196.0 -12.389 -11.0 NULL -1969-12-31 15:59:46.847 -7196.0 NULL NULL -26.0 7196.0 1557.8500000000004 1849372.0 NULL -7.1366227E7 7196.0 24.611 26.0 NULL -1969-12-31 15:59:45.317 -7196.0 NULL NULL -34.0 7196.0 1557.8500000000004 1849372.0 NULL -1.636846067E9 7196.0 32.611 34.0 NULL -1969-12-31 15:59:56.31 -7196.0 NULL NULL 27.0 7196.0 1557.8500000000004 1849372.0 NULL 1.00718493E9 7196.0 -28.389 -27.0 NULL -1969-12-31 15:59:45.811 -7196.0 NULL NULL -39.0 7196.0 1557.8500000000004 1849372.0 NULL -5.95627704E8 7196.0 37.611 39.0 NULL -1969-12-31 15:59:48.225 -7196.0 NULL NULL 46.0 7196.0 1557.8500000000004 1849372.0 NULL 1.372937199E9 7196.0 -47.389 -46.0 NULL -1969-12-31 15:59:48.462 -7196.0 NULL NULL -16.0 7196.0 1557.8500000000004 1849372.0 NULL -1.675927534E9 7196.0 14.611 16.0 NULL -1969-12-31 15:59:46.645 -7196.0 NULL NULL -6.0 7196.0 1557.8500000000004 1849372.0 NULL 7.59677014E8 7196.0 4.611 6.0 NULL -1969-12-31 15:59:43.851 -7196.0 NULL NULL -5.0 7196.0 1557.8500000000004 1849372.0 NULL 1.874774751E9 7196.0 3.6109999999999998 5.0 NULL -1969-12-31 15:59:57.05 -7196.0 NULL NULL 15.0 7196.0 1557.8500000000004 1849372.0 NULL 5.74467128E8 7196.0 -16.389 -15.0 NULL -1969-12-31 15:59:49.304 -7196.0 NULL NULL -37.0 7196.0 1557.8500000000004 1849372.0 NULL -1.105717926E9 7196.0 35.611 37.0 NULL -1969-12-31 15:59:55.528 -7196.0 NULL NULL 15.0 7196.0 1557.8500000000004 1849372.0 NULL -7.94726903E8 7196.0 -16.389 -15.0 NULL -1969-12-31 15:59:56.568 -7196.0 NULL NULL 55.0 7196.0 1557.8500000000004 1849372.0 NULL 4.68606613E8 7196.0 -56.389 -55.0 NULL -1969-12-31 15:59:55.911 -7196.0 NULL NULL 3.0 7196.0 1557.8500000000004 1849372.0 NULL 3.63919954E8 7196.0 -4.389 -3.0 NULL -1969-12-31 15:59:55.857 -7196.0 NULL NULL -58.0 7196.0 1557.8500000000004 1849372.0 NULL -8.25167361E8 7196.0 56.611 58.0 NULL -1969-12-31 15:59:46.146 -7196.0 NULL NULL 49.0 7196.0 1557.8500000000004 1849372.0 NULL -1.496548228E9 7196.0 -50.389 -49.0 NULL -1969-12-31 15:59:44.539 -7196.0 NULL NULL -57.0 7196.0 1557.8500000000004 1849372.0 NULL 1.839599603E9 7196.0 55.611 57.0 NULL -1969-12-31 15:59:48.979 -7196.0 NULL NULL -19.0 7196.0 1557.8500000000004 1849372.0 NULL 9.13440069E8 7196.0 17.611 19.0 NULL -1969-12-31 15:59:48.306 -7196.0 NULL NULL -10.0 7196.0 1557.8500000000004 1849372.0 NULL 8.35192558E8 7196.0 8.611 10.0 NULL -1969-12-31 15:59:45.244 -7196.0 NULL NULL -42.0 7196.0 1557.8500000000004 1849372.0 NULL -1.235281909E9 7196.0 40.611 42.0 NULL -1969-12-31 15:59:54.582 -7196.0 NULL NULL 53.0 7196.0 1557.8500000000004 1849372.0 NULL 764.0 7196.0 -54.389 -53.0 NULL -1969-12-31 15:59:52.108 -7196.0 NULL NULL -56.0 7196.0 1557.8500000000004 1849372.0 NULL -1.06431686E9 7196.0 54.611 56.0 NULL -1969-12-31 15:59:46.322 -7196.0 NULL NULL 19.0 7196.0 1557.8500000000004 1849372.0 NULL -1.617961037E9 7196.0 -20.389 -19.0 NULL -1969-12-31 15:59:46 -7196.0 NULL NULL 9.0 7196.0 1557.8500000000004 1849372.0 NULL -2.132529769E9 7196.0 -10.389 -9.0 NULL -1969-12-31 15:59:50.19 -7196.0 NULL NULL 42.0 7196.0 1557.8500000000004 1849372.0 NULL -8.03371821E8 7196.0 -43.389 -42.0 NULL -1969-12-31 15:59:52.242 -7196.0 NULL NULL 46.0 7196.0 1557.8500000000004 1849372.0 NULL -2.107535941E9 7196.0 -47.389 -46.0 NULL -1969-12-31 15:59:52.411 -7196.0 NULL NULL 45.0 7196.0 1557.8500000000004 1849372.0 NULL -6.22894171E8 7196.0 -46.389 -45.0 NULL -1969-12-31 15:59:46.775 -7196.0 NULL NULL 4.0 7196.0 1557.8500000000004 1849372.0 NULL -3.05727447E8 7196.0 -5.389 -4.0 NULL -1969-12-31 15:59:51.038 -7196.0 NULL NULL -12.0 7196.0 1557.8500000000004 1849372.0 NULL -1.938614081E9 7196.0 10.611 12.0 NULL -1969-12-31 15:59:52.118 -7196.0 NULL NULL -7.0 7196.0 1557.8500000000004 1849372.0 NULL 2.021653981E9 7196.0 5.611 7.0 NULL -1969-12-31 15:59:55.269 -7196.0 NULL NULL 54.0 7196.0 1557.8500000000004 1849372.0 NULL 2.142299968E9 7196.0 -55.389 -54.0 NULL -1969-12-31 15:59:57.916 -7196.0 NULL NULL 4.0 7196.0 1557.8500000000004 1849372.0 NULL -7.92008443E8 7196.0 -5.389 -4.0 NULL -1969-12-31 15:59:58.442 -7196.0 NULL NULL 47.0 7196.0 1557.8500000000004 1849372.0 NULL -1.145919351E9 7196.0 -48.389 -47.0 NULL -1969-12-31 15:59:52.145 -7196.0 NULL NULL -41.0 7196.0 1557.8500000000004 1849372.0 NULL -9.1968928E8 7196.0 39.611 41.0 NULL -1969-12-31 15:59:45.518 -7196.0 NULL NULL 47.0 7196.0 1557.8500000000004 1849372.0 NULL 1.726455914E9 7196.0 -48.389 -47.0 NULL -1969-12-31 15:59:45.833 -7196.0 NULL NULL 37.0 7196.0 1557.8500000000004 1849372.0 NULL -1.076088024E9 7196.0 -38.389 -37.0 NULL -1969-12-31 15:59:44.401 -7196.0 NULL NULL 5.0 7196.0 1557.8500000000004 1849372.0 NULL -1.716817778E9 7196.0 -6.389 -5.0 NULL -1969-12-31 15:59:56.344 -7196.0 NULL NULL 48.0 7196.0 1557.8500000000004 1849372.0 NULL -1.917116843E9 7196.0 -49.389 -48.0 NULL -1969-12-31 15:59:57.447 -7196.0 NULL NULL 53.0 7196.0 1557.8500000000004 1849372.0 NULL -3.50683509E8 7196.0 -54.389 -53.0 NULL -1969-12-31 15:59:51.116 -7196.0 NULL NULL -21.0 7196.0 1557.8500000000004 1849372.0 NULL -1.888543314E9 7196.0 19.611 21.0 NULL -1969-12-31 15:59:44.646 -7196.0 NULL NULL 54.0 7196.0 1557.8500000000004 1849372.0 NULL 3.24842023E8 7196.0 -55.389 -54.0 NULL -1969-12-31 15:59:46.195 -7196.0 NULL NULL 57.0 7196.0 1557.8500000000004 1849372.0 NULL 1.57784941E8 7196.0 -58.389 -57.0 NULL -1969-12-31 15:59:54.853 -7196.0 NULL NULL 42.0 7196.0 1557.8500000000004 1849372.0 NULL -1.057469499E9 7196.0 -43.389 -42.0 NULL -1969-12-31 15:59:53.981 -7196.0 NULL NULL 34.0 7196.0 1557.8500000000004 1849372.0 NULL 1.31859871E8 7196.0 -35.389 -34.0 NULL -1969-12-31 15:59:44.877 -7196.0 NULL NULL 61.0 7196.0 1557.8500000000004 1849372.0 NULL 1669167.0 7196.0 -62.389 -61.0 NULL -1969-12-31 15:59:50.035 -7196.0 NULL NULL 43.0 7196.0 1557.8500000000004 1849372.0 NULL -1.640633822E9 7196.0 -44.389 -43.0 NULL -1969-12-31 15:59:43.932 -7196.0 NULL NULL -55.0 7196.0 1557.8500000000004 1849372.0 NULL 1.982388833E9 7196.0 53.611 55.0 NULL -1969-12-31 15:59:50.544 -7196.0 NULL NULL 25.0 7196.0 1557.8500000000004 1849372.0 NULL -7.05278363E8 7196.0 -26.389 -25.0 NULL -1969-12-31 15:59:51.978 -7196.0 NULL NULL -18.0 7196.0 1557.8500000000004 1849372.0 NULL -4.74299327E8 7196.0 16.611 18.0 NULL -1969-12-31 15:59:51.311 -7196.0 NULL NULL -21.0 7196.0 1557.8500000000004 1849372.0 NULL 1.30493902E8 7196.0 19.611 21.0 NULL -1969-12-31 15:59:53.585 -7196.0 NULL NULL -10.0 7196.0 1557.8500000000004 1849372.0 NULL 5.76691115E8 7196.0 8.611 10.0 NULL -1969-12-31 15:59:49.26 -7196.0 NULL NULL 1.0 7196.0 1557.8500000000004 1849372.0 NULL 1.643270721E9 7196.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:58.625 -7196.0 NULL NULL -6.0 7196.0 1557.8500000000004 1849372.0 NULL 1.93415214E9 7196.0 4.611 6.0 NULL -1969-12-31 15:59:54.143 -7196.0 NULL NULL 53.0 7196.0 1557.8500000000004 1849372.0 NULL 1.277756127E9 7196.0 -54.389 -53.0 NULL -1969-12-31 15:59:57.093 -7196.0 NULL NULL -54.0 7196.0 1557.8500000000004 1849372.0 NULL -9.28768202E8 7196.0 52.611 54.0 NULL -1969-12-31 15:59:54.934 -7196.0 NULL NULL -33.0 7196.0 1557.8500000000004 1849372.0 NULL 8.54812293E8 7196.0 31.611 33.0 NULL -1969-12-31 15:59:44.462 -7196.0 NULL NULL -7.0 7196.0 1557.8500000000004 1849372.0 NULL 1.802573255E9 7196.0 5.611 7.0 NULL -1969-12-31 15:59:57.835 -7196.0 NULL NULL -28.0 7196.0 1557.8500000000004 1849372.0 NULL -1.946167779E9 7196.0 26.611 28.0 NULL -1969-12-31 15:59:50.265 -7196.0 NULL NULL 3.0 7196.0 1557.8500000000004 1849372.0 NULL -1.66883629E9 7196.0 -4.389 -3.0 NULL -1969-12-31 15:59:55.997 -7196.0 NULL NULL -37.0 7196.0 1557.8500000000004 1849372.0 NULL 1.20713546E9 7196.0 35.611 37.0 NULL -1969-12-31 15:59:55.802 -7196.0 NULL NULL 10.0 7196.0 1557.8500000000004 1849372.0 NULL -6.31658085E8 7196.0 -11.389 -10.0 NULL -1969-12-31 15:59:45.385 -7196.0 NULL NULL -60.0 7196.0 1557.8500000000004 1849372.0 NULL 1.775874262E9 7196.0 58.611 60.0 NULL -1969-12-31 15:59:54.196 -7196.0 NULL NULL 50.0 7196.0 1557.8500000000004 1849372.0 NULL -1.769999577E9 7196.0 -51.389 -50.0 NULL -1969-12-31 15:59:58.463 -7196.0 NULL NULL -7.0 7196.0 1557.8500000000004 1849372.0 NULL 1.855445683E9 7196.0 5.611 7.0 NULL -1969-12-31 15:59:55.885 -7196.0 NULL NULL -19.0 7196.0 1557.8500000000004 1849372.0 NULL 1.794533227E9 7196.0 17.611 19.0 NULL -1969-12-31 15:59:44.669 -7196.0 NULL NULL 41.0 7196.0 1557.8500000000004 1849372.0 NULL 2.5325193E8 7196.0 -42.389 -41.0 NULL -1969-12-31 15:59:50.281 -7196.0 NULL NULL 29.0 7196.0 1557.8500000000004 1849372.0 NULL -4.68540986E8 7196.0 -30.389 -29.0 NULL -1969-12-31 15:59:56.024 -7196.0 NULL NULL 7.0 7196.0 1557.8500000000004 1849372.0 NULL -2.036793233E9 7196.0 -8.389 -7.0 NULL -1969-12-31 15:59:54.962 -7196.0 NULL NULL -17.0 7196.0 1557.8500000000004 1849372.0 NULL 1.83836149E8 7196.0 15.611 17.0 NULL -1969-12-31 15:59:45.764 -7196.0 NULL NULL 54.0 7196.0 1557.8500000000004 1849372.0 NULL -6.61700344E8 7196.0 -55.389 -54.0 NULL -1969-12-31 15:59:43.637 -7196.0 NULL NULL -44.0 7196.0 1557.8500000000004 1849372.0 NULL 1.100301451E9 7196.0 42.611 44.0 NULL -1969-12-31 15:59:51.357 -7196.0 NULL NULL -37.0 7196.0 1557.8500000000004 1849372.0 NULL 1.943319706E9 7196.0 35.611 37.0 NULL -1969-12-31 15:59:44.286 -7196.0 NULL NULL 16.0 7196.0 1557.8500000000004 1849372.0 NULL 1.517432808E9 7196.0 -17.389 -16.0 NULL -1969-12-31 15:59:58.061 -7196.0 NULL NULL -9.0 7196.0 1557.8500000000004 1849372.0 NULL 1.2346838E8 7196.0 7.611 9.0 NULL -1969-12-31 15:59:45.591 -7196.0 NULL NULL 57.0 7196.0 1557.8500000000004 1849372.0 NULL 1.658228637E9 7196.0 -58.389 -57.0 NULL -1969-12-31 15:59:47.198 -7196.0 NULL NULL 46.0 7196.0 1557.8500000000004 1849372.0 NULL -3.6369946E8 7196.0 -47.389 -46.0 NULL -1969-12-31 15:59:47.991 -7196.0 NULL NULL -8.0 7196.0 1557.8500000000004 1849372.0 NULL 5.1925409E7 7196.0 6.611 8.0 NULL -1969-12-31 15:59:54.686 -7196.0 NULL NULL -49.0 7196.0 1557.8500000000004 1849372.0 NULL -1.71565068E9 7196.0 47.611 49.0 NULL -1969-12-31 15:59:58.544 -7196.0 NULL NULL -40.0 7196.0 1557.8500000000004 1849372.0 NULL 1.510882127E9 7196.0 38.611 40.0 NULL -1969-12-31 15:59:51.675 -7196.0 NULL NULL 59.0 7196.0 1557.8500000000004 1849372.0 NULL 8.87038639E8 7196.0 -60.389 -59.0 NULL -1969-12-31 15:59:50.137 -7196.0 NULL NULL -41.0 7196.0 1557.8500000000004 1849372.0 NULL 1.04006107E8 7196.0 39.611 41.0 NULL -1969-12-31 15:59:50.314 -7196.0 NULL NULL 15.0 7196.0 1557.8500000000004 1849372.0 NULL 1.409482534E9 7196.0 -16.389 -15.0 NULL -1969-12-31 15:59:54.432 -7196.0 NULL NULL 23.0 7196.0 1557.8500000000004 1849372.0 NULL -1.2704243E8 7196.0 -24.389 -23.0 NULL -1969-12-31 15:59:51.539 -7196.0 NULL NULL -4.0 7196.0 1557.8500000000004 1849372.0 NULL -4.21574344E8 7196.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:45.657 -7196.0 NULL NULL 21.0 7196.0 1557.8500000000004 1849372.0 NULL 9.78167368E8 7196.0 -22.389 -21.0 NULL -1969-12-31 15:59:49.913 -7196.0 NULL NULL -29.0 7196.0 1557.8500000000004 1849372.0 NULL -8.62206603E8 7196.0 27.611 29.0 NULL -1969-12-31 15:59:52.405 -7196.0 NULL NULL 54.0 7196.0 1557.8500000000004 1849372.0 NULL 1.48384706E9 7196.0 -55.389 -54.0 NULL -1969-12-31 15:59:51.645 -7196.0 NULL NULL -7.0 7196.0 1557.8500000000004 1849372.0 NULL -2.89295834E8 7196.0 5.611 7.0 NULL -1969-12-31 15:59:46.752 -7196.0 NULL NULL -46.0 7196.0 1557.8500000000004 1849372.0 NULL 4.41253581E8 7196.0 44.611 46.0 NULL -1969-12-31 15:59:47.586 -7196.0 NULL NULL 0.0 7196.0 1557.8500000000004 1849372.0 NULL -2.7753946E8 7196.0 -1.389 -0.0 NULL -1969-12-31 15:59:51.433 -7196.0 NULL NULL -43.0 7196.0 1557.8500000000004 1849372.0 NULL -1.328829928E9 7196.0 41.611 43.0 NULL -1969-12-31 15:59:55.795 -7196.0 NULL NULL 9.0 7196.0 1557.8500000000004 1849372.0 NULL 1.649893776E9 7196.0 -10.389 -9.0 NULL -1969-12-31 15:59:52.861 -7196.0 NULL NULL 3.0 7196.0 1557.8500000000004 1849372.0 NULL -5.62304545E8 7196.0 -4.389 -3.0 NULL -1969-12-31 15:59:51.104 -7196.0 NULL NULL -17.0 7196.0 1557.8500000000004 1849372.0 NULL -5.06125772E8 7196.0 15.611 17.0 NULL -1969-12-31 15:59:49.909 -7196.0 NULL NULL -19.0 7196.0 1557.8500000000004 1849372.0 NULL 1.384650573E9 7196.0 17.611 19.0 NULL -1969-12-31 15:59:50.743 -7196.0 NULL NULL 57.0 7196.0 1557.8500000000004 1849372.0 NULL -4.67312724E8 7196.0 -58.389 -57.0 NULL -1969-12-31 15:59:51.442 -7196.0 NULL NULL -23.0 7196.0 1557.8500000000004 1849372.0 NULL 1.1741439E7 7196.0 21.611 23.0 NULL -1969-12-31 15:59:52.956 -7196.0 NULL NULL -4.0 7196.0 1557.8500000000004 1849372.0 NULL 1.577374318E9 7196.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:43.782 -7196.0 NULL NULL 51.0 7196.0 1557.8500000000004 1849372.0 NULL -1.607339819E9 7196.0 -52.389 -51.0 NULL -1969-12-31 15:59:51.009 -7196.0 NULL NULL -49.0 7196.0 1557.8500000000004 1849372.0 NULL NULL 7196.0 47.611 49.0 NULL -1969-12-31 15:59:51.561 -7196.0 NULL NULL -35.0 7196.0 1557.8500000000004 1849372.0 NULL 2.017657559E9 7196.0 33.611 35.0 NULL -1969-12-31 15:59:45.106 -7196.0 NULL NULL 11.0 7196.0 1557.8500000000004 1849372.0 NULL 1.2109708E9 7196.0 -12.389 -11.0 NULL -1969-12-31 15:59:58.479 -7196.0 NULL NULL -52.0 7196.0 1557.8500000000004 1849372.0 NULL -1.379686995E9 7196.0 50.611 52.0 NULL -1969-12-31 15:59:48.038 -7196.0 NULL NULL 30.0 7196.0 1557.8500000000004 1849372.0 NULL 1.05315713E9 7196.0 -31.389 -30.0 NULL -1969-12-31 15:59:48.882 -7196.0 NULL NULL -53.0 7196.0 1557.8500000000004 1849372.0 NULL -1.560652835E9 7196.0 51.611 53.0 NULL -1969-12-31 15:59:52.407 -7196.0 NULL NULL -23.0 7196.0 1557.8500000000004 1849372.0 NULL 1.888660729E9 7196.0 21.611 23.0 NULL -1969-12-31 15:59:48.569 -7196.0 NULL NULL 33.0 7196.0 1557.8500000000004 1849372.0 NULL -1.513064227E9 7196.0 -34.389 -33.0 NULL -1969-12-31 15:59:51.901 -7196.0 NULL NULL -21.0 7196.0 1557.8500000000004 1849372.0 NULL 7.63904078E8 7196.0 19.611 21.0 NULL -1969-12-31 15:59:53.458 -7196.0 NULL NULL 29.0 7196.0 1557.8500000000004 1849372.0 NULL 8.67830733E8 7196.0 -30.389 -29.0 NULL -1969-12-31 15:59:51.384 -7196.0 NULL NULL -31.0 7196.0 1557.8500000000004 1849372.0 NULL -6.26473013E8 7196.0 29.611 31.0 NULL -1969-12-31 15:59:45.572 -7196.0 NULL NULL 32.0 7196.0 1557.8500000000004 1849372.0 NULL -1.337160245E9 7196.0 -33.389 -32.0 NULL -1969-12-31 15:59:52.969 -7196.0 NULL NULL -27.0 7196.0 1557.8500000000004 1849372.0 NULL -3.32132033E8 7196.0 25.611 27.0 NULL -1969-12-31 15:59:50.432 -7196.0 NULL NULL -57.0 7196.0 1557.8500000000004 1849372.0 NULL -9.54525003E8 7196.0 55.611 57.0 NULL -1969-12-31 15:59:43.749 -7196.0 NULL NULL -39.0 7196.0 1557.8500000000004 1849372.0 NULL 3.96436076E8 7196.0 37.611 39.0 NULL -1969-12-31 15:59:47.031 -7196.0 NULL NULL -7.0 7196.0 1557.8500000000004 1849372.0 NULL 7.52272413E8 7196.0 5.611 7.0 NULL -1969-12-31 15:59:57.374 -7196.0 NULL NULL 22.0 7196.0 1557.8500000000004 1849372.0 NULL 1.25441743E8 7196.0 -23.389 -22.0 NULL -1969-12-31 15:59:45.555 -7196.0 NULL NULL -47.0 7196.0 1557.8500000000004 1849372.0 NULL 1.737076244E9 7196.0 45.611 47.0 NULL -1969-12-31 15:59:58.578 -7196.0 NULL NULL -41.0 7196.0 1557.8500000000004 1849372.0 NULL -1.887360765E9 7196.0 39.611 41.0 NULL -1969-12-31 15:59:51.356 -7196.0 NULL NULL 26.0 7196.0 1557.8500000000004 1849372.0 NULL -1.032138564E9 7196.0 -27.389 -26.0 NULL -1969-12-31 15:59:44.512 -7196.0 NULL NULL -39.0 7196.0 1557.8500000000004 1849372.0 NULL -3.98815261E8 7196.0 37.611 39.0 NULL -1969-12-31 15:59:46.115 -7196.0 NULL NULL -13.0 7196.0 1557.8500000000004 1849372.0 NULL -1.832587694E9 7196.0 11.611 13.0 NULL -1969-12-31 15:59:44.322 -7196.0 NULL NULL -53.0 7196.0 1557.8500000000004 1849372.0 NULL -5.75042107E8 7196.0 51.611 53.0 NULL -1969-12-31 15:59:55.332 -7196.0 NULL NULL -2.0 7196.0 1557.8500000000004 1849372.0 NULL 1.582819752E9 7196.0 0.611 2.0 NULL -1969-12-31 15:59:48.499 -7196.0 NULL NULL 26.0 7196.0 1557.8500000000004 1849372.0 NULL -1.3188156E8 7196.0 -27.389 -26.0 NULL -1969-12-31 15:59:57.932 -7196.0 NULL NULL -4.0 7196.0 1557.8500000000004 1849372.0 NULL 3.45919439E8 7196.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:50.996 -7196.0 NULL NULL 53.0 7196.0 1557.8500000000004 1849372.0 NULL 1.897319505E9 7196.0 -54.389 -53.0 NULL -1969-12-31 15:59:48.059 -7196.0 NULL NULL 38.0 7196.0 1557.8500000000004 1849372.0 NULL 7.99794602E8 7196.0 -39.389 -38.0 NULL -1969-12-31 15:59:52.699 -7196.0 NULL NULL 22.0 7196.0 1557.8500000000004 1849372.0 NULL NULL 7196.0 -23.389 -22.0 NULL -1969-12-31 15:59:51.382 -7196.0 NULL NULL 19.0 7196.0 1557.8500000000004 1849372.0 NULL 2.18505015E8 7196.0 -20.389 -19.0 NULL -1969-12-31 15:59:45.978 -7196.0 NULL NULL -52.0 7196.0 1557.8500000000004 1849372.0 NULL -2.128713114E9 7196.0 50.611 52.0 NULL -1969-12-31 15:59:52.507 -7196.0 NULL NULL -48.0 7196.0 1557.8500000000004 1849372.0 NULL -8.22139548E8 7196.0 46.611 48.0 NULL -1969-12-31 15:59:51.43 -7196.0 NULL NULL 26.0 7196.0 1557.8500000000004 1849372.0 NULL 1.902883549E9 7196.0 -27.389 -26.0 NULL -1969-12-31 15:59:46.585 -7196.0 NULL NULL -35.0 7196.0 1557.8500000000004 1849372.0 NULL -9.90625445E8 7196.0 33.611 35.0 NULL -1969-12-31 15:59:49.279 -7196.0 NULL NULL 31.0 7196.0 1557.8500000000004 1849372.0 NULL 3.78148004E8 7196.0 -32.389 -31.0 NULL -1969-12-31 15:59:55.13 -7196.0 NULL NULL -37.0 7196.0 1557.8500000000004 1849372.0 NULL 1.61272024E9 7196.0 35.611 37.0 NULL -1969-12-31 15:59:47.948 -7196.0 NULL NULL 26.0 7196.0 1557.8500000000004 1849372.0 NULL 6.99177266E8 7196.0 -27.389 -26.0 NULL -1969-12-31 15:59:57.57 -7196.0 NULL NULL -38.0 7196.0 1557.8500000000004 1849372.0 NULL -2.32004051E8 7196.0 36.611 38.0 NULL -1969-12-31 15:59:57.687 -7196.0 NULL NULL -9.0 7196.0 1557.8500000000004 1849372.0 NULL -1.097771055E9 7196.0 7.611 9.0 NULL -1969-12-31 15:59:47.493 -7196.0 NULL NULL -27.0 7196.0 1557.8500000000004 1849372.0 NULL -1.08670586E9 7196.0 25.611 27.0 NULL -1969-12-31 15:59:48.408 -7196.0 NULL NULL -35.0 7196.0 1557.8500000000004 1849372.0 NULL 1.199682677E9 7196.0 33.611 35.0 NULL -1969-12-31 15:59:52.205 -7196.0 NULL NULL -18.0 7196.0 1557.8500000000004 1849372.0 NULL -2.13878286E8 7196.0 16.611 18.0 NULL -1969-12-31 15:59:52 -7196.0 NULL NULL -18.0 7196.0 1557.8500000000004 1849372.0 NULL 3.44247588E8 7196.0 16.611 18.0 NULL -1969-12-31 15:59:52.31 -7196.0 NULL NULL -47.0 7196.0 1557.8500000000004 1849372.0 NULL -1.27812914E9 7196.0 45.611 47.0 NULL -1969-12-31 15:59:48.022 -7196.0 NULL NULL 35.0 7196.0 1557.8500000000004 1849372.0 NULL 5.23239094E8 7196.0 -36.389 -35.0 NULL -1969-12-31 15:59:44.907 -7196.0 NULL NULL -20.0 7196.0 1557.8500000000004 1849372.0 NULL 1.073157613E9 7196.0 18.611 20.0 NULL -1969-12-31 15:59:57.659 -7196.0 NULL NULL -33.0 7196.0 1557.8500000000004 1849372.0 NULL 1.480240152E9 7196.0 31.611 33.0 NULL -1969-12-31 15:59:55.317 -7196.0 NULL NULL -21.0 7196.0 1557.8500000000004 1849372.0 NULL 9.26201381E8 7196.0 19.611 21.0 NULL -1969-12-31 15:59:50.966 -7196.0 NULL NULL -51.0 7196.0 1557.8500000000004 1849372.0 NULL 6.01865564E8 7196.0 49.611 51.0 NULL -1969-12-31 15:59:54.905 -7196.0 NULL NULL 4.0 7196.0 1557.8500000000004 1849372.0 NULL -1.173914394E9 7196.0 -5.389 -4.0 NULL -1969-12-31 15:59:49.306 -7196.0 NULL NULL 18.0 7196.0 1557.8500000000004 1849372.0 NULL -9.06840568E8 7196.0 -19.389 -18.0 NULL -1969-12-31 15:59:54.307 -7196.0 NULL NULL -47.0 7196.0 1557.8500000000004 1849372.0 NULL 1.464699804E9 7196.0 45.611 47.0 NULL -1969-12-31 15:59:58.224 -7196.0 NULL NULL 28.0 7196.0 1557.8500000000004 1849372.0 NULL -3.29093774E8 7196.0 -29.389 -28.0 NULL -1969-12-31 15:59:46.511 -7196.0 NULL NULL -7.0 7196.0 1557.8500000000004 1849372.0 NULL 7.5440105E7 7196.0 5.611 7.0 NULL -1969-12-31 15:59:47.808 -7196.0 NULL NULL -59.0 7196.0 1557.8500000000004 1849372.0 NULL 1.227770088E9 7196.0 57.611 59.0 NULL -1969-12-31 15:59:48.395 -7196.0 NULL NULL 62.0 7196.0 1557.8500000000004 1849372.0 NULL -5.19763774E8 7196.0 -63.389 -62.0 NULL -1969-12-31 15:59:52.631 -7196.0 NULL NULL 20.0 7196.0 1557.8500000000004 1849372.0 NULL 1.59380739E9 7196.0 -21.389 -20.0 NULL -1969-12-31 15:59:58.171 -7196.0 NULL NULL 51.0 7196.0 1557.8500000000004 1849372.0 NULL 1.289275665E9 7196.0 -52.389 -51.0 NULL -1969-12-31 15:59:45.235 -7196.0 NULL NULL -53.0 7196.0 1557.8500000000004 1849372.0 NULL -3.4864541E7 7196.0 51.611 53.0 NULL -1969-12-31 15:59:53.746 -7196.0 NULL NULL -13.0 7196.0 1557.8500000000004 1849372.0 NULL -1.11462765E8 7196.0 11.611 13.0 NULL -1969-12-31 15:59:44.895 -7196.0 NULL NULL -28.0 7196.0 1557.8500000000004 1849372.0 NULL -9.5807803E7 7196.0 26.611 28.0 NULL -1969-12-31 15:59:52.826 -7196.0 NULL NULL -20.0 7196.0 1557.8500000000004 1849372.0 NULL -2.1558894E8 7196.0 18.611 20.0 NULL -1969-12-31 15:59:50.313 -7196.0 NULL NULL -30.0 7196.0 1557.8500000000004 1849372.0 NULL 3.43621147E8 7196.0 28.611 30.0 NULL -1969-12-31 15:59:58.75 -7196.0 NULL NULL -32.0 7196.0 1557.8500000000004 1849372.0 NULL -2.08553032E8 7196.0 30.611 32.0 NULL -1969-12-31 15:59:43.807 -7196.0 NULL NULL 42.0 7196.0 1557.8500000000004 1849372.0 NULL -5.98226333E8 7196.0 -43.389 -42.0 NULL -1969-12-31 15:59:45.595 -7196.0 NULL NULL 4.0 7196.0 1557.8500000000004 1849372.0 NULL -5.14458396E8 7196.0 -5.389 -4.0 NULL -1969-12-31 15:59:52.946 -7196.0 NULL NULL -13.0 7196.0 1557.8500000000004 1849372.0 NULL -1.900872297E9 7196.0 11.611 13.0 NULL -1969-12-31 15:59:45.451 -7196.0 NULL NULL 54.0 7196.0 1557.8500000000004 1849372.0 NULL -2.31545625E8 7196.0 -55.389 -54.0 NULL -1969-12-31 15:59:55.521 -7196.0 NULL NULL 57.0 7196.0 1557.8500000000004 1849372.0 NULL -1.058628954E9 7196.0 -58.389 -57.0 NULL -1969-12-31 15:59:44.57 -7196.0 NULL NULL 41.0 7196.0 1557.8500000000004 1849372.0 NULL 6.49079822E8 7196.0 -42.389 -41.0 NULL -1969-12-31 15:59:54.655 -7196.0 NULL NULL -36.0 7196.0 1557.8500000000004 1849372.0 NULL -3.66798404E8 7196.0 34.611 36.0 NULL -1969-12-31 15:59:57.499 -7196.0 NULL NULL 48.0 7196.0 1557.8500000000004 1849372.0 NULL -1.745641211E9 7196.0 -49.389 -48.0 NULL -1969-12-31 15:59:54.145 -7196.0 NULL NULL 34.0 7196.0 1557.8500000000004 1849372.0 NULL 9296065.0 7196.0 -35.389 -34.0 NULL -1969-12-31 15:59:57.664 -7196.0 NULL NULL -27.0 7196.0 1557.8500000000004 1849372.0 NULL 1.481895222E9 7196.0 25.611 27.0 NULL -1969-12-31 15:59:51.387 -7196.0 NULL NULL 1.0 7196.0 1557.8500000000004 1849372.0 NULL -9.11400621E8 7196.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:57.011 -7196.0 NULL NULL 42.0 7196.0 1557.8500000000004 1849372.0 NULL -5.4998017E8 7196.0 -43.389 -42.0 NULL -1969-12-31 15:59:45.932 -7196.0 NULL NULL -51.0 7196.0 1557.8500000000004 1849372.0 NULL 1.61172438E9 7196.0 49.611 51.0 NULL -1969-12-31 15:59:48.798 -7196.0 NULL NULL -57.0 7196.0 1557.8500000000004 1849372.0 NULL -1.073930117E9 7196.0 55.611 57.0 NULL -1969-12-31 15:59:53.686 -7196.0 NULL NULL -39.0 7196.0 1557.8500000000004 1849372.0 NULL -1.161925642E9 7196.0 37.611 39.0 NULL -1969-12-31 15:59:49.021 -7196.0 NULL NULL 2.0 7196.0 1557.8500000000004 1849372.0 NULL -5.80656033E8 7196.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:46.242 -7196.0 NULL NULL -15.0 7196.0 1557.8500000000004 1849372.0 NULL 1.081890151E9 7196.0 13.611 15.0 NULL -1969-12-31 15:59:44.292 -7196.0 NULL NULL -26.28 7196.0 1557.8500000000004 1849372.0 NULL -2.001435563E9 7196.0 24.89100068664551 26.28 NULL -1969-12-31 15:59:49.629 -7196.0 NULL NULL 36.0 7196.0 1557.8500000000004 1849372.0 NULL -1.476663243E9 7196.0 -37.389 -36.0 NULL -1969-12-31 15:59:49.331 -7196.0 NULL NULL -39.0 7196.0 1557.8500000000004 1849372.0 NULL 1.320383947E9 7196.0 37.611 39.0 NULL -1969-12-31 15:59:44.823 -7196.0 NULL NULL -61.0 7196.0 1557.8500000000004 1849372.0 NULL NULL 7196.0 59.611 61.0 NULL -1969-12-31 15:59:49.326 -7196.0 NULL NULL 39.0 7196.0 1557.8500000000004 1849372.0 NULL -7.7851258E8 7196.0 -40.389 -39.0 NULL -1969-12-31 15:59:49.442 -7196.0 NULL NULL 9.0 7196.0 1557.8500000000004 1849372.0 NULL 2.06208948E8 7196.0 -10.389 -9.0 NULL -1969-12-31 15:59:52.553 -7196.0 NULL NULL -13.0 7196.0 1557.8500000000004 1849372.0 NULL -2.38058528E8 7196.0 11.611 13.0 NULL -1969-12-31 15:59:49.314 -7196.0 NULL NULL -46.0 7196.0 1557.8500000000004 1849372.0 NULL -1.302382784E9 7196.0 44.611 46.0 NULL -1969-12-31 15:59:49.565 -7196.0 NULL NULL 52.0 7196.0 1557.8500000000004 1849372.0 NULL 1.198128858E9 7196.0 -53.389 -52.0 NULL -1969-12-31 15:59:55.53 -7196.0 NULL NULL -1.0 7196.0 1557.8500000000004 1849372.0 NULL 7.45158295E8 7196.0 -0.389 1.0 NULL -1969-12-31 15:59:48.929 -7196.0 NULL NULL -12.0 7196.0 1557.8500000000004 1849372.0 NULL -1.231237757E9 7196.0 10.611 12.0 NULL -1969-12-31 15:59:57.082 -7196.0 NULL NULL -57.0 7196.0 1557.8500000000004 1849372.0 NULL 8.33040147E8 7196.0 55.611 57.0 NULL -1969-12-31 15:59:46.966 -7196.0 NULL NULL 38.0 7196.0 1557.8500000000004 1849372.0 NULL 1.030296369E9 7196.0 -39.389 -38.0 NULL -1969-12-31 15:59:53.657 -7196.0 NULL NULL -54.0 7196.0 1557.8500000000004 1849372.0 NULL 1.476590011E9 7196.0 52.611 54.0 NULL -1969-12-31 15:59:48.641 -7196.0 NULL NULL -51.0 7196.0 1557.8500000000004 1849372.0 NULL 8018750.0 7196.0 49.611 51.0 NULL -1969-12-31 15:59:49.051 -7196.0 NULL NULL 15.0 7196.0 1557.8500000000004 1849372.0 NULL 1.104759225E9 7196.0 -16.389 -15.0 NULL -1969-12-31 15:59:44.159 -7196.0 NULL NULL 0.0 7196.0 1557.8500000000004 1849372.0 NULL -1.418864668E9 7196.0 -1.389 -0.0 NULL -1969-12-31 15:59:46.978 -7196.0 NULL NULL 32.0 7196.0 1557.8500000000004 1849372.0 NULL 5.94284764E8 7196.0 -33.389 -32.0 NULL -1969-12-31 15:59:54.132 -7196.0 NULL NULL 26.0 7196.0 1557.8500000000004 1849372.0 NULL 1.677639804E9 7196.0 -27.389 -26.0 NULL -1969-12-31 15:59:53.775 -7196.0 NULL NULL 1.0 7196.0 1557.8500000000004 1849372.0 NULL 1.33295386E8 7196.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:48.54 -7196.0 NULL NULL 52.0 7196.0 1557.8500000000004 1849372.0 NULL 1.49562755E9 7196.0 -53.389 -52.0 NULL -1969-12-31 15:59:54.776 -7196.0 NULL NULL 10.0 7196.0 1557.8500000000004 1849372.0 NULL -6.71294433E8 7196.0 -11.389 -10.0 NULL -1969-12-31 15:59:44.97 -7196.0 NULL NULL 25.0 7196.0 1557.8500000000004 1849372.0 NULL -1.326232818E9 7196.0 -26.389 -25.0 NULL -1969-12-31 15:59:49.23 -7196.0 NULL NULL 40.0 7196.0 1557.8500000000004 1849372.0 NULL 4.37991322E8 7196.0 -41.389 -40.0 NULL -1969-12-31 15:59:56.928 -7196.0 NULL NULL -42.0 7196.0 1557.8500000000004 1849372.0 NULL -1.675943075E9 7196.0 40.611 42.0 NULL -1969-12-31 15:59:49.273 -7196.0 NULL NULL -13.0 7196.0 1557.8500000000004 1849372.0 NULL -3.32278248E8 7196.0 11.611 13.0 NULL -1969-12-31 15:59:52.463 -7196.0 NULL NULL -19.0 7196.0 1557.8500000000004 1849372.0 NULL -9.21852841E8 7196.0 17.611 19.0 NULL -1969-12-31 15:59:48.105 -7196.0 NULL NULL -42.0 7196.0 1557.8500000000004 1849372.0 NULL 1.944923033E9 7196.0 40.611 42.0 NULL -1969-12-31 15:59:47.129 -7196.0 NULL NULL 52.0 7196.0 1557.8500000000004 1849372.0 NULL -2.24040296E8 7196.0 -53.389 -52.0 NULL -1969-12-31 15:59:55.492 -7196.0 NULL NULL 14.0 7196.0 1557.8500000000004 1849372.0 NULL 1.702043322E9 7196.0 -15.389 -14.0 NULL -1969-12-31 15:59:46.709 -7196.0 NULL NULL 62.0 7196.0 1557.8500000000004 1849372.0 NULL -4.6403515E7 7196.0 -63.389 -62.0 NULL -1969-12-31 15:59:54.63 -7196.0 NULL NULL -29.0 7196.0 1557.8500000000004 1849372.0 NULL -1.818067745E9 7196.0 27.611 29.0 NULL -1969-12-31 15:59:50.229 -7196.0 NULL NULL -28.0 7196.0 1557.8500000000004 1849372.0 NULL -5.44510047E8 7196.0 26.611 28.0 NULL -1969-12-31 15:59:50.192 -7196.0 NULL NULL 50.0 7196.0 1557.8500000000004 1849372.0 NULL -2.135133961E9 7196.0 -51.389 -50.0 NULL -1969-12-31 15:59:43.995 -7196.0 NULL NULL 31.0 7196.0 1557.8500000000004 1849372.0 NULL 996084.0 7196.0 -32.389 -31.0 NULL -1969-12-31 15:59:47.842 -7196.0 NULL NULL 46.0 7196.0 1557.8500000000004 1849372.0 NULL -1.064876165E9 7196.0 -47.389 -46.0 NULL -1969-12-31 15:59:52.674 -7196.0 NULL NULL -18.0 7196.0 1557.8500000000004 1849372.0 NULL 5.0098785E7 7196.0 16.611 18.0 NULL -1969-12-31 15:59:45.529 -7196.0 NULL NULL -43.0 7196.0 1557.8500000000004 1849372.0 NULL 9.56233801E8 7196.0 41.611 43.0 NULL -1969-12-31 15:59:53.213 -7196.0 NULL NULL 25.0 7196.0 1557.8500000000004 1849372.0 NULL 8.8754463E8 7196.0 -26.389 -25.0 NULL -1969-12-31 15:59:51.232 -7196.0 NULL NULL 10.0 7196.0 1557.8500000000004 1849372.0 NULL -1.2828024E8 7196.0 -11.389 -10.0 NULL -1969-12-31 15:59:56.426 -7196.0 NULL NULL 5.0 7196.0 1557.8500000000004 1849372.0 NULL -8.04933895E8 7196.0 -6.389 -5.0 NULL -1969-12-31 15:59:46.732 -7196.0 NULL NULL 27.0 7196.0 1557.8500000000004 1849372.0 NULL 1.140552749E9 7196.0 -28.389 -27.0 NULL -1969-12-31 15:59:57.159 -7196.0 NULL NULL 38.0 7196.0 1557.8500000000004 1849372.0 NULL -1.58253833E8 7196.0 -39.389 -38.0 NULL -1969-12-31 15:59:50.404 -7196.0 NULL NULL 16.0 7196.0 1557.8500000000004 1849372.0 NULL -2.016336986E9 7196.0 -17.389 -16.0 NULL -1969-12-31 15:59:56.225 -7196.0 NULL NULL 55.0 7196.0 1557.8500000000004 1849372.0 NULL -3.2879438E8 7196.0 -56.389 -55.0 NULL -1969-12-31 15:59:47.15 -7196.0 NULL NULL -52.0 7196.0 1557.8500000000004 1849372.0 NULL 6.28705365E8 7196.0 50.611 52.0 NULL -1969-12-31 15:59:55.806 -7196.0 NULL NULL -60.0 7196.0 1557.8500000000004 1849372.0 NULL -1.802236134E9 7196.0 58.611 60.0 NULL -1969-12-31 15:59:58.93 -7196.0 NULL NULL -22.0 7196.0 1557.8500000000004 1849372.0 NULL 7.72548902E8 7196.0 20.611 22.0 NULL -1969-12-31 15:59:46.881 -7196.0 NULL NULL 34.0 7196.0 1557.8500000000004 1849372.0 NULL -3.69180072E8 7196.0 -35.389 -34.0 NULL -1969-12-31 15:59:56.048 -7196.0 NULL NULL -64.0 7196.0 1557.8500000000004 1849372.0 NULL 4.06542681E8 7196.0 62.611 64.0 NULL -1969-12-31 15:59:47.936 -7196.0 NULL NULL -28.0 7196.0 1557.8500000000004 1849372.0 NULL 7.66735835E8 7196.0 26.611 28.0 NULL -1969-12-31 15:59:51.803 -7196.0 NULL NULL 42.0 7196.0 1557.8500000000004 1849372.0 NULL -1.713550374E9 7196.0 -43.389 -42.0 NULL -1969-12-31 15:59:46.015 -7196.0 NULL NULL 25.0 7196.0 1557.8500000000004 1849372.0 NULL -1.052857253E9 7196.0 -26.389 -25.0 NULL -1969-12-31 15:59:49.512 -7196.0 NULL NULL -45.0 7196.0 1557.8500000000004 1849372.0 NULL -1.23175287E8 7196.0 43.611 45.0 NULL -1969-12-31 15:59:54.257 -7196.0 NULL NULL -46.0 7196.0 1557.8500000000004 1849372.0 NULL -1.020865381E9 7196.0 44.611 46.0 NULL -1969-12-31 15:59:49.128 -7196.0 NULL NULL 44.0 7196.0 1557.8500000000004 1849372.0 NULL -1.766300687E9 7196.0 -45.389 -44.0 NULL -1969-12-31 15:59:53.951 -7196.0 NULL NULL -50.0 7196.0 1557.8500000000004 1849372.0 NULL 1.025836681E9 7196.0 48.611 50.0 NULL -1969-12-31 15:59:52.62 -7196.0 NULL NULL -48.0 7196.0 1557.8500000000004 1849372.0 NULL 2.83005978E8 7196.0 46.611 48.0 NULL -1969-12-31 15:59:49.388 -7196.0 NULL NULL 43.0 7196.0 1557.8500000000004 1849372.0 NULL 1.840190258E9 7196.0 -44.389 -43.0 NULL -1969-12-31 15:59:50.196 -7196.0 NULL NULL -22.0 7196.0 1557.8500000000004 1849372.0 NULL 1.402108111E9 7196.0 20.611 22.0 NULL -1969-12-31 15:59:45.27 -7196.0 NULL NULL -40.0 7196.0 1557.8500000000004 1849372.0 NULL -1.589774974E9 7196.0 38.611 40.0 NULL -1969-12-31 15:59:54.643 -7196.0 NULL NULL -52.0 7196.0 1557.8500000000004 1849372.0 NULL -1.682142629E9 7196.0 50.611 52.0 NULL -1969-12-31 15:59:58.98 -7196.0 NULL NULL -33.0 7196.0 1557.8500000000004 1849372.0 NULL 1.621494372E9 7196.0 31.611 33.0 NULL -1969-12-31 15:59:49.428 -7196.0 NULL NULL 14.0 7196.0 1557.8500000000004 1849372.0 NULL 7.0191357E7 7196.0 -15.389 -14.0 NULL -1969-12-31 15:59:46.387 -7196.0 NULL NULL 3.0 7196.0 1557.8500000000004 1849372.0 NULL 9.91154976E8 7196.0 -4.389 -3.0 NULL -1969-12-31 15:59:58.825 -7196.0 NULL NULL -9.0 7196.0 1557.8500000000004 1849372.0 NULL 1.221948763E9 7196.0 7.611 9.0 NULL -1969-12-31 15:59:53.859 -7196.0 NULL NULL -36.0 7196.0 1557.8500000000004 1849372.0 NULL -4.31270834E8 7196.0 34.611 36.0 NULL -1969-12-31 15:59:51.637 -7196.0 NULL NULL -28.0 7196.0 1557.8500000000004 1849372.0 NULL -4.43992931E8 7196.0 26.611 28.0 NULL -1969-12-31 15:59:50.291 -7196.0 NULL NULL 14.0 7196.0 1557.8500000000004 1849372.0 NULL NULL 7196.0 -15.389 -14.0 NULL -1969-12-31 15:59:47.825 -7196.0 NULL NULL 36.0 7196.0 1557.8500000000004 1849372.0 NULL -9.5337222E7 7196.0 -37.389 -36.0 NULL -1969-12-31 15:59:48.779 -7196.0 NULL NULL -34.0 7196.0 1557.8500000000004 1849372.0 NULL -1.022924789E9 7196.0 32.611 34.0 NULL -1969-12-31 15:59:58.962 -7196.0 NULL NULL 32.0 7196.0 1557.8500000000004 1849372.0 NULL -3.03267928E8 7196.0 -33.389 -32.0 NULL -1969-12-31 15:59:56.454 -7196.0 NULL NULL -31.0 7196.0 1557.8500000000004 1849372.0 NULL 7.85747551E8 7196.0 29.611 31.0 NULL -1969-12-31 15:59:54.592 -7196.0 NULL NULL -53.0 7196.0 1557.8500000000004 1849372.0 NULL -6.21581989E8 7196.0 51.611 53.0 NULL -1969-12-31 15:59:50.046 -7196.0 NULL NULL 27.0 7196.0 1557.8500000000004 1849372.0 NULL -2.121392429E9 7196.0 -28.389 -27.0 NULL -1969-12-31 15:59:53.145 -7196.0 NULL NULL -24.0 7196.0 1557.8500000000004 1849372.0 NULL 8.29118196E8 7196.0 22.611 24.0 NULL -1969-12-31 15:59:57.301 -7196.0 NULL NULL 37.0 7196.0 1557.8500000000004 1849372.0 NULL -1.819021713E9 7196.0 -38.389 -37.0 NULL -1969-12-31 15:59:52.39 -7196.0 NULL NULL 1.0 7196.0 1557.8500000000004 1849372.0 NULL -2.2997883E8 7196.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:48.105 -7196.0 NULL NULL -27.0 7196.0 1557.8500000000004 1849372.0 NULL -8.59685387E8 7196.0 25.611 27.0 NULL -1969-12-31 15:59:50.843 -7196.0 NULL NULL -44.0 7196.0 1557.8500000000004 1849372.0 NULL 6.19404051E8 7196.0 42.611 44.0 NULL -1969-12-31 15:59:54.875 -7196.0 NULL NULL 32.0 7196.0 1557.8500000000004 1849372.0 NULL 1.970883332E9 7196.0 -33.389 -32.0 NULL -1969-12-31 15:59:57.148 -7196.0 NULL NULL -11.0 7196.0 1557.8500000000004 1849372.0 NULL -1.261663224E9 7196.0 9.611 11.0 NULL -1969-12-31 15:59:56.424 -7196.0 NULL NULL 11.0 7196.0 1557.8500000000004 1849372.0 NULL 4.65416471E8 7196.0 -12.389 -11.0 NULL -1969-12-31 15:59:58.959 -7196.0 NULL NULL 27.0 7196.0 1557.8500000000004 1849372.0 NULL -1.165465132E9 7196.0 -28.389 -27.0 NULL -1969-12-31 15:59:56.6 -7196.0 NULL NULL -18.0 7196.0 1557.8500000000004 1849372.0 NULL -1.879475816E9 7196.0 16.611 18.0 NULL -1969-12-31 15:59:53.782 -7196.0 NULL NULL -18.0 7196.0 1557.8500000000004 1849372.0 NULL -1.501494339E9 7196.0 16.611 18.0 NULL -1969-12-31 15:59:52.868 -7196.0 NULL NULL -61.0 7196.0 1557.8500000000004 1849372.0 NULL -1.062513902E9 7196.0 59.611 61.0 NULL -1969-12-31 15:59:58.692 -7196.0 NULL NULL 6.0 7196.0 1557.8500000000004 1849372.0 NULL -9.5446768E7 7196.0 -7.389 -6.0 NULL -1969-12-31 15:59:45.334 -7196.0 NULL NULL 46.0 7196.0 1557.8500000000004 1849372.0 NULL -1.436927771E9 7196.0 -47.389 -46.0 NULL -1969-12-31 15:59:50.136 -7196.0 NULL NULL -25.0 7196.0 1557.8500000000004 1849372.0 NULL -2.137530483E9 7196.0 23.611 25.0 NULL -1969-12-31 15:59:47.701 -7196.0 NULL NULL 30.0 7196.0 1557.8500000000004 1849372.0 NULL -4.78316139E8 7196.0 -31.389 -30.0 NULL -1969-12-31 15:59:55.528 -7196.0 NULL NULL -15.0 7196.0 1557.8500000000004 1849372.0 NULL 6.83360746E8 7196.0 13.611 15.0 NULL -1969-12-31 15:59:54.438 -7196.0 NULL NULL 47.0 7196.0 1557.8500000000004 1849372.0 NULL 2.6593471E8 7196.0 -48.389 -47.0 NULL -1969-12-31 15:59:53.139 -7196.0 NULL NULL 60.0 7196.0 1557.8500000000004 1849372.0 NULL 1.395385058E9 7196.0 -61.389 -60.0 NULL -1969-12-31 15:59:45.914 -7196.0 NULL NULL 1.0 7196.0 1557.8500000000004 1849372.0 NULL -5.59650678E8 7196.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:53.689 -7196.0 NULL NULL -50.0 7196.0 1557.8500000000004 1849372.0 NULL 1.294701146E9 7196.0 48.611 50.0 NULL -1969-12-31 15:59:53.978 -7196.0 NULL NULL -17.0 7196.0 1557.8500000000004 1849372.0 NULL 8.44957286E8 7196.0 15.611 17.0 NULL -1969-12-31 15:59:47.029 -7196.0 NULL NULL 21.0 7196.0 1557.8500000000004 1849372.0 NULL 2.016475091E9 7196.0 -22.389 -21.0 NULL -1969-12-31 15:59:48.703 -7196.0 NULL NULL -13.0 7196.0 1557.8500000000004 1849372.0 NULL -1.633767391E9 7196.0 11.611 13.0 NULL -1969-12-31 15:59:54.619 -7196.0 NULL NULL -16.0 7196.0 1557.8500000000004 1849372.0 NULL -2.010397166E9 7196.0 14.611 16.0 NULL -1969-12-31 15:59:44.081 -7196.0 NULL NULL 61.0 7196.0 1557.8500000000004 1849372.0 NULL -3.22871371E8 7196.0 -62.389 -61.0 NULL -1969-12-31 15:59:52.558 -7196.0 NULL NULL -50.0 7196.0 1557.8500000000004 1849372.0 NULL 1.89694097E8 7196.0 48.611 50.0 NULL -1969-12-31 15:59:52.052 -7196.0 NULL NULL -49.0 7196.0 1557.8500000000004 1849372.0 NULL NULL 7196.0 47.611 49.0 NULL -1969-12-31 15:59:57.92 -7196.0 NULL NULL -6.0 7196.0 1557.8500000000004 1849372.0 NULL -2.124795494E9 7196.0 4.611 6.0 NULL -1969-12-31 15:59:43.885 -7196.0 NULL NULL -61.0 7196.0 1557.8500000000004 1849372.0 NULL 1.27741896E8 7196.0 59.611 61.0 NULL -1969-12-31 15:59:56.438 -7196.0 NULL NULL -22.0 7196.0 1557.8500000000004 1849372.0 NULL -9.90074924E8 7196.0 20.611 22.0 NULL -1969-12-31 15:59:49.226 -7196.0 NULL NULL -31.0 7196.0 1557.8500000000004 1849372.0 NULL -5.48954876E8 7196.0 29.611 31.0 NULL -1969-12-31 15:59:43.82 -7196.0 NULL NULL -30.0 7196.0 1557.8500000000004 1849372.0 NULL 1.329550715E9 7196.0 28.611 30.0 NULL -1969-12-31 15:59:49.652 -7196.0 NULL NULL 2.0 7196.0 1557.8500000000004 1849372.0 NULL -2.0391347E9 7196.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:48.615 -7196.0 NULL NULL -58.0 7196.0 1557.8500000000004 1849372.0 NULL -6.2498378E8 7196.0 56.611 58.0 NULL -1969-12-31 15:59:45.198 -7196.0 NULL NULL 56.0 7196.0 1557.8500000000004 1849372.0 NULL 1.31819885E8 7196.0 -57.389 -56.0 NULL -1969-12-31 15:59:48.699 -7196.0 NULL NULL 33.0 7196.0 1557.8500000000004 1849372.0 NULL -1.085432542E9 7196.0 -34.389 -33.0 NULL -1969-12-31 15:59:55.918 -7196.0 NULL NULL -9.0 7196.0 1557.8500000000004 1849372.0 NULL -1.147615445E9 7196.0 7.611 9.0 NULL -1969-12-31 15:59:44.836 -7196.0 NULL NULL 61.0 7196.0 1557.8500000000004 1849372.0 NULL 1.003324242E9 7196.0 -62.389 -61.0 NULL -1969-12-31 15:59:44.16 -7196.0 NULL NULL 15.0 7196.0 1557.8500000000004 1849372.0 NULL -1.46783148E8 7196.0 -16.389 -15.0 NULL -1969-12-31 15:59:52.715 -7196.0 NULL NULL -49.0 7196.0 1557.8500000000004 1849372.0 NULL 1.402430807E9 7196.0 47.611 49.0 NULL -1969-12-31 15:59:56.892 -7196.0 NULL NULL -1.0 7196.0 1557.8500000000004 1849372.0 NULL 1.594205752E9 7196.0 -0.389 1.0 NULL -1969-12-31 15:59:45.186 -7196.0 NULL NULL -32.0 7196.0 1557.8500000000004 1849372.0 NULL -8.6033434E7 7196.0 30.611 32.0 NULL -1969-12-31 15:59:58.863 -7196.0 NULL NULL -3.0 7196.0 1557.8500000000004 1849372.0 NULL 9.37177184E8 7196.0 1.611 3.0 NULL -1969-12-31 15:59:53.866 -7196.0 NULL NULL -64.0 7196.0 1557.8500000000004 1849372.0 NULL 6.58034148E8 7196.0 62.611 64.0 NULL -1969-12-31 15:59:53.541 -7196.0 NULL NULL 44.0 7196.0 1557.8500000000004 1849372.0 NULL 7.64489896E8 7196.0 -45.389 -44.0 NULL -1969-12-31 15:59:54.845 -7196.0 NULL NULL -31.0 7196.0 1557.8500000000004 1849372.0 NULL -1.024250594E9 7196.0 29.611 31.0 NULL -1969-12-31 15:59:48.779 -7196.0 NULL NULL -13.0 7196.0 1557.8500000000004 1849372.0 NULL 9.07602982E8 7196.0 11.611 13.0 NULL -1969-12-31 15:59:43.64 -7196.0 NULL NULL -51.0 7196.0 1557.8500000000004 1849372.0 NULL -1.339157623E9 7196.0 49.611 51.0 NULL -1969-12-31 15:59:50.184 -7196.0 NULL NULL -64.0 7196.0 1557.8500000000004 1849372.0 NULL -5.27196481E8 7196.0 62.611 64.0 NULL -1969-12-31 15:59:57.403 -7196.0 NULL NULL 21.0 7196.0 1557.8500000000004 1849372.0 NULL 1.805284173E9 7196.0 -22.389 -21.0 NULL -1969-12-31 15:59:47.95 -7196.0 NULL NULL -2.0 7196.0 1557.8500000000004 1849372.0 NULL -7.87573236E8 7196.0 0.611 2.0 NULL -1969-12-31 15:59:47.586 -7196.0 NULL NULL -21.0 7196.0 1557.8500000000004 1849372.0 NULL -1.415279061E9 7196.0 19.611 21.0 NULL -1969-12-31 15:59:51.184 -7196.0 NULL NULL 2.0 7196.0 1557.8500000000004 1849372.0 NULL 1.63393846E9 7196.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:51.725 -7196.0 NULL NULL 57.0 7196.0 1557.8500000000004 1849372.0 NULL -1.511594045E9 7196.0 -58.389 -57.0 NULL -1969-12-31 15:59:51.107 -7196.0 NULL NULL -22.0 7196.0 1557.8500000000004 1849372.0 NULL 2.95549452E8 7196.0 20.611 22.0 NULL -1969-12-31 15:59:44.522 -7196.0 NULL NULL -48.0 7196.0 1557.8500000000004 1849372.0 NULL -9.54674099E8 7196.0 46.611 48.0 NULL -1969-12-31 15:59:46.059 -7196.0 NULL NULL -52.0 7196.0 1557.8500000000004 1849372.0 NULL 3.7337755E7 7196.0 50.611 52.0 NULL -1969-12-31 15:59:54.148 -7196.0 NULL NULL 13.0 7196.0 1557.8500000000004 1849372.0 NULL -1.987503744E9 7196.0 -14.389 -13.0 NULL -1969-12-31 15:59:55.524 -7196.0 NULL NULL 1.0 7196.0 1557.8500000000004 1849372.0 NULL -8.60161646E8 7196.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:48.121 -7196.0 NULL NULL -4.0 7196.0 1557.8500000000004 1849372.0 NULL -1.051610899E9 7196.0 2.6109999999999998 4.0 NULL -1969-12-31 15:59:52.164 -7196.0 NULL NULL -45.0 7196.0 1557.8500000000004 1849372.0 NULL 1.306140923E9 7196.0 43.611 45.0 NULL -1969-12-31 15:59:54.361 -7196.0 NULL NULL -39.0 7196.0 1557.8500000000004 1849372.0 NULL 1.929137496E9 7196.0 37.611 39.0 NULL -1969-12-31 15:59:48.68 -7196.0 NULL NULL -2.0 7196.0 1557.8500000000004 1849372.0 NULL -1.830643449E9 7196.0 0.611 2.0 NULL -1969-12-31 15:59:46.471 -7196.0 NULL NULL 24.0 7196.0 1557.8500000000004 1849372.0 NULL 8.13450996E8 7196.0 -25.389 -24.0 NULL -1969-12-31 15:59:55.798 -7196.0 NULL NULL 44.0 7196.0 1557.8500000000004 1849372.0 NULL 1.72378427E9 7196.0 -45.389 -44.0 NULL -1969-12-31 15:59:50.093 -7196.0 NULL NULL -2.0 7196.0 1557.8500000000004 1849372.0 NULL 1.33041998E9 7196.0 0.611 2.0 NULL -1969-12-31 15:59:53.496 -7196.0 NULL NULL 28.0 7196.0 1557.8500000000004 1849372.0 NULL -3.02652941E8 7196.0 -29.389 -28.0 NULL -1969-12-31 15:59:57.663 -7196.0 NULL NULL -53.0 7196.0 1557.8500000000004 1849372.0 NULL 8.98479577E8 7196.0 51.611 53.0 NULL -1969-12-31 15:59:44.634 -7196.0 NULL NULL 22.0 7196.0 1557.8500000000004 1849372.0 NULL -1.554118086E9 7196.0 -23.389 -22.0 NULL -1969-12-31 15:59:47.097 -7196.0 NULL NULL 29.0 7196.0 1557.8500000000004 1849372.0 NULL 1.918459122E9 7196.0 -30.389 -29.0 NULL -1969-12-31 15:59:51.364 -7196.0 NULL NULL -54.0 7196.0 1557.8500000000004 1849372.0 NULL 6.59056309E8 7196.0 52.611 54.0 NULL -1969-12-31 15:59:58.395 -7196.0 NULL NULL -62.0 7196.0 1557.8500000000004 1849372.0 NULL -1.367746598E9 7196.0 60.611 62.0 NULL -1969-12-31 15:59:56.135 -7196.0 NULL NULL -17.0 7196.0 1557.8500000000004 1849372.0 NULL -5.09550122E8 7196.0 15.611 17.0 NULL -1969-12-31 15:59:57.043 -7196.0 NULL NULL -3.0 7196.0 1557.8500000000004 1849372.0 NULL -8.15850645E8 7196.0 1.611 3.0 NULL -1969-12-31 15:59:56.518 -7196.0 NULL NULL 14.0 7196.0 1557.8500000000004 1849372.0 NULL -1.720761742E9 7196.0 -15.389 -14.0 NULL -1969-12-31 15:59:54.256 -7196.0 NULL NULL 62.0 7196.0 1557.8500000000004 1849372.0 NULL 5.24254952E8 7196.0 -63.389 -62.0 NULL -1969-12-31 15:59:52.682 -7196.0 NULL NULL -33.0 7196.0 1557.8500000000004 1849372.0 NULL 2.86562915E8 7196.0 31.611 33.0 NULL -1969-12-31 15:59:49.535 -7196.0 NULL NULL 21.0 7196.0 1557.8500000000004 1849372.0 NULL -1.64273397E9 7196.0 -22.389 -21.0 NULL -1969-12-31 15:59:58.309 -7196.0 NULL NULL 52.0 7196.0 1557.8500000000004 1849372.0 NULL 1.73598138E9 7196.0 -53.389 -52.0 NULL -1969-12-31 15:59:50.263 -7196.0 NULL NULL -34.0 7196.0 1557.8500000000004 1849372.0 NULL 1.591834509E9 7196.0 32.611 34.0 NULL -1969-12-31 15:59:54.76 -7196.0 NULL NULL 30.0 7196.0 1557.8500000000004 1849372.0 NULL -2.060970702E9 7196.0 -31.389 -30.0 NULL -1969-12-31 15:59:44.323 -7196.0 NULL NULL -5.0 7196.0 1557.8500000000004 1849372.0 NULL 1.644467258E9 7196.0 3.6109999999999998 5.0 NULL -1969-12-31 15:59:53.679 -7196.0 NULL NULL -29.0 7196.0 1557.8500000000004 1849372.0 NULL 1.279494447E9 7196.0 27.611 29.0 NULL -1969-12-31 15:59:56.367 -7196.0 NULL NULL -8.0 7196.0 1557.8500000000004 1849372.0 NULL 9.94082394E8 7196.0 6.611 8.0 NULL -1969-12-31 15:59:48.622 -7196.0 NULL NULL 19.0 7196.0 1557.8500000000004 1849372.0 NULL -1.031747591E9 7196.0 -20.389 -19.0 NULL -1969-12-31 15:59:45.102 -7196.0 NULL NULL 37.0 7196.0 1557.8500000000004 1849372.0 NULL 1.06557253E8 7196.0 -38.389 -37.0 NULL -1969-12-31 15:59:48.389 -7196.0 NULL NULL -2.0 7196.0 1557.8500000000004 1849372.0 NULL -1.26833333E9 7196.0 0.611 2.0 NULL -1969-12-31 15:59:49.568 -7196.0 NULL NULL 45.0 7196.0 1557.8500000000004 1849372.0 NULL -7.65310519E8 7196.0 -46.389 -45.0 NULL -1969-12-31 15:59:51.208 -7196.0 NULL NULL -33.0 7196.0 1557.8500000000004 1849372.0 NULL -1.269389651E9 7196.0 31.611 33.0 NULL -1969-12-31 15:59:45.028 -7196.0 NULL NULL -47.0 7196.0 1557.8500000000004 1849372.0 NULL 1.388932053E9 7196.0 45.611 47.0 NULL -1969-12-31 15:59:51.86 -7196.0 NULL NULL 35.0 7196.0 1557.8500000000004 1849372.0 NULL 1.667902726E9 7196.0 -36.389 -35.0 NULL -1969-12-31 15:59:46.608 -7196.0 NULL NULL -5.0 7196.0 1557.8500000000004 1849372.0 NULL -8.76251867E8 7196.0 3.6109999999999998 5.0 NULL -1969-12-31 15:59:54.733 -7196.0 NULL NULL -50.0 7196.0 1557.8500000000004 1849372.0 NULL -1.031180054E9 7196.0 48.611 50.0 NULL -1969-12-31 15:59:50.631 -7196.0 NULL NULL 23.0 7196.0 1557.8500000000004 1849372.0 NULL -7.63063088E8 7196.0 -24.389 -23.0 NULL -1969-12-31 15:59:58.382 -7196.0 NULL NULL -56.0 7196.0 1557.8500000000004 1849372.0 NULL -1.272896403E9 7196.0 54.611 56.0 NULL -1969-12-31 15:59:47.999 -7196.0 NULL NULL -43.0 7196.0 1557.8500000000004 1849372.0 NULL -2.34464535E8 7196.0 41.611 43.0 NULL -1969-12-31 15:59:48.2 -7196.0 NULL NULL 9.0 7196.0 1557.8500000000004 1849372.0 NULL -1.088603254E9 7196.0 -10.389 -9.0 NULL -1969-12-31 15:59:44.564 -7196.0 NULL NULL -13.0 7196.0 1557.8500000000004 1849372.0 NULL 1.233039123E9 7196.0 11.611 13.0 NULL -1969-12-31 15:59:58.795 -7196.0 NULL NULL -59.0 7196.0 1557.8500000000004 1849372.0 NULL -1.029924044E9 7196.0 57.611 59.0 NULL -1969-12-31 15:59:56.666 -7196.0 NULL NULL -56.0 7196.0 1557.8500000000004 1849372.0 NULL 1.425869674E9 7196.0 54.611 56.0 NULL -1969-12-31 15:59:54.503 -7196.0 NULL NULL 18.0 7196.0 1557.8500000000004 1849372.0 NULL 8.13418155E8 7196.0 -19.389 -18.0 NULL -1969-12-31 15:59:57.98 -7196.0 NULL NULL 12.0 7196.0 1557.8500000000004 1849372.0 NULL 1.59917898E8 7196.0 -13.389 -12.0 NULL -1969-12-31 15:59:45.947 -7196.0 NULL NULL -59.0 7196.0 1557.8500000000004 1849372.0 NULL -1.579996433E9 7196.0 57.611 59.0 NULL -1969-12-31 15:59:50.363 -7196.0 NULL NULL 51.0 7196.0 1557.8500000000004 1849372.0 NULL 1.825086664E9 7196.0 -52.389 -51.0 NULL -1969-12-31 15:59:50.861 -7196.0 NULL NULL 61.0 7196.0 1557.8500000000004 1849372.0 NULL 1.596700662E9 7196.0 -62.389 -61.0 NULL -1969-12-31 15:59:48.04 -7196.0 NULL NULL -3.0 7196.0 1557.8500000000004 1849372.0 NULL -1.12508994E9 7196.0 1.611 3.0 NULL -1969-12-31 15:59:50.462 -7196.0 NULL NULL 56.0 7196.0 1557.8500000000004 1849372.0 NULL -2.118142046E9 7196.0 -57.389 -56.0 NULL -1969-12-31 15:59:57.887 -7196.0 NULL NULL -10.0 7196.0 1557.8500000000004 1849372.0 NULL 2.139671035E9 7196.0 8.611 10.0 NULL -1969-12-31 15:59:58.668 -7196.0 NULL NULL -15.0 7196.0 1557.8500000000004 1849372.0 NULL -9.43217341E8 7196.0 13.611 15.0 NULL -1969-12-31 15:59:46.681 -7196.0 NULL NULL 52.0 7196.0 1557.8500000000004 1849372.0 NULL 1.070955127E9 7196.0 -53.389 -52.0 NULL -1969-12-31 15:59:56.126 -7196.0 NULL NULL 2.0 7196.0 1557.8500000000004 1849372.0 NULL -8.82684273E8 7196.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:57.114 -7196.0 NULL NULL 2.0 7196.0 1557.8500000000004 1849372.0 NULL 1.804367539E9 7196.0 -3.3890000000000002 -2.0 NULL -1969-12-31 15:59:48.18 -7196.0 NULL NULL 29.0 7196.0 1557.8500000000004 1849372.0 NULL 1.297023301E9 7196.0 -30.389 -29.0 NULL -1969-12-31 15:59:48.093 -7196.0 NULL NULL 54.0 7196.0 1557.8500000000004 1849372.0 NULL -2.28029247E8 7196.0 -55.389 -54.0 NULL -1969-12-31 15:59:49.072 -7196.0 NULL NULL 49.0 7196.0 1557.8500000000004 1849372.0 NULL -1.524284909E9 7196.0 -50.389 -49.0 NULL -1969-12-31 15:59:50.861 -7196.0 NULL NULL -24.0 7196.0 1557.8500000000004 1849372.0 NULL 1.141199132E9 7196.0 22.611 24.0 NULL -1969-12-31 15:59:45.085 -7196.0 NULL NULL 47.0 7196.0 1557.8500000000004 1849372.0 NULL 2.074608995E9 7196.0 -48.389 -47.0 NULL -1969-12-31 15:59:52.976 -7196.0 NULL NULL -13.0 7196.0 1557.8500000000004 1849372.0 NULL -3.9086272E8 7196.0 11.611 13.0 NULL -1969-12-31 15:59:47.514 -7196.0 NULL NULL -37.0 7196.0 1557.8500000000004 1849372.0 NULL -3.10584688E8 7196.0 35.611 37.0 NULL -1969-12-31 15:59:53.989 -7196.0 NULL NULL 33.0 7196.0 1557.8500000000004 1849372.0 NULL -2.09569095E9 7196.0 -34.389 -33.0 NULL -1969-12-31 15:59:55.733 -7196.0 NULL NULL -36.0 7196.0 1557.8500000000004 1849372.0 NULL -1.376229193E9 7196.0 34.611 36.0 NULL -1969-12-31 15:59:48.361 -7196.0 NULL NULL 1.0 7196.0 1557.8500000000004 1849372.0 NULL NULL 7196.0 -2.3890000000000002 -1.0 NULL -1969-12-31 15:59:44.707 -7196.0 NULL NULL 56.0 7196.0 1557.8500000000004 1849372.0 NULL 3.51007075E8 7196.0 -57.389 -56.0 NULL -1969-12-31 15:59:44.455 -7196.0 NULL NULL -25.0 7196.0 1557.8500000000004 1849372.0 NULL -5.7989639E8 7196.0 23.611 25.0 NULL -1969-12-31 15:59:53.172 -7196.0 NULL NULL -12.0 7196.0 1557.8500000000004 1849372.0 NULL -5.88621453E8 7196.0 10.611 12.0 NULL -1969-12-31 15:59:50.49 -7196.0 NULL NULL -21.0 7196.0 1557.8500000000004 1849372.0 NULL 5.96838529E8 7196.0 19.611 21.0 NULL +PREHOOK: query: -- double compare timestamp +EXPLAIN +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 12.503) + AND (ctimestamp2 != 11.998))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +PREHOOK: type: QUERY +POSTHOOK: query: -- double compare timestamp +EXPLAIN +SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 12.503) + AND (ctimestamp2 != 11.998))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((cstring2 is not null and ((ctimestamp1 <= 12.503) and (ctimestamp2 <> 11.998))) or ((cfloat < -6432) or (cboolean1 is not null and (cdouble = 988888.0)))) (type: boolean) + Statistics: Num rows: 9216 Data size: 282927 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ctimestamp1 (type: timestamp), cdouble (type: double), cboolean1 (type: boolean), cstring1 (type: string), cfloat (type: float), (- cdouble) (type: double), (-5638.15 - cdouble) (type: double), (cdouble * -257) (type: double), (cint + cfloat) (type: float), ((- cdouble) + cbigint) (type: double), (- cdouble) (type: double), (-1.389 - cfloat) (type: double), (- cfloat) (type: float), ((-5638.15 - cdouble) + (cint + cfloat)) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13 + Statistics: Num rows: 9216 Data size: 282927 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 12.503) + AND (ctimestamp2 != 11.998))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT ctimestamp1, + cdouble, + cboolean1, + cstring1, + cfloat, + (-(cdouble)), + (-5638.15 - cdouble), + (cdouble * -257), + (cint + cfloat), + ((-(cdouble)) + cbigint), + (-(cdouble)), + (-1.389 - cfloat), + (-(cfloat)), + ((-5638.15 - cdouble) + (cint + cfloat)) +FROM alltypesorc +WHERE (((cstring2 IS NOT NULL) + AND ((ctimestamp1 <= 12.503) + AND (ctimestamp2 != 11.998))) + OR ((cfloat < -6432) + OR ((cboolean1 IS NOT NULL) + AND (cdouble = 988888)))) +LIMIT 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +1969-12-31 16:00:05.478 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL -1.090413913E9 200.0 -39.389 -38.0 NULL +1969-12-31 15:59:49.567 -200.0 NULL NULL 38.0 200.0 -5438.15 51400.0 NULL 1.576772582E9 200.0 -39.389 -38.0 NULL +1969-12-31 16:00:07.648 -200.0 NULL NULL 3.0 200.0 -5438.15 51400.0 NULL -1.438142292E9 200.0 -4.389 -3.0 NULL +1969-12-31 15:59:54.739 -200.0 NULL NULL 31.0 200.0 -5438.15 51400.0 NULL -2.45476531E8 200.0 -32.389 -31.0 NULL +1969-12-31 16:00:03.248 -200.0 NULL NULL -10.0 200.0 -5438.15 51400.0 NULL -1.818374453E9 200.0 8.611 10.0 NULL +1969-12-31 15:59:46.007 -200.0 NULL NULL 8.0 200.0 -5438.15 51400.0 NULL -1.236645108E9 200.0 -9.389 -8.0 NULL +1969-12-31 16:00:06.852 -200.0 NULL NULL -63.0 200.0 -5438.15 51400.0 NULL 1.927856572E9 200.0 61.611 63.0 NULL +1969-12-31 15:59:44.842 -200.0 NULL NULL -30.0 200.0 -5438.15 51400.0 NULL -8.15880983E8 200.0 28.611 30.0 NULL +1969-12-31 16:00:00.958 -200.0 NULL NULL -39.0 200.0 -5438.15 51400.0 NULL 9.44478114E8 200.0 37.611 39.0 NULL +1969-12-31 15:59:54.328 -200.0 NULL NULL -39.0 200.0 -5438.15 51400.0 NULL -1.74772438E9 200.0 37.611 39.0 NULL +1969-12-31 15:59:44.55 -200.0 NULL NULL 24.0 200.0 -5438.15 51400.0 NULL -4.99521157E8 200.0 -25.389 -24.0 NULL +1969-12-31 16:00:11.236 -200.0 NULL NULL -28.0 200.0 -5438.15 51400.0 NULL -4.95166106E8 200.0 26.611 28.0 NULL +1969-12-31 16:00:10.436 -200.0 NULL NULL 22.0 200.0 -5438.15 51400.0 NULL -9.98574107E8 200.0 -23.389 -22.0 NULL +1969-12-31 16:00:02.208 -200.0 NULL NULL 16.0 200.0 -5438.15 51400.0 NULL 1.043214222E9 200.0 -17.389 -16.0 NULL +1969-12-31 15:59:58.305 -200.0 NULL NULL -12.0 200.0 -5438.15 51400.0 NULL -9.97940606E8 200.0 10.611 12.0 NULL +1969-12-31 16:00:00.911 -200.0 NULL NULL 12.0 200.0 -5438.15 51400.0 NULL 1.153060648E9 200.0 -13.389 -12.0 NULL +1969-12-31 16:00:03.139 -200.0 NULL NULL 10.0 200.0 -5438.15 51400.0 NULL -1.709273652E9 200.0 -11.389 -10.0 NULL +1969-12-31 15:59:54.199 -200.0 NULL NULL 55.0 200.0 -5438.15 51400.0 NULL -1.151590935E9 200.0 -56.389 -55.0 NULL +1969-12-31 15:59:54.016 -200.0 NULL NULL 46.0 200.0 -5438.15 51400.0 NULL -5.17349102E8 200.0 -47.389 -46.0 NULL +1969-12-31 15:59:57.847 -200.0 NULL NULL 50.0 200.0 -5438.15 51400.0 NULL 1.819421586E9 200.0 -51.389 -50.0 NULL diff --git a/ql/src/test/results/clientpositive/vectorization_short_regress.q.out b/ql/src/test/results/clientpositive/vectorization_short_regress.q.out index 8c4d1a4b88a8..34394c57e513 100644 --- a/ql/src/test/results/clientpositive/vectorization_short_regress.q.out +++ b/ql/src/test/results/clientpositive/vectorization_short_regress.q.out @@ -57,7 +57,7 @@ EXPLAIN SELECT AVG(cint), FROM alltypesorc WHERE ((762 = cbigint) OR ((csmallint < cfloat) - AND ((ctimestamp2 > -10669) + AND ((ctimestamp2 > -5) AND (cdouble != cint))) OR (cstring1 = 'a') OR ((cbigint <= -1.389) @@ -123,7 +123,7 @@ EXPLAIN SELECT AVG(cint), FROM alltypesorc WHERE ((762 = cbigint) OR ((csmallint < cfloat) - AND ((ctimestamp2 > -10669) + AND ((ctimestamp2 > -5) AND (cdouble != cint))) OR (cstring1 = 'a') OR ((cbigint <= -1.389) @@ -143,7 +143,7 @@ STAGE PLANS: alias: alltypesorc Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((762 = cbigint) or ((csmallint < cfloat) and ((ctimestamp2 > -10669) and (cdouble <> cint)))) or (cstring1 = 'a')) or ((cbigint <= -1.389) and ((cstring2 <> 'a') and ((79.553 <> cint) and (cboolean2 <> cboolean1))))) (type: boolean) + predicate: ((((762 = cbigint) or ((csmallint < cfloat) and ((ctimestamp2 > -5) and (cdouble <> cint)))) or (cstring1 = 'a')) or ((cbigint <= -1.389) and ((cstring2 <> 'a') and ((79.553 <> cint) and (cboolean2 <> cboolean1))))) (type: boolean) Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: cint (type: int), cdouble (type: double), csmallint (type: smallint), cfloat (type: float), ctinyint (type: tinyint) @@ -212,7 +212,7 @@ PREHOOK: query: SELECT AVG(cint), FROM alltypesorc WHERE ((762 = cbigint) OR ((csmallint < cfloat) - AND ((ctimestamp2 > -10669) + AND ((ctimestamp2 > -5) AND (cdouble != cint))) OR (cstring1 = 'a') OR ((cbigint <= -1.389) @@ -250,7 +250,7 @@ POSTHOOK: query: SELECT AVG(cint), FROM alltypesorc WHERE ((762 = cbigint) OR ((csmallint < cfloat) - AND ((ctimestamp2 > -10669) + AND ((ctimestamp2 > -5) AND (cdouble != cint))) OR (cstring1 = 'a') OR ((cbigint <= -1.389) @@ -260,7 +260,7 @@ WHERE ((762 = cbigint) POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### -1.3811354728837386E8 1.3810981928837386E8 -1.3810981928837386E8 1.3810981928837386E8 1.9074322183867284E16 -7194110.964000001 -1.3811354728837386E8 5.591531911809615E8 2.6343511898621314E24 8744.962036962406 -5.591531911809615E8 4.2104337189258766E8 2.35427745019332736E17 3.1277112522199501E17 -6.505246065861778 -3.1277112522199501E17 3.1277112522199501E17 993167.3022752424 5.592594435697935E8 -993167.3022752424 -19.198139697803782 -64 1858 -6.444030109869978E-5 19.198139697803782 +1.6000018929276082E8 1.5999646129276082E8 -1.5999646129276082E8 1.5999646129276082E8 2.5598867626205912E16 -8706342.964000002 -1.6000018929276082E8 5.481251832900256E8 4.095728233294762E24 8549.657499338187 -5.481251832900256E8 3.8812872199726474E8 2.12743126884874112E17 3.0054786945575034E17 -5.700752675298234 -3.0054786945575034E17 3.0054786945575034E17 973579.3664121237 5.48222463472403E8 -973579.3664121237 -18.377427808018613 -64 2044 -6.573680812059066E-5 18.377427808018613 PREHOOK: query: -- TargetTypeClasses: Long, Bool, Double, String, Timestamp -- Functions: Max, VarP, StDevP, Avg, Min, StDev, Var -- ArithmeticOps: Divide, Multiply, Remainder, Subtract @@ -850,6 +850,7 @@ WHERE (((cstring1 RLIKE 'a.*') AND (cfloat >= cint)) OR ((cint < cbigint) AND (ctinyint > cbigint))) +LIMIT 50 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: Timestamp, String, Long, Double, Bool -- Functions: Max, Avg, Min, Var, StDev, Count, StDevP, Sum @@ -889,6 +890,7 @@ WHERE (((cstring1 RLIKE 'a.*') AND (cfloat >= cint)) OR ((cint < cbigint) AND (ctinyint > cbigint))) +LIMIT 50 POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage @@ -908,18 +910,21 @@ STAGE PLANS: expressions: cint (type: int), cdouble (type: double), ctimestamp2 (type: timestamp), cstring1 (type: string), cboolean2 (type: boolean), ctinyint (type: tinyint), cfloat (type: float), ctimestamp1 (type: timestamp), csmallint (type: smallint), cbigint (type: bigint), (-3728 * cbigint) (type: bigint), (- cint) (type: int), (-863.257 - cint) (type: double), (- csmallint) (type: smallint), (csmallint - (- csmallint)) (type: smallint), ((csmallint - (- csmallint)) + (- csmallint)) (type: smallint), (cint / cint) (type: double), ((-863.257 - cint) - -26.28) (type: double), (- cfloat) (type: float), (cdouble * -89010) (type: double), (ctinyint / 988888) (type: double), (- ctinyint) (type: tinyint), (79.553 / ctinyint) (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22 Statistics: Num rows: 9898 Data size: 303864 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 9898 Data size: 303864 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Limit + Number of rows: 50 + Statistics: Num rows: 50 Data size: 1500 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 50 Data size: 1500 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Execution mode: vectorized Stage: Stage-0 Fetch Operator - limit: -1 + limit: 50 Processor Tree: ListSink @@ -956,6 +961,7 @@ WHERE (((cstring1 RLIKE 'a.*') AND (cfloat >= cint)) OR ((cint < cbigint) AND (ctinyint > cbigint))) +LIMIT 50 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -992,6 +998,7 @@ WHERE (((cstring1 RLIKE 'a.*') AND (cfloat >= cint)) OR ((cint < cbigint) AND (ctinyint > cbigint))) +LIMIT 50 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -1045,1181 +1052,6 @@ NULL -200.0 1969-12-31 15:59:55.451 NULL false 39 39.0 1969-12-31 15:59:46.368 - NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 15:59:53.592 -200 1922447714 -7166885077792 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 16:00:13.411 -200 -915644003 3413520843184 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 NULL -200.0 1969-12-31 15:59:55.451 NULL false 16 16.0 1969-12-31 16:00:15.143 -200 -2109772858 7865233214624 NULL NULL 200 -400 -200 NULL NULL -16.0 1.7802E7 1.617978982453018E-5 -16 4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 12 12.0 1969-12-31 16:00:08.34 -200 -860934589 3209564147792 NULL NULL 200 -400 -200 NULL NULL -12.0 1.7802E7 1.2134842368397635E-5 -12 6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 24 24.0 1969-12-31 15:59:58.788 -200 805287817 -3002112981776 NULL NULL 200 -400 -200 NULL NULL -24.0 1.7802E7 2.426968473679527E-5 -24 3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:08.346 -200 -1635566862 6097393261536 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -1 -1.0 1969-12-31 15:59:57.901 -200 -250915199 935411861872 NULL NULL 200 -400 -200 NULL NULL 1.0 1.7802E7 -1.0112368640331362E-6 1 -79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -38 -38.0 1969-12-31 16:00:14.118 -200 1741347818 -6491744665504 NULL NULL 200 -400 -200 NULL NULL 38.0 1.7802E7 -3.842700083325918E-5 38 -2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -46 -46.0 1969-12-31 15:59:57.646 -200 -624367772 2327643054016 NULL NULL 200 -400 -200 NULL NULL 46.0 1.7802E7 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -59 -59.0 1969-12-31 16:00:06.777 -200 -836004666 3116625394848 NULL NULL 200 -400 -200 NULL NULL 59.0 1.7802E7 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 22 22.0 1969-12-31 16:00:12.112 -200 1395869317 -5203800813776 NULL NULL 200 -400 -200 NULL NULL -22.0 1.7802E7 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 16 16.0 1969-12-31 15:59:45.722 -200 -2069085175 7713549532400 NULL NULL 200 -400 -200 NULL NULL -16.0 1.7802E7 1.617978982453018E-5 -16 4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 46 46.0 1969-12-31 15:59:56.163 -200 -1275647301 4755613138128 NULL NULL 200 -400 -200 NULL NULL -46.0 1.7802E7 4.651689574552426E-5 -46 1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:11.15 -200 -834308521 3110302166288 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 15:59:53.06 -200 -1958596195 7301646614960 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -45 -45.0 1969-12-31 16:00:00.287 -200 -1919463631 7155760416368 NULL NULL 200 -400 -200 NULL NULL 45.0 1.7802E7 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 37 37.0 1969-12-31 15:59:58.129 -200 1838442362 -6853713125536 NULL NULL 200 -400 -200 NULL NULL -37.0 1.7802E7 3.741576396922604E-5 -37 2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -41 -41.0 1969-12-31 15:59:44.38 -200 -688353943 2566183499504 NULL NULL 200 -400 -200 NULL NULL 41.0 1.7802E7 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -44 -44.0 1969-12-31 16:00:00.835 -200 1814766708 -6765450287424 NULL NULL 200 -400 -200 NULL NULL 44.0 1.7802E7 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 16:00:03.571 -200 953305450 -3553922717600 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 13 13.0 1969-12-31 16:00:03.794 -200 894634621 -3335197867088 NULL NULL 200 -400 -200 NULL NULL -13.0 1.7802E7 1.314607923243077E-5 -13 6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 19 19.0 1969-12-31 16:00:10.723 -200 1604152041 -5980278808848 NULL NULL 200 -400 -200 NULL NULL -19.0 1.7802E7 1.921350041662959E-5 -19 4.187 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 62 62.0 1969-12-31 15:59:46.137 -200 -1332297900 4966806571200 NULL NULL 200 -400 -200 NULL NULL -62.0 1.7802E7 6.269668557005445E-5 -62 1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -46 -46.0 1969-12-31 15:59:49.331 -200 -2034715106 7585417915168 NULL NULL 200 -400 -200 NULL NULL 46.0 1.7802E7 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -25 -25.0 1969-12-31 15:59:48.372 -200 1516831554 -5654748033312 NULL NULL 200 -400 -200 NULL NULL 25.0 1.7802E7 -2.5280921600828406E-5 25 -3.18212 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 39 39.0 1969-12-31 16:00:00.395 -200 -899658844 3353928170432 NULL NULL 200 -400 -200 NULL NULL -39.0 1.7802E7 3.9438237697292314E-5 -39 2.039820512820513 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 43 43.0 1969-12-31 16:00:01.097 -200 -781919048 2914994210944 NULL NULL 200 -400 -200 NULL NULL -43.0 1.7802E7 4.3483185153424856E-5 -43 1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -42 -42.0 1969-12-31 15:59:54.349 -200 -390050457 1454108103696 NULL NULL 200 -400 -200 NULL NULL 42.0 1.7802E7 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 15:59:47.952 -200 -449401470 1675368680160 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 10 10.0 1969-12-31 16:00:07.365 -200 120165080 -447975418240 NULL NULL 200 -400 -200 NULL NULL -10.0 1.7802E7 1.0112368640331362E-5 -10 7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 15:59:47.828 -200 -715660733 2667983212624 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 16:00:00.951 -200 454239730 -1693405713440 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 15:59:48.367 -200 1709812289 -6374180213392 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -57 -57.0 1969-12-31 16:00:02.707 -200 1382057278 -5152309532384 NULL NULL 200 -400 -200 NULL NULL 57.0 1.7802E7 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -25 -25.0 1969-12-31 15:59:49.293 -200 -776497113 2894781237264 NULL NULL 200 -400 -200 NULL NULL 25.0 1.7802E7 -2.5280921600828406E-5 25 -3.18212 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 16:00:15.609 -200 -1775354211 6618520498608 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -51 -51.0 1969-12-31 16:00:12.494 -200 -413063757 1539901686096 NULL NULL 200 -400 -200 NULL NULL 51.0 1.7802E7 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:14.071 -200 -378947821 1412717476688 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 41 41.0 1969-12-31 16:00:08.408 -200 696650264 -2597112184192 NULL NULL 200 -400 -200 NULL NULL -41.0 1.7802E7 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 39 39.0 1969-12-31 16:00:07.541 -200 260798405 -972256453840 NULL NULL 200 -400 -200 NULL NULL -39.0 1.7802E7 3.9438237697292314E-5 -39 2.039820512820513 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:10.211 -200 -885770465 3302152293520 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -24 -24.0 1969-12-31 15:59:54.075 -200 191358485 -713384432080 NULL NULL 200 -400 -200 NULL NULL 24.0 1.7802E7 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 56 56.0 1969-12-31 15:59:57.56 -200 951463637 -3547056438736 NULL NULL 200 -400 -200 NULL NULL -56.0 1.7802E7 5.6629264385855625E-5 -56 1.4205892857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -21 -21.0 1969-12-31 16:00:09.182 -200 1367877440 -5099447096320 NULL NULL 200 -400 -200 NULL NULL 21.0 1.7802E7 -2.123597414469586E-5 21 -3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 58 58.0 1969-12-31 15:59:45.489 -200 1300104054 -4846787913312 NULL NULL 200 -400 -200 NULL NULL -58.0 1.7802E7 5.86517381139219E-5 -58 1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 41 41.0 1969-12-31 16:00:07.175 -200 1542568556 -5750695576768 NULL NULL 200 -400 -200 NULL NULL -41.0 1.7802E7 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -1 -1.0 1969-12-31 16:00:04.836 -200 480523197 -1791390478416 NULL NULL 200 -400 -200 NULL NULL 1.0 1.7802E7 -1.0112368640331362E-6 1 -79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 21 21.0 1969-12-31 16:00:08.048 -200 261543399 -975033791472 NULL NULL 200 -400 -200 NULL NULL -21.0 1.7802E7 2.123597414469586E-5 -21 3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -61 -61.0 1969-12-31 16:00:04.165 -200 -1313743110 4897634314080 NULL NULL 200 -400 -200 NULL NULL 61.0 1.7802E7 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 35 35.0 1969-12-31 16:00:09.892 -200 -197916286 737831914208 NULL NULL 200 -400 -200 NULL NULL -35.0 1.7802E7 3.5393290241159765E-5 -35 2.272942857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -48 -48.0 1969-12-31 15:59:55.023 -200 17520444 -65316215232 NULL NULL 200 -400 -200 NULL NULL 48.0 1.7802E7 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -14 -14.0 1969-12-31 15:59:44.457 -200 1678325085 -6256795916880 NULL NULL 200 -400 -200 NULL NULL 14.0 1.7802E7 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 54 54.0 1969-12-31 16:00:10.187 -200 829351969 -3091824140432 NULL NULL 200 -400 -200 NULL NULL -54.0 1.7802E7 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 16 16.0 1969-12-31 15:59:57.245 -200 1713760992 -6388900978176 NULL NULL 200 -400 -200 NULL NULL -16.0 1.7802E7 1.617978982453018E-5 -16 4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 53 53.0 1969-12-31 16:00:15.401 -200 -549903001 2050038387728 NULL NULL 200 -400 -200 NULL NULL -53.0 1.7802E7 5.359555379375622E-5 -53 1.501 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -58 -58.0 1969-12-31 15:59:54.484 -200 1126209929 -4198510615312 NULL NULL 200 -400 -200 NULL NULL 58.0 1.7802E7 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 15:59:53.898 -200 -1597851253 5956789471184 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 16:00:02 -200 678949554 -2531123937312 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -26 -26.0 1969-12-31 16:00:14.191 -200 1050415040 -3915947269120 NULL NULL 200 -400 -200 NULL NULL 26.0 1.7802E7 -2.629215846486154E-5 26 -3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -5 -5.0 1969-12-31 15:59:57.794 -200 205645723 -766647255344 NULL NULL 200 -400 -200 NULL NULL 5.0 1.7802E7 -5.056184320165681E-6 5 -15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 50 50.0 1969-12-31 16:00:09.364 -200 -291569870 1086972475360 NULL NULL 200 -400 -200 NULL NULL -50.0 1.7802E7 5.056184320165681E-5 -50 1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 15:59:57.543 -200 1053538728 -3927592377984 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 20 20.0 1969-12-31 15:59:55.056 -200 -1403730664 5233107915392 NULL NULL 200 -400 -200 NULL NULL -20.0 1.7802E7 2.0224737280662725E-5 -20 3.9776499999999997 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 26 26.0 1969-12-31 16:00:00.923 -200 -1387364200 5172093737600 NULL NULL 200 -400 -200 NULL NULL -26.0 1.7802E7 2.629215846486154E-5 -26 3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -49 -49.0 1969-12-31 16:00:01.458 -200 -658701811 2455640351408 NULL NULL 200 -400 -200 NULL NULL 49.0 1.7802E7 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 15:59:44.297 -200 2120344258 -7904643393824 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -58 -58.0 1969-12-31 15:59:47.24 -200 1257221099 -4686920257072 NULL NULL 200 -400 -200 NULL NULL 58.0 1.7802E7 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -14 -14.0 1969-12-31 16:00:08.704 -200 1471532162 -5485871899936 NULL NULL 200 -400 -200 NULL NULL 14.0 1.7802E7 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 45 45.0 1969-12-31 16:00:04.572 -200 612900585 -2284893380880 NULL NULL 200 -400 -200 NULL NULL -45.0 1.7802E7 4.550565888149113E-5 -45 1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -63 -63.0 1969-12-31 16:00:01.843 -200 -1999307539 7453418505392 NULL NULL 200 -400 -200 NULL NULL 63.0 1.7802E7 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:01.764 -200 -2020595716 7532780829248 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -26 -26.0 1969-12-31 15:59:50.573 -200 -1087207614 4053109984992 NULL NULL 200 -400 -200 NULL NULL 26.0 1.7802E7 -2.629215846486154E-5 26 -3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 16:00:06.3 -200 57986729 -216174525712 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 46 46.0 1969-12-31 15:59:46.028 -200 14115102 -52621100256 NULL NULL 200 -400 -200 NULL NULL -46.0 1.7802E7 4.651689574552426E-5 -46 1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 15:59:57.953 -200 -30844955 114989992240 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 6 6.0 1969-12-31 16:00:13.132 -200 883917228 -3295243425984 NULL NULL 200 -400 -200 NULL NULL -6.0 1.7802E7 6.067421184198818E-6 -6 13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 2 2.0 1969-12-31 15:59:46.893 -200 1767035977 -6587510122256 NULL NULL 200 -400 -200 NULL NULL -2.0 1.7802E7 2.0224737280662724E-6 -2 39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 16:00:10.701 -200 142612225 -531658374800 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 15:59:47.921 -200 505653702 -1885077001056 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 15:59:48.452 -200 -899919510 3354899933280 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 41 41.0 1969-12-31 16:00:09.951 -200 -1973152486 7355912467808 NULL NULL 200 -400 -200 NULL NULL -41.0 1.7802E7 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 2 2.0 1969-12-31 16:00:02.752 -200 1107543828 -4128923390784 NULL NULL 200 -400 -200 NULL NULL -2.0 1.7802E7 2.0224737280662724E-6 -2 39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 6 6.0 1969-12-31 15:59:57.568 -200 559133030 -2084447935840 NULL NULL 200 -400 -200 NULL NULL -6.0 1.7802E7 6.067421184198818E-6 -6 13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 39 39.0 1969-12-31 16:00:12.557 -200 -1811991294 6755103544032 NULL NULL 200 -400 -200 NULL NULL -39.0 1.7802E7 3.9438237697292314E-5 -39 2.039820512820513 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -33 -33.0 1969-12-31 16:00:08.046 -200 281060243 -1047792585904 NULL NULL 200 -400 -200 NULL NULL 33.0 1.7802E7 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 40 40.0 1969-12-31 15:59:55.197 -200 1958187727 -7300123846256 NULL NULL 200 -400 -200 NULL NULL -40.0 1.7802E7 4.044947456132545E-5 -40 1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -60 -60.0 1969-12-31 15:59:57.528 -200 1172431520 -4370824706560 NULL NULL 200 -400 -200 NULL NULL 60.0 1.7802E7 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -61 -61.0 1969-12-31 15:59:52.066 -200 623787602 -2325480180256 NULL NULL 200 -400 -200 NULL NULL 61.0 1.7802E7 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 45 45.0 1969-12-31 15:59:56.055 -200 -1251321575 4664926831600 NULL NULL 200 -400 -200 NULL NULL -45.0 1.7802E7 4.550565888149113E-5 -45 1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:16.07 -200 1778714378 -6631047201184 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 58 58.0 1969-12-31 16:00:11.449 -200 -2045923021 7627201022288 NULL NULL 200 -400 -200 NULL NULL -58.0 1.7802E7 5.86517381139219E-5 -58 1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 22 22.0 1969-12-31 16:00:00.621 -200 930659178 -3469497415584 NULL NULL 200 -400 -200 NULL NULL -22.0 1.7802E7 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -52 -52.0 1969-12-31 16:00:01.289 -200 -1407220579 5246118318512 NULL NULL 200 -400 -200 NULL NULL 52.0 1.7802E7 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 15:59:51.788 -200 1394914812 -5200242419136 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 56 56.0 1969-12-31 16:00:16.056 -200 -72311778 269578308384 NULL NULL 200 -400 -200 NULL NULL -56.0 1.7802E7 5.6629264385855625E-5 -56 1.4205892857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -22 -22.0 1969-12-31 16:00:12.901 -200 486263371 -1812789847088 NULL NULL 200 -400 -200 NULL NULL 22.0 1.7802E7 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 24 24.0 1969-12-31 16:00:01.369 -200 -1719521942 6410377799776 NULL NULL 200 -400 -200 NULL NULL -24.0 1.7802E7 2.426968473679527E-5 -24 3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 53 53.0 1969-12-31 15:59:45.074 -200 -1405259747 5238808336816 NULL NULL 200 -400 -200 NULL NULL -53.0 1.7802E7 5.359555379375622E-5 -53 1.501 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -44 -44.0 1969-12-31 16:00:03.357 -200 1980863657 -7384659713296 NULL NULL 200 -400 -200 NULL NULL 44.0 1.7802E7 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -16 -16.0 1969-12-31 15:59:55.043 -200 82971673 -309318396944 NULL NULL 200 -400 -200 NULL NULL 16.0 1.7802E7 -1.617978982453018E-5 16 -4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 16:00:00.019 -200 1070083402 -3989270922656 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -33 -33.0 1969-12-31 15:59:45.1 -200 -375567961 1400117358608 NULL NULL 200 -400 -200 NULL NULL 33.0 1.7802E7 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -42 -42.0 1969-12-31 16:00:09.72 -200 -75032821 279722356688 NULL NULL 200 -400 -200 NULL NULL 42.0 1.7802E7 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 21 21.0 1969-12-31 16:00:12.52 -200 -1063757589 3965688291792 NULL NULL 200 -400 -200 NULL NULL -21.0 1.7802E7 2.123597414469586E-5 -21 3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 16:00:08.234 -200 -1455850339 5427410063792 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 16:00:04.997 -200 -1166027011 4346948697008 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 16:00:00.563 -200 2051685271 -7648682690288 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -27 -27.0 1969-12-31 15:59:53.546 -200 -499602601 1862518496528 NULL NULL 200 -400 -200 NULL NULL 27.0 1.7802E7 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 22 22.0 1969-12-31 16:00:09.842 -200 615107644 -2293121296832 NULL NULL 200 -400 -200 NULL NULL -22.0 1.7802E7 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -6 -6.0 1969-12-31 16:00:05.495 -200 377656757 -1407904390096 NULL NULL 200 -400 -200 NULL NULL 6.0 1.7802E7 -6.067421184198818E-6 6 -13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -15 -15.0 1969-12-31 16:00:13.438 -200 1702277036 -6346088790208 NULL NULL 200 -400 -200 NULL NULL 15.0 1.7802E7 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 16:00:00.158 -200 -1439705824 5367223311872 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -45 -45.0 1969-12-31 16:00:02.814 -200 771908206 -2877673791968 NULL NULL 200 -400 -200 NULL NULL 45.0 1.7802E7 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 55 55.0 1969-12-31 16:00:14.709 -200 529159242 -1972705654176 NULL NULL 200 -400 -200 NULL NULL -55.0 1.7802E7 5.561802752182249E-5 -55 1.4464181818181818 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 6 6.0 1969-12-31 15:59:57.47 -200 -1169269094 4359035182432 NULL NULL 200 -400 -200 NULL NULL -6.0 1.7802E7 6.067421184198818E-6 -6 13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -55 -55.0 1969-12-31 16:00:03.737 -200 -955056279 3560449808112 NULL NULL 200 -400 -200 NULL NULL 55.0 1.7802E7 -5.561802752182249E-5 55 -1.4464181818181818 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 60 60.0 1969-12-31 15:59:47.019 -200 -2132232110 7948961306080 NULL NULL 200 -400 -200 NULL NULL -60.0 1.7802E7 6.0674211841988174E-5 -60 1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 15:59:44.922 -200 -596995850 2225600528800 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -7 -7.0 1969-12-31 16:00:15.593 -200 -337718648 1259015119744 NULL NULL 200 -400 -200 NULL NULL 7.0 1.7802E7 -7.078658048231953E-6 7 -11.364714285714285 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 45 45.0 1969-12-31 16:00:11.443 -200 -122450 456493600 NULL NULL 200 -400 -200 NULL NULL -45.0 1.7802E7 4.550565888149113E-5 -45 1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 51 51.0 1969-12-31 16:00:00.147 -200 908074420 -3385301437760 NULL NULL 200 -400 -200 NULL NULL -51.0 1.7802E7 5.157308006568995E-5 -51 1.5598627450980391 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 16:00:07.675 -200 99645480 -371478349440 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -6 -6.0 1969-12-31 15:59:47.066 -200 1361253497 -5074753036816 NULL NULL 200 -400 -200 NULL NULL 6.0 1.7802E7 -6.067421184198818E-6 6 -13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 1 1.0 1969-12-31 15:59:46.29 -200 1968356628 -7338033509184 NULL NULL 200 -400 -200 NULL NULL -1.0 1.7802E7 1.0112368640331362E-6 -1 79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 42 42.0 1969-12-31 16:00:00.11 -200 1303413031 -4859123779568 NULL NULL 200 -400 -200 NULL NULL -42.0 1.7802E7 4.247194828939172E-5 -42 1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 15:59:54.522 -200 -1369228515 5104483903920 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -61 -61.0 1969-12-31 15:59:47.034 -200 1399483216 -5217273429248 NULL NULL 200 -400 -200 NULL NULL 61.0 1.7802E7 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 11 11.0 1969-12-31 16:00:14.569 -200 -62618517 233441831376 NULL NULL 200 -400 -200 NULL NULL -11.0 1.7802E7 1.1123605504364498E-5 -11 7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:13.835 -200 -139835037 521305017936 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 21 21.0 1969-12-31 16:00:13.153 -200 1469053701 -5476632197328 NULL NULL 200 -400 -200 NULL NULL -21.0 1.7802E7 2.123597414469586E-5 -21 3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 15:59:43.952 -200 -753159604 2807779003712 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 16:00:08.882 -200 -1036428824 3863806655872 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 16:00:13.008 -200 -1570844365 5856107792720 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -32 -32.0 1969-12-31 15:59:47.69 -200 -679776976 2534208566528 NULL NULL 200 -400 -200 NULL NULL 32.0 1.7802E7 -3.235957964906036E-5 32 -2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 35 35.0 1969-12-31 16:00:08.37 -200 -258891336 965146900608 NULL NULL 200 -400 -200 NULL NULL -35.0 1.7802E7 3.5393290241159765E-5 -35 2.272942857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -26 -26.0 1969-12-31 15:59:54.866 -200 -281746185 1050349777680 NULL NULL 200 -400 -200 NULL NULL 26.0 1.7802E7 -2.629215846486154E-5 26 -3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -50 -50.0 1969-12-31 16:00:04.696 -200 -144798360 539808286080 NULL NULL 200 -400 -200 NULL NULL 50.0 1.7802E7 -5.056184320165681E-5 50 -1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -36 -36.0 1969-12-31 16:00:15.111 -200 -817680514 3048312956192 NULL NULL 200 -400 -200 NULL NULL 36.0 1.7802E7 -3.64045271051929E-5 36 -2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 15:59:58.298 -200 927442664 -3457506251392 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 15:59:44.052 -200 -74396507 277350178096 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -1 -1.0 1969-12-31 15:59:58.26 -200 -830447528 3095908384384 NULL NULL 200 -400 -200 NULL NULL 1.0 1.7802E7 -1.0112368640331362E-6 1 -79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:02.234 -200 1539182778 -5738073396384 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 24 24.0 1969-12-31 15:59:53.052 -200 821428066 -3062283830048 NULL NULL 200 -400 -200 NULL NULL -24.0 1.7802E7 2.426968473679527E-5 -24 3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 16:00:05.369 -200 1700360415 -6338943627120 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 16:00:06.256 -200 -1558297670 5809333713760 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 50 50.0 1969-12-31 16:00:04.228 -200 977627069 -3644593713232 NULL NULL 200 -400 -200 NULL NULL -50.0 1.7802E7 5.056184320165681E-5 -50 1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -59 -59.0 1969-12-31 16:00:15.296 -200 165384922 -616554989216 NULL NULL 200 -400 -200 NULL NULL 59.0 1.7802E7 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -12 -12.0 1969-12-31 16:00:15.749 -200 -1476740834 5505289829152 NULL NULL 200 -400 -200 NULL NULL 12.0 1.7802E7 -1.2134842368397635E-5 12 -6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -16 -16.0 1969-12-31 15:59:44.289 -200 -1197793261 4465373277008 NULL NULL 200 -400 -200 NULL NULL 16.0 1.7802E7 -1.617978982453018E-5 16 -4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 37 37.0 1969-12-31 15:59:51.566 -200 1829107401 -6818912390928 NULL NULL 200 -400 -200 NULL NULL -37.0 1.7802E7 3.741576396922604E-5 -37 2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 15:59:45.107 -200 1565121976 -5834774726528 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 33.0 1969-12-31 15:59:49.489 -200 1531926845 -5711023278160 NULL NULL 200 -400 -200 NULL NULL -33.0 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 8 8.0 1969-12-31 15:59:57.063 -200 1430481343 -5332834446704 NULL NULL 200 -400 -200 NULL NULL -8.0 1.7802E7 8.08989491226509E-6 -8 9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 15:59:48.017 -200 428518739 -1597517858992 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -63 -63.0 1969-12-31 16:00:10.205 -200 -997946077 3720342975056 NULL NULL 200 -400 -200 NULL NULL 63.0 1.7802E7 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 3 3.0 1969-12-31 16:00:00.074 -200 162573978 -606075789984 NULL NULL 200 -400 -200 NULL NULL -3.0 1.7802E7 3.033710592099409E-6 -3 26.517666666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -31 -31.0 1969-12-31 15:59:48.152 -200 -1690447990 6301990106720 NULL NULL 200 -400 -200 NULL NULL 31.0 1.7802E7 -3.134834278502722E-5 31 -2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 23 23.0 1969-12-31 15:59:44.772 -200 752628842 -2805800322976 NULL NULL 200 -400 -200 NULL NULL -23.0 1.7802E7 2.325844787276213E-5 -23 3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -26 -26.0 1969-12-31 15:59:56.426 -200 -240265414 895709463392 NULL NULL 200 -400 -200 NULL NULL 26.0 1.7802E7 -2.629215846486154E-5 26 -3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 15:59:57.269 -200 1170453302 -4363449909856 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -52 -52.0 1969-12-31 15:59:45.644 -200 116461878 -434169881184 NULL NULL 200 -400 -200 NULL NULL 52.0 1.7802E7 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 39 39.0 1969-12-31 16:00:02.804 -200 1368309884 -5101059247552 NULL NULL 200 -400 -200 NULL NULL -39.0 1.7802E7 3.9438237697292314E-5 -39 2.039820512820513 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 62 62.0 1969-12-31 15:59:48.815 -200 -701191108 2614040450624 NULL NULL 200 -400 -200 NULL NULL -62.0 1.7802E7 6.269668557005445E-5 -62 1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -2 -2.0 1969-12-31 16:00:11.181 -200 -925105543 3448793464304 NULL NULL 200 -400 -200 NULL NULL 2.0 1.7802E7 -2.0224737280662724E-6 2 -39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 60 60.0 1969-12-31 15:59:55.035 -200 1810792403 -6750634078384 NULL NULL 200 -400 -200 NULL NULL -60.0 1.7802E7 6.0674211841988174E-5 -60 1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -37 -37.0 1969-12-31 16:00:14.662 -200 980008876 -3653473089728 NULL NULL 200 -400 -200 NULL NULL 37.0 1.7802E7 -3.741576396922604E-5 37 -2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 16:00:10.485 -200 325025905 -1211696573840 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -14 -14.0 1969-12-31 16:00:16.274 -200 -1448350434 5399450417952 NULL NULL 200 -400 -200 NULL NULL 14.0 1.7802E7 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -2 -2.0 1969-12-31 16:00:11.494 -200 841969908 -3138863817024 NULL NULL 200 -400 -200 NULL NULL 2.0 1.7802E7 -2.0224737280662724E-6 2 -39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -3 -3.0 1969-12-31 15:59:57.237 -200 -780159920 2908436181760 NULL NULL 200 -400 -200 NULL NULL 3.0 1.7802E7 -3.033710592099409E-6 3 -26.517666666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -36 -36.0 1969-12-31 15:59:53.817 -200 1599879000 -5964348912000 NULL NULL 200 -400 -200 NULL NULL 36.0 1.7802E7 -3.64045271051929E-5 36 -2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -40 -40.0 1969-12-31 15:59:46.148 -200 -1741735436 6493189705408 NULL NULL 200 -400 -200 NULL NULL 40.0 1.7802E7 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -50 -50.0 1969-12-31 15:59:52.202 -200 68053173 -253702228944 NULL NULL 200 -400 -200 NULL NULL 50.0 1.7802E7 -5.056184320165681E-5 50 -1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -15 -15.0 1969-12-31 15:59:45.322 -200 -1289952980 4808944709440 NULL NULL 200 -400 -200 NULL NULL 15.0 1.7802E7 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -48 -48.0 1969-12-31 16:00:00.96 -200 -2095298312 7811272107136 NULL NULL 200 -400 -200 NULL NULL 48.0 1.7802E7 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -40 -40.0 1969-12-31 15:59:57.942 -200 1122556805 -4184891769040 NULL NULL 200 -400 -200 NULL NULL 40.0 1.7802E7 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 16:00:06.776 -200 -1242610289 4632451157392 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 16:00:02.58 -200 1380986666 -5148318290848 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 15:59:47.712 -200 -60966612 227283529536 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 79.553 1969-12-31 16:00:04.568 -200 -787452001 2935621059728 NULL NULL 200 -400 -200 NULL NULL -79.553 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 16:00:01.515 -200 1221804187 -4554886009136 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -44 -44.0 1969-12-31 16:00:14.848 -200 1075499932 -4009463746496 NULL NULL 200 -400 -200 NULL NULL 44.0 1.7802E7 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 12 12.0 1969-12-31 16:00:12.772 -200 987273431 -3680555350768 NULL NULL 200 -400 -200 NULL NULL -12.0 1.7802E7 1.2134842368397635E-5 -12 6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -11 -11.0 1969-12-31 15:59:48.368 -200 -1894580211 7062995026608 NULL NULL 200 -400 -200 NULL NULL 11.0 1.7802E7 -1.1123605504364498E-5 11 -7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -8 -8.0 1969-12-31 16:00:08.007 -200 1525511816 -5687108050048 NULL NULL 200 -400 -200 NULL NULL 8.0 1.7802E7 -8.08989491226509E-6 8 -9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 40 40.0 1969-12-31 16:00:01.356 -200 1778581609 -6630552238352 NULL NULL 200 -400 -200 NULL NULL -40.0 1.7802E7 4.044947456132545E-5 -40 1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 15:59:50.905 -200 681143255 -2539302054640 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 15:59:48.698 -200 1546508645 -5765384228560 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -32 -32.0 1969-12-31 15:59:45.137 -200 684628920 -2552296613760 NULL NULL 200 -400 -200 NULL NULL 32.0 1.7802E7 -3.235957964906036E-5 32 -2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -5 -5.0 1969-12-31 16:00:02.021 -200 1129692328 -4211492998784 NULL NULL 200 -400 -200 NULL NULL 5.0 1.7802E7 -5.056184320165681E-6 5 -15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 16:00:07.243 -200 237649242 -885956374176 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 61 61.0 1969-12-31 15:59:56.14 -200 1648986748 -6147422596544 NULL NULL 200 -400 -200 NULL NULL -61.0 1.7802E7 6.16854487060213E-5 -61 1.3041475409836065 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 13 13.0 1969-12-31 16:00:07.723 -200 -213003637 794077558736 NULL NULL 200 -400 -200 NULL NULL -13.0 1.7802E7 1.314607923243077E-5 -13 6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -43 -43.0 1969-12-31 16:00:00.026 -200 1152448197 -4296326878416 NULL NULL 200 -400 -200 NULL NULL 43.0 1.7802E7 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -3 -3.0 1969-12-31 16:00:11.059 -200 1792567380 -6682691192640 NULL NULL 200 -400 -200 NULL NULL 3.0 1.7802E7 -3.033710592099409E-6 3 -26.517666666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 9 9.0 1969-12-31 15:59:50.611 -200 -1955716983 7290912912624 NULL NULL 200 -400 -200 NULL NULL -9.0 1.7802E7 9.101131776298225E-6 -9 8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 16:00:00.916 -200 555349603 -2070343319984 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -18 -18.0 1969-12-31 16:00:06.015 -200 -810783273 3022600041744 NULL NULL 200 -400 -200 NULL NULL 18.0 1.7802E7 -1.820226355259645E-5 18 -4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 7 7.0 1969-12-31 16:00:06.018 -200 1855542831 -6917463673968 NULL NULL 200 -400 -200 NULL NULL -7.0 1.7802E7 7.078658048231953E-6 -7 11.364714285714285 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 16:00:06.264 -200 -251902026 939090752928 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 16:00:08.386 -200 -505638328 1885019686784 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -51 -51.0 1969-12-31 16:00:07.536 -200 -1534321710 5719951334880 NULL NULL 200 -400 -200 NULL NULL 51.0 1.7802E7 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 16 16.0 1969-12-31 15:59:48.341 -200 -621136047 2315595183216 NULL NULL 200 -400 -200 NULL NULL -16.0 1.7802E7 1.617978982453018E-5 -16 4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -15 -15.0 1969-12-31 16:00:07.485 -200 -1422147400 5301765507200 NULL NULL 200 -400 -200 NULL NULL 15.0 1.7802E7 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -40 -40.0 1969-12-31 15:59:56.555 -200 -906495924 3379416804672 NULL NULL 200 -400 -200 NULL NULL 40.0 1.7802E7 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 16:00:08 -200 1358421585 -5064195668880 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 12 12.0 1969-12-31 15:59:57.794 -200 -1949450483 7267551400624 NULL NULL 200 -400 -200 NULL NULL -12.0 1.7802E7 1.2134842368397635E-5 -12 6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -37 -37.0 1969-12-31 16:00:09.111 -200 243907290 -909286377120 NULL NULL 200 -400 -200 NULL NULL 37.0 1.7802E7 -3.741576396922604E-5 37 -2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 29 29.0 1969-12-31 16:00:08.001 -200 338519290 -1261999913120 NULL NULL 200 -400 -200 NULL NULL -29.0 1.7802E7 2.932586905696095E-5 -29 2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -36 -36.0 1969-12-31 15:59:56.174 -200 1728430174 -6443587688672 NULL NULL 200 -400 -200 NULL NULL 36.0 1.7802E7 -3.64045271051929E-5 36 -2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 27 27.0 1969-12-31 16:00:15.909 -200 -1965813035 7328550994480 NULL NULL 200 -400 -200 NULL NULL -27.0 1.7802E7 2.7303395328894677E-5 -27 2.946407407407407 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -5 -5.0 1969-12-31 15:59:56.319 -200 2112230777 -7874396336656 NULL NULL 200 -400 -200 NULL NULL 5.0 1.7802E7 -5.056184320165681E-6 5 -15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 16:00:09.65 -200 1990585322 -7420902080416 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 16:00:14.247 -200 1443417260 -5381059545280 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -34 -34.0 1969-12-31 15:59:44.559 -200 -831359851 3099309524528 NULL NULL 200 -400 -200 NULL NULL 34.0 1.7802E7 -3.438205337712663E-5 34 -2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 2 2.0 1969-12-31 16:00:10.198 -200 449588215 -1676064865520 NULL NULL 200 -400 -200 NULL NULL -2.0 1.7802E7 2.0224737280662724E-6 -2 39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -2 -2.0 1969-12-31 16:00:00.574 -200 1490979298 -5558370822944 NULL NULL 200 -400 -200 NULL NULL 2.0 1.7802E7 -2.0224737280662724E-6 2 -39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -21 -21.0 1969-12-31 15:59:56.109 -200 -1835568160 6842998100480 NULL NULL 200 -400 -200 NULL NULL 21.0 1.7802E7 -2.123597414469586E-5 21 -3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -54 -54.0 1969-12-31 15:59:57.369 -200 534194176 -1991475888128 NULL NULL 200 -400 -200 NULL NULL 54.0 1.7802E7 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 30 30.0 1969-12-31 15:59:55.204 -200 -501815954 1870769876512 NULL NULL 200 -400 -200 NULL NULL -30.0 1.7802E7 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 57 57.0 1969-12-31 15:59:58.455 -200 735056642 -2740291161376 NULL NULL 200 -400 -200 NULL NULL -57.0 1.7802E7 5.764050124988876E-5 -57 1.3956666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -18 -18.0 1969-12-31 15:59:44.301 -200 1945048831 -7251142041968 NULL NULL 200 -400 -200 NULL NULL 18.0 1.7802E7 -1.820226355259645E-5 18 -4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:10.452 -200 1693637019 -6313878806832 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -60 -60.0 1969-12-31 15:59:50.822 -200 -1860186661 6934775872208 NULL NULL 200 -400 -200 NULL NULL 60.0 1.7802E7 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -56 -56.0 1969-12-31 15:59:47.897 -200 -388818510 1449515405280 NULL NULL 200 -400 -200 NULL NULL 56.0 1.7802E7 -5.6629264385855625E-5 56 -1.4205892857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 10 10.0 1969-12-31 16:00:15.298 -200 508896666 -1897166770848 NULL NULL 200 -400 -200 NULL NULL -10.0 1.7802E7 1.0112368640331362E-5 -10 7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -44 -44.0 1969-12-31 16:00:10.131 -200 -1576454990 5877024202720 NULL NULL 200 -400 -200 NULL NULL 44.0 1.7802E7 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -29 -29.0 1969-12-31 15:59:52.316 -200 -1367099579 5096547230512 NULL NULL 200 -400 -200 NULL NULL 29.0 1.7802E7 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -3 -3.0 1969-12-31 16:00:11.642 -200 -1747413995 6514359373360 NULL NULL 200 -400 -200 NULL NULL 3.0 1.7802E7 -3.033710592099409E-6 3 -26.517666666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -24 -24.0 1969-12-31 16:00:07.302 -200 -828408534 3088307014752 NULL NULL 200 -400 -200 NULL NULL 24.0 1.7802E7 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -13 -13.0 1969-12-31 16:00:05.24 -200 -871078831 3247381881968 NULL NULL 200 -400 -200 NULL NULL 13.0 1.7802E7 -1.314607923243077E-5 13 -6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 28 28.0 1969-12-31 15:59:47.977 -200 -145664633 543037751824 NULL NULL 200 -400 -200 NULL NULL -28.0 1.7802E7 2.8314632192927813E-5 -28 2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -17 -17.0 1969-12-31 16:00:06.738 -200 -1623682545 6053088527760 NULL NULL 200 -400 -200 NULL NULL 17.0 1.7802E7 -1.7191026688563315E-5 17 -4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -59 -59.0 1969-12-31 15:59:48.678 -200 -1201695086 4479919280608 NULL NULL 200 -400 -200 NULL NULL 59.0 1.7802E7 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 16:00:11.028 -200 -359106650 1338749591200 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -6 -6.0 1969-12-31 15:59:57.957 -200 1845320008 -6879352989824 NULL NULL 200 -400 -200 NULL NULL 6.0 1.7802E7 -6.067421184198818E-6 6 -13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 15:59:45.015 -200 -433242847 1615129333616 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 16:00:16.165 -200 -1012580949 3774901777872 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:07.651 -200 670871256 -2501008042368 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 16:00:12.581 -200 -1764738986 6578946939808 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 15:59:56.414 -200 2073630240 -7730493534720 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 16:00:11.102 -200 -1501917393 5599148041104 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -11 -11.0 1969-12-31 15:59:46.878 -200 -1926901193 7183487647504 NULL NULL 200 -400 -200 NULL NULL 11.0 1.7802E7 -1.1123605504364498E-5 11 -7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -16 -16.0 1969-12-31 16:00:10.394 -200 -917626258 3420910689824 NULL NULL 200 -400 -200 NULL NULL 16.0 1.7802E7 -1.617978982453018E-5 16 -4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 50 50.0 1969-12-31 16:00:08.584 -200 -1920594326 7159975647328 NULL NULL 200 -400 -200 NULL NULL -50.0 1.7802E7 5.056184320165681E-5 -50 1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 16:00:00.072 -200 -1118623392 4170228005376 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -38 -38.0 1969-12-31 16:00:09.402 -200 -1524310263 5682628660464 NULL NULL 200 -400 -200 NULL NULL 38.0 1.7802E7 -3.842700083325918E-5 38 -2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 26 26.0 1969-12-31 15:59:52.563 -200 1609051854 -5998545311712 NULL NULL 200 -400 -200 NULL NULL -26.0 1.7802E7 2.629215846486154E-5 -26 3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 16:00:11.333 -200 -133846959 498981463152 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 20 20.0 1969-12-31 15:59:48.468 -200 855930073 -3190907312144 NULL NULL 200 -400 -200 NULL NULL -20.0 1.7802E7 2.0224737280662725E-5 -20 3.9776499999999997 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -5 -5.0 1969-12-31 16:00:03.52 -200 797790274 -2974162141472 NULL NULL 200 -400 -200 NULL NULL 5.0 1.7802E7 -5.056184320165681E-6 5 -15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 16:00:15.193 -200 -793559875 2958391214000 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 22 22.0 1969-12-31 16:00:00.767 -200 1281550221 -4777619223888 NULL NULL 200 -400 -200 NULL NULL -22.0 1.7802E7 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -41 -41.0 1969-12-31 15:59:57.604 -200 -1030234300 3840713470400 NULL NULL 200 -400 -200 NULL NULL 41.0 1.7802E7 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 54 54.0 1969-12-31 16:00:08.793 -200 -163820010 610720997280 NULL NULL 200 -400 -200 NULL NULL -54.0 1.7802E7 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 53 53.0 1969-12-31 15:59:48.451 -200 -1501172121 5596369667088 NULL NULL 200 -400 -200 NULL NULL -53.0 1.7802E7 5.359555379375622E-5 -53 1.501 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 23 23.0 1969-12-31 15:59:44.456 -200 488663894 -1821738996832 NULL NULL 200 -400 -200 NULL NULL -23.0 1.7802E7 2.325844787276213E-5 -23 3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 12 12.0 1969-12-31 15:59:46.762 -200 -901884078 3362223842784 NULL NULL 200 -400 -200 NULL NULL -12.0 1.7802E7 1.2134842368397635E-5 -12 6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 16:00:05.63 -200 397130878 -1480503913184 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 16:00:12.291 -200 -1455816525 5427284005200 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 16:00:12.183 -200 1577520702 -5880997177056 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 25 25.0 1969-12-31 15:59:57.127 -200 -1484913293 5535756756304 NULL NULL 200 -400 -200 NULL NULL -25.0 1.7802E7 2.5280921600828406E-5 -25 3.18212 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -40 -40.0 1969-12-31 15:59:54.952 -200 1496680212 -5579623830336 NULL NULL 200 -400 -200 NULL NULL 40.0 1.7802E7 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 9 9.0 1969-12-31 15:59:57.048 -200 191354420 -713369277760 NULL NULL 200 -400 -200 NULL NULL -9.0 1.7802E7 9.101131776298225E-6 -9 8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -52 -52.0 1969-12-31 16:00:05.377 -200 1867766093 -6963031994704 NULL NULL 200 -400 -200 NULL NULL 52.0 1.7802E7 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -29 -29.0 1969-12-31 15:59:48.102 -200 481032605 -1793289551440 NULL NULL 200 -400 -200 NULL NULL 29.0 1.7802E7 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -45 -45.0 1969-12-31 16:00:10.036 -200 -153597470 572611368160 NULL NULL 200 -400 -200 NULL NULL 45.0 1.7802E7 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -51 -51.0 1969-12-31 15:59:46.506 -200 57827239 -215579946992 NULL NULL 200 -400 -200 NULL NULL 51.0 1.7802E7 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 18 18.0 1969-12-31 15:59:48.188 -200 -834070259 3109413925552 NULL NULL 200 -400 -200 NULL NULL -18.0 1.7802E7 1.820226355259645E-5 -18 4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 36 36.0 1969-12-31 16:00:14.011 -200 -1301030543 4850241864304 NULL NULL 200 -400 -200 NULL NULL -36.0 1.7802E7 3.64045271051929E-5 -36 2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 15:59:45.198 -200 326580052 -1217490433856 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 40 40.0 1969-12-31 16:00:06.827 -200 -1879142590 7005443575520 NULL NULL 200 -400 -200 NULL NULL -40.0 1.7802E7 4.044947456132545E-5 -40 1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 13 13.0 1969-12-31 15:59:45.517 -200 522219886 -1946835735008 NULL NULL 200 -400 -200 NULL NULL -13.0 1.7802E7 1.314607923243077E-5 -13 6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -40 -40.0 1969-12-31 15:59:50.074 -200 247085875 -921136142000 NULL NULL 200 -400 -200 NULL NULL 40.0 1.7802E7 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -16 -16.0 1969-12-31 15:59:52.343 -200 309905338 -1155327100064 NULL NULL 200 -400 -200 NULL NULL 16.0 1.7802E7 -1.617978982453018E-5 16 -4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 42 42.0 1969-12-31 16:00:05.092 -200 1057329243 -3941723417904 NULL NULL 200 -400 -200 NULL NULL -42.0 1.7802E7 4.247194828939172E-5 -42 1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 61 61.0 1969-12-31 16:00:01.091 -200 -2141583722 7983824115616 NULL NULL 200 -400 -200 NULL NULL -61.0 1.7802E7 6.16854487060213E-5 -61 1.3041475409836065 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 44 44.0 1969-12-31 16:00:03.89 -200 -72955181 271976914768 NULL NULL 200 -400 -200 NULL NULL -44.0 1.7802E7 4.449442201745799E-5 -44 1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 58 58.0 1969-12-31 15:59:54.562 -200 -649143670 2420007601760 NULL NULL 200 -400 -200 NULL NULL -58.0 1.7802E7 5.86517381139219E-5 -58 1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 22 22.0 1969-12-31 16:00:00.073 -200 872463931 -3252545534768 NULL NULL 200 -400 -200 NULL NULL -22.0 1.7802E7 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -3 -3.0 1969-12-31 15:59:53.28 -200 -1413849836 5270832188608 NULL NULL 200 -400 -200 NULL NULL 3.0 1.7802E7 -3.033710592099409E-6 3 -26.517666666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 62 62.0 1969-12-31 15:59:54.762 -200 1011458748 -3770718212544 NULL NULL 200 -400 -200 NULL NULL -62.0 1.7802E7 6.269668557005445E-5 -62 1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:02.075 -200 -1090697524 4066120369472 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 19 19.0 1969-12-31 16:00:03.44 -200 -699116745 2606307225360 NULL NULL 200 -400 -200 NULL NULL -19.0 1.7802E7 1.921350041662959E-5 -19 4.187 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 29 29.0 1969-12-31 16:00:05.944 -200 1721739533 -6418644979024 NULL NULL 200 -400 -200 NULL NULL -29.0 1.7802E7 2.932586905696095E-5 -29 2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -38 -38.0 1969-12-31 16:00:09.644 -200 -5729887 21361018736 NULL NULL 200 -400 -200 NULL NULL 38.0 1.7802E7 -3.842700083325918E-5 38 -2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 11 11.0 1969-12-31 16:00:08.745 -200 1185396861 -4419159497808 NULL NULL 200 -400 -200 NULL NULL -11.0 1.7802E7 1.1123605504364498E-5 -11 7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -8 -8.0 1969-12-31 15:59:53.246 -200 371982429 -1386750495312 NULL NULL 200 -400 -200 NULL NULL 8.0 1.7802E7 -8.08989491226509E-6 8 -9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 31 31.0 1969-12-31 15:59:55.508 -200 322893623 -1203747426544 NULL NULL 200 -400 -200 NULL NULL -31.0 1.7802E7 3.134834278502722E-5 -31 2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 16:00:11.457 -200 -836056903 3116820134384 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -21 -21.0 1969-12-31 15:59:51.083 -200 1386823242 -5170077046176 NULL NULL 200 -400 -200 NULL NULL 21.0 1.7802E7 -2.123597414469586E-5 21 -3.788238095238095 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -31 -31.0 1969-12-31 15:59:52.474 -200 -281573163 1049704751664 NULL NULL 200 -400 -200 NULL NULL 31.0 1.7802E7 -3.134834278502722E-5 31 -2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 15:59:54.955 -200 -714556097 2663865129616 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 33.0 1969-12-31 15:59:57.334 -200 -1104704650 4118338935200 NULL NULL 200 -400 -200 NULL NULL -33.0 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -1 -1.389 1969-12-31 16:00:11.049 -200 -2143304715 7990239977520 NULL NULL 200 -400 -200 NULL NULL 1.389 1.7802E7 -1.0112368640331362E-6 1 -79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 59 59.0 1969-12-31 15:59:50.306 -200 771123694 -2874749131232 NULL NULL 200 -400 -200 NULL NULL -59.0 1.7802E7 5.966297497795504E-5 -59 1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -18 -18.0 1969-12-31 15:59:45.372 -200 -71980111 268341853808 NULL NULL 200 -400 -200 NULL NULL 18.0 1.7802E7 -1.820226355259645E-5 18 -4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -43 -43.0 1969-12-31 15:59:49.383 -200 -1177584950 4390036693600 NULL NULL 200 -400 -200 NULL NULL 43.0 1.7802E7 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 46 46.0 1969-12-31 15:59:55.241 -200 -170158516 634350947648 NULL NULL 200 -400 -200 NULL NULL -46.0 1.7802E7 4.651689574552426E-5 -46 1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 45 45.0 1969-12-31 16:00:11.515 -200 855920504 -3190871638912 NULL NULL 200 -400 -200 NULL NULL -45.0 1.7802E7 4.550565888149113E-5 -45 1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 0 0.0 1969-12-31 15:59:44.904 -200 2144209609 -7993613422352 NULL NULL 200 -400 -200 NULL NULL -0.0 1.7802E7 0.0 0 NULL -NULL -200.0 1969-12-31 15:59:55.451 NULL false -15 -15.0 1969-12-31 15:59:54.883 -200 -1411964550 5263803842400 NULL NULL 200 -400 -200 NULL NULL 15.0 1.7802E7 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 57 57.0 1969-12-31 16:00:04.207 -200 -971674501 3622402539728 NULL NULL 200 -400 -200 NULL NULL -57.0 1.7802E7 5.764050124988876E-5 -57 1.3956666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -6 -6.0 1969-12-31 16:00:02.928 -200 -891215466 3322451257248 NULL NULL 200 -400 -200 NULL NULL 6.0 1.7802E7 -6.067421184198818E-6 6 -13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 5 5.0 1969-12-31 16:00:11.083 -200 -1660234875 6189355614000 NULL NULL 200 -400 -200 NULL NULL -5.0 1.7802E7 5.056184320165681E-6 -5 15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 44 44.0 1969-12-31 16:00:06.91 -200 -2002017129 7463519856912 NULL NULL 200 -400 -200 NULL NULL -44.0 1.7802E7 4.449442201745799E-5 -44 1.8080227272727272 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 48 48.0 1969-12-31 16:00:15.548 -200 1372727646 -5117528664288 NULL NULL 200 -400 -200 NULL NULL -48.0 1.7802E7 4.853936947359054E-5 -48 1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -60 -60.0 1969-12-31 16:00:02.322 -200 -126921733 473164220624 NULL NULL 200 -400 -200 NULL NULL 60.0 1.7802E7 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 15:59:52.431 -200 -1235100020 4604452874560 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 15:59:53.671 -200 643105282 -2397496491296 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 0 0.0 1969-12-31 16:00:13.396 -200 618557893 -2305983825104 NULL NULL 200 -400 -200 NULL NULL -0.0 1.7802E7 0.0 0 NULL -NULL -200.0 1969-12-31 15:59:55.451 NULL false 18 18.0 1969-12-31 15:59:55.382 -200 -1505775646 5613531608288 NULL NULL 200 -400 -200 NULL NULL -18.0 1.7802E7 1.820226355259645E-5 -18 4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 15:59:56.218 -200 964506212 -3595679158336 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 9 9.0 1969-12-31 15:59:43.983 -200 1928523894 -7189537076832 NULL NULL 200 -400 -200 NULL NULL -9.0 1.7802E7 9.101131776298225E-6 -9 8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:10.227 -200 1313892161 -4898189976208 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 33.0 1969-12-31 16:00:07.006 -200 -1897610729 7074292797712 NULL NULL 200 -400 -200 NULL NULL -33.0 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 36 36.0 1969-12-31 16:00:10.467 -200 1284716338 -4789422508064 NULL NULL 200 -400 -200 NULL NULL -36.0 1.7802E7 3.64045271051929E-5 -36 2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -39 -39.0 1969-12-31 16:00:13.144 -200 -589917253 2199211519184 NULL NULL 200 -400 -200 NULL NULL 39.0 1.7802E7 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 16 16.0 1969-12-31 16:00:02.582 -200 1047398909 -3904703132752 NULL NULL 200 -400 -200 NULL NULL -16.0 1.7802E7 1.617978982453018E-5 -16 4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 10 10.0 1969-12-31 15:59:57.081 -200 -1731141467 6453695388976 NULL NULL 200 -400 -200 NULL NULL -10.0 1.7802E7 1.0112368640331362E-5 -10 7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 4 4.0 1969-12-31 15:59:54.471 -200 296811522 -1106513354016 NULL NULL 200 -400 -200 NULL NULL -4.0 1.7802E7 4.044947456132545E-6 -4 19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 47 47.0 1969-12-31 15:59:52.118 -200 1683928379 -6277684996912 NULL NULL 200 -400 -200 NULL NULL -47.0 1.7802E7 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -43 -43.0 1969-12-31 15:59:50.023 -200 -1184913004 4417355678912 NULL NULL 200 -400 -200 NULL NULL 43.0 1.7802E7 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 2 2.0 1969-12-31 15:59:58.416 -200 -516985252 1927321019456 NULL NULL 200 -400 -200 NULL NULL -2.0 1.7802E7 2.0224737280662724E-6 -2 39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 38 38.0 1969-12-31 15:59:51.77 -200 835189885 -3113587891280 NULL NULL 200 -400 -200 NULL NULL -38.0 1.7802E7 3.842700083325918E-5 -38 2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 2 2.0 1969-12-31 16:00:09.161 -200 1480384156 -5518872133568 NULL NULL 200 -400 -200 NULL NULL -2.0 1.7802E7 2.0224737280662724E-6 -2 39.7765 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 30 30.0 1969-12-31 15:59:44.101 -200 -686795969 2560375372432 NULL NULL 200 -400 -200 NULL NULL -30.0 1.7802E7 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 16:00:00.778 -200 -614444827 2290650315056 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 16:00:14.154 -200 -1113073921 4149539577488 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 16:00:12.477 -200 2128130578 -7933670794784 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 1 1.0 1969-12-31 16:00:10.364 -200 85496797 -318732059216 NULL NULL 200 -400 -200 NULL NULL -1.0 1.7802E7 1.0112368640331362E-6 -1 79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -8 -8.0 1969-12-31 15:59:54.731 -200 508093612 -1894172985536 NULL NULL 200 -400 -200 NULL NULL 8.0 1.7802E7 -8.08989491226509E-6 8 -9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -1 -1.0 1969-12-31 16:00:12.403 -200 -868641510 3238295549280 NULL NULL 200 -400 -200 NULL NULL 1.0 1.7802E7 -1.0112368640331362E-6 1 -79.553 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 15:59:46.633 -200 -167812632 625605492096 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 16:00:08.301 -200 -735058469 2740297972432 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -49 -49.0 1969-12-31 15:59:56.159 -200 1436496635 -5355259455280 NULL NULL 200 -400 -200 NULL NULL 49.0 1.7802E7 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 30 30.0 1969-12-31 16:00:08.142 -200 -1657894927 6180632287856 NULL NULL 200 -400 -200 NULL NULL -30.0 1.7802E7 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 8 8.0 1969-12-31 15:59:48.785 -200 1356532737 -5057154043536 NULL NULL 200 -400 -200 NULL NULL -8.0 1.7802E7 8.08989491226509E-6 -8 9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 33.0 1969-12-31 15:59:45.163 -200 766974126 -2859279541728 NULL NULL 200 -400 -200 NULL NULL -33.0 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 15:59:48.16 -200 -395589755 1474758606640 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 29 29.0 1969-12-31 16:00:05.79 -200 1890977505 -7049564138640 NULL NULL 200 -400 -200 NULL NULL -29.0 1.7802E7 2.932586905696095E-5 -29 2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:09.792 -200 -1710271850 6375893456800 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 37 37.0 1969-12-31 16:00:06.69 -200 -1817207476 6774549470528 NULL NULL 200 -400 -200 NULL NULL -37.0 1.7802E7 3.741576396922604E-5 -37 2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 15:59:44.008 -200 -573654993 2138585813904 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 15:59:44.221 -200 1371826360 -5114168670080 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -20 -20.0 1969-12-31 15:59:48.182 -200 1406877565 -5244839562320 NULL NULL 200 -400 -200 NULL NULL 20.0 1.7802E7 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 58 58.0 1969-12-31 15:59:51.063 -200 -432105022 1610887522016 NULL NULL 200 -400 -200 NULL NULL -58.0 1.7802E7 5.86517381139219E-5 -58 1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -8 -8.0 1969-12-31 15:59:48.763 -200 1471734024 -5486624441472 NULL NULL 200 -400 -200 NULL NULL 8.0 1.7802E7 -8.08989491226509E-6 8 -9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 16:00:01.232 -200 1961389522 -7312060138016 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -32 -32.0 1969-12-31 16:00:04.577 -200 -1665914053 6210527589584 NULL NULL 200 -400 -200 NULL NULL 32.0 1.7802E7 -3.235957964906036E-5 32 -2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -58 -58.0 1969-12-31 15:59:50.681 -200 -22464308 83746940224 NULL NULL 200 -400 -200 NULL NULL 58.0 1.7802E7 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -10 -10.0 1969-12-31 15:59:58.989 -200 475712407 -1773455853296 NULL NULL 200 -400 -200 NULL NULL 10.0 1.7802E7 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 43 43.0 1969-12-31 16:00:14.685 -200 -90837843 338643478704 NULL NULL 200 -400 -200 NULL NULL -43.0 1.7802E7 4.3483185153424856E-5 -43 1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -62 -62.0 1969-12-31 16:00:00.037 -200 -2080605724 7756498139072 NULL NULL 200 -400 -200 NULL NULL 62.0 1.7802E7 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 59 59.0 1969-12-31 16:00:05.13 -200 661665098 -2466687485344 NULL NULL 200 -400 -200 NULL NULL -59.0 1.7802E7 5.966297497795504E-5 -59 1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 12 12.0 1969-12-31 16:00:09.556 -200 801119662 -2986574099936 NULL NULL 200 -400 -200 NULL NULL -12.0 1.7802E7 1.2134842368397635E-5 -12 6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 42 42.0 1969-12-31 15:59:48.292 -200 760034197 -2833407486416 NULL NULL 200 -400 -200 NULL NULL -42.0 1.7802E7 4.247194828939172E-5 -42 1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -46 -46.0 1969-12-31 16:00:00.013 -200 -1767343556 6588656776768 NULL NULL 200 -400 -200 NULL NULL 46.0 1.7802E7 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -14 -14.0 1969-12-31 16:00:08.549 -200 1340808498 -4998534080544 NULL NULL 200 -400 -200 NULL NULL 14.0 1.7802E7 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -63 -63.0 1969-12-31 15:59:57.693 -200 956380949 -3565388177872 NULL NULL 200 -400 -200 NULL NULL 63.0 1.7802E7 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -54 -54.0 1969-12-31 16:00:00.168 -200 -802752239 2992660346992 NULL NULL 200 -400 -200 NULL NULL 54.0 1.7802E7 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 32 32.0 1969-12-31 15:59:44.04 -200 -257169455 958727728240 NULL NULL 200 -400 -200 NULL NULL -32.0 1.7802E7 3.235957964906036E-5 -32 2.48603125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -60 -60.0 1969-12-31 15:59:45.739 -200 -1690528981 6302292041168 NULL NULL 200 -400 -200 NULL NULL 60.0 1.7802E7 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 35 35.0 1969-12-31 16:00:14.084 -200 1974986508 -7362749701824 NULL NULL 200 -400 -200 NULL NULL -35.0 1.7802E7 3.5393290241159765E-5 -35 2.272942857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -42 -42.0 1969-12-31 15:59:56.197 -200 1157618085 -4315600220880 NULL NULL 200 -400 -200 NULL NULL 42.0 1.7802E7 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -11 -11.0 1969-12-31 15:59:43.783 -200 12116087 -45168772336 NULL NULL 200 -400 -200 NULL NULL 11.0 1.7802E7 -1.1123605504364498E-5 11 -7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 17 17.0 1969-12-31 16:00:10.672 -200 -1197996365 4466130448720 NULL NULL 200 -400 -200 NULL NULL -17.0 1.7802E7 1.7191026688563315E-5 -17 4.679588235294117 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 25 25.0 1969-12-31 15:59:54.072 -200 1405644908 -5240244217024 NULL NULL 200 -400 -200 NULL NULL -25.0 1.7802E7 2.5280921600828406E-5 -25 3.18212 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -8 -8.0 1969-12-31 15:59:49.986 -200 -1515410154 5649449054112 NULL NULL 200 -400 -200 NULL NULL 8.0 1.7802E7 -8.08989491226509E-6 8 -9.944125 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -57 -57.0 1969-12-31 16:00:11.883 -200 -369958251 1379204359728 NULL NULL 200 -400 -200 NULL NULL 57.0 1.7802E7 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 42 42.0 1969-12-31 15:59:30.929 -200 -578935785 2158272606480 NULL NULL 200 -400 -200 NULL NULL -42.0 1.7802E7 4.247194828939172E-5 -42 1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 11 11.0 1969-12-31 16:00:13.383 -200 1442208582 -5376553593696 NULL NULL 200 -400 -200 NULL NULL -11.0 1.7802E7 1.1123605504364498E-5 -11 7.232090909090909 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 0 0.0 1969-12-31 16:00:02.71 -200 406548885 -1515614243280 NULL NULL 200 -400 -200 NULL NULL -0.0 1.7802E7 0.0 0 NULL -NULL -200.0 1969-12-31 15:59:55.451 NULL false -19 -19.0 1969-12-31 16:00:04.02 -200 -112652051 419966846128 NULL NULL 200 -400 -200 NULL NULL 19.0 1.7802E7 -1.921350041662959E-5 19 -4.187 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 15:59:45.865 -200 -1014234787 3781067285936 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -55 -55.0 1969-12-31 16:00:05.793 -200 865661585 -3227186388880 NULL NULL 200 -400 -200 NULL NULL 55.0 1.7802E7 -5.561802752182249E-5 55 -1.4464181818181818 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -46 -46.0 1969-12-31 15:59:53.694 -200 -1338441335 4989709296880 NULL NULL 200 -400 -200 NULL NULL 46.0 1.7802E7 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -50 -50.0 1969-12-31 16:00:15.707 -200 -1030054242 3840042214176 NULL NULL 200 -400 -200 NULL NULL 50.0 1.7802E7 -5.056184320165681E-5 50 -1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 48 48.0 1969-12-31 16:00:00.008 -200 -949365839 3539235847792 NULL NULL 200 -400 -200 NULL NULL -48.0 1.7802E7 4.853936947359054E-5 -48 1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -47 -47.0 1969-12-31 16:00:08.884 -200 2028722791 -7563078564848 NULL NULL 200 -400 -200 NULL NULL 47.0 1.7802E7 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 20 20.0 1969-12-31 16:00:05.722 -200 1977856778 -7373450068384 NULL NULL 200 -400 -200 NULL NULL -20.0 1.7802E7 2.0224737280662725E-5 -20 3.9776499999999997 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 15:59:45.299 -200 -653439720 2436023276160 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -33 -33.0 1969-12-31 15:59:52.269 -200 -1888871661 7041713552208 NULL NULL 200 -400 -200 NULL NULL 33.0 1.7802E7 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -26 -26.0 1969-12-31 15:59:48.662 -200 -1820077302 6785248181856 NULL NULL 200 -400 -200 NULL NULL 26.0 1.7802E7 -2.629215846486154E-5 26 -3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -33 -33.0 1969-12-31 16:00:00.611 -200 2087495093 -7782181706704 NULL NULL 200 -400 -200 NULL NULL 33.0 1.7802E7 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -19 -19.0 1969-12-31 16:00:15.223 -200 -1721895877 6419227829456 NULL NULL 200 -400 -200 NULL NULL 19.0 1.7802E7 -1.921350041662959E-5 19 -4.187 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 49 49.0 1969-12-31 16:00:08.726 -200 1233260108 -4597593682624 NULL NULL 200 -400 -200 NULL NULL -49.0 1.7802E7 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -59 -59.0 1969-12-31 16:00:09.498 -200 -643835673 2400219388944 NULL NULL 200 -400 -200 NULL NULL 59.0 1.7802E7 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 54 54.0 1969-12-31 15:59:53.886 -200 1838082189 -6852370400592 NULL NULL 200 -400 -200 NULL NULL -54.0 1.7802E7 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -27 -27.0 1969-12-31 16:00:06.385 -200 -1446714109 5393350198352 NULL NULL 200 -400 -200 NULL NULL 27.0 1.7802E7 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 20 20.0 1969-12-31 16:00:05.147 -200 -1173894737 4376279579536 NULL NULL 200 -400 -200 NULL NULL -20.0 1.7802E7 2.0224737280662725E-5 -20 3.9776499999999997 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -64 -64.0 1969-12-31 16:00:00.199 -200 927647669 -3458270510032 NULL NULL 200 -400 -200 NULL NULL 64.0 1.7802E7 -6.471915929812072E-5 64 -1.243015625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -27 -27.0 1969-12-31 16:00:08.365 -200 -2068220951 7710327705328 NULL NULL 200 -400 -200 NULL NULL 27.0 1.7802E7 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -31 -31.0 1969-12-31 16:00:13.087 -200 -2127856621 7932649483088 NULL NULL 200 -400 -200 NULL NULL 31.0 1.7802E7 -3.134834278502722E-5 31 -2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -58 -58.0 1969-12-31 16:00:08.74 -200 765913519 -2855325598832 NULL NULL 200 -400 -200 NULL NULL 58.0 1.7802E7 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 62 62.0 1969-12-31 16:00:07.828 -200 1801868132 -6717364396096 NULL NULL 200 -400 -200 NULL NULL -62.0 1.7802E7 6.269668557005445E-5 -62 1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -60 -60.0 1969-12-31 16:00:11.641 -200 -1445021496 5387040137088 NULL NULL 200 -400 -200 NULL NULL 60.0 1.7802E7 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 34 34.0 1969-12-31 16:00:14.909 -200 26234080 -97800650240 NULL NULL 200 -400 -200 NULL NULL -34.0 1.7802E7 3.438205337712663E-5 -34 2.3397941176470587 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -4 -4.0 1969-12-31 16:00:14.04 -200 -247697712 923417070336 NULL NULL 200 -400 -200 NULL NULL 4.0 1.7802E7 -4.044947456132545E-6 4 -19.88825 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 37 37.0 1969-12-31 16:00:09.907 -200 1256255128 -4683319117184 NULL NULL 200 -400 -200 NULL NULL -37.0 1.7802E7 3.741576396922604E-5 -37 2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 16:00:09.93 -200 854529509 -3185686009552 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -50 -50.0 1969-12-31 15:59:47.233 -200 824529348 -3073845409344 NULL NULL 200 -400 -200 NULL NULL 50.0 1.7802E7 -5.056184320165681E-5 50 -1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -43 -43.0 1969-12-31 15:59:49.762 -200 408511379 -1522930420912 NULL NULL 200 -400 -200 NULL NULL 43.0 1.7802E7 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -59 -59.0 1969-12-31 15:59:44.148 -200 -639531371 2384172951088 NULL NULL 200 -400 -200 NULL NULL 59.0 1.7802E7 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 14 14.0 1969-12-31 15:59:46.045 -200 166002385 -618856891280 NULL NULL 200 -400 -200 NULL NULL -14.0 1.7802E7 1.4157316096463906E-5 -14 5.682357142857143 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 19 19.0 1969-12-31 15:59:46.022 -200 1911972024 -7127831705472 NULL NULL 200 -400 -200 NULL NULL -19.0 1.7802E7 1.921350041662959E-5 -19 4.187 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 25 25.0 1969-12-31 16:00:06.38 -200 -1737191305 6476249185040 NULL NULL 200 -400 -200 NULL NULL -25.0 1.7802E7 2.5280921600828406E-5 -25 3.18212 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 23 23.0 1969-12-31 15:59:55.008 -200 1257490174 -4687923368672 NULL NULL 200 -400 -200 NULL NULL -23.0 1.7802E7 2.325844787276213E-5 -23 3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -37 -37.0 1969-12-31 16:00:02.112 -200 -386882321 1442297292688 NULL NULL 200 -400 -200 NULL NULL 37.0 1.7802E7 -3.741576396922604E-5 37 -2.150081081081081 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -45 -45.0 1969-12-31 16:00:05.68 -200 942202168 -3512529682304 NULL NULL 200 -400 -200 NULL NULL 45.0 1.7802E7 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 40 40.0 1969-12-31 16:00:06.346 -200 2068959120 -7713079599360 NULL NULL 200 -400 -200 NULL NULL -40.0 1.7802E7 4.044947456132545E-5 -40 1.9888249999999998 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 0 0.0 1969-12-31 16:00:15.616 -200 -1379420228 5142478609984 NULL NULL 200 -400 -200 NULL NULL -0.0 1.7802E7 0.0 0 NULL -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 16:00:11.08 -200 607820185 -2265953649680 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -22 -22.0 1969-12-31 15:59:54.584 -200 1322101937 -4928796021136 NULL NULL 200 -400 -200 NULL NULL 22.0 1.7802E7 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:01.813 -200 -1749223037 6521103481936 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -28 -28.0 1969-12-31 15:59:51.867 -200 706927917 -2635427274576 NULL NULL 200 -400 -200 NULL NULL 28.0 1.7802E7 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -46 -46.0 1969-12-31 16:00:00.601 -200 -993366782 3703271363296 NULL NULL 200 -400 -200 NULL NULL 46.0 1.7802E7 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 43 43.0 1969-12-31 15:59:50.893 -200 1796171294 -6696126584032 NULL NULL 200 -400 -200 NULL NULL -43.0 1.7802E7 4.3483185153424856E-5 -43 1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 42 42.0 1969-12-31 16:00:15.369 -200 942676094 -3514296478432 NULL NULL 200 -400 -200 NULL NULL -42.0 1.7802E7 4.247194828939172E-5 -42 1.8941190476190475 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -58 -58.0 1969-12-31 16:00:08.05 -200 -652375883 2432057291824 NULL NULL 200 -400 -200 NULL NULL 58.0 1.7802E7 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 31 31.0 1969-12-31 15:59:58.44 -200 -742095371 2766531543088 NULL NULL 200 -400 -200 NULL NULL -31.0 1.7802E7 3.134834278502722E-5 -31 2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -26.28 1969-12-31 15:59:56.197 -200 -1899525804 7081432197312 NULL NULL 200 -400 -200 NULL NULL 26.28 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 48 48.0 1969-12-31 16:00:15.512 -200 -929558354 3465393543712 NULL NULL 200 -400 -200 NULL NULL -48.0 1.7802E7 4.853936947359054E-5 -48 1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -15 -15.0 1969-12-31 15:59:54.004 -200 -541559761 2018934789008 NULL NULL 200 -400 -200 NULL NULL 15.0 1.7802E7 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 0 0.0 1969-12-31 16:00:10.139 -200 1585496199 -5910729829872 NULL NULL 200 -400 -200 NULL NULL -0.0 1.7802E7 0.0 0 NULL -NULL -200.0 1969-12-31 15:59:55.451 NULL false -47 -47.0 1969-12-31 15:59:56.477 -200 15932860 -59397702080 NULL NULL 200 -400 -200 NULL NULL 47.0 1.7802E7 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 13 13.0 1969-12-31 15:59:46.525 -200 -1069199891 3985977193648 NULL NULL 200 -400 -200 NULL NULL -13.0 1.7802E7 1.314607923243077E-5 -13 6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -5 -5.0 1969-12-31 16:00:08.267 -200 247154261 -921391085008 NULL NULL 200 -400 -200 NULL NULL 5.0 1.7802E7 -5.056184320165681E-6 5 -15.910599999999999 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -12 -12.0 1969-12-31 16:00:04.154 -200 -781795723 2914534455344 NULL NULL 200 -400 -200 NULL NULL 12.0 1.7802E7 -1.2134842368397635E-5 12 -6.629416666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 33 33.0 1969-12-31 15:59:51.66 -200 -1537502693 5731810039504 NULL NULL 200 -400 -200 NULL NULL -33.0 1.7802E7 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -48 -48.0 1969-12-31 15:59:50.052 -200 267944536 -998897230208 NULL NULL 200 -400 -200 NULL NULL 48.0 1.7802E7 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 41 41.0 1969-12-31 15:59:45.574 -200 -2080164191 7754852104048 NULL NULL 200 -400 -200 NULL NULL -41.0 1.7802E7 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 26 26.0 1969-12-31 15:59:58.654 -200 -1384566896 5161665388288 NULL NULL 200 -400 -200 NULL NULL -26.0 1.7802E7 2.629215846486154E-5 -26 3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -56 -56.0 1969-12-31 16:00:13.958 -200 -324944949 1211394769872 NULL NULL 200 -400 -200 NULL NULL 56.0 1.7802E7 -5.6629264385855625E-5 56 -1.4205892857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:16.178 -200 -1589934514 5927275868192 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 7 7.0 1969-12-31 15:59:53.034 -200 514569296 -1918314335488 NULL NULL 200 -400 -200 NULL NULL -7.0 1.7802E7 7.078658048231953E-6 -7 11.364714285714285 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -27 -27.0 1969-12-31 15:59:58.171 -200 -1703126876 6349256993728 NULL NULL 200 -400 -200 NULL NULL 27.0 1.7802E7 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 52 52.0 1969-12-31 16:00:02.269 -200 2035546169 -7588516118032 NULL NULL 200 -400 -200 NULL NULL -52.0 1.7802E7 5.258431692972308E-5 -52 1.5298653846153845 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -16 -16.0 1969-12-31 16:00:05.487 -200 -1886601867 7033251760176 NULL NULL 200 -400 -200 NULL NULL 16.0 1.7802E7 -1.617978982453018E-5 16 -4.9720625 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -31 -31.0 1969-12-31 16:00:07.398 -200 -1461142157 5447137961296 NULL NULL 200 -400 -200 NULL NULL 31.0 1.7802E7 -3.134834278502722E-5 31 -2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -47 -47.0 1969-12-31 16:00:04.977 -200 -300022102 1118482396256 NULL NULL 200 -400 -200 NULL NULL 47.0 1.7802E7 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 35 35.0 1969-12-31 16:00:00.9 -200 880598992 -3282873042176 NULL NULL 200 -400 -200 NULL NULL -35.0 1.7802E7 3.5393290241159765E-5 -35 2.272942857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -31 -31.0 1969-12-31 16:00:15.012 -200 1399153943 -5216045899504 NULL NULL 200 -400 -200 NULL NULL 31.0 1.7802E7 -3.134834278502722E-5 31 -2.566225806451613 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -18 -18.0 1969-12-31 16:00:05.241 -200 1602304617 -5973391612176 NULL NULL 200 -400 -200 NULL NULL 18.0 1.7802E7 -1.820226355259645E-5 18 -4.419611111111111 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -9 -9.0 1969-12-31 15:59:57.965 -200 1095896876 -4085503553728 NULL NULL 200 -400 -200 NULL NULL 9.0 1.7802E7 -9.101131776298225E-6 9 -8.839222222222222 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 60 60.0 1969-12-31 15:59:51.682 -200 -1493893128 5569233581184 NULL NULL 200 -400 -200 NULL NULL -60.0 1.7802E7 6.0674211841988174E-5 -60 1.3258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 13 13.0 1969-12-31 16:00:14.548 -200 370944760 -1382882065280 NULL NULL 200 -400 -200 NULL NULL -13.0 1.7802E7 1.314607923243077E-5 -13 6.119461538461538 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 54 54.0 1969-12-31 15:59:56.345 -200 1756261895 -6547344344560 NULL NULL 200 -400 -200 NULL NULL -54.0 1.7802E7 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 55 55.0 1969-12-31 15:59:51.024 -200 4521993 -16857989904 NULL NULL 200 -400 -200 NULL NULL -55.0 1.7802E7 5.561802752182249E-5 -55 1.4464181818181818 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 36 36.0 1969-12-31 15:59:44.081 -200 -1267159917 4723972170576 NULL NULL 200 -400 -200 NULL NULL -36.0 1.7802E7 3.64045271051929E-5 -36 2.2098055555555556 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 41 41.0 1969-12-31 15:59:49.062 -200 -512762593 1911578946704 NULL NULL 200 -400 -200 NULL NULL -41.0 1.7802E7 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 24 24.0 1969-12-31 15:59:52.313 -200 1037704301 -3868561634128 NULL NULL 200 -400 -200 NULL NULL -24.0 1.7802E7 2.426968473679527E-5 -24 3.3147083333333334 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -41 -41.0 1969-12-31 16:00:02.969 -200 1295784269 -4830683754832 NULL NULL 200 -400 -200 NULL NULL 41.0 1.7802E7 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -41 -41.0 1969-12-31 16:00:11.565 -200 -1838021063 6852142522864 NULL NULL 200 -400 -200 NULL NULL 41.0 1.7802E7 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -51 -51.0 1969-12-31 16:00:02.011 -200 -595350658 2219467253024 NULL NULL 200 -400 -200 NULL NULL 51.0 1.7802E7 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -38 -38.0 1969-12-31 16:00:02.007 -200 -1627751298 6068256838944 NULL NULL 200 -400 -200 NULL NULL 38.0 1.7802E7 -3.842700083325918E-5 38 -2.0935 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -6 -6.0 1969-12-31 15:59:56.094 -200 -585807467 2183890236976 NULL NULL 200 -400 -200 NULL NULL 6.0 1.7802E7 -6.067421184198818E-6 6 -13.258833333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -29 -29.0 1969-12-31 16:00:03.116 -200 737068329 -2747790730512 NULL NULL 200 -400 -200 NULL NULL 29.0 1.7802E7 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -56 -56.0 1969-12-31 16:00:15.038 -200 1642029665 -6121486591120 NULL NULL 200 -400 -200 NULL NULL 56.0 1.7802E7 -5.6629264385855625E-5 56 -1.4205892857142857 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 62 62.0 1969-12-31 15:59:46.338 -200 175991222 -656095275616 NULL NULL 200 -400 -200 NULL NULL -62.0 1.7802E7 6.269668557005445E-5 -62 1.2831129032258064 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -47 -47.0 1969-12-31 16:00:02.508 -200 1775269950 -6618206373600 NULL NULL 200 -400 -200 NULL NULL 47.0 1.7802E7 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -43 -43.0 1969-12-31 16:00:14.536 -200 -1530962879 5707429612912 NULL NULL 200 -400 -200 NULL NULL 43.0 1.7802E7 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 50 50.0 1969-12-31 16:00:15.232 -200 -51350287 191433869936 NULL NULL 200 -400 -200 NULL NULL -50.0 1.7802E7 5.056184320165681E-5 -50 1.59106 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -23 -23.0 1969-12-31 16:00:04.124 -200 -1205825630 4495317948640 NULL NULL 200 -400 -200 NULL NULL 23.0 1.7802E7 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -7 -7.0 1969-12-31 15:59:50.845 -200 1245697310 -4643959571680 NULL NULL 200 -400 -200 NULL NULL 7.0 1.7802E7 -7.078658048231953E-6 7 -11.364714285714285 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 26 26.0 1969-12-31 16:00:05.219 -200 932710812 -3477145907136 NULL NULL 200 -400 -200 NULL NULL -26.0 1.7802E7 2.629215846486154E-5 -26 3.059730769230769 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -53 -53.0 1969-12-31 15:59:58.158 -200 1905162359 -7102445274352 NULL NULL 200 -400 -200 NULL NULL 53.0 1.7802E7 -5.359555379375622E-5 53 -1.501 -NULL -200.0 1969-12-31 15:59:55.451 NULL false 15 15.0 1969-12-31 16:00:11.15 -200 740436530 -2760347383840 NULL NULL 200 -400 -200 NULL NULL -15.0 1.7802E7 1.5168552960497044E-5 -15 5.303533333333333 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -41 -41.0 1969-12-31 15:59:45.304 -200 1972217868 -7352428211904 NULL NULL 200 -400 -200 NULL NULL 41.0 1.7802E7 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -200.0 1969-12-31 15:59:55.451 NULL false -30 -30.0 1969-12-31 16:00:12.935 -200 1429852250 -5330489188000 NULL NULL 200 -400 -200 NULL NULL 30.0 1.7802E7 -3.0337105920994087E-5 30 -2.6517666666666666 --109813638 NULL NULL t32s57Cjt4a250qQgVNAB5T true -51 -51.0 1969-12-31 16:00:08.451 NULL -58941842 219735186976 109813638 1.09812774743E8 NULL NULL NULL 1.0 1.09812801023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --601502867 NULL NULL M152O true -51 -51.0 1969-12-31 16:00:08.451 NULL -425267321 1585396572688 601502867 6.01502003743E8 NULL NULL NULL 1.0 6.01502030023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --881630661 NULL NULL 3e27C1jTdTQPdvCWi4if true -51 -51.0 1969-12-31 16:00:08.451 NULL -309125967 1152421604976 881630661 8.81629797743E8 NULL NULL NULL 1.0 8.81629824023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --515203523 NULL NULL P2DNeo00PA7DJF0 false -51 -51.0 1969-12-31 16:00:08.451 NULL -332345391 1238983617648 515203523 5.15202659743E8 NULL NULL NULL 1.0 5.1520268602299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --916222455 NULL NULL dG8B5PQ3b85U362G6huu false -51 -51.0 1969-12-31 16:00:08.451 NULL -279202430 1040866659040 916222455 9.16221591743E8 NULL NULL NULL 1.0 9.16221618023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --885788893 NULL NULL LX6QHG6sEmBAIbA6e6Am24 false -51 -51.0 1969-12-31 16:00:08.451 NULL -324210434 1208656497952 885788893 8.85788029743E8 NULL NULL NULL 1.0 8.85788056023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1017266554 NULL NULL DU1m68i1Q7W3 false -51 -51.0 1969-12-31 16:00:08.451 NULL -145067516 540811699648 1017266554 1.017265690743E9 NULL NULL NULL 1.0 1.017265717023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --452945059 NULL NULL QbdFB1d7vfaM7 true -51 -51.0 1969-12-31 16:00:08.451 NULL -7309465 27249685520 452945059 4.52944195743E8 NULL NULL NULL 1.0 4.5294422202299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --375807166 NULL NULL K2uHR7U36540Kx6tC false -51 -51.0 1969-12-31 16:00:08.451 NULL -353931480 1319456557440 375807166 3.75806302743E8 NULL NULL NULL 1.0 3.7580632902299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --303254000 NULL NULL DHy1oyJ2887Mr5 true -51 -51.0 1969-12-31 16:00:08.451 NULL -64784934 241518233952 303254000 3.03253136743E8 NULL NULL NULL 1.0 3.0325316302299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --597089099 NULL NULL vsX2f2YM0vC5E21f1 true -51 -51.0 1969-12-31 16:00:08.451 NULL -106412768 396706799104 597089099 5.97088235743E8 NULL NULL NULL 1.0 5.97088262023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --943342622 NULL NULL 3w6XYq04J0Lb3Sv82eOV2HJ true -51 -51.0 1969-12-31 16:00:08.451 NULL -750731096 2798725525888 943342622 9.43341758743E8 NULL NULL NULL 1.0 9.43341785023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --949286785 NULL NULL XWuYuk5qpn5Khs3764E56 true -51 -51.0 1969-12-31 16:00:08.451 NULL -946341072 3527959516416 949286785 9.49285921743E8 NULL NULL NULL 1.0 9.49285948023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --833480226 NULL NULL rNGcxI3PkU2K true -51 -51.0 1969-12-31 16:00:08.451 NULL -498518747 1858477888816 833480226 8.33479362743E8 NULL NULL NULL 1.0 8.33479389023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --970918963 NULL NULL suoqdh false -51 -51.0 1969-12-31 16:00:08.451 NULL -588508542 2193959844576 970918963 9.70918099743E8 NULL NULL NULL 1.0 9.70918126023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --794175309 NULL NULL NIp47 false -51 -51.0 1969-12-31 16:00:08.451 NULL -283652605 1057456911440 794175309 7.94174445743E8 NULL NULL NULL 1.0 7.94174472023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --742561638 NULL NULL 34vL40uLcr11po3k false -51 -51.0 1969-12-31 16:00:08.451 NULL -655193302 2442560629856 742561638 7.42560774743E8 NULL NULL NULL 1.0 7.42560801023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --830610139 NULL NULL 3FD2bt1EIaA0YrK true -51 -51.0 1969-12-31 16:00:08.451 NULL -798375623 2976344322544 830610139 8.30609275743E8 NULL NULL NULL 1.0 8.30609302023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --711795817 NULL NULL 4hMaavAE false -51 -51.0 1969-12-31 16:00:08.451 NULL -578512565 2156694842320 711795817 7.11794953743E8 NULL NULL NULL 1.0 7.11794980023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --809162203 NULL NULL shMOr3b8w1F4F38D4wih0 true -51 -51.0 1969-12-31 16:00:08.451 NULL -47746898 178000435744 809162203 8.09161339743E8 NULL NULL NULL 1.0 8.09161366023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --491184664 NULL NULL u85A6B false -51 -51.0 1969-12-31 16:00:08.451 NULL -58002434 216233073952 491184664 4.91183800743E8 NULL NULL NULL 1.0 4.9118382702299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --554456306 NULL NULL 6JLTA0I2Jx60HU470LO false -51 -51.0 1969-12-31 16:00:08.451 NULL -248574679 926686403312 554456306 5.54455442743E8 NULL NULL NULL 1.0 5.54455469023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --339214974 NULL NULL UtriJV4U5N2J7M false -51 -51.0 1969-12-31 16:00:08.451 NULL -282992256 1054995130368 339214974 3.39214110743E8 NULL NULL NULL 1.0 3.3921413702299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --730289443 NULL NULL 2n2cwjWAp2R56c2GYtKHQf0i false -51 -51.0 1969-12-31 16:00:08.451 NULL -684626873 2552288982544 730289443 7.30288579743E8 NULL NULL NULL 1.0 7.30288606023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --486415983 NULL NULL 4U4HK false -51 -51.0 1969-12-31 16:00:08.451 NULL -92514745 344894969360 486415983 4.86415119743E8 NULL NULL NULL 1.0 4.8641514602299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --859482455 NULL NULL 14fnT7A11Y6fE false -51 -51.0 1969-12-31 16:00:08.451 NULL -851076402 3172812826656 859482455 8.59481591743E8 NULL NULL NULL 1.0 8.59481618023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1015510885 NULL NULL Kw7fOuw4DHeyXe2yg false -51 -51.0 1969-12-31 16:00:08.451 NULL -67812054 252803337312 1015510885 1.015510021743E9 NULL NULL NULL 1.0 1.015510048023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --919940926 NULL NULL i1P3Wlat5EnBugL24oS4I3 true -51 -51.0 1969-12-31 16:00:08.451 NULL -533395388 1988498006464 919940926 9.19940062743E8 NULL NULL NULL 1.0 9.19940089023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1039715238 NULL NULL oOt2v true -51 -51.0 1969-12-31 16:00:08.451 NULL -86361999 321957532272 1039715238 1.039714374743E9 NULL NULL NULL 1.0 1.039714401023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --733761968 NULL NULL c23S6Ky4w7Ld21lAbB true -51 -51.0 1969-12-31 16:00:08.451 NULL -713098110 2658429754080 733761968 7.33761104743E8 NULL NULL NULL 1.0 7.33761131023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --731427364 NULL NULL cb33ksHDf3lMrp0OW4dMdvos false -51 -51.0 1969-12-31 16:00:08.451 NULL -712994897 2658044976016 731427364 7.31426500743E8 NULL NULL NULL 1.0 7.31426527023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --954917203 NULL NULL 1M4eTm8OcOW2dAMV2V5slS1 true -51 -51.0 1969-12-31 16:00:08.451 NULL -710267209 2647876155152 954917203 9.54916339743E8 NULL NULL NULL 1.0 9.54916366023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --848947717 NULL NULL 34o2M3 false -51 -51.0 1969-12-31 16:00:08.451 NULL -150416216 560751653248 848947717 8.48946853743E8 NULL NULL NULL 1.0 8.48946880023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --738306196 NULL NULL NULL false -51 -51.0 1969-12-31 16:00:08.451 NULL -460430946 1716486566688 738306196 7.38305332743E8 NULL NULL NULL 1.0 7.38305359023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --647247257 NULL NULL 2C1S7MUYL5NWPARvQU false -51 -51.0 1969-12-31 16:00:08.451 NULL -450614378 1679890401184 647247257 6.47246393743E8 NULL NULL NULL 1.0 6.47246420023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --833225522 NULL NULL f448c4T81BR true -51 -51.0 1969-12-31 16:00:08.451 NULL -789796482 2944361284896 833225522 8.33224658743E8 NULL NULL NULL 1.0 8.33224685023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --413196097 NULL NULL NULL false -51 -51.0 1969-12-31 16:00:08.451 NULL -306198070 1141506404960 413196097 4.13195233743E8 NULL NULL NULL 1.0 4.1319526002299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --637509859 NULL NULL hCwu446fq4108mQ4x62Pr true -51 -51.0 1969-12-31 16:00:08.451 NULL -135810777 506302576656 637509859 6.37508995743E8 NULL NULL NULL 1.0 6.37509022023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --766298505 NULL NULL tKyw2O2N true -51 -51.0 1969-12-31 16:00:08.451 NULL -268630738 1001455391264 766298505 7.66297641743E8 NULL NULL NULL 1.0 7.66297668023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --887750610 NULL NULL ffT4cTjYf2NJ false -51 -51.0 1969-12-31 16:00:08.451 NULL -273952073 1021293328144 887750610 8.87749746743E8 NULL NULL NULL 1.0 8.87749773023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1003789565 NULL NULL dq1Ji5vGb4GVow42 false -51 -51.0 1969-12-31 16:00:08.451 NULL -505400643 1884133597104 1003789565 1.003788701743E9 NULL NULL NULL 1.0 1.003788728023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --319901788 NULL NULL q2bIHkxaKKv7uD false -51 -51.0 1969-12-31 16:00:08.451 NULL -149775876 558364465728 319901788 3.19900924743E8 NULL NULL NULL 1.0 3.1990095102299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --688179977 NULL NULL b true -51 -51.0 1969-12-31 16:00:08.451 NULL -6432 23978496 688179977 6.88179113743E8 NULL NULL NULL 1.0 6.88179140023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --460130999 NULL NULL 704TqKdO554m38WDk0W2g true -51 -51.0 1969-12-31 16:00:08.451 NULL -133397676 497306536128 460130999 4.60130135743E8 NULL NULL NULL 1.0 4.6013016202299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --435127410 NULL NULL 0CkUHn44bl6xbyYLk false -51 -51.0 1969-12-31 16:00:08.451 NULL -403415728 1503933833984 435127410 4.35126546743E8 NULL NULL NULL 1.0 4.3512657302299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --109479877 NULL NULL 4LQe2Pd4m640E58XFA true -51 -51.0 1969-12-31 16:00:08.451 NULL -17223890 64210661920 109479877 1.09479013743E8 NULL NULL NULL 1.0 1.09479040023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --316619185 NULL NULL 33cr1j true -51 -51.0 1969-12-31 16:00:08.451 NULL -223513974 833260095072 316619185 3.16618321743E8 NULL NULL NULL 1.0 3.1661834802299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --925336063 NULL NULL 060EnWLmWE4K8Pv false -51 -51.0 1969-12-31 16:00:08.451 NULL -477173411 1778902476208 925336063 9.25335199743E8 NULL NULL NULL 1.0 9.25335226023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --395475456 NULL NULL olV01YmQ01kUvC3EE85C0E false -51 -51.0 1969-12-31 16:00:08.451 NULL -12686112 47293825536 395475456 3.95474592743E8 NULL NULL NULL 1.0 3.9547461902299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --980072140 NULL NULL Jt7E0sR3X7V true -51 -51.0 1969-12-31 16:00:08.451 NULL -819889345 3056547478160 980072140 9.80071276743E8 NULL NULL NULL 1.0 9.80071303023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --726087078 NULL NULL qNaAh8CdJxxTG8y0 true -51 -51.0 1969-12-31 16:00:08.451 NULL -622509800 2320716534400 726087078 7.26086214743E8 NULL NULL NULL 1.0 7.26086241023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --239791677 NULL NULL 76Xl5E7ttiejsqcvfJmtNB0 true -51 -51.0 1969-12-31 16:00:08.451 NULL -54067111 201562189808 239791677 2.39790813743E8 NULL NULL NULL 1.0 2.39790840023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --457111770 NULL NULL F10SR3l5836pq7TCfYeGrEl1 true -51 -51.0 1969-12-31 16:00:08.451 NULL -107200626 399643933728 457111770 4.57110906743E8 NULL NULL NULL 1.0 4.5711093302299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1000804087 NULL NULL H8LCu4M2u4f1S true -51 -51.0 1969-12-31 16:00:08.451 NULL -873515594 3256466134432 1000804087 1.000803223743E9 NULL NULL NULL 1.0 1.000803250023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --1060624784 NULL NULL Das7E73 true -51 -51.0 1969-12-31 16:00:08.451 NULL -941434751 3509668751728 1060624784 1.060623920743E9 NULL NULL NULL 1.0 1.060623947023E9 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --602640740 NULL NULL s1K04o1 false -51 -51.0 1969-12-31 16:00:08.451 NULL -22423082 83593249696 602640740 6.02639876743E8 NULL NULL NULL 1.0 6.02639903023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --635141101 NULL NULL ss true -51 -51.0 1969-12-31 16:00:08.451 NULL -89010 331829280 635141101 6.35140237743E8 NULL NULL NULL 1.0 6.35140264023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --622956305 NULL NULL b4iTs false -51 -51.0 1969-12-31 16:00:08.451 NULL -485595911 1810301556208 622956305 6.22955441743E8 NULL NULL NULL 1.0 6.22955468023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --363032626 NULL NULL 0f4422CBSl true -51 -51.0 1969-12-31 16:00:08.451 NULL -73528173 274113028944 363032626 3.63031762743E8 NULL NULL NULL 1.0 3.6303178902299994E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --816457176 NULL NULL Dk6tb8PWF643qyp258O2 true -51 -51.0 1969-12-31 16:00:08.451 NULL -375462240 1399723230720 816457176 8.16456312743E8 NULL NULL NULL 1.0 8.16456339023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --264683279 NULL NULL sU7rit true -51 -51.0 1969-12-31 16:00:08.451 NULL -19844206 73979199968 264683279 2.64682415743E8 NULL NULL NULL 1.0 2.64682442023E8 51.0 NULL -5.157308006568995E-5 51 -1.5598627450980391 --410541035 NULL NULL eDfHPeW364TY4A2Jhm true 8 8.0 1969-12-31 16:00:15.892 NULL -223774943 834232987504 410541035 4.10540171743E8 NULL NULL NULL 1.0 4.1054019802299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --436323820 NULL NULL p3DvmcsqP6xMf false 8 8.0 1969-12-31 16:00:15.892 NULL -333338916 1242687478848 436323820 4.36322956743E8 NULL NULL NULL 1.0 4.3632298302299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --932998902 NULL NULL kAr0ffWGEU7MHSKp true 8 8.0 1969-12-31 16:00:15.892 NULL -230462122 859162790816 932998902 9.32998038743E8 NULL NULL NULL 1.0 9.32998065023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --205395916 NULL NULL 2V6VBAtpi0QQD true 8 8.0 1969-12-31 16:00:15.892 NULL -8537604 31828187712 205395916 2.05395052743E8 NULL NULL NULL 1.0 2.05395079023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --617263915 NULL NULL 8IgBmN0xkLDIlj2y false 8 8.0 1969-12-31 16:00:15.892 NULL -319213460 1190027778880 617263915 6.17263051743E8 NULL NULL NULL 1.0 6.17263078023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1058897881 NULL NULL 6fPk0A false 8 8.0 1969-12-31 16:00:15.892 NULL -800997317 2986117997776 1058897881 1.058897017743E9 NULL NULL NULL 1.0 1.058897044023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --718664327 NULL NULL tm85HNL7au4na false 8 8.0 1969-12-31 16:00:15.892 NULL -142426080 530964426240 718664327 7.18663463743E8 NULL NULL NULL 1.0 7.18663490023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --799860725 NULL NULL b01GFHiSj4Yig1tk4bSex true 8 8.0 1969-12-31 16:00:15.892 NULL -87733477 327070402256 799860725 7.99859861743E8 NULL NULL NULL 1.0 7.99859888023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --752438482 NULL NULL 0rNlSy15Xy1Sx true 8 8.0 1969-12-31 16:00:15.892 NULL -407346886 1518589191008 752438482 7.52437618743E8 NULL NULL NULL 1.0 7.52437645023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --603601682 NULL NULL poE6hx8xV36vG true 8 8.0 1969-12-31 16:00:15.892 NULL -24030296 89584943488 603601682 6.03600818743E8 NULL NULL NULL 1.0 6.03600845023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --743039371 NULL NULL v5Ai3KlB6mT false 8 8.0 1969-12-31 16:00:15.892 NULL -411191076 1532920331328 743039371 7.43038507743E8 NULL NULL NULL 1.0 7.43038534023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --20301111 NULL NULL e13dNAo71UXm4Yt1u false 8 8.0 1969-12-31 16:00:15.892 NULL -19748892 73623869376 20301111 2.0300247743E7 NULL NULL NULL 1.0 2.0300274023000002E7 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --466511459 NULL NULL qny4OOT34x7XVrWp5Eh true 8 8.0 1969-12-31 16:00:15.892 NULL -228360387 851327522736 466511459 4.66510595743E8 NULL NULL NULL 1.0 4.6651062202299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --851067861 NULL NULL lD0h1L8852501n false 8 8.0 1969-12-31 16:00:15.892 NULL -294767825 1098894451600 851067861 8.51066997743E8 NULL NULL NULL 1.0 8.51067024023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --883321517 NULL NULL RJsFsi3a85svGBfT8 true 8 8.0 1969-12-31 16:00:15.892 NULL -738731063 2753989402864 883321517 8.83320653743E8 NULL NULL NULL 1.0 8.83320680023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --528897930 NULL NULL TNaUMA6If0kmHQp2xRhqr false 8 8.0 1969-12-31 16:00:15.892 NULL -438530877 1634843109456 528897930 5.28897066743E8 NULL NULL NULL 1.0 5.2889709302299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --380359762 NULL NULL bfE8u5XQPK7ie4o6wE1Tfv true 8 8.0 1969-12-31 16:00:15.892 NULL -74313673 277041372944 380359762 3.80358898743E8 NULL NULL NULL 1.0 3.8035892502299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --441306270 NULL NULL iEb04t2x333EF5wHoKRs6oKB false 8 8.0 1969-12-31 16:00:15.892 NULL -333509919 1243324978032 441306270 4.41305406743E8 NULL NULL NULL 1.0 4.4130543302299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --712811861 NULL NULL qC2BA3oYp true 8 8.0 1969-12-31 16:00:15.892 NULL -56014923 208823632944 712811861 7.12810997743E8 NULL NULL NULL 1.0 7.12811024023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --433146870 NULL NULL mw3S8 true 8 8.0 1969-12-31 16:00:15.892 NULL -410751871 1531282975088 433146870 4.33146006743E8 NULL NULL NULL 1.0 4.3314603302299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --852864663 NULL NULL bMKsgu5OdWu4vjTa1nt true 8 8.0 1969-12-31 16:00:15.892 NULL -762739286 2843492058208 852864663 8.52863799743E8 NULL NULL NULL 1.0 8.52863826023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --353397036 NULL NULL 3LWXOlGelGXQu64Lxws true 8 8.0 1969-12-31 16:00:15.892 NULL -319840080 1192363818240 353397036 3.53396172743E8 NULL NULL NULL 1.0 3.5339619902299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --596721652 NULL NULL 07Hofhidd5ClnNx8jTl1 true 8 8.0 1969-12-31 16:00:15.892 NULL -70511540 262867021120 596721652 5.96720788743E8 NULL NULL NULL 1.0 5.96720815023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --718063540 NULL NULL 1wb02g3mc true 8 8.0 1969-12-31 16:00:15.892 NULL -429105776 1599706332928 718063540 7.18062676743E8 NULL NULL NULL 1.0 7.18062703023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --616147774 NULL NULL PUjn241mg3Qfjj6nG51 true 8 8.0 1969-12-31 16:00:15.892 NULL -98989966 369034593248 616147774 6.16146910743E8 NULL NULL NULL 1.0 6.16146937023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --792520485 NULL NULL rhOWNGEuth8f875WLX false 8 8.0 1969-12-31 16:00:15.892 NULL -712238882 2655226552096 792520485 7.92519621743E8 NULL NULL NULL 1.0 7.92519648023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --863239524 NULL NULL Nr3652 false 8 8.0 1969-12-31 16:00:15.892 NULL -302672812 1128364243136 863239524 8.63238660743E8 NULL NULL NULL 1.0 8.63238687023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --767080360 NULL NULL 5dENnx6VjU14iaLFV0IR true 8 8.0 1969-12-31 16:00:15.892 NULL -725406408 2704315089024 767080360 7.67079496743E8 NULL NULL NULL 1.0 7.67079523023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --605065222 NULL NULL GciA5Y0kP true 8 8.0 1969-12-31 16:00:15.892 NULL -73703653 274767218384 605065222 6.05064358743E8 NULL NULL NULL 1.0 6.05064385023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1063164541 NULL NULL 1NydRD5y5o3 false 8 8.0 1969-12-31 16:00:15.892 NULL -74907656 279255741568 1063164541 1.063163677743E9 NULL NULL NULL 1.0 1.063163704023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --965597463 NULL NULL b0G65a66732y6yE65hQ0 false 8 8.0 1969-12-31 16:00:15.892 NULL -922745115 3439993788720 965597463 9.65596599743E8 NULL NULL NULL 1.0 9.65596626023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --286232918 NULL NULL DuLQkL6 true 8 8.0 1969-12-31 16:00:15.892 NULL -70839972 264091415616 286232918 2.86232054743E8 NULL NULL NULL 1.0 2.8623208102299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --845450039 NULL NULL HG52N6amN false 8 8.0 1969-12-31 16:00:15.892 NULL -374765565 1397126026320 845450039 8.45449175743E8 NULL NULL NULL 1.0 8.45449202023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --853693520 NULL NULL i6G060 true 8 8.0 1969-12-31 16:00:15.892 NULL -683211043 2547010768304 853693520 8.53692656743E8 NULL NULL NULL 1.0 8.53692683023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --575848794 NULL NULL H37833CDTytf1mp4 false 8 8.0 1969-12-31 16:00:15.892 NULL -510322821 1902483476688 575848794 5.75847930743E8 NULL NULL NULL 1.0 5.75847957023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --654132946 NULL NULL 1emD5WuAWePl22 true 8 8.0 1969-12-31 16:00:15.892 NULL -35916257 133895806096 654132946 6.54132082743E8 NULL NULL NULL 1.0 6.54132109023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --885777373 NULL NULL F3wAY4D4XxYt true 8 8.0 1969-12-31 16:00:15.892 NULL -582564574 2171800731872 885777373 8.85776509743E8 NULL NULL NULL 1.0 8.85776536023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --388258881 NULL NULL EjY6DSn57x1v5h false 8 8.0 1969-12-31 16:00:15.892 NULL -316801619 1181036435632 388258881 3.88258017743E8 NULL NULL NULL 1.0 3.8825804402299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1020120834 NULL NULL 6Ob80MBP350rI275 true 8 8.0 1969-12-31 16:00:15.892 NULL -100465694 374536107232 1020120834 1.020119970743E9 NULL NULL NULL 1.0 1.020119997023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --448325367 NULL NULL v0uSTRyX5A4W false 8 8.0 1969-12-31 16:00:15.892 NULL -208895713 778763218064 448325367 4.48324503743E8 NULL NULL NULL 1.0 4.4832453002299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --831468557 NULL NULL 5ealv0e6tmDnoS0bOmX false 8 8.0 1969-12-31 16:00:15.892 NULL -376760963 1404564870064 831468557 8.31467693743E8 NULL NULL NULL 1.0 8.31467720023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --993291633 NULL NULL 8reJCOg48gHGHDs true 8 8.0 1969-12-31 16:00:15.892 NULL -861531376 3211788969728 993291633 9.93290769743E8 NULL NULL NULL 1.0 9.93290796023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --448180672 NULL NULL BJTr1JVEjCQMQ0 false 8 8.0 1969-12-31 16:00:15.892 NULL -301072095 1122396770160 448180672 4.48179808743E8 NULL NULL NULL 1.0 4.4817983502299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --848015950 NULL NULL 6shc3Y true 8 8.0 1969-12-31 16:00:15.892 NULL -397174440 1480666312320 848015950 8.48015086743E8 NULL NULL NULL 1.0 8.48015113023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --928500968 NULL NULL 34oSgU32X true 8 8.0 1969-12-31 16:00:15.892 NULL -831143834 3098504213152 928500968 9.28500104743E8 NULL NULL NULL 1.0 9.28500131023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1016835101 NULL NULL Md2lY0T7reBu false 8 8.0 1969-12-31 16:00:15.892 NULL -491294009 1831544065552 1016835101 1.016834237743E9 NULL NULL NULL 1.0 1.016834264023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --173590840 NULL NULL C77Mm2Bv5tV32bB3IHK true 8 8.0 1969-12-31 16:00:15.892 NULL -8056960 30036346880 173590840 1.73589976743E8 NULL NULL NULL 1.0 1.73590003023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --221091443 NULL NULL 5EjVb30Y5 false 8 8.0 1969-12-31 16:00:15.892 NULL -121073279 451361184112 221091443 2.21090579743E8 NULL NULL NULL 1.0 2.21090606023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --660093358 NULL NULL jH7VH38C77M08h5GNPp8M false 8 8.0 1969-12-31 16:00:15.892 NULL -28334114 105629576992 660093358 6.60092494743E8 NULL NULL NULL 1.0 6.60092521023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --522373381 NULL NULL 0AkI4K24GeFC1Aa2Sr6 false 8 8.0 1969-12-31 16:00:15.892 NULL -17631238 65729255264 522373381 5.22372517743E8 NULL NULL NULL 1.0 5.2237254402299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1068247011 NULL NULL dPbX4jd1v47r1bB6506si false 8 8.0 1969-12-31 16:00:15.892 NULL -729456614 2719414256992 1068247011 1.068246147743E9 NULL NULL NULL 1.0 1.068246174023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --381027711 NULL NULL VU42OCI8nDXA0M false 8 8.0 1969-12-31 16:00:15.892 NULL -292812099 1091603505072 381027711 3.81026847743E8 NULL NULL NULL 1.0 3.8102687402299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1049984461 NULL NULL qUY8Rl34NWRg false 8 8.0 1969-12-31 16:00:15.892 NULL -247067895 921069112560 1049984461 1.049983597743E9 NULL NULL NULL 1.0 1.049983624023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --485104169 NULL NULL aecE60o4 true 8 8.0 1969-12-31 16:00:15.892 NULL -276230204 1029786200512 485104169 4.85103305743E8 NULL NULL NULL 1.0 4.8510333202299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --727158360 NULL NULL 0uA7It5CJu16eJ4JS1uuxNJ false 8 8.0 1969-12-31 16:00:15.892 NULL -89010 331829280 727158360 7.27157496743E8 NULL NULL NULL 1.0 7.27157523023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --923400421 NULL NULL MJ7Ej4tBYS8l2mK true 8 8.0 1969-12-31 16:00:15.892 NULL -67708318 252416609504 923400421 9.23399557743E8 NULL NULL NULL 1.0 9.23399584023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --980511555 NULL NULL 1TBB2v0eBqlr4c7d true 8 8.0 1969-12-31 16:00:15.892 NULL -890261594 3318895222432 980511555 9.80510691743E8 NULL NULL NULL 1.0 9.80510718023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1039495786 NULL NULL b0BEyNEe1bvQ true 8 8.0 1969-12-31 16:00:15.892 NULL -760564106 2835382987168 1039495786 1.039494922743E9 NULL NULL NULL 1.0 1.039494949023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --335475138 NULL NULL TrVt3076w4QSXF83Io true 8 8.0 1969-12-31 16:00:15.892 NULL -205461721 765961295888 335475138 3.35474274743E8 NULL NULL NULL 1.0 3.3547430102299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --937557606 NULL NULL 2251WSv5eA2l6WqesdKPM2 true 8 8.0 1969-12-31 16:00:15.892 NULL -532708003 1985935435184 937557606 9.37556742743E8 NULL NULL NULL 1.0 9.37556769023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --301678323 NULL NULL C63fh05R7De33TmqtehvIfxv true 8 8.0 1969-12-31 16:00:15.892 NULL -54080756 201613058368 301678323 3.01677459743E8 NULL NULL NULL 1.0 3.0167748602299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --914887396 NULL NULL o2IY6 true 8 8.0 1969-12-31 16:00:15.892 NULL -558119393 2080669097104 914887396 9.14886532743E8 NULL NULL NULL 1.0 9.14886559023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --188165330 NULL NULL 22RO52O0M1M01M0Uk74eGx false 8 8.0 1969-12-31 16:00:15.892 NULL -63118955 235307464240 188165330 1.88164466743E8 NULL NULL NULL 1.0 1.88164493023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --298110501 NULL NULL JKmY3010a4e false 8 8.0 1969-12-31 16:00:15.892 NULL -159906495 596131413360 298110501 2.98109637743E8 NULL NULL NULL 1.0 2.9810966402299994E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --600422927 NULL NULL A30e7a8ia36g25YQc8xTXBgB true 8 8.0 1969-12-31 16:00:15.892 NULL -478703183 1784605466224 600422927 6.00422063743E8 NULL NULL NULL 1.0 6.00422090023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --819152895 NULL NULL NULL true 8 8.0 1969-12-31 16:00:15.892 NULL -67009042 249809708576 819152895 8.19152031743E8 NULL NULL NULL 1.0 8.19152058023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1046913669 NULL NULL 40r4yyU6T0A0Mekf24k false 8 8.0 1969-12-31 16:00:15.892 NULL -90393132 336985596096 1046913669 1.046912805743E9 NULL NULL NULL 1.0 1.046912832023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --596698349 NULL NULL 142kQq4fbeX3mT false 8 8.0 1969-12-31 16:00:15.892 NULL -423275825 1577972275600 596698349 5.96697485743E8 NULL NULL NULL 1.0 5.96697512023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1039292315 NULL NULL 07488p5vb4d2 true 8 8.0 1969-12-31 16:00:15.892 NULL -432155916 1611077254848 1039292315 1.039291451743E9 NULL NULL NULL 1.0 1.039291478023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 -683567667 NULL NULL 4kMasVoB7lX1wc5i64bNk true 8 8.0 1969-12-31 16:00:15.892 NULL 1556140363 -5801291273264 -683567667 -6.83568530257E8 NULL NULL NULL 1.0 -6.83568503977E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1024321144 NULL NULL CE22Wjuk7d20ouN true 8 8.0 1969-12-31 16:00:15.892 NULL -94624654 352760710112 1024321144 1.024320280743E9 NULL NULL NULL 1.0 1.024320307023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1058286942 NULL NULL R6q656btrqQM6a5nQ4GcVg true 8 8.0 1969-12-31 16:00:15.892 NULL -922041114 3437369272992 1058286942 1.058286078743E9 NULL NULL NULL 1.0 1.058286105023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --43263468 NULL NULL 2Amg22mSeD4C6OL64 false 8 8.0 1969-12-31 16:00:15.892 NULL -645672 2407065216 43263468 4.3262604743E7 NULL NULL NULL 1.0 4.3262631023E7 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --711576614 NULL NULL cb5LPuiF true 8 8.0 1969-12-31 16:00:15.892 NULL -534956316 1994317146048 711576614 7.11575750743E8 NULL NULL NULL 1.0 7.11575777023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --1063745167 NULL NULL L47nqo true 8 8.0 1969-12-31 16:00:15.892 NULL -68741114 256266872992 1063745167 1.063744303743E9 NULL NULL NULL 1.0 1.063744330023E9 -8.0 NULL 8.08989491226509E-6 -8 9.944125 --670908417 NULL NULL NULL false 8 8.0 1969-12-31 16:00:15.892 NULL -228957331 853552929968 670908417 6.70907553743E8 NULL NULL NULL 1.0 6.70907580023E8 -8.0 NULL 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -44 -44.0 1969-12-31 16:00:00.247 -7196 1752212736 -6532249079808 NULL NULL 7196 -14392 -7196 NULL NULL 44.0 6.4051596E8 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 15:59:55.105 -7196 -556482589 2074567091792 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 15:59:53.129 -7196 -115057207 428933267696 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 11 11.0 1969-12-31 16:00:08.857 -7196 -1887946332 7038263925696 NULL NULL 7196 -14392 -7196 NULL NULL -11.0 6.4051596E8 1.1123605504364498E-5 -11 7.232090909090909 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 18 18.0 1969-12-31 16:00:05.804 -7196 423975149 -1580579355472 NULL NULL 7196 -14392 -7196 NULL NULL -18.0 6.4051596E8 1.820226355259645E-5 -18 4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 11 11.0 1969-12-31 15:59:54.133 -7196 1182969108 -4410108834624 NULL NULL 7196 -14392 -7196 NULL NULL -11.0 6.4051596E8 1.1123605504364498E-5 -11 7.232090909090909 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 15:59:50.54 -7196 -741906438 2765827200864 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:00.754 -7196 1237005923 -4611558080944 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 10 10.0 1969-12-31 15:59:58.876 -7196 -543560979 2026395329712 NULL NULL 7196 -14392 -7196 NULL NULL -10.0 6.4051596E8 1.0112368640331362E-5 -10 7.955299999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 16:00:07.588 -7196 -2036513617 7592122764176 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 40 40.0 1969-12-31 16:00:08.06 -7196 -916017240 3414912270720 NULL NULL 7196 -14392 -7196 NULL NULL -40.0 6.4051596E8 4.044947456132545E-5 -40 1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 51 51.0 1969-12-31 16:00:10.321 -7196 1836737728 -6847358249984 NULL NULL 7196 -14392 -7196 NULL NULL -51.0 6.4051596E8 5.157308006568995E-5 -51 1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 16:00:06.132 -7196 1442623588 -5378100736064 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 15:59:57.86 -7196 -26309289 98081029392 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -15 -15.0 1969-12-31 15:59:55.626 -7196 1509584426 -5627730740128 NULL NULL 7196 -14392 -7196 NULL NULL 15.0 6.4051596E8 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 35 35.0 1969-12-31 16:00:11.356 -7196 1004273023 -3743929829744 NULL NULL 7196 -14392 -7196 NULL NULL -35.0 6.4051596E8 3.5393290241159765E-5 -35 2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -25 -25.0 1969-12-31 15:59:50.595 -7196 439358934 -1637930105952 NULL NULL 7196 -14392 -7196 NULL NULL 25.0 6.4051596E8 -2.5280921600828406E-5 25 -3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 15:59:52.31 -7196 -662490261 2469763693008 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -8 -8.0 1969-12-31 15:59:43.874 -7196 -1877568778 6999576404384 NULL NULL 7196 -14392 -7196 NULL NULL 8.0 6.4051596E8 -8.08989491226509E-6 8 -9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 31 31.0 1969-12-31 16:00:01.849 -7196 100195163 -373527567664 NULL NULL 7196 -14392 -7196 NULL NULL -31.0 6.4051596E8 3.134834278502722E-5 -31 2.566225806451613 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:11.402 -7196 2125230435 -7922859061680 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -58 -58.0 1969-12-31 15:59:47.859 -7196 -1770443874 6600214762272 NULL NULL 7196 -14392 -7196 NULL NULL 58.0 6.4051596E8 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 38 38.0 1969-12-31 15:59:57.048 -7196 806488245 -3006588177360 NULL NULL 7196 -14392 -7196 NULL NULL -38.0 6.4051596E8 3.842700083325918E-5 -38 2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:15.004 -7196 -653683931 2436933694768 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -53 -53.0 1969-12-31 16:00:11.36 -7196 -1357789899 5061840743472 NULL NULL 7196 -14392 -7196 NULL NULL 53.0 6.4051596E8 -5.359555379375622E-5 53 -1.501 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 28 28.0 1969-12-31 16:00:06.092 -7196 -776650874 2895354458272 NULL NULL 7196 -14392 -7196 NULL NULL -28.0 6.4051596E8 2.8314632192927813E-5 -28 2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -9 -9.0 1969-12-31 16:00:13.473 -7196 1650584069 -6153377409232 NULL NULL 7196 -14392 -7196 NULL NULL 9.0 6.4051596E8 -9.101131776298225E-6 9 -8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 15:59:44.947 -7196 -550152914 2050970063392 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 15:59:58.214 -7196 974109477 -3631480130256 NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -32 -32.0 1969-12-31 16:00:00.527 -7196 -408156678 1521608095584 NULL NULL 7196 -14392 -7196 NULL NULL 32.0 6.4051596E8 -3.235957964906036E-5 32 -2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 15:59:48.12 -7196 1658892440 -6184351016320 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -59 -59.0 1969-12-31 16:00:13.15 -7196 -1604890000 5983029920000 NULL NULL 7196 -14392 -7196 NULL NULL 59.0 6.4051596E8 -5.966297497795504E-5 59 -1.3483559322033898 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 15:59:48.734 -7196 1602156586 -5972839752608 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 16:00:07.333 -7196 -244388115 911078892720 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -30 -30.0 1969-12-31 15:59:44.281 -7196 1385303486 -5164411395808 NULL NULL 7196 -14392 -7196 NULL NULL 30.0 6.4051596E8 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -60 -60.0 1969-12-31 16:00:10.618 -7196 -68838726 256630770528 NULL NULL 7196 -14392 -7196 NULL NULL 60.0 6.4051596E8 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 46 46.0 1969-12-31 16:00:05.226 -7196 275575541 -1027345616848 NULL NULL 7196 -14392 -7196 NULL NULL -46.0 6.4051596E8 4.651689574552426E-5 -46 1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -38 -38.0 1969-12-31 16:00:01.282 -7196 528807212 -1971393286336 NULL NULL 7196 -14392 -7196 NULL NULL 38.0 6.4051596E8 -3.842700083325918E-5 38 -2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -6 -6.0 1969-12-31 15:59:58.329 -7196 -1416094043 5279198592304 NULL NULL 7196 -14392 -7196 NULL NULL 6.0 6.4051596E8 -6.067421184198818E-6 6 -13.258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 17 17.0 1969-12-31 16:00:02.436 -7196 -504009135 1878946055280 NULL NULL 7196 -14392 -7196 NULL NULL -17.0 6.4051596E8 1.7191026688563315E-5 -17 4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 16:00:05.43 -7196 1826915108 -6810739522624 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 15:59:55.9 -7196 1542429000 -5750175312000 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -5 -5.0 1969-12-31 16:00:16.107 -7196 1569040903 -5849384486384 NULL NULL 7196 -14392 -7196 NULL NULL 5.0 6.4051596E8 -5.056184320165681E-6 5 -15.910599999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 18 18.0 1969-12-31 15:59:55.065 -7196 667671386 -2489078927008 NULL NULL 7196 -14392 -7196 NULL NULL -18.0 6.4051596E8 1.820226355259645E-5 -18 4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -20 -20.0 1969-12-31 15:59:53.648 -7196 -304452756 1134999874368 NULL NULL 7196 -14392 -7196 NULL NULL 20.0 6.4051596E8 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -2 -2.0 1969-12-31 16:00:06.498 -7196 1604468020 -5981456778560 NULL NULL 7196 -14392 -7196 NULL NULL 2.0 6.4051596E8 -2.0224737280662724E-6 2 -39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 33 79.553 1969-12-31 16:00:00.761 -7196 514550698 -1918245002144 NULL NULL 7196 -14392 -7196 NULL NULL -79.553 6.4051596E8 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 16:00:08.171 -7196 -1216208847 4534026581616 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -5 -5.0 1969-12-31 15:59:43.948 -7196 -1556798997 5803746660816 NULL NULL 7196 -14392 -7196 NULL NULL 5.0 6.4051596E8 -5.056184320165681E-6 5 -15.910599999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 18 18.0 1969-12-31 15:59:43.854 -7196 307005585 -1144516820880 NULL NULL 7196 -14392 -7196 NULL NULL -18.0 6.4051596E8 1.820226355259645E-5 -18 4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 15:59:46.019 -7196 1086107721 -4049009583888 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 12 12.0 1969-12-31 15:59:49.316 -7196 503273510 -1876203645280 NULL NULL 7196 -14392 -7196 NULL NULL -12.0 6.4051596E8 1.2134842368397635E-5 -12 6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 26 26.0 1969-12-31 16:00:04.233 -7196 -607051573 2263088264144 NULL NULL 7196 -14392 -7196 NULL NULL -26.0 6.4051596E8 2.629215846486154E-5 -26 3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 51 51.0 1969-12-31 16:00:15.668 -7196 2091591361 -7797452593808 NULL NULL 7196 -14392 -7196 NULL NULL -51.0 6.4051596E8 5.157308006568995E-5 -51 1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -60 -60.0 1969-12-31 15:59:52.408 -7196 1516314750 -5652821388000 NULL NULL 7196 -14392 -7196 NULL NULL 60.0 6.4051596E8 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 16:00:03.506 -7196 1893922957 -7060544783696 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -33 -33.0 1969-12-31 16:00:10.959 -7196 1689322288 -6297793489664 NULL NULL 7196 -14392 -7196 NULL NULL 33.0 6.4051596E8 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 15:59:48.035 -7196 1237548317 -4613580125776 NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 48 48.0 1969-12-31 16:00:16.19 -7196 624835112 -2329385297536 NULL NULL 7196 -14392 -7196 NULL NULL -48.0 6.4051596E8 4.853936947359054E-5 -48 1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 37 37.0 1969-12-31 15:59:53.876 -7196 -1880066724 7008888747072 NULL NULL 7196 -14392 -7196 NULL NULL -37.0 6.4051596E8 3.741576396922604E-5 -37 2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:09.441 -7196 632897807 -2359443024496 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -14 -14.0 1969-12-31 16:00:11.065 -7196 -1552199500 5786599736000 NULL NULL 7196 -14392 -7196 NULL NULL 14.0 6.4051596E8 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 56 56.0 1969-12-31 15:59:55.667 -7196 -2145481991 7998356862448 NULL NULL 7196 -14392 -7196 NULL NULL -56.0 6.4051596E8 5.6629264385855625E-5 -56 1.4205892857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 15:59:46.891 -7196 -1653550667 6164436886576 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -19 -19.0 1969-12-31 16:00:03.381 -7196 733482783 -2734423815024 NULL NULL 7196 -14392 -7196 NULL NULL 19.0 6.4051596E8 -1.921350041662959E-5 19 -4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 34 34.0 1969-12-31 15:59:58.264 -7196 -624089536 2326605790208 NULL NULL 7196 -14392 -7196 NULL NULL -34.0 6.4051596E8 3.438205337712663E-5 -34 2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 15:59:52.092 -7196 1693400306 -6312996340768 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -50 -50.0 1969-12-31 15:59:52.424 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 50.0 6.4051596E8 -5.056184320165681E-5 50 -1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -47 -47.0 1969-12-31 16:00:10.274 -7196 1481273634 -5522188107552 NULL NULL 7196 -14392 -7196 NULL NULL 47.0 6.4051596E8 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:03.544 -7196 -1475373169 5500191174032 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 9 9.0 1969-12-31 15:59:48.083 -7196 153657865 -572836520720 NULL NULL 7196 -14392 -7196 NULL NULL -9.0 6.4051596E8 9.101131776298225E-6 -9 8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 15:59:51.992 -7196 -846262106 3154865131168 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -18 -18.0 1969-12-31 15:59:51.453 -7196 1088538866 -4058072892448 NULL NULL 7196 -14392 -7196 NULL NULL 18.0 6.4051596E8 -1.820226355259645E-5 18 -4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 15:59:58.615 -7196 2121169664 -7907720507392 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 59 59.0 1969-12-31 16:00:03.671 -7196 -950636550 3543973058400 NULL NULL 7196 -14392 -7196 NULL NULL -59.0 6.4051596E8 5.966297497795504E-5 -59 1.3483559322033898 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -26 -26.0 1969-12-31 15:59:46.847 -7196 -71373423 266080120944 NULL NULL 7196 -14392 -7196 NULL NULL 26.0 6.4051596E8 -2.629215846486154E-5 26 -3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 27 27.0 1969-12-31 15:59:56.31 -7196 1007177734 -3754758592352 NULL NULL 7196 -14392 -7196 NULL NULL -27.0 6.4051596E8 2.7303395328894677E-5 -27 2.946407407407407 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 33 33.0 1969-12-31 16:00:07.421 -7196 -1679016561 6259373739408 NULL NULL 7196 -14392 -7196 NULL NULL -33.0 6.4051596E8 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -24 -24.0 1969-12-31 16:00:08.839 -7196 733639253 -2735007135184 NULL NULL 7196 -14392 -7196 NULL NULL 24.0 6.4051596E8 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 15:59:45.811 -7196 -595634900 2220526907200 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 42 42.0 1969-12-31 16:00:16.251 -7196 -1981638429 7387548063312 NULL NULL 7196 -14392 -7196 NULL NULL -42.0 6.4051596E8 4.247194828939172E-5 -42 1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 7 7.0 1969-12-31 16:00:13.807 -7196 772100395 -2878390272560 NULL NULL 7196 -14392 -7196 NULL NULL -7.0 6.4051596E8 7.078658048231953E-6 -7 11.364714285714285 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -46 -46.0 1969-12-31 16:00:07.744 -7196 -1737647990 6477951706720 NULL NULL 7196 -14392 -7196 NULL NULL 46.0 6.4051596E8 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 32 32.0 1969-12-31 16:00:15.868 -7196 -1323995873 4935856614544 NULL NULL 7196 -14392 -7196 NULL NULL -32.0 6.4051596E8 3.235957964906036E-5 -32 2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 15:59:49.304 -7196 -1105725122 4122143254816 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 16:00:08.615 -7196 965505355 -3599403963440 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 55 55.0 1969-12-31 15:59:56.568 -7196 468599417 -1746938626576 NULL NULL 7196 -14392 -7196 NULL NULL -55.0 6.4051596E8 5.561802752182249E-5 -55 1.4464181818181818 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -58 -58.0 1969-12-31 15:59:55.857 -7196 -825174557 3076250748496 NULL NULL 7196 -14392 -7196 NULL NULL 58.0 6.4051596E8 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 16:00:12.454 -7196 -2175533 8110387024 NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -57 -57.0 1969-12-31 15:59:44.539 -7196 1839592407 -6858000493296 NULL NULL 7196 -14392 -7196 NULL NULL 57.0 6.4051596E8 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -42 -42.0 1969-12-31 15:59:45.244 -7196 -1235289105 4605157783440 NULL NULL 7196 -14392 -7196 NULL NULL 42.0 6.4051596E8 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -47 -47.0 1969-12-31 16:00:01.673 -7196 1013745772 -3779244238016 NULL NULL 7196 -14392 -7196 NULL NULL 47.0 6.4051596E8 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:00.951 -7196 -1533227484 5715872060352 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:12.163 -7196 1971558716 -7349970893248 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 16:00:03.134 -7196 -1101137915 4105042147120 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 38 38.0 1969-12-31 16:00:00.272 -7196 -293368494 1093677745632 NULL NULL 7196 -14392 -7196 NULL NULL -38.0 6.4051596E8 3.842700083325918E-5 -38 2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 16:00:09.519 -7196 2117650702 -7894601817056 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 9 9.0 1969-12-31 15:59:46 -7196 -2132536965 7950097805520 NULL NULL 7196 -14392 -7196 NULL NULL -9.0 6.4051596E8 9.101131776298225E-6 -9 8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 42 42.0 1969-12-31 15:59:50.19 -7196 -803379017 2994996975376 NULL NULL 7196 -14392 -7196 NULL NULL -42.0 6.4051596E8 4.247194828939172E-5 -42 1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 16:00:02.221 -7196 -1680281858 6264090766624 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 16:00:06.848 -7196 1415466231 -5276858109168 NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -16 -16.0 1969-12-31 16:00:06.481 -7196 1979538716 -7379720333248 NULL NULL 7196 -14392 -7196 NULL NULL 16.0 6.4051596E8 -1.617978982453018E-5 16 -4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -12 -12.0 1969-12-31 15:59:51.038 -7196 -1938621277 7227180120656 NULL NULL 7196 -14392 -7196 NULL NULL 12.0 6.4051596E8 -1.2134842368397635E-5 12 -6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 16:00:12.388 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -8 -8.0 1969-12-31 16:00:09.994 -7196 -1313542468 4896886320704 NULL NULL 7196 -14392 -7196 NULL NULL 8.0 6.4051596E8 -8.08989491226509E-6 8 -9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 59 59.0 1969-12-31 16:00:10.956 -7196 -1137754500 4241548776000 NULL NULL 7196 -14392 -7196 NULL NULL -59.0 6.4051596E8 5.966297497795504E-5 -59 1.3483559322033898 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 34 34.0 1969-12-31 16:00:12.502 -7196 1539208529 -5738169396112 NULL NULL 7196 -14392 -7196 NULL NULL -34.0 6.4051596E8 3.438205337712663E-5 -34 2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 15:59:45.518 -7196 1726448718 -6436200820704 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 53 53.0 1969-12-31 16:00:00.557 -7196 1366995402 -5096158858656 NULL NULL 7196 -14392 -7196 NULL NULL -53.0 6.4051596E8 5.359555379375622E-5 -53 1.501 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -47 -47.0 1969-12-31 16:00:00.555 -7196 -1982329364 7390123868992 NULL NULL 7196 -14392 -7196 NULL NULL 47.0 6.4051596E8 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 5 5.0 1969-12-31 15:59:44.401 -7196 -1716824974 6400323503072 NULL NULL 7196 -14392 -7196 NULL NULL -5.0 6.4051596E8 5.056184320165681E-6 -5 15.910599999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 15:59:51.116 -7196 -1888550510 7040516301280 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 17 17.0 1969-12-31 16:00:01.235 -7196 1128808489 -4208198046992 NULL NULL 7196 -14392 -7196 NULL NULL -17.0 6.4051596E8 1.7191026688563315E-5 -17 4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -48 -48.0 1969-12-31 16:00:03.188 -7196 -1232188884 4593600159552 NULL NULL 7196 -14392 -7196 NULL NULL 48.0 6.4051596E8 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 15:59:44.646 -7196 324834827 -1210984235056 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 15:59:46.195 -7196 157777745 -588195433360 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 16:00:00.664 -7196 918027800 -3422407638400 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -55 -55.0 1969-12-31 15:59:43.932 -7196 1982381637 -7390318742736 NULL NULL 7196 -14392 -7196 NULL NULL 55.0 6.4051596E8 -5.561802752182249E-5 55 -1.4464181818181818 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -40 -40.0 1969-12-31 16:00:10.027 -7196 -1047006196 3903239098688 NULL NULL 7196 -14392 -7196 NULL NULL 40.0 6.4051596E8 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 15:59:50.544 -7196 -705285559 2629304563952 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 16:00:01.062 -7196 -1096608306 4088155764768 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 16:00:06.51 -7196 1141844958 -4256798003424 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 37 37.0 1969-12-31 16:00:00.051 -7196 -522619659 1948326088752 NULL NULL 7196 -14392 -7196 NULL NULL -37.0 6.4051596E8 3.741576396922604E-5 -37 2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 11 11.0 1969-12-31 16:00:09.984 -7196 -1071378269 3994098186832 NULL NULL 7196 -14392 -7196 NULL NULL -11.0 6.4051596E8 1.1123605504364498E-5 -11 7.232090909090909 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 40 40.0 1969-12-31 16:00:01.103 -7196 -1201471894 4479087220832 NULL NULL 7196 -14392 -7196 NULL NULL -40.0 6.4051596E8 4.044947456132545E-5 -40 1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -15 -15.0 1969-12-31 16:00:15.186 -7196 1893214187 -7057902489136 NULL NULL 7196 -14392 -7196 NULL NULL 15.0 6.4051596E8 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -6 -6.0 1969-12-31 15:59:58.625 -7196 1934144944 -7210492351232 NULL NULL 7196 -14392 -7196 NULL NULL 6.0 6.4051596E8 -6.067421184198818E-6 6 -13.258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 38 38.0 1969-12-31 16:00:16.322 -7196 -978843371 3649128087088 NULL NULL 7196 -14392 -7196 NULL NULL -38.0 6.4051596E8 3.842700083325918E-5 -38 2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -32 -32.0 1969-12-31 16:00:02.67 -7196 40974597 -152753297616 NULL NULL 7196 -14392 -7196 NULL NULL 32.0 6.4051596E8 -3.235957964906036E-5 32 -2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 12 12.0 1969-12-31 16:00:00.526 -7196 312497348 -1164990113344 NULL NULL 7196 -14392 -7196 NULL NULL -12.0 6.4051596E8 1.2134842368397635E-5 -12 6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -28 -28.0 1969-12-31 15:59:57.835 -7196 -1946174975 7255340306800 NULL NULL 7196 -14392 -7196 NULL NULL 28.0 6.4051596E8 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 15:59:50.265 -7196 -1668843486 6221448515808 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -57 -57.0 1969-12-31 16:00:12.626 -7196 248308622 -925694542816 NULL NULL 7196 -14392 -7196 NULL NULL 57.0 6.4051596E8 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -60 -60.0 1969-12-31 15:59:45.385 -7196 1775867066 -6620432422048 NULL NULL 7196 -14392 -7196 NULL NULL 60.0 6.4051596E8 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 50 50.0 1969-12-31 15:59:54.196 -7196 -1770006773 6598585249744 NULL NULL 7196 -14392 -7196 NULL NULL -50.0 6.4051596E8 5.056184320165681E-5 -50 1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -7 -7.0 1969-12-31 15:59:58.463 -7196 1855438487 -6917074679536 NULL NULL 7196 -14392 -7196 NULL NULL 7.0 6.4051596E8 -7.078658048231953E-6 7 -11.364714285714285 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -19 -19.0 1969-12-31 15:59:55.885 -7196 1794526031 -6689993043568 NULL NULL 7196 -14392 -7196 NULL NULL 19.0 6.4051596E8 -1.921350041662959E-5 19 -4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 41 41.0 1969-12-31 15:59:44.669 -7196 253244734 -944096368352 NULL NULL 7196 -14392 -7196 NULL NULL -41.0 6.4051596E8 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -20 -20.0 1969-12-31 16:00:11.847 -7196 2093900791 -7806062148848 NULL NULL 7196 -14392 -7196 NULL NULL 20.0 6.4051596E8 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 15:59:50.281 -7196 -468548182 1746747622496 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 7 7.0 1969-12-31 15:59:56.024 -7196 -2036800429 7593191999312 NULL NULL 7196 -14392 -7196 NULL NULL -7.0 6.4051596E8 7.078658048231953E-6 -7 11.364714285714285 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 16:00:14.192 -7196 -2114172148 7881633767744 NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -17 -17.0 1969-12-31 15:59:54.962 -7196 183828953 -685314336784 NULL NULL 7196 -14392 -7196 NULL NULL 17.0 6.4051596E8 -1.7191026688563315E-5 17 -4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 15:59:45.764 -7196 -661707540 2466845709120 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -44 -44.0 1969-12-31 15:59:43.637 -7196 1100294255 -4101896982640 NULL NULL 7196 -14392 -7196 NULL NULL 44.0 6.4051596E8 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -35 -35.0 1969-12-31 16:00:14.819 -7196 1853093959 -6908334279152 NULL NULL 7196 -14392 -7196 NULL NULL 35.0 6.4051596E8 -3.5393290241159765E-5 35 -2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -55 -55.0 1969-12-31 16:00:13.249 -7196 -685064281 2553919639568 NULL NULL 7196 -14392 -7196 NULL NULL 55.0 6.4051596E8 -5.561802752182249E-5 55 -1.4464181818181818 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -30 -30.0 1969-12-31 16:00:00.434 -7196 554514485 -2067230000080 NULL NULL 7196 -14392 -7196 NULL NULL 30.0 6.4051596E8 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 15:59:51.357 -7196 1943312510 -7244669037280 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -9 -9.0 1969-12-31 15:59:58.061 -7196 123461184 -460263293952 NULL NULL 7196 -14392 -7196 NULL NULL 9.0 6.4051596E8 -9.101131776298225E-6 9 -8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -49 -49.0 1969-12-31 15:59:54.686 -7196 -1715657876 6395972561728 NULL NULL 7196 -14392 -7196 NULL NULL 49.0 6.4051596E8 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -25 -25.0 1969-12-31 16:00:03.328 -7196 -423373826 1578337623328 NULL NULL 7196 -14392 -7196 NULL NULL 25.0 6.4051596E8 -2.5280921600828406E-5 25 -3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -40 -40.0 1969-12-31 15:59:58.544 -7196 1510874931 -5632541742768 NULL NULL 7196 -14392 -7196 NULL NULL 40.0 6.4051596E8 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -4 -4.0 1969-12-31 15:59:51.539 -7196 -421581540 1571655981120 NULL NULL 7196 -14392 -7196 NULL NULL 4.0 6.4051596E8 -4.044947456132545E-6 4 -19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 15:59:49.913 -7196 -862213799 3214333042672 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 15:59:52.405 -7196 1483839864 -5531755012992 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -26.28 1969-12-31 16:00:03.695 -7196 -1967465307 7334710664496 NULL NULL 7196 -14392 -7196 NULL NULL 26.28 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 16:00:03.395 -7196 750423835 -2797580056880 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:01.111 -7196 -1370314889 5108533906192 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -20 -20.0 1969-12-31 16:00:02.91 -7196 806729927 -3007489167856 NULL NULL 7196 -14392 -7196 NULL NULL 20.0 6.4051596E8 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -43 -43.0 1969-12-31 15:59:51.433 -7196 -1328837124 4953904798272 NULL NULL 7196 -14392 -7196 NULL NULL 43.0 6.4051596E8 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 9 9.0 1969-12-31 15:59:55.795 -7196 1649886580 -6150777170240 NULL NULL 7196 -14392 -7196 NULL NULL -9.0 6.4051596E8 9.101131776298225E-6 -9 8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -8 -8.0 1969-12-31 16:00:03.136 -7196 -1849991500 6896768312000 NULL NULL 7196 -14392 -7196 NULL NULL 8.0 6.4051596E8 -8.08989491226509E-6 8 -9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -17 -17.0 1969-12-31 15:59:51.104 -7196 -506132968 1886863704704 NULL NULL 7196 -14392 -7196 NULL NULL 17.0 6.4051596E8 -1.7191026688563315E-5 17 -4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -19 -19.0 1969-12-31 15:59:49.909 -7196 1384643377 -5161950509456 NULL NULL 7196 -14392 -7196 NULL NULL 19.0 6.4051596E8 -1.921350041662959E-5 19 -4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -24 -24.0 1969-12-31 16:00:10.682 -7196 -774383855 2886903011440 NULL NULL 7196 -14392 -7196 NULL NULL 24.0 6.4051596E8 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 15:59:51.442 -7196 11734243 -43745257904 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -54 -54.0 1969-12-31 16:00:06.484 -7196 1605976008 -5987078557824 NULL NULL 7196 -14392 -7196 NULL NULL 54.0 6.4051596E8 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -4 -4.0 1969-12-31 15:59:52.956 -7196 1577367122 -5880424630816 NULL NULL 7196 -14392 -7196 NULL NULL 4.0 6.4051596E8 -4.044947456132545E-6 4 -19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 51 51.0 1969-12-31 15:59:43.782 -7196 -1607347015 5992189671920 NULL NULL 7196 -14392 -7196 NULL NULL -51.0 6.4051596E8 5.157308006568995E-5 -51 1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -49 -49.0 1969-12-31 15:59:51.009 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 49.0 6.4051596E8 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 16:00:06.688 -7196 1904598029 -7100341452112 NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 16:00:11.856 -7196 -366443186 1366100197408 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 27 27.0 1969-12-31 16:00:13.951 -7196 -806775664 3007659675392 NULL NULL 7196 -14392 -7196 NULL NULL -27.0 6.4051596E8 2.7303395328894677E-5 -27 2.946407407407407 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 15:59:58.479 -7196 -1379694191 5143499944048 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 30 30.0 1969-12-31 15:59:48.038 -7196 1053149934 -3926142953952 NULL NULL 7196 -14392 -7196 NULL NULL -30.0 6.4051596E8 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:00.148 -7196 1839707228 -6858428545984 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -53 -53.0 1969-12-31 15:59:48.882 -7196 -1560660031 5818140595568 NULL NULL 7196 -14392 -7196 NULL NULL 53.0 6.4051596E8 -5.359555379375622E-5 53 -1.501 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 37 37.0 1969-12-31 16:00:12.728 -7196 -415980890 1550776757920 NULL NULL 7196 -14392 -7196 NULL NULL -37.0 6.4051596E8 3.741576396922604E-5 -37 2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:04.827 -7196 1667038451 -6214719345328 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 16:00:02.32 -7196 -1354302203 5048838612784 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 15:59:51.901 -7196 763896882 -2847807576096 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 15:59:53.458 -7196 867823537 -3235246145936 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 35 35.0 1969-12-31 16:00:07.763 -7196 -854036780 3183849115840 NULL NULL 7196 -14392 -7196 NULL NULL -35.0 6.4051596E8 3.5393290241159765E-5 -35 2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 48 48.0 1969-12-31 16:00:05.616 -7196 -449170614 1674508048992 NULL NULL 7196 -14392 -7196 NULL NULL -48.0 6.4051596E8 4.853936947359054E-5 -48 1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 32 32.0 1969-12-31 15:59:45.572 -7196 -1337167441 4984960220048 NULL NULL 7196 -14392 -7196 NULL NULL -32.0 6.4051596E8 3.235957964906036E-5 -32 2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 15:59:43.749 -7196 396428880 -1477886864640 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -35 -35.0 1969-12-31 16:00:12.966 -7196 -211004760 786625745280 NULL NULL 7196 -14392 -7196 NULL NULL 35.0 6.4051596E8 -3.5393290241159765E-5 35 -2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -7 -7.0 1969-12-31 15:59:47.031 -7196 752265217 -2804444728976 NULL NULL 7196 -14392 -7196 NULL NULL 7.0 6.4051596E8 -7.078658048231953E-6 7 -11.364714285714285 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 42 42.0 1969-12-31 16:00:11.591 -7196 873176558 -3255202208224 NULL NULL 7196 -14392 -7196 NULL NULL -42.0 6.4051596E8 4.247194828939172E-5 -42 1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -14 -14.0 1969-12-31 16:00:07.6 -7196 818794014 -3052464084192 NULL NULL 7196 -14392 -7196 NULL NULL 14.0 6.4051596E8 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -24 -24.0 1969-12-31 16:00:07.857 -7196 -1199756482 4472692164896 NULL NULL 7196 -14392 -7196 NULL NULL 24.0 6.4051596E8 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -49 -49.0 1969-12-31 16:00:14.208 -7196 -65650667 244745686576 NULL NULL 7196 -14392 -7196 NULL NULL 49.0 6.4051596E8 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:08.011 -7196 702204680 -2617819047040 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:01.811 -7196 1371995065 -5114797602320 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 15:59:58.578 -7196 -1887367961 7036107758608 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 15:59:44.512 -7196 -398822457 1486810119696 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -31 -31.0 1969-12-31 16:00:13.868 -7196 1337237884 -4985222831552 NULL NULL 7196 -14392 -7196 NULL NULL 31.0 6.4051596E8 -3.134834278502722E-5 31 -2.566225806451613 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 16:00:03.256 -7196 -2123641234 7916934520352 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 16:00:16.19 -7196 1811651302 -6753836053856 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 16:00:09.961 -7196 -1759441703 6559198668784 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:06.243 -7196 -88860257 331271038096 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -4 -4.0 1969-12-31 15:59:57.932 -7196 345912243 -1289560841904 NULL NULL 7196 -14392 -7196 NULL NULL 4.0 6.4051596E8 -4.044947456132545E-6 4 -19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 53 53.0 1969-12-31 15:59:50.996 -7196 1897312309 -7073180287952 NULL NULL 7196 -14392 -7196 NULL NULL -53.0 6.4051596E8 5.359555379375622E-5 -53 1.501 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -2 -2.0 1969-12-31 16:00:07.711 -7196 128320480 -478378749440 NULL NULL 7196 -14392 -7196 NULL NULL 2.0 6.4051596E8 -2.0224737280662724E-6 2 -39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 15:59:52.699 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 16:00:11.132 -7196 1652808422 -6161669797216 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 16:00:09.911 -7196 1869210375 -6968416278000 NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:12.977 -7196 -1687110423 6289547656944 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 16:00:16.065 -7196 -473766733 1766202380624 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 16:00:04.518 -7196 -1658319459 6182214943152 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 15:59:45.978 -7196 -2128720310 7935869315680 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -48 -48.0 1969-12-31 15:59:52.507 -7196 -822146744 3064963061632 NULL NULL 7196 -14392 -7196 NULL NULL 48.0 6.4051596E8 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 26 26.0 1969-12-31 15:59:51.43 -7196 1902876353 -7093923043984 NULL NULL 7196 -14392 -7196 NULL NULL -26.0 6.4051596E8 2.629215846486154E-5 -26 3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -35 -35.0 1969-12-31 15:59:46.585 -7196 -990632641 3693078485648 NULL NULL 7196 -14392 -7196 NULL NULL 35.0 6.4051596E8 -3.5393290241159765E-5 35 -2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -55 -55.0 1969-12-31 16:00:01.138 -7196 888532643 -3312449693104 NULL NULL 7196 -14392 -7196 NULL NULL 55.0 6.4051596E8 -5.561802752182249E-5 55 -1.4464181818181818 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -6 -6.0 1969-12-31 16:00:06.4 -7196 687081709 -2561440611152 NULL NULL 7196 -14392 -7196 NULL NULL 6.0 6.4051596E8 -6.067421184198818E-6 6 -13.258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:12.006 -7196 1143654535 -4263544106480 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -34 -34.0 1969-12-31 16:00:06.405 -7196 347395524 -1295090513472 NULL NULL 7196 -14392 -7196 NULL NULL 34.0 6.4051596E8 -3.438205337712663E-5 34 -2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 16:00:05.162 -7196 -2140316424 7979099628672 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -44 -44.0 1969-12-31 16:00:00.289 -7196 524734261 -1956209325008 NULL NULL 7196 -14392 -7196 NULL NULL 44.0 6.4051596E8 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -64 -64.0 1969-12-31 16:00:11.912 -7196 -1615920595 6024151978160 NULL NULL 7196 -14392 -7196 NULL NULL 64.0 6.4051596E8 -6.471915929812072E-5 64 -1.243015625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 16:00:00.546 -7196 -2133897574 7955170155872 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -9 -9.0 1969-12-31 15:59:57.687 -7196 -1097778251 4092517319728 NULL NULL 7196 -14392 -7196 NULL NULL 9.0 6.4051596E8 -9.101131776298225E-6 9 -8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -35 -35.0 1969-12-31 15:59:48.408 -7196 1199675481 -4472390193168 NULL NULL 7196 -14392 -7196 NULL NULL 35.0 6.4051596E8 -3.5393290241159765E-5 35 -2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 31 31.0 1969-12-31 16:00:13.816 -7196 -1821633641 6791050213648 NULL NULL 7196 -14392 -7196 NULL NULL -31.0 6.4051596E8 3.134834278502722E-5 -31 2.566225806451613 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 16:00:15.215 -7196 1077634070 -4017419812960 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -14 -14.0 1969-12-31 16:00:14.79 -7196 1100839659 -4103930248752 NULL NULL 7196 -14392 -7196 NULL NULL 14.0 6.4051596E8 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 16:00:02.38 -7196 1733885960 -6463926858880 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 35 35.0 1969-12-31 15:59:48.022 -7196 523231898 -1950608515744 NULL NULL 7196 -14392 -7196 NULL NULL -35.0 6.4051596E8 3.5393290241159765E-5 -35 2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -20 -20.0 1969-12-31 15:59:44.907 -7196 1073150417 -4000704754576 NULL NULL 7196 -14392 -7196 NULL NULL 20.0 6.4051596E8 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 0 0.0 1969-12-31 16:00:11.089 -7196 1907356119 -7110623611632 NULL NULL 7196 -14392 -7196 NULL NULL -0.0 6.4051596E8 0.0 0 NULL -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -10 -10.0 1969-12-31 16:00:13.743 -7196 -1750160608 6524598746624 NULL NULL 7196 -14392 -7196 NULL NULL 10.0 6.4051596E8 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 15:59:55.317 -7196 926194185 -3452851921680 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 16:00:15.683 -7196 963008487 -3590095639536 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 16:00:02.777 -7196 1335415993 -4978430821904 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 15:59:50.966 -7196 601858368 -2243727995904 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 13 13.0 1969-12-31 16:00:05.368 -7196 1626425715 -6063315065520 NULL NULL 7196 -14392 -7196 NULL NULL -13.0 6.4051596E8 1.314607923243077E-5 -13 6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 4 4.0 1969-12-31 15:59:54.905 -7196 -1173921590 4376379687520 NULL NULL 7196 -14392 -7196 NULL NULL -4.0 6.4051596E8 4.044947456132545E-6 -4 19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 18 18.0 1969-12-31 15:59:49.306 -7196 -906847764 3380728464192 NULL NULL 7196 -14392 -7196 NULL NULL -18.0 6.4051596E8 1.820226355259645E-5 -18 4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -16 -16.0 1969-12-31 16:00:02.267 -7196 -405314121 1511011043088 NULL NULL 7196 -14392 -7196 NULL NULL 16.0 6.4051596E8 -1.617978982453018E-5 16 -4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 16:00:12.921 -7196 635433167 -2368894846576 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 15:59:48.395 -7196 -519770970 1937706176160 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -19 -19.0 1969-12-31 16:00:10.814 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 19.0 6.4051596E8 -1.921350041662959E-5 19 -4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 51 51.0 1969-12-31 15:59:58.171 -7196 1289268469 -4806392852432 NULL NULL 7196 -14392 -7196 NULL NULL -51.0 6.4051596E8 5.157308006568995E-5 -51 1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 15:59:53.746 -7196 -111469961 415560014608 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -28 -28.0 1969-12-31 15:59:44.895 -7196 -95814999 357198316272 NULL NULL 7196 -14392 -7196 NULL NULL 28.0 6.4051596E8 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -30 -30.0 1969-12-31 15:59:50.313 -7196 343613951 -1280992809328 NULL NULL 7196 -14392 -7196 NULL NULL 30.0 6.4051596E8 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 43 43.0 1969-12-31 16:00:13.812 -7196 -1860496519 6935931022832 NULL NULL 7196 -14392 -7196 NULL NULL -43.0 6.4051596E8 4.3483185153424856E-5 -43 1.8500697674418605 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 50 50.0 1969-12-31 16:00:08.38 -7196 1192295669 -4444878254032 NULL NULL 7196 -14392 -7196 NULL NULL -50.0 6.4051596E8 5.056184320165681E-5 -50 1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 4 4.0 1969-12-31 15:59:45.595 -7196 -514465592 1917927726976 NULL NULL 7196 -14392 -7196 NULL NULL -4.0 6.4051596E8 4.044947456132545E-6 -4 19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 39 39.0 1969-12-31 16:00:06.206 -7196 -1835825430 6843957203040 NULL NULL 7196 -14392 -7196 NULL NULL -39.0 6.4051596E8 3.9438237697292314E-5 -39 2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:15.76 -7196 2018251685 -7524042281680 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 28 28.0 1969-12-31 16:00:11.858 -7196 -1831759028 6828797656384 NULL NULL 7196 -14392 -7196 NULL NULL -28.0 6.4051596E8 2.8314632192927813E-5 -28 2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 15:59:52.946 -7196 -1900879493 7086478749904 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 16:00:13.735 -7196 650909244 -2426589661632 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -50 -50.0 1969-12-31 16:00:14.134 -7196 1740563590 -6488821063520 NULL NULL 7196 -14392 -7196 NULL NULL 50.0 6.4051596E8 -5.056184320165681E-5 50 -1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 16:00:14.364 -7196 -1303640256 4859970874368 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 15:59:45.451 -7196 -231552821 863228916688 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -26 -26.0 1969-12-31 16:00:14.661 -7196 1196069494 -4458947073632 NULL NULL 7196 -14392 -7196 NULL NULL 26.0 6.4051596E8 -2.629215846486154E-5 26 -3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 15:59:55.521 -7196 -1058636150 3946595567200 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 41 41.0 1969-12-31 15:59:44.57 -7196 649072626 -2419742749728 NULL NULL 7196 -14392 -7196 NULL NULL -41.0 6.4051596E8 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -10 -10.0 1969-12-31 16:00:13.684 -7196 -2010228069 7494130241232 NULL NULL 7196 -14392 -7196 NULL NULL 10.0 6.4051596E8 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 48 48.0 1969-12-31 15:59:57.499 -7196 -1745648407 6507777261296 NULL NULL 7196 -14392 -7196 NULL NULL -48.0 6.4051596E8 4.853936947359054E-5 -48 1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 16:00:13.197 -7196 647410848 -2413547641344 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 46 46.0 1969-12-31 16:00:07.743 -7196 -203349963 758088662064 NULL NULL 7196 -14392 -7196 NULL NULL -46.0 6.4051596E8 4.651689574552426E-5 -46 1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -27 -27.0 1969-12-31 15:59:57.664 -7196 1481888026 -5524478560928 NULL NULL 7196 -14392 -7196 NULL NULL 27.0 6.4051596E8 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 26 26.0 1969-12-31 16:00:01.871 -7196 -625819139 2333053750192 NULL NULL 7196 -14392 -7196 NULL NULL -26.0 6.4051596E8 2.629215846486154E-5 -26 3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 42 42.0 1969-12-31 15:59:57.011 -7196 -549987366 2050352900448 NULL NULL 7196 -14392 -7196 NULL NULL -42.0 6.4051596E8 4.247194828939172E-5 -42 1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:11.749 -7196 1957235821 -7296575140688 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 15:59:45.932 -7196 1611717184 -6008481661952 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 15:59:53.686 -7196 -1161932838 4331685620064 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 15:59:49.021 -7196 -580663229 2164712517712 NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 20 20.0 1969-12-31 16:00:01.267 -7196 -1587089429 5916669391312 NULL NULL 7196 -14392 -7196 NULL NULL -20.0 6.4051596E8 2.0224737280662725E-5 -20 3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 16:00:01.694 -7196 58767695 -219085966960 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 16:00:11.738 -7196 -680140600 2535564156800 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -1 -1.0 1969-12-31 16:00:06.358 -7196 -1029993753 3839816711184 NULL NULL 7196 -14392 -7196 NULL NULL 1.0 6.4051596E8 -1.0112368640331362E-6 1 -79.553 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 41 41.0 1969-12-31 16:00:08.418 -7196 791540035 -2950861250480 NULL NULL 7196 -14392 -7196 NULL NULL -41.0 6.4051596E8 4.1460711425358585E-5 -41 1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -15 -15.0 1969-12-31 15:59:46.242 -7196 1081882955 -4033259656240 NULL NULL 7196 -14392 -7196 NULL NULL 15.0 6.4051596E8 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 16:00:00.156 -7196 2104038988 -7843857347264 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 15:59:49.331 -7196 1320376751 -4922364527728 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -28 -28.0 1969-12-31 16:00:04.747 -7196 2008437496 -7487454985088 NULL NULL 7196 -14392 -7196 NULL NULL 28.0 6.4051596E8 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -37 -37.0 1969-12-31 16:00:00.539 -7196 1213297685 -4523173769680 NULL NULL 7196 -14392 -7196 NULL NULL 37.0 6.4051596E8 -3.741576396922604E-5 37 -2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 16:00:12.762 -7196 1034824629 -3857826216912 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:15.113 -7196 -2022745657 7540795809296 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -44 -44.0 1969-12-31 16:00:03.002 -7196 1216900640 -4536605585920 NULL NULL 7196 -14392 -7196 NULL NULL 44.0 6.4051596E8 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 15:59:44.823 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -17 -17.0 1969-12-31 16:00:10.939 -7196 1735209038 -6468859293664 NULL NULL 7196 -14392 -7196 NULL NULL 17.0 6.4051596E8 -1.7191026688563315E-5 17 -4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -36 -36.0 1969-12-31 16:00:06.661 -7196 394687129 -1471393616912 NULL NULL 7196 -14392 -7196 NULL NULL 36.0 6.4051596E8 -3.64045271051929E-5 36 -2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 56 56.0 1969-12-31 16:00:00.909 -7196 1421751268 -5300288727104 NULL NULL 7196 -14392 -7196 NULL NULL -56.0 6.4051596E8 5.6629264385855625E-5 -56 1.4205892857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 4 4.0 1969-12-31 16:00:12.309 -7196 -1498229137 5585398222736 NULL NULL 7196 -14392 -7196 NULL NULL -4.0 6.4051596E8 4.044947456132545E-6 -4 19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 52 52.0 1969-12-31 15:59:49.565 -7196 1198121662 -4466597555936 NULL NULL 7196 -14392 -7196 NULL NULL -52.0 6.4051596E8 5.258431692972308E-5 -52 1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 33 33.0 1969-12-31 16:00:14.872 -7196 -995947123 3712890874544 NULL NULL 7196 -14392 -7196 NULL NULL -33.0 6.4051596E8 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 16:00:01.489 -7196 220682110 -822702906080 NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -1 -1.0 1969-12-31 15:59:55.53 -7196 745151099 -2777923297072 NULL NULL 7196 -14392 -7196 NULL NULL 1.0 6.4051596E8 -1.0112368640331362E-6 1 -79.553 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -14 -14.0 1969-12-31 16:00:04.574 -7196 87724305 -327036209040 NULL NULL 7196 -14392 -7196 NULL NULL 14.0 6.4051596E8 -1.4157316096463906E-5 14 -5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 16:00:00.865 -7196 1613629130 -6015609396640 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 14 14.0 1969-12-31 16:00:00.394 -7196 -1660510440 6190382920320 NULL NULL 7196 -14392 -7196 NULL NULL -14.0 6.4051596E8 1.4157316096463906E-5 -14 5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -5 -5.0 1969-12-31 16:00:10.326 -7196 -474752759 1769878285552 NULL NULL 7196 -14392 -7196 NULL NULL 5.0 6.4051596E8 -5.056184320165681E-6 5 -15.910599999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -50 -50.0 1969-12-31 16:00:00.568 -7196 -1572562680 5862513671040 NULL NULL 7196 -14392 -7196 NULL NULL 50.0 6.4051596E8 -5.056184320165681E-5 50 -1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -54 -54.0 1969-12-31 15:59:53.657 -7196 1476582815 -5504700734320 NULL NULL 7196 -14392 -7196 NULL NULL 54.0 6.4051596E8 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 26 26.0 1969-12-31 16:00:08.286 -7196 -961730755 3585332254640 NULL NULL 7196 -14392 -7196 NULL NULL -26.0 6.4051596E8 2.629215846486154E-5 -26 3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 15:59:49.051 -7196 1104752029 -4118515564112 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -15 -15.0 1969-12-31 16:00:11.257 -7196 -364742164 1359758787392 NULL NULL 7196 -14392 -7196 NULL NULL 15.0 6.4051596E8 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 0 0.0 1969-12-31 15:59:44.159 -7196 -1418871864 5289554308992 NULL NULL 7196 -14392 -7196 NULL NULL -0.0 6.4051596E8 0.0 0 NULL -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:00.885 -7196 1970376680 -7345564263040 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 16:00:01.22 -7196 1670449519 -6227435806832 NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -42 -42.0 1969-12-31 16:00:05.729 -7196 -998749777 3723339168656 NULL NULL 7196 -14392 -7196 NULL NULL 42.0 6.4051596E8 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 26 26.0 1969-12-31 15:59:54.132 -7196 1677632608 -6254214362624 NULL NULL 7196 -14392 -7196 NULL NULL -26.0 6.4051596E8 2.629215846486154E-5 -26 3.059730769230769 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 40 40.0 1969-12-31 15:59:49.23 -7196 437984126 -1632804821728 NULL NULL 7196 -14392 -7196 NULL NULL -40.0 6.4051596E8 4.044947456132545E-5 -40 1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -54 -54.0 1969-12-31 16:00:11.198 -7196 1650677402 -6153725354656 NULL NULL 7196 -14392 -7196 NULL NULL 54.0 6.4051596E8 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -42 -42.0 1969-12-31 15:59:56.928 -7196 -1675950271 6247942610288 NULL NULL 7196 -14392 -7196 NULL NULL 42.0 6.4051596E8 -4.247194828939172E-5 42 -1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -56 -56.0 1969-12-31 16:00:02.298 -7196 -1509994296 5629258735488 NULL NULL 7196 -14392 -7196 NULL NULL 56.0 6.4051596E8 -5.6629264385855625E-5 56 -1.4205892857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 16:00:14.829 -7196 -192083402 716086922656 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 16:00:15.923 -7196 432086668 -1610819098304 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 52 52.0 1969-12-31 15:59:47.129 -7196 -224047492 835249050176 NULL NULL 7196 -14392 -7196 NULL NULL -52.0 6.4051596E8 5.258431692972308E-5 -52 1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 14 14.0 1969-12-31 15:59:55.492 -7196 1702036126 -6345190677728 NULL NULL 7196 -14392 -7196 NULL NULL -14.0 6.4051596E8 1.4157316096463906E-5 -14 5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:02.722 -7196 1960496738 -7308731839264 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -58 -58.0 1969-12-31 16:00:12.065 -7196 1257970504 -4689714038912 NULL NULL 7196 -14392 -7196 NULL NULL 58.0 6.4051596E8 -5.86517381139219E-5 58 -1.3716034482758621 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -64 -64.0 1969-12-31 16:00:01.785 -7196 -1639157869 6110780535632 NULL NULL 7196 -14392 -7196 NULL NULL 64.0 6.4051596E8 -6.471915929812072E-5 64 -1.243015625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 15:59:54.63 -7196 -1818074941 6777783380048 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -63 -63.0 1969-12-31 16:00:03.552 -7196 -1224023895 4563161080560 NULL NULL 7196 -14392 -7196 NULL NULL 63.0 6.4051596E8 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 46 46.0 1969-12-31 16:00:01.388 -7196 242119227 -902620478256 NULL NULL 7196 -14392 -7196 NULL NULL -46.0 6.4051596E8 4.651689574552426E-5 -46 1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -19 -19.0 1969-12-31 16:00:06.188 -7196 -1169681501 4360572635728 NULL NULL 7196 -14392 -7196 NULL NULL 19.0 6.4051596E8 -1.921350041662959E-5 19 -4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 16:00:11.342 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 46 46.0 1969-12-31 15:59:47.842 -7196 -1064883361 3969885169808 NULL NULL 7196 -14392 -7196 NULL NULL -46.0 6.4051596E8 4.651689574552426E-5 -46 1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -43 -43.0 1969-12-31 16:00:08.967 -7196 -798982337 2978606152336 NULL NULL 7196 -14392 -7196 NULL NULL 43.0 6.4051596E8 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -43 -43.0 1969-12-31 15:59:45.529 -7196 956226605 -3564812783440 NULL NULL 7196 -14392 -7196 NULL NULL 43.0 6.4051596E8 -4.3483185153424856E-5 43 -1.8500697674418605 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:00.73 -7196 -1419583827 5292208507056 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 4 4.0 1969-12-31 16:00:07.163 -7196 447294757 -1667514854096 NULL NULL 7196 -14392 -7196 NULL NULL -4.0 6.4051596E8 4.044947456132545E-6 -4 19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 15:59:53.213 -7196 887537434 -3308739553952 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 37 37.0 1969-12-31 16:00:16.313 -7196 -354500331 1321577233968 NULL NULL 7196 -14392 -7196 NULL NULL -37.0 6.4051596E8 3.741576396922604E-5 -37 2.150081081081081 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -24 -24.0 1969-12-31 16:00:07.696 -7196 -722892928 2694944835584 NULL NULL 7196 -14392 -7196 NULL NULL 24.0 6.4051596E8 -2.426968473679527E-5 24 -3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 16:00:03.963 -7196 95444104 -355815619712 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -57 -57.0 1969-12-31 16:00:05.5 -7196 2042351711 -7613887178608 NULL NULL 7196 -14392 -7196 NULL NULL 57.0 6.4051596E8 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 23 23.0 1969-12-31 16:00:12.759 -7196 -1246639968 4647473800704 NULL NULL 7196 -14392 -7196 NULL NULL -23.0 6.4051596E8 2.325844787276213E-5 -23 3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 38 38.0 1969-12-31 15:59:57.159 -7196 -158261029 589997116112 NULL NULL 7196 -14392 -7196 NULL NULL -38.0 6.4051596E8 3.842700083325918E-5 -38 2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 16 16.0 1969-12-31 15:59:50.404 -7196 -2016344182 7516931110496 NULL NULL 7196 -14392 -7196 NULL NULL -16.0 6.4051596E8 1.617978982453018E-5 -16 4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -52 -52.0 1969-12-31 15:59:47.15 -7196 628698169 -2343786774032 NULL NULL 7196 -14392 -7196 NULL NULL 52.0 6.4051596E8 -5.258431692972308E-5 52 -1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 23 23.0 1969-12-31 16:00:11.785 -7196 -1508117731 5622262901168 NULL NULL 7196 -14392 -7196 NULL NULL -23.0 6.4051596E8 2.325844787276213E-5 -23 3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -60 -60.0 1969-12-31 15:59:55.806 -7196 -1802243330 6718763134240 NULL NULL 7196 -14392 -7196 NULL NULL 60.0 6.4051596E8 -6.0674211841988174E-5 60 -1.3258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 15:59:58.93 -7196 772541706 -2880035479968 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -54 -54.0 1969-12-31 16:00:05.688 -7196 1614836149 -6020109163472 NULL NULL 7196 -14392 -7196 NULL NULL 54.0 6.4051596E8 -5.4606790657789354E-5 54 -1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 34 34.0 1969-12-31 15:59:46.881 -7196 -369187268 1376330135104 NULL NULL 7196 -14392 -7196 NULL NULL -34.0 6.4051596E8 3.438205337712663E-5 -34 2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -64 -64.0 1969-12-31 15:59:56.048 -7196 406535485 -1515564288080 NULL NULL 7196 -14392 -7196 NULL NULL 64.0 6.4051596E8 -6.471915929812072E-5 64 -1.243015625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 54 54.0 1969-12-31 16:00:08.241 -7196 381343252 -1421647643456 NULL NULL 7196 -14392 -7196 NULL NULL -54.0 6.4051596E8 5.4606790657789354E-5 -54 1.4732037037037036 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 45 45.0 1969-12-31 16:00:00.543 -7196 940192068 -3505036029504 NULL NULL 7196 -14392 -7196 NULL NULL -45.0 6.4051596E8 4.550565888149113E-5 -45 1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 15:59:49.512 -7196 -123182483 459224296624 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -12 -12.0 1969-12-31 16:00:09.524 -7196 -1476796699 5505498093872 NULL NULL 7196 -14392 -7196 NULL NULL 12.0 6.4051596E8 -1.2134842368397635E-5 12 -6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -28 -28.0 1969-12-31 16:00:00.003 -7196 -83883851 312718996528 NULL NULL 7196 -14392 -7196 NULL NULL 28.0 6.4051596E8 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -46 -46.0 1969-12-31 15:59:54.257 -7196 -1020872577 3805812967056 NULL NULL 7196 -14392 -7196 NULL NULL 46.0 6.4051596E8 -4.651689574552426E-5 46 -1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -63 -63.0 1969-12-31 16:00:11.946 -7196 -994504916 3707514326848 NULL NULL 7196 -14392 -7196 NULL NULL 63.0 6.4051596E8 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:07.907 -7196 1200709486 -4476244963808 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 15:59:50.196 -7196 1402100915 -5227032211120 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 21 21.0 1969-12-31 16:00:10.652 -7196 1755924724 -6546087371072 NULL NULL 7196 -14392 -7196 NULL NULL -21.0 6.4051596E8 2.123597414469586E-5 -21 3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 28 28.0 1969-12-31 16:00:02.795 -7196 1542799131 -5751555160368 NULL NULL 7196 -14392 -7196 NULL NULL -28.0 6.4051596E8 2.8314632192927813E-5 -28 2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 16:00:11.526 -7196 -703366355 2622149771440 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 15:59:46.387 -7196 991147780 -3694998923840 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -9 -9.0 1969-12-31 15:59:58.825 -7196 1221941567 -4555398161776 NULL NULL 7196 -14392 -7196 NULL NULL 9.0 6.4051596E8 -9.101131776298225E-6 9 -8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -57 -57.0 1969-12-31 16:00:04.659 -7196 -1579093262 5886859680736 NULL NULL 7196 -14392 -7196 NULL NULL 57.0 6.4051596E8 -5.764050124988876E-5 57 -1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -28 -28.0 1969-12-31 15:59:51.637 -7196 -444000127 1655232473456 NULL NULL 7196 -14392 -7196 NULL NULL 28.0 6.4051596E8 -2.8314632192927813E-5 28 -2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 14 14.0 1969-12-31 15:59:50.291 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL -14.0 6.4051596E8 1.4157316096463906E-5 -14 5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 15:59:47.825 -7196 -95344418 355443990304 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -34 -34.0 1969-12-31 15:59:48.779 -7196 -1022931985 3813490440080 NULL NULL 7196 -14392 -7196 NULL NULL 34.0 6.4051596E8 -3.438205337712663E-5 34 -2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 34 34.0 1969-12-31 16:00:04.36 -7196 1412648789 -5266354685392 NULL NULL 7196 -14392 -7196 NULL NULL -34.0 6.4051596E8 3.438205337712663E-5 -34 2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 32 32.0 1969-12-31 15:59:58.962 -7196 -303275124 1130609662272 NULL NULL 7196 -14392 -7196 NULL NULL -32.0 6.4051596E8 3.235957964906036E-5 -32 2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -34 -34.0 1969-12-31 16:00:01.396 -7196 -1226942900 4574043131200 NULL NULL 7196 -14392 -7196 NULL NULL 34.0 6.4051596E8 -3.438205337712663E-5 34 -2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 27 27.0 1969-12-31 15:59:50.046 -7196 -2121399625 7908577802000 NULL NULL 7196 -14392 -7196 NULL NULL -27.0 6.4051596E8 2.7303395328894677E-5 -27 2.946407407407407 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -12 -12.0 1969-12-31 16:00:15.92 -7196 358049432 -1334808282496 NULL NULL 7196 -14392 -7196 NULL NULL 12.0 6.4051596E8 -1.2134842368397635E-5 12 -6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 48 48.0 1969-12-31 16:00:02.043 -7196 -219185402 817123178656 NULL NULL 7196 -14392 -7196 NULL NULL -48.0 6.4051596E8 4.853936947359054E-5 -48 1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -27 -27.0 1969-12-31 15:59:48.105 -7196 -859692583 3204933949424 NULL NULL 7196 -14392 -7196 NULL NULL 27.0 6.4051596E8 -2.7303395328894677E-5 27 -2.946407407407407 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:06.997 -7196 -1265540677 4717935643856 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -47 -47.0 1969-12-31 16:00:00.235 -7196 -1083011916 4037468422848 NULL NULL 7196 -14392 -7196 NULL NULL 47.0 6.4051596E8 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 55 55.0 1969-12-31 16:00:02.488 -7196 -181014520 674822130560 NULL NULL 7196 -14392 -7196 NULL NULL -55.0 6.4051596E8 5.561802752182249E-5 -55 1.4464181818181818 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 8 8.0 1969-12-31 16:00:00.613 -7196 599224705 -2233909700240 NULL NULL 7196 -14392 -7196 NULL NULL -8.0 6.4051596E8 8.08989491226509E-6 -8 9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -44 -44.0 1969-12-31 15:59:50.843 -7196 619396855 -2309111475440 NULL NULL 7196 -14392 -7196 NULL NULL 44.0 6.4051596E8 -4.449442201745799E-5 44 -1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 32 32.0 1969-12-31 15:59:54.875 -7196 1970876136 -7347426235008 NULL NULL 7196 -14392 -7196 NULL NULL -32.0 6.4051596E8 3.235957964906036E-5 -32 2.48603125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -38 -38.0 1969-12-31 16:00:00.843 -7196 -314153742 1171165150176 NULL NULL 7196 -14392 -7196 NULL NULL 38.0 6.4051596E8 -3.842700083325918E-5 38 -2.0935 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 42 42.0 1969-12-31 16:00:00.992 -7196 1644841467 -6131968988976 NULL NULL 7196 -14392 -7196 NULL NULL -42.0 6.4051596E8 4.247194828939172E-5 -42 1.8941190476190475 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 16:00:07.27 -7196 -2071049869 7720873911632 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -11 -11.0 1969-12-31 15:59:57.148 -7196 -1261670420 4703507325760 NULL NULL 7196 -14392 -7196 NULL NULL 11.0 6.4051596E8 -1.1123605504364498E-5 11 -7.232090909090909 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 16:00:15.409 -7196 313391588 -1168323840064 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -18 -18.0 1969-12-31 15:59:53.782 -7196 -1501501535 5597597722480 NULL NULL 7196 -14392 -7196 NULL NULL 18.0 6.4051596E8 -1.820226355259645E-5 18 -4.419611111111111 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 33 33.0 1969-12-31 16:00:15.99 -7196 1994545529 -7435665732112 NULL NULL 7196 -14392 -7196 NULL NULL -33.0 6.4051596E8 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 49 49.0 1969-12-31 16:00:13.879 -7196 796009413 -2967523091664 NULL NULL 7196 -14392 -7196 NULL NULL -49.0 6.4051596E8 4.9550606337623676E-5 -49 1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 6 6.0 1969-12-31 15:59:58.692 -7196 -95453964 355852377792 NULL NULL 7196 -14392 -7196 NULL NULL -6.0 6.4051596E8 6.067421184198818E-6 -6 13.258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 46 46.0 1969-12-31 15:59:45.334 -7196 -1436934967 5356893556976 NULL NULL 7196 -14392 -7196 NULL NULL -46.0 6.4051596E8 4.651689574552426E-5 -46 1.7294130434782609 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 30 30.0 1969-12-31 15:59:47.701 -7196 -478323335 1783189392880 NULL NULL 7196 -14392 -7196 NULL NULL -30.0 6.4051596E8 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 7 7.0 1969-12-31 16:00:05.724 -7196 -556098975 2073136978800 NULL NULL 7196 -14392 -7196 NULL NULL -7.0 6.4051596E8 7.078658048231953E-6 -7 11.364714285714285 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 39 39.0 1969-12-31 16:00:10.915 -7196 -361407222 1347326123616 NULL NULL 7196 -14392 -7196 NULL NULL -39.0 6.4051596E8 3.9438237697292314E-5 -39 2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 16:00:13.868 -7196 1875242301 -6990903298128 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 15:59:54.438 -7196 265927514 -991377772192 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:15.69 -7196 -1591295545 5932349791760 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -36 -36.0 1969-12-31 16:00:08.615 -7196 756475174 -2820139448672 NULL NULL 7196 -14392 -7196 NULL NULL 36.0 6.4051596E8 -3.64045271051929E-5 36 -2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -50 -50.0 1969-12-31 15:59:53.689 -7196 1294693950 -4826619045600 NULL NULL 7196 -14392 -7196 NULL NULL 50.0 6.4051596E8 -5.056184320165681E-5 50 -1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:07.204 -7196 1735272327 -6469095235056 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 15:59:48.703 -7196 -1633774587 6090711660336 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -16 -16.0 1969-12-31 15:59:54.619 -7196 -2010404362 7494787461536 NULL NULL 7196 -14392 -7196 NULL NULL 16.0 6.4051596E8 -1.617978982453018E-5 16 -4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 15:59:44.081 -7196 -322878567 1203691297776 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -41 -41.0 1969-12-31 16:00:05.785 -7196 -2045045391 7623929217648 NULL NULL 7196 -14392 -7196 NULL NULL 41.0 6.4051596E8 -4.1460711425358585E-5 41 -1.9403170731707315 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -26.28 1969-12-31 16:00:10.192 -7196 291891431 -1088171254768 NULL NULL 7196 -14392 -7196 NULL NULL 26.28 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -6 -6.0 1969-12-31 15:59:57.92 -7196 -2124802690 7921264428320 NULL NULL 7196 -14392 -7196 NULL NULL 6.0 6.4051596E8 -6.067421184198818E-6 6 -13.258833333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -31 -31.0 1969-12-31 15:59:49.226 -7196 -548962072 2046530604416 NULL NULL 7196 -14392 -7196 NULL NULL 31.0 6.4051596E8 -3.134834278502722E-5 31 -2.566225806451613 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -30 -30.0 1969-12-31 15:59:43.82 -7196 1329543519 -4956538238832 NULL NULL 7196 -14392 -7196 NULL NULL 30.0 6.4051596E8 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 16:00:01.125 -7196 -1851730063 6903249674864 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 15:59:49.652 -7196 -2039141896 7601920988288 NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -33 -33.0 1969-12-31 16:00:02.131 -7196 -1264795306 4715156900768 NULL NULL 7196 -14392 -7196 NULL NULL 33.0 6.4051596E8 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 16 16.0 1969-12-31 16:00:16.02 -7196 323260103 -1205113663984 NULL NULL 7196 -14392 -7196 NULL NULL -16.0 6.4051596E8 1.617978982453018E-5 -16 4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:12.663 -7196 -1889458933 7043902902224 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -25 -25.0 1969-12-31 16:00:03.549 -7196 -769039800 2866980374400 NULL NULL 7196 -14392 -7196 NULL NULL 25.0 6.4051596E8 -2.5280921600828406E-5 25 -3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 15:59:44.836 -7196 1003317046 -3740365947488 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 15 15.0 1969-12-31 15:59:44.16 -7196 -146790344 547234402432 NULL NULL 7196 -14392 -7196 NULL NULL -15.0 6.4051596E8 1.5168552960497044E-5 -15 5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -49 -49.0 1969-12-31 15:59:52.715 -7196 1402423611 -5228235221808 NULL NULL 7196 -14392 -7196 NULL NULL 49.0 6.4051596E8 -4.9550606337623676E-5 49 -1.6235306122448978 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 16:00:07.361 -7196 418917539 -1561724585392 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 34 34.0 1969-12-31 16:00:00.82 -7196 221369308 -825264780224 NULL NULL 7196 -14392 -7196 NULL NULL -34.0 6.4051596E8 3.438205337712663E-5 -34 2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 4 4.0 1969-12-31 16:00:08.327 -7196 -286988419 1069892826032 NULL NULL 7196 -14392 -7196 NULL NULL -4.0 6.4051596E8 4.044947456132545E-6 -4 19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -31 -31.0 1969-12-31 15:59:54.845 -7196 -1024257790 3818433041120 NULL NULL 7196 -14392 -7196 NULL NULL 31.0 6.4051596E8 -3.134834278502722E-5 31 -2.566225806451613 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 30 30.0 1969-12-31 16:00:08.554 -7196 1652888354 -6161967783712 NULL NULL 7196 -14392 -7196 NULL NULL -30.0 6.4051596E8 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 15:59:48.779 -7196 907595786 -3383517090208 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 50 50.0 1969-12-31 16:00:11.048 -7196 -1800692361 6712981121808 NULL NULL 7196 -14392 -7196 NULL NULL -50.0 6.4051596E8 5.056184320165681E-5 -50 1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -51 -51.0 1969-12-31 15:59:43.64 -7196 -1339164819 4992406445232 NULL NULL 7196 -14392 -7196 NULL NULL 51.0 6.4051596E8 -5.157308006568995E-5 51 -1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 24 24.0 1969-12-31 16:00:12.66 -7196 -930616249 3469337376272 NULL NULL 7196 -14392 -7196 NULL NULL -24.0 6.4051596E8 2.426968473679527E-5 -24 3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 47 47.0 1969-12-31 16:00:00.351 -7196 -983326369 3665840703632 NULL NULL 7196 -14392 -7196 NULL NULL -47.0 6.4051596E8 4.7528132609557405E-5 -47 1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -2 -2.0 1969-12-31 15:59:47.95 -7196 -787580432 2936099850496 NULL NULL 7196 -14392 -7196 NULL NULL 2.0 6.4051596E8 -2.0224737280662724E-6 2 -39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -35 -35.0 1969-12-31 16:00:12.959 -7196 668477655 -2492084697840 NULL NULL 7196 -14392 -7196 NULL NULL 35.0 6.4051596E8 -3.5393290241159765E-5 35 -2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -30 -30.0 1969-12-31 16:00:13.124 -7196 727610554 -2712532145312 NULL NULL 7196 -14392 -7196 NULL NULL 30.0 6.4051596E8 -3.0337105920994087E-5 30 -2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -20 -20.0 1969-12-31 16:00:13.131 -7196 -25047971 93378835888 NULL NULL 7196 -14392 -7196 NULL NULL 20.0 6.4051596E8 -2.0224737280662725E-5 20 -3.9776499999999997 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 16:00:01.11 -7196 -1144874988 4268093955264 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 15:59:51.184 -7196 1633931264 -6091295752192 NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 57 57.0 1969-12-31 15:59:51.725 -7196 -1511601241 5635249426448 NULL NULL 7196 -14392 -7196 NULL NULL -57.0 6.4051596E8 5.764050124988876E-5 -57 1.3956666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -48 -48.0 1969-12-31 16:00:01.813 -7196 -1035336927 3859736063856 NULL NULL 7196 -14392 -7196 NULL NULL 48.0 6.4051596E8 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 16:00:10.163 -7196 -1964987216 7325472341248 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -48 -48.0 1969-12-31 15:59:44.522 -7196 -954681295 3559051867760 NULL NULL 7196 -14392 -7196 NULL NULL 48.0 6.4051596E8 -4.853936947359054E-5 48 -1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -63 -63.0 1969-12-31 16:00:07.375 -7196 -1711796768 6381578351104 NULL NULL 7196 -14392 -7196 NULL NULL 63.0 6.4051596E8 -6.370792243408759E-5 63 -1.2627460317460317 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 13 13.0 1969-12-31 15:59:54.148 -7196 -1987510940 7409440784320 NULL NULL 7196 -14392 -7196 NULL NULL -13.0 6.4051596E8 1.314607923243077E-5 -13 6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 1 1.0 1969-12-31 15:59:55.524 -7196 -860168842 3206709442976 NULL NULL 7196 -14392 -7196 NULL NULL -1.0 6.4051596E8 1.0112368640331362E-6 -1 79.553 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 15:59:52.164 -7196 1306133727 -4869266534256 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 11 11.0 1969-12-31 16:00:06.603 -7196 444257258 -1656191057824 NULL NULL 7196 -14392 -7196 NULL NULL -11.0 6.4051596E8 1.1123605504364498E-5 -11 7.232090909090909 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 16:00:02.373 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 16:00:02.613 -7196 1493254737 -5566853659536 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -21 -21.0 1969-12-31 16:00:15.188 -7196 -1827273066 6812073990048 NULL NULL 7196 -14392 -7196 NULL NULL 21.0 6.4051596E8 -2.123597414469586E-5 21 -3.788238095238095 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 24 24.0 1969-12-31 15:59:46.471 -7196 813443800 -3032518486400 NULL NULL 7196 -14392 -7196 NULL NULL -24.0 6.4051596E8 2.426968473679527E-5 -24 3.3147083333333334 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 15:59:55.798 -7196 1723777074 -6426240931872 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 16:00:03.85 -7196 -642836823 2396495676144 NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -53 -53.0 1969-12-31 15:59:57.663 -7196 898472381 -3349505036368 NULL NULL 7196 -14392 -7196 NULL NULL 53.0 6.4051596E8 -5.359555379375622E-5 53 -1.501 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 16:00:07.969 -7196 -773265030 2882732031840 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 16:00:01.592 -7196 988888 -3686574464 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 15:59:44.634 -7196 -1554125282 5793779051296 NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 29 29.0 1969-12-31 15:59:47.097 -7196 1918451926 -7151988780128 NULL NULL 7196 -14392 -7196 NULL NULL -29.0 6.4051596E8 2.932586905696095E-5 -29 2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 15:59:58.395 -7196 -1367753794 5098986144032 NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -17 -17.0 1969-12-31 15:59:56.135 -7196 -509557318 1899629681504 NULL NULL 7196 -14392 -7196 NULL NULL 17.0 6.4051596E8 -1.7191026688563315E-5 17 -4.679588235294117 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -64 -64.0 1969-12-31 16:00:12.339 -7196 1805860756 -6732248898368 NULL NULL 7196 -14392 -7196 NULL NULL 64.0 6.4051596E8 -6.471915929812072E-5 64 -1.243015625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 16:00:03.049 -7196 -1513172815 5641108254320 NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 16:00:11.762 -7196 -969277545 3613466687760 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -3 -3.0 1969-12-31 15:59:57.043 -7196 -815857841 3041518031248 NULL NULL 7196 -14392 -7196 NULL NULL 3.0 6.4051596E8 -3.033710592099409E-6 3 -26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -50 -50.0 1969-12-31 16:00:08.161 -7196 -1283226068 4783866781504 NULL NULL 7196 -14392 -7196 NULL NULL 50.0 6.4051596E8 -5.056184320165681E-5 50 -1.59106 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 14 14.0 1969-12-31 15:59:56.518 -7196 -1720768938 6415026600864 NULL NULL 7196 -14392 -7196 NULL NULL -14.0 6.4051596E8 1.4157316096463906E-5 -14 5.682357142857143 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -40 -40.0 1969-12-31 16:00:06.489 -7196 -848424137 3162925182736 NULL NULL 7196 -14392 -7196 NULL NULL 40.0 6.4051596E8 -4.044947456132545E-5 40 -1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 62 62.0 1969-12-31 15:59:54.256 -7196 524247756 -1954395634368 NULL NULL 7196 -14392 -7196 NULL NULL -62.0 6.4051596E8 6.269668557005445E-5 -62 1.2831129032258064 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -33 -33.0 1969-12-31 15:59:52.682 -7196 286555719 -1068279720432 NULL NULL 7196 -14392 -7196 NULL NULL 33.0 6.4051596E8 -3.3370816513093494E-5 33 -2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:08.234 -7196 -729256990 2718670058720 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 40 40.0 1969-12-31 16:00:14.048 -7196 -1498115170 5584973353760 NULL NULL 7196 -14392 -7196 NULL NULL -40.0 6.4051596E8 4.044947456132545E-5 -40 1.9888249999999998 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 52 52.0 1969-12-31 15:59:58.309 -7196 1735974184 -6471711757952 NULL NULL 7196 -14392 -7196 NULL NULL -52.0 6.4051596E8 5.258431692972308E-5 -52 1.5298653846153845 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -34 -34.0 1969-12-31 15:59:50.263 -7196 1591827313 -5934332222864 NULL NULL 7196 -14392 -7196 NULL NULL 34.0 6.4051596E8 -3.438205337712663E-5 34 -2.3397941176470587 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 30 30.0 1969-12-31 15:59:54.76 -7196 -2060977898 7683325603744 NULL NULL 7196 -14392 -7196 NULL NULL -30.0 6.4051596E8 3.0337105920994087E-5 -30 2.6517666666666666 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -5 -5.0 1969-12-31 15:59:44.323 -7196 1644460062 -6130547111136 NULL NULL 7196 -14392 -7196 NULL NULL 5.0 6.4051596E8 -5.056184320165681E-6 5 -15.910599999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 15:59:53.679 -7196 1279487251 -4769928471728 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -8 -8.0 1969-12-31 15:59:56.367 -7196 994075198 -3705912338144 NULL NULL 7196 -14392 -7196 NULL NULL 8.0 6.4051596E8 -8.08989491226509E-6 8 -9.944125 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 25 25.0 1969-12-31 16:00:07.331 -7196 888822373 -3313529806544 NULL NULL 7196 -14392 -7196 NULL NULL -25.0 6.4051596E8 2.5280921600828406E-5 -25 3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -23 -23.0 1969-12-31 16:00:11.124 -7196 -364079399 1357287999472 NULL NULL 7196 -14392 -7196 NULL NULL 23.0 6.4051596E8 -2.325844787276213E-5 23 -3.4588260869565217 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -2 -2.0 1969-12-31 15:59:48.389 -7196 -1268340526 4728373480928 NULL NULL 7196 -14392 -7196 NULL NULL 2.0 6.4051596E8 -2.0224737280662724E-6 2 -39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -29 -29.0 1969-12-31 16:00:03.855 -7196 1616977696 -6028092850688 NULL NULL 7196 -14392 -7196 NULL NULL 29.0 6.4051596E8 -2.932586905696095E-5 29 -2.7432068965517242 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 44 44.0 1969-12-31 16:00:12.427 -7196 -928635185 3461951969680 NULL NULL 7196 -14392 -7196 NULL NULL -44.0 6.4051596E8 4.449442201745799E-5 -44 1.8080227272727272 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -47 -47.0 1969-12-31 15:59:45.028 -7196 1388924857 -5177911866896 NULL NULL 7196 -14392 -7196 NULL NULL 47.0 6.4051596E8 -4.7528132609557405E-5 47 -1.6926170212765956 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 35 35.0 1969-12-31 15:59:51.86 -7196 1667895530 -6217914535840 NULL NULL 7196 -14392 -7196 NULL NULL -35.0 6.4051596E8 3.5393290241159765E-5 -35 2.272942857142857 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 9 9.0 1969-12-31 16:00:09.285 -7196 -547733153 2041949194384 NULL NULL 7196 -14392 -7196 NULL NULL -9.0 6.4051596E8 9.101131776298225E-6 -9 8.839222222222222 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -61 -61.0 1969-12-31 16:00:11.842 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL 61.0 6.4051596E8 -6.16854487060213E-5 61 -1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 12 12.0 1969-12-31 16:00:15.27 -7196 514966110 -1919793658080 NULL NULL 7196 -14392 -7196 NULL NULL -12.0 6.4051596E8 1.2134842368397635E-5 -12 6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 36 36.0 1969-12-31 16:00:12.979 -7196 -1110874318 4141339457504 NULL NULL 7196 -14392 -7196 NULL NULL -36.0 6.4051596E8 3.64045271051929E-5 -36 2.2098055555555556 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 16:00:06.624 -7196 918951834 -3425852437152 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -22 -22.0 1969-12-31 16:00:00.586 -7196 -1104851756 4118887346368 NULL NULL 7196 -14392 -7196 NULL NULL 22.0 6.4051596E8 -2.2247211008728996E-5 22 -3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 12 12.0 1969-12-31 15:59:57.98 -7196 159910702 -596147097056 NULL NULL 7196 -14392 -7196 NULL NULL -12.0 6.4051596E8 1.2134842368397635E-5 -12 6.629416666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -4 -4.0 1969-12-31 16:00:13.324 -7196 1264553400 -4714255075200 NULL NULL 7196 -14392 -7196 NULL NULL 4.0 6.4051596E8 -4.044947456132545E-6 4 -19.88825 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 51 51.0 1969-12-31 15:59:50.363 -7196 1825079468 -6803896256704 NULL NULL 7196 -14392 -7196 NULL NULL -51.0 6.4051596E8 5.157308006568995E-5 -51 1.5598627450980391 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -3 -3.0 1969-12-31 15:59:48.04 -7196 -1125097136 4194362123008 NULL NULL 7196 -14392 -7196 NULL NULL 3.0 6.4051596E8 -3.033710592099409E-6 3 -26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 22 22.0 1969-12-31 16:00:15.715 -7196 -146384448 545721222144 NULL NULL 7196 -14392 -7196 NULL NULL -22.0 6.4051596E8 2.2247211008728996E-5 -22 3.6160454545454543 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -39 -39.0 1969-12-31 16:00:10.104 -7196 170904847 -637133269616 NULL NULL 7196 -14392 -7196 NULL NULL 39.0 6.4051596E8 -3.9438237697292314E-5 39 -2.039820512820513 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 59 59.0 1969-12-31 16:00:03.463 -7196 -1707264538 6364682197664 NULL NULL 7196 -14392 -7196 NULL NULL -59.0 6.4051596E8 5.966297497795504E-5 -59 1.3483559322033898 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 48 48.0 1969-12-31 16:00:07.257 -7196 1639854261 -6113376685008 NULL NULL 7196 -14392 -7196 NULL NULL -48.0 6.4051596E8 4.853936947359054E-5 -48 1.6573541666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 3 3.0 1969-12-31 16:00:13.064 -7196 659639923 -2459137632944 NULL NULL 7196 -14392 -7196 NULL NULL -3.0 6.4051596E8 3.033710592099409E-6 -3 26.517666666666667 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -15 -15.0 1969-12-31 15:59:58.668 -7196 -943224537 3516341073936 NULL NULL 7196 -14392 -7196 NULL NULL 15.0 6.4051596E8 -1.5168552960497044E-5 15 -5.303533333333333 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -16 -16.0 1969-12-31 16:00:01.088 -7196 469226089 -1749274859792 NULL NULL 7196 -14392 -7196 NULL NULL 16.0 6.4051596E8 -1.617978982453018E-5 16 -4.9720625 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -45 -45.0 1969-12-31 16:00:09.332 -7196 -1352651602 5042685172256 NULL NULL 7196 -14392 -7196 NULL NULL 45.0 6.4051596E8 -4.550565888149113E-5 45 -1.7678444444444443 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -1 -1.0 1969-12-31 16:00:09.511 -7196 2011635522 -7499377226016 NULL NULL 7196 -14392 -7196 NULL NULL 1.0 6.4051596E8 -1.0112368640331362E-6 1 -79.553 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 61 61.0 1969-12-31 16:00:15.143 -7196 838733994 -3126800329632 NULL NULL 7196 -14392 -7196 NULL NULL -61.0 6.4051596E8 6.16854487060213E-5 -61 1.3041475409836065 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -10 -10.0 1969-12-31 16:00:11.061 -7196 370889082 -1382674497696 NULL NULL 7196 -14392 -7196 NULL NULL 10.0 6.4051596E8 -1.0112368640331362E-5 10 -7.955299999999999 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -13 -13.0 1969-12-31 15:59:52.976 -7196 -390869916 1457163046848 NULL NULL 7196 -14392 -7196 NULL NULL 13.0 6.4051596E8 -1.314607923243077E-5 13 -6.119461538461538 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 28 28.0 1969-12-31 16:00:12.148 -7196 -1407978842 5248945122976 NULL NULL 7196 -14392 -7196 NULL NULL -28.0 6.4051596E8 2.8314632192927813E-5 -28 2.8411785714285713 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 33 33.0 1969-12-31 15:59:53.989 -7196 -2095698146 7812762688288 NULL NULL 7196 -14392 -7196 NULL NULL -33.0 6.4051596E8 3.3370816513093494E-5 -33 2.4106969696969696 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 2 2.0 1969-12-31 16:00:12.06 -7196 1364337481 -5086250129168 NULL NULL 7196 -14392 -7196 NULL NULL -2.0 6.4051596E8 2.0224737280662724E-6 -2 39.7765 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 19 19.0 1969-12-31 16:00:01.375 -7196 -1885659257 7029737710096 NULL NULL 7196 -14392 -7196 NULL NULL -19.0 6.4051596E8 1.921350041662959E-5 -19 4.187 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 1 1.0 1969-12-31 15:59:48.361 -7196 NULL NULL NULL NULL 7196 -14392 -7196 NULL NULL -1.0 6.4051596E8 1.0112368640331362E-6 -1 79.553 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false 59 59.0 1969-12-31 16:00:00.551 -7196 854892886 -3187040679008 NULL NULL 7196 -14392 -7196 NULL NULL -59.0 6.4051596E8 5.966297497795504E-5 -59 1.3483559322033898 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -25 -25.0 1969-12-31 15:59:44.455 -7196 -579903586 2161880568608 NULL NULL 7196 -14392 -7196 NULL NULL 25.0 6.4051596E8 -2.5280921600828406E-5 25 -3.18212 -NULL -7196.0 1969-12-31 15:59:58.174 NULL false -62 -62.0 1969-12-31 16:00:09.025 -7196 -840223244 3132352253632 NULL NULL 7196 -14392 -7196 NULL NULL 62.0 6.4051596E8 -6.269668557005445E-5 62 -1.2831129032258064 --748768326 NULL NULL T6ubsbx62cmP false 11 11.0 1969-12-31 16:00:02.351 NULL -75337224 280857171072 748768326 7.48767462743E8 NULL NULL NULL 1.0 7.48767489023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1023644243 NULL NULL Cxas82oA2hX884xmYQ2jrpDX true 11 11.0 1969-12-31 16:00:02.351 NULL -866431241 3230055666448 1023644243 1.023643379743E9 NULL NULL NULL 1.0 1.023643406023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --670497702 NULL NULL gSJS1mpb5Khx8140U3 false 11 11.0 1969-12-31 16:00:02.351 NULL -413540706 1541679751968 670497702 6.70496838743E8 NULL NULL NULL 1.0 6.70496865023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --248449790 NULL NULL ce6C1MhLw false 11 11.0 1969-12-31 16:00:02.351 NULL -214114609 798219262352 248449790 2.48448926743E8 NULL NULL NULL 1.0 2.48448953023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1041353707 NULL NULL 25Qky6lf2pt5FP47Mqmb true 11 11.0 1969-12-31 16:00:02.351 NULL -931949639 3474308254192 1041353707 1.041352843743E9 NULL NULL NULL 1.0 1.041352870023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --772037548 NULL NULL e4j6pjQIS16PPiA86wnd4Ke false 11 11.0 1969-12-31 16:00:02.351 NULL -748568632 2790663860096 772037548 7.72036684743E8 NULL NULL NULL 1.0 7.72036711023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1047036113 NULL NULL Js07yFa2qnrfVU1j2e3 false 11 11.0 1969-12-31 16:00:02.351 NULL -240113848 895144425344 1047036113 1.047035249743E9 NULL NULL NULL 1.0 1.047035276023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --915318164 NULL NULL IpqVS false 11 11.0 1969-12-31 16:00:02.351 NULL -904453147 3371801332016 915318164 9.15317300743E8 NULL NULL NULL 1.0 9.15317327023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --607145105 NULL NULL 0rtl1C false 11 11.0 1969-12-31 16:00:02.351 NULL -311989648 1163097407744 607145105 6.07144241743E8 NULL NULL NULL 1.0 6.07144268023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --695529452 NULL NULL 7s6O45GD7p4ASq08a26v8 true 11 11.0 1969-12-31 16:00:02.351 NULL -467935754 1744464490912 695529452 6.95528588743E8 NULL NULL NULL 1.0 6.95528615023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --891785445 NULL NULL 31m1d3P3AD false 11 11.0 1969-12-31 16:00:02.351 NULL -670722591 2500453819248 891785445 8.91784581743E8 NULL NULL NULL 1.0 8.91784608023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --566868938 NULL NULL yJ67FYA false 11 11.0 1969-12-31 16:00:02.351 NULL -462200469 1723083348432 566868938 5.66868074743E8 NULL NULL NULL 1.0 5.66868101023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --390244123 NULL NULL JPd15l3I6F4Na true 11 11.0 1969-12-31 16:00:02.351 NULL -69466528 258971216384 390244123 3.90243259743E8 NULL NULL NULL 1.0 3.9024328602299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --434867359 NULL NULL IorWR false 11 11.0 1969-12-31 16:00:02.351 NULL -45980161 171414040208 434867359 4.34866495743E8 NULL NULL NULL 1.0 4.3486652202299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --646339276 NULL NULL 2yd00UDPJUO37S4qfT0gHyg false 11 11.0 1969-12-31 16:00:02.351 NULL -584600510 2179390701280 646339276 6.46338412743E8 NULL NULL NULL 1.0 6.46338439023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --796484582 NULL NULL gj5IRDNe62057M false 11 11.0 1969-12-31 16:00:02.351 NULL -598210892 2230130205376 796484582 7.96483718743E8 NULL NULL NULL 1.0 7.96483745023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1012011232 NULL NULL 7q0iMi2GDq0Q false 11 11.0 1969-12-31 16:00:02.351 NULL -806973080 3008395642240 1012011232 1.012010368743E9 NULL NULL NULL 1.0 1.012010395023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --369004155 NULL NULL r55X6tJ4eKvh false 11 11.0 1969-12-31 16:00:02.351 NULL -242858513 905376536464 369004155 3.69003291743E8 NULL NULL NULL 1.0 3.6900331802299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --157295768 NULL NULL O1Kq8bfOEoDR true 11 11.0 1969-12-31 16:00:02.351 NULL -89010 331829280 157295768 1.57294904743E8 NULL NULL NULL 1.0 1.57294931023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --853118632 NULL NULL er5IUhd505r0lT6sc20Tef5q true 11 11.0 1969-12-31 16:00:02.351 NULL -426033194 1588251747232 853118632 8.53117768743E8 NULL NULL NULL 1.0 8.53117795023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1055185482 NULL NULL l20vn2Awc true 11 11.0 1969-12-31 16:00:02.351 NULL -398806473 1486750531344 1055185482 1.055184618743E9 NULL NULL NULL 1.0 1.055184645023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --153888210 NULL NULL aEi5JQHQPd4Y8 true 11 11.0 1969-12-31 16:00:02.351 NULL -111343268 415087703104 153888210 1.53887346743E8 NULL NULL NULL 1.0 1.53887373023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --691793383 NULL NULL 40i6Qf07 false 11 11.0 1969-12-31 16:00:02.351 NULL -322200600 1201163836800 691793383 6.91792519743E8 NULL NULL NULL 1.0 6.91792546023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --875527384 NULL NULL 3W0GorVd6GStPF5S43 false 11 11.0 1969-12-31 16:00:02.351 NULL -332869795 1240938595760 875527384 8.75526520743E8 NULL NULL NULL 1.0 8.75526547023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --930153712 NULL NULL Jj21024T2xdn6 false 11 11.0 1969-12-31 16:00:02.351 NULL -737116859 2747971650352 930153712 9.30152848743E8 NULL NULL NULL 1.0 9.30152875023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --402903993 NULL NULL SIUKQ52i702FMVn5 false 11 11.0 1969-12-31 16:00:02.351 NULL -106842649 398309395472 402903993 4.02903129743E8 NULL NULL NULL 1.0 4.0290315602299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1054849160 NULL NULL CEGOy true 11 11.0 1969-12-31 16:00:02.351 NULL -1027630923 3831008080944 1054849160 1.054848296743E9 NULL NULL NULL 1.0 1.054848323023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --730200970 NULL NULL Ca1Tsx2aY1q true 11 11.0 1969-12-31 16:00:02.351 NULL -425808646 1587414632288 730200970 7.30200106743E8 NULL NULL NULL 1.0 7.30200133023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --884671420 NULL NULL QbGMK true 11 11.0 1969-12-31 16:00:02.351 NULL -265077470 988208808160 884671420 8.84670556743E8 NULL NULL NULL 1.0 8.84670583023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1023165277 NULL NULL 438Lxo541TwY5ID80cnR5 false 11 11.0 1969-12-31 16:00:02.351 NULL -1004780673 3745822348944 1023165277 1.023164413743E9 NULL NULL NULL 1.0 1.023164440023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --369233503 NULL NULL 4S44vF false 11 11.0 1969-12-31 16:00:02.351 NULL -282004256 1051311866368 369233503 3.69232639743E8 NULL NULL NULL 1.0 3.6923266602299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --592237581 NULL NULL auGhMXSG3mUqnh false 11 11.0 1969-12-31 16:00:02.351 NULL -46848452 174651029056 592237581 5.92236717743E8 NULL NULL NULL 1.0 5.92236744023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --901934849 NULL NULL 6tH7O0gw0gJ true 11 11.0 1969-12-31 16:00:02.351 NULL -824858323 3075071828144 901934849 9.01933985743E8 NULL NULL NULL 1.0 9.01934012023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --750036400 NULL NULL M22umK0Q1S2Q80358P6 true 11 11.0 1969-12-31 16:00:02.351 NULL -131749591 491162475248 750036400 7.50035536743E8 NULL NULL NULL 1.0 7.50035563023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1043979188 NULL NULL 2d3tQdCGQN5k7u7S false 11 11.0 1969-12-31 16:00:02.351 NULL -8894336 33158084608 1043979188 1.043978324743E9 NULL NULL NULL 1.0 1.043978351023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --970640948 NULL NULL frhe0 false 11 11.0 1969-12-31 16:00:02.351 NULL -935612665 3487964015120 970640948 9.70640084743E8 NULL NULL NULL 1.0 9.70640111023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --657225349 NULL NULL U1aid52v false 11 11.0 1969-12-31 16:00:02.351 NULL -432068801 1610752490128 657225349 6.57224485743E8 NULL NULL NULL 1.0 6.57224512023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1069736047 NULL NULL k17Am8uPHWk02cEf1jet true 11 11.0 1969-12-31 16:00:02.351 NULL -453772520 1691663954560 1069736047 1.069735183743E9 NULL NULL NULL 1.0 1.069735210023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --238517065 NULL NULL 7xh48cBvt34812U1at true 11 11.0 1969-12-31 16:00:02.351 NULL -164041058 611545064224 238517065 2.38516201743E8 NULL NULL NULL 1.0 2.38516228023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --234925520 NULL NULL rW58d3yGN1w3XhS7hx3UK1yF true 11 11.0 1969-12-31 16:00:02.351 NULL -34488346 128572553888 234925520 2.34924656743E8 NULL NULL NULL 1.0 2.34924683023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --325931647 NULL NULL 2a7V63IL7jK3o false 11 11.0 1969-12-31 16:00:02.351 NULL -1605000232 5983440864896 325931647 3.25930783743E8 NULL NULL NULL 1.0 3.2593081002299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --854749761 NULL NULL pL11U1oq48Oj202Wy2W7B false 11 11.0 1969-12-31 16:00:02.351 NULL -336553394 1254671052832 854749761 8.54748897743E8 NULL NULL NULL 1.0 8.54748924023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --444756572 NULL NULL I3XOX0B0 true 11 11.0 1969-12-31 16:00:02.351 NULL -5391274 20098669472 444756572 4.44755708743E8 NULL NULL NULL 1.0 4.4475573502299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --850094446 NULL NULL 8Bshk4eu870M3VyJ8c4D1upr false 11 11.0 1969-12-31 16:00:02.351 NULL -709283154 2644207598112 850094446 8.50093582743E8 NULL NULL NULL 1.0 8.50093609023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1026019772 NULL NULL T6Al7d0hN770XB65M0F2g true 11 11.0 1969-12-31 16:00:02.351 NULL -338489479 1261888777712 1026019772 1.026018908743E9 NULL NULL NULL 1.0 1.026018935023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --791904835 NULL NULL 5TVADgO1Sm3 false 11 11.0 1969-12-31 16:00:02.351 NULL -639988447 2385876930416 791904835 7.91903971743E8 NULL NULL NULL 1.0 7.91903998023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --870474082 NULL NULL tdFP6MjN5b true 11 11.0 1969-12-31 16:00:02.351 NULL -148471202 553500641056 870474082 8.70473218743E8 NULL NULL NULL 1.0 8.70473245023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --706227781 NULL NULL jO055kB85qLIyl5VJVkj8 true 11 11.0 1969-12-31 16:00:02.351 NULL -321571126 1198817157728 706227781 7.06226917743E8 NULL NULL NULL 1.0 7.06226944023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --372691367 NULL NULL 5CbP5V2x14qPOqL3J true 11 11.0 1969-12-31 16:00:02.351 NULL -257171499 958735348272 372691367 3.72690503743E8 NULL NULL NULL 1.0 3.7269053002299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --302342259 NULL NULL H5alUwndRKm true 11 11.0 1969-12-31 16:00:02.351 NULL -279191311 1040825207408 302342259 3.02341395743E8 NULL NULL NULL 1.0 3.0234142202299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --323362404 NULL NULL 2h2qsp14cr false 11 11.0 1969-12-31 16:00:02.351 NULL -84799501 316132539728 323362404 3.23361540743E8 NULL NULL NULL 1.0 3.2336156702299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --659186324 NULL NULL QDK4Rtj7CX01p false 11 11.0 1969-12-31 16:00:02.351 NULL -609337705 2271610964240 659186324 6.59185460743E8 NULL NULL NULL 1.0 6.59185487023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --774129472 NULL NULL jeOFkUX5u5flcN5hCr4 false 11 11.0 1969-12-31 16:00:02.351 NULL -129228119 481762427632 774129472 7.74128608743E8 NULL NULL NULL 1.0 7.74128635023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --757031735 NULL NULL 6AmfdSoTPmVvXdgM8CP20sx false 11 11.0 1969-12-31 16:00:02.351 NULL -59385430 221388883040 757031735 7.57030871743E8 NULL NULL NULL 1.0 7.57030898023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --978898374 NULL NULL ShA4jlmOwF8u7kjN false 11 11.0 1969-12-31 16:00:02.351 NULL -277483031 1034456739568 978898374 9.78897510743E8 NULL NULL NULL 1.0 9.78897537023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1069103950 NULL NULL 41A0nYX72UOSfxO4053xy true 11 11.0 1969-12-31 16:00:02.351 NULL -927759444 3458687207232 1069103950 1.069103086743E9 NULL NULL NULL 1.0 1.069103113023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --839336166 NULL NULL r5osh2m507Ot387emvDxNY true 11 11.0 1969-12-31 16:00:02.351 NULL -587232793 2189203852304 839336166 8.39335302743E8 NULL NULL NULL 1.0 8.39335329023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --930463965 NULL NULL ldk1K false 11 11.0 1969-12-31 16:00:02.351 NULL -414014176 1543444848128 930463965 9.30463101743E8 NULL NULL NULL 1.0 9.30463128023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1048097158 NULL NULL fpt3gpLE true 11 11.0 1969-12-31 16:00:02.351 NULL -234579722 874513203616 1048097158 1.048096294743E9 NULL NULL NULL 1.0 1.048096321023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --1020466796 NULL NULL 7hCJ5yJvt0775jjgq8S0bX6W false 11 11.0 1969-12-31 16:00:02.351 NULL -926772952 3455009565056 1020466796 1.020465932743E9 NULL NULL NULL 1.0 1.020465959023E9 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --379279396 NULL NULL n3WIT2YtCj true 11 11.0 1969-12-31 16:00:02.351 NULL -48658326 181398239328 379279396 3.79278532743E8 NULL NULL NULL 1.0 3.7927855902299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --239794059 NULL NULL 74w2cGm0 true 11 11.0 1969-12-31 16:00:02.351 NULL -8172686 30467773408 239794059 2.39793195743E8 NULL NULL NULL 1.0 2.39793222023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --988289401 NULL NULL CeG187j false 11 11.0 1969-12-31 16:00:02.351 NULL -446065499 1662932180272 988289401 9.88288537743E8 NULL NULL NULL 1.0 9.88288564023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --528532585 NULL NULL ijU4c false 11 11.0 1969-12-31 16:00:02.351 NULL -511463313 1906735230864 528532585 5.28531721743E8 NULL NULL NULL 1.0 5.2853174802299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --743921863 NULL NULL B7grxpIo8Tf33RjGTg0 true 11 11.0 1969-12-31 16:00:02.351 NULL -517466117 1929113684176 743921863 7.43920999743E8 NULL NULL NULL 1.0 7.43921026023E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 --391573084 NULL NULL 28Oe6r21yux7Lk47 true 11 11.0 1969-12-31 16:00:02.351 NULL -236100834 880183909152 391573084 3.91572220743E8 NULL NULL NULL 1.0 3.9157224702299994E8 -11.0 NULL 1.1123605504364498E-5 -11 7.232090909090909 PREHOOK: query: -- TargetTypeClasses: Long, String, Double, Bool, Timestamp -- Functions: VarP, Var, StDev, StDevP, Max, Sum -- ArithmeticOps: Divide, Remainder, Subtract, Multiply @@ -2257,6 +1089,7 @@ WHERE (((197 > ctinyint) OR (cboolean1 < 0) OR ((cstring1 LIKE '%ss') AND (cfloat <= ctinyint))) +LIMIT 25 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: Long, String, Double, Bool, Timestamp -- Functions: VarP, Var, StDev, StDevP, Max, Sum @@ -2295,6 +1128,7 @@ WHERE (((197 > ctinyint) OR (cboolean1 < 0) OR ((cstring1 LIKE '%ss') AND (cfloat <= ctinyint))) +LIMIT 25 POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage @@ -2314,18 +1148,21 @@ STAGE PLANS: expressions: cint (type: int), cbigint (type: bigint), cstring1 (type: string), cboolean1 (type: boolean), cfloat (type: float), cdouble (type: double), ctimestamp2 (type: timestamp), csmallint (type: smallint), cstring2 (type: string), cboolean2 (type: boolean), (cint / cbigint) (type: double), (cbigint % 79.553) (type: double), (- (cint / cbigint)) (type: double), (10.175 % cfloat) (type: double), (- cfloat) (type: float), (cfloat - (- cfloat)) (type: float), ((cfloat - (- cfloat)) % -6432) (type: float), (cdouble * csmallint) (type: double), (- cdouble) (type: double), (- cbigint) (type: bigint), (cfloat - (cint / cbigint)) (type: double), (- csmallint) (type: smallint), (3569 % cbigint) (type: bigint), (359 - cdouble) (type: double), (- csmallint) (type: smallint) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24 Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Limit + Number of rows: 25 + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 25 Data size: 750 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Execution mode: vectorized Stage: Stage-0 Fetch Operator - limit: -1 + limit: 25 Processor Tree: ListSink @@ -2361,6 +1198,7 @@ WHERE (((197 > ctinyint) OR (cboolean1 < 0) OR ((cstring1 LIKE '%ss') AND (cfloat <= ctinyint))) +LIMIT 25 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -2396,6 +1234,7 @@ WHERE (((197 > ctinyint) OR (cboolean1 < 0) OR ((cstring1 LIKE '%ss') AND (cfloat <= ctinyint))) +LIMIT 25 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -2439,6 +1278,7 @@ WHERE (((csmallint > -26.28) OR ((cbigint <= cfloat) AND (-26.28 <= csmallint))) ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble +LIMIT 75 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: String, Bool, Double, Long, Timestamp -- Functions: Sum, Max, Avg, Var, StDevP, VarP @@ -2477,6 +1317,7 @@ WHERE (((csmallint > -26.28) OR ((cbigint <= cfloat) AND (-26.28 <= csmallint))) ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble +LIMIT 75 POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage @@ -2507,17 +1348,20 @@ STAGE PLANS: expressions: KEY.reducesinkkey7 (type: int), KEY.reducesinkkey1 (type: string), VALUE._col0 (type: boolean), KEY.reducesinkkey2 (type: timestamp), KEY.reducesinkkey6 (type: double), KEY.reducesinkkey3 (type: float), KEY.reducesinkkey4 (type: bigint), KEY.reducesinkkey8 (type: smallint), KEY.reducesinkkey0 (type: boolean), VALUE._col1 (type: int), VALUE._col2 (type: bigint), VALUE._col3 (type: bigint), VALUE._col4 (type: float), VALUE._col5 (type: bigint), VALUE._col6 (type: double), VALUE._col7 (type: double), VALUE._col8 (type: bigint), VALUE._col9 (type: double), VALUE._col10 (type: double), VALUE._col11 (type: double), VALUE._col12 (type: smallint), VALUE._col13 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21 Statistics: Num rows: 10922 Data size: 335301 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 10922 Data size: 335301 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Limit + Number of rows: 75 + Statistics: Num rows: 75 Data size: 2250 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 75 Data size: 2250 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Stage: Stage-0 Fetch Operator - limit: -1 + limit: 75 Processor Tree: ListSink @@ -2554,6 +1398,7 @@ WHERE (((csmallint > -26.28) OR ((cbigint <= cfloat) AND (-26.28 <= csmallint))) ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble +LIMIT 75 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -2589,6 +1434,7 @@ WHERE (((csmallint > -26.28) OR ((cbigint <= cfloat) AND (-26.28 <= csmallint))) ORDER BY cboolean1, cstring1, ctimestamp2, cfloat, cbigint, cstring1, cdouble, cint, csmallint, cdouble +LIMIT 75 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -2667,516 +1513,6 @@ NULL NULL false 1969-12-31 15:59:58.456 15601.0 -45.0 -831227593 15601 NULL NULL NULL NULL false 1969-12-31 15:59:58.456 15601.0 -44.0 -1551649760 15601 NULL NULL -1551649716 1551649760 44.0 -3103299476 1.0 -15601.0 NULL -1.551665361E9 0.03156818181818182 -5502.0 -15601 NULL NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -1447719201 15601 NULL NULL -1447719157 1447719201 44.0 -2895438358 1.0 -15601.0 NULL -1.447734802E9 0.03156818181818182 -8805.0 -15601 NULL NULL NULL NULL 1969-12-31 15:59:58.456 15601.0 -44.0 -1416000760 15601 NULL NULL -1416000716 1416000760 44.0 -2832001476 1.0 -15601.0 NULL -1.416016361E9 0.03156818181818182 -7197.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -1032806869 15601 NULL NULL -1032806825 1032806869 44.0 -2065613694 1.0 -15601.0 NULL -1.03282247E9 0.03156818181818182 -5068.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -44.0 -772919195 15601 NULL NULL -772919151 772919195 44.0 -1545838346 1.0 -15601.0 NULL -7.72934796E8 0.03156818181818182 -14453.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -429050254 15601 NULL NULL -429050210 429050254 44.0 -858100464 1.0 -15601.0 NULL -4.29065855E8 0.03156818181818182 -7153.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -399793337 15601 NULL NULL -399793293 399793337 44.0 -799586630 1.0 -15601.0 NULL -3.99808938E8 0.03156818181818182 -2111.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -358755931 15601 NULL NULL -358755887 358755931 44.0 -717511818 1.0 -15601.0 NULL -3.58771532E8 0.03156818181818182 -10936.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -44.0 -75975416 15601 NULL NULL -75975372 75975416 44.0 -151950788 1.0 -15601.0 NULL -7.5991017E7 0.03156818181818182 -14147.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -43.0 -1111076337 15601 NULL NULL -1111076294 1111076337 43.0 -2222152631 1.0 -15601.0 NULL -1.111091938E9 0.03230232558139535 -4319.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -43.0 -223687300 15601 NULL NULL -223687257 223687300 43.0 -447374557 1.0 -15601.0 NULL -2.23702901E8 0.03230232558139535 -162.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -42.0 -2129158440 15601 NULL NULL -2129158398 2129158440 42.0 -4258316838 1.0 -15601.0 NULL -2.129174041E9 0.03307142857142857 -11965.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -42.0 -1434650528 15601 NULL NULL -1434650486 1434650528 42.0 -2869301014 1.0 -15601.0 NULL -1.434666129E9 0.03307142857142857 -13770.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -42.0 -1003335119 15601 NULL NULL -1003335077 1003335119 42.0 -2006670196 1.0 -15601.0 NULL -1.00335072E9 0.03307142857142857 -3607.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -42.0 -933775134 15601 NULL NULL -933775092 933775134 42.0 -1867550226 1.0 -15601.0 NULL -9.33790735E8 0.03307142857142857 -8481.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -41.0 -1512449609 15601 NULL NULL -1512449568 1512449609 41.0 -3024899177 1.0 -15601.0 NULL -1.51246521E9 0.03387804878048781 -10664.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -41.0 -1064437283 15601 NULL NULL -1064437242 1064437283 41.0 -2128874525 1.0 -15601.0 NULL -1.064452884E9 0.03387804878048781 -12255.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -41.0 -626924299 15601 NULL NULL -626924258 626924299 41.0 -1253848557 1.0 -15601.0 NULL -6.269399E8 0.03387804878048781 -13715.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -41.0 -560714683 15601 NULL NULL -560714642 560714683 41.0 -1121429325 1.0 -15601.0 NULL -5.60730284E8 0.03387804878048781 -14743.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -41.0 -480294523 15601 NULL NULL -480294482 480294523 41.0 -960589005 1.0 -15601.0 NULL -4.80310124E8 0.03387804878048781 -2137.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -40.0 -1723403466 15601 NULL NULL -1723403426 1723403466 40.0 -3446806892 1.0 -15601.0 NULL -1.723419067E9 0.034725 -7799.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -40.0 -1523633607 15601 NULL NULL -1523633567 1523633607 40.0 -3047267174 1.0 -15601.0 NULL -1.523649208E9 0.034725 -8745.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -40.0 -691840768 15601 NULL NULL -691840728 691840768 40.0 -1383681496 1.0 -15601.0 NULL -6.91856369E8 0.034725 -14423.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -40.0 -626007306 15601 NULL NULL -626007266 626007306 40.0 -1252014572 1.0 -15601.0 NULL -6.26022907E8 0.034725 -1580.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -39.0 -1651489748 15601 NULL NULL -1651489709 1651489748 39.0 -3302979457 1.0 -15601.0 NULL -1.651505349E9 0.03561538461538462 -14691.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -39.0 -775351902 15601 NULL NULL -775351863 775351902 39.0 -1550703765 1.0 -15601.0 NULL -7.75367503E8 0.03561538461538462 -13404.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -39.0 -682718731 15601 NULL NULL -682718692 682718731 39.0 -1365437423 1.0 -15601.0 NULL -6.82734332E8 0.03561538461538462 -3370.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -39.0 -176425309 15601 NULL NULL -176425270 176425309 39.0 -352850579 1.0 -15601.0 NULL -1.7644091E8 0.03561538461538462 -9201.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -38.0 -1858689000 15601 NULL NULL -1858688962 1858689000 38.0 -3717377962 1.0 -15601.0 NULL -1.858704601E9 0.03655263157894737 -1461.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -38.0 -1138820207 15601 NULL NULL -1138820169 1138820207 38.0 -2277640376 1.0 -15601.0 NULL -1.138835808E9 0.03655263157894737 -9611.0 -15601 NULL -NULL NULL NULL 1969-12-31 15:59:58.456 15601.0 -38.0 -6432 15601 NULL NULL -6394 6432 38.0 -12826 1.0 -15601.0 NULL -22033.0 0.03655263157894737 -6432.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -37.0 -1665990202 15601 NULL NULL -1665990165 1665990202 37.0 -3331980367 1.0 -15601.0 NULL -1.666005803E9 0.03754054054054054 -6215.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -37.0 -1474993355 15601 NULL NULL -1474993318 1474993355 37.0 -2949986673 1.0 -15601.0 NULL -1.475008956E9 0.03754054054054054 -12411.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -37.0 -1373443946 15601 NULL NULL -1373443909 1373443946 37.0 -2746887855 1.0 -15601.0 NULL -1.373459547E9 0.03754054054054054 -9911.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -37.0 -1274229243 15601 NULL NULL -1274229206 1274229243 37.0 -2548458449 1.0 -15601.0 NULL -1.274244844E9 0.03754054054054054 -1967.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -37.0 -218695361 15601 NULL NULL -218695324 218695361 37.0 -437390685 1.0 -15601.0 NULL -2.18710962E8 0.03754054054054054 -543.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -36.0 -1804756106 15601 NULL NULL -1804756070 1804756106 36.0 -3609512176 1.0 -15601.0 NULL -1.804771707E9 0.03858333333333333 -1224.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -36.0 -1655350680 15601 NULL NULL -1655350644 1655350680 36.0 -3310701324 1.0 -15601.0 NULL -1.655366281E9 0.03858333333333333 -6575.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -35.0 -1000935343 15601 NULL NULL -1000935308 1000935343 35.0 -2001870651 1.0 -15601.0 NULL -1.000950944E9 0.03968571428571429 -6385.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -35.0 -994591123 15601 NULL NULL -994591088 994591123 35.0 -1989182211 1.0 -15601.0 NULL -9.94606724E8 0.03968571428571429 -11772.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -35.0 -621636211 15601 NULL NULL -621636176 621636211 35.0 -1243272387 1.0 -15601.0 NULL -6.21651812E8 0.03968571428571429 -14366.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -34.0 -1225938733 15601 NULL NULL -1225938699 1225938733 34.0 -2451877432 1.0 -15601.0 NULL -1.225954334E9 0.04085294117647059 -12153.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -34.0 -1177680836 15601 NULL NULL -1177680802 1177680836 34.0 -2355361638 1.0 -15601.0 NULL -1.177696437E9 0.04085294117647059 -8149.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -34.0 -671949185 15601 NULL NULL -671949151 671949185 34.0 -1343898336 1.0 -15601.0 NULL -6.71964786E8 0.04085294117647059 -14115.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -33.0 -2080305624 15601 NULL NULL -2080305591 2080305624 33.0 -4160611215 1.0 -15601.0 NULL -2.080321225E9 0.04209090909090909 -5880.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -33.0 -1870761879 15601 NULL NULL -1870761846 1870761879 33.0 -3741523725 1.0 -15601.0 NULL -1.87077748E9 0.04209090909090909 -14767.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -33.0 -1583014792 15601 NULL NULL -1583014759 1583014792 33.0 -3166029551 1.0 -15601.0 NULL -1.583030393E9 0.04209090909090909 -12524.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -33.0 -1465766070 15601 NULL NULL -1465766037 1465766070 33.0 -2931532107 1.0 -15601.0 NULL -1.465781671E9 0.04209090909090909 -5317.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -33.0 -1447184932 15601 NULL NULL -1447184899 1447184932 33.0 -2894369831 1.0 -15601.0 NULL -1.447200533E9 0.04209090909090909 -4970.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -33.0 -226993201 15601 NULL NULL -226993168 226993201 33.0 -453986369 1.0 -15601.0 NULL -2.27008802E8 0.04209090909090909 -14252.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -33.0 -6432 15601 NULL NULL -6399 6432 33.0 -12831 1.0 -15601.0 NULL -22033.0 0.04209090909090909 -6432.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -32.0 -2105144474 15601 NULL NULL -2105144442 2105144474 32.0 -4210288916 1.0 -15601.0 NULL -2.105160075E9 0.04340625 -7938.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -32.0 -1864500604 15601 NULL NULL -1864500572 1864500604 32.0 -3729001176 1.0 -15601.0 NULL -1.864516205E9 0.04340625 -9493.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -32.0 -1473796341 15601 NULL NULL -1473796309 1473796341 32.0 -2947592650 1.0 -15601.0 NULL -1.473811942E9 0.04340625 -1073.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -32.0 -938739544 15601 NULL NULL -938739512 938739544 32.0 -1877479056 1.0 -15601.0 NULL -9.38755145E8 0.04340625 -11773.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -31.0 -2030835158 15601 NULL NULL -2030835127 2030835158 31.0 -4061670285 1.0 -15601.0 NULL -2.030850759E9 0.044806451612903225 -6185.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -31.0 -1784005728 15601 NULL NULL -1784005697 1784005728 31.0 -3568011425 1.0 -15601.0 NULL -1.784021329E9 0.044806451612903225 -176.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -31.0 -1357998994 15601 NULL NULL -1357998963 1357998994 31.0 -2715997957 1.0 -15601.0 NULL -1.358014595E9 0.044806451612903225 -9949.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -31.0 -773540513 15601 NULL NULL -773540482 773540513 31.0 -1547080995 1.0 -15601.0 NULL -7.73556114E8 0.044806451612903225 -11731.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -31.0 -198456342 15601 NULL NULL -198456311 198456342 31.0 -396912653 1.0 -15601.0 NULL -1.98471943E8 0.044806451612903225 -11622.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -31.0 -46453649 15601 NULL NULL -46453618 46453649 31.0 -92907267 1.0 -15601.0 NULL -4.646925E7 0.044806451612903225 -9472.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -30.0 -1617443296 15601 NULL NULL -1617443266 1617443296 30.0 -3234886562 1.0 -15601.0 NULL -1.617458897E9 0.0463 -9621.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -30.0 -532238997 15601 NULL NULL -532238967 532238997 30.0 -1064477964 1.0 -15601.0 NULL -5.32254598E8 0.0463 -10882.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -29.0 -2143024405 15601 NULL NULL -2143024376 2143024405 29.0 -4286048781 1.0 -15601.0 NULL -2.143040006E9 0.04789655172413793 -8641.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -29.0 -1912094416 15601 NULL NULL -1912094387 1912094416 29.0 -3824188803 1.0 -15601.0 NULL -1.912110017E9 0.04789655172413793 -4654.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -29.0 -1703837738 15601 NULL NULL -1703837709 1703837738 29.0 -3407675447 1.0 -15601.0 NULL -1.703853339E9 0.04789655172413793 -5725.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -29.0 -1355363882 15601 NULL NULL -1355363853 1355363882 29.0 -2710727735 1.0 -15601.0 NULL -1.355379483E9 0.04789655172413793 -11406.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -29.0 -427240643 15601 NULL NULL -427240614 427240643 29.0 -854481257 1.0 -15601.0 NULL -4.27256244E8 0.04789655172413793 -7258.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -29.0 -393066261 15601 NULL NULL -393066232 393066261 29.0 -786132493 1.0 -15601.0 NULL -3.93081862E8 0.04789655172413793 -14667.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -28.0 -1297431786 15601 NULL NULL -1297431758 1297431786 28.0 -2594863544 1.0 -15601.0 NULL -1.297447387E9 0.04960714285714286 -5823.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -28.0 -870417768 15601 NULL NULL -870417740 870417768 28.0 -1740835508 1.0 -15601.0 NULL -8.70433369E8 0.04960714285714286 -6776.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -28.0 -357908629 15601 NULL NULL -357908601 357908629 28.0 -715817230 1.0 -15601.0 NULL -3.5792423E8 0.04960714285714286 -6088.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -28.0 -309692433 15601 NULL NULL -309692405 309692433 28.0 -619384838 1.0 -15601.0 NULL -3.09708034E8 0.04960714285714286 -12583.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -27.0 -1152127938 15601 NULL NULL -1152127911 1152127938 27.0 -2304255849 1.0 -15601.0 NULL -1.152143539E9 0.051444444444444445 -9689.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -26.28 -1227267053 15601 NULL NULL -1227267030 1227267053 26.28 -2454534083 1.0 -15601.0 NULL -1.227282654E9 0.06039130434782609 -14388.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -26.0 -2022905886 15601 NULL NULL -2022905860 2022905886 26.0 -4045811746 1.0 -15601.0 NULL -2.022921487E9 0.05342307692307692 -2221.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -26.0 -1931941399 15601 NULL NULL -1931941373 1931941399 26.0 -3863882772 1.0 -15601.0 NULL -1.931957E9 0.05342307692307692 -7165.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -26.0 -1301028273 15601 NULL NULL -1301028247 1301028273 26.0 -2602056520 1.0 -15601.0 NULL -1.301043874E9 0.05342307692307692 -14080.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -26.0 -404509269 15601 NULL NULL -404509243 404509269 26.0 -809018512 1.0 -15601.0 NULL -4.0452487E8 0.05342307692307692 -6541.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -26.0 -354697170 15601 NULL NULL -354697144 354697170 26.0 -709394314 1.0 -15601.0 NULL -3.54712771E8 0.05342307692307692 -8435.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -26.0 -257298466 15601 NULL NULL -257298440 257298466 26.0 -514596906 1.0 -15601.0 NULL -2.57314067E8 0.05342307692307692 -6774.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -25.0 -892983643 15601 NULL NULL -892983618 892983643 25.0 -1785967261 1.0 -15601.0 NULL -8.92999244E8 0.05556 -13605.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -25.0 -414129290 15601 NULL NULL -414129265 414129290 25.0 -828258555 1.0 -15601.0 NULL -4.14144891E8 0.05556 -745.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -24.0 -1496666324 15601 NULL NULL -1496666300 1496666324 24.0 -2993332624 1.0 -15601.0 NULL -1.496681925E9 0.057875 -15591.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -24.0 -402193022 15601 NULL NULL -402192998 402193022 24.0 -804386020 1.0 -15601.0 NULL -4.02208623E8 0.057875 -14843.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -24.0 -278405900 15601 NULL NULL -278405876 278405900 24.0 -556811776 1.0 -15601.0 NULL -2.78421501E8 0.057875 -6055.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -24.0 -214199588 15601 NULL NULL -214199564 214199588 24.0 -428399152 1.0 -15601.0 NULL -2.14215189E8 0.057875 -13459.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -23.0 -2104361963 15601 NULL NULL -2104361940 2104361963 23.0 -4208723903 1.0 -15601.0 NULL -2.104377564E9 0.06039130434782609 -5477.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -23.0 -1864716928 15601 NULL NULL -1864716905 1864716928 23.0 -3729433833 1.0 -15601.0 NULL -1.864732529E9 0.06039130434782609 -7403.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -23.0 -1196406048 15601 NULL NULL -1196406025 1196406048 23.0 -2392812073 1.0 -15601.0 NULL -1.196421649E9 0.06039130434782609 -12161.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -23.0 -1046520269 15601 NULL NULL -1046520246 1046520269 23.0 -2093040515 1.0 -15601.0 NULL -1.04653587E9 0.06039130434782609 -5189.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -23.0 -557847275 15601 NULL NULL -557847252 557847275 23.0 -1115694527 1.0 -15601.0 NULL -5.57862876E8 0.06039130434782609 -2318.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -23.0 -287502046 15601 NULL NULL -287502023 287502046 23.0 -575004069 1.0 -15601.0 NULL -2.87517647E8 0.06039130434782609 -6818.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -22.0 -1843534244 15601 NULL NULL -1843534222 1843534244 22.0 -3687068466 1.0 -15601.0 NULL -1.843549845E9 0.06313636363636364 -10877.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -22.0 -1803981239 15601 NULL NULL -1803981217 1803981239 22.0 -3607962456 1.0 -15601.0 NULL -1.80399684E9 0.06313636363636364 -6407.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -22.0 -1138394041 15601 NULL NULL -1138394019 1138394041 22.0 -2276788060 1.0 -15601.0 NULL -1.138409642E9 0.06313636363636364 -4672.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -22.0 -116661992 15601 NULL NULL -116661970 116661992 22.0 -233323962 1.0 -15601.0 NULL -1.16677593E8 0.06313636363636364 -13315.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -21.0 -1025776200 15601 NULL NULL -1025776179 1025776200 21.0 -2051552379 1.0 -15601.0 NULL -1.025791801E9 0.06614285714285714 -10450.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -21.0 -813809028 15601 NULL NULL -813809007 813809028 21.0 -1627618035 1.0 -15601.0 NULL -8.13824629E8 0.06614285714285714 -14065.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -21.0 -617977476 15601 NULL NULL -617977455 617977476 21.0 -1235954931 1.0 -15601.0 NULL -6.17993077E8 0.06614285714285714 -6265.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -21.0 -264600574 15601 NULL NULL -264600553 264600574 21.0 -529201127 1.0 -15601.0 NULL -2.64616175E8 0.06614285714285714 -7614.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -20.0 -1914520574 15601 NULL NULL -1914520554 1914520574 20.0 -3829041128 1.0 -15601.0 NULL -1.914536175E9 0.06945 -12657.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -20.0 -1569241661 15601 NULL NULL -1569241641 1569241661 20.0 -3138483302 1.0 -15601.0 NULL -1.569257262E9 0.06945 -15076.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -1293754251 15601 NULL NULL -1293754231 1293754251 20.0 -2587508482 1.0 -15601.0 NULL -1.293769852E9 0.06945 -10124.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -990240929 15601 NULL NULL -990240909 990240929 20.0 -1980481838 1.0 -15601.0 NULL -9.9025653E8 0.06945 -14257.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -20.0 -258993110 15601 NULL NULL -258993090 258993110 20.0 -517986200 1.0 -15601.0 NULL -2.59008711E8 0.06945 -909.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -125514283 15601 NULL NULL -125514263 125514283 20.0 -251028546 1.0 -15601.0 NULL -1.25529884E8 0.06945 -4238.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -88020940 15601 NULL NULL -88020920 88020940 20.0 -176041860 1.0 -15601.0 NULL -8.8036541E7 0.06945 -98.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -57923441 15601 NULL NULL -57923421 57923441 20.0 -115846862 1.0 -15601.0 NULL -5.7939042E7 0.06945 -12529.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -20.0 -41530125 15601 NULL NULL -41530105 41530125 20.0 -83060230 1.0 -15601.0 NULL -4.1545726E7 0.06945 -263.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -1575589254 15601 NULL NULL -1575589235 1575589254 19.0 -3151178489 1.0 -15601.0 NULL -1.575604855E9 0.07310526315789474 -13062.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -19.0 -1322538563 15601 NULL NULL -1322538544 1322538563 19.0 -2645077107 1.0 -15601.0 NULL -1.322554164E9 0.07310526315789474 -10591.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -1293795844 15601 NULL NULL -1293795825 1293795844 19.0 -2587591669 1.0 -15601.0 NULL -1.293811445E9 0.07310526315789474 -4914.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -19.0 -1198536835 15601 NULL NULL -1198536816 1198536835 19.0 -2397073651 1.0 -15601.0 NULL -1.198552436E9 0.07310526315789474 -5611.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -1040575969 15601 NULL NULL -1040575950 1040575969 19.0 -2081151919 1.0 -15601.0 NULL -1.04059157E9 0.07310526315789474 -4870.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -899534452 15601 NULL NULL -899534433 899534452 19.0 -1799068885 1.0 -15601.0 NULL -8.99550053E8 0.07310526315789474 -11994.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -643533009 15601 NULL NULL -643532990 643533009 19.0 -1287065999 1.0 -15601.0 NULL -6.4354861E8 0.07310526315789474 -7360.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -19.0 -584361640 15601 NULL NULL -584361621 584361640 19.0 -1168723261 1.0 -15601.0 NULL -5.84377241E8 0.07310526315789474 -10584.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -19.0 -285749156 15601 NULL NULL -285749137 285749156 19.0 -571498293 1.0 -15601.0 NULL -2.85764757E8 0.07310526315789474 -1240.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -18.0 -1414044792 15601 NULL NULL -1414044774 1414044792 18.0 -2828089566 1.0 -15601.0 NULL -1.414060393E9 0.07716666666666666 -1354.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -18.0 -1310922279 15601 NULL NULL -1310922261 1310922279 18.0 -2621844540 1.0 -15601.0 NULL -1.31093788E9 0.07716666666666666 -1451.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -18.0 -1185085807 15601 NULL NULL -1185085789 1185085807 18.0 -2370171596 1.0 -15601.0 NULL -1.185101408E9 0.07716666666666666 -2645.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -17.0 -1901567703 15601 NULL NULL -1901567686 1901567703 17.0 -3803135389 1.0 -15601.0 NULL -1.901583304E9 0.08170588235294118 -8616.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -17.0 -1275985495 15601 NULL NULL -1275985478 1275985495 17.0 -2551970973 1.0 -15601.0 NULL -1.276001096E9 0.08170588235294118 -10907.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -17.0 -590153501 15601 NULL NULL -590153484 590153501 17.0 -1180306985 1.0 -15601.0 NULL -5.90169102E8 0.08170588235294118 -14474.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -16.0 -1505978287 15601 NULL NULL -1505978271 1505978287 16.0 -3011956558 1.0 -15601.0 NULL -1.505993888E9 0.0868125 -13757.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -16.0 -598490358 15601 NULL NULL -598490342 598490358 16.0 -1196980700 1.0 -15601.0 NULL -5.98505959E8 0.0868125 -4796.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -15.0 -1925755234 15601 NULL NULL -1925755219 1925755234 15.0 -3851510453 1.0 -15601.0 NULL -1.925770835E9 0.0926 -14597.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -15.0 -937270420 15601 NULL NULL -937270405 937270420 15.0 -1874540825 1.0 -15601.0 NULL -9.37286021E8 0.0926 -9143.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -14.0 -1863202490 15601 NULL NULL -1863202476 1863202490 14.0 -3726404966 1.0 -15601.0 NULL -1.863218091E9 0.09921428571428571 -6262.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -14.0 -946632342 15601 NULL NULL -946632328 946632342 14.0 -1893264670 1.0 -15601.0 NULL -9.46647943E8 0.09921428571428571 -10465.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -14.0 -466156812 15601 NULL NULL -466156798 466156812 14.0 -932313610 1.0 -15601.0 NULL -4.66172413E8 0.09921428571428571 -14533.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -14.0 -205670222 15601 NULL NULL -205670208 205670222 14.0 -411340430 1.0 -15601.0 NULL -2.05685823E8 0.09921428571428571 -2239.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -13.0 -1040843741 15601 NULL NULL -1040843728 1040843741 13.0 -2081687469 1.0 -15601.0 NULL -1.040859342E9 0.10684615384615384 -7425.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -13.0 -928466576 15601 NULL NULL -928466563 928466576 13.0 -1856933139 1.0 -15601.0 NULL -9.28482177E8 0.10684615384615384 -4263.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -11.0 -1985550487 15601 NULL NULL -1985550476 1985550487 11.0 -3971100963 1.0 -15601.0 NULL -1.985566088E9 0.1262727272727273 -11217.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -11.0 -1964641289 15601 NULL NULL -1964641278 1964641289 11.0 -3929282567 1.0 -15601.0 NULL -1.96465689E9 0.1262727272727273 -7359.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -11.0 -1133138233 15601 NULL NULL -1133138222 1133138233 11.0 -2266276455 1.0 -15601.0 NULL -1.133153834E9 0.1262727272727273 -6401.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -11.0 -655443218 15601 NULL NULL -655443207 655443218 11.0 -1310886425 1.0 -15601.0 NULL -6.55458819E8 0.1262727272727273 -14006.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -11.0 -386315686 15601 NULL NULL -386315675 386315686 11.0 -772631361 1.0 -15601.0 NULL -3.86331287E8 0.1262727272727273 -3724.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -11.0 -26446061 15601 NULL NULL -26446050 26446061 11.0 -52892111 1.0 -15601.0 NULL -2.6461662E7 0.1262727272727273 -2366.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -10.0 -1850457201 15601 NULL NULL -1850457191 1850457201 10.0 -3700914392 1.0 -15601.0 NULL -1.850472802E9 0.1389 -6990.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -10.0 -1160428011 15601 NULL NULL -1160428001 1160428011 10.0 -2320856012 1.0 -15601.0 NULL -1.160443612E9 0.1389 -10030.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -10.0 -1086197521 15601 NULL NULL -1086197511 1086197521 10.0 -2172395032 1.0 -15601.0 NULL -1.086213122E9 0.1389 -9098.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -9.0 -911417577 15601 NULL NULL -911417568 911417577 9.0 -1822835145 1.0 -15601.0 NULL -9.11433178E8 0.15433333333333332 -7157.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -9.0 -775282830 15601 NULL NULL -775282821 775282830 9.0 -1550565651 1.0 -15601.0 NULL -7.75298431E8 0.15433333333333332 -6736.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -9.0 -216777441 15601 NULL NULL -216777432 216777441 9.0 -433554873 1.0 -15601.0 NULL -2.16793042E8 0.15433333333333332 -1546.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -2028170063 15601 NULL NULL -2028170055 2028170063 8.0 -4056340118 1.0 -15601.0 NULL -2.028185664E9 0.173625 -8861.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -1998625094 15601 NULL NULL -1998625086 1998625094 8.0 -3997250180 1.0 -15601.0 NULL -1.998640695E9 0.173625 -12186.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -1902104689 15601 NULL NULL -1902104681 1902104689 8.0 -3804209370 1.0 -15601.0 NULL -1.90212029E9 0.173625 -15168.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -1768316238 15601 NULL NULL -1768316230 1768316238 8.0 -3536632468 1.0 -15601.0 NULL -1.768331839E9 0.173625 -5292.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -8.0 -1621359391 15601 NULL NULL -1621359383 1621359391 8.0 -3242718774 1.0 -15601.0 NULL -1.621374992E9 0.173625 -9865.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -1493703726 15601 NULL NULL -1493703718 1493703726 8.0 -2987407444 1.0 -15601.0 NULL -1.493719327E9 0.173625 -1582.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -8.0 -335617169 15601 NULL NULL -335617161 335617169 8.0 -671234330 1.0 -15601.0 NULL -3.3563277E8 0.173625 -8457.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -8.0 -225001319 15601 NULL NULL -225001311 225001319 8.0 -450002630 1.0 -15601.0 NULL -2.2501692E8 0.173625 -3697.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -1761560547 15601 NULL NULL -1761560541 1761560547 6.0 -3523121088 1.0 -15601.0 NULL -1.761576148E9 0.2315 -4834.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -6.0 -1610058211 15601 NULL NULL -1610058205 1610058211 6.0 -3220116416 1.0 -15601.0 NULL -1.610073812E9 0.2315 -3809.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -1307656088 15601 NULL NULL -1307656082 1307656088 6.0 -2615312170 1.0 -15601.0 NULL -1.307671689E9 0.2315 -11470.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -6.0 -1207674957 15601 NULL NULL -1207674951 1207674957 6.0 -2415349908 1.0 -15601.0 NULL -1.207690558E9 0.2315 -1547.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -847064600 15601 NULL NULL -847064594 847064600 6.0 -1694129194 1.0 -15601.0 NULL -8.47080201E8 0.2315 -8305.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -786134704 15601 NULL NULL -786134698 786134704 6.0 -1572269402 1.0 -15601.0 NULL -7.86150305E8 0.2315 -314.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -659825179 15601 NULL NULL -659825173 659825179 6.0 -1319650352 1.0 -15601.0 NULL -6.5984078E8 0.2315 -12086.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -6.0 -573372032 15601 NULL NULL -573372026 573372032 6.0 -1146744058 1.0 -15601.0 NULL -5.73387633E8 0.2315 -4080.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -6.0 -337682588 15601 NULL NULL -337682582 337682588 6.0 -675365170 1.0 -15601.0 NULL -3.37698189E8 0.2315 -14544.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -5.0 -1888902550 15601 NULL NULL -1888902545 1888902550 5.0 -3777805095 1.0 -15601.0 NULL -1.888918151E9 0.2778 -11475.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -1844060558 15601 NULL NULL -1844060553 1844060558 5.0 -3688121111 1.0 -15601.0 NULL -1.844076159E9 0.2778 -6757.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -1367836702 15601 NULL NULL -1367836697 1367836702 5.0 -2735673399 1.0 -15601.0 NULL -1.367852303E9 0.2778 -3426.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -1029272743 15601 NULL NULL -1029272738 1029272743 5.0 -2058545481 1.0 -15601.0 NULL -1.029288344E9 0.2778 -12369.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -685821373 15601 NULL NULL -685821368 685821373 5.0 -1371642741 1.0 -15601.0 NULL -6.85836974E8 0.2778 -1413.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -550628565 15601 NULL NULL -550628560 550628565 5.0 -1101257125 1.0 -15601.0 NULL -5.50644166E8 0.2778 -6871.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -5.0 -13357585 15601 NULL NULL -13357580 13357585 5.0 -26715165 1.0 -15601.0 NULL -1.3373186E7 0.2778 -3129.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -4.0 -2142615863 15601 NULL NULL -2142615859 2142615863 4.0 -4285231722 1.0 -15601.0 NULL -2.142631464E9 0.34725 -5725.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -4.0 -1559306282 15601 NULL NULL -1559306278 1559306282 4.0 -3118612560 1.0 -15601.0 NULL -1.559321883E9 0.34725 -1933.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -4.0 -413080018 15601 NULL NULL -413080014 413080018 4.0 -826160032 1.0 -15601.0 NULL -4.13095619E8 0.34725 -12341.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -4.0 -85097850 15601 NULL NULL -85097846 85097850 4.0 -170195696 1.0 -15601.0 NULL -8.5113451E7 0.34725 -9996.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -3.0 -2076312756 15601 NULL NULL -2076312753 2076312756 3.0 -4152625509 1.0 -15601.0 NULL -2.076328357E9 0.463 -6868.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -3.0 -1714949058 15601 NULL NULL -1714949055 1714949058 3.0 -3429898113 1.0 -15601.0 NULL -1.714964659E9 0.463 -9133.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -3.0 -1263796487 15601 NULL NULL -1263796484 1263796487 3.0 -2527592971 1.0 -15601.0 NULL -1.263812088E9 0.463 -6280.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -2.0 -2115132140 15601 NULL NULL -2115132138 2115132140 2.0 -4230264278 1.0 -15601.0 NULL -2.115147741E9 0.6945 -10964.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -2.0 -430689331 15601 NULL NULL -430689329 430689331 2.0 -861378660 1.0 -15601.0 NULL -4.30704932E8 0.6945 -8125.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -2.0 -338257841 15601 NULL NULL -338257839 338257841 2.0 -676515680 1.0 -15601.0 NULL -3.38273442E8 0.6945 -12560.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -2.0 -319788030 15601 NULL NULL -319788028 319788030 2.0 -639576058 1.0 -15601.0 NULL -3.19803631E8 0.6945 -14333.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -2.0 -64512046 15601 NULL NULL -64512044 64512046 2.0 -129024090 1.0 -15601.0 NULL -6.4527647E7 0.6945 -1911.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -1.0 -789881959 15601 NULL NULL -789881958 789881959 1.0 -1579763917 1.0 -15601.0 NULL -7.8989756E8 1.389 -3329.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 -1.0 -630453835 15601 NULL NULL -630453834 630453835 1.0 -1260907669 1.0 -15601.0 NULL -6.30469436E8 1.389 -1824.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -1.0 -532065045 15601 NULL NULL -532065044 532065045 1.0 -1064130089 1.0 -15601.0 NULL -5.32080646E8 1.389 -8541.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 -1.0 -457778616 15601 NULL NULL -457778615 457778616 1.0 -915557231 1.0 -15601.0 NULL -4.57794217E8 1.389 -14074.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 0.0 -1355080830 15601 NULL NULL -1355080830 1355080830 -0.0 -2710161660 1.0 -15601.0 NULL -1.355096431E9 NULL -9172.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 0.0 -1300968933 15601 NULL NULL -1300968933 1300968933 -0.0 -2601937866 1.0 -15601.0 NULL -1.300984534E9 NULL -1543.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 0.0 -1111841132 15601 NULL NULL -1111841132 1111841132 -0.0 -2223682264 1.0 -15601.0 NULL -1.111856733E9 NULL -4665.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 0.0 -901264012 15601 NULL NULL -901264012 901264012 -0.0 -1802528024 1.0 -15601.0 NULL -9.01279613E8 NULL -9843.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 0.0 -438779645 15601 NULL NULL -438779645 438779645 -0.0 -877559290 1.0 -15601.0 NULL -4.38795246E8 NULL -1520.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 0.0 -203039588 15601 NULL NULL -203039588 203039588 -0.0 -406079176 1.0 -15601.0 NULL -2.03055189E8 NULL -8174.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 0.0 -39854776 15601 NULL NULL -39854776 39854776 -0.0 -79709552 1.0 -15601.0 NULL -3.9870377E7 NULL -9822.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 1.0 -2136727102 15601 NULL NULL -2136727103 2136727102 -1.0 -4273454205 1.0 -15601.0 NULL -2.136742703E9 -1.389 -14142.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 1.0 -1972121622 15601 NULL NULL -1972121623 1972121622 -1.0 -3944243245 1.0 -15601.0 NULL -1.972137223E9 -1.389 -14813.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 1.0 -1025788056 15601 NULL NULL -1025788057 1025788056 -1.0 -2051576113 1.0 -15601.0 NULL -1.025803657E9 -1.389 -6705.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 1.0 -832606494 15601 NULL NULL -832606495 832606494 -1.0 -1665212989 1.0 -15601.0 NULL -8.32622095E8 -1.389 -12326.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 1.0 -208178544 15601 NULL NULL -208178545 208178544 -1.0 -416357089 1.0 -15601.0 NULL -2.08194145E8 -1.389 -14401.0 -15601 NULL -NULL NULL NULL 1969-12-31 15:59:58.456 15601.0 1.0 -33712062 15601 NULL NULL -33712063 33712062 -1.0 -67424125 1.0 -15601.0 NULL -3.3727663E7 -1.389 -13902.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 2.0 -1084500358 15601 NULL NULL -1084500360 1084500358 -2.0 -2169000718 1.0 -15601.0 NULL -1.084515959E9 -0.6945 -12444.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 2.0 -664588420 15601 NULL NULL -664588422 664588420 -2.0 -1329176842 1.0 -15601.0 NULL -6.64604021E8 -0.6945 -1421.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 2.0 -400080827 15601 NULL NULL -400080829 400080827 -2.0 -800161656 1.0 -15601.0 NULL -4.00096428E8 -0.6945 -8783.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 3.0 -1580362265 15601 NULL NULL -1580362268 1580362265 -3.0 -3160724533 1.0 -15601.0 NULL -1.580377866E9 -0.463 -12167.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 3.0 -1269033095 15601 NULL NULL -1269033098 1269033095 -3.0 -2538066193 1.0 -15601.0 NULL -1.269048696E9 -0.463 -952.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 3.0 -1215180434 15601 NULL NULL -1215180437 1215180434 -3.0 -2430360871 1.0 -15601.0 NULL -1.215196035E9 -0.463 -2943.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 3.0 -662740282 15601 NULL NULL -662740285 662740282 -3.0 -1325480567 1.0 -15601.0 NULL -6.62755883E8 -0.463 -9802.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 4.0 -2118522134 15601 NULL NULL -2118522138 2118522134 -4.0 -4237044272 1.0 -15601.0 NULL -2.118537735E9 -0.34725 -15541.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 4.0 -1677882999 15601 NULL NULL -1677883003 1677882999 -4.0 -3355766002 1.0 -15601.0 NULL -1.6778986E9 -0.34725 -11050.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 4.0 -1096047343 15601 NULL NULL -1096047347 1096047343 -4.0 -2192094690 1.0 -15601.0 NULL -1.096062944E9 -0.34725 -14689.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 4.0 -941884962 15601 NULL NULL -941884966 941884962 -4.0 -1883769928 1.0 -15601.0 NULL -9.41900563E8 -0.34725 -5789.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 4.0 -293394791 15601 NULL NULL -293394795 293394791 -4.0 -586789586 1.0 -15601.0 NULL -2.93410392E8 -0.34725 -2385.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 4.0 -118815110 15601 NULL NULL -118815114 118815110 -4.0 -237630224 1.0 -15601.0 NULL -1.18830711E8 -0.34725 -13495.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 4.0 -25467184 15601 NULL NULL -25467188 25467184 -4.0 -50934372 1.0 -15601.0 NULL -2.5482785E7 -0.34725 -6352.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 5.0 -1668687246 15601 NULL NULL -1668687251 1668687246 -5.0 -3337374497 1.0 -15601.0 NULL -1.668702847E9 -0.2778 -4286.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 5.0 -1611690058 15601 NULL NULL -1611690063 1611690058 -5.0 -3223380121 1.0 -15601.0 NULL -1.611705659E9 -0.2778 -13152.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 5.0 -1456078486 15601 NULL NULL -1456078491 1456078486 -5.0 -2912156977 1.0 -15601.0 NULL -1.456094087E9 -0.2778 -5954.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 5.0 -1405201067 15601 NULL NULL -1405201072 1405201067 -5.0 -2810402139 1.0 -15601.0 NULL -1.405216668E9 -0.2778 -3396.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 5.0 -1332540455 15601 NULL NULL -1332540460 1332540455 -5.0 -2665080915 1.0 -15601.0 NULL -1.332556056E9 -0.2778 -12242.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 5.0 -507162101 15601 NULL NULL -507162106 507162101 -5.0 -1014324207 1.0 -15601.0 NULL -5.07177702E8 -0.2778 -4793.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 5.0 -245067785 15601 NULL NULL -245067790 245067785 -5.0 -490135575 1.0 -15601.0 NULL -2.45083386E8 -0.2778 -7277.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 5.0 -184458103 15601 NULL NULL -184458108 184458103 -5.0 -368916211 1.0 -15601.0 NULL -1.84473704E8 -0.2778 -7480.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 6.0 -1440134532 15601 NULL NULL -1440134538 1440134532 -6.0 -2880269070 1.0 -15601.0 NULL -1.440150133E9 -0.2315 -6222.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 6.0 -1135974844 15601 NULL NULL -1135974850 1135974844 -6.0 -2271949694 1.0 -15601.0 NULL -1.135990445E9 -0.2315 -3630.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 6.0 -940198586 15601 NULL NULL -940198592 940198586 -6.0 -1880397178 1.0 -15601.0 NULL -9.40214187E8 -0.2315 -4321.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 6.0 -921789404 15601 NULL NULL -921789410 921789404 -6.0 -1843578814 1.0 -15601.0 NULL -9.21805005E8 -0.2315 -4319.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 6.0 -47379735 15601 NULL NULL -47379741 47379735 -6.0 -94759476 1.0 -15601.0 NULL -4.7395336E7 -0.2315 -15099.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 7.0 -1487527155 15601 NULL NULL -1487527162 1487527155 -7.0 -2975054317 1.0 -15601.0 NULL -1.487542756E9 -0.19842857142857143 -3007.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 7.0 -484557615 15601 NULL NULL -484557622 484557615 -7.0 -969115237 1.0 -15601.0 NULL -4.84573216E8 -0.19842857142857143 -6156.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 7.0 -335637893 15601 NULL NULL -335637900 335637893 -7.0 -671275793 1.0 -15601.0 NULL -3.35653494E8 -0.19842857142857143 -13580.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 8.0 -1568412240 15601 NULL NULL -1568412248 1568412240 -8.0 -3136824488 1.0 -15601.0 NULL -1.568427841E9 -0.173625 -12508.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 8.0 -1393500402 15601 NULL NULL -1393500410 1393500402 -8.0 -2787000812 1.0 -15601.0 NULL -1.393516003E9 -0.173625 -3481.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 8.0 -671519607 15601 NULL NULL -671519615 671519607 -8.0 -1343039222 1.0 -15601.0 NULL -6.71535208E8 -0.173625 -5764.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 8.0 -590921449 15601 NULL NULL -590921457 590921449 -8.0 -1181842906 1.0 -15601.0 NULL -5.9093705E8 -0.173625 -2372.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 9.0 -2093472028 15601 NULL NULL -2093472037 2093472028 -9.0 -4186944065 1.0 -15601.0 NULL -2.093487629E9 -0.15433333333333332 -5040.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 9.0 -1792474070 15601 NULL NULL -1792474079 1792474070 -9.0 -3584948149 1.0 -15601.0 NULL -1.792489671E9 -0.15433333333333332 -12776.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 9.0 -1620061206 15601 NULL NULL -1620061215 1620061206 -9.0 -3240122421 1.0 -15601.0 NULL -1.620076807E9 -0.15433333333333332 -6563.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 9.0 -1145489043 15601 NULL NULL -1145489052 1145489043 -9.0 -2290978095 1.0 -15601.0 NULL -1.145504644E9 -0.15433333333333332 -1219.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 9.0 -910567691 15601 NULL NULL -910567700 910567691 -9.0 -1821135391 1.0 -15601.0 NULL -9.10583292E8 -0.15433333333333332 -15326.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 9.0 -605773050 15601 NULL NULL -605773059 605773050 -9.0 -1211546109 1.0 -15601.0 NULL -6.05788651E8 -0.15433333333333332 -1821.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 10.0 -1230115822 15601 NULL NULL -1230115832 1230115822 -10.0 -2460231654 1.0 -15601.0 NULL -1.230131423E9 -0.1389 -8174.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 10.0 -1043251982 15601 NULL NULL -1043251992 1043251982 -10.0 -2086503974 1.0 -15601.0 NULL -1.043267583E9 -0.1389 -13112.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 10.0 -720023732 15601 NULL NULL -720023742 720023732 -10.0 -1440047474 1.0 -15601.0 NULL -7.20039333E8 -0.1389 -6380.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 11.0 -1656847358 15601 NULL NULL -1656847369 1656847358 -11.0 -3313694727 1.0 -15601.0 NULL -1.656862959E9 -0.1262727272727273 -5557.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 11.0 -1558180030 15601 NULL NULL -1558180041 1558180030 -11.0 -3116360071 1.0 -15601.0 NULL -1.558195631E9 -0.1262727272727273 -14554.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 11.0 -1474284078 15601 NULL NULL -1474284089 1474284078 -11.0 -2948568167 1.0 -15601.0 NULL -1.474299679E9 -0.1262727272727273 -5179.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 11.0 -843069884 15601 NULL NULL -843069895 843069884 -11.0 -1686139779 1.0 -15601.0 NULL -8.43085485E8 -0.1262727272727273 -7445.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 12.0 -1879970002 15601 NULL NULL -1879970014 1879970002 -12.0 -3759940016 1.0 -15601.0 NULL -1.879985603E9 -0.11575 -2699.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 12.0 -1331125878 15601 NULL NULL -1331125890 1331125878 -12.0 -2662251768 1.0 -15601.0 NULL -1.331141479E9 -0.11575 -1755.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 12.0 -620887667 15601 NULL NULL -620887679 620887667 -12.0 -1241775346 1.0 -15601.0 NULL -6.20903268E8 -0.11575 -14670.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 13.0 -2108715482 15601 NULL NULL -2108715495 2108715482 -13.0 -4217430977 1.0 -15601.0 NULL -2.108731083E9 -0.10684615384615384 -6317.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 13.0 -2058347315 15601 NULL NULL -2058347328 2058347315 -13.0 -4116694643 1.0 -15601.0 NULL -2.058362916E9 -0.10684615384615384 -13779.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 14.0 -1970072997 15601 NULL NULL -1970073011 1970072997 -14.0 -3940146008 1.0 -15601.0 NULL -1.970088598E9 -0.09921428571428571 -9919.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 14.0 -1954298743 15601 NULL NULL -1954298757 1954298743 -14.0 -3908597500 1.0 -15601.0 NULL -1.954314344E9 -0.09921428571428571 -8276.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 14.0 -1555938533 15601 NULL NULL -1555938547 1555938533 -14.0 -3111877080 1.0 -15601.0 NULL -1.555954134E9 -0.09921428571428571 -4000.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 14.0 -1426659283 15601 NULL NULL -1426659297 1426659283 -14.0 -2853318580 1.0 -15601.0 NULL -1.426674884E9 -0.09921428571428571 -10237.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 14.0 -1358164329 15601 NULL NULL -1358164343 1358164329 -14.0 -2716328672 1.0 -15601.0 NULL -1.35817993E9 -0.09921428571428571 -3673.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 15.0 -1964487606 15601 NULL NULL -1964487621 1964487606 -15.0 -3928975227 1.0 -15601.0 NULL -1.964503207E9 -0.0926 -9686.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 15.0 -1675398355 15601 NULL NULL -1675398370 1675398355 -15.0 -3350796725 1.0 -15601.0 NULL -1.675413956E9 -0.0926 -6965.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 15.0 -1540302337 15601 NULL NULL -1540302352 1540302337 -15.0 -3080604689 1.0 -15601.0 NULL -1.540317938E9 -0.0926 -6.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 15.0 -1186641445 15601 NULL NULL -1186641460 1186641445 -15.0 -2373282905 1.0 -15601.0 NULL -1.186657046E9 -0.0926 -13784.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 15.0 -1106735397 15601 NULL NULL -1106735412 1106735397 -15.0 -2213470809 1.0 -15601.0 NULL -1.106750998E9 -0.0926 -457.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 16.0 -1011232927 15601 NULL NULL -1011232943 1011232927 -16.0 -2022465870 1.0 -15601.0 NULL -1.011248528E9 -0.0868125 -7309.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 17.0 -1932369186 15601 NULL NULL -1932369203 1932369186 -17.0 -3864738389 1.0 -15601.0 NULL -1.932384787E9 -0.08170588235294118 -13725.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 17.0 -1749442997 15601 NULL NULL -1749443014 1749442997 -17.0 -3498886011 1.0 -15601.0 NULL -1.749458598E9 -0.08170588235294118 -9261.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 17.0 -784264135 15601 NULL NULL -784264152 784264135 -17.0 -1568528287 1.0 -15601.0 NULL -7.84279736E8 -0.08170588235294118 -1865.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 17.0 -748287945 15601 NULL NULL -748287962 748287945 -17.0 -1496575907 1.0 -15601.0 NULL -7.48303546E8 -0.08170588235294118 -1581.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 17.0 -629005739 15601 NULL NULL -629005756 629005739 -17.0 -1258011495 1.0 -15601.0 NULL -6.2902134E8 -0.08170588235294118 -4621.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 17.0 -402367872 15601 NULL NULL -402367889 402367872 -17.0 -804735761 1.0 -15601.0 NULL -4.02383473E8 -0.08170588235294118 -2481.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 17.0 -191560572 15601 NULL NULL -191560589 191560572 -17.0 -383121161 1.0 -15601.0 NULL -1.91576173E8 -0.08170588235294118 -11494.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 18.0 -2044770406 15601 NULL NULL -2044770424 2044770406 -18.0 -4089540830 1.0 -15601.0 NULL -2.044786007E9 -0.07716666666666666 -9740.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 18.0 -1692252476 15601 NULL NULL -1692252494 1692252476 -18.0 -3384504970 1.0 -15601.0 NULL -1.692268077E9 -0.07716666666666666 -12006.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 18.0 -996134600 15601 NULL NULL -996134618 996134600 -18.0 -1992269218 1.0 -15601.0 NULL -9.96150201E8 -0.07716666666666666 -10750.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 18.0 -973905398 15601 NULL NULL -973905416 973905398 -18.0 -1947810814 1.0 -15601.0 NULL -9.73920999E8 -0.07716666666666666 -12973.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 18.0 -860591619 15601 NULL NULL -860591637 860591619 -18.0 -1721183256 1.0 -15601.0 NULL -8.6060722E8 -0.07716666666666666 -9257.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 18.0 -309614238 15601 NULL NULL -309614256 309614238 -18.0 -619228494 1.0 -15601.0 NULL -3.09629839E8 -0.07716666666666666 -12393.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 18.0 -62733813 15601 NULL NULL -62733831 62733813 -18.0 -125467644 1.0 -15601.0 NULL -6.2749414E7 -0.07716666666666666 -2192.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 19.0 -1644279296 15601 NULL NULL -1644279315 1644279296 -19.0 -3288558611 1.0 -15601.0 NULL -1.644294897E9 -0.07310526315789474 -11901.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 19.0 -1332687894 15601 NULL NULL -1332687913 1332687894 -19.0 -2665375807 1.0 -15601.0 NULL -1.332703495E9 -0.07310526315789474 -3671.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 19.0 -631397801 15601 NULL NULL -631397820 631397801 -19.0 -1262795621 1.0 -15601.0 NULL -6.31413402E8 -0.07310526315789474 -9730.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 19.0 -408304573 15601 NULL NULL -408304592 408304573 -19.0 -816609165 1.0 -15601.0 NULL -4.08320174E8 -0.07310526315789474 -10802.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 20.0 -2050820665 15601 NULL NULL -2050820685 2050820665 -20.0 -4101641350 1.0 -15601.0 NULL -2.050836266E9 -0.06945 -6811.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 20.0 -1972968987 15601 NULL NULL -1972969007 1972968987 -20.0 -3945937994 1.0 -15601.0 NULL -1.972984588E9 -0.06945 -4123.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 20.0 -1644694994 15601 NULL NULL -1644695014 1644694994 -20.0 -3289390008 1.0 -15601.0 NULL -1.644710595E9 -0.06945 -6372.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 20.0 -1195710741 15601 NULL NULL -1195710761 1195710741 -20.0 -2391421502 1.0 -15601.0 NULL -1.195726342E9 -0.06945 -3298.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 20.0 -368721894 15601 NULL NULL -368721914 368721894 -20.0 -737443808 1.0 -15601.0 NULL -3.68737495E8 -0.06945 -7860.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 20.0 -362433250 15601 NULL NULL -362433270 362433250 -20.0 -724866520 1.0 -15601.0 NULL -3.62448851E8 -0.06945 -6419.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 20.0 -89010 15601 NULL NULL -89030 89010 -20.0 -178040 1.0 -15601.0 NULL -104611.0 -0.06945 -11005.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 21.0 -893636289 15601 NULL NULL -893636310 893636289 -21.0 -1787272599 1.0 -15601.0 NULL -8.9365189E8 -0.06614285714285714 -11009.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 22.0 -1875861804 15601 NULL NULL -1875861826 1875861804 -22.0 -3751723630 1.0 -15601.0 NULL -1.875877405E9 -0.06313636363636364 -13165.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 22.0 -1433781206 15601 NULL NULL -1433781228 1433781206 -22.0 -2867562434 1.0 -15601.0 NULL -1.433796807E9 -0.06313636363636364 -2503.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 22.0 -490232669 15601 NULL NULL -490232691 490232669 -22.0 -980465360 1.0 -15601.0 NULL -4.9024827E8 -0.06313636363636364 -2446.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 23.0 -1167276678 15601 NULL NULL -1167276701 1167276678 -23.0 -2334553379 1.0 -15601.0 NULL -1.167292279E9 -0.06039130434782609 -9858.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 23.0 -996165688 15601 NULL NULL -996165711 996165688 -23.0 -1992331399 1.0 -15601.0 NULL -9.96181289E8 -0.06039130434782609 -10636.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 24.0 -1740312484 15601 NULL NULL -1740312508 1740312484 -24.0 -3480624992 1.0 -15601.0 NULL -1.740328085E9 -0.057875 -5333.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 24.0 -1278926860 15601 NULL NULL -1278926884 1278926860 -24.0 -2557853744 1.0 -15601.0 NULL -1.278942461E9 -0.057875 -3683.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 24.0 -404751232 15601 NULL NULL -404751256 404751232 -24.0 -809502488 1.0 -15601.0 NULL -4.04766833E8 -0.057875 -14489.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 25.0 -2030132877 15601 NULL NULL -2030132902 2030132877 -25.0 -4060265779 1.0 -15601.0 NULL -2.030148478E9 -0.05556 -5949.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 25.0 -1178735095 15601 NULL NULL -1178735120 1178735095 -25.0 -2357470215 1.0 -15601.0 NULL -1.178750696E9 -0.05556 -1540.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 25.0 -765146525 15601 NULL NULL -765146550 765146525 -25.0 -1530293075 1.0 -15601.0 NULL -7.65162126E8 -0.05556 -11081.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 26.0 -2141336536 15601 NULL NULL -2141336562 2141336536 -26.0 -4282673098 1.0 -15601.0 NULL -2.141352137E9 -0.05342307692307692 -5680.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 26.0 -692950740 15601 NULL NULL -692950766 692950740 -26.0 -1385901506 1.0 -15601.0 NULL -6.92966341E8 -0.05342307692307692 -1123.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 26.0 -51344670 15601 NULL NULL -51344696 51344670 -26.0 -102689366 1.0 -15601.0 NULL -5.1360271E7 -0.05342307692307692 -1779.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 27.0 -2043827141 15601 NULL NULL -2043827168 2043827141 -27.0 -4087654309 1.0 -15601.0 NULL -2.043842742E9 -0.051444444444444445 -2535.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 27.0 -1535090489 15601 NULL NULL -1535090516 1535090489 -27.0 -3070181005 1.0 -15601.0 NULL -1.53510609E9 -0.051444444444444445 -14493.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 27.0 -67671601 15601 NULL NULL -67671628 67671601 -27.0 -135343229 1.0 -15601.0 NULL -6.7687202E7 -0.051444444444444445 -10064.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 28.0 -1852182045 15601 NULL NULL -1852182073 1852182045 -28.0 -3704364118 1.0 -15601.0 NULL -1.852197646E9 -0.04960714285714286 -123.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 28.0 -1767756774 15601 NULL NULL -1767756802 1767756774 -28.0 -3535513576 1.0 -15601.0 NULL -1.767772375E9 -0.04960714285714286 -7464.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 28.0 -1556827241 15601 NULL NULL -1556827269 1556827241 -28.0 -3113654510 1.0 -15601.0 NULL -1.556842842E9 -0.04960714285714286 -3451.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 29.0 -2052415815 15601 NULL NULL -2052415844 2052415815 -29.0 -4104831659 1.0 -15601.0 NULL -2.052431416E9 -0.04789655172413793 -10659.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 29.0 -508126361 15601 NULL NULL -508126390 508126361 -29.0 -1016252751 1.0 -15601.0 NULL -5.08141962E8 -0.04789655172413793 -1791.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 29.0 -221039350 15601 NULL NULL -221039379 221039350 -29.0 -442078729 1.0 -15601.0 NULL -2.21054951E8 -0.04789655172413793 -4382.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 30.0 -1986754040 15601 NULL NULL -1986754070 1986754040 -30.0 -3973508110 1.0 -15601.0 NULL -1.986769641E9 -0.0463 -13493.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 30.0 -1465963146 15601 NULL NULL -1465963176 1465963146 -30.0 -2931926322 1.0 -15601.0 NULL -1.465978747E9 -0.0463 -15181.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 30.0 -1399138608 15601 NULL NULL -1399138638 1399138608 -30.0 -2798277246 1.0 -15601.0 NULL -1.399154209E9 -0.0463 -9726.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 30.0 -941937506 15601 NULL NULL -941937536 941937506 -30.0 -1883875042 1.0 -15601.0 NULL -9.41953107E8 -0.0463 -11530.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 30.0 -919690155 15601 NULL NULL -919690185 919690155 -30.0 -1839380340 1.0 -15601.0 NULL -9.19705756E8 -0.0463 -11205.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 30.0 -579164639 15601 NULL NULL -579164669 579164639 -30.0 -1158329308 1.0 -15601.0 NULL -5.7918024E8 -0.0463 -8716.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 31.0 -1954992185 15601 NULL NULL -1954992216 1954992185 -31.0 -3909984401 1.0 -15601.0 NULL -1.955007786E9 -0.044806451612903225 -15274.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 31.0 -1407693136 15601 NULL NULL -1407693167 1407693136 -31.0 -2815386303 1.0 -15601.0 NULL -1.407708737E9 -0.044806451612903225 -14906.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 31.0 -810446066 15601 NULL NULL -810446097 810446066 -31.0 -1620892163 1.0 -15601.0 NULL -8.10461667E8 -0.044806451612903225 -5318.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 31.0 -202495882 15601 NULL NULL -202495913 202495882 -31.0 -404991795 1.0 -15601.0 NULL -2.02511483E8 -0.044806451612903225 -10503.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 32.0 -1495050520 15601 NULL NULL -1495050552 1495050520 -32.0 -2990101072 1.0 -15601.0 NULL -1.495066121E9 -0.04340625 -6690.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 32.0 -991138235 15601 NULL NULL -991138267 991138235 -32.0 -1982276502 1.0 -15601.0 NULL -9.91153836E8 -0.04340625 -6705.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 32.0 -747159857 15601 NULL NULL -747159889 747159857 -32.0 -1494319746 1.0 -15601.0 NULL -7.47175458E8 -0.04340625 -12366.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 32.0 -537124320 15601 NULL NULL -537124352 537124320 -32.0 -1074248672 1.0 -15601.0 NULL -5.37139921E8 -0.04340625 -13092.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 33.0 -2081329290 15601 NULL NULL -2081329323 2081329290 -33.0 -4162658613 1.0 -15601.0 NULL -2.081344891E9 -0.04209090909090909 -15481.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 33.0 -667436971 15601 NULL NULL -667437004 667436971 -33.0 -1334873975 1.0 -15601.0 NULL -6.67452572E8 -0.04209090909090909 -10590.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 34.0 -1954258334 15601 NULL NULL -1954258368 1954258334 -34.0 -3908516702 1.0 -15601.0 NULL -1.954273935E9 -0.04085294117647059 -14670.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 34.0 -1175444744 15601 NULL NULL -1175444778 1175444744 -34.0 -2350889522 1.0 -15601.0 NULL -1.175460345E9 -0.04085294117647059 -3000.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 34.0 -1028809597 15601 NULL NULL -1028809631 1028809597 -34.0 -2057619228 1.0 -15601.0 NULL -1.028825198E9 -0.04085294117647059 -1652.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 34.0 -748476723 15601 NULL NULL -748476757 748476723 -34.0 -1496953480 1.0 -15601.0 NULL -7.48492324E8 -0.04085294117647059 -3147.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 34.0 -461126191 15601 NULL NULL -461126225 461126191 -34.0 -922252416 1.0 -15601.0 NULL -4.61141792E8 -0.04085294117647059 -7434.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 34.0 -303944829 15601 NULL NULL -303944863 303944829 -34.0 -607889692 1.0 -15601.0 NULL -3.0396043E8 -0.04085294117647059 -6147.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 35.0 -1198622822 15601 NULL NULL -1198622857 1198622822 -35.0 -2397245679 1.0 -15601.0 NULL -1.198638423E9 -0.03968571428571429 -13593.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 35.0 -987166521 15601 NULL NULL -987166556 987166521 -35.0 -1974333077 1.0 -15601.0 NULL -9.87182122E8 -0.03968571428571429 -13246.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 35.0 -777113949 15601 NULL NULL -777113984 777113949 -35.0 -1554227933 1.0 -15601.0 NULL -7.7712955E8 -0.03968571428571429 -12538.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 35.0 -605058422 15601 NULL NULL -605058457 605058422 -35.0 -1210116879 1.0 -15601.0 NULL -6.05074023E8 -0.03968571428571429 -4839.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 35.0 -419284856 15601 NULL NULL -419284891 419284856 -35.0 -838569747 1.0 -15601.0 NULL -4.19300457E8 -0.03968571428571429 -7981.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 35.0 -370099117 15601 NULL NULL -370099152 370099117 -35.0 -740198269 1.0 -15601.0 NULL -3.70114718E8 -0.03968571428571429 -12195.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 36.0 -1493188887 15601 NULL NULL -1493188923 1493188887 -36.0 -2986377810 1.0 -15601.0 NULL -1.493204488E9 -0.03858333333333333 -1576.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 36.0 -1300587151 15601 NULL NULL -1300587187 1300587151 -36.0 -2601174338 1.0 -15601.0 NULL -1.300602752E9 -0.03858333333333333 -9786.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 38.0 -440412114 15601 NULL NULL -440412152 440412114 -38.0 -880824266 1.0 -15601.0 NULL -4.40427715E8 -0.03655263157894737 -11485.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 39.0 -1351910626 15601 NULL NULL -1351910665 1351910626 -39.0 -2703821291 1.0 -15601.0 NULL -1.351926227E9 -0.03561538461538462 -5971.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 39.0 -1046301933 15601 NULL NULL -1046301972 1046301933 -39.0 -2092603905 1.0 -15601.0 NULL -1.046317534E9 -0.03561538461538462 -5267.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 39.0 -484639113 15601 NULL NULL -484639152 484639113 -39.0 -969278265 1.0 -15601.0 NULL -4.84654714E8 -0.03561538461538462 -9649.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 39.0 -189542740 15601 NULL NULL -189542779 189542740 -39.0 -379085519 1.0 -15601.0 NULL -1.89558341E8 -0.03561538461538462 -6191.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 39.0 -144116978 15601 NULL NULL -144117017 144116978 -39.0 -288233995 1.0 -15601.0 NULL -1.44132579E8 -0.03561538461538462 -10541.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 40.0 -1530632114 15601 NULL NULL -1530632154 1530632114 -40.0 -3061264268 1.0 -15601.0 NULL -1.530647715E9 -0.034725 -2403.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 40.0 -912039001 15601 NULL NULL -912039041 912039001 -40.0 -1824078042 1.0 -15601.0 NULL -9.12054602E8 -0.034725 -4541.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 40.0 -515857483 15601 NULL NULL -515857523 515857483 -40.0 -1031715006 1.0 -15601.0 NULL -5.15873084E8 -0.034725 -10418.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 40.0 -487954385 15601 NULL NULL -487954425 487954385 -40.0 -975908810 1.0 -15601.0 NULL -4.87969986E8 -0.034725 -1908.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 41.0 -1730738390 15601 NULL NULL -1730738431 1730738390 -41.0 -3461476821 1.0 -15601.0 NULL -1.730753991E9 -0.03387804878048781 -10253.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 41.0 -338704173 15601 NULL NULL -338704214 338704173 -41.0 -677408387 1.0 -15601.0 NULL -3.38719774E8 -0.03387804878048781 -6463.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 41.0 -185407727 15601 NULL NULL -185407768 185407727 -41.0 -370815495 1.0 -15601.0 NULL -1.85423328E8 -0.03387804878048781 -5443.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 42.0 -1253747722 15601 NULL NULL -1253747764 1253747722 -42.0 -2507495486 1.0 -15601.0 NULL -1.253763323E9 -0.03307142857142857 -4559.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 42.0 -1127028116 15601 NULL NULL -1127028158 1127028116 -42.0 -2254056274 1.0 -15601.0 NULL -1.127043717E9 -0.03307142857142857 -11876.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 42.0 -658899077 15601 NULL NULL -658899119 658899077 -42.0 -1317798196 1.0 -15601.0 NULL -6.58914678E8 -0.03307142857142857 -6443.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 42.0 -122247742 15601 NULL NULL -122247784 122247742 -42.0 -244495526 1.0 -15601.0 NULL -1.22263343E8 -0.03307142857142857 -13907.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 42.0 -30310351 15601 NULL NULL -30310393 30310351 -42.0 -60620744 1.0 -15601.0 NULL -3.0325952E7 -0.03307142857142857 -13209.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 42.0 -27952228 15601 NULL NULL -27952270 27952228 -42.0 -55904498 1.0 -15601.0 NULL -2.7967829E7 -0.03307142857142857 -10837.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 44.0 -2098300466 15601 NULL NULL -2098300510 2098300466 -44.0 -4196600976 1.0 -15601.0 NULL -2.098316067E9 -0.03156818181818182 -12769.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 44.0 -1144200805 15601 NULL NULL -1144200849 1144200805 -44.0 -2288401654 1.0 -15601.0 NULL -1.144216406E9 -0.03156818181818182 -7864.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 44.0 -1109093265 15601 NULL NULL -1109093309 1109093265 -44.0 -2218186574 1.0 -15601.0 NULL -1.109108866E9 -0.03156818181818182 -2574.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 44.0 -780348314 15601 NULL NULL -780348358 780348314 -44.0 -1560696672 1.0 -15601.0 NULL -7.80363915E8 -0.03156818181818182 -1895.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 45.0 -689749024 15601 NULL NULL -689749069 689749024 -45.0 -1379498093 1.0 -15601.0 NULL -6.89764625E8 -0.030866666666666667 -13213.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 45.0 -223953421 15601 NULL NULL -223953466 223953421 -45.0 -447906887 1.0 -15601.0 NULL -2.23969022E8 -0.030866666666666667 -1066.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 45.0 -195941743 15601 NULL NULL -195941788 195941743 -45.0 -391883531 1.0 -15601.0 NULL -1.95957344E8 -0.030866666666666667 -8784.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 46.0 -1996378319 15601 NULL NULL -1996378365 1996378319 -46.0 -3992756684 1.0 -15601.0 NULL -1.99639392E9 -0.030195652173913044 -11955.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 46.0 -1721221449 15601 NULL NULL -1721221495 1721221449 -46.0 -3442442944 1.0 -15601.0 NULL -1.72123705E9 -0.030195652173913044 -9922.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 46.0 -1116090298 15601 NULL NULL -1116090344 1116090298 -46.0 -2232180642 1.0 -15601.0 NULL -1.116105899E9 -0.030195652173913044 -10359.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 46.0 -1063470233 15601 NULL NULL -1063470279 1063470233 -46.0 -2126940512 1.0 -15601.0 NULL -1.063485834E9 -0.030195652173913044 -12467.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 46.0 -645509327 15601 NULL NULL -645509373 645509327 -46.0 -1291018700 1.0 -15601.0 NULL -6.45524928E8 -0.030195652173913044 -2351.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 46.0 -591161051 15601 NULL NULL -591161097 591161051 -46.0 -1182322148 1.0 -15601.0 NULL -5.91176652E8 -0.030195652173913044 -7959.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 47.0 -1230441185 15601 NULL NULL -1230441232 1230441185 -47.0 -2460882417 1.0 -15601.0 NULL -1.230456786E9 -0.029553191489361703 -5916.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 47.0 -1220505630 15601 NULL NULL -1220505677 1220505630 -47.0 -2441011307 1.0 -15601.0 NULL -1.220521231E9 -0.029553191489361703 -8198.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 47.0 -1045079067 15601 NULL NULL -1045079114 1045079067 -47.0 -2090158181 1.0 -15601.0 NULL -1.045094668E9 -0.029553191489361703 -14880.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 47.0 -1019007115 15601 NULL NULL -1019007162 1019007115 -47.0 -2038014277 1.0 -15601.0 NULL -1.019022716E9 -0.029553191489361703 -12199.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 48.0 -795361000 15601 NULL NULL -795361048 795361000 -48.0 -1590722048 1.0 -15601.0 NULL -7.95376601E8 -0.0289375 -6419.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 48.0 -505179873 15601 NULL NULL -505179921 505179873 -48.0 -1010359794 1.0 -15601.0 NULL -5.05195474E8 -0.0289375 -3892.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -1506320791 15601 NULL NULL -1506320840 1506320791 -49.0 -3012641631 1.0 -15601.0 NULL -1.506336392E9 -0.028346938775510203 -13039.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -1259043484 15601 NULL NULL -1259043533 1259043484 -49.0 -2518087017 1.0 -15601.0 NULL -1.259059085E9 -0.028346938775510203 -11582.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -1107321329 15601 NULL NULL -1107321378 1107321329 -49.0 -2214642707 1.0 -15601.0 NULL -1.10733693E9 -0.028346938775510203 -9152.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 49.0 -839522912 15601 NULL NULL -839522961 839522912 -49.0 -1679045873 1.0 -15601.0 NULL -8.39538513E8 -0.028346938775510203 -1900.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -343392629 15601 NULL NULL -343392678 343392629 -49.0 -686785307 1.0 -15601.0 NULL -3.4340823E8 -0.028346938775510203 -14619.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -170140038 15601 NULL NULL -170140087 170140038 -49.0 -340280125 1.0 -15601.0 NULL -1.70155639E8 -0.028346938775510203 -11133.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 49.0 -128270777 15601 NULL NULL -128270826 128270777 -49.0 -256541603 1.0 -15601.0 NULL -1.28286378E8 -0.028346938775510203 -14956.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 51.0 -2103985381 15601 NULL NULL -2103985432 2103985381 -51.0 -4207970813 1.0 -15601.0 NULL -2.104000982E9 -0.02723529411764706 -3319.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 51.0 -2040027963 15601 NULL NULL -2040028014 2040027963 -51.0 -4080055977 1.0 -15601.0 NULL -2.040043564E9 -0.02723529411764706 -10001.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 51.0 -232545302 15601 NULL NULL -232545353 232545302 -51.0 -465090655 1.0 -15601.0 NULL -2.32560903E8 -0.02723529411764706 -12397.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 52.0 -2125793790 15601 NULL NULL -2125793842 2125793790 -52.0 -4251587632 1.0 -15601.0 NULL -2.125809391E9 -0.02671153846153846 -1530.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 52.0 -1927777662 15601 NULL NULL -1927777714 1927777662 -52.0 -3855555376 1.0 -15601.0 NULL -1.927793263E9 -0.02671153846153846 -8895.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 52.0 -1846410950 15601 NULL NULL -1846411002 1846410950 -52.0 -3692821952 1.0 -15601.0 NULL -1.846426551E9 -0.02671153846153846 -1398.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 52.0 -1214834730 15601 NULL NULL -1214834782 1214834730 -52.0 -2429669512 1.0 -15601.0 NULL -1.214850331E9 -0.02671153846153846 -461.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 52.0 -746546766 15601 NULL NULL -746546818 746546766 -52.0 -1493093584 1.0 -15601.0 NULL -7.46562367E8 -0.02671153846153846 -7714.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 53.0 -1283930255 15601 NULL NULL -1283930308 1283930255 -53.0 -2567860563 1.0 -15601.0 NULL -1.283945856E9 -0.026207547169811322 -14758.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 53.0 -1231026402 15601 NULL NULL -1231026455 1231026402 -53.0 -2462052857 1.0 -15601.0 NULL -1.231042003E9 -0.026207547169811322 -13896.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 53.0 -782857402 15601 NULL NULL -782857455 782857402 -53.0 -1565714857 1.0 -15601.0 NULL -7.82873003E8 -0.026207547169811322 -14823.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 54.0 -1735553309 15601 NULL NULL -1735553363 1735553309 -54.0 -3471106672 1.0 -15601.0 NULL -1.73556891E9 -0.025722222222222223 -4463.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 54.0 -1711666077 15601 NULL NULL -1711666131 1711666077 -54.0 -3423332208 1.0 -15601.0 NULL -1.711681678E9 -0.025722222222222223 -2362.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 54.0 -1676223874 15601 NULL NULL -1676223928 1676223874 -54.0 -3352447802 1.0 -15601.0 NULL -1.676239475E9 -0.025722222222222223 -5631.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 54.0 -1479988050 15601 NULL NULL -1479988104 1479988050 -54.0 -2959976154 1.0 -15601.0 NULL -1.480003651E9 -0.025722222222222223 -14786.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 54.0 -83357142 15601 NULL NULL -83357196 83357142 -54.0 -166714338 1.0 -15601.0 NULL -8.3372743E7 -0.025722222222222223 -999.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 55.0 -1559932440 15601 NULL NULL -1559932495 1559932440 -55.0 -3119864935 1.0 -15601.0 NULL -1.559948041E9 -0.025254545454545453 -4051.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 55.0 -1224290649 15601 NULL NULL -1224290704 1224290649 -55.0 -2448581353 1.0 -15601.0 NULL -1.22430625E9 -0.025254545454545453 -2174.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 55.0 -1044215393 15601 NULL NULL -1044215448 1044215393 -55.0 -2088430841 1.0 -15601.0 NULL -1.044230994E9 -0.025254545454545453 -9261.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 55.0 -819636483 15601 NULL NULL -819636538 819636483 -55.0 -1639273021 1.0 -15601.0 NULL -8.19652084E8 -0.025254545454545453 -6746.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 55.0 -486340511 15601 NULL NULL -486340566 486340511 -55.0 -972681077 1.0 -15601.0 NULL -4.86356112E8 -0.025254545454545453 -10538.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 56.0 -1971224972 15601 NULL NULL -1971225028 1971224972 -56.0 -3942450000 1.0 -15601.0 NULL -1.971240573E9 -0.02480357142857143 -7420.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 56.0 -1378117091 15601 NULL NULL -1378117147 1378117091 -56.0 -2756234238 1.0 -15601.0 NULL -1.378132692E9 -0.02480357142857143 -2756.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 56.0 -1061994141 15601 NULL NULL -1061994197 1061994141 -56.0 -2123988338 1.0 -15601.0 NULL -1.062009742E9 -0.02480357142857143 -2869.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 56.0 -85144619 15601 NULL NULL -85144675 85144619 -56.0 -170289294 1.0 -15601.0 NULL -8.516022E7 -0.02480357142857143 -9962.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 57.0 -1465657206 15601 NULL NULL -1465657263 1465657206 -57.0 -2931314469 1.0 -15601.0 NULL -1.465672807E9 -0.02436842105263158 -5660.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 57.0 -1393938237 15601 NULL NULL -1393938294 1393938237 -57.0 -2787876531 1.0 -15601.0 NULL -1.393953838E9 -0.02436842105263158 -4488.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 57.0 -865531893 15601 NULL NULL -865531950 865531893 -57.0 -1731063843 1.0 -15601.0 NULL -8.65547494E8 -0.02436842105263158 -4014.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 58.0 -2101713482 15601 NULL NULL -2101713540 2101713482 -58.0 -4203427022 1.0 -15601.0 NULL -2.101729083E9 -0.023948275862068966 -9166.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 58.0 -1624506701 15601 NULL NULL -1624506759 1624506701 -58.0 -3249013460 1.0 -15601.0 NULL -1.624522302E9 -0.023948275862068966 -5773.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 58.0 -1384901601 15601 NULL NULL -1384901659 1384901601 -58.0 -2769803260 1.0 -15601.0 NULL -1.384917202E9 -0.023948275862068966 -831.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 58.0 1575089695 15601 NULL NULL 1575089637 -1575089695 -58.0 3150179332 1.0 -15601.0 NULL 1.575074094E9 -0.023948275862068966 12735.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 59.0 -1374485693 15601 NULL NULL -1374485752 1374485693 -59.0 -2748971445 1.0 -15601.0 NULL -1.374501294E9 -0.02354237288135593 -6391.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 60.0 -1141582332 15601 NULL NULL -1141582392 1141582332 -60.0 -2283164724 1.0 -15601.0 NULL -1.141597933E9 -0.02315 -10359.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 60.0 -977722732 15601 NULL NULL -977722792 977722732 -60.0 -1955445524 1.0 -15601.0 NULL -9.77738333E8 -0.02315 -8062.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 60.0 -657503893 15601 NULL NULL -657503953 657503893 -60.0 -1315007846 1.0 -15601.0 NULL -6.57519494E8 -0.02315 -15349.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 60.0 -640286718 15601 NULL NULL -640286778 640286718 -60.0 -1280573496 1.0 -15601.0 NULL -6.40302319E8 -0.02315 -6077.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 61.0 -1377611623 15601 NULL NULL -1377611684 1377611623 -61.0 -2755223307 1.0 -15601.0 NULL -1.377627224E9 -0.02277049180327869 -12121.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 61.0 -155636656 15601 NULL NULL -155636717 155636656 -61.0 -311273373 1.0 -15601.0 NULL -1.55652257E8 -0.02277049180327869 -1080.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 62.0 -1838132825 15601 NULL NULL -1838132887 1838132825 -62.0 -3676265712 1.0 -15601.0 NULL -1.838148426E9 -0.022403225806451613 -7404.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 62.0 -1488190636 15601 NULL NULL -1488190698 1488190636 -62.0 -2976381334 1.0 -15601.0 NULL -1.488206237E9 -0.022403225806451613 -11246.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 62.0 -1423925704 15601 NULL NULL -1423925766 1423925704 -62.0 -2847851470 1.0 -15601.0 NULL -1.423941305E9 -0.022403225806451613 -6833.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 62.0 -310826420 15601 NULL NULL -310826482 310826420 -62.0 -621652902 1.0 -15601.0 NULL -3.10842021E8 -0.022403225806451613 -7697.0 -15601 NULL -NULL NULL true 1969-12-31 15:59:58.456 15601.0 62.0 -120943153 15601 NULL NULL -120943215 120943153 -62.0 -241886368 1.0 -15601.0 NULL -1.20958754E8 -0.022403225806451613 -4201.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 79.553 -1823591768 15601 NULL NULL -1823591801 1823591768 -79.553 -3647183569 1.0 -15601.0 NULL -1.823607369E9 -0.04209090909090909 -6479.0 -15601 NULL -NULL NULL false 1969-12-31 15:59:58.456 15601.0 79.553 -1452617198 15601 NULL NULL -1452617231 1452617198 -79.553 -2905234429 1.0 -15601.0 NULL -1.452632799E9 -0.04209090909090909 -8088.0 -15601 NULL -526337887 t0346137k7Lk0O true 1969-12-31 15:59:51.609 15044.0 NULL 1864027286 15044 false 526352931 NULL -1864027286 NULL NULL 1.0 -15044.0 -981136225450075266 1.864012242E9 NULL 466.0 -15044 526367975 --367195514 t5805L0xlU0YM true 1969-12-31 15:59:43.799 -13339.0 NULL 1864027286 -13339 false -367208853 NULL -1864027286 NULL NULL 1.0 13339.0 684487321652762958 1.864040625E9 NULL 8748.0 13339 -367222192 --380733719 t7s5did true NULL -2120.0 NULL 1864027286 -2120 false -380735839 NULL -1864027286 NULL NULL 1.0 2120.0 709701992654102954 1.864029406E9 NULL 326.0 2120 -380737959 --104148943 tEO4vj3G true 1969-12-31 15:59:44.53 2248.0 NULL 1864027286 2248 false -104146695 NULL -1864027286 NULL NULL 1.0 -2248.0 194132281226719770 1.864025038E9 NULL 1422.0 -2248 -104144447 --487903609 tINcSR1MT3f2P4 true 1969-12-31 16:00:12.099 -9147.0 NULL 1864027286 -9147 false -487912756 NULL -1864027286 NULL NULL 1.0 9147.0 909482690371460216 1.864036433E9 NULL 5891.0 9147 -487921903 -336056067 tJ7bf true 1969-12-31 15:59:50.481 16124.0 NULL 1864027286 16124 false 336072191 NULL -1864027286 NULL NULL 1.0 -16124.0 -626447734089803626 1.864011162E9 NULL 12266.0 -16124 336088315 --459571311 taArL704d542R82qw8 true 1969-12-31 16:00:00.738 -13901.0 NULL 1864027286 -13901 false -459585212 NULL -1864027286 NULL NULL 1.0 13901.0 856679375410094632 1.864041187E9 NULL 493.0 13901 -459599113 -223484391 tca24E6L true 1969-12-31 16:00:02.505 -12721.0 NULL 1864027286 -12721 false 223471670 NULL -1864027286 NULL NULL 1.0 12721.0 -416557290527987620 1.864040007E9 NULL 6435.0 12721 223458949 -252479879 tdUWi true 1969-12-31 16:00:01.806 -877.0 NULL 1864027286 -877 false 252479002 NULL -1864027286 NULL NULL 1.0 877.0 -470627748870048572 1.864028163E9 NULL 620.0 877 252478125 -1030560824 tmS75um6Mvyb6N1oiKP7 true 1969-12-31 15:59:53.233 -11073.0 NULL 1864027286 -11073 false 1030549751 NULL -1864027286 NULL NULL 1.0 11073.0 -1920972855444505786 1.864038359E9 NULL 9539.0 11073 1030538678 -95424126 txKwQS70d20 true 1969-12-31 16:00:16.343 9766.0 NULL 1864027286 9766 false 95433892 NULL -1864027286 NULL NULL 1.0 -9766.0 -177891378697177112 1.86401752E9 NULL 632.0 -9766 95443658 -396908469 uGD31tQ70Py2E0T true 1969-12-31 15:59:50.224 16084.0 NULL 1864027286 16084 false 396924553 NULL -1864027286 NULL NULL 1.0 -16084.0 -739878197275353158 1.864011202E9 NULL 4274.0 -16084 396940637 --770958258 uXu1mj3tWs36cGpu4p3aHq true 1969-12-31 15:59:56.944 8059.0 NULL 1864027286 8059 false -770950199 NULL -1864027286 NULL NULL 1.0 -8059.0 1437072207083129914 1.864019227E9 NULL 4763.0 -8059 -770942140 --933664265 ue8IUf0GlY18RT325P2tu true 1969-12-31 16:00:02.456 13750.0 NULL 1864027286 13750 false -933650515 NULL -1864027286 NULL NULL 1.0 -13750.0 1740350035547952290 1.864013536E9 NULL 8536.0 -13750 -933636765 --518918140 ugq0uAy0qXj2D0fX true 1969-12-31 16:00:12.479 5245.0 NULL 1864027286 5245 false -518912895 NULL -1864027286 NULL NULL 1.0 -5245.0 967267795337252970 1.864022041E9 NULL 1491.0 -5245 -518907650 --360475292 uq2hp true 1969-12-31 16:00:10.933 -1007.0 NULL 1864027286 -1007 false -360476299 NULL -1864027286 NULL NULL 1.0 1007.0 671937657292294514 1.864028293E9 NULL 803.0 1007 -360477306 --372506148 utfrK57P2tp0 true 1969-12-31 16:00:05.326 -12525.0 NULL 1864027286 -12525 false -372518673 NULL -1864027286 NULL NULL 1.0 12525.0 694384971016511478 1.864039811E9 NULL 6686.0 12525 -372531198 -434741484 uxI8i true 1969-12-31 16:00:12.505 8120.0 NULL 1864027286 8120 false 434749604 NULL -1864027286 NULL NULL 1.0 -8120.0 -810385124433694744 1.864019166E9 NULL 86.0 -8120 434757724 --198739996 uxnt0fsrBtPD807 true 1969-12-31 16:00:11.528 -14709.0 NULL 1864027286 -14709 false -198754705 NULL -1864027286 NULL NULL 1.0 14709.0 370484193340880630 1.864041995E9 NULL 14552.0 14709 -198769414 --452599200 v4L3dR650oy4O8MPhjc true 1969-12-31 15:59:46.988 8757.0 NULL 1864027286 8757 false -452590443 NULL -1864027286 NULL NULL 1.0 -8757.0 843640935134827698 1.864018529E9 NULL 3509.0 -8757 -452581686 --601825532 v4gQqo0bxX256o7EEN42lSoU true 1969-12-31 15:59:58.417 11021.0 NULL 1864027286 11021 false -601814511 NULL -1864027286 NULL NULL 1.0 -11021.0 1121798669614747146 1.864016265E9 NULL 1472.0 -11021 -601803490 --758062600 vA0bEQqO50LlKcj7AAR56P63 true 1969-12-31 16:00:16.169 7111.0 NULL 1864027286 7111 false -758055489 NULL -1864027286 NULL NULL 1.0 -7111.0 1413036115798072854 1.864020175E9 NULL 6634.0 -7111 -758048378 -573439687 vALXyM54AgSH4e0O4IN true 1969-12-31 16:00:10.069 -150.0 NULL 1864027286 -150 false 573439537 NULL -1864027286 NULL NULL 1.0 150.0 -1068906943839206582 1.864027436E9 NULL 86.0 150 573439387 -86487282 vH8AHgcWaDm true 1969-12-31 16:00:10.869 13309.0 NULL 1864027286 13309 false 86500591 NULL -1864027286 NULL NULL 1.0 -13309.0 -161239461879126026 1.864013977E9 NULL 8673.0 -13309 86513900 --520765672 vQalqQ true 1969-12-31 15:59:44.48 -3969.0 NULL 1864027286 -3969 false -520769641 NULL -1864027286 NULL NULL 1.0 3969.0 970728820544424326 1.864031255E9 NULL 2312.0 3969 -520773610 -245429195 vXc7m82uAg2g24 true 1969-12-31 15:59:57.185 -16001.0 NULL 1864027286 -16001 false 245413194 NULL -1864027286 NULL NULL 1.0 16001.0 -457456889960411484 1.864043287E9 NULL 6792.0 16001 245397193 --87388872 veoqj217BlDBBVkN0ei3c true 1969-12-31 16:00:03.492 10039.0 NULL 1864027286 10039 false -87378833 NULL -1864027286 NULL NULL 1.0 -10039.0 162876528930837238 1.864017247E9 NULL 5844.0 -10039 -87368794 --64947310 vvictFVSOgi true 1969-12-31 15:59:48.172 6612.0 NULL 1864027286 6612 false -64940698 NULL -1864027286 NULL NULL 1.0 -6612.0 121051233043885628 1.864020674E9 NULL 5306.0 -6612 -64934086 -773348268 vwb48kytjp0Q2YEb true 1969-12-31 15:59:44.909 12581.0 NULL 1864027286 12581 false 773360849 NULL -1864027286 NULL NULL 1.0 -12581.0 -1441565724460125814 1.864014705E9 NULL 1164.0 -12581 773373430 --532611088 wLWrtVNx188P7uXPV true 1969-12-31 16:00:04.012 -1428.0 NULL 1864027286 -1428 false -532612516 NULL -1864027286 NULL NULL 1.0 1428.0 992804262689111576 1.864028714E9 NULL 338.0 1428 -532613944 -936765787 wP0re2S74Y308jgOTc6 true 1969-12-31 15:59:50.924 -10311.0 NULL 1864027286 -10311 false 936755476 NULL -1864027286 NULL NULL 1.0 10311.0 -1746137767573918136 1.864037597E9 NULL 4706.0 10311 936745165 -236934374 wiBqE2A1x8T8gcT4 true 1969-12-31 16:00:11.324 -15101.0 NULL 1864027286 -15101 false 236919273 NULL -1864027286 NULL NULL 1.0 15101.0 -441623989451283078 1.864042387E9 NULL 5149.0 15101 236904172 -573476034 x1832l1R2m3V true 1969-12-31 15:59:49.722 -5070.0 NULL 1864027286 -5070 false 573470964 NULL -1864027286 NULL NULL 1.0 5070.0 -1068965524624723704 1.864032356E9 NULL 1226.0 5070 573465894 -605953955 x5vy367f6d81FfL8AI8XJ true 1969-12-31 16:00:01.206 11683.0 NULL 1864027286 11683 false 605965638 NULL -1864027286 NULL NULL 1.0 -11683.0 -1129536483610398468 1.864015603E9 NULL 4636.0 -11683 605977321 -2101183 x7By66525 true 1969-12-31 16:00:05.831 -8915.0 NULL 1864027286 -8915 false 2092268 NULL -1864027286 NULL NULL 1.0 8915.0 -3900044641624648 1.864036201E9 NULL 7766.0 8915 2083353 -741306115 y1uSBY0 true 1969-12-31 15:59:56.456 -16032.0 NULL 1864027286 -16032 false 741290083 NULL -1864027286 NULL NULL 1.0 16032.0 -1381784941553204738 1.864043318E9 NULL 2678.0 16032 741274051 -136715714 y2Q3YW true 1969-12-31 15:59:50.737 11813.0 NULL 1864027286 11813 false 136727527 NULL -1864027286 NULL NULL 1.0 -11813.0 -254863841075301722 1.864015473E9 NULL 6764.0 -11813 136739340 --315135285 y4jD1v2Go true 1969-12-31 15:59:43.97 -4683.0 NULL 1864027286 -4683 false -315139968 NULL -1864027286 NULL NULL 1.0 4683.0 587429499261166848 1.864031969E9 NULL 1283.0 4683 -315144651 -855072260 y7S47c5V true 1969-12-31 16:00:08.381 -11734.0 NULL 1864027286 -11734 false 855060526 NULL -1864027286 NULL NULL 1.0 11734.0 -1593856151645512436 1.86403902E9 NULL 10982.0 11734 855048792 --128417177 ygkC2e2sUm2036Sd1U8kCG62 true 1969-12-31 16:00:01.936 -8871.0 NULL 1864027286 -8871 false -128426048 NULL -1864027286 NULL NULL 1.0 8871.0 239389657705145728 1.864036157E9 NULL 8411.0 8871 -128434919 -732924624 yxN0212hM17E8J8bJj8D7b true 1969-12-31 15:59:46.461 -6751.0 NULL 1864027286 -6751 false 732917873 NULL -1864027286 NULL NULL 1.0 6751.0 -1366178913669082678 1.864034037E9 NULL 1925.0 6751 732911122 --778541551 t66fkUkSNP78t2856Lcn true 1969-12-31 16:00:03.35 15678.0 NULL 1864027286 15678 true -778525873 NULL -1864027286 NULL NULL 1.0 -15678.0 1451193470128970678 1.864011608E9 NULL 7154.0 -15678 -778510195 -319983133 t78m7 true 1969-12-31 16:00:09.36 14512.0 NULL 1864027286 14512 true 319997645 NULL -1864027286 NULL NULL 1.0 -14512.0 -596484341735741470 1.864012774E9 NULL 4422.0 -14512 320012157 -58198060 t7Sx50XeM true 1969-12-31 16:00:07.889 7557.0 NULL 1864027286 7557 true 58205617 NULL -1864027286 NULL NULL 1.0 -7557.0 -108496858286465462 1.864019729E9 NULL 2552.0 -7557 58213174 -308450217 t7i26BC11U1YTY8I0p true 1969-12-31 15:59:46.402 1017.0 NULL 1864027286 1017 true 308451234 NULL -1864027286 NULL NULL 1.0 -1017.0 -574961516576370924 1.864026269E9 NULL 530.0 -1017 308452251 --894394703 tFtQ26aDMi1tJ026luPcu true 1969-12-31 15:59:56.928 -3178.0 NULL 1864027286 -3178 true -894397881 NULL -1864027286 NULL NULL 1.0 3178.0 1667182054724580966 1.864030464E9 NULL 3166.0 3178 -894401059 --362733967 tUi8QYP4S53YPcw true 1969-12-31 16:00:00.003 -7959.0 NULL 1864027286 -7959 true -362741926 NULL -1864027286 NULL NULL 1.0 7959.0 676160847840192836 1.864035245E9 NULL 5609.0 7959 -362749885 -426284338 u6ELlhG3 true 1969-12-31 16:00:00.64 -15070.0 NULL 1864027286 -15070 true 426269268 NULL -1864027286 NULL NULL 1.0 15070.0 -794577546735246648 1.864042356E9 NULL 3916.0 15070 426254198 --804390280 uNJPm true 1969-12-31 16:00:12.321 -10737.0 NULL 1864027286 -10737 true -804401017 NULL -1864027286 NULL NULL 1.0 10737.0 1499425444574149862 1.864038023E9 NULL 8927.0 10737 -804411754 --412772386 uO4aN4J0dKv3717r8fPG true 1969-12-31 16:00:07.824 -11809.0 NULL 1864027286 -11809 true -412784195 NULL -1864027286 NULL NULL 1.0 11809.0 769441002709544770 1.864039095E9 NULL 254.0 11809 -412796004 --719899789 umNykRkKiih6Cx6K42 true 1969-12-31 15:59:55.878 -10134.0 NULL 1864027286 -10134 true -719909923 NULL -1864027286 NULL NULL 1.0 10134.0 1341931739934158978 1.86403742E9 NULL 9728.0 10134 -719920057 --110450673 uv5m1sFX10 true 1969-12-31 16:00:16.376 -8148.0 NULL 1864027286 -8148 true -110458821 NULL -1864027286 NULL NULL 1.0 8148.0 205898256323389806 1.864035434E9 NULL 1178.0 8148 -110466969 --804959350 v2wRf43gpDUt1lfieq true 1969-12-31 16:00:08.659 -8072.0 NULL 1864027286 -8072 true -804967422 NULL -1864027286 NULL NULL 1.0 8072.0 1500481238949076692 1.864035358E9 NULL 686.0 8072 -804975494 -460817498 v3A1iI77YBRwl3I16 true 1969-12-31 16:00:08.026 7391.0 NULL 1864027286 7391 true 460824889 NULL -1864027286 NULL NULL 1.0 -7391.0 -858990167163921254 1.864019895E9 NULL 2304.0 -7391 460832280 -108023602 veIw1kh7 true 1969-12-31 16:00:14.188 9239.0 NULL 1864027286 9239 true 108032841 NULL -1864027286 NULL NULL 1.0 -9239.0 -201376163408099526 1.864018047E9 NULL 3602.0 -9239 108042080 --947255611 vgKx505VdPsHO true 1969-12-31 15:59:46.062 13661.0 NULL 1864027286 13661 true -947241950 NULL -1864027286 NULL NULL 1.0 -13661.0 1765684841243847700 1.864013625E9 NULL 11158.0 -13661 -947228289 -194353234 vtad71tYi1fs1e0tcJg0 true 1969-12-31 15:59:55.372 2960.0 NULL 1864027286 2960 true 194356194 NULL -1864027286 NULL NULL 1.0 -2960.0 -362285248819109484 1.864024326E9 NULL 2806.0 -2960 194359154 -97246854 vvK378scVFuBh8Q3HXUJsP true 1969-12-31 16:00:01.629 -9554.0 NULL 1864027286 -9554 true 97237300 NULL -1864027286 NULL NULL 1.0 9554.0 -181252980416967800 1.86403684E9 NULL 3670.0 9554 97227746 -304132102 vxAjxUq0k true 1969-12-31 16:00:03.466 -12962.0 NULL 1864027286 -12962 true 304119140 NULL -1864027286 NULL NULL 1.0 12962.0 -566886375154854040 1.864040248E9 NULL 952.0 12962 304106178 --129248849 w3OO7InLN4ic3M0h8xpvuBMn true 1969-12-31 15:59:48.413 3255.0 NULL 1864027286 3255 true -129245594 NULL -1864027286 NULL NULL 1.0 -3255.0 240917313811277884 1.864024031E9 NULL 2711.0 -3255 -129242339 -466063930 w6OUE6V3UjfE2 true 1969-12-31 15:59:56.958 14276.0 NULL 1864027286 14276 true 466078206 NULL -1864027286 NULL NULL 1.0 -14276.0 -868782493393928916 1.86401301E9 NULL 9966.0 -14276 466092482 -746145173 wEe2THv60F6 true 1969-12-31 16:00:03.372 -5589.0 NULL 1864027286 -5589 true 746139584 NULL -1864027286 NULL NULL 1.0 5589.0 -1390824543740689024 1.864032875E9 NULL 773.0 5589 746133995 --203191502 wK0N1nX22KSjcTVhDYq true 1969-12-31 15:59:49.907 -6663.0 NULL 1864027286 -6663 true -203198165 NULL -1864027286 NULL NULL 1.0 6663.0 378766924025130190 1.864033949E9 NULL 6395.0 6663 -203204828 -54908166 wLIR3B37 true 1969-12-31 16:00:05.971 8499.0 NULL 1864027286 8499 true 54916665 NULL -1864027286 NULL NULL 1.0 -8499.0 -102366162016121190 1.864018787E9 NULL 1109.0 -8499 54925164 -872474570 wT50ouOe760m3AyJ7x4p83U6 true 1969-12-31 15:59:46.57 -2856.0 NULL 1864027286 -2856 true 872471714 NULL -1864027286 NULL NULL 1.0 2856.0 -1626311081159188204 1.864030142E9 NULL 1766.0 2856 872468858 -247204221 wblxBWSlwWlX7E true 1969-12-31 15:59:54.186 4502.0 NULL 1864027286 4502 true 247208723 NULL -1864027286 NULL NULL 1.0 -4502.0 -460803805009215778 1.864022784E9 NULL 1198.0 -4502 247213225 --520054643 wc4Ae163B5VxG2L true 1969-12-31 16:00:06.693 301.0 NULL 1864027286 301 true -520054342 NULL -1864027286 NULL NULL 1.0 -301.0 969395483690775812 1.864026985E9 NULL 205.0 -301 -520054041 --553779656 weQ0d24K116Y0 true 1969-12-31 16:00:12.009 11147.0 NULL 1864027286 11147 true -553768509 NULL -1864027286 NULL NULL 1.0 -11147.0 1032239610903536574 1.864016139E9 NULL 3652.0 -11147 -553757362 -200690208 wfT8d53abPxBj0L true 1969-12-31 16:00:15.522 -12052.0 NULL 1864027286 -12052 true 200678156 NULL -1864027286 NULL NULL 1.0 12052.0 -374069558488164616 1.864039338E9 NULL 4706.0 12052 200666104 -421764768 whw6kHIbH true 1969-12-31 16:00:06.463 5142.0 NULL 1864027286 5142 true 421769910 NULL -1864027286 NULL NULL 1.0 -5142.0 -786190620653764260 1.864022144E9 NULL 866.0 -5142 421775052 --370283300 x0w77gi6iqtTQ1 true 1969-12-31 15:59:44.652 1850.0 NULL 1864027286 1850 true -370281450 NULL -1864027286 NULL NULL 1.0 -1850.0 690214726299644700 1.864025436E9 NULL 586.0 -1850 -370279600 --25028803 x8n40D35c65l true 1969-12-31 15:59:43.775 -4002.0 NULL 1864027286 -4002 true -25032805 NULL -1864027286 NULL NULL 1.0 4002.0 46661831565117230 1.864031288E9 NULL 3740.0 4002 -25036807 --140351494 xh0Qhj80MAcHEMVKx true 1969-12-31 16:00:14.98 -11115.0 NULL 1864027286 -11115 true -140362609 NULL -1864027286 NULL NULL 1.0 11115.0 261639733110149174 1.864038401E9 NULL 8441.0 11115 -140373724 -773036466 xnk564ke0a7kay3aE6IC true 1969-12-31 16:00:12.369 -12066.0 NULL 1864027286 -12066 true 773024400 NULL -1864027286 NULL NULL 1.0 12066.0 -1440938574343778400 1.864039352E9 NULL 11276.0 12066 773012334 -336043289 xow6f03825H0h8mFjVr true 1969-12-31 15:59:51.587 -97.0 NULL 1864027286 -97 true 336043192 NULL -1864027286 NULL NULL 1.0 97.0 -626393679162536912 1.864027383E9 NULL 14.0 97 336043095 --581868488 xqa4i5EAo4CbOQjD true 1969-12-31 16:00:14.891 15218.0 NULL 1864027286 15218 true -581853270 NULL -1864027286 NULL NULL 1.0 -15218.0 1084590371728325220 1.864012068E9 NULL 4902.0 -15218 -581838052 --694015335 y3XV0j2p80 true 1969-12-31 15:59:52.848 9540.0 NULL 1864027286 9540 true -694005795 NULL -1864027286 NULL NULL 1.0 -9540.0 1293645738522122370 1.864017746E9 NULL 6686.0 -9540 -693996255 -35949208 yF6U2FcHNa8 true 1969-12-31 15:59:54.285 6775.0 NULL 1864027286 6775 true 35955983 NULL -1864027286 NULL NULL 1.0 -6775.0 -67022933406952138 1.864020511E9 NULL 1211.0 -6775 35962758 --871616990 yfR36R70W0G1KV4dmi1 true 1969-12-31 15:59:52.407 -15590.0 NULL 1864027286 -15590 true -871632580 NULL -1864027286 NULL NULL 1.0 15590.0 1624746912486577880 1.864042876E9 NULL 8936.0 15590 -871648170 -1036977737 yvNv1q true 1969-12-31 15:59:46.839 7408.0 NULL 1864027286 7408 true 1036985145 NULL -1864027286 NULL NULL 1.0 -7408.0 -1932968605456666470 1.864019878E9 NULL 4102.0 -7408 1036992553 WARNING: Comparing a bigint and a double may result in a loss of precision. PREHOOK: query: -- TargetTypeClasses: Long, String, Double, Timestamp -- Functions: Avg, Min, StDevP, Sum, Var @@ -3208,6 +1544,7 @@ WHERE (((-1.389 >= cint) OR ((cstring1 LIKE 'ss%') AND (10.175 > cbigint))) ORDER BY csmallint, cstring2, cdouble +LIMIT 45 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: Long, String, Double, Timestamp -- Functions: Avg, Min, StDevP, Sum, Var @@ -3239,6 +1576,7 @@ WHERE (((-1.389 >= cint) OR ((cstring1 LIKE 'ss%') AND (10.175 > cbigint))) ORDER BY csmallint, cstring2, cdouble +LIMIT 45 POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage @@ -3269,17 +1607,20 @@ STAGE PLANS: expressions: VALUE._col0 (type: timestamp), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: double), VALUE._col1 (type: float), VALUE._col2 (type: bigint), KEY.reducesinkkey0 (type: smallint), VALUE._col3 (type: double), VALUE._col4 (type: int), VALUE._col5 (type: float), VALUE._col6 (type: double), VALUE._col7 (type: double), VALUE._col8 (type: double), VALUE._col9 (type: float), VALUE._col10 (type: int), VALUE._col6 (type: double), VALUE._col11 (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15 Statistics: Num rows: 3868 Data size: 118746 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 3868 Data size: 118746 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Limit + Number of rows: 45 + Statistics: Num rows: 45 Data size: 1350 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 45 Data size: 1350 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Stage: Stage-0 Fetch Operator - limit: -1 + limit: 45 Processor Tree: ListSink @@ -3309,6 +1650,7 @@ WHERE (((-1.389 >= cint) OR ((cstring1 LIKE 'ss%') AND (10.175 > cbigint))) ORDER BY csmallint, cstring2, cdouble +LIMIT 45 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -3337,6 +1679,7 @@ WHERE (((-1.389 >= cint) OR ((cstring1 LIKE 'ss%') AND (10.175 > cbigint))) ORDER BY csmallint, cstring2, cdouble +LIMIT 45 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -3385,630 +1728,6 @@ NULL 4hA4KQj2vD3fI6gX82220d 12329.0 NULL -1887561756 12329 -528876.9279910339 -1 1969-12-31 15:59:46.351 155506i0h358vma3m1tGku 15601.0 -57.0 1328883886 15601 372340.6797422247 -15858 366624.0 -15601.0 158740.17500000002 -6432.0 57.0 NULL -15601.0 -2.43391201E8 1969-12-31 16:00:15.522 1618frAK6kL 15601.0 -44.0 1296727292 15601 363330.70664051553 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 1969-12-31 15:59:52.617 16NIx33qB1Thp5q 15601.0 -9.0 1660201497 15601 465172.7366209022 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.488 16jmamsEtKc51n 15601.0 1.0 -832606494 15601 -233288.45446903896 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.419 17i12pGg4fpDVOekj5 15601.0 59.0 -1374485693 15601 -385117.87419445225 -15858 -379488.0 -15601.0 158740.17500000002 -6432.0 -59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.284 17r8lCoU7J3mt47of258 15601.0 59.0 1841882240 15601 516077.9602129448 -15858 -379488.0 -15601.0 158740.17500000002 -6432.0 -59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.883 18032Ok80Rh3ICJd2QqF 15601.0 1.0 -2136727102 15601 -598690.6982347997 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.545 1812MP27X 15601.0 -25.0 882926601 15601 247387.6718968899 -15858 160800.0 -15601.0 158740.17500000002 -6432.0 25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.183 18QAI3 15601.0 0.0 1638241933 15601 459019.8747548333 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.863 1Ewed8Vw3iVfeeaXWE2g7 15601.0 -6.0 -786134704 15601 -220267.49901933313 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.578 1G71L 15601.0 -64.0 -1809291815 15601 -506946.43177360605 -15858 411648.0 -15601.0 158740.17500000002 -6432.0 64.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.691 1GMeP 15601.0 60.0 1480022657 15601 414688.33202577755 -15858 -385920.0 -15601.0 158740.17500000002 -6432.0 -60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.898 1GsrLIbvD7J7l7eyJ7 15601.0 -44.0 -772919195 15601 -216564.63855421686 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.839 1Ic5OYcpB 15601.0 -2.0 -430689331 15601 -120675.07172877557 -15858 12864.0 -15601.0 158740.17500000002 -6432.0 2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.539 1J2G60o 15601.0 -23.0 -1864716928 15601 -522476.0235360045 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.528 1L2401UOQ236aqX6dCr404H 15601.0 -41.0 NULL 15601 NULL -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.571 1NuHbq7wu 15601.0 -42.0 -1434650528 15601 -401975.49117399834 -15858 270144.0 -15601.0 158740.17500000002 -6432.0 42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.377 1Rnl53uFEkUaP567 15601.0 -44.0 -429050254 15601 -120215.81787615578 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.326 1TWVYbo8A06jVpsj 15601.0 -28.0 -1297431786 15601 -363528.09918744746 -15858 180096.0 -15601.0 158740.17500000002 -6432.0 28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.27 1a8dVp 15601.0 15.0 2106881426 15601 590328.2224712805 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.237 1af7dEq0egH 15601.0 -4.0 996077543 15601 279091.49425609416 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.206 1bQgOIC5M1mYO 15601.0 44.0 970663654 15601 271970.7632390025 -15858 -283008.0 -15601.0 158740.17500000002 -6432.0 -44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.31 1cySK1D066 15601.0 25.0 492608996 15601 138024.3754553096 -15858 -160800.0 -15601.0 158740.17500000002 -6432.0 -25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.207 1geCYToEJ2C 15601.0 -48.0 -652336471 15601 -182778.5012608574 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.214 1mwmV 15601.0 60.0 -640286718 15601 -179402.27458671897 -15858 -385920.0 -15601.0 158740.17500000002 -6432.0 -60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.869 1r31LS0 15601.0 16.0 908699526 15601 254609.00140095263 -15858 -102912.0 -15601.0 158740.17500000002 -6432.0 -16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.503 1sHwG4L77O4cr560Mb438A 15601.0 49.0 -343392629 15601 -96215.36256654526 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.224 1t0CR 15601.0 -21.0 1890350821 15601 529658.3975903614 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.894 1tIN2rwDJ0 15601.0 -6.0 -1207674957 15601 -338379.08573830203 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.264 1ydwoKOeCAx7c15W08 15601.0 40.0 2088429109 15601 585158.0579994397 -15858 -257280.0 -15601.0 158740.17500000002 -6432.0 -40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.821 203NY247Byl0uo 15601.0 34.0 1736691817 15601 486604.5998879238 -15858 -218688.0 -15601.0 158740.17500000002 -6432.0 -34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.935 23EpSjnhU1fkij33yNA763AK 15601.0 -19.0 897944388 15601 251595.5135892407 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.154 23HjoS18rjHCx771 15601.0 18.0 -996134600 15601 -279107.4810871393 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.281 23Uv26RhfxYCNyIQS1HJn 15601.0 -23.0 1273456471 15601 356810.44298122724 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.641 23fHhEiKL5D3voA 15601.0 -33.0 -1465766070 15601 -410693.7713645279 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.64 24Brw6 15601.0 7.0 1621296717 15601 454271.985710283 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.723 25EMXg12 15601.0 47.0 1447975413 15601 405708.9977584758 -15858 -302304.0 -15601.0 158740.17500000002 -6432.0 -47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.747 260x8Lpv5ILXWEPxlog248di 15601.0 22.0 1846338753 15601 517326.6329504063 -15858 -141504.0 -15601.0 158740.17500000002 -6432.0 -22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.911 268awl0F5A 15601.0 -39.0 -176425309 15601 -49432.70075651443 -15858 250848.0 -15601.0 158740.17500000002 -6432.0 39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.692 26VAMx7 15601.0 -30.0 1563934122 15601 438199.5298402914 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.459 27iT5rw 15601.0 18.0 -62733813 15601 -17577.420285794342 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.066 28412JHar2yEWJ4rsg 15601.0 -63.0 2059199534 15601 576968.2079013729 -15858 405216.0 -15601.0 158740.17500000002 -6432.0 63.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.241 28ao0HxkN7J72QNhcY 15601.0 2.0 419546737 15601 117553.02241524236 -15858 -12864.0 -15601.0 158740.17500000002 -6432.0 -2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.561 28j21KA5BLfXk8IrHe 15601.0 -33.0 -226993201 15601 -63601.34519473242 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.435 2C1n0DNS8X 15601.0 -26.0 -354697170 15601 -99382.78789576913 -15858 167232.0 -15601.0 158740.17500000002 -6432.0 26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.638 2EgCJP76SeDBsFg6w 15601.0 -33.0 570984089 15601 159984.33426730178 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.553 2FlOO88n5i2I 15601.0 29.0 1674587606 15601 469203.58811992157 -15858 -186528.0 -15601.0 158740.17500000002 -6432.0 -29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.476 2IDKgpJH461h554ubuHe2 15601.0 -55.0 996454184 15601 279197.0254973382 -15858 353760.0 -15601.0 158740.17500000002 -6432.0 55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.11 2M5wNS40c8E03s6aUlur 15601.0 -13.0 -928466576 15601 -260147.54160829363 -15858 83616.0 -15601.0 158740.17500000002 -6432.0 13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.286 2N0G8 15601.0 -47.0 -1828371599 15601 -512292.4065564584 -15858 302304.0 -15601.0 158740.17500000002 -6432.0 47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.95 2O55G 15601.0 -33.0 1958832178 15601 548846.2252731858 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.279 2On21PaPPbpDap7Q55a5Iw 15601.0 -58.0 2144274348 15601 600805.36508826 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.027 2R8parX8OGHj3vE6Hk761a6b 15601.0 62.0 -310826420 15601 -87090.61922107033 -15858 -398784.0 -15601.0 158740.17500000002 -6432.0 -62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.265 2S72XuXwWWB2bpmYpu6Y0q 15601.0 59.0 1762456014 15601 493823.48388904455 -15858 -379488.0 -15601.0 158740.17500000002 -6432.0 -59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.157 2TCJA4qtFeE58 15601.0 -45.0 -1291025659 15601 -361733.1630708882 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.446 2V30r60 15601.0 36.0 -1493188887 15601 -418377.3849817876 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.592 2V48sMwTCo8fdDnY78qDXns 15601.0 -45.0 1675482723 15601 469454.3914261698 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.696 2Y1016lg2I5NaYJ 15601.0 22.0 NULL 15601 NULL -15858 -141504.0 -15601.0 158740.17500000002 -6432.0 -22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.583 2YAbAlSe6FR66WFo 15601.0 -59.0 1364240151 15601 382247.170355842 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.864 2fqi280kgLqm40T8Pg2e47 15601.0 8.0 1990837220 15601 557813.734939759 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.108 2g0kR10R20S8bO7x233PflX 15601.0 -11.0 1810075387 15601 507165.98122723453 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.934 2hyiY02c4fV168hNxjdGqo 15601.0 28.0 -1852182045 15601 -518963.86803026055 -15858 -180096.0 -15601.0 158740.17500000002 -6432.0 -28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.102 2uXU06tULF7itEhNYy5j7k 15601.0 35.0 -987166521 15601 -276594.71028299246 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.975 2uvcn0tEsP42wySb0LWC875U 15601.0 -17.0 -590153501 15601 -165355.42196693752 -15858 109344.0 -15601.0 158740.17500000002 -6432.0 17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.698 2w0w8B85pE4jELXx 15601.0 13.0 -2108715482 15601 -590842.1075931634 -15858 -83616.0 -15601.0 158740.17500000002 -6432.0 -13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.08 2wgGraY3CIxDy8AxH3um15GE 15601.0 59.0 701594431 15601 196580.11515830766 -15858 -379488.0 -15601.0 158740.17500000002 -6432.0 -59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.39 30abVOkSw 15601.0 -57.0 -304247740 15601 -85247.33538806389 -15858 366624.0 -15601.0 158740.17500000002 -6432.0 57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.129 316f2Yg786dK8Bdk 15601.0 20.0 -362433250 15601 -101550.36424768843 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.709 31Sc0dgiT2Ag83txo7 15601.0 -8.0 -335617169 15601 -94036.75231157186 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.504 32XYGA7BOMTt27DGulBeUroc 15601.0 -50.0 -596103241 15601 -167022.48276828244 -15858 321600.0 -15601.0 158740.17500000002 -6432.0 50.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.708 32gboqrESN35shM21v4Y 15601.0 -39.0 2129132384 15601 596562.7301765201 -15858 250848.0 -15601.0 158740.17500000002 -6432.0 39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.097 32u2yKHQehN 15601.0 -5.0 -1844060558 15601 -516688.3042869151 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.729 348A6IBn 15601.0 31.0 954086950 15601 267326.1277668815 -15858 -199392.0 -15601.0 158740.17500000002 -6432.0 -31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.342 34ByCIyiD2b3RM 15601.0 26.0 1802490164 15601 505040.67357803305 -15858 -167232.0 -15601.0 158740.17500000002 -6432.0 -26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.97 3503D1bt0J1Ud74yX4716121 15601.0 -2.0 -319788030 15601 -89601.57747268143 -15858 12864.0 -15601.0 158740.17500000002 -6432.0 2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.894 35MAHX70Py67 15601.0 42.0 1267863526 15601 355243.3527598767 -15858 -270144.0 -15601.0 158740.17500000002 -6432.0 -42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.279 35V0Eq127c7Jbvs862 15601.0 28.0 440950508 15601 123550.15634631549 -15858 -180096.0 -15601.0 158740.17500000002 -6432.0 -28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.644 35kveUkKO3V1ad2 15601.0 -23.0 NULL 15601 NULL -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.524 371wKbMGY2 15601.0 -61.0 1977536065 15601 554086.8772765481 -15858 392352.0 -15601.0 158740.17500000002 -6432.0 61.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.381 375tWcaL 15601.0 27.0 208571945 15601 58439.88372093023 -15858 -173664.0 -15601.0 158740.17500000002 -6432.0 -27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.809 38VIu8r35oI8LI 15601.0 9.0 1445910023 15601 405130.29504062765 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.62 3AXY47D 15601.0 -36.0 1449097159 15601 406023.3003642477 -15858 231552.0 -15601.0 158740.17500000002 -6432.0 36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.367 3DCKPI43L3d 15601.0 19.0 -408304573 15601 -114403.07453068087 -15858 -122208.0 -15601.0 158740.17500000002 -6432.0 -19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.637 3E6lh2b7Mc5EAYo3 15601.0 -8.0 -1768316238 15601 -495465.46315494535 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.14 3HY275 15601.0 -54.0 -989710558 15601 -277307.5253572429 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.309 3I62k00H8W4YkR8UVffhm 15601.0 37.0 1251122304 15601 350552.6209022135 -15858 -237984.0 -15601.0 158740.17500000002 -6432.0 -37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.801 3I6hScTcbL 15601.0 -37.0 333141293 15601 93343.03530400673 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.059 3J5RuDO2K 15601.0 -12.0 1511836517 15601 423602.27430652844 -15858 77184.0 -15601.0 158740.17500000002 -6432.0 12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.251 3J71K25Fc721kce4lIT 15601.0 18.0 827296932 15601 231800.76548052675 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.932 3NKHJC 15601.0 -59.0 -133287350 15601 -37345.853180162514 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.658 3RUv5ya25aqr5127TxoQT251 15601.0 -58.0 1395869576 15601 391109.43569627346 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.684 3RW7h8mx1UYX 15601.0 9.0 -605773050 15601 -169731.87167273747 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.385 3Rql1n377th0WNasiwTIqfAk 15601.0 -16.0 1164066405 15601 326160.38246007287 -15858 102912.0 -15601.0 158740.17500000002 -6432.0 16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.635 3STg8jD7jqGBM52TjVsB46Ab 15601.0 47.0 -1220505630 15601 -341974.1188007845 -15858 -302304.0 -15601.0 158740.17500000002 -6432.0 -47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.554 3T10x1IyRuV5H77 15601.0 -37.0 -218695361 15601 -61276.36901092743 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.978 3U24COBBS7q3TeS3m 15601.0 17.0 -402367872 15601 -112739.66713365089 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.038 3Uyh75B8Qwn 15601.0 -11.0 676428086 15601 189528.74362566546 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.759 3V8UHxN5TBU 15601.0 -51.0 NULL 15601 NULL -15858 328032.0 -15601.0 158740.17500000002 -6432.0 51.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.35 3Xs32r0n4BU2f2tiC 15601.0 -11.0 986909074 15601 276522.5760717288 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.992 3a6E43HeD 15601.0 -60.0 1915758648 15601 536777.4300924629 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.948 3aDifhjuk6b4nntFIF 15601.0 8.0 1327060856 15601 371829.88400112075 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.106 3g41G77ehhX5fI7 15601.0 30.0 -1465963146 15601 -410748.99019333144 -15858 -192960.0 -15601.0 158740.17500000002 -6432.0 -30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.547 3g5v51lNv 15601.0 0.0 473839931 15601 132765.46119361164 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.409 3h42BQqfR5c74WLa 15601.0 -20.0 -57923441 15601 -16229.599607733258 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.346 3iHVpKa1Iy 15601.0 -18.0 -1414044792 15601 -396201.9590921827 -15858 115776.0 -15601.0 158740.17500000002 -6432.0 18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.239 3l33jTxWC 15601.0 -15.0 562442679 15601 157591.11207621184 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.834 3oIYv7OvH2vrLTHsa 15601.0 -23.0 -557847275 15601 -156303.52339590923 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.848 3qT4ePv7ISMeETgFD0b0S1Ly 15601.0 -4.0 -2142615863 15601 -600340.6732978425 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.687 3t5w8EbK07SIW3PEI4 15601.0 10.0 24464415 15601 6854.697394228075 -15858 -64320.0 -15601.0 158740.17500000002 -6432.0 -10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.984 3th76XH6M3nttE4 15601.0 29.0 1956045570 15601 548065.4441019894 -15858 -186528.0 -15601.0 158740.17500000002 -6432.0 -29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.949 3uojQvrD6m41To 15601.0 1.0 829192702 15601 232331.9422807509 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.725 3v66hVGTQa 15601.0 -50.0 -458110015 15601 -128358.08769963575 -15858 321600.0 -15601.0 158740.17500000002 -6432.0 50.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.679 40at262XNm5auTvXDhreVM 15601.0 -5.0 612416000 15601 171593.16335107872 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.992 41k5oTFUiu5nv 15601.0 -28.0 989393728 15601 277218.7525917624 -15858 180096.0 -15601.0 158740.17500000002 -6432.0 28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.413 428fBlpfi 15601.0 51.0 -2040027963 15601 -571596.5152703839 -15858 -328032.0 -15601.0 158740.17500000002 -6432.0 -51.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.884 42egcL8i65 15601.0 8.0 -1568412240 15601 -439454.256094144 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.059 44n5KP8SW 15601.0 -31.0 1250832914 15601 350471.5365648641 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.711 45ehHO1 15601.0 19.0 1981706992 15601 555255.5315214345 -15858 -122208.0 -15601.0 158740.17500000002 -6432.0 -19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.794 465xOUe8A4186sH 15601.0 56.0 -1061994141 15601 -297560.70075651444 -15858 -360192.0 -15601.0 158740.17500000002 -6432.0 -56.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.878 46cPsh 15601.0 -48.0 1544127003 15601 432649.76267862145 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.469 47Sm8wxGLl4syvsh1W8d2eq 15601.0 25.0 -1178735095 15601 -330270.4104791258 -15858 -160800.0 -15601.0 158740.17500000002 -6432.0 -25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.308 47tNFFE0l8022wydms 15601.0 6.0 -921789404 15601 -258276.66124964977 -15858 -38592.0 -15601.0 158740.17500000002 -6432.0 -6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.877 48gL7oUDAKW75kgT 15601.0 5.0 -245067785 15601 -68665.67245727095 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.876 4AqO5U 15601.0 -32.0 -938739544 15601 -263025.9299523676 -15858 205824.0 -15601.0 158740.17500000002 -6432.0 32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.124 4DwyxKwiHK3nV8p6 15601.0 32.0 -747159857 15601 -209347.11599887925 -15858 -205824.0 -15601.0 158740.17500000002 -6432.0 -32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.035 4E0UheoualijJ1rno 15601.0 46.0 -1116090298 15601 -312717.9316335108 -15858 -295872.0 -15601.0 158740.17500000002 -6432.0 -46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.782 4E1jb 15601.0 7.0 -484557615 15601 -135768.45474922948 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.334 4EbBPLvTO2Pe6s33iKn8 15601.0 46.0 -1721221449 15601 -482269.9492855141 -15858 -295872.0 -15601.0 158740.17500000002 -6432.0 -46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.384 4F7q027w 15601.0 -37.0 -1373443946 15601 -384825.9865508546 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.781 4HXsi4dv 15601.0 40.0 -487954385 15601 -136720.19753432335 -15858 -257280.0 -15601.0 158740.17500000002 -6432.0 -40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.777 4J1YKqEsJ2K0e85FB1Q 15601.0 0.0 -203039588 15601 -56889.7696833847 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.379 4L28g68B1xnrTBsnCa 15601.0 -22.0 1593645377 15601 446524.3421126366 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.504 4M0VqYd8r8D5 15601.0 -26.0 2102392175 15601 589070.3768562622 -15858 167232.0 -15601.0 158740.17500000002 -6432.0 26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.031 4P1l3UF37p8CvAKi5qA 15601.0 40.0 -912039001 15601 -255544.69066965536 -15858 -257280.0 -15601.0 158740.17500000002 -6432.0 -40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.249 4Rq1pXQeEsPt 15601.0 42.0 -122247742 15601 -34252.659568506584 -15858 -270144.0 -15601.0 158740.17500000002 -6432.0 -42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.386 4U34tbdGyu6f52ry 15601.0 1.0 254788466 15601 71389.31521434576 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.315 4UWNuEfgp 15601.0 8.0 -1393500402 15601 -390445.61557859345 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.452 4Y8Yutn4b4HF0 15601.0 -6.0 -337682588 15601 -94615.46315494536 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.821 4c7SDx6WePBLWjdjH1o7ix 15601.0 -37.0 79643966 15601 22315.485009806667 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.819 4i342tHD 15601.0 10.0 1177275310 15601 329861.3925469319 -15858 -64320.0 -15601.0 158740.17500000002 -6432.0 -10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.049 4lAdgqS7J8PYkK 15601.0 0.0 1561097160 15601 437404.6399551695 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.397 52cUSOgt7i1PMGWG3 15601.0 0.0 53950949 15601 15116.544970579995 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.798 53J14DdxOk0BwV5x3TunGjou 15601.0 18.0 -860591619 15601 -241129.62146259457 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.432 53X1h8m4Q5y8SGKk0EL74v 15601.0 16.0 326323074 15601 91432.63491173998 -15858 -102912.0 -15601.0 158740.17500000002 -6432.0 -16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.496 53XJFq221K 15601.0 15.0 147916674 15601 41444.8512188288 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.162 545WCULCG83sT3fR1RD38e 15601.0 17.0 -1749442997 15601 -490177.3597646399 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.558 54Q740CGYW4r2 15601.0 -4.0 1385428226 15601 388183.8683104511 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.054 54X76o 15601.0 -18.0 1179135101 15601 330382.488372093 -15858 115776.0 -15601.0 158740.17500000002 -6432.0 18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.094 54gc6c4vFnE7BduQcdm 15601.0 -9.0 -216777441 15601 -60738.98599047352 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.87 56015OKS42DG3ju4KW0a558 15601.0 -31.0 -1784005728 15601 -499861.50966657326 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.166 563BdSoLJFx 15601.0 6.0 -47379735 15601 -13275.353040067246 -15858 -38592.0 -15601.0 158740.17500000002 -6432.0 -6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.697 5684o66hD1A 15601.0 33.0 -667436971 15601 -187009.51835247967 -15858 -212256.0 -15601.0 158740.17500000002 -6432.0 -33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.984 568U4kod3IM212hiu8KM 15601.0 7.0 160900383 15601 45082.76351919305 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.334 56J7AFRtVC30pT458Lc3461 15601.0 28.0 -1767756774 15601 -495308.70664051553 -15858 -180096.0 -15601.0 158740.17500000002 -6432.0 -28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.066 56ac8 15601.0 -20.0 -41530125 15601 -11636.347716447184 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.307 578rPxyhOk6IXAKYJn 15601.0 14.0 NULL 15601 NULL -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.805 57eimVBuq4i3FdRlJi5iNFh5 15601.0 -35.0 1326401578 15601 371645.1605491734 -15858 225120.0 -15601.0 158740.17500000002 -6432.0 35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.548 584i3Q7R5P65nCfCt30B 15601.0 48.0 1276990360 15601 357800.60521154385 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.279 5DJnb 15601.0 38.0 299342203 15601 83872.85037825721 -15858 -244416.0 -15601.0 158740.17500000002 -6432.0 -38.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.68 5EBH67Oqi47O 15601.0 -2.0 1450853557 15601 406515.426449986 -15858 12864.0 -15601.0 158740.17500000002 -6432.0 2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.894 5EIQq8oF 15601.0 4.0 -25467184 15601 -7135.663771364528 -15858 -25728.0 -15601.0 158740.17500000002 -6432.0 -4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.252 5FApe58n1bNcyN52tE 15601.0 -8.0 -1902104689 15601 -532951.720089661 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.763 5Fy3QhweW 15601.0 -29.0 1023307150 15601 286720.97226113756 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.021 5HN44RVUXF0ELkvPAkQntoiB 15601.0 13.0 -2058347315 15601 -576729.4242084618 -15858 -83616.0 -15601.0 158740.17500000002 -6432.0 -13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.124 5JN6of4vi 15601.0 55.0 448409948 15601 125640.22079013729 -15858 -353760.0 -15601.0 158740.17500000002 -6432.0 -55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.493 5MO0A16x7Ec5nM23WnBU 15601.0 -33.0 -6432 15601 -1.8021854861305688 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.86 5Pn1BhiCeCd 15601.0 30.0 160587665 15601 44995.14289717007 -15858 -192960.0 -15601.0 158740.17500000002 -6432.0 -30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.957 5SVe8AEjY848Rf 15601.0 -56.0 -1683701844 15601 -471757.31129167834 -15858 360192.0 -15601.0 158740.17500000002 -6432.0 56.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.344 5Sm77ix2oQa7spX 15601.0 47.0 1640015816 15601 459516.89997198095 -15858 -302304.0 -15601.0 158740.17500000002 -6432.0 -47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.733 5UcDl 15601.0 -63.0 483904240 15601 135585.38526197814 -15858 405216.0 -15601.0 158740.17500000002 -6432.0 63.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.096 5fTGTHvaK 15601.0 -41.0 -480294523 15601 -134573.97674418605 -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.418 5fecwPu2O6YdwAt 15601.0 -20.0 -125514283 15601 -35167.913421126366 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.506 5kH1rO 15601.0 26.0 1341651482 15601 375918.0392266741 -15858 -167232.0 -15601.0 158740.17500000002 -6432.0 -26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.779 5lXRdTnA22VoT16Npr 15601.0 -60.0 1122241452 15601 314441.4267301765 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.066 5rg4D5D3KoH7Em1 15601.0 -58.0 2079381885 15601 582623.1115158307 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.076 5t0xD81bv100c5Tsy0T 15601.0 15.0 1329082102 15601 372396.217988232 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.026 5tCt5 15601.0 8.0 -671519607 15601 -188153.43429532083 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.188 5w4L1fDocLE51HE7N3c 15601.0 -63.0 -1574729892 15601 -441224.4023536004 -15858 405216.0 -15601.0 158740.17500000002 -6432.0 63.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.782 5ydLyNvMP2B2 15601.0 34.0 -1175444744 15601 -329348.4852899972 -15858 -218688.0 -15601.0 158740.17500000002 -6432.0 -34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.832 6002q 15601.0 37.0 676613895 15601 189580.8055477725 -15858 -237984.0 -15601.0 158740.17500000002 -6432.0 -37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.364 60B4H0EgaA4NC5Iyy4O 15601.0 -3.0 211786821 15601 59340.66152984029 -15858 19296.0 -15601.0 158740.17500000002 -6432.0 3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.916 60fy6yAOepPm6l3 15601.0 58.0 -1624506701 15601 -455171.3928271225 -15858 -373056.0 -15601.0 158740.17500000002 -6432.0 -58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.136 60g81s 15601.0 -51.0 1551526522 15601 434723.0378257215 -15858 328032.0 -15601.0 158740.17500000002 -6432.0 51.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.675 60o1F4eW1 15601.0 -41.0 1718435591 15601 481489.3782572149 -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.873 62YSTHdPej50X5u3O1D 15601.0 -62.0 281485844 15601 78869.66769403194 -15858 398784.0 -15601.0 158740.17500000002 -6432.0 62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.124 63N5mknei4aeWJ8V0qwVI 15601.0 5.0 188016060 15601 52680.3194172037 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.198 63eX32F8ps86O 15601.0 -2.0 -2115132140 15601 -592639.9943961895 -15858 12864.0 -15601.0 158740.17500000002 -6432.0 2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.465 63ml1hL17Hky 15601.0 -39.0 -775351902 15601 -217246.26001681143 -15858 250848.0 -15601.0 158740.17500000002 -6432.0 39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.616 64NUjX13Fyeb7AWh5DX2D 15601.0 39.0 333745628 15601 93512.36424768843 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.182 66NbK5Ke 15601.0 -19.0 -1293795844 15601 -362509.34267301764 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.305 66O6v0Vf6jvnQs2Ps62hYr4 15601.0 -30.0 701736845 15601 196620.01821238443 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.179 66S3R 15601.0 52.0 113813447 15601 31889.44998599047 -15858 -334464.0 -15601.0 158740.17500000002 -6432.0 -52.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:43.721 67e72C1HvFm3G61s3E 15601.0 57.0 -1465657206 15601 -410663.26870271785 -15858 -366624.0 -15601.0 158740.17500000002 -6432.0 -57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.752 67jdQgbohcurvMDHh5W 15601.0 36.0 4757615 15601 1333.0386662930794 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.218 67p706r1Gv1cjIO 15601.0 -54.0 -641670659 15601 -179790.0417483889 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.462 68ldxXNy74071w 15601.0 35.0 -777113949 15601 -217739.96889885122 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.388 6A657TNuJgSp1Y6chfUOqyo 15601.0 20.0 1605330367 15601 449798.3656486411 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.299 6C5K3WGc2laGctSI2m0o8 15601.0 47.0 -1019007115 15601 -285516.1431773606 -15858 -302304.0 -15601.0 158740.17500000002 -6432.0 -47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.965 6D4DQRSeJLF51 15601.0 50.0 1278766496 15601 358298.2616979546 -15858 -321600.0 -15601.0 158740.17500000002 -6432.0 -50.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.03 6ERA57C3XFjRG3oJ0 15601.0 25.0 -765146525 15601 -214386.81003082095 -15858 -160800.0 -15601.0 158740.17500000002 -6432.0 -25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.631 6G507mfwId541DtIuy 15601.0 -53.0 1415455683 15601 396597.27738862426 -15858 340896.0 -15601.0 158740.17500000002 -6432.0 53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.034 6HHDm16v6VrJA 15601.0 20.0 811631368 15601 227411.4228075091 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.32 6KJ1McyXPvnI1aVA2m1 15601.0 39.0 -144116978 15601 -40380.21238442141 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.444 6N24JhdOx8Uu368 15601.0 -5.0 -685821373 15601 -192160.65368450547 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.896 6Qtj3B0piVu 15601.0 46.0 -1063470233 15601 -297974.28775567387 -15858 -295872.0 -15601.0 158740.17500000002 -6432.0 -46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.171 6RF0nrPv31V5d7y203yEhP04 15601.0 -11.0 -26446061 15601 -7409.935836368731 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.101 6Ro6sc8i5gt3Yau7O 15601.0 -6.0 -847064600 15601 -237339.47884561503 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.975 6TeJh6uj8yr 15601.0 23.0 446614861 15601 125137.25441300085 -15858 -147936.0 -15601.0 158740.17500000002 -6432.0 -23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.052 6U81A8U3S 15601.0 -22.0 -1138394041 15601 -318967.2291958532 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.88 6UFb57s47rh1M046gK2RyP 15601.0 48.0 1294882412 15601 362813.7887363407 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.811 6WUSYOYu 15601.0 11.0 317708856 15601 89019.01260857383 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.52 6ej7IPl1axJbEoLTlQd2V 15601.0 -35.0 682869093 15601 191333.45278789577 -15858 225120.0 -15601.0 158740.17500000002 -6432.0 35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.045 6ekoSl0HCwx6IuWGt5JC5U0 15601.0 34.0 709756299 15601 198866.9932754273 -15858 -218688.0 -15601.0 158740.17500000002 -6432.0 -34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.338 6hI8NKEDoQHh 15601.0 11.0 1647833756 15601 461707.41272065 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.677 6iO7Vgh08 15601.0 -55.0 -1062767051 15601 -297777.2628187167 -15858 353760.0 -15601.0 158740.17500000002 -6432.0 55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.859 6l8L47 15601.0 -54.0 1882977755 15601 527592.5343233398 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.056 6mWsAi 15601.0 58.0 235428680 15601 65964.88652283553 -15858 -373056.0 -15601.0 158740.17500000002 -6432.0 -58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.467 6oAqXj7Kno4oPwyyvkFHx26E 15601.0 27.0 -67671601 15601 -18960.94172036985 -15858 -173664.0 -15601.0 158740.17500000002 -6432.0 -27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.739 6p3YH01g4Q 15601.0 25.0 1972121187 15601 552569.6797422247 -15858 -160800.0 -15601.0 158740.17500000002 -6432.0 -25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.394 6rMa1i 15601.0 48.0 400830823 15601 112309.00056038106 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.803 6tDKNa 15601.0 35.0 456583571 15601 127930.39254693191 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.703 6ukSO2rt3sY 15601.0 17.0 912955819 15601 255801.5743905856 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.961 6xam34x8s05c60D8BXMDCP 15601.0 32.0 1194813198 15601 334775.34267301764 -15858 -205824.0 -15601.0 158740.17500000002 -6432.0 -32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.733 6ySy81Xi5 15601.0 54.0 -1676223874 15601 -469662.0549173438 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.606 70CwR7G80qU0a 15601.0 29.0 -2052415815 15601 -575067.474082376 -15858 -186528.0 -15601.0 158740.17500000002 -6432.0 -29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.265 70Kvn2dL1ONDAGv22fni5S 15601.0 -44.0 299090584 15601 83802.34911739983 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.779 71w84QYjROpI1LRs 15601.0 12.0 627141836 15601 175719.20313813392 -15858 -77184.0 -15601.0 158740.17500000002 -6432.0 -12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.576 73117URk7G4v 15601.0 -46.0 529529092 15601 148369.03670495938 -15858 295872.0 -15601.0 158740.17500000002 -6432.0 46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.229 73l03Fiy5cx14fg 15601.0 -21.0 1679050126 15601 470453.9439618941 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.495 74B2Y5Q 15601.0 -13.0 -1040843741 15601 -291634.5589801065 -15858 83616.0 -15601.0 158740.17500000002 -6432.0 13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.055 74YmI3NrkE60Skh0247Cef 15601.0 22.0 1592489073 15601 446200.3566825441 -15858 -141504.0 -15601.0 158740.17500000002 -6432.0 -22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.16 770AYojc7s 15601.0 -4.0 1380425571 15601 386782.1717567946 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.81 77KSI1X3EL2 15601.0 -54.0 1750152891 15601 490376.2653404315 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.23 77tF4t 15601.0 30.0 -919690155 15601 -257688.47156066124 -15858 -192960.0 -15601.0 158740.17500000002 -6432.0 -30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.68 78Qfd68RemAlT6Kn8j 15601.0 19.0 605778880 15601 169733.5051835248 -15858 -122208.0 -15601.0 158740.17500000002 -6432.0 -19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.982 7AL73c 15601.0 -21.0 1650023180 15601 462320.86859064165 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.457 7C80P162Dh088i1 15601.0 -32.0 -2105144474 15601 -589841.54497058 -15858 205824.0 -15601.0 158740.17500000002 -6432.0 32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.215 7E0b24sDWE4IdwLO 15601.0 16.0 2125913889 15601 595660.9383580835 -15858 -102912.0 -15601.0 158740.17500000002 -6432.0 -16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.799 7JQfxa2Or8T4qp 15601.0 45.0 761255971 15601 213296.7136452788 -15858 -289440.0 -15601.0 158740.17500000002 -6432.0 -45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.823 7KGMko8S5y3g5jq 15601.0 -59.0 543831209 15601 152376.35444101988 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.184 7MH3oxJA2Tk 15601.0 -11.0 -1964641289 15601 -550473.8831605492 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.054 7Q2u1kLd7Mfy1 15601.0 -14.0 -1863202490 15601 -522051.6923507985 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.506 7QuAXV6VYT7q 15601.0 38.0 1524423680 15601 427129.07817315776 -15858 -244416.0 -15601.0 158740.17500000002 -6432.0 -38.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.393 7RSMUpu2l 15601.0 31.0 1827212970 15601 511967.7696833847 -15858 -199392.0 -15601.0 158740.17500000002 -6432.0 -31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.738 7RTbw57HqNyGPcn 15601.0 17.0 -1932369186 15601 -541431.545530961 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.829 7Ur2a5SGe4m64pM2BC 15601.0 57.0 560414150 15601 157022.7374614738 -15858 -366624.0 -15601.0 158740.17500000002 -6432.0 -57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.093 7V5hA1gBCS673CU337DA24Ce 15601.0 -32.0 1991822914 15601 558089.9170636033 -15858 205824.0 -15601.0 158740.17500000002 -6432.0 32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.457 7W2RwS80JX 15601.0 -26.0 432515401 15601 121186.71924908938 -15858 167232.0 -15601.0 158740.17500000002 -6432.0 26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.555 7Wy08w00BpunUYJVsr05u46 15601.0 20.0 -89010 15601 -24.93975903614458 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.755 7X08u20Av7FQvjLy5L52 15601.0 -31.0 1705300763 15601 477809.1238442141 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.851 7XSN7PgyBJ42NuN87t 15601.0 -49.0 -668597606 15601 -187334.7172877557 -15858 315168.0 -15601.0 158740.17500000002 -6432.0 49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.783 7adFqAqlKXtTQ 15601.0 -8.0 -1493703726 15601 -418521.6379938358 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.383 7arS506d1YXayI 15601.0 -60.0 -1016256928 15601 -284745.5668254413 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.747 7hs2n1g25 15601.0 -13.0 377434477 15601 105753.56598486971 -15858 83616.0 -15601.0 158740.17500000002 -6432.0 13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.022 7jEJE3CR3l027M76o2N81 15601.0 0.0 1018195815 15601 285288.8246007285 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.251 7o8D0lTRw30h 15601.0 36.0 -1300587151 15601 -364412.2025777529 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.609 7od8M476cRRTyd1i 15601.0 -41.0 2067730138 15601 579358.4023536005 -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.039 7rem6u7WK00EsD1mq6gp80 15601.0 0.0 98841361 15601 27694.413281031102 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.377 7s3sR2QjWXv0 15601.0 -44.0 -1032806869 15601 -289382.7035584197 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.615 7vT82OOJ7VpT5J 15601.0 10.0 1661516996 15601 465541.326982348 -15858 -64320.0 -15601.0 158740.17500000002 -6432.0 -10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.209 80rr6EU 15601.0 -41.0 -560714683 15601 -157106.94396189408 -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.79 82g6ygwAG80 15601.0 39.0 -484639113 15601 -135791.28971700757 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.61 8367JQap6U744J2 15601.0 54.0 -1711666077 15601 -479592.62454469036 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.957 85F0x1b1jAwFtt0 15601.0 -7.0 1631784601 15601 457210.5914822079 -15858 45024.0 -15601.0 158740.17500000002 -6432.0 7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.552 85i7Iq6mS56rOtT28bhNjy 15601.0 -42.0 -933775134 15601 -261634.94928551416 -15858 270144.0 -15601.0 158740.17500000002 -6432.0 42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.132 85nENa25nmPijGxYvb5F7 15601.0 -43.0 1489229962 15601 417268.1316895489 -15858 276576.0 -15601.0 158740.17500000002 -6432.0 43.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.845 86Rm22yWrLRgkI6V 15601.0 -1.0 1809122123 15601 506898.88568226394 -15858 6432.0 -15601.0 158740.17500000002 -6432.0 1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.945 87Iw7D4t61rud4M 15601.0 9.0 -910567691 15601 -255132.44354160829 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.755 8C2si8HMM25gTx 15601.0 29.0 252879408 15601 70854.4152423648 -15858 -186528.0 -15601.0 158740.17500000002 -6432.0 -29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.284 8CiP3 15601.0 10.175 99984127 15601 28014.60549173438 -15858 -65445.6 -15601.0 158740.17500000002 -6432.0 -10.175 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.231 8DLDCR7L 15601.0 -4.0 1522352025 15601 426548.6200616419 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.483 8FK46Fy4W5mow61w1EO 15601.0 19.0 -1644279296 15601 -460711.4866909498 -15858 -122208.0 -15601.0 158740.17500000002 -6432.0 -19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.512 8I7242Peq34tib 15601.0 41.0 -338704173 15601 -94901.70159708602 -15858 -263712.0 -15601.0 158740.17500000002 -6432.0 -41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.106 8NB5Hm30xPsXKoQUCdxi 15601.0 -62.0 -1592016120 15601 -446067.83973101707 -15858 398784.0 -15601.0 158740.17500000002 -6432.0 62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.205 8NgNgkpB06N7bMGgBs5QJ 15601.0 14.0 -1954298743 15601 -547575.9997198095 -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.936 8R8xyd522O4QL6chM 15601.0 9.0 -1620061206 15601 -453925.8072289157 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.848 8T0iicu1hkiuJIF6nIYW0G5 15601.0 7.0 821719163 15601 230237.92743065284 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.813 8U6rv3y3cwrlg6L 15601.0 -23.0 380840615 15601 106707.9335948445 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.674 8V43o1S8d0t6u4i 15601.0 37.0 1217409914 15601 341106.7284953769 -15858 -237984.0 -15601.0 158740.17500000002 -6432.0 -37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.267 8Vs552xiccF5j3n60 15601.0 -14.0 862568803 15601 241683.60969459233 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.887 8W4LA8kaxVohu172E 15601.0 -14.0 946654233 15601 265243.5508545811 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.153 8bcU4P2 15601.0 -6.0 -659825179 15601 -184876.76632109834 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.582 8dvkU0qkX4qr 15601.0 29.0 1195930056 15601 335088.2757074811 -15858 -186528.0 -15601.0 158740.17500000002 -6432.0 -29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.383 8e3Ri1wGpcM 15601.0 -33.0 -2080305624 15601 -582881.9344354161 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.695 8e7L21Y4g8xid8j 15601.0 25.0 451518699 15601 126511.26337909779 -15858 -160800.0 -15601.0 158740.17500000002 -6432.0 -25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.218 8fhS6JqUfN 15601.0 39.0 923495645 15601 258754.73381899693 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.915 8fxjs0MMOIa0N27 15601.0 -14.0 -205670222 15601 -57626.84841692351 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.221 8gqle254GhDd1pCxr2k45 15601.0 -40.0 159274870 15601 44627.31017091622 -15858 257280.0 -15601.0 158740.17500000002 -6432.0 40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.612 8qRIl5Mu125F3y0RDS2tJ 15601.0 -30.0 1787283476 15601 500779.9036144578 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.682 8r0tSk 15601.0 -10.0 944581452 15601 264662.777248529 -15858 64320.0 -15601.0 158740.17500000002 -6432.0 10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.237 8rt58A3QR04YRX4t 15601.0 -44.0 -1551649760 15601 -434757.5679462034 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.017 8wAyA76 15601.0 41.0 137074296 15601 38406.91958531801 -15858 -263712.0 -15601.0 158740.17500000002 -6432.0 -41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.962 A1qy8CWr78 15601.0 -11.0 -386315686 15601 -108241.99663771364 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.234 A4g0u43t1BLI4h 15601.0 36.0 873370057 15601 244710.01877276547 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.158 ABOL5huJ5V40JR7Xy5Jh0 15601.0 45.0 -195941743 15601 -54901.02073409919 -15858 -289440.0 -15601.0 158740.17500000002 -6432.0 -45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.343 ABv6FN1qbww204XIw3Pk32nF 15601.0 -34.0 -1177680836 15601 -329975.0170916223 -15858 218688.0 -15601.0 158740.17500000002 -6432.0 34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.983 AIb8nmLQ0Jg4t3gUu75vJeyH 15601.0 -59.0 -2021724111 15601 -566467.9492855142 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.79 AXc2FKJEWhLfD253aoO1 15601.0 -24.0 -278405900 15601 -78006.69655365648 -15858 154368.0 -15601.0 158740.17500000002 -6432.0 24.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.055 AaqE4i62EBu0EEc0j 15601.0 7.0 68454489 15601 19180.299523676098 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.914 Af3LT15L8Onw 15601.0 14.0 -1555938533 15601 -435959.2415242365 -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.999 Alqjt 15601.0 20.0 -1972968987 15601 -552807.2252731858 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.834 AoaeP78qMN6Owq7 15601.0 38.0 951445775 15601 266586.0955449706 -15858 -244416.0 -15601.0 158740.17500000002 -6432.0 -38.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.541 AofL0r45t 15601.0 -12.0 308271363 15601 86374.71644718408 -15858 77184.0 -15601.0 158740.17500000002 -6432.0 12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.038 ApHibcqSn8Oo335QmfLfWnYF 15601.0 8.0 -590921449 15601 -165570.59372373213 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.062 B0L388T3mhPaRCS 15601.0 -58.0 808219026 15601 226455.31689548894 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.07 B204fmP5Do5b 15601.0 -9.0 1788323480 15601 501071.3028859625 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.816 B3sM2VnR 15601.0 15.0 1860728286 15601 521358.44382179884 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.134 B4bPyjY 15601.0 -48.0 -803222928 15601 -225055.45755113478 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.688 B561GDW 15601.0 6.0 273663235 15601 76677.84673578033 -15858 -38592.0 -15601.0 158740.17500000002 -6432.0 -6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.845 B5E1TD86mgjtAtB4 15601.0 -57.0 -1698345590 15601 -475860.350238162 -15858 366624.0 -15601.0 158740.17500000002 -6432.0 57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.51 B5RW2g5yog 15601.0 62.0 1815385311 15601 508653.7716447184 -15858 -398784.0 -15601.0 158740.17500000002 -6432.0 -62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.54 BBP8rjueJ6qT2UgiU51yh 15601.0 20.0 -2050820665 15601 -574620.5281591482 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.858 BClgHeB 15601.0 -55.0 357043363 15601 100040.16895488932 -15858 353760.0 -15601.0 158740.17500000002 -6432.0 55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.408 BEjDfR852Hc1MF836c 15601.0 28.0 1527899325 15601 428102.92098627065 -15858 -180096.0 -15601.0 158740.17500000002 -6432.0 -28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.331 BLO5XwB7 15601.0 12.0 1941610780 15601 544020.9526478006 -15858 -77184.0 -15601.0 158740.17500000002 -6432.0 -12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.84 BR5F00 15601.0 45.0 1903410305 15601 533317.5413281032 -15858 -289440.0 -15601.0 158740.17500000002 -6432.0 -45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.949 BRG7Sv5qr1v0twTX22 15601.0 51.0 -2103985381 15601 -589516.7780891006 -15858 -328032.0 -15601.0 158740.17500000002 -6432.0 -51.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.988 BTHM1wQ6nmd7i4D62 15601.0 17.0 -784264135 15601 -219743.38330064443 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.964 BeKTyMrM8FWn6ewb 15601.0 -36.0 -1804756106 15601 -505675.56906696555 -15858 231552.0 -15601.0 158740.17500000002 -6432.0 36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.92 ByMim67Bdl5Kq5NSjW17G3 15601.0 -22.0 623049731 15601 174572.6340711684 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.483 C0M1vBmsgknoehCiG7 15601.0 -48.0 -1228417392 15601 -344190.919585318 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.293 C53Tn5 15601.0 -31.0 -2030835158 15601 -569020.7783692911 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.672 CJgR7y5fJt25q1 15601.0 18.0 -2044770406 15601 -572925.3028859624 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.627 CQCJ6h0swWhp4 15601.0 -49.0 -230127703 15601 -64479.602970019616 -15858 315168.0 -15601.0 158740.17500000002 -6432.0 49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.714 Cb4HG6630oxk51h5F3W 15601.0 -19.0 -899534452 15601 -252041.03446343515 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.275 Ci5SHf 15601.0 -12.0 642606685 15601 180052.30736901093 -15858 77184.0 -15601.0 158740.17500000002 -6432.0 12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.088 Cl82a 15601.0 -12.0 1553995372 15601 435414.7862146259 -15858 77184.0 -15601.0 158740.17500000002 -6432.0 12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.596 Crds83KvG3egbK 15601.0 -30.0 722336779 15601 202391.92462874754 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.672 CvUplJQ5P60W8 15601.0 2.0 1921019802 15601 538251.5556178201 -15858 -12864.0 -15601.0 158740.17500000002 -6432.0 -2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.197 D0EmwVYsS1R 15601.0 11.0 -1474284078 15601 -413080.43653684505 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.344 D26B67MOpPcteG70IOsMqH 15601.0 -5.0 -13357585 15601 -3742.66881479406 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.924 D8K4E6MSC6E1d7UlX7yS6o2 15601.0 58.0 300682807 15601 84248.4749229476 -15858 -373056.0 -15601.0 158740.17500000002 -6432.0 -58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.142 DANHO0P7GlF6WFPQkFF8 15601.0 79.553 -1823591768 15601 -510953.1431773606 -15858 -511684.9 -15601.0 158740.17500000002 -6432.0 -79.553 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.259 DBTgG3H 15601.0 46.0 1056441941 15601 296005.02689829085 -15858 -295872.0 -15601.0 158740.17500000002 -6432.0 -46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.074 DJq0Lol1I 15601.0 19.0 1089687789 15601 305320.19865508546 -15858 -122208.0 -15601.0 158740.17500000002 -6432.0 -19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.419 DUE3Y1g4jLp345K 15601.0 60.0 -1141582332 15601 -319860.5581395349 -15858 -385920.0 -15601.0 158740.17500000002 -6432.0 -60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.809 DWHPiSxW7ON5vyCNmn 15601.0 -8.0 -2028170063 15601 -568274.0439899132 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.311 Db7CaO 15601.0 43.0 2113671499 15601 592230.7366209022 -15858 -276576.0 -15601.0 158740.17500000002 -6432.0 -43.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.254 Dk66H 15601.0 4.0 1533958255 15601 429800.5757915382 -15858 -25728.0 -15601.0 158740.17500000002 -6432.0 -4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.994 Dncfdm0107vK5Bmwppr1H 15601.0 -15.0 -937270420 15601 -262614.29532081814 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.365 DpXKnXx54Ped8cJeCJL 15601.0 39.0 1210224988 15601 339093.58027458674 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.402 DsLt4LdED7Q7 15601.0 -26.0 -257298466 15601 -72092.59344354161 -15858 167232.0 -15601.0 158740.17500000002 -6432.0 26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.117 E100F0lsE520GtpXYIu 15601.0 -26.0 -404509269 15601 -113339.6662930793 -15858 167232.0 -15601.0 158740.17500000002 -6432.0 26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.413 E2Kbx50LJ7amwF 15601.0 -61.0 -1022679553 15601 -286545.12552535726 -15858 392352.0 -15601.0 158740.17500000002 -6432.0 61.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.254 E865b 15601.0 57.0 761877407 15601 213470.8341272065 -15858 -366624.0 -15601.0 158740.17500000002 -6432.0 -57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.233 EPi08Ihi40O 15601.0 -34.0 113880409 15601 31908.212104230875 -15858 218688.0 -15601.0 158740.17500000002 -6432.0 34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.035 ERwT6401a164 15601.0 12.0 1295172704 15601 362895.12580554775 -15858 -77184.0 -15601.0 158740.17500000002 -6432.0 -12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.989 ETN236368gQub756Dmfp5181 15601.0 -6.0 -1610058211 15601 -451123.0627626786 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.925 EUfLkLQ 15601.0 -10.0 -1086197521 15601 -304342.2586158588 -15858 64320.0 -15601.0 158740.17500000002 -6432.0 10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.279 EcpSw7QRSrw40ueJm 15601.0 -44.0 30909765 15601 8660.623423928271 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:43.705 Ek2sC17CCXFw1Fdq1c3N7o1 15601.0 -12.0 595414579 15601 166829.52619781453 -15858 77184.0 -15601.0 158740.17500000002 -6432.0 12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.256 EmIssCRj 15601.0 21.0 68208550 15601 19111.38974502662 -15858 -135072.0 -15601.0 158740.17500000002 -6432.0 -21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.565 En0gIyb3UWw7Bg5Cs 15601.0 40.0 946637795 15601 265238.9450826562 -15858 -257280.0 -15601.0 158740.17500000002 -6432.0 -40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.305 EpY8iI4vm3q3d3x0862L3 15601.0 32.0 839217757 15601 235140.86775007006 -15858 -205824.0 -15601.0 158740.17500000002 -6432.0 -32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.391 Etkti70 15601.0 -37.0 -1474993355 15601 -413279.16923507984 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.689 ExDDp5f2lgt8O7VUcf12q81T 15601.0 18.0 1105763794 15601 309824.5430092463 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.159 F06d7U0vinY 15601.0 -50.0 1445828009 15601 405107.3154945363 -15858 321600.0 -15601.0 158740.17500000002 -6432.0 50.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.485 F0FeMN5eraBSeNo 15601.0 15.0 -1186641445 15601 -332485.6948725133 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.816 F1D04R4cY5JQbX3M4l6 15601.0 7.0 -1487527155 15601 -416791.02129448025 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.233 F1p7M8ag2lHT1No88g564W0 15601.0 24.0 184592771 15601 51721.14625945643 -15858 -154368.0 -15601.0 158740.17500000002 -6432.0 -24.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.547 F214U41bv 15601.0 26.0 -692950740 15601 -194158.23479966377 -15858 -167232.0 -15601.0 158740.17500000002 -6432.0 -26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.111 F68eh 15601.0 6.0 1274836009 15601 357196.9764639955 -15858 -38592.0 -15601.0 158740.17500000002 -6432.0 -6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.038 F7A5XKmXGD 15601.0 -14.0 -946632342 15601 -265237.41720369854 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.875 FAYy2rCtAk6p6LyMS7S3M 15601.0 45.0 29687887 15601 8318.264780050435 -15858 -289440.0 -15601.0 158740.17500000002 -6432.0 -45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.711 FEfERlrjMF6a37teo6RpLM 15601.0 21.0 1849599424 15601 518240.24208461755 -15858 -135072.0 -15601.0 158740.17500000002 -6432.0 -21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.12 FGD08uu4La5qPEl 15601.0 49.0 1419034476 15601 397600.02129448025 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.145 FH3xC0m38Hp 15601.0 -29.0 -1355363882 15601 -379760.1238442141 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.75 FIB30nWy1482081ypBNk75 15601.0 -22.0 -116661992 15601 -32687.585318016252 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.176 FbU0U126PPV4V80C 15601.0 -53.0 1164180530 15601 326192.3592042589 -15858 340896.0 -15601.0 158740.17500000002 -6432.0 53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.875 FmeinD4GMhc3dR 15601.0 30.0 -941937506 15601 -263921.9686186607 -15858 -192960.0 -15601.0 158740.17500000002 -6432.0 -30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.173 Fo0lvObXB13uFiJ538N1I7EI 15601.0 49.0 172978219 15601 48466.858783973104 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.405 Ftd0f531WF17cjTI2O 15601.0 -61.0 1139675920 15601 319326.39955169515 -15858 392352.0 -15601.0 158740.17500000002 -6432.0 61.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.119 Fwf6Sac6mM2Q5tj38H 15601.0 4.0 -293394791 15601 -82206.44186046511 -15858 -25728.0 -15601.0 158740.17500000002 -6432.0 -4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.925 G2eTbpXOf 15601.0 -46.0 -468932050 15601 -131390.3194172037 -15858 295872.0 -15601.0 158740.17500000002 -6432.0 46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.034 G70732cedJMM0TMdTnO2 15601.0 5.0 -1405201067 15601 -393724.0311011488 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.391 G8YI4g61V5l0 15601.0 -45.0 -831227593 15601 -232902.099467638 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.719 GA848dL72B2dOUfpVmG77J3F 15601.0 39.0 581431028 15601 162911.46763799383 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.066 GG48LXS1XF8 15601.0 -36.0 796380856 15601 223138.37377416642 -15858 231552.0 -15601.0 158740.17500000002 -6432.0 36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.228 GGc5G7 15601.0 3.0 -662740282 15601 -185693.5505743906 -15858 -19296.0 -15601.0 158740.17500000002 -6432.0 -3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.083 GLUkX0100q 15601.0 -31.0 -198456342 15601 -55605.58755954049 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.555 GT18w 15601.0 6.0 -940198586 15601 -263434.739702998 -15858 -38592.0 -15601.0 158740.17500000002 -6432.0 -6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.258 GWyjg3VFq1 15601.0 -25.0 988888 15601 277.07705239562904 -15858 160800.0 -15601.0 158740.17500000002 -6432.0 25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.223 Gi2GkC27Si2F2HcPpxl30H 15601.0 53.0 613322929 15601 171847.27626786215 -15858 -340896.0 -15601.0 158740.17500000002 -6432.0 -53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.76 Gk6NYea0882752C 15601.0 17.0 -191560572 15601 -53673.45811151583 -15858 -109344.0 -15601.0 158740.17500000002 -6432.0 -17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.259 GkRP5Gp6K6SFm5O21tX1U3 15601.0 -46.0 271210320 15601 75990.56318296441 -15858 295872.0 -15601.0 158740.17500000002 -6432.0 46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.96 GlQD5lVNjayU21uPxj7x6 15601.0 -49.0 -197652849 15601 -55380.45643037265 -15858 315168.0 -15601.0 158740.17500000002 -6432.0 49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.044 Gs7PDk 15601.0 11.0 1518898051 15601 425580.8492574951 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.893 Gv7dDwR 15601.0 -45.0 56009543 15601 15693.343513589241 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.785 H2W5UNJvOk4884lt0u2K 15601.0 -14.0 984832395 15601 275940.71028299246 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.92 H660yyHFbeUy864u1nS1 15601.0 -27.0 711356569 15601 199315.37377416642 -15858 173664.0 -15601.0 158740.17500000002 -6432.0 27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.931 H6EQ3Y5tY82S5U1 15601.0 14.0 -1358164329 15601 -380544.78257214907 -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.553 H85Or4yRdt4A1 15601.0 -42.0 1285310382 15601 360131.79658167553 -15858 270144.0 -15601.0 158740.17500000002 -6432.0 42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.528 HC8S2Tyv8RF 15601.0 -17.0 1158473216 15601 324593.2238722331 -15858 109344.0 -15601.0 158740.17500000002 -6432.0 17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.575 HCje0r5N3C0o3 15601.0 39.0 186460538 15601 52244.476884281314 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.722 HCr4b46Dx6aSa0Q7CRp3 15601.0 -53.0 879759030 15601 246500.14850098066 -15858 340896.0 -15601.0 158740.17500000002 -6432.0 53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.561 HJTchT5CPC84 15601.0 -29.0 -427240643 15601 -119708.78201176801 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.593 HN57u11H8 15601.0 -13.0 2061177369 15601 577522.3785374054 -15858 83616.0 -15601.0 158740.17500000002 -6432.0 13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.096 HUKr4vWS 15601.0 28.0 1781483364 15601 499154.7671616699 -15858 -180096.0 -15601.0 158740.17500000002 -6432.0 -28.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.712 HX4NNXplV2R7G35xp 15601.0 37.0 980331206 15601 274679.5197534323 -15858 -237984.0 -15601.0 158740.17500000002 -6432.0 -37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.9 HcoJtE70sS7KuFuuW 15601.0 20.0 -368721894 15601 -103312.38274026338 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.08 HghnGE5gflqVwR76sX18 15601.0 48.0 1766992295 15601 495094.506864668 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.375 HmC2gaY 15601.0 -49.0 -57200424 15601 -16027.017091622303 -15858 315168.0 -15601.0 158740.17500000002 -6432.0 49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.161 Hs4v5FHpNs4 15601.0 -20.0 -1569241661 15601 -439686.6520033623 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.213 Hu8U10iq3 15601.0 1.0 -1972121622 15601 -552569.8016251051 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.328 Hv27a0qU14MJB7 15601.0 -37.0 -1274229243 15601 -357026.9663771365 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.189 HyD5X4wA0G4Ir6Wq6gM5H 15601.0 -16.0 290481712 15601 81390.2247128047 -15858 102912.0 -15601.0 158740.17500000002 -6432.0 16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.83 I086Kg80pX 15601.0 -19.0 -1575589254 15601 -441465.18744746427 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.396 I0S8mgt10Gm 15601.0 -61.0 1114673625 15601 312320.9932754273 -15858 392352.0 -15601.0 158740.17500000002 -6432.0 61.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.434 I7MI02kTvL36N 15601.0 -3.0 -1714949058 15601 -480512.48472961615 -15858 19296.0 -15601.0 158740.17500000002 -6432.0 3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:31.808 IAFkV5cK0Jh10Im806u 15601.0 20.0 1638071199 15601 458972.03670495935 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.476 IAnfq 15601.0 44.0 -2098300466 15601 -587923.9187447465 -15858 -283008.0 -15601.0 158740.17500000002 -6432.0 -44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.025 ICK66G8e8 15601.0 0.0 -901264012 15601 -252525.6407957411 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.965 IDPh0xt5aj4nhjfgvB6O6X3 15601.0 2.0 -664588420 15601 -186211.38133931073 -15858 -12864.0 -15601.0 158740.17500000002 -6432.0 -2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.733 IJRqL2Ec6JGceMcn6bUyuRU8 15601.0 -17.0 -1275985495 15601 -357519.05155505746 -15858 109344.0 -15601.0 158740.17500000002 -6432.0 17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.215 IMC05lv4PYLJb2n3r7T 15601.0 55.0 1582500035 15601 443401.5228355282 -15858 -353760.0 -15601.0 158740.17500000002 -6432.0 -55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.331 ISSP0gjn3qxAC7gH3l11N6 15601.0 8.0 183549371 15601 51428.79546091342 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.778 IYlXj3xg 15601.0 20.0 505524678 15601 141643.22723451947 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.699 Ib62k3A2XLg2TL 15601.0 -29.0 -2143024405 15601 -600455.14289717 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.19 IpDn22 15601.0 -19.0 -1322538563 15601 -370562.78033062484 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.195 Is5DY4nt6n85p8 15601.0 -11.0 -655443218 15601 -183648.98234799664 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.022 IvE07gK77 15601.0 -20.0 -1293754251 15601 -362497.68870832166 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.754 J0I71XNHjvS8 15601.0 -3.0 -2076312756 15601 -581763.1706360325 -15858 19296.0 -15601.0 158740.17500000002 -6432.0 3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.762 J4Fr2Ysig4v1h1y4Yg0QF8w8 15601.0 23.0 1499121057 15601 420039.5228355282 -15858 -147936.0 -15601.0 158740.17500000002 -6432.0 -23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.469 J73U1aQTRUd 15601.0 -6.0 -573372032 15601 -160653.4132810311 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.09 JE6y6UBN33n8Kcs 15601.0 -60.0 -2041965187 15601 -572139.3070888204 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.631 JEVyBv2IqG1xPJASdCL8 15601.0 33.0 739625813 15601 207236.14822079014 -15858 -212256.0 -15601.0 158740.17500000002 -6432.0 -33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.324 JFRQYgF2d57MV 15601.0 49.0 -128270777 15601 -35940.25693471561 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.014 JGPmC0e7g1h87 15601.0 -52.0 -886068046 15601 -248267.8750350238 -15858 334464.0 -15601.0 158740.17500000002 -6432.0 52.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.952 JN1cd 15601.0 14.0 -1426659283 15601 -399736.4200056038 -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.902 JO2608Lv74HyA 15601.0 -21.0 441754322 15601 123775.37741664331 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.741 JeNoQM2514UXI306K8SbN 15601.0 -2.0 624304190 15601 174924.12160268982 -15858 12864.0 -15601.0 158740.17500000002 -6432.0 2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.295 Jf3TV3LhLih 15601.0 45.0 -223953421 15601 -62749.62762678621 -15858 -289440.0 -15601.0 158740.17500000002 -6432.0 -45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.057 JfvDur75VQCb53GicM7hHU 15601.0 3.0 -1580362265 15601 -442802.5399271505 -15858 -19296.0 -15601.0 158740.17500000002 -6432.0 -3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.326 JqulbtcrXcNBymoHD0uDu 15601.0 2.0 496222742 15601 139036.9128607453 -15858 -12864.0 -15601.0 158740.17500000002 -6432.0 -2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.556 Jto1Ej2BS 15601.0 53.0 1556590849 15601 436142.014289717 -15858 -340896.0 -15601.0 158740.17500000002 -6432.0 -53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.383 K3DGd0 15601.0 41.0 -1730738390 15601 -484936.5060240964 -15858 -263712.0 -15601.0 158740.17500000002 -6432.0 -41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.979 K3d77AuD2 15601.0 -37.0 943423950 15601 264338.4561501821 -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.114 KO3lYMSBj 15601.0 15.0 -1106735397 15601 -310096.77696833847 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.564 KV5evP72y5O6w7j 15601.0 -19.0 -1040575969 15601 -291559.5318016251 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.914 KX43450qk3ifahho2 15601.0 -19.0 853662696 15601 239188.2028579434 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.84 KXy5w41XCCA8oA 15601.0 12.0 -1331125878 15601 -372968.86466797424 -15858 -77184.0 -15601.0 158740.17500000002 -6432.0 -12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.189 Keq6tT2y4kB7 15601.0 14.0 -1970072997 15601 -551995.796301485 -15858 -90048.0 -15601.0 158740.17500000002 -6432.0 -14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.433 Kp7FRaBtqU8i2U1 15601.0 53.0 -1231026402 15601 -344921.9394788456 -15858 -340896.0 -15601.0 158740.17500000002 -6432.0 -53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.579 Kt5AoC5 15601.0 1.0 -208178544 15601 -58329.65648641076 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.284 L1pn2rBecf3v4mOe 15601.0 -50.0 547762198 15601 153477.78033062484 -15858 321600.0 -15601.0 158740.17500000002 -6432.0 50.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.418 L2WL0K8Q3077Q7lHWxq3 15601.0 21.0 -893636289 15601 -250388.42504903334 -15858 -135072.0 -15601.0 158740.17500000002 -6432.0 -21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.918 LGM2rR 15601.0 -5.0 286911598 15601 80389.91258055478 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.07 LLeNMJ3ml 15601.0 44.0 -780348314 15601 -218646.20734099188 -15858 -283008.0 -15601.0 158740.17500000002 -6432.0 -44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.965 LW12Cn18Fa3jK0 15601.0 1.0 1365515285 15601 382604.45082656207 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.771 Lc62N872p2Qx048D8x 15601.0 36.0 503569096 15601 141095.29167834128 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.805 Ljca2gTfVlP3iiRV4Ue 15601.0 55.0 1386764124 15601 388558.1742785094 -15858 -353760.0 -15601.0 158740.17500000002 -6432.0 -55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.104 Lm4jGS6uC6m0buRvp63 15601.0 34.0 -1028809597 15601 -288262.70579994394 -15858 -218688.0 -15601.0 158740.17500000002 -6432.0 -34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.044 Lptx5Gx2Mw5PLl4hSL6T67F 15601.0 35.0 NULL 15601 NULL -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.812 LrcpM 15601.0 35.0 -1198622822 15601 -335842.7632390025 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.903 LxdPDb 15601.0 -25.0 907202969 15601 254189.68030260576 -15858 160800.0 -15601.0 158740.17500000002 -6432.0 25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:43.771 M40e006lkM2L 15601.0 49.0 -1107321329 15601 -310260.9495657047 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.515 MD1CaRLo1Q1yu8633IB 15601.0 -11.0 1417503370 15601 397171.0198935276 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.437 MHUrF1wtS4FCMIT6aP5 15601.0 18.0 1102736886 15601 308976.4320537966 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.302 MKVQYGxtltIv4QN 15601.0 -24.0 146845669 15601 41144.76576071729 -15858 154368.0 -15601.0 158740.17500000002 -6432.0 24.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.069 MO74jra6B1534xeWwCNp0k5 15601.0 -62.0 68899019 15601 19304.85261978145 -15858 398784.0 -15601.0 158740.17500000002 -6432.0 62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.881 MOrNN2vu2e 15601.0 -40.0 561535341 15601 157336.88456150182 -15858 257280.0 -15601.0 158740.17500000002 -6432.0 40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.199 Ma0cUc3gxu236hG 15601.0 -25.0 -414129290 15601 -116035.10507144859 -15858 160800.0 -15601.0 158740.17500000002 -6432.0 25.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.766 Mfyi8GP6X7lQ28o3l 15601.0 15.0 -1540302337 15601 -431578.12748669094 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.748 Mg8NV0cpt7B80 15601.0 -14.0 -466156812 15601 -130612.72401232838 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.71 MhnIfCXt3OD 15601.0 -23.0 -1046520269 15601 -293225.0683664892 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.306 MnGh7cJ8Tqfj5SM3i643 15601.0 -49.0 2025282930 15601 567465.0966657327 -15858 315168.0 -15601.0 158740.17500000002 -6432.0 49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.687 Mpl1s7so8 15601.0 20.0 -1195710741 15601 -335026.8257214906 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.372 Ms3HD0o 15601.0 -9.0 108834881 15601 30494.50294200056 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.331 N6s6Ya7n38uF3 15601.0 4.0 -1096047343 15601 -307102.08545811154 -15858 -25728.0 -15601.0 158740.17500000002 -6432.0 -4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.617 N887uW7KRb6LMp 15601.0 -31.0 1521898163 15601 426421.4522275147 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.15 NKt630 15601.0 -11.0 -1133138233 15601 -317494.601569067 -15858 70752.0 -15601.0 158740.17500000002 -6432.0 11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.838 NP22kVaQGeaH604 15601.0 15.0 -1675398355 15601 -469430.75231157185 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.847 NaTC1s58bEK 15601.0 -9.0 NULL 15601 NULL -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.101 Ner2VnJw3kK6StMYD 15601.0 -39.0 -1651489748 15601 -462731.7870551975 -15858 250848.0 -15601.0 158740.17500000002 -6432.0 39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.558 NmR21ryn0FG67 15601.0 -24.0 -1496666324 15601 -419351.7298963295 -15858 154368.0 -15601.0 158740.17500000002 -6432.0 24.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.064 NrCRG0ol8t3w116fK2 15601.0 18.0 NULL 15601 NULL -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.697 O2387e47vBg 15601.0 -1.0 -789881959 15601 -221317.44438217988 -15858 6432.0 -15601.0 158740.17500000002 -6432.0 1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:52.595 O30yrAd1e8dgm5 15601.0 62.0 -1838132825 15601 -515027.4096385542 -15858 -398784.0 -15601.0 158740.17500000002 -6432.0 -62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.882 O77TCNDlf8w 15601.0 -31.0 -46453649 15601 -13015.87251330905 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.255 OI5Fo 15601.0 -58.0 -1560616588 15601 -437269.98823199776 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.061 OX3YD1C1JMmS52Y 15601.0 5.0 -1668687246 15601 -467550.3631269263 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.345 ObGm1w 15601.0 -37.0 NULL 15601 NULL -15858 237984.0 -15601.0 158740.17500000002 -6432.0 37.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.612 Oc6P2F1UD0D0T0haR 15601.0 21.0 1312374660 15601 367714.9509666573 -15858 -135072.0 -15601.0 158740.17500000002 -6432.0 -21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.186 OgJ3DltBHB87rMQt2d 15601.0 -9.0 -911417577 15601 -255370.573550014 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.05 OgJuBiLW71S 15601.0 59.0 1129363554 15601 316436.97226113756 -15858 -379488.0 -15601.0 158740.17500000002 -6432.0 -59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.805 OqeL462twjC0O34y086scWbW 15601.0 -46.0 157777107 15601 44207.651162790695 -15858 295872.0 -15601.0 158740.17500000002 -6432.0 46.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.281 OtS4TXC3o8opoEsRtv5Sj 15601.0 8.0 2060956712 15601 577460.5525357242 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.14 OtgfTpqxm51v6Y 15601.0 -29.0 -393066261 15601 -110133.44382179882 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.996 P66k5ETLyP41K5o5gAT 15601.0 -22.0 NULL 15601 NULL -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:43.931 PEBBi 15601.0 42.0 509177858 15601 142666.81367329785 -15858 -270144.0 -15601.0 158740.17500000002 -6432.0 -42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.18 PFiGGCalsC 15601.0 -5.0 -1029272743 15601 -288392.4749229476 -15858 32160.0 -15601.0 158740.17500000002 -6432.0 5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.912 PIKnd8tj154 15601.0 -45.0 1619226365 15601 453691.89268702717 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:16.338 PJoW4 15601.0 -3.0 504525087 15601 141363.15130288596 -15858 19296.0 -15601.0 158740.17500000002 -6432.0 3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.21 PK01P7dDg2f8IAPjo662y072 15601.0 58.0 -1384901601 15601 -388036.3129728215 -15858 -373056.0 -15601.0 158740.17500000002 -6432.0 -58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.953 PN27a314v6PyUpVfeiU 15601.0 18.0 -973905398 15601 -272879.0692070608 -15858 -115776.0 -15601.0 158740.17500000002 -6432.0 -18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.438 PN71Bl6jM 15601.0 -41.0 -1064437283 15601 -298245.24600728496 -15858 263712.0 -15601.0 158740.17500000002 -6432.0 41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.49 PQyN2mruXRR47dPEkesk 15601.0 5.0 -507162101 15601 -142102.01765200336 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.767 PS4fs5g7Itj843qvX 15601.0 56.0 -1378117091 15601 -386135.3575231157 -15858 -360192.0 -15601.0 158740.17500000002 -6432.0 -56.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.953 PY216BgK57qkoktjrjHb 15601.0 -48.0 1198344254 15601 335764.71112356405 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.695 PxcCoxYeQ5M 15601.0 -34.0 1218760785 15601 341485.2297562342 -15858 218688.0 -15601.0 158740.17500000002 -6432.0 34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.741 PyGaf 15601.0 -16.0 -1505978287 15601 -421960.8537405436 -15858 102912.0 -15601.0 158740.17500000002 -6432.0 16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.789 Q08uv20m 15601.0 39.0 -1046301933 15601 -293163.89268702717 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.986 Q1T7u0syw2NPveOu 15601.0 -18.0 -1185085807 15601 -332049.8198374895 -15858 115776.0 -15601.0 158740.17500000002 -6432.0 18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.38 Q30600R1 15601.0 53.0 -1283930255 15601 -359745.0980666854 -15858 -340896.0 -15601.0 158740.17500000002 -6432.0 -53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.559 Q37LCWVlT8TkMm2f3h7j0d 15601.0 -34.0 1476533372 15601 413710.6674138414 -15858 218688.0 -15601.0 158740.17500000002 -6432.0 34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.961 Q3mmj6mG4EG8H 15601.0 10.0 -720023732 15601 -201743.83076492016 -15858 -64320.0 -15601.0 158740.17500000002 -6432.0 -10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.617 Q4yNJBnb 15601.0 -10.0 1710641158 15601 479305.45194732415 -15858 64320.0 -15601.0 158740.17500000002 -6432.0 10.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.42 Q6v087IOF2 15601.0 -9.0 192161117 15601 53841.7251330905 -15858 57888.0 -15601.0 158740.17500000002 -6432.0 9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.315 Q76PX622TlrNxcGCf5p507o8 15601.0 -22.0 1270307708 15601 355928.189408798 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.453 QCY0pTKdHRqrf5P1N58 15601.0 4.0 -1677882999 15601 -470126.9260297002 -15858 -25728.0 -15601.0 158740.17500000002 -6432.0 -4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.681 QFHk87n5xsCYI226 15601.0 53.0 -782857402 15601 -219349.23003642476 -15858 -340896.0 -15601.0 158740.17500000002 -6432.0 -53.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.415 QLA5Le5ePE53UgM7km6 15601.0 51.0 -232545302 15601 -65156.99131409358 -15858 -328032.0 -15601.0 158740.17500000002 -6432.0 -51.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.808 QV08okL83Ug1jwOV8h74 15601.0 54.0 493058527 15601 138150.3297842533 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.754 QWSToWHfYl4rAJcLMwO 15601.0 54.0 1825424393 15601 511466.6273465957 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.067 Qq1cBHJkF7A3y3v5crIN0fJ 15601.0 -33.0 -1583014792 15601 -443545.75287195295 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.435 Qq2Jy5Iy15LsnaWwI 15601.0 -55.0 1958873163 15601 548857.7088820398 -15858 353760.0 -15601.0 158740.17500000002 -6432.0 55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.832 QrFWcQo7 15601.0 -27.0 -1152127938 15601 -322815.33706920705 -15858 173664.0 -15601.0 158740.17500000002 -6432.0 27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.603 R4WtD3 15601.0 -54.0 -1754189160 15601 -491507.1896889885 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.587 R68avA7MskCgYOOEP 15601.0 -44.0 1448245990 15601 405784.81087139255 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.331 R8IJh6386ba3D3VS70FSlw6 15601.0 -52.0 440096608 15601 123310.90165312412 -15858 334464.0 -15601.0 158740.17500000002 -6432.0 52.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.054 RFm8XplgEW3ep0R 15601.0 48.0 -505179873 15601 -141546.6161389745 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.579 RO83j2qQsq7 15601.0 1.0 345752927 15601 96876.6957130849 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.727 ROWD7iWDvXjq3RU60LfIm 15601.0 27.0 391612768 15601 109726.18884841692 -15858 -173664.0 -15601.0 158740.17500000002 -6432.0 -27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.368 RV01bFdAim2mhn0is3SuP 15601.0 20.0 -1644694994 15601 -460827.9613337069 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.246 RWDJpR813I70rA48j3St8 15601.0 -8.0 667749103 15601 187096.97478285234 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.232 Rf45Knu04s4160Ic0TDdw 15601.0 -59.0 1781893821 15601 499269.7733258616 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.863 RjYdeaB 15601.0 11.0 -1656847358 15601 -464232.93863827403 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.134 Rkjxcgk8n8m2B3jrKY1PbS3 15601.0 -24.0 -402193022 15601 -112690.6758195573 -15858 154368.0 -15601.0 158740.17500000002 -6432.0 24.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.584 RrQO5beX488KbcA6g4Jnu5 15601.0 -29.0 -1912094416 15601 -535750.7469879518 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.061 S1gQ06M353rQ5vm2a24EMN 15601.0 -19.0 -643533009 15601 -180311.85458111516 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.238 S25uia48N4 15601.0 39.0 -1351910626 15601 -378792.5542168675 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.336 S731TWfDrNnVe8p2yuE1k 15601.0 -4.0 956522842 15601 268008.6416363127 -15858 25728.0 -15601.0 158740.17500000002 -6432.0 4.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.747 SD7DWsK 15601.0 54.0 -1479988050 15601 -414678.63547212107 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.26 SJ8F14f7LlNlWpBJ 15601.0 15.0 NULL 15601 NULL -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.754 SJf447 15601.0 20.0 1129495890 15601 316474.05155505746 -15858 -128640.0 -15601.0 158740.17500000002 -6432.0 -20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.043 STrL4f3N1wj 15601.0 -60.0 -5953872 15601 -1668.2185486130568 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.058 Sfe4pA7B3f5x 15601.0 -15.0 419609353 15601 117570.5668254413 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.132 ShjbW3q38Px24Hx 15601.0 -22.0 -1803981239 15601 -505458.4586718969 -15858 141504.0 -15601.0 158740.17500000002 -6432.0 22.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.822 SjG26TSvqw3myt 15601.0 0.0 -39854776 15601 -11166.930792939198 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.18 SpJMvUVUfHrf1A723s10EdC 15601.0 47.0 -1230441185 15601 -344757.96721770806 -15858 -302304.0 -15601.0 158740.17500000002 -6432.0 -47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.051 Sr02RjVo6gEbKjr4Ftm0d 15601.0 35.0 -605058422 15601 -169531.639674979 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.284 SvKL2lM7lc 15601.0 -26.28 808737125 15601 226600.48332866348 -15858 169032.97 -15601.0 158740.17500000002 -6432.0 26.28 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.345 SwEtmG886dSmCVYqhnvUm 15601.0 -48.0 2080590537 15601 582961.7643597646 -15858 308736.0 -15601.0 158740.17500000002 -6432.0 48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.195 Syoe8Gm2 15601.0 -55.0 2020504394 15601 566126.1961333707 -15858 353760.0 -15601.0 158740.17500000002 -6432.0 55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.401 T3KP6V 15601.0 -59.0 -1315413812 15601 -368566.492574951 -15858 379488.0 -15601.0 158740.17500000002 -6432.0 59.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.071 T45sp 15601.0 -18.0 1800301969 15601 504427.5620622023 -15858 115776.0 -15601.0 158740.17500000002 -6432.0 18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.108 T5W42P5q3uxBgYya8Et085C 15601.0 9.0 -2093472028 15601 -586571.0361445784 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.884 T7R4Jnl7s3d053wmyOrt 15601.0 -40.0 375928903 15601 105331.71840851779 -15858 257280.0 -15601.0 158740.17500000002 -6432.0 40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.06 T7YaUc10ta 15601.0 55.0 -1224290649 15601 -343034.64527878957 -15858 -353760.0 -15601.0 158740.17500000002 -6432.0 -55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.451 TEM55fi2Ly 15601.0 -57.0 -585350546 15601 -164009.6794620342 -15858 366624.0 -15601.0 158740.17500000002 -6432.0 57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.705 TGfOwisk27yqU43c4NdpO 15601.0 -14.0 1892527183 15601 530268.193611656 -15858 90048.0 -15601.0 158740.17500000002 -6432.0 14.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.004 TN1V103235ex7r5y1UnD 15601.0 12.0 1028143712 15601 288076.13112916786 -15858 -77184.0 -15601.0 158740.17500000002 -6432.0 -12.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.88 TNE8eY3 15601.0 -42.0 1987471865 15601 556870.7943401512 -15858 270144.0 -15601.0 158740.17500000002 -6432.0 42.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.868 TTC6F8qbjDrUwqlWQ674T 15601.0 -56.0 -971846497 15601 -272302.184645559 -15858 360192.0 -15601.0 158740.17500000002 -6432.0 56.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.945 TXaLgi3L562jI1 15601.0 54.0 -1735553309 15601 -486285.6007284954 -15858 -347328.0 -15601.0 158740.17500000002 -6432.0 -54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.716 Tcvj5uSM1NCQUr 15601.0 1.0 -1025788056 15601 -287416.0986270664 -15858 -6432.0 -15601.0 158740.17500000002 -6432.0 -1.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:08.445 TwtBSyUgu7uOpsQ 15601.0 48.0 846324964 15601 237132.2398430933 -15858 -308736.0 -15601.0 158740.17500000002 -6432.0 -48.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.396 U2MJbm 15601.0 -20.0 823972698 15601 230869.34659568506 -15858 128640.0 -15601.0 158740.17500000002 -6432.0 20.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.732 U62U7O2LVYg 15601.0 21.0 1837742836 15601 514918.1384141216 -15858 -135072.0 -15601.0 158740.17500000002 -6432.0 -21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:47.57 U75G6OsrKmd7KxMe 15601.0 -29.0 -1703837738 15601 -477399.1980947044 -15858 186528.0 -15601.0 158740.17500000002 -6432.0 29.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.054 UG6g10Lb571g 15601.0 -8.0 -1998625094 15601 -559995.8234799664 -15858 51456.0 -15601.0 158740.17500000002 -6432.0 8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.923 UHSnND7vTVfm80W3E3AX5aR 15601.0 -19.0 268499605 15601 75231.04651162791 -15858 122208.0 -15601.0 158740.17500000002 -6432.0 19.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.137 UQR88o20Gf453RP 15601.0 -44.0 -1447719201 15601 -405637.2095825161 -15858 283008.0 -15601.0 158740.17500000002 -6432.0 44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.68 UU01Fkn1Fp2d 15601.0 33.0 2094164536 15601 586765.0703278229 -15858 -212256.0 -15601.0 158740.17500000002 -6432.0 -33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.782 UVo71u40can1RQJ0MTNPS 15601.0 -27.0 37567484 15601 10526.053236200616 -15858 173664.0 -15601.0 158740.17500000002 -6432.0 27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.583 UYC1dkb7n5YcmFAAbT2 15601.0 -31.0 -1357998994 15601 -380498.45727094426 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.357 Ubb7l 15601.0 -13.0 1179505870 15601 330486.3743345475 -15858 83616.0 -15601.0 158740.17500000002 -6432.0 13.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.137 Uw8VcBX726537W7Nc32f5og1 15601.0 -30.0 -1617443296 15601 -453192.29363967496 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.259 V10T8Fo0d5HOeEM8ysObmPU4 15601.0 5.0 -184458103 15601 -51683.413561221634 -15858 -32160.0 -15601.0 158740.17500000002 -6432.0 -5.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.324 V37l2corMwuEU0F2I4R 15601.0 -38.0 -1138820207 15601 -319086.6368730737 -15858 244416.0 -15601.0 158740.17500000002 -6432.0 38.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:06.982 V3L2j5d3q 15601.0 2.0 -400080827 15601 -112098.8587839731 -15858 -12864.0 -15601.0 158740.17500000002 -6432.0 -2.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.627 V3e7tuWVX0gajjH6X8 15601.0 -32.0 -1473796341 15601 -412943.777248529 -15858 205824.0 -15601.0 158740.17500000002 -6432.0 32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.872 V3ySf 15601.0 7.0 1329225687 15601 372436.4491454189 -15858 -45024.0 -15601.0 158740.17500000002 -6432.0 -7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.32 V74j2j3Pc8OY7tl 15601.0 -21.0 -813809028 15601 -228021.58251611097 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.545 VHe5j0T1o21J806LMb8ay1 15601.0 -16.0 2066094917 15601 578900.2289156626 -15858 102912.0 -15601.0 158740.17500000002 -6432.0 16.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:45.008 VNQIHXp5B80I 15601.0 -31.0 2006229754 15601 562126.5771924909 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.18 VT72k7T7C3N73lA10202 15601.0 57.0 -1393938237 15601 -390568.29279910336 -15858 -366624.0 -15601.0 158740.17500000002 -6432.0 -57.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.121 VTDTuUp 15601.0 -6.0 281019305 15601 78738.94788456151 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.948 VXtbOP4eT6x2R05 15601.0 -58.0 2006398616 15601 562173.8907256934 -15858 373056.0 -15601.0 158740.17500000002 -6432.0 58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.422 Vc0uIW6g2n7P8f75JDUG6yN 15601.0 15.0 274226131 15601 76835.5648641076 -15858 -96480.0 -15601.0 158740.17500000002 -6432.0 -15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.998 VftK7455nP4C2fb42Guv7I0 15601.0 -40.0 1194316702 15601 334636.2291958532 -15858 257280.0 -15601.0 158740.17500000002 -6432.0 40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.504 VkLA5W0AsJ2v7X7 15601.0 -60.0 -1743144280 15601 -488412.5189128607 -15858 385920.0 -15601.0 158740.17500000002 -6432.0 60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:12.413 Vt166H6HUcc 15601.0 -32.0 -1864500604 15601 -522415.41159988794 -15858 205824.0 -15601.0 158740.17500000002 -6432.0 32.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.14 W087uQpM6uJ2G5aB 15601.0 3.0 270888813 15601 75900.47996637714 -15858 -19296.0 -15601.0 158740.17500000002 -6432.0 -3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.429 W2i72S68FOFb0F0nq0s64Y 15601.0 -23.0 -287502046 15601 -80555.35051835248 -15858 147936.0 -15601.0 158740.17500000002 -6432.0 23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.906 W2o1wfC1yw61GkMU 15601.0 35.0 -419284856 15601 -117479.64583917064 -15858 -225120.0 -15601.0 158740.17500000002 -6432.0 -35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.697 W3QY4I4LLu6yX 15601.0 -6.0 19993315 15601 5601.9375175119085 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.189 W56kQ5UX8GHpErCJ0X0PiMg 15601.0 -54.0 1304453187 15601 365495.42925189127 -15858 347328.0 -15601.0 158740.17500000002 -6432.0 54.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.747 W58KCRgshk2VVbX 15601.0 11.0 2062427061 15601 577872.5304006725 -15858 -70752.0 -15601.0 158740.17500000002 -6432.0 -11.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.83 W5d6CKH 15601.0 -40.0 283135872 15601 79331.98991314093 -15858 257280.0 -15601.0 158740.17500000002 -6432.0 40.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.028 W6d48516 15601.0 -18.0 -1310922279 15601 -367308.0075651443 -15858 115776.0 -15601.0 158740.17500000002 -6432.0 18.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:11.91 W6w0xHjP 15601.0 -30.0 -532238997 15601 -149128.32642196695 -15858 192960.0 -15601.0 158740.17500000002 -6432.0 30.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:03.127 WBuN1V4lP1858Dd3 15601.0 -27.0 934071980 15601 261718.12272345196 -15858 173664.0 -15601.0 158740.17500000002 -6432.0 27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:04.699 WLct4cIh2E3 15601.0 26.0 -2141336536 15601 -599982.217988232 -15858 -167232.0 -15601.0 158740.17500000002 -6432.0 -26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:02.752 We3u7Ih60iJx1U2kH 15601.0 -33.0 707803275 15601 198319.7744466237 -15858 212256.0 -15601.0 158740.17500000002 -6432.0 33.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:05.327 Wkr033CN8bH7LI 15601.0 26.0 1747188649 15601 489545.7128047072 -15858 -167232.0 -15601.0 158740.17500000002 -6432.0 -26.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.894 Wn8om1ooSVQSHxcg5F 15601.0 -34.0 -1225938733 15601 -343496.4228075091 -15858 218688.0 -15601.0 158740.17500000002 -6432.0 34.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:48.244 Wpi2820uS61uJ7Gn7xu822MA 15601.0 58.0 805666814 15601 225740.2112636593 -15858 -373056.0 -15601.0 158740.17500000002 -6432.0 -58.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.819 Wqx20H0G3di6k6KN54T 15601.0 -15.0 -1925755234 15601 -539578.378817596 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:09.027 X03I20xG6O6Agj1sSW0Si3F 15601.0 -15.0 1057122452 15601 296195.6996357523 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:58.202 X27PKe6lm1EmNx6tkEGfQ 15601.0 -31.0 926099123 15601 259484.203698515 -15858 199392.0 -15601.0 158740.17500000002 -6432.0 31.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.459 X3E664G5sA 15601.0 -3.0 1649136404 15601 462072.4023536004 -15858 19296.0 -15601.0 158740.17500000002 -6432.0 3.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:56.567 XKSgnqfq2Nn18h7GB6 15601.0 9.0 -1145489043 15601 -320955.1815634632 -15858 -57888.0 -15601.0 158740.17500000002 -6432.0 -9.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.479 XO40KP8emk1B6Cf4O64 15601.0 -17.0 -1901567703 15601 -532801.2616979546 -15858 109344.0 -15601.0 158740.17500000002 -6432.0 17.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.437 XP4nn8i47ipR3tsL4Bua 15601.0 0.0 1049949527 15601 294185.9139815074 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.24 XQkXKeHtwH7 15601.0 0.0 10989626 15601 3079.189128607453 -15858 -0.0 -15601.0 158740.17500000002 NULL -0.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:57.801 XfVO17QmuH0yT1uQKCKvFtU 15601.0 23.0 -996165688 15601 -279116.19165032223 -15858 -147936.0 -15601.0 158740.17500000002 -6432.0 -23.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:53.039 XgGvxqJL7ioDnQ4Bue6spR 15601.0 8.0 53656310 15601 15033.989913140937 -15858 -51456.0 -15601.0 158740.17500000002 -6432.0 -8.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.116 XhyV0PF0kbo2yqP47G1M 15601.0 62.0 158194463 15601 44324.590361445786 -15858 -398784.0 -15601.0 158740.17500000002 -6432.0 -62.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.754 Xp6aP 15601.0 49.0 46706681 15601 13086.769683384702 -15858 -315168.0 -15601.0 158740.17500000002 -6432.0 -49.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:49.097 Xt8767d0562DL58h2yksj37 15601.0 52.0 -2125793790 15601 -595627.2877556739 -15858 -334464.0 -15601.0 158740.17500000002 -6432.0 -52.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:01.652 Xy07hchP3S32iW6YG3cn3 15601.0 41.0 NULL 15601 NULL -15858 -263712.0 -15601.0 158740.17500000002 -6432.0 -41.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:46.085 Y20HmnH71A88V4 15601.0 60.0 1428011023 15601 400115.1647520314 -15858 -385920.0 -15601.0 158740.17500000002 -6432.0 -60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:44.603 Y6mE20661Ek61Mf7mYtCQV5 15601.0 -7.0 724330421 15601 202950.5242364808 -15858 45024.0 -15601.0 158740.17500000002 -6432.0 7.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:07.707 Y71O40OUSsvw 15601.0 60.0 -657503893 15601 -184226.3639674979 -15858 -385920.0 -15601.0 158740.17500000002 -6432.0 -60.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.52 Y7y6VtlL3yi6mWjRecJ60 15601.0 39.0 1748908827 15601 490027.69038946484 -15858 -250848.0 -15601.0 158740.17500000002 -6432.0 -39.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.285 YA630l4W6 15601.0 55.0 -1559932440 15601 -437078.2964415803 -15858 -353760.0 -15601.0 158740.17500000002 -6432.0 -55.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:15.507 YN4su 15601.0 -35.0 1779870001 15601 498702.7181283273 -15858 225120.0 -15601.0 158740.17500000002 -6432.0 35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:50.205 YY83652Ij 15601.0 -6.0 -1761560547 15601 -493572.58251611097 -15858 38592.0 -15601.0 158740.17500000002 -6432.0 6.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:13.954 YaD841mDwJGjwjRgGtNU2 15601.0 -35.0 -994591123 15601 -278675.0134491454 -15858 225120.0 -15601.0 158740.17500000002 -6432.0 35.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:00.614 Ydu8G8I0720hU85E53t 15601.0 27.0 -2043827141 15601 -572661.0089660969 -15858 -173664.0 -15601.0 158740.17500000002 -6432.0 -27.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:55.218 YfGW4JvD 15601.0 36.0 445347927 15601 124782.27150462315 -15858 -231552.0 -15601.0 158740.17500000002 -6432.0 -36.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:10.649 YfL70dofbs6lhgKMX8kGsJ 15601.0 -47.0 -493471535 15601 -138266.05071448584 -15858 302304.0 -15601.0 158740.17500000002 -6432.0 47.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.098 Yfj785H813DA8 15601.0 44.0 -1144200805 15601 -320594.2294760437 -15858 -283008.0 -15601.0 158740.17500000002 -6432.0 -44.0 NULL -15601.0 -2.43391201E8 -1969-12-31 16:00:14.525 YiKM5PHS02HelmT2C 15601.0 -15.0 364559164 15601 102146.02521714766 -15858 96480.0 -15601.0 158740.17500000002 -6432.0 15.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:54.292 Ym27dR7t0Txx8Syq40cdvJD5 15601.0 -45.0 -1022657523 15601 -286538.95292799105 -15858 289440.0 -15601.0 158740.17500000002 -6432.0 45.0 NULL -15601.0 -2.43391201E8 -1969-12-31 15:59:51.164 YoE3rCoae83u101q 15601.0 -21.0 142487106 15601 39923.53768562622 -15858 135072.0 -15601.0 158740.17500000002 -6432.0 21.0 NULL -15601.0 -2.43391201E8 PREHOOK: query: -- TargetTypeClasses: Double, String, Long -- Functions: StDev, Sum, VarP, Count -- ArithmeticOps: Remainder, Divide, Subtract @@ -4032,6 +1751,7 @@ WHERE (((csmallint >= -257)) AND (ctinyint <= cint)))) GROUP BY csmallint ORDER BY csmallint +LIMIT 20 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: Double, String, Long -- Functions: StDev, Sum, VarP, Count @@ -4056,6 +1776,7 @@ WHERE (((csmallint >= -257)) AND (ctinyint <= cint)))) GROUP BY csmallint ORDER BY csmallint +LIMIT 20 POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage @@ -4121,17 +1842,20 @@ STAGE PLANS: expressions: KEY.reducesinkkey0 (type: smallint), VALUE._col0 (type: int), VALUE._col1 (type: double), VALUE._col2 (type: double), VALUE._col3 (type: bigint), VALUE._col4 (type: double), VALUE._col5 (type: int), VALUE._col6 (type: double), VALUE._col7 (type: int), VALUE._col8 (type: bigint), VALUE._col9 (type: bigint) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 Statistics: Num rows: 1251 Data size: 38405 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 1251 Data size: 38405 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Stage: Stage-0 Fetch Operator - limit: -1 + limit: 20 Processor Tree: ListSink @@ -4153,6 +1877,7 @@ WHERE (((csmallint >= -257)) AND (ctinyint <= cint)))) GROUP BY csmallint ORDER BY csmallint +LIMIT 20 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -4174,6 +1899,7 @@ WHERE (((csmallint >= -257)) AND (ctinyint <= cint)))) GROUP BY csmallint ORDER BY csmallint +LIMIT 20 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -4197,1437 +1923,6 @@ POSTHOOK: Input: default@alltypesorc -49 -49 0.0 0.028346938775510203 NULL NULL 49 0.0 -49 1 89011 -42 -42 0.0 0.03307142857142857 NULL NULL 42 0.0 -42 1 89011 -29 -29 0.0 0.04789655172413793 NULL NULL 29 0.0 -29 1 89011 --14 -14 0.0 0.09921428571428571 NULL NULL 14 0.0 -14 1 89011 -7 7 0.0 -0.19842857142857143 NULL NULL -7 0.0 7 1 89011 -8 8 0.0 -0.173625 NULL NULL -8 156.25 8 2 89012 -10 10 0.0 -0.1389 NULL NULL -10 0.0 10 1 89011 -19 19 0.0 -0.07310526315789474 NULL NULL -19 0.0 19 1 89011 -20 20 0.0 -0.06945 NULL NULL -20 0.0 20 1 89011 -25 25 0.0 -0.05556 NULL NULL -25 0.0 25 1 89011 -32 32 0.0 -0.04340625 NULL NULL -32 0.0 32 1 89011 -37 37 0.0 -0.03754054054054054 NULL NULL -37 0.0 37 1 89011 -41 41 0.0 -0.03387804878048781 NULL NULL -41 0.0 41 1 89011 -56 56 0.0 -0.02480357142857143 NULL NULL -56 0.0 56 1 89011 -72 72 0.0 -0.019291666666666665 NULL NULL -72 0.0 72 1 89011 -74 74 0.0 -0.01877027027027027 NULL NULL -74 16.0 74 2 89012 -77 2 0.0 -0.01803896103896104 NULL NULL -2 0.0 2 1 89011 -94 19 0.0 -0.014776595744680852 NULL NULL -19 0.0 19 1 89011 -99 24 0.0 -0.01403030303030303 NULL NULL -24 0.0 24 1 89011 -102 27 0.0 -0.01361764705882353 NULL NULL -27 0.0 27 1 89011 -130 55 0.0 -0.010684615384615384 NULL NULL -55 0.0 55 1 89011 -163 13 0.0 -0.008521472392638037 NULL NULL -13 0.0 13 1 89011 -181 31 0.0 -0.007674033149171271 NULL NULL -31 0.0 31 1 89011 -197 47 0.0 -0.007050761421319797 NULL NULL -47 256.88888888888886 47 6 89016 -199 49 0.0 -0.006979899497487437 NULL NULL -49 0.0 49 1 89011 -225 0 0.0 -0.006173333333333334 NULL NULL 0 0.0 0 1 89011 -239 14 0.0 -0.005811715481171548 NULL NULL -14 0.0 14 1 89011 -259 34 0.0 -0.005362934362934363 NULL NULL -34 0.0 34 1 89011 -265 40 0.0 -0.005241509433962264 NULL NULL -40 0.0 40 1 89011 -278 53 0.0 -0.004996402877697842 NULL NULL -53 0.0 53 1 89011 -283 58 0.0 -0.004908127208480565 NULL NULL -58 0.0 58 1 89011 -287 62 0.0 -0.0048397212543554 NULL NULL -62 0.0 62 1 89011 -306 6 0.0 -0.0045392156862745095 NULL NULL -6 0.0 6 1 89011 -308 8 0.0 -0.00450974025974026 NULL NULL -8 0.0 8 1 89011 -315 15 0.0 -0.004409523809523809 NULL NULL -15 0.0 15 1 89011 -340 40 0.0 -0.0040852941176470585 NULL NULL -40 0.0 40 1 89011 -359 59 0.0 -0.0038690807799442897 NULL NULL -59 64.0 59 2 89012 -363 63 0.0 -0.0038264462809917354 NULL NULL -63 0.0 63 1 89011 -367 67 0.0 -0.003784741144414169 NULL NULL -67 0.0 67 1 89011 -373 73 0.0 -0.0037238605898123325 NULL NULL -73 0.0 73 1 89011 -377 2 0.0 -0.0036843501326259947 NULL NULL -2 0.0 2 1 89011 -390 15 0.0 -0.0035615384615384615 NULL NULL -15 0.0 15 1 89011 -395 20 0.0 -0.0035164556962025318 NULL NULL -20 12.25 20 2 89012 -411 36 0.0 -0.0033795620437956204 NULL NULL -36 0.0 36 1 89011 -436 61 0.0 -0.0031857798165137617 NULL NULL -61 0.0 61 1 89011 -447 72 0.0 -0.0031073825503355706 NULL NULL -72 0.0 72 1 89011 -465 15 0.0 -0.0029870967741935485 NULL NULL -15 0.0 15 1 89011 -467 17 0.0 -0.002974304068522484 NULL NULL -17 0.0 17 1 89011 -486 36 0.0 -0.002858024691358025 NULL NULL -36 0.0 36 1 89011 -510 60 0.0 -0.002723529411764706 NULL NULL -60 0.0 60 1 89011 -516 66 0.0 -0.002691860465116279 NULL NULL -66 0.0 66 1 89011 -532 7 0.0 -0.0026109022556390976 NULL NULL -7 0.0 7 1 89011 -533 8 0.0 -0.0026060037523452156 NULL NULL -8 0.0 8 1 89011 -546 21 0.0 -0.002543956043956044 NULL NULL -21 256.0 21 2 89012 -547 22 0.0 -0.0025393053016453384 NULL NULL -22 0.0 22 1 89011 -557 32 0.0 -0.002493716337522442 NULL NULL -32 12.25 32 2 89012 -574 49 0.0 -0.0024198606271777 NULL NULL -49 0.0 49 1 89011 -594 69 0.0 -0.0023383838383838383 NULL NULL -69 0.0 69 1 89011 -611 11 0.0 -0.0022733224222585926 NULL NULL -11 0.0 11 1 89011 -612 12 0.0 -0.0022696078431372548 NULL NULL -12 0.0 12 1 89011 -645 45 0.0 -0.0021534883720930233 NULL NULL -45 0.0 45 1 89011 -650 50 0.0 -0.002136923076923077 NULL NULL -50 0.0 50 1 89011 -659 59 0.0 -0.0021077389984825493 NULL NULL -59 0.0 59 1 89011 -682 7 0.0 -0.0020366568914956013 NULL NULL -7 0.0 7 1 89011 -726 51 0.0 -0.0019132231404958677 NULL NULL -51 0.0 51 1 89011 -762 12 0.0 -0.0018228346456692914 NULL NULL -12 0.0 12 1 89011 -767 17 0.0 -0.0018109517601043025 NULL NULL -17 0.0 17 1 89011 -778 28 0.0 -0.0017853470437017994 NULL NULL -28 0.0 28 1 89011 -803 53 0.0 -0.001729763387297634 NULL NULL -53 25.0 53 2 89012 -834 9 0.0 -0.0016654676258992807 NULL NULL -9 0.0 9 1 89011 -838 13 0.0 -0.0016575178997613365 NULL NULL -13 0.0 13 1 89011 -859 34 0.0 -0.0016169965075669382 NULL NULL -34 0.0 34 1 89011 -865 40 0.0 -0.0016057803468208093 NULL NULL -40 0.0 40 1 89011 -876 51 0.0 -0.0015856164383561645 NULL NULL -51 0.0 51 1 89011 -893 68 0.0 -0.001555431131019037 NULL NULL -68 0.0 68 1 89011 -899 74 0.0 -0.0015450500556173526 NULL NULL -74 0.0 74 1 89011 -909 9 0.0 -0.001528052805280528 NULL NULL -9 0.0 9 1 89011 -960 60 0.0 -0.001446875 NULL NULL -60 0.0 60 1 89011 -987 12 0.0 -0.0014072948328267478 NULL NULL -12 0.0 12 1 89011 -995 20 0.0 -0.0013959798994974874 NULL NULL -20 0.0 20 1 89011 -997 22 0.0 -0.0013931795386158475 NULL NULL -22 0.0 22 1 89011 -1028 53 0.0 -0.0013511673151750973 NULL NULL -53 0.0 53 1 89011 -1049 74 0.0 -0.0013241182078169685 NULL NULL -74 0.0 74 1 89011 -1050 0 0.0 -0.0013228571428571428 NULL NULL 0 600.25 0 2 89012 -1083 33 0.0 -0.0012825484764542937 NULL NULL -33 0.0 33 1 89011 -1091 41 0.0 -0.0012731439046746104 NULL NULL -41 0.0 41 1 89011 -1097 47 0.0 -0.0012661804922515952 NULL NULL -47 0.0 47 1 89011 -1111 61 0.0 -0.0012502250225022503 NULL NULL -61 0.0 61 1 89011 -1121 71 0.0 -0.0012390722569134702 NULL NULL -71 0.0 71 1 89011 -1126 1 0.0 -0.001233570159857904 NULL NULL -1 0.0 1 1 89011 -1128 3 0.0 -0.0012313829787234042 NULL NULL -3 0.0 3 1 89011 -1135 10 0.0 -0.0012237885462555067 NULL NULL -10 0.0 10 1 89011 -1148 23 0.0 -0.00120993031358885 NULL NULL -23 0.0 23 1 89011 -1151 26 0.0 -0.001206776715899218 NULL NULL -26 342.25 26 2 89012 -1196 71 0.0 -0.001161371237458194 NULL NULL -71 0.0 71 1 89011 -1202 2 0.0 -0.0011555740432612313 NULL NULL -2 0.0 2 1 89011 -1206 6 0.0 -0.0011517412935323384 NULL NULL -6 0.0 6 1 89011 -1228 28 0.0 -0.0011311074918566775 NULL NULL -28 0.0 28 1 89011 -1232 32 0.0 -0.001127435064935065 NULL NULL -32 0.0 32 1 89011 -1246 46 0.0 -0.0011147672552166935 NULL NULL -46 0.0 46 1 89011 -1268 68 0.0 -0.0010954258675078864 NULL NULL -68 0.0 68 1 89011 -1270 70 0.0 -0.001093700787401575 NULL NULL -70 0.0 70 1 89011 -1274 74 0.0 -0.0010902668759811616 NULL NULL -74 0.0 74 1 89011 -1276 1 0.0 -0.0010885579937304076 NULL NULL -1 0.0 1 1 89011 -1282 7 0.0 -0.0010834633385335413 NULL NULL -7 0.0 7 1 89011 -1289 14 0.0 -0.001077579519006982 NULL NULL -14 0.0 14 1 89011 -1307 32 0.0 -0.0010627390971690894 NULL NULL -32 0.0 32 1 89011 -1310 35 0.0 -0.0010603053435114503 NULL NULL -35 0.0 35 1 89011 -1345 70 0.0 -0.0010327137546468402 NULL NULL -70 0.0 70 1 89011 -1346 71 0.0 -0.0010319465081723626 NULL NULL -71 0.0 71 1 89011 -1356 6 0.0 -0.0010243362831858407 NULL NULL -6 0.0 6 1 89011 -1358 8 0.0 -0.0010228276877761414 NULL NULL -8 0.0 8 1 89011 -1369 19 0.0 -0.001014609203798393 NULL NULL -19 0.0 19 1 89011 -1374 24 0.0 -0.0010109170305676856 NULL NULL -24 0.0 24 1 89011 -1399 49 0.0 -9.928520371694067E-4 NULL NULL -49 0.0 49 1 89011 -1416 66 0.0 -9.809322033898305E-4 NULL NULL -66 0.0 66 1 89011 -1419 69 0.0 -9.788583509513743E-4 NULL NULL -69 0.0 69 1 89011 -1435 10 0.0 -9.679442508710802E-4 NULL NULL -10 0.0 10 1 89011 -1437 12 0.0 -9.665970772442589E-4 NULL NULL -12 0.0 12 1 89011 -1444 19 0.0 -9.619113573407202E-4 NULL NULL -19 0.0 19 1 89011 -1455 30 0.0 -9.54639175257732E-4 NULL NULL -30 0.0 30 1 89011 -1458 33 0.0 -9.526748971193415E-4 NULL NULL -33 0.0 33 1 89011 -1464 39 0.0 -9.487704918032787E-4 NULL NULL -39 0.0 39 1 89011 -1467 42 0.0 -9.468302658486707E-4 NULL NULL -42 0.0 42 1 89011 -1475 50 0.0 -9.416949152542373E-4 NULL NULL -50 0.0 50 1 89011 -1496 71 0.0 -9.28475935828877E-4 NULL NULL -71 0.0 71 1 89011 -1502 2 0.0 -9.247669773635154E-4 NULL NULL -2 0.0 2 1 89011 -1505 5 0.0 -9.229235880398671E-4 NULL NULL -5 0.0 5 1 89011 -1512 12 0.0 -9.186507936507937E-4 NULL NULL -12 0.0 12 1 89011 -1515 15 0.0 -9.168316831683168E-4 NULL NULL -15 0.0 15 1 89011 -1542 42 0.0 -9.007782101167315E-4 NULL NULL -42 0.0 42 1 89011 -1546 46 0.0 -8.984476067270376E-4 NULL NULL -46 0.0 46 1 89011 -1556 56 0.0 -8.926735218508997E-4 NULL NULL -56 0.0 56 1 89011 -1562 62 0.0 -8.892445582586427E-4 NULL NULL -62 0.0 62 1 89011 -1567 67 0.0 -8.864071474154435E-4 NULL NULL -67 0.0 67 1 89011 -1577 2 0.0 -8.807863031071655E-4 NULL NULL -2 0.0 2 1 89011 -1600 25 0.0 -8.68125E-4 NULL NULL -25 0.0 25 1 89011 -1603 28 0.0 -8.66500311915159E-4 NULL NULL -28 0.0 28 1 89011 -1626 51 0.0 -8.542435424354244E-4 NULL NULL -51 0.0 51 1 89011 -1627 52 0.0 -8.537185003073141E-4 NULL NULL -52 0.0 52 1 89011 -1634 59 0.0 -8.500611995104039E-4 NULL NULL -59 0.0 59 1 89011 -1639 64 0.0 -8.474679682733375E-4 NULL NULL -64 0.0 64 1 89011 -1640 65 0.0 -8.469512195121952E-4 NULL NULL -65 0.0 65 1 89011 -1642 67 0.0 -8.459196102314251E-4 NULL NULL -67 0.0 67 1 89011 -1653 3 0.0 -8.402903811252269E-4 NULL NULL -3 0.0 3 1 89011 -1658 8 0.0 -8.377563329312425E-4 NULL NULL -8 0.0 8 1 89011 -1660 10 0.0 -8.367469879518073E-4 NULL NULL -10 0.0 10 1 89011 -1674 24 0.0 -8.297491039426523E-4 NULL NULL -24 0.0 24 1 89011 -1685 35 0.0 -8.243323442136499E-4 NULL NULL -35 0.0 35 1 89011 -1703 53 0.0 -8.15619495008808E-4 NULL NULL -53 0.0 53 1 89011 -1706 56 0.0 -8.141852286049238E-4 NULL NULL -56 0.0 56 1 89011 -1734 9 0.0 -8.01038062283737E-4 NULL NULL -9 0.0 9 1 89011 -1736 11 0.0 -8.001152073732719E-4 NULL NULL -11 0.0 11 1 89011 -1743 18 0.0 -7.969018932874355E-4 NULL NULL -18 0.0 18 1 89011 -1746 21 0.0 -7.955326460481099E-4 NULL NULL -21 0.0 21 1 89011 -1752 27 0.0 -7.928082191780822E-4 NULL NULL -27 0.0 27 1 89011 -1764 39 0.0 -7.874149659863946E-4 NULL NULL -39 462.25 39 2 89012 -1781 56 0.0 -7.798989331836047E-4 NULL NULL -56 0.0 56 1 89011 -1785 60 0.0 -7.781512605042017E-4 NULL NULL -60 0.0 60 1 89011 -1809 9 0.0 -7.678275290215589E-4 NULL NULL -9 0.0 9 1 89011 -1813 13 0.0 -7.661334804191947E-4 NULL NULL -13 0.0 13 1 89011 -1815 15 0.0 -7.652892561983471E-4 NULL NULL -15 0.0 15 1 89011 -1822 22 0.0 -7.623490669593852E-4 NULL NULL -22 0.0 22 1 89011 -1824 24 0.0 -7.615131578947369E-4 NULL NULL -24 0.0 24 1 89011 -1843 43 0.0 -7.5366250678242E-4 NULL NULL -43 0.0 43 1 89011 -1845 45 0.0 -7.528455284552846E-4 NULL NULL -45 0.0 45 1 89011 -1850 50 0.0 -7.508108108108108E-4 NULL NULL -50 0.0 50 1 89011 -1888 13 0.0 -7.356991525423729E-4 NULL NULL -13 0.0 13 1 89011 -1901 26 0.0 -7.306680694371384E-4 NULL NULL -26 0.0 26 1 89011 -1923 48 0.0 -7.223088923556943E-4 NULL NULL -48 0.0 48 1 89011 -1931 56 0.0 -7.193164163645779E-4 NULL NULL -56 361.0 56 2 89012 -1947 72 0.0 -7.134052388289676E-4 NULL NULL -72 0.0 72 1 89011 -1951 1 0.0 -7.119425935417735E-4 NULL NULL -1 0.0 1 1 89011 -1965 15 0.0 -7.068702290076336E-4 NULL NULL -15 0.0 15 1 89011 -1967 17 0.0 -7.061514997458058E-4 NULL NULL -17 0.0 17 1 89011 -1979 29 0.0 -7.018696311268317E-4 NULL NULL -29 0.0 29 1 89011 -2000 50 0.0 -6.945E-4 NULL NULL -50 0.0 50 1 89011 -2006 56 0.0 -6.924227318045863E-4 NULL NULL -56 0.0 56 1 89011 -2007 57 0.0 -6.920777279521674E-4 NULL NULL -57 0.0 57 1 89011 -2011 61 0.0 -6.907011437095972E-4 NULL NULL -61 930.25 61 2 89012 -2014 64 0.0 -6.896722939424032E-4 NULL NULL -64 0.0 64 1 89011 -2015 65 0.0 -6.893300248138958E-4 NULL NULL -65 0.0 65 1 89011 -2021 71 0.0 -6.872835230084117E-4 NULL NULL -71 0.0 71 1 89011 -2075 50 0.0 -6.693975903614458E-4 NULL NULL -50 0.0 50 1 89011 -2078 53 0.0 -6.684311838306064E-4 NULL NULL -53 0.0 53 1 89011 -2109 9 0.0 -6.58605974395448E-4 NULL NULL -9 0.0 9 1 89011 -2112 12 0.0 -6.576704545454545E-4 NULL NULL -12 0.0 12 1 89011 -2119 19 0.0 -6.554978763567721E-4 NULL NULL -19 0.0 19 1 89011 -2123 23 0.0 -6.542628356099859E-4 NULL NULL -23 0.0 23 1 89011 -2157 57 0.0 -6.439499304589708E-4 NULL NULL -57 0.0 57 1 89011 -2164 64 0.0 -6.418669131238447E-4 NULL NULL -64 0.0 64 1 89011 -2166 66 0.0 -6.412742382271468E-4 NULL NULL -66 0.0 66 1 89011 -2170 70 0.0 -6.400921658986175E-4 NULL NULL -70 0.0 70 1 89011 -2171 71 0.0 -6.397973284200829E-4 NULL NULL -71 0.0 71 1 89011 -2176 1 0.0 -6.38327205882353E-4 NULL NULL -1 0.0 1 1 89011 -2192 17 0.0 -6.336678832116788E-4 NULL NULL -17 0.0 17 1 89011 -2201 26 0.0 -6.310767832803272E-4 NULL NULL -26 0.0 26 1 89011 -2208 33 0.0 -6.290760869565217E-4 NULL NULL -33 0.0 33 1 89011 -2211 36 0.0 -6.282225237449118E-4 NULL NULL -36 0.0 36 1 89011 -2213 38 0.0 -6.276547672842296E-4 NULL NULL -38 0.0 38 1 89011 -2216 41 0.0 -6.268050541516245E-4 NULL NULL -41 0.0 41 1 89011 -2227 52 0.0 -6.237090255949708E-4 NULL NULL -52 0.0 52 1 89011 -2234 59 0.0 -6.217547000895255E-4 NULL NULL -59 0.0 59 1 89011 -2242 67 0.0 -6.195361284567351E-4 NULL NULL -67 0.0 67 1 89011 -2251 1 0.0 -6.170590848511773E-4 NULL NULL -1 0.0 1 1 89011 -2269 19 0.0 -6.121639488761569E-4 NULL NULL -19 0.0 19 1 89011 -2272 22 0.0 -6.113556338028169E-4 NULL NULL -22 0.0 22 1 89011 -2280 30 0.0 -6.092105263157895E-4 NULL NULL -30 0.0 30 1 89011 -2284 34 0.0 -6.081436077057794E-4 NULL NULL -34 0.0 34 1 89011 -2308 58 0.0 -6.018197573656846E-4 NULL NULL -58 0.0 58 1 89011 -2310 60 0.0 -6.012987012987013E-4 NULL NULL -60 0.0 60 1 89011 -2316 66 0.0 -5.997409326424871E-4 NULL NULL -66 0.0 66 1 89011 -2319 69 0.0 -5.989650711513584E-4 NULL NULL -69 0.0 69 1 89011 -2322 72 0.0 -5.981912144702843E-4 NULL NULL -72 0.0 72 1 89011 -2339 14 0.0 -5.938435228730227E-4 NULL NULL -14 0.0 14 1 89011 -2353 28 0.0 -5.903102422439439E-4 NULL NULL -28 225.0 28 2 89012 -2359 34 0.0 -5.888088172954642E-4 NULL NULL -34 0.0 34 1 89011 -2372 47 0.0 -5.855817875210792E-4 NULL NULL -47 0.0 47 1 89011 -2384 59 0.0 -5.826342281879195E-4 NULL NULL -59 0.0 59 1 89011 -2389 64 0.0 -5.814148179154458E-4 NULL NULL -64 0.0 64 1 89011 -2396 71 0.0 -5.797161936560935E-4 NULL NULL -71 0.0 71 1 89011 -2403 3 0.0 -5.780274656679151E-4 NULL NULL -3 0.0 3 1 89011 -2404 4 0.0 -5.777870216306157E-4 NULL NULL -4 0.0 4 1 89011 -2407 7 0.0 -5.770668882426257E-4 NULL NULL -7 0.0 7 1 89011 -2443 43 0.0 -5.685632419156775E-4 NULL NULL -43 0.0 43 1 89011 -2445 45 0.0 -5.680981595092025E-4 NULL NULL -45 0.0 45 1 89011 -2448 48 0.0 -5.674019607843137E-4 NULL NULL -48 0.0 48 1 89011 -2452 52 0.0 -5.664763458401305E-4 NULL NULL -52 0.0 52 1 89011 -2479 4 0.0 -5.603065752319483E-4 NULL NULL -4 0.0 4 1 89011 -2488 13 0.0 -5.582797427652733E-4 NULL NULL -13 0.0 13 1 89011 -2492 17 0.0 -5.573836276083467E-4 NULL NULL -17 0.0 17 1 89011 -2494 19 0.0 -5.569366479550922E-4 NULL NULL -19 0.0 19 1 89011 -2496 21 0.0 -5.564903846153847E-4 NULL NULL -21 600.25 21 2 89012 -2497 22 0.0 -5.562675210252303E-4 NULL NULL -22 0.0 22 1 89011 -2508 33 0.0 -5.538277511961722E-4 NULL NULL -33 0.0 33 1 89011 -2541 66 0.0 -5.466351829988194E-4 NULL NULL -66 0.0 66 1 89011 -2578 28 0.0 -5.38789759503491E-4 NULL NULL -28 0.0 28 1 89011 -2580 30 0.0 -5.383720930232558E-4 NULL NULL -30 0.0 30 1 89011 -2582 32 0.0 -5.379550735863672E-4 NULL NULL -32 0.0 32 1 89011 -2585 35 0.0 -5.37330754352031E-4 NULL NULL -35 0.0 35 1 89011 -2592 42 0.0 -5.358796296296296E-4 NULL NULL -42 0.0 42 1 89011 -2594 44 0.0 -5.354664610639938E-4 NULL NULL -44 0.0 44 1 89011 -2601 51 0.0 -5.340253748558247E-4 NULL NULL -51 0.0 51 1 89011 -2610 60 0.0 -5.32183908045977E-4 NULL NULL -60 0.0 60 1 89011 -2611 61 0.0 -5.319800842589047E-4 NULL NULL -61 0.0 61 1 89011 -2617 67 0.0 -5.30760412686282E-4 NULL NULL -67 0.0 67 1 89011 -2643 18 0.0 -5.255391600454029E-4 NULL NULL -18 0.0 18 1 89011 -2657 32 0.0 -5.227700414000753E-4 NULL NULL -32 0.0 32 1 89011 -2666 41 0.0 -5.210052513128282E-4 NULL NULL -41 0.0 41 1 89011 -2676 51 0.0 -5.190582959641256E-4 NULL NULL -51 0.0 51 1 89011 -2696 71 0.0 -5.152077151335311E-4 NULL NULL -71 0.0 71 1 89011 -2698 73 0.0 -5.148257968865827E-4 NULL NULL -73 0.0 73 1 89011 -2700 0 0.0 -5.144444444444444E-4 NULL NULL 0 0.0 0 1 89011 -2707 7 0.0 -5.131141485038789E-4 NULL NULL -7 0.0 7 1 89011 -2710 10 0.0 -5.125461254612546E-4 NULL NULL -10 0.0 10 1 89011 -2719 19 0.0 -5.108495770503862E-4 NULL NULL -19 0.0 19 1 89011 -2752 52 0.0 -5.047238372093023E-4 NULL NULL -52 0.0 52 1 89011 -2775 0 0.0 -5.005405405405406E-4 NULL NULL 0 0.0 0 1 89011 -2804 29 0.0 -4.953637660485022E-4 NULL NULL -29 0.0 29 1 89011 -2814 39 0.0 -4.936034115138592E-4 NULL NULL -39 0.0 39 1 89011 -2820 45 0.0 -4.925531914893618E-4 NULL NULL -45 0.0 45 1 89011 -2824 49 0.0 -4.918555240793201E-4 NULL NULL -49 0.0 49 1 89011 -2826 51 0.0 -4.915074309978769E-4 NULL NULL -51 0.0 51 1 89011 -2844 69 0.0 -4.883966244725738E-4 NULL NULL -69 0.0 69 1 89011 -2915 65 0.0 -4.7650085763293313E-4 NULL NULL -65 0.0 65 1 89011 -2921 71 0.0 -4.755220814789456E-4 NULL NULL -71 0.0 71 1 89011 -2922 72 0.0 -4.753593429158111E-4 NULL NULL -72 1521.0 72 2 89012 -2925 0 0.0 -4.748717948717949E-4 NULL NULL 0 182.25 0 2 89012 -2928 3 0.0 -4.7438524590163935E-4 NULL NULL -3 0.0 3 1 89011 -2933 8 0.0 -4.735765427889533E-4 NULL NULL -8 0.0 8 1 89011 -2969 44 0.0 -4.6783428763893565E-4 NULL NULL -44 0.0 44 1 89011 -2972 47 0.0 -4.673620457604307E-4 NULL NULL -47 0.0 47 1 89011 -2974 49 0.0 -4.670477471418964E-4 NULL NULL -49 0.0 49 1 89011 -2986 61 0.0 -4.651707970529136E-4 NULL NULL -61 0.0 61 1 89011 -2997 72 0.0 -4.6346346346346347E-4 NULL NULL -72 0.0 72 1 89011 -3018 18 0.0 -4.602385685884692E-4 NULL NULL -18 0.0 18 1 89011 -3030 30 0.0 -4.584158415841584E-4 NULL NULL -30 484.0 30 2 89012 -3058 58 0.0 -4.542184434270765E-4 NULL NULL -58 0.0 58 1 89011 -3066 66 0.0 -4.5303326810176126E-4 NULL NULL -66 0.0 66 1 89011 -3088 13 0.0 -4.498056994818653E-4 NULL NULL -13 0.0 13 1 89011 -3090 15 0.0 -4.4951456310679614E-4 NULL NULL -15 0.0 15 1 89011 -3110 35 0.0 -4.4662379421221867E-4 NULL NULL -35 0.0 35 1 89011 -3116 41 0.0 -4.457637997432606E-4 NULL NULL -41 0.0 41 1 89011 -3119 44 0.0 -4.4533504328310355E-4 NULL NULL -44 1.0 44 2 89012 -3139 64 0.0 -4.424976107040459E-4 NULL NULL -64 0.0 64 1 89011 -3140 65 0.0 -4.4235668789808916E-4 NULL NULL -65 0.0 65 1 89011 -3145 70 0.0 -4.4165341812400636E-4 NULL NULL -70 0.0 70 1 89011 -3152 2 0.0 -4.406725888324873E-4 NULL NULL -2 0.0 2 1 89011 -3168 18 0.0 -4.384469696969697E-4 NULL NULL -18 0.0 18 1 89011 -3192 42 0.0 -4.3515037593984965E-4 NULL NULL -42 0.0 42 1 89011 -3199 49 0.0 -4.341981869334167E-4 NULL NULL -49 0.0 49 1 89011 -3208 58 0.0 -4.3298004987531174E-4 NULL NULL -58 0.0 58 1 89011 -3211 61 0.0 -4.3257552164434755E-4 NULL NULL -61 0.0 61 1 89011 -3220 70 0.0 -4.313664596273292E-4 NULL NULL -70 0.0 70 1 89011 -3229 4 0.0 -4.3016413750387116E-4 NULL NULL -4 0.0 4 1 89011 -3236 11 0.0 -4.292336217552534E-4 NULL NULL -11 0.0 11 1 89011 -3248 23 0.0 -4.276477832512315E-4 NULL NULL -23 420.25 23 2 89012 -3256 31 0.0 -4.265970515970516E-4 NULL NULL -31 0.0 31 1 89011 -3333 33 0.0 -4.1674167416741676E-4 NULL NULL -33 0.0 33 1 89011 -3349 49 0.0 -4.14750671842341E-4 NULL NULL -49 0.0 49 1 89011 -3357 57 0.0 -4.1376228775692585E-4 NULL NULL -57 0.0 57 1 89011 -3366 66 0.0 -4.126559714795009E-4 NULL NULL -66 0.0 66 1 89011 -3377 2 0.0 -4.1131181522061E-4 NULL NULL -2 0.0 2 1 89011 -3406 31 0.0 -4.07809747504404E-4 NULL NULL -31 0.0 31 1 89011 -3437 62 0.0 -4.0413151003782367E-4 NULL NULL -62 0.0 62 1 89011 -3440 65 0.0 -4.037790697674419E-4 NULL NULL -65 0.0 65 1 89011 -3446 71 0.0 -4.030760301799188E-4 NULL NULL -71 0.0 71 1 89011 -3510 60 0.0 -3.957264957264957E-4 NULL NULL -60 0.0 60 1 89011 -3519 69 0.0 -3.9471440750213127E-4 NULL NULL -69 0.0 69 1 89011 -3520 70 0.0 -3.946022727272727E-4 NULL NULL -70 81.0 70 2 89012 -3522 72 0.0 -3.9437819420783647E-4 NULL NULL -72 0.0 72 1 89011 -3538 13 0.0 -3.9259468626342566E-4 NULL NULL -13 0.0 13 1 89011 -3555 30 0.0 -3.907172995780591E-4 NULL NULL -30 0.0 30 1 89011 -3571 46 0.0 -3.8896667600112013E-4 NULL NULL -46 0.0 46 1 89011 -3601 1 0.0 -3.857261871702305E-4 NULL NULL -1 0.0 1 1 89011 -3613 13 0.0 -3.8444505950733463E-4 NULL NULL -13 0.0 13 1 89011 -3617 17 0.0 -3.8401990599944705E-4 NULL NULL -17 0.0 17 1 89011 -3630 30 0.0 -3.8264462809917355E-4 NULL NULL -30 0.0 30 1 89011 -3666 66 0.0 -3.7888707037643206E-4 NULL NULL -66 0.0 66 1 89011 -3684 9 0.0 -3.770358306188925E-4 NULL NULL -9 0.0 9 1 89011 -3694 19 0.0 -3.7601515971846236E-4 NULL NULL -19 0.0 19 1 89011 -3708 33 0.0 -3.7459546925566343E-4 NULL NULL -33 0.0 33 1 89011 -3722 47 0.0 -3.7318645889306825E-4 NULL NULL -47 0.0 47 1 89011 -3725 50 0.0 -3.7288590604026846E-4 NULL NULL -50 0.0 50 1 89011 -3730 55 0.0 -3.7238605898123325E-4 NULL NULL -55 0.0 55 1 89011 -3737 62 0.0 -3.716885202033717E-4 NULL NULL -62 0.0 62 1 89011 -3768 18 0.0 -3.6863057324840767E-4 NULL NULL -18 0.0 18 1 89011 -3782 32 0.0 -3.672659968270756E-4 NULL NULL -32 0.0 32 1 89011 -3794 44 0.0 -3.661043753294676E-4 NULL NULL -44 0.0 44 1 89011 -3797 47 0.0 -3.6581511719778774E-4 NULL NULL -47 0.0 47 1 89011 -3799 49 0.0 -3.6562253224532774E-4 NULL NULL -49 0.0 49 1 89011 -3805 55 0.0 -3.650459921156373E-4 NULL NULL -55 1.0 55 2 89012 -3815 65 0.0 -3.6408912188728705E-4 NULL NULL -65 0.0 65 1 89011 -3817 67 0.0 -3.638983494891276E-4 NULL NULL -67 0.0 67 1 89011 -3827 2 0.0 -3.6294747844264436E-4 NULL NULL -2 0.0 2 1 89011 -3834 9 0.0 -3.6228482003129893E-4 NULL NULL -9 0.0 9 1 89011 -3846 21 0.0 -3.6115444617784714E-4 NULL NULL -21 0.0 21 1 89011 -3847 22 0.0 -3.610605666753314E-4 NULL NULL -22 0.0 22 1 89011 -3855 30 0.0 -3.603112840466926E-4 NULL NULL -30 0.0 30 1 89011 -3856 31 0.0 -3.6021784232365145E-4 NULL NULL -31 0.0 31 1 89011 -3874 49 0.0 -3.5854414042333504E-4 NULL NULL -49 0.0 49 1 89011 -3885 60 0.0 -3.575289575289575E-4 NULL NULL -60 0.0 60 1 89011 -3897 72 0.0 -3.5642802155504236E-4 NULL NULL -72 0.0 72 1 89011 -3908 8 0.0 -3.5542476970317296E-4 NULL NULL -8 0.0 8 1 89011 -3911 11 0.0 -3.5515213500383533E-4 NULL NULL -11 0.0 11 1 89011 -3944 44 0.0 -3.521805273833671E-4 NULL NULL -44 0.0 44 1 89011 -3945 45 0.0 -3.520912547528517E-4 NULL NULL -45 0.0 45 1 89011 -3958 58 0.0 -3.5093481556341586E-4 NULL NULL -58 0.0 58 1 89011 -3961 61 0.0 -3.5066902297399647E-4 NULL NULL -61 0.0 61 1 89011 -3971 71 0.0 -3.4978594812389827E-4 NULL NULL -71 0.0 71 1 89011 -4003 28 0.0 -3.469897576817387E-4 NULL NULL -28 0.0 28 1 89011 -4008 33 0.0 -3.465568862275449E-4 NULL NULL -33 0.0 33 1 89011 -4020 45 0.0 -3.455223880597015E-4 NULL NULL -45 0.0 45 1 89011 -4024 49 0.0 -3.451789264413519E-4 NULL NULL -49 0.0 49 1 89011 -4033 58 0.0 -3.4440862881229855E-4 NULL NULL -58 0.0 58 1 89011 -4055 5 0.0 -3.4254007398273737E-4 NULL NULL -5 0.0 5 1 89011 -4087 37 0.0 -3.3985808661609983E-4 NULL NULL -37 0.0 37 1 89011 -4096 46 0.0 -3.39111328125E-4 NULL NULL -46 0.0 46 1 89011 -4120 70 0.0 -3.371359223300971E-4 NULL NULL -70 0.0 70 1 89011 -4124 74 0.0 -3.368089233753637E-4 NULL NULL -74 0.0 74 1 89011 -4128 3 0.0 -3.364825581395349E-4 NULL NULL -3 36.0 3 2 89012 -4136 11 0.0 -3.3583172147001934E-4 NULL NULL -11 0.0 11 1 89011 -4151 26 0.0 -3.346181642977596E-4 NULL NULL -26 0.0 26 1 89011 -4153 28 0.0 -3.3445701902239344E-4 NULL NULL -28 0.0 28 1 89011 -4154 29 0.0 -3.343765045739047E-4 NULL NULL -29 0.0 29 1 89011 -4159 34 0.0 -3.3397451310411157E-4 NULL NULL -34 0.0 34 1 89011 -4162 37 0.0 -3.3373378183565596E-4 NULL NULL -37 0.0 37 1 89011 -4165 40 0.0 -3.334933973589436E-4 NULL NULL -40 0.0 40 1 89011 -4169 44 0.0 -3.331734228831854E-4 NULL NULL -44 0.0 44 1 89011 -4181 56 0.0 -3.3221717292513753E-4 NULL NULL -56 0.0 56 1 89011 -4197 72 0.0 -3.309506790564689E-4 NULL NULL -72 0.0 72 1 89011 -4207 7 0.0 -3.301640123603518E-4 NULL NULL -7 0.0 7 1 89011 -4228 28 0.0 -3.2852412488174076E-4 NULL NULL -28 0.0 28 1 89011 -4245 45 0.0 -3.2720848056537103E-4 NULL NULL -45 0.0 45 1 89011 -4256 56 0.0 -3.263627819548872E-4 NULL NULL -56 0.0 56 1 89011 -4261 61 0.0 -3.259798169443793E-4 NULL NULL -61 0.0 61 1 89011 -4264 64 0.0 -3.2575046904315195E-4 NULL NULL -64 0.0 64 1 89011 -4268 68 0.0 -3.2544517338331774E-4 NULL NULL -68 0.0 68 1 89011 -4292 17 0.0 -3.2362534948741846E-4 NULL NULL -17 0.0 17 1 89011 -4306 31 0.0 -3.2257315373896886E-4 NULL NULL -31 0.0 31 1 89011 -4322 47 0.0 -3.2137899120777416E-4 NULL NULL -47 1056.25 47 2 89012 -4336 61 0.0 -3.203413284132841E-4 NULL NULL -61 0.0 61 1 89011 -4357 7 0.0 -3.187973376176268E-4 NULL NULL -7 0.0 7 1 89011 -4368 18 0.0 -3.179945054945055E-4 NULL NULL -18 0.0 18 1 89011 -4370 20 0.0 -3.1784897025171623E-4 NULL NULL -20 0.0 20 1 89011 -4388 38 0.0 -3.165451230628988E-4 NULL NULL -38 0.0 38 1 89011 -4432 7 0.0 -3.1340252707581225E-4 NULL NULL -7 0.0 7 1 89011 -4440 15 0.0 -3.1283783783783785E-4 NULL NULL -15 0.0 15 1 89011 -4469 44 0.0 -3.108077869769523E-4 NULL NULL -44 0.0 44 1 89011 -4472 47 0.0 -3.105992844364937E-4 NULL NULL -47 0.0 47 1 89011 -4488 63 0.0 -3.094919786096257E-4 NULL NULL -63 0.0 63 1 89011 -4495 70 0.0 -3.0901001112347055E-4 NULL NULL -70 0.0 70 1 89011 -4513 13 0.0 -3.077775315754487E-4 NULL NULL -13 0.0 13 1 89011 -4539 39 0.0 -3.0601454064771975E-4 NULL NULL -39 0.0 39 1 89011 -4544 44 0.0 -3.0567781690140846E-4 NULL NULL -44 0.0 44 1 89011 -4568 68 0.0 -3.040718038528897E-4 NULL NULL -68 0.0 68 1 89011 -4572 72 0.0 -3.038057742782152E-4 NULL NULL -72 0.0 72 1 89011 -4575 0 0.0 -3.036065573770492E-4 NULL NULL 0 0.0 0 1 89011 -4577 2 0.0 -3.0347389119510595E-4 NULL NULL -2 0.0 2 1 89011 -4579 4 0.0 -3.0334134090412757E-4 NULL NULL -4 0.0 4 1 89011 -4585 10 0.0 -3.029443838604144E-4 NULL NULL -10 0.0 10 1 89011 -4587 12 0.0 -3.02812295618051E-4 NULL NULL -12 0.0 12 1 89011 -4612 37 0.0 -3.0117085862966175E-4 NULL NULL -37 0.0 37 1 89011 -4617 42 0.0 -3.008447043534763E-4 NULL NULL -42 0.0 42 1 89011 -4625 50 0.0 -3.003243243243243E-4 NULL NULL -50 0.0 50 1 89011 -4647 72 0.0 -2.989025177533893E-4 NULL NULL -72 0.0 72 1 89011 -4662 12 0.0 -2.979407979407979E-4 NULL NULL -12 0.0 12 1 89011 -4673 23 0.0 -2.972394607318639E-4 NULL NULL -23 0.0 23 1 89011 -4696 46 0.0 -2.957836456558773E-4 NULL NULL -46 0.0 46 1 89011 -4711 61 0.0 -2.9484185947781786E-4 NULL NULL -61 0.0 61 1 89011 -4783 58 0.0 -2.904035124398913E-4 NULL NULL -58 0.0 58 1 89011 -4811 11 0.0 -2.8871336520473913E-4 NULL NULL -11 0.25 11 2 89012 -4812 12 0.0 -2.886533665835411E-4 NULL NULL -12 0.0 12 1 89011 -4828 28 0.0 -2.876967688483844E-4 NULL NULL -28 0.0 28 1 89011 -4832 32 0.0 -2.874586092715232E-4 NULL NULL -32 0.0 32 1 89011 -4836 36 0.0 -2.872208436724566E-4 NULL NULL -36 0.0 36 1 89011 -4871 71 0.0 -2.8515705194005335E-4 NULL NULL -71 0.0 71 1 89011 -4936 61 0.0 -2.8140194489465153E-4 NULL NULL -61 0.0 61 1 89011 -4956 6 0.0 -2.8026634382566584E-4 NULL NULL -6 0.0 6 1 89011 -4963 13 0.0 -2.798710457384646E-4 NULL NULL -13 0.0 13 1 89011 -4967 17 0.0 -2.7964566136500906E-4 NULL NULL -17 0.0 17 1 89011 -4977 27 0.0 -2.7908378541289933E-4 NULL NULL -27 56.0 27 3 89013 -4978 28 0.0 -2.7902772197669744E-4 NULL NULL -28 0.0 28 1 89011 -4983 33 0.0 -2.787477423239013E-4 NULL NULL -33 0.0 33 1 89011 -4994 44 0.0 -2.7813376051261514E-4 NULL NULL -44 0.0 44 1 89011 -4997 47 0.0 -2.779667800680408E-4 NULL NULL -47 0.0 47 1 89011 -5000 50 0.0 -2.778E-4 NULL NULL -50 0.0 50 1 89011 -5015 65 0.0 -2.769690927218345E-4 NULL NULL -65 0.0 65 1 89011 -5025 0 0.0 -2.764179104477612E-4 NULL NULL 0 0.0 0 1 89011 -5028 3 0.0 -2.762529832935561E-4 NULL NULL -3 0.0 3 1 89011 -5042 17 0.0 -2.754859182863943E-4 NULL NULL -17 0.0 17 1 89011 -5063 38 0.0 -2.7434327473829746E-4 NULL NULL -38 0.0 38 1 89011 -5070 45 0.0 -2.7396449704142014E-4 NULL NULL -45 0.0 45 1 89011 -5085 60 0.0 -2.7315634218289084E-4 NULL NULL -60 0.0 60 1 89011 -5092 67 0.0 -2.727808326787117E-4 NULL NULL -67 0.0 67 1 89011 -5105 5 0.0 -2.720861900097943E-4 NULL NULL -5 0.0 5 1 89011 -5109 9 0.0 -2.71873165002936E-4 NULL NULL -9 0.0 9 1 89011 -5130 30 0.0 -2.7076023391812867E-4 NULL NULL -30 0.0 30 1 89011 -5147 47 0.0 -2.6986594132504373E-4 NULL NULL -47 0.0 47 1 89011 -5159 59 0.0 -2.692382244621051E-4 NULL NULL -59 0.0 59 1 89011 -5169 69 0.0 -2.6871735345327915E-4 NULL NULL -69 0.0 69 1 89011 -5190 15 0.0 -2.676300578034682E-4 NULL NULL -15 0.0 15 1 89011 -5201 26 0.0 -2.6706402614881756E-4 NULL NULL -26 0.0 26 1 89011 -5211 36 0.0 -2.665515256188831E-4 NULL NULL -36 0.0 36 1 89011 -5214 39 0.0 -2.663981588032221E-4 NULL NULL -39 0.0 39 1 89011 -5218 43 0.0 -2.6619394403986203E-4 NULL NULL -43 0.0 43 1 89011 -5219 44 0.0 -2.661429392603947E-4 NULL NULL -44 0.0 44 1 89011 -5240 65 0.0 -2.6507633587786257E-4 NULL NULL -65 0.0 65 1 89011 -5241 66 0.0 -2.6502575844304524E-4 NULL NULL -66 529.0 66 2 89012 -5248 73 0.0 -2.64672256097561E-4 NULL NULL -73 0.0 73 1 89011 -5259 9 0.0 -2.641186537364518E-4 NULL NULL -9 0.0 9 1 89011 -5290 40 0.0 -2.6257088846880905E-4 NULL NULL -40 0.0 40 1 89011 -5323 73 0.0 -2.6094307721209845E-4 NULL NULL -73 0.0 73 1 89011 -5327 2 0.0 -2.607471372254552E-4 NULL NULL -2 0.0 2 1 89011 -5348 23 0.0 -2.5972326103216155E-4 NULL NULL -23 0.0 23 1 89011 -5356 31 0.0 -2.5933532486930547E-4 NULL NULL -31 0.0 31 1 89011 -5369 44 0.0 -2.587073943006146E-4 NULL NULL -44 0.0 44 1 89011 -5377 52 0.0 -2.583224846568719E-4 NULL NULL -52 0.0 52 1 89011 -5383 58 0.0 -2.5803455322310977E-4 NULL NULL -58 0.0 58 1 89011 -5393 68 0.0 -2.5755609122937143E-4 NULL NULL -68 0.0 68 1 89011 -5394 69 0.0 -2.575083426028921E-4 NULL NULL -69 0.0 69 1 89011 -5400 0 0.0 -2.572222222222222E-4 NULL NULL 0 0.0 0 1 89011 -5406 6 0.0 -2.569367369589345E-4 NULL NULL -6 0.0 6 1 89011 -5412 12 0.0 -2.566518847006652E-4 NULL NULL -12 0.0 12 1 89011 -5420 20 0.0 -2.562730627306273E-4 NULL NULL -20 0.0 20 1 89011 -5451 51 0.0 -2.5481563015960373E-4 NULL NULL -51 552.25 51 2 89012 -5484 9 0.0 -2.5328227571115976E-4 NULL NULL -9 0.0 9 1 89011 -5487 12 0.0 -2.531437944231821E-4 NULL NULL -12 0.0 12 1 89011 -5495 20 0.0 -2.5277525022747953E-4 NULL NULL -20 0.0 20 1 89011 -5507 32 0.0 -2.5222444161975666E-4 NULL NULL -32 0.0 32 1 89011 -5521 46 0.0 -2.515848578156131E-4 NULL NULL -46 0.0 46 1 89011 -5562 12 0.0 -2.4973031283710896E-4 NULL NULL -12 0.0 12 1 89011 -5568 18 0.0 -2.4946120689655173E-4 NULL NULL -18 0.0 18 1 89011 -5580 30 0.0 -2.489247311827957E-4 NULL NULL -30 0.0 30 1 89011 -5603 53 0.0 -2.479029091558094E-4 NULL NULL -53 0.0 53 1 89011 -5617 67 0.0 -2.4728502759480147E-4 NULL NULL -67 0.0 67 1 89011 -5630 5 0.0 -2.467140319715808E-4 NULL NULL -5 0.0 5 1 89011 -5641 16 0.0 -2.462329374224428E-4 NULL NULL -16 0.0 16 1 89011 -5643 18 0.0 -2.461456671982988E-4 NULL NULL -18 0.0 18 1 89011 -5645 20 0.0 -2.4605845881310893E-4 NULL NULL -20 0.0 20 1 89011 -5654 29 0.0 -2.456667845772904E-4 NULL NULL -29 0.0 29 1 89011 -5661 36 0.0 -2.453630100688924E-4 NULL NULL -36 0.0 36 1 89011 -5663 38 0.0 -2.4527635528871625E-4 NULL NULL -38 0.0 38 1 89011 -5680 55 0.0 -2.4454225352112677E-4 NULL NULL -55 0.0 55 1 89011 -5687 62 0.0 -2.4424125197819587E-4 NULL NULL -62 0.0 62 1 89011 -5707 7 0.0 -2.4338531627825477E-4 NULL NULL -7 0.0 7 1 89011 -5716 16 0.0 -2.4300209937018895E-4 NULL NULL -16 0.0 16 1 89011 -5722 22 0.0 -2.4274729115693813E-4 NULL NULL -22 0.0 22 1 89011 -5741 41 0.0 -2.419439122104163E-4 NULL NULL -41 0.0 41 1 89011 -5752 52 0.0 -2.4148122392211405E-4 NULL NULL -52 0.0 52 1 89011 -5764 64 0.0 -2.4097848716169326E-4 NULL NULL -64 0.0 64 1 89011 -5780 5 0.0 -2.403114186851211E-4 NULL NULL -5 930.25 5 2 89012 -5785 10 0.0 -2.401037165082109E-4 NULL NULL -10 0.0 10 1 89011 -5786 11 0.0 -2.4006221914967162E-4 NULL NULL -11 0.0 11 1 89011 -5790 15 0.0 -2.3989637305699482E-4 NULL NULL -15 0.0 15 1 89011 -5792 17 0.0 -2.3981353591160222E-4 NULL NULL -17 0.0 17 1 89011 -5793 18 0.0 -2.3977213878819266E-4 NULL NULL -18 0.0 18 1 89011 -5814 39 0.0 -2.3890608875129E-4 NULL NULL -39 0.0 39 1 89011 -5815 40 0.0 -2.3886500429922615E-4 NULL NULL -40 0.0 40 1 89011 -5847 72 0.0 -2.375577219086711E-4 NULL NULL -72 0.0 72 1 89011 -5851 1 0.0 -2.3739531703982226E-4 NULL NULL -1 0.0 1 1 89011 -5855 5 0.0 -2.372331340734415E-4 NULL NULL -5 0.0 5 1 89011 -5865 15 0.0 -2.3682864450127878E-4 NULL NULL -15 0.0 15 1 89011 -5885 35 0.0 -2.3602378929481733E-4 NULL NULL -35 12.25 35 2 89012 -5892 42 0.0 -2.3574338085539714E-4 NULL NULL -42 0.0 42 1 89011 -5898 48 0.0 -2.3550356052899288E-4 NULL NULL -48 0.0 48 1 89011 -5927 2 0.0 -2.3435127383161802E-4 NULL NULL -2 0.0 2 1 89011 -5929 4 0.0 -2.342722212852083E-4 NULL NULL -4 0.0 4 1 89011 -5941 16 0.0 -2.3379902373337822E-4 NULL NULL -16 0.0 16 1 89011 -5944 19 0.0 -2.3368102288021534E-4 NULL NULL -19 0.0 19 1 89011 -5961 36 0.0 -2.3301459486663311E-4 NULL NULL -36 0.0 36 1 89011 -5972 47 0.0 -2.325853985264568E-4 NULL NULL -47 0.0 47 1 89011 -5977 52 0.0 -2.3239083152082986E-4 NULL NULL -52 0.0 52 1 89011 -5988 63 0.0 -2.3196392785571141E-4 NULL NULL -63 0.0 63 1 89011 -6004 4 0.0 -2.3134576948700866E-4 NULL NULL -4 0.0 4 1 89011 -6015 15 0.0 -2.309226932668329E-4 NULL NULL -15 0.0 15 1 89011 -6018 18 0.0 -2.308075772681954E-4 NULL NULL -18 0.0 18 1 89011 -6036 36 0.0 -2.301192842942346E-4 NULL NULL -36 0.25 36 2 89012 -6048 48 0.0 -2.296626984126984E-4 NULL NULL -48 0.0 48 1 89011 -6062 62 0.0 -2.2913229957109864E-4 NULL NULL -62 0.0 62 1 89011 -6069 69 0.0 -2.2886801779535343E-4 NULL NULL -69 0.0 69 1 89011 -6072 72 0.0 -2.2875494071146246E-4 NULL NULL -72 0.0 72 1 89011 -6090 15 0.0 -2.2807881773399016E-4 NULL NULL -15 0.0 15 1 89011 -6103 28 0.0 -2.2759298705554647E-4 NULL NULL -28 0.0 28 1 89011 -6114 39 0.0 -2.2718351324828263E-4 NULL NULL -39 0.0 39 1 89011 -6183 33 0.0 -2.2464822901504123E-4 NULL NULL -33 0.0 33 1 89011 -6192 42 0.0 -2.2432170542635658E-4 NULL NULL -42 0.0 42 1 89011 -6228 3 0.0 -2.2302504816955684E-4 NULL NULL -3 0.0 3 1 89011 -6246 21 0.0 -2.223823246878002E-4 NULL NULL -21 0.0 21 1 89011 -6248 23 0.0 -2.2231113956466068E-4 NULL NULL -23 0.0 23 1 89011 -6256 31 0.0 -2.2202685421994885E-4 NULL NULL -31 0.0 31 1 89011 -6264 39 0.0 -2.217432950191571E-4 NULL NULL -39 0.0 39 1 89011 -6297 72 0.0 -2.2058122915674132E-4 NULL NULL -72 0.0 72 1 89011 -6300 0 0.0 -2.2047619047619048E-4 NULL NULL 0 0.0 0 1 89011 -6303 3 0.0 -2.2037125178486436E-4 NULL NULL -3 0.0 3 1 89011 -6311 11 0.0 -2.2009190302646174E-4 NULL NULL -11 0.0 11 1 89011 -6321 21 0.0 -2.197437114380636E-4 NULL NULL -21 0.0 21 1 89011 -6327 27 0.0 -2.1953532479848268E-4 NULL NULL -27 0.0 27 1 89011 -6340 40 0.0 -2.190851735015773E-4 NULL NULL -40 0.0 40 1 89011 -6346 46 0.0 -2.1887803340687046E-4 NULL NULL -46 0.0 46 1 89011 -6349 49 0.0 -2.187746101748307E-4 NULL NULL -49 0.0 49 1 89011 -6380 5 0.0 -2.177115987460815E-4 NULL NULL -5 0.0 5 1 89011 -6385 10 0.0 -2.1754111198120596E-4 NULL NULL -10 0.0 10 1 89011 -6389 14 0.0 -2.174049146971357E-4 NULL NULL -14 0.0 14 1 89011 -6413 38 0.0 -2.165912989240605E-4 NULL NULL -38 0.0 38 1 89011 -6453 3 0.0 -2.1524872152487215E-4 NULL NULL -3 0.0 3 1 89011 -6469 19 0.0 -2.1471633946514146E-4 NULL NULL -19 0.0 19 1 89011 -6506 56 0.0 -2.1349523516753767E-4 NULL NULL -56 0.0 56 1 89011 -6511 61 0.0 -2.133312855168177E-4 NULL NULL -61 0.0 61 1 89011 -6513 63 0.0 -2.1326577614002763E-4 NULL NULL -63 0.0 63 1 89011 -6516 66 0.0 -2.1316758747697974E-4 NULL NULL -66 0.0 66 1 89011 -6523 73 0.0 -2.12938831825847E-4 NULL NULL -73 0.0 73 1 89011 -6546 21 0.0 -2.1219065077910174E-4 NULL NULL -21 0.0 21 1 89011 -6554 29 0.0 -2.119316447970705E-4 NULL NULL -29 0.0 29 1 89011 -6556 31 0.0 -2.1186699206833436E-4 NULL NULL -31 0.0 31 1 89011 -6557 32 0.0 -2.118346804941284E-4 NULL NULL -32 0.0 32 1 89011 -6576 51 0.0 -2.1122262773722627E-4 NULL NULL -51 0.0 51 1 89011 -6578 53 0.0 -2.1115840681058072E-4 NULL NULL -53 0.0 53 1 89011 -6596 71 0.0 -2.10582171012735E-4 NULL NULL -71 0.0 71 1 89011 -6616 16 0.0 -2.0994558645707375E-4 NULL NULL -16 0.0 16 1 89011 -6626 26 0.0 -2.0962873528523995E-4 NULL NULL -26 0.0 26 1 89011 -6654 54 0.0 -2.0874661857529306E-4 NULL NULL -54 0.0 54 1 89011 -6658 58 0.0 -2.086212075698408E-4 NULL NULL -58 0.0 58 1 89011 -6663 63 0.0 -2.0846465556055831E-4 NULL NULL -63 0.0 63 1 89011 -6666 66 0.0 -2.0837083708370838E-4 NULL NULL -66 0.0 66 1 89011 -6667 67 0.0 -2.0833958302084895E-4 NULL NULL -67 0.0 67 1 89011 -6690 15 0.0 -2.0762331838565022E-4 NULL NULL -15 0.0 15 1 89011 -6725 50 0.0 -2.0654275092936802E-4 NULL NULL -50 0.0 50 1 89011 -6731 56 0.0 -2.0635863913237261E-4 NULL NULL -56 0.0 56 1 89011 -6732 57 0.0 -2.0632798573975045E-4 NULL NULL -57 0.0 57 1 89011 -6738 63 0.0 -2.0614425645592164E-4 NULL NULL -63 0.0 63 1 89011 -6749 74 0.0 -2.058082678915395E-4 NULL NULL -74 0.0 74 1 89011 -6760 10 0.0 -2.054733727810651E-4 NULL NULL -10 0.0 10 1 89011 -6775 25 0.0 -2.0501845018450185E-4 NULL NULL -25 0.0 25 1 89011 -6776 26 0.0 -2.0498819362455727E-4 NULL NULL -26 0.0 26 1 89011 -6777 27 0.0 -2.0495794599380258E-4 NULL NULL -27 0.0 27 1 89011 -6790 40 0.0 -2.0456553755522828E-4 NULL NULL -40 0.0 40 1 89011 -6793 43 0.0 -2.044751950537318E-4 NULL NULL -43 0.0 43 1 89011 -6798 48 0.0 -2.0432480141218006E-4 NULL NULL -48 0.0 48 1 89011 -6802 52 0.0 -2.042046456924434E-4 NULL NULL -52 0.0 52 1 89011 -6811 61 0.0 -2.039348113346058E-4 NULL NULL -61 0.0 61 1 89011 -6823 73 0.0 -2.0357613952806683E-4 NULL NULL -73 0.0 73 1 89011 -6827 2 0.0 -2.034568624578878E-4 NULL NULL -2 0.0 2 1 89011 -6838 13 0.0 -2.0312957004972213E-4 NULL NULL -13 0.0 13 1 89011 -6848 23 0.0 -2.0283294392523364E-4 NULL NULL -23 0.0 23 1 89011 -6849 24 0.0 -2.0280332895313184E-4 NULL NULL -24 0.0 24 1 89011 -6852 27 0.0 -2.0271453590192646E-4 NULL NULL -27 0.0 27 1 89011 -6864 39 0.0 -2.0236013986013986E-4 NULL NULL -39 0.0 39 1 89011 -6866 41 0.0 -2.0230119429070784E-4 NULL NULL -41 0.0 41 1 89011 -6898 73 0.0 -2.013627138300957E-4 NULL NULL -73 0.0 73 1 89011 -6903 3 0.0 -2.012168622338114E-4 NULL NULL -3 0.0 3 1 89011 -6910 10 0.0 -2.0101302460202606E-4 NULL NULL -10 0.0 10 1 89011 -6912 12 0.0 -2.0095486111111111E-4 NULL NULL -12 0.0 12 1 89011 -6923 23 0.0 -2.0063556261736243E-4 NULL NULL -23 0.0 23 1 89011 -6935 35 0.0 -2.0028839221341023E-4 NULL NULL -35 0.0 35 1 89011 -6941 41 0.0 -2.001152571675551E-4 NULL NULL -41 0.0 41 1 89011 -6958 58 0.0 -1.9962632940500143E-4 NULL NULL -58 0.0 58 1 89011 -6961 61 0.0 -1.9954029593449217E-4 NULL NULL -61 0.0 61 1 89011 -6967 67 0.0 -1.9936845127027414E-4 NULL NULL -67 0.0 67 1 89011 -6974 74 0.0 -1.9916833954688844E-4 NULL NULL -74 0.0 74 1 89011 -6995 20 0.0 -1.9857040743388136E-4 NULL NULL -20 0.0 20 1 89011 -7006 31 0.0 -1.98258635455324E-4 NULL NULL -31 0.0 31 1 89011 -7007 32 0.0 -1.9823034108748395E-4 NULL NULL -32 0.0 32 1 89011 -7021 46 0.0 -1.978350662298818E-4 NULL NULL -46 0.0 46 1 89011 -7022 47 0.0 -1.9780689262318427E-4 NULL NULL -47 0.0 47 1 89011 -7046 71 0.0 -1.9713312517740563E-4 NULL NULL -71 0.0 71 1 89011 -7060 10 0.0 -1.9674220963172804E-4 NULL NULL -10 0.0 10 1 89011 -7062 12 0.0 -1.9668649107901446E-4 NULL NULL -12 0.0 12 1 89011 -7077 27 0.0 -1.9626960576515473E-4 NULL NULL -27 0.0 27 1 89011 -7085 35 0.0 -1.9604798870853917E-4 NULL NULL -35 0.0 35 1 89011 -7109 59 0.0 -1.9538613025742017E-4 NULL NULL -59 0.0 59 1 89011 -7111 61 0.0 -1.953311770496414E-4 NULL NULL -61 0.0 61 1 89011 -7118 68 0.0 -1.9513908401236303E-4 NULL NULL -68 0.0 68 1 89011 -7162 37 0.0 -1.939402401563809E-4 NULL NULL -37 0.0 37 1 89011 -7175 50 0.0 -1.9358885017421604E-4 NULL NULL -50 0.0 50 1 89011 -7178 53 0.0 -1.9350794093062136E-4 NULL NULL -53 0.0 53 1 89011 -7179 54 0.0 -1.9348098620977853E-4 NULL NULL -54 0.0 54 1 89011 -7180 55 0.0 -1.934540389972145E-4 NULL NULL -55 0.0 55 1 89011 -7182 57 0.0 -1.9340016708437762E-4 NULL NULL -57 0.0 57 1 89011 -7205 5 0.0 -1.9278278972935462E-4 NULL NULL -5 0.0 5 1 89011 -7207 7 0.0 -1.927292909671153E-4 NULL NULL -7 0.0 7 1 89011 -7212 12 0.0 -1.925956738768719E-4 NULL NULL -12 0.0 12 1 89011 -7238 38 0.0 -1.9190384084001106E-4 NULL NULL -38 0.0 38 1 89011 -7243 43 0.0 -1.9177136545630265E-4 NULL NULL -43 0.0 43 1 89011 -7249 49 0.0 -1.916126362256863E-4 NULL NULL -49 0.0 49 1 89011 -7276 1 0.0 -1.9090159428257285E-4 NULL NULL -1 0.0 1 1 89011 -7279 4 0.0 -1.908229152356093E-4 NULL NULL -4 0.0 4 1 89011 -7287 12 0.0 -1.906134211609716E-4 NULL NULL -12 0.0 12 1 89011 -7288 13 0.0 -1.905872667398463E-4 NULL NULL -13 0.0 13 1 89011 -7290 15 0.0 -1.905349794238683E-4 NULL NULL -15 0.0 15 1 89011 -7302 27 0.0 -1.9022185702547247E-4 NULL NULL -27 0.0 27 1 89011 -7316 41 0.0 -1.8985784581738654E-4 NULL NULL -41 0.0 41 1 89011 -7350 0 0.0 -1.8897959183673468E-4 NULL NULL 0 0.0 0 1 89011 -7364 14 0.0 -1.8862031504617057E-4 NULL NULL -14 0.0 14 1 89011 -7365 15 0.0 -1.8859470468431772E-4 NULL NULL -15 0.0 15 1 89011 -7372 22 0.0 -1.88415626695605E-4 NULL NULL -22 0.0 22 1 89011 -7375 25 0.0 -1.8833898305084746E-4 NULL NULL -25 0.0 25 1 89011 -7398 48 0.0 -1.8775344687753446E-4 NULL NULL -48 0.0 48 1 89011 -7412 62 0.0 -1.8739881273610362E-4 NULL NULL -62 0.0 62 1 89011 -7423 73 0.0 -1.8712111006331672E-4 NULL NULL -73 0.0 73 1 89011 -7442 17 0.0 -1.8664337543671056E-4 NULL NULL -17 0.0 17 1 89011 -7457 32 0.0 -1.8626793616735953E-4 NULL NULL -32 0.0 32 1 89011 -7463 38 0.0 -1.861181830363125E-4 NULL NULL -38 0.0 38 1 89011 -7476 51 0.0 -1.8579454253611556E-4 NULL NULL -51 0.0 51 1 89011 -7477 52 0.0 -1.857696937274308E-4 NULL NULL -52 0.0 52 1 89011 -7482 57 0.0 -1.8564554931836409E-4 NULL NULL -57 0.0 57 1 89011 -7485 60 0.0 -1.8557114228456915E-4 NULL NULL -60 0.0 60 1 89011 -7493 68 0.0 -1.8537301481382623E-4 NULL NULL -68 0.0 68 1 89011 -7497 72 0.0 -1.8527410964385755E-4 NULL NULL -72 0.0 72 1 89011 -7500 0 0.0 -1.852E-4 NULL NULL 0 0.0 0 1 89011 -7511 11 0.0 -1.849287711356677E-4 NULL NULL -11 0.0 11 1 89011 -7513 13 0.0 -1.848795421269799E-4 NULL NULL -13 0.0 13 1 89011 -7536 36 0.0 -1.8431528662420384E-4 NULL NULL -36 0.0 36 1 89011 -7538 38 0.0 -1.8426638365614222E-4 NULL NULL -38 0.0 38 1 89011 -7541 41 0.0 -1.8419307784113513E-4 NULL NULL -41 0.0 41 1 89011 -7548 48 0.0 -1.8402225755166933E-4 NULL NULL -48 0.0 48 1 89011 -7552 52 0.0 -1.8392478813559322E-4 NULL NULL -52 0.0 52 1 89011 -7556 56 0.0 -1.8382742191635788E-4 NULL NULL -56 0.0 56 1 89011 -7559 59 0.0 -1.837544648763064E-4 NULL NULL -59 0.0 59 1 89011 -7574 74 0.0 -1.8339054660681278E-4 NULL NULL -74 0.0 74 1 89011 -7588 13 0.0 -1.830521876647338E-4 NULL NULL -13 0.0 13 1 89011 -7599 24 0.0 -1.8278720884326886E-4 NULL NULL -24 0.0 24 1 89011 -7607 32 0.0 -1.8259497830945182E-4 NULL NULL -32 0.0 32 1 89011 -7616 41 0.0 -1.8237920168067228E-4 NULL NULL -41 0.0 41 1 89011 -7623 48 0.0 -1.8221172766627312E-4 NULL NULL -48 0.0 48 1 89011 -7636 61 0.0 -1.8190151911995809E-4 NULL NULL -61 0.0 61 1 89011 -7642 67 0.0 -1.8175870191049464E-4 NULL NULL -67 0.0 67 1 89011 -7648 73 0.0 -1.8161610878661088E-4 NULL NULL -73 256.0 73 2 89012 -7651 1 0.0 -1.8154489609201413E-4 NULL NULL -1 0.0 1 1 89011 -7661 11 0.0 -1.813079232476178E-4 NULL NULL -11 0.0 11 1 89011 -7675 25 0.0 -1.809771986970684E-4 NULL NULL -25 0.0 25 1 89011 -7705 55 0.0 -1.8027255029201818E-4 NULL NULL -55 64.0 55 2 89012 -7709 59 0.0 -1.8017901154494746E-4 NULL NULL -59 0.0 59 1 89011 -7712 62 0.0 -1.8010892116182572E-4 NULL NULL -62 0.0 62 1 89011 -7713 63 0.0 -1.8008556981719174E-4 NULL NULL -63 0.0 63 1 89011 -7723 73 0.0 -1.798523889680176E-4 NULL NULL -73 0.0 73 1 89011 -7731 6 0.0 -1.796662786185487E-4 NULL NULL -6 0.0 6 1 89011 -7759 34 0.0 -1.7901791467972677E-4 NULL NULL -34 0.0 34 1 89011 -7777 52 0.0 -1.786035746431786E-4 NULL NULL -52 0.0 52 1 89011 -7787 62 0.0 -1.7837421343264414E-4 NULL NULL -62 0.0 62 1 89011 -7812 12 0.0 -1.7780337941628263E-4 NULL NULL -12 0.0 12 1 89011 -7813 13 0.0 -1.7778062204018943E-4 NULL NULL -13 0.0 13 1 89011 -7828 28 0.0 -1.7743995912110374E-4 NULL NULL -28 0.0 28 1 89011 -7836 36 0.0 -1.7725880551301685E-4 NULL NULL -36 0.0 36 1 89011 -7847 47 0.0 -1.7701032241621E-4 NULL NULL -47 0.0 47 1 89011 -7854 54 0.0 -1.768525592055004E-4 NULL NULL -54 0.0 54 1 89011 -7860 60 0.0 -1.767175572519084E-4 NULL NULL -60 0.0 60 1 89011 -7891 16 0.0 -1.760233177037131E-4 NULL NULL -16 0.0 16 1 89011 -7902 27 0.0 -1.7577828397873955E-4 NULL NULL -27 0.0 27 1 89011 -7903 28 0.0 -1.7575604200936355E-4 NULL NULL -28 0.0 28 1 89011 -7940 65 0.0 -1.7493702770780858E-4 NULL NULL -65 0.0 65 1 89011 -7942 67 0.0 -1.7489297406194913E-4 NULL NULL -67 0.0 67 1 89011 -7952 2 0.0 -1.7467303822937626E-4 NULL NULL -2 0.0 2 1 89011 -7972 22 0.0 -1.74234821876568E-4 NULL NULL -22 0.0 22 1 89011 -7974 24 0.0 -1.7419112114371707E-4 NULL NULL -24 0.0 24 1 89011 -7985 35 0.0 -1.7395115842204132E-4 NULL NULL -35 0.0 35 1 89011 -7993 43 0.0 -1.7377705492305768E-4 NULL NULL -43 0.0 43 1 89011 -8000 50 0.0 -1.73625E-4 NULL NULL -50 0.0 50 1 89011 -8001 51 0.0 -1.7360329958755156E-4 NULL NULL -51 0.0 51 1 89011 -8007 57 0.0 -1.7347321094042712E-4 NULL NULL -57 0.0 57 1 89011 -8031 6 0.0 -1.72954800149421E-4 NULL NULL -6 0.0 6 1 89011 -8035 10 0.0 -1.7286869943995023E-4 NULL NULL -10 0.0 10 1 89011 -8046 21 0.0 -1.726323639075317E-4 NULL NULL -21 0.0 21 1 89011 -8048 23 0.0 -1.7258946322067594E-4 NULL NULL -23 0.0 23 1 89011 -8050 25 0.0 -1.7254658385093167E-4 NULL NULL -25 0.0 25 1 89011 -8063 38 0.0 -1.7226838645665384E-4 NULL NULL -38 0.0 38 1 89011 -8072 47 0.0 -1.720763131813677E-4 NULL NULL -47 0.0 47 1 89011 -8076 51 0.0 -1.7199108469539377E-4 NULL NULL -51 0.0 51 1 89011 -8084 59 0.0 -1.7182088075210291E-4 NULL NULL -59 0.0 59 1 89011 -8091 66 0.0 -1.7167222840192806E-4 NULL NULL -66 0.0 66 1 89011 -8096 71 0.0 -1.7156620553359685E-4 NULL NULL -71 0.0 71 1 89011 -8104 4 0.0 -1.713968410661402E-4 NULL NULL -4 0.0 4 1 89011 -8105 5 0.0 -1.713756940160395E-4 NULL NULL -5 0.0 5 1 89011 -8129 29 0.0 -1.7086972567351459E-4 NULL NULL -29 0.0 29 1 89011 -8142 42 0.0 -1.7059690493736183E-4 NULL NULL -42 0.0 42 1 89011 -8191 16 0.0 -1.69576364302283E-4 NULL NULL -16 0.0 16 1 89011 -8201 26 0.0 -1.6936958907450312E-4 NULL NULL -26 0.0 26 1 89011 -8229 54 0.0 -1.6879329201604083E-4 NULL NULL -54 0.0 54 1 89011 -8231 56 0.0 -1.6875227797351477E-4 NULL NULL -56 0.0 56 1 89011 -8234 59 0.0 -1.6869079426767064E-4 NULL NULL -59 0.0 59 1 89011 -8237 62 0.0 -1.686293553478208E-4 NULL NULL -62 0.0 62 1 89011 -8267 17 0.0 -1.680174186524737E-4 NULL NULL -17 0.0 17 1 89011 -8270 20 0.0 -1.6795646916565902E-4 NULL NULL -20 0.0 20 1 89011 -8296 46 0.0 -1.674300867888139E-4 NULL NULL -46 0.0 46 1 89011 -8301 51 0.0 -1.6732923744127213E-4 NULL NULL -51 0.0 51 1 89011 -8319 69 0.0 -1.6696718355571584E-4 NULL NULL -69 0.0 69 1 89011 -8340 15 0.0 -1.6654676258992805E-4 NULL NULL -15 30.25 15 2 89012 -8341 16 0.0 -1.6652679534827957E-4 NULL NULL -16 0.0 16 1 89011 -8346 21 0.0 -1.6642703091301222E-4 NULL NULL -21 0.0 21 1 89011 -8347 22 0.0 -1.6640709236851565E-4 NULL NULL -22 0.0 22 1 89011 -8351 26 0.0 -1.6632738594180339E-4 NULL NULL -26 0.0 26 1 89011 -8353 28 0.0 -1.6628756135520173E-4 NULL NULL -28 0.0 28 1 89011 -8354 29 0.0 -1.6626765621259278E-4 NULL NULL -29 0.0 29 1 89011 -8365 40 0.0 -1.6604901374775853E-4 NULL NULL -40 0.0 40 1 89011 -8368 43 0.0 -1.6598948374760993E-4 NULL NULL -43 0.0 43 1 89011 -8370 45 0.0 -1.6594982078853046E-4 NULL NULL -45 0.0 45 1 89011 -8375 50 0.0 -1.6585074626865673E-4 NULL NULL -50 0.0 50 1 89011 -8384 59 0.0 -1.6567270992366413E-4 NULL NULL -59 0.0 59 1 89011 -8386 61 0.0 -1.656331981874553E-4 NULL NULL -61 0.0 61 1 89011 -8402 2 0.0 -1.6531778148059985E-4 NULL NULL -2 0.0 2 1 89011 -8408 8 0.0 -1.6519980970504283E-4 NULL NULL -8 0.0 8 1 89011 -8429 29 0.0 -1.6478823110689287E-4 NULL NULL -29 0.0 29 1 89011 -8442 42 0.0 -1.6453447050461976E-4 NULL NULL -42 0.0 42 1 89011 -8445 45 0.0 -1.644760213143872E-4 NULL NULL -45 0.0 45 1 89011 -8448 48 0.0 -1.6441761363636363E-4 NULL NULL -48 0.0 48 1 89011 -8451 51 0.0 -1.6435924742634007E-4 NULL NULL -51 0.0 51 1 89011 -8465 65 0.0 -1.6408741878322505E-4 NULL NULL -65 0.0 65 1 89011 -8471 71 0.0 -1.6397119584464644E-4 NULL NULL -71 0.0 71 1 89011 -8487 12 0.0 -1.6366207140332273E-4 NULL NULL -12 0.0 12 1 89011 -8499 24 0.0 -1.6343099188139782E-4 NULL NULL -24 0.0 24 1 89011 -8505 30 0.0 -1.6331569664902997E-4 NULL NULL -30 0.0 30 1 89011 -8523 48 0.0 -1.6297078493488209E-4 NULL NULL -48 0.0 48 1 89011 -8540 65 0.0 -1.626463700234192E-4 NULL NULL -65 0.0 65 1 89011 -8549 74 0.0 -1.6247514329161306E-4 NULL NULL -74 36.0 74 2 89012 -8580 30 0.0 -1.618881118881119E-4 NULL NULL -30 0.0 30 1 89011 -8584 34 0.0 -1.6181267474370923E-4 NULL NULL -34 0.0 34 1 89011 -8625 0 0.0 -1.6104347826086956E-4 NULL NULL 0 0.0 0 1 89011 -8648 23 0.0 -1.6061517113783534E-4 NULL NULL -23 0.0 23 1 89011 -8661 36 0.0 -1.6037409075164531E-4 NULL NULL -36 0.0 36 1 89011 -8662 37 0.0 -1.603555760794274E-4 NULL NULL -37 0.0 37 1 89011 -8675 50 0.0 -1.6011527377521613E-4 NULL NULL -50 0.0 50 1 89011 -8676 51 0.0 -1.6009681881051175E-4 NULL NULL -51 0.0 51 1 89011 -8683 58 0.0 -1.5996775308073247E-4 NULL NULL -58 0.0 58 1 89011 -8692 67 0.0 -1.5980211688909341E-4 NULL NULL -67 0.0 67 1 89011 -8693 68 0.0 -1.5978373403888185E-4 NULL NULL -68 0.0 68 1 89011 -8695 70 0.0 -1.5974698102357677E-4 NULL NULL -70 0.0 70 1 89011 -8703 3 0.0 -1.5960013788348846E-4 NULL NULL -3 0.0 3 1 89011 -8704 4 0.0 -1.5958180147058825E-4 NULL NULL -4 0.0 4 1 89011 -8709 9 0.0 -1.5949018256975544E-4 NULL NULL -9 0.0 9 1 89011 -8726 26 0.0 -1.5917946367178547E-4 NULL NULL -26 0.0 26 1 89011 -8740 40 0.0 -1.5892448512585812E-4 NULL NULL -40 0.0 40 1 89011 -8742 42 0.0 -1.5888812628689087E-4 NULL NULL -42 0.0 42 1 89011 -8744 44 0.0 -1.5885178408051235E-4 NULL NULL -44 0.0 44 1 89011 -8745 45 0.0 -1.588336192109777E-4 NULL NULL -45 0.0 45 1 89011 -8748 48 0.0 -1.5877914951989026E-4 NULL NULL -48 0.0 48 1 89011 -8757 57 0.0 -1.5861596437136006E-4 NULL NULL -57 0.0 57 1 89011 -8762 62 0.0 -1.585254508103173E-4 NULL NULL -62 0.0 62 1 89011 -8781 6 0.0 -1.5818243935770415E-4 NULL NULL -6 0.0 6 1 89011 -8784 9 0.0 -1.5812841530054645E-4 NULL NULL -9 0.0 9 1 89011 -8785 10 0.0 -1.5811041548093342E-4 NULL NULL -10 0.0 10 1 89011 -8790 15 0.0 -1.5802047781569967E-4 NULL NULL -15 0.0 15 1 89011 -8793 18 0.0 -1.5796656431252132E-4 NULL NULL -18 0.0 18 1 89011 -8804 29 0.0 -1.577691958200818E-4 NULL NULL -29 0.0 29 1 89011 -8827 52 0.0 -1.5735810581171407E-4 NULL NULL -52 0.0 52 1 89011 -8837 62 0.0 -1.5718003847459545E-4 NULL NULL -62 0.0 62 1 89011 -8841 66 0.0 -1.5710892432982694E-4 NULL NULL -66 0.0 66 1 89011 -8852 2 0.0 -1.569136918210574E-4 NULL NULL -2 0.0 2 1 89011 -8854 4 0.0 -1.568782471199458E-4 NULL NULL -4 0.0 4 1 89011 -8868 18 0.0 -1.5663058186738836E-4 NULL NULL -18 0.0 18 1 89011 -8875 25 0.0 -1.5650704225352114E-4 NULL NULL -25 0.0 25 1 89011 -8876 26 0.0 -1.5648940964398377E-4 NULL NULL -26 0.0 26 1 89011 -8882 32 0.0 -1.5638369736545822E-4 NULL NULL -32 0.0 32 1 89011 -8884 34 0.0 -1.5634849167041874E-4 NULL NULL -34 0.0 34 1 89011 -8896 46 0.0 -1.5613758992805756E-4 NULL NULL -46 289.0 46 2 89012 -8941 16 0.0 -1.5535175036349402E-4 NULL NULL -16 0.0 16 1 89011 -8950 25 0.0 -1.5519553072625698E-4 NULL NULL -25 0.0 25 1 89011 -8983 58 0.0 -1.5462540354002003E-4 NULL NULL -58 0.0 58 1 89011 -8986 61 0.0 -1.5457378143779213E-4 NULL NULL -61 0.0 61 1 89011 -9001 1 0.0 -1.543161870903233E-4 NULL NULL -1 0.0 1 1 89011 -9011 11 0.0 -1.541449339695927E-4 NULL NULL -11 0.0 11 1 89011 -9050 50 0.0 -1.534806629834254E-4 NULL NULL -50 0.0 50 1 89011 -9052 52 0.0 -1.5344675209898366E-4 NULL NULL -52 0.0 52 1 89011 -9059 59 0.0 -1.5332818191853405E-4 NULL NULL -59 0.0 59 1 89011 -9063 63 0.0 -1.5326050976497847E-4 NULL NULL -63 0.0 63 1 89011 -9100 25 0.0 -1.5263736263736264E-4 NULL NULL -25 0.0 25 1 89011 -9107 32 0.0 -1.5252003953003185E-4 NULL NULL -32 0.0 32 1 89011 -9111 36 0.0 -1.5245307869608167E-4 NULL NULL -36 0.0 36 1 89011 -9128 53 0.0 -1.5216914986853638E-4 NULL NULL -53 0.0 53 1 89011 -9140 65 0.0 -1.5196936542669586E-4 NULL NULL -65 0.0 65 1 89011 -9161 11 0.0 -1.516210020740094E-4 NULL NULL -11 0.0 11 1 89011 -9168 18 0.0 -1.5150523560209425E-4 NULL NULL -18 0.0 18 1 89011 -9169 19 0.0 -1.514887119642273E-4 NULL NULL -19 0.0 19 1 89011 -9182 32 0.0 -1.5127423219342192E-4 NULL NULL -32 0.0 32 1 89011 -9210 60 0.0 -1.50814332247557E-4 NULL NULL -60 0.0 60 1 89011 -9227 2 0.0 -1.5053646905819877E-4 NULL NULL -2 0.0 2 1 89011 -9235 10 0.0 -1.5040606388738495E-4 NULL NULL -10 0.0 10 1 89011 -9237 12 0.0 -1.5037349788892497E-4 NULL NULL -12 0.0 12 1 89011 -9238 13 0.0 -1.503572201775276E-4 NULL NULL -13 0.0 13 1 89011 -9243 18 0.0 -1.5027588445309963E-4 NULL NULL -18 0.0 18 1 89011 -9292 67 0.0 -1.4948342660352993E-4 NULL NULL -67 0.0 67 1 89011 -9304 4 0.0 -1.4929062768701633E-4 NULL NULL -4 0.0 4 1 89011 -9315 15 0.0 -1.4911433172302738E-4 NULL NULL -15 0.0 15 1 89011 -9351 51 0.0 -1.4854026307346808E-4 NULL NULL -51 0.0 51 1 89011 -9353 53 0.0 -1.4850849994654122E-4 NULL NULL -53 0.0 53 1 89011 -9360 60 0.0 -1.4839743589743589E-4 NULL NULL -60 0.0 60 1 89011 -9364 64 0.0 -1.4833404527979496E-4 NULL NULL -64 0.0 64 1 89011 -9365 65 0.0 -1.4831820608649226E-4 NULL NULL -65 0.0 65 1 89011 -9366 66 0.0 -1.4830237027546446E-4 NULL NULL -66 0.0 66 1 89011 -9373 73 0.0 -1.481916142110317E-4 NULL NULL -73 0.0 73 1 89011 -9388 13 0.0 -1.4795483596080102E-4 NULL NULL -13 0.0 13 1 89011 -9390 15 0.0 -1.4792332268370606E-4 NULL NULL -15 0.0 15 1 89011 -9393 18 0.0 -1.4787607793037368E-4 NULL NULL -18 0.0 18 1 89011 -9395 20 0.0 -1.4784459819052687E-4 NULL NULL -20 0.0 20 1 89011 -9402 27 0.0 -1.477345245692406E-4 NULL NULL -27 0.0 27 1 89011 -9404 29 0.0 -1.477031050616759E-4 NULL NULL -29 0.0 29 1 89011 -9426 51 0.0 -1.4735837046467217E-4 NULL NULL -51 0.0 51 1 89011 -9433 58 0.0 -1.472490193999788E-4 NULL NULL -58 1024.0 58 2 89012 -9442 67 0.0 -1.471086634187672E-4 NULL NULL -67 0.0 67 1 89011 -9444 69 0.0 -1.4707750952986024E-4 NULL NULL -69 0.0 69 1 89011 -9447 72 0.0 -1.470308034296602E-4 NULL NULL -72 0.0 72 1 89011 -9452 2 0.0 -1.469530258146424E-4 NULL NULL -2 16.0 2 2 89012 -9455 5 0.0 -1.4690639873083026E-4 NULL NULL -5 0.0 5 1 89011 -9472 22 0.0 -1.4664273648648648E-4 NULL NULL -22 0.0 22 1 89011 -9476 26 0.0 -1.465808357956944E-4 NULL NULL -26 0.0 26 1 89011 -9498 48 0.0 -1.4624131396083386E-4 NULL NULL -48 0.0 48 1 89011 -9510 60 0.0 -1.4605678233438487E-4 NULL NULL -60 0.0 60 1 89011 -9512 62 0.0 -1.4602607232968882E-4 NULL NULL -62 0.0 62 1 89011 -9539 14 0.0 -1.4561274766747038E-4 NULL NULL -14 2704.0 14 2 89012 -9556 31 0.0 -1.4535370447886145E-4 NULL NULL -31 0.0 31 1 89011 -9561 36 0.0 -1.452776906181362E-4 NULL NULL -36 0.0 36 1 89011 -9583 58 0.0 -1.4494417197119899E-4 NULL NULL -58 0.0 58 1 89011 -9597 72 0.0 -1.4473272897780557E-4 NULL NULL -72 0.0 72 1 89011 -9642 42 0.0 -1.4405724953329185E-4 NULL NULL -42 0.0 42 1 89011 -9644 44 0.0 -1.4402737453338865E-4 NULL NULL -44 0.0 44 1 89011 -9650 50 0.0 -1.439378238341969E-4 NULL NULL -50 0.0 50 1 89011 -9659 59 0.0 -1.4380370638782483E-4 NULL NULL -59 0.0 59 1 89011 -9682 7 0.0 -1.4346209460855197E-4 NULL NULL -7 0.0 7 1 89011 -9719 44 0.0 -1.4291593785368864E-4 NULL NULL -44 0.0 44 1 89011 -9720 45 0.0 -1.4290123456790123E-4 NULL NULL -45 0.0 45 1 89011 -9723 48 0.0 -1.4285714285714287E-4 NULL NULL -48 0.0 48 1 89011 -9740 65 0.0 -1.4260780287474333E-4 NULL NULL -65 0.0 65 1 89011 -9752 2 0.0 -1.4243232157506154E-4 NULL NULL -2 0.0 2 1 89011 -9759 9 0.0 -1.4233015677835844E-4 NULL NULL -9 0.0 9 1 89011 -9761 11 0.0 -1.423009937506403E-4 NULL NULL -11 0.0 11 1 89011 -9767 17 0.0 -1.4221357632845295E-4 NULL NULL -17 0.0 17 1 89011 -9782 32 0.0 -1.419955019423431E-4 NULL NULL -32 0.0 32 1 89011 -9786 36 0.0 -1.4193746167995096E-4 NULL NULL -36 0.0 36 1 89011 -9791 41 0.0 -1.4186497804105812E-4 NULL NULL -41 0.0 41 1 89011 -9792 42 0.0 -1.4185049019607842E-4 NULL NULL -42 0.0 42 1 89011 -9801 51 0.0 -1.4172023262932354E-4 NULL NULL -51 0.0 51 1 89011 -9802 52 0.0 -1.4170577433176903E-4 NULL NULL -52 0.0 52 1 89011 -9828 3 0.0 -1.4133089133089134E-4 NULL NULL -3 0.0 3 1 89011 -9842 17 0.0 -1.4112985165616745E-4 NULL NULL -17 0.0 17 1 89011 -9857 32 0.0 -1.409150857258801E-4 NULL NULL -32 0.0 32 1 89011 -9883 58 0.0 -1.4054436911868865E-4 NULL NULL -58 0.0 58 1 89011 -9892 67 0.0 -1.4041649818034776E-4 NULL NULL -67 0.0 67 1 89011 -9907 7 0.0 -1.4020389623498535E-4 NULL NULL -7 0.0 7 1 89011 -9922 22 0.0 -1.3999193710945374E-4 NULL NULL -22 0.0 22 1 89011 -9924 24 0.0 -1.3996372430471584E-4 NULL NULL -24 0.0 24 1 89011 -9925 25 0.0 -1.3994962216624685E-4 NULL NULL -25 0.0 25 1 89011 -9926 26 0.0 -1.399355228692323E-4 NULL NULL -26 0.0 26 1 89011 -9929 29 0.0 -1.3989324201833014E-4 NULL NULL -29 0.0 29 1 89011 -9930 30 0.0 -1.3987915407854984E-4 NULL NULL -30 0.0 30 1 89011 -9934 34 0.0 -1.3982283068250453E-4 NULL NULL -34 0.0 34 1 89011 -9951 51 0.0 -1.3958396141091348E-4 NULL NULL -51 0.0 51 1 89011 -9969 69 0.0 -1.393319289798375E-4 NULL NULL -69 0.0 69 1 89011 -9971 71 0.0 -1.3930398154648481E-4 NULL NULL -71 0.0 71 1 89011 -9987 12 0.0 -1.3908080504656053E-4 NULL NULL -12 0.0 12 1 89011 -10036 61 0.0 -1.384017536867278E-4 NULL NULL -61 0.0 61 1 89011 -10044 69 0.0 -1.382915173237754E-4 NULL NULL -69 0.0 69 1 89011 -10058 8 0.0 -1.380990256512229E-4 NULL NULL -8 0.0 8 1 89011 -10065 15 0.0 -1.3800298062593145E-4 NULL NULL -15 0.0 15 1 89011 -10077 27 0.0 -1.3783864245311105E-4 NULL NULL -27 0.0 27 1 89011 -10096 46 0.0 -1.3757923930269415E-4 NULL NULL -46 0.0 46 1 89011 -10097 47 0.0 -1.3756561354857878E-4 NULL NULL -47 0.0 47 1 89011 -10104 54 0.0 -1.3747030878859858E-4 NULL NULL -54 0.0 54 1 89011 -10120 70 0.0 -1.3725296442687748E-4 NULL NULL -70 0.0 70 1 89011 -10129 4 0.0 -1.3713100997136932E-4 NULL NULL -4 0.0 4 1 89011 -10131 6 0.0 -1.3710393840687E-4 NULL NULL -6 0.0 6 1 89011 -10139 14 0.0 -1.3699575895058684E-4 NULL NULL -14 0.0 14 1 89011 -10149 24 0.0 -1.3686077446053798E-4 NULL NULL -24 0.0 24 1 89011 -10174 49 0.0 -1.365244741497936E-4 NULL NULL -49 0.0 49 1 89011 -10187 62 0.0 -1.3635025031903406E-4 NULL NULL -62 0.0 62 1 89011 -10198 73 0.0 -1.3620317709354775E-4 NULL NULL -73 0.0 73 1 89011 -10205 5 0.0 -1.3610975012248898E-4 NULL NULL -5 0.0 5 1 89011 -10211 11 0.0 -1.3602977181470963E-4 NULL NULL -11 0.0 11 1 89011 -10227 27 0.0 -1.3581695511880317E-4 NULL NULL -27 0.0 27 1 89011 -10230 30 0.0 -1.3577712609970675E-4 NULL NULL -30 0.0 30 1 89011 -10242 42 0.0 -1.3561804335090802E-4 NULL NULL -42 0.0 42 1 89011 -10273 73 0.0 -1.3520879976637788E-4 NULL NULL -73 0.0 73 1 89011 -10284 9 0.0 -1.3506417736289383E-4 NULL NULL -9 0.0 9 1 89011 -10285 10 0.0 -1.35051045211473E-4 NULL NULL -10 0.0 10 1 89011 -10295 20 0.0 -1.3491986401165614E-4 NULL NULL -20 0.0 20 1 89011 -10304 29 0.0 -1.3480201863354038E-4 NULL NULL -29 0.0 29 1 89011 -10310 35 0.0 -1.3472356935014548E-4 NULL NULL -35 0.0 35 1 89011 -10312 37 0.0 -1.3469743987587276E-4 NULL NULL -37 0.0 37 1 89011 -10321 46 0.0 -1.3457998255982947E-4 NULL NULL -46 0.0 46 1 89011 -10346 71 0.0 -1.3425478445776146E-4 NULL NULL -71 0.0 71 1 89011 -10364 14 0.0 -1.3402161327672713E-4 NULL NULL -14 0.0 14 1 89011 -10383 33 0.0 -1.3377636521236637E-4 NULL NULL -33 0.0 33 1 89011 -10394 44 0.0 -1.336347893015201E-4 NULL NULL -44 900.0 44 2 89012 -10401 51 0.0 -1.335448514565907E-4 NULL NULL -51 0.0 51 1 89011 -10403 53 0.0 -1.3351917716043448E-4 NULL NULL -53 0.0 53 1 89011 -10415 65 0.0 -1.3336533845415268E-4 NULL NULL -65 0.0 65 1 89011 -10436 11 0.0 -1.3309697201993102E-4 NULL NULL -11 0.0 11 1 89011 -10451 26 0.0 -1.3290594201511818E-4 NULL NULL -26 0.0 26 1 89011 -10452 27 0.0 -1.3289322617680827E-4 NULL NULL -27 0.0 27 1 89011 -10467 42 0.0 -1.3270278016623674E-4 NULL NULL -42 0.0 42 1 89011 -10470 45 0.0 -1.326647564469914E-4 NULL NULL -45 812.25 45 2 89012 -10484 59 0.0 -1.324876001526135E-4 NULL NULL -59 0.0 59 1 89011 -10485 60 0.0 -1.3247496423462088E-4 NULL NULL -60 1600.0 60 2 89012 -10495 70 0.0 -1.323487374940448E-4 NULL NULL -70 0.0 70 1 89011 -10496 71 0.0 -1.323361280487805E-4 NULL NULL -71 12.25 71 2 89012 -10520 20 0.0 -1.320342205323194E-4 NULL NULL -20 0.0 20 1 89011 -10522 22 0.0 -1.320091237407337E-4 NULL NULL -22 0.0 22 1 89011 -10528 28 0.0 -1.319338905775076E-4 NULL NULL -28 0.0 28 1 89011 -10532 32 0.0 -1.3188378275731105E-4 NULL NULL -32 0.0 32 1 89011 -10538 38 0.0 -1.3180869235148986E-4 NULL NULL -38 0.0 38 1 89011 -10548 48 0.0 -1.3168373151308305E-4 NULL NULL -48 0.0 48 1 89011 -10551 51 0.0 -1.3164628945123684E-4 NULL NULL -51 0.0 51 1 89011 -10553 53 0.0 -1.3162133990334503E-4 NULL NULL -53 0.0 53 1 89011 -10554 54 0.0 -1.3160886867538373E-4 NULL NULL -54 0.0 54 1 89011 -10558 58 0.0 -1.3155900738776282E-4 NULL NULL -58 0.0 58 1 89011 -10576 1 0.0 -1.3133509833585476E-4 NULL NULL -1 0.0 1 1 89011 -10592 17 0.0 -1.3113670694864048E-4 NULL NULL -17 0.0 17 1 89011 -10601 26 0.0 -1.3102537496462597E-4 NULL NULL -26 0.0 26 1 89011 -10637 62 0.0 -1.3058193099558147E-4 NULL NULL -62 0.0 62 1 89011 -10649 74 0.0 -1.3043478260869564E-4 NULL NULL -74 0.0 74 1 89011 -10652 2 0.0 -1.303980473150582E-4 NULL NULL -2 0.0 2 1 89011 -10653 3 0.0 -1.303858068149817E-4 NULL NULL -3 0.0 3 1 89011 -10663 13 0.0 -1.3026352808778017E-4 NULL NULL -13 0.0 13 1 89011 -10666 16 0.0 -1.3022688918057379E-4 NULL NULL -16 0.0 16 1 89011 -10672 22 0.0 -1.301536731634183E-4 NULL NULL -22 0.0 22 1 89011 -10688 38 0.0 -1.2995883233532935E-4 NULL NULL -38 0.0 38 1 89011 -10701 51 0.0 -1.298009531819456E-4 NULL NULL -51 0.0 51 1 89011 -10713 63 0.0 -1.2965555866704004E-4 NULL NULL -63 0.0 63 1 89011 -10723 73 0.0 -1.295346451552737E-4 NULL NULL -73 0.0 73 1 89011 -10725 0 0.0 -1.2951048951048951E-4 NULL NULL 0 0.0 0 1 89011 -10770 45 0.0 -1.2896935933147632E-4 NULL NULL -45 0.0 45 1 89011 -10785 60 0.0 -1.2878998609179416E-4 NULL NULL -60 0.0 60 1 89011 -10802 2 0.0 -1.2858729864839846E-4 NULL NULL -2 0.0 2 1 89011 -10807 7 0.0 -1.285278060516332E-4 NULL NULL -7 0.0 7 1 89011 -10827 27 0.0 -1.282903851482405E-4 NULL NULL -27 0.0 27 1 89011 -10845 45 0.0 -1.280774550484094E-4 NULL NULL -45 0.0 45 1 89011 -10858 58 0.0 -1.2792411125437465E-4 NULL NULL -58 0.0 58 1 89011 -10861 61 0.0 -1.2788877635576835E-4 NULL NULL -61 0.0 61 1 89011 -10867 67 0.0 -1.2781816508696052E-4 NULL NULL -67 0.0 67 1 89011 -10871 71 0.0 -1.2777113421028424E-4 NULL NULL -71 0.0 71 1 89011 -10903 28 0.0 -1.2739612950564064E-4 NULL NULL -28 0.0 28 1 89011 -10907 32 0.0 -1.2734940863665537E-4 NULL NULL -32 0.0 32 1 89011 -10912 37 0.0 -1.2729105571847508E-4 NULL NULL -37 0.0 37 1 89011 -10921 46 0.0 -1.2718615511400055E-4 NULL NULL -46 0.0 46 1 89011 -10922 47 0.0 -1.2717451016297382E-4 NULL NULL -47 0.0 47 1 89011 -10952 2 0.0 -1.2682615047479912E-4 NULL NULL -2 0.0 2 1 89011 -10953 3 0.0 -1.2681457135031498E-4 NULL NULL -3 0.0 3 1 89011 -11014 64 0.0 -1.2611222080987833E-4 NULL NULL -64 0.0 64 1 89011 -11022 72 0.0 -1.2602068590092543E-4 NULL NULL -72 0.0 72 1 89011 -11028 3 0.0 -1.2595212187159957E-4 NULL NULL -3 0.0 3 1 89011 -11044 19 0.0 -1.2576964867801521E-4 NULL NULL -19 0.0 19 1 89011 -11049 24 0.0 -1.2571273418408906E-4 NULL NULL -24 0.0 24 1 89011 -11054 29 0.0 -1.2565587117785418E-4 NULL NULL -29 0.0 29 1 89011 -11059 34 0.0 -1.2559905958947463E-4 NULL NULL -34 0.0 34 1 89011 -11065 40 0.0 -1.2553095345684592E-4 NULL NULL -40 0.0 40 1 89011 -11080 55 0.0 -1.253610108303249E-4 NULL NULL -55 0.0 55 1 89011 -11081 56 0.0 -1.2534969768071474E-4 NULL NULL -56 0.0 56 1 89011 -11083 58 0.0 -1.2532707750609041E-4 NULL NULL -58 0.0 58 1 89011 -11092 67 0.0 -1.2522538766678688E-4 NULL NULL -67 0.0 67 1 89011 -11097 72 0.0 -1.2516896458502299E-4 NULL NULL -72 0.0 72 1 89011 -11102 2 0.0 -1.2511259232570707E-4 NULL NULL -2 0.0 2 1 89011 -11112 12 0.0 -1.25E-4 NULL NULL -12 0.0 12 1 89011 -11148 48 0.0 -1.2459634015069966E-4 NULL NULL -48 0.0 48 1 89011 -11150 50 0.0 -1.2457399103139015E-4 NULL NULL -50 64.0 50 2 89012 -11165 65 0.0 -1.2440662785490373E-4 NULL NULL -65 0.0 65 1 89011 -11168 68 0.0 -1.2437320916905444E-4 NULL NULL -68 0.0 68 1 89011 -11181 6 0.0 -1.2422860209283606E-4 NULL NULL -6 0.0 6 1 89011 -11189 14 0.0 -1.2413978014121012E-4 NULL NULL -14 0.0 14 1 89011 -11197 22 0.0 -1.2405108511208358E-4 NULL NULL -22 0.0 22 1 89011 -11214 39 0.0 -1.2386302835741038E-4 NULL NULL -39 0.0 39 1 89011 -11230 55 0.0 -1.2368655387355297E-4 NULL NULL -55 0.0 55 1 89011 -11231 56 0.0 -1.2367554091354286E-4 NULL NULL -56 0.0 56 1 89011 -11236 61 0.0 -1.2362050551797794E-4 NULL NULL -61 0.0 61 1 89011 -11242 67 0.0 -1.235545276641167E-4 NULL NULL -67 0.0 67 1 89011 -11246 71 0.0 -1.2351058154010314E-4 NULL NULL -71 0.0 71 1 89011 -11286 36 0.0 -1.230728335991494E-4 NULL NULL -36 0.0 36 1 89011 -11302 52 0.0 -1.2289860201734207E-4 NULL NULL -52 0.0 52 1 89011 -11319 69 0.0 -1.2271402067320434E-4 NULL NULL -69 0.0 69 1 89011 -11333 8 0.0 -1.225624283067149E-4 NULL NULL -8 0.0 8 1 89011 -11334 9 0.0 -1.2255161461090523E-4 NULL NULL -9 0.0 9 1 89011 -11342 17 0.0 -1.224651736907071E-4 NULL NULL -17 0.0 17 1 89011 -11343 18 0.0 -1.2245437714890242E-4 NULL NULL -18 0.0 18 1 89011 -11350 25 0.0 -1.2237885462555067E-4 NULL NULL -25 0.0 25 1 89011 -11357 32 0.0 -1.22303425200317E-4 NULL NULL -32 0.0 32 1 89011 -11359 34 0.0 -1.222818910115327E-4 NULL NULL -34 0.0 34 1 89011 -11391 66 0.0 -1.2193837239926257E-4 NULL NULL -66 0.0 66 1 89011 -11394 69 0.0 -1.2190626645602949E-4 NULL NULL -69 0.0 69 1 89011 -11401 1 0.0 -1.2183141829664064E-4 NULL NULL -1 0.0 1 1 89011 -11411 11 0.0 -1.2172465165191482E-4 NULL NULL -11 0.0 11 1 89011 -11419 19 0.0 -1.2163937297486645E-4 NULL NULL -19 0.0 19 1 89011 -11443 43 0.0 -1.2138425238136852E-4 NULL NULL -43 0.0 43 1 89011 -11449 49 0.0 -1.213206393571491E-4 NULL NULL -49 0.0 49 1 89011 -11457 57 0.0 -1.2123592563498298E-4 NULL NULL -57 0.0 57 1 89011 -11459 59 0.0 -1.2121476568636007E-4 NULL NULL -59 0.0 59 1 89011 -11476 1 0.0 -1.2103520390379924E-4 NULL NULL -1 0.0 1 1 89011 -11494 19 0.0 -1.208456586044893E-4 NULL NULL -19 0.0 19 1 89011 -11505 30 0.0 -1.2073011734028684E-4 NULL NULL -30 0.0 30 1 89011 -11511 36 0.0 -1.2066718790721918E-4 NULL NULL -36 0.0 36 1 89011 -11515 40 0.0 -1.206252713851498E-4 NULL NULL -40 0.0 40 1 89011 -11528 53 0.0 -1.2048924358084663E-4 NULL NULL -53 0.0 53 1 89011 -11534 59 0.0 -1.2042656493844287E-4 NULL NULL -59 0.0 59 1 89011 -11561 11 0.0 -1.2014531614912205E-4 NULL NULL -11 0.0 11 1 89011 -11565 15 0.0 -1.2010376134889754E-4 NULL NULL -15 0.0 15 1 89011 -11579 29 0.0 -1.1995854564297434E-4 NULL NULL -29 0.0 29 1 89011 -11583 33 0.0 -1.1991711991711992E-4 NULL NULL -33 0.0 33 1 89011 -11595 45 0.0 -1.1979301423027167E-4 NULL NULL -45 0.0 45 1 89011 -11598 48 0.0 -1.1976202793585102E-4 NULL NULL -48 0.0 48 1 89011 -11625 0 0.0 -1.1948387096774193E-4 NULL NULL 0 0.0 0 1 89011 -11632 7 0.0 -1.1941196698762036E-4 NULL NULL -7 0.0 7 1 89011 -11641 16 0.0 -1.193196460785156E-4 NULL NULL -16 0.0 16 1 89011 -11642 17 0.0 -1.1930939701082288E-4 NULL NULL -17 0.0 17 1 89011 -11654 29 0.0 -1.1918654539214004E-4 NULL NULL -29 0.0 29 1 89011 -11658 33 0.0 -1.1914565105506949E-4 NULL NULL -33 0.0 33 1 89011 -11668 43 0.0 -1.1904353788138499E-4 NULL NULL -43 0.0 43 1 89011 -11673 48 0.0 -1.1899254690310974E-4 NULL NULL -48 0.0 48 1 89011 -11675 50 0.0 -1.1897216274089935E-4 NULL NULL -50 0.0 50 1 89011 -11681 56 0.0 -1.1891105213594727E-4 NULL NULL -56 0.0 56 1 89011 -11737 37 0.0 -1.1834369941211553E-4 NULL NULL -37 0.0 37 1 89011 -11758 58 0.0 -1.1813233543119579E-4 NULL NULL -58 0.0 58 1 89011 -11767 67 0.0 -1.1804198181354636E-4 NULL NULL -67 0.0 67 1 89011 -11771 71 0.0 -1.1800186900008496E-4 NULL NULL -71 0.0 71 1 89011 -11794 19 0.0 -1.1777174834661693E-4 NULL NULL -19 0.0 19 1 89011 -11811 36 0.0 -1.176022352044704E-4 NULL NULL -36 0.0 36 1 89011 -11833 58 0.0 -1.1738358827009211E-4 NULL NULL -58 0.0 58 1 89011 -11841 66 0.0 -1.1730428173296175E-4 NULL NULL -66 0.0 66 1 89011 -11847 72 0.0 -1.1724487211952393E-4 NULL NULL -72 100.0 72 2 89012 -11867 17 0.0 -1.1704727395297885E-4 NULL NULL -17 0.0 17 1 89011 -11883 33 0.0 -1.168896743246655E-4 NULL NULL -33 1406.25 33 2 89012 -11886 36 0.0 -1.1686017163048965E-4 NULL NULL -36 0.0 36 1 89011 -11913 63 0.0 -1.1659531604129942E-4 NULL NULL -63 0.0 63 1 89011 -11932 7 0.0 -1.1640965471002346E-4 NULL NULL -7 0.0 7 1 89011 -11935 10 0.0 -1.1638039379974864E-4 NULL NULL -10 0.0 10 1 89011 -11936 11 0.0 -1.1637064343163539E-4 NULL NULL -11 0.0 11 1 89011 -11952 27 0.0 -1.1621485943775101E-4 NULL NULL -27 0.0 27 1 89011 -11953 28 0.0 -1.1620513678574417E-4 NULL NULL -28 0.0 28 1 89011 -11977 52 0.0 -1.1597228020372381E-4 NULL NULL -52 0.0 52 1 89011 -11979 54 0.0 -1.1595291760581017E-4 NULL NULL -54 0.0 54 1 89011 -11996 71 0.0 -1.1578859619873292E-4 NULL NULL -71 0.0 71 1 89011 -12024 24 0.0 -1.1551896207584831E-4 NULL NULL -24 0.0 24 1 89011 -12034 34 0.0 -1.1542296825660629E-4 NULL NULL -34 0.0 34 1 89011 -12050 50 0.0 -1.1526970954356847E-4 NULL NULL -50 0.0 50 1 89011 -12059 59 0.0 -1.1518368023882577E-4 NULL NULL -59 0.0 59 1 89011 -12060 60 0.0 -1.1517412935323383E-4 NULL NULL -60 0.0 60 1 89011 -12078 3 0.0 -1.1500248385494287E-4 NULL NULL -3 0.0 3 1 89011 -12081 6 0.0 -1.1497392599950335E-4 NULL NULL -6 0.0 6 1 89011 -12104 29 0.0 -1.1475545274289491E-4 NULL NULL -29 0.0 29 1 89011 -12112 37 0.0 -1.1467965653896962E-4 NULL NULL -37 0.0 37 1 89011 -12136 61 0.0 -1.1445286750164798E-4 NULL NULL -61 0.0 61 1 89011 -12141 66 0.0 -1.1440573264146281E-4 NULL NULL -66 0.0 66 1 89011 -12157 7 0.0 -1.1425516163527185E-4 NULL NULL -7 0.0 7 1 89011 -12161 11 0.0 -1.1421758079105337E-4 NULL NULL -11 0.0 11 1 89011 -12170 20 0.0 -1.1413311421528348E-4 NULL NULL -20 0.0 20 1 89011 -12176 26 0.0 -1.1407687253613667E-4 NULL NULL -26 0.0 26 1 89011 -12181 31 0.0 -1.1403004679418767E-4 NULL NULL -31 0.0 31 1 89011 -12183 33 0.0 -1.1401132725929574E-4 NULL NULL -33 1482.25 33 2 89012 -12200 50 0.0 -1.1385245901639344E-4 NULL NULL -50 0.0 50 1 89011 -12208 58 0.0 -1.1377785058977719E-4 NULL NULL -58 0.0 58 1 89011 -12227 2 0.0 -1.1360104686349881E-4 NULL NULL -2 0.0 2 1 89011 -12230 5 0.0 -1.1357318070318888E-4 NULL NULL -5 0.0 5 1 89011 -12235 10 0.0 -1.1352676747037188E-4 NULL NULL -10 0.0 10 1 89011 -12269 44 0.0 -1.1321216073029587E-4 NULL NULL -44 0.0 44 1 89011 -12272 47 0.0 -1.1318448500651891E-4 NULL NULL -47 0.0 47 1 89011 -12273 48 0.0 -1.131752627719384E-4 NULL NULL -48 0.0 48 1 89011 -12291 66 0.0 -1.1300951916036124E-4 NULL NULL -66 272.25 66 2 89012 -12292 67 0.0 -1.13000325414904E-4 NULL NULL -67 0.0 67 1 89011 -12322 22 0.0 -1.127252069469242E-4 NULL NULL -22 0.0 22 1 89011 -12339 39 0.0 -1.1256990031607099E-4 NULL NULL -39 1892.25 39 2 89012 -12348 48 0.0 -1.1248785228377065E-4 NULL NULL -48 0.0 48 1 89011 -12353 53 0.0 -1.1244232170322999E-4 NULL NULL -53 0.0 53 1 89011 -12363 63 0.0 -1.1235137102644989E-4 NULL NULL -63 0.0 63 1 89011 -12375 0 0.0 -1.1224242424242424E-4 NULL NULL 0 0.0 0 1 89011 -12400 25 0.0 -1.1201612903225807E-4 NULL NULL -25 0.0 25 1 89011 -12403 28 0.0 -1.1198903491090865E-4 NULL NULL -28 0.0 28 1 89011 -12417 42 0.0 -1.1186276878473061E-4 NULL NULL -42 0.0 42 1 89011 -12420 45 0.0 -1.1183574879227053E-4 NULL NULL -45 0.0 45 1 89011 -12422 47 0.0 -1.1181774271453872E-4 NULL NULL -47 0.0 47 1 89011 -12470 20 0.0 -1.1138732959101844E-4 NULL NULL -20 0.0 20 1 89011 -12473 23 0.0 -1.1136053876372965E-4 NULL NULL -23 0.0 23 1 89011 -12477 27 0.0 -1.1132483770137052E-4 NULL NULL -27 0.0 27 1 89011 -12494 44 0.0 -1.1117336321434288E-4 NULL NULL -44 0.0 44 1 89011 -12520 70 0.0 -1.1094249201277955E-4 NULL NULL -70 0.0 70 1 89011 -12525 0 0.0 -1.1089820359281437E-4 NULL NULL 0 0.0 0 1 89011 -12526 1 0.0 -1.1088935015168449E-4 NULL NULL -1 0.0 1 1 89011 -12529 4 0.0 -1.1086279830792561E-4 NULL NULL -4 0.0 4 1 89011 -12531 6 0.0 -1.1084510414172851E-4 NULL NULL -6 0.0 6 1 89011 -12550 25 0.0 -1.1067729083665338E-4 NULL NULL -25 0.0 25 1 89011 -12554 29 0.0 -1.1064202644575435E-4 NULL NULL -29 0.0 29 1 89011 -12557 32 0.0 -1.1061559289639245E-4 NULL NULL -32 0.0 32 1 89011 -12560 35 0.0 -1.1058917197452229E-4 NULL NULL -35 0.0 35 1 89011 -12563 38 0.0 -1.1056276367109768E-4 NULL NULL -38 0.0 38 1 89011 -12574 49 0.0 -1.104660410370606E-4 NULL NULL -49 0.0 49 1 89011 -12581 56 0.0 -1.1040457833240601E-4 NULL NULL -56 0.0 56 1 89011 -12593 68 0.0 -1.1029937266735488E-4 NULL NULL -68 0.0 68 1 89011 -12613 13 0.0 -1.101244747482756E-4 NULL NULL -13 0.0 13 1 89011 -12641 41 0.0 -1.0988054742504549E-4 NULL NULL -41 0.0 41 1 89011 -12643 43 0.0 -1.0986316538796172E-4 NULL NULL -43 0.0 43 1 89011 -12652 52 0.0 -1.0978501422699968E-4 NULL NULL -52 0.0 52 1 89011 -12660 60 0.0 -1.0971563981042654E-4 NULL NULL -60 0.0 60 1 89011 -12665 65 0.0 -1.0967232530596132E-4 NULL NULL -65 0.0 65 1 89011 -12734 59 0.0 -1.0907805874038009E-4 NULL NULL -59 0.0 59 1 89011 -12746 71 0.0 -1.089753648203358E-4 NULL NULL -71 0.0 71 1 89011 -12750 0 0.0 -1.0894117647058824E-4 NULL NULL 0 0.0 0 1 89011 -12752 2 0.0 -1.0892409033877039E-4 NULL NULL -2 0.0 2 1 89011 -12772 22 0.0 -1.0875352333228939E-4 NULL NULL -22 0.0 22 1 89011 -12778 28 0.0 -1.0870245734856785E-4 NULL NULL -28 0.0 28 1 89011 -12781 31 0.0 -1.0867694233628042E-4 NULL NULL -31 169.0 31 2 89012 -12849 24 0.0 -1.0810179780527668E-4 NULL NULL -24 0.0 24 1 89011 -12857 32 0.0 -1.080345337170413E-4 NULL NULL -32 0.0 32 1 89011 -12870 45 0.0 -1.0792540792540792E-4 NULL NULL -45 0.0 45 1 89011 -12880 55 0.0 -1.078416149068323E-4 NULL NULL -55 0.0 55 1 89011 -12901 1 0.0 -1.0766607239748857E-4 NULL NULL -1 0.0 1 1 89011 -12905 5 0.0 -1.0763270050368074E-4 NULL NULL -5 0.0 5 1 89011 -12918 18 0.0 -1.075243845796563E-4 NULL NULL -18 0.0 18 1 89011 -12935 35 0.0 -1.0738306919211443E-4 NULL NULL -35 0.0 35 1 89011 -12936 36 0.0 -1.073747680890538E-4 NULL NULL -36 0.0 36 1 89011 -12940 40 0.0 -1.0734157650695519E-4 NULL NULL -40 0.0 40 1 89011 -13008 33 0.0 -1.0678044280442804E-4 NULL NULL -33 0.0 33 1 89011 -13023 48 0.0 -1.0665745219995393E-4 NULL NULL -48 0.0 48 1 89011 -13026 51 0.0 -1.0663288807001381E-4 NULL NULL -51 0.0 51 1 89011 -13062 12 0.0 -1.0633899862195683E-4 NULL NULL -12 0.0 12 1 89011 -13071 21 0.0 -1.062657792058756E-4 NULL NULL -21 0.0 21 1 89011 -13074 24 0.0 -1.0624139513538321E-4 NULL NULL -24 0.0 24 1 89011 -13078 28 0.0 -1.0620890044349289E-4 NULL NULL -28 0.0 28 1 89011 -13087 37 0.0 -1.0613586001375411E-4 NULL NULL -37 0.0 37 1 89011 -13092 42 0.0 -1.0609532538955087E-4 NULL NULL -42 0.0 42 1 89011 -13093 43 0.0 -1.0608722217979074E-4 NULL NULL -43 0.0 43 1 89011 -13117 67 0.0 -1.0589311580391858E-4 NULL NULL -67 0.0 67 1 89011 -13132 7 0.0 -1.057721596101127E-4 NULL NULL -7 0.0 7 1 89011 -13144 19 0.0 -1.0567559342665856E-4 NULL NULL -19 0.0 19 1 89011 -13153 28 0.0 -1.0560328442180491E-4 NULL NULL -28 0.0 28 1 89011 -13164 39 0.0 -1.0551504102096627E-4 NULL NULL -39 0.0 39 1 89011 -13169 44 0.0 -1.0547497911762472E-4 NULL NULL -44 0.0 44 1 89011 -13192 67 0.0 -1.052910855063675E-4 NULL NULL -67 0.0 67 1 89011 -13209 9 0.0 -1.0515557574381104E-4 NULL NULL -9 0.0 9 1 89011 -13221 21 0.0 -1.0506013160880418E-4 NULL NULL -21 0.0 21 1 89011 -13232 32 0.0 -1.0497279322853688E-4 NULL NULL -32 0.0 32 1 89011 -13253 53 0.0 -1.0480645891496266E-4 NULL NULL -53 0.0 53 1 89011 -13259 59 0.0 -1.0475903160117655E-4 NULL NULL -59 0.0 59 1 89011 -13271 71 0.0 -1.0466430562881471E-4 NULL NULL -71 0.0 71 1 89011 -13300 25 0.0 -1.044360902255639E-4 NULL NULL -25 0.0 25 1 89011 -13338 63 0.0 -1.0413855150697256E-4 NULL NULL -63 0.0 63 1 89011 -13347 72 0.0 -1.0406832996178917E-4 NULL NULL -72 0.0 72 1 89011 -13350 0 0.0 -1.0404494382022472E-4 NULL NULL 0 0.0 0 1 89011 -13352 2 0.0 -1.0402935889754344E-4 NULL NULL -2 0.0 2 1 89011 -13374 24 0.0 -1.0385823239120682E-4 NULL NULL -24 0.0 24 1 89011 -13383 33 0.0 -1.0378838825375477E-4 NULL NULL -33 2916.0 33 2 89012 -13387 37 0.0 -1.0375737655934862E-4 NULL NULL -37 0.0 37 1 89011 -13396 46 0.0 -1.0368766796058525E-4 NULL NULL -46 0.0 46 1 89011 -13404 54 0.0 -1.0362578334825425E-4 NULL NULL -54 0.0 54 1 89011 -13411 61 0.0 -1.035716948773395E-4 NULL NULL -61 0.0 61 1 89011 -13422 72 0.0 -1.0348681269557443E-4 NULL NULL -72 0.0 72 1 89011 -13436 11 0.0 -1.0337898183983328E-4 NULL NULL -11 0.0 11 1 89011 -13438 13 0.0 -1.0336359577318054E-4 NULL NULL -13 0.0 13 1 89011 -13439 14 0.0 -1.0335590445717688E-4 NULL NULL -14 0.0 14 1 89011 -13455 30 0.0 -1.032329988851728E-4 NULL NULL -30 0.0 30 1 89011 -13495 70 0.0 -1.0292701000370507E-4 NULL NULL -70 0.0 70 1 89011 -13539 39 0.0 -1.0259251052514956E-4 NULL NULL -39 0.0 39 1 89011 -13567 67 0.0 -1.0238077688508882E-4 NULL NULL -67 0.0 67 1 89011 -13589 14 0.0 -1.0221502685996026E-4 NULL NULL -14 0.0 14 1 89011 -13605 30 0.0 -1.0209481808158765E-4 NULL NULL -30 0.0 30 1 89011 -13612 37 0.0 -1.0204231560387894E-4 NULL NULL -37 0.0 37 1 89011 -13613 38 0.0 -1.0203481965768015E-4 NULL NULL -38 0.0 38 1 89011 -13638 63 0.0 -1.0184777826660801E-4 NULL NULL -63 0.0 63 1 89011 -13677 27 0.0 -1.0155735906997149E-4 NULL NULL -27 0.0 27 1 89011 -13678 28 0.0 -1.0154993420090656E-4 NULL NULL -28 0.0 28 1 89011 -13680 30 0.0 -1.0153508771929825E-4 NULL NULL -30 0.0 30 1 89011 -13684 34 0.0 -1.0150540777550424E-4 NULL NULL -34 0.0 34 1 89011 -13686 36 0.0 -1.0149057430951338E-4 NULL NULL -36 0.0 36 1 89011 -13701 51 0.0 -1.013794613531859E-4 NULL NULL -51 0.0 51 1 89011 -13710 60 0.0 -1.0131291028446389E-4 NULL NULL -60 0.0 60 1 89011 -13717 67 0.0 -1.0126120871910768E-4 NULL NULL -67 0.0 67 1 89011 -13720 70 0.0 -1.0123906705539358E-4 NULL NULL -70 0.0 70 1 89011 -13741 16 0.0 -1.010843461174587E-4 NULL NULL -16 625.0 16 2 89012 -13748 23 0.0 -1.0103287750945592E-4 NULL NULL -23 0.0 23 1 89011 -13752 27 0.0 -1.0100349040139616E-4 NULL NULL -27 0.0 27 1 89011 -13783 58 0.0 -1.0077631865341363E-4 NULL NULL -58 0.0 58 1 89011 -13800 0 0.0 -1.0065217391304348E-4 NULL NULL 0 0.0 0 1 89011 -13801 1 0.0 -1.0064488080573871E-4 NULL NULL -1 0.0 1 1 89011 -13802 2 0.0 -1.0063758875525286E-4 NULL NULL -2 0.0 2 1 89011 -13825 25 0.0 -1.0047016274864376E-4 NULL NULL -25 0.0 25 1 89011 -13833 33 0.0 -1.0041205812188246E-4 NULL NULL -33 0.0 33 1 89011 -13835 35 0.0 -1.0039754246476329E-4 NULL NULL -35 0.0 35 1 89011 -13893 18 0.0 -9.997840639170806E-5 NULL NULL -18 0.0 18 1 89011 -13909 34 0.0 -9.986339779998562E-5 NULL NULL -34 0.0 34 1 89011 -13941 66 0.0 -9.96341725844631E-5 NULL NULL -66 0.0 66 1 89011 -13947 72 0.0 -9.9591309959131E-5 NULL NULL -72 0.0 72 1 89011 -13953 3 0.0 -9.954848419694689E-5 NULL NULL -3 2162.25 3 2 89012 -13958 8 0.0 -9.951282418684626E-5 NULL NULL -8 0.0 8 1 89011 -13978 28 0.0 -9.937043926169695E-5 NULL NULL -28 0.0 28 1 89011 -13987 37 0.0 -9.930649889182813E-5 NULL NULL -37 0.0 37 1 89011 -13994 44 0.0 -9.925682435329427E-5 NULL NULL -44 0.0 44 1 89011 -14011 61 0.0 -9.91363928342017E-5 NULL NULL -61 0.0 61 1 89011 -14040 15 0.0 -9.893162393162393E-5 NULL NULL -15 0.0 15 1 89011 -14043 18 0.0 -9.89104892117069E-5 NULL NULL -18 0.0 18 1 89011 -14071 46 0.0 -9.871366640608343E-5 NULL NULL -46 0.0 46 1 89011 -14072 47 0.0 -9.87066515065378E-5 NULL NULL -47 0.0 47 1 89011 -14073 48 0.0 -9.86996376039224E-5 NULL NULL -48 0.0 48 1 89011 -14076 51 0.0 -9.867860187553282E-5 NULL NULL -51 0.0 51 1 89011 -14084 59 0.0 -9.862255041181483E-5 NULL NULL -59 0.0 59 1 89011 -14111 11 0.0 -9.843384593579477E-5 NULL NULL -11 0.0 11 1 89011 -14118 18 0.0 -9.838504037399065E-5 NULL NULL -18 0.0 18 1 89011 -14120 20 0.0 -9.837110481586402E-5 NULL NULL -20 0.0 20 1 89011 -14127 27 0.0 -9.832236143554896E-5 NULL NULL -27 0.0 27 1 89011 -14133 33 0.0 -9.828061982593929E-5 NULL NULL -33 0.0 33 1 89011 -14143 43 0.0 -9.821112918051333E-5 NULL NULL -43 0.0 43 1 89011 -14152 52 0.0 -9.814867156585641E-5 NULL NULL -52 0.0 52 1 89011 -14154 54 0.0 -9.813480288257736E-5 NULL NULL -54 0.0 54 1 89011 -14159 59 0.0 -9.810014831555901E-5 NULL NULL -59 0.0 59 1 89011 -14172 72 0.0 -9.801016088060965E-5 NULL NULL -72 0.0 72 1 89011 -14191 16 0.0 -9.78789373546614E-5 NULL NULL -16 0.0 16 1 89011 -14195 20 0.0 -9.785135611130679E-5 NULL NULL -20 0.0 20 1 89011 -14225 50 0.0 -9.764499121265377E-5 NULL NULL -50 0.0 50 1 89011 -14239 64 0.0 -9.754898518154365E-5 NULL NULL -64 0.0 64 1 89011 -14241 66 0.0 -9.753528544343796E-5 NULL NULL -66 0.0 66 1 89011 -14247 72 0.0 -9.749420930722258E-5 NULL NULL -72 0.0 72 1 89011 -14282 32 0.0 -9.725528637445735E-5 NULL NULL -32 0.0 32 1 89011 -14318 68 0.0 -9.701075569213577E-5 NULL NULL -68 0.0 68 1 89011 -14341 16 0.0 -9.685517049020292E-5 NULL NULL -16 0.0 16 1 89011 -14343 18 0.0 -9.684166492365614E-5 NULL NULL -18 0.0 18 1 89011 -14347 22 0.0 -9.681466508677772E-5 NULL NULL -22 0.0 22 1 89011 -14349 24 0.0 -9.68011708132971E-5 NULL NULL -24 0.0 24 1 89011 -14370 45 0.0 -9.665970772442588E-5 NULL NULL -45 0.0 45 1 89011 -14388 63 0.0 -9.653878231859883E-5 NULL NULL -63 0.0 63 1 89011 -14404 4 0.0 -9.643154679255763E-5 NULL NULL -4 0.0 4 1 89011 -14410 10 0.0 -9.639139486467731E-5 NULL NULL -10 0.0 10 1 89011 -14436 36 0.0 -9.621778886118039E-5 NULL NULL -36 0.0 36 1 89011 -14517 42 0.0 -9.5680925811118E-5 NULL NULL -42 0.0 42 1 89011 -14524 49 0.0 -9.563481134673643E-5 NULL NULL -49 0.0 49 1 89011 -14530 55 0.0 -9.559532002752925E-5 NULL NULL -55 0.0 55 1 89011 -14536 61 0.0 -9.55558613098514E-5 NULL NULL -61 0.0 61 1 89011 -14547 72 0.0 -9.548360486698288E-5 NULL NULL -72 0.0 72 1 89011 -14548 73 0.0 -9.54770415177344E-5 NULL NULL -73 0.0 73 1 89011 -14562 12 0.0 -9.53852492789452E-5 NULL NULL -12 0.0 12 1 89011 -14567 17 0.0 -9.53525090959017E-5 NULL NULL -17 0.0 17 1 89011 -14569 19 0.0 -9.533941931498387E-5 NULL NULL -19 0.0 19 1 89011 -14582 32 0.0 -9.525442326155534E-5 NULL NULL -32 0.0 32 1 89011 -14605 55 0.0 -9.510441629578912E-5 NULL NULL -55 0.0 55 1 89011 -14609 59 0.0 -9.507837634334998E-5 NULL NULL -59 0.0 59 1 89011 -14625 0 0.0 -9.497435897435898E-5 NULL NULL 0 0.0 0 1 89011 -14626 1 0.0 -9.496786544509778E-5 NULL NULL -1 0.0 1 1 89011 -14662 37 0.0 -9.47346883099168E-5 NULL NULL -37 0.0 37 1 89011 -14685 60 0.0 -9.458631256384066E-5 NULL NULL -60 0.0 60 1 89011 -14689 64 0.0 -9.456055551773435E-5 NULL NULL -64 0.0 64 1 89011 -14694 69 0.0 -9.452837893017558E-5 NULL NULL -69 3025.0 69 2 89012 -14709 9 0.0 -9.443198042015093E-5 NULL NULL -9 0.0 9 1 89011 -14744 44 0.0 -9.42078133478025E-5 NULL NULL -44 0.0 44 1 89011 -14751 51 0.0 -9.416310758592637E-5 NULL NULL -51 0.0 51 1 89011 -14761 61 0.0 -9.40993157645146E-5 NULL NULL -61 0.0 61 1 89011 -14778 3 0.0 -9.399106780349168E-5 NULL NULL -3 0.0 3 1 89011 -14785 10 0.0 -9.39465674670274E-5 NULL NULL -10 0.0 10 1 89011 -14806 31 0.0 -9.381331892476024E-5 NULL NULL -31 0.0 31 1 89011 -14809 34 0.0 -9.379431426835033E-5 NULL NULL -34 0.0 34 1 89011 -14821 46 0.0 -9.371837257944809E-5 NULL NULL -46 0.0 46 1 89011 -14822 47 0.0 -9.371204965591688E-5 NULL NULL -47 0.0 47 1 89011 -14848 73 0.0 -9.35479525862069E-5 NULL NULL -73 0.0 73 1 89011 -14854 4 0.0 -9.351016561195638E-5 NULL NULL -4 0.0 4 1 89011 -14872 22 0.0 -9.339698762775686E-5 NULL NULL -22 0.0 22 1 89011 -14889 39 0.0 -9.329034857948821E-5 NULL NULL -39 0.0 39 1 89011 -14899 49 0.0 -9.32277334049265E-5 NULL NULL -49 0.0 49 1 89011 -14900 50 0.0 -9.322147651006712E-5 NULL NULL -50 0.0 50 1 89011 -14907 57 0.0 -9.317770175085531E-5 NULL NULL -57 225.0 57 2 89012 -14909 59 0.0 -9.316520222684285E-5 NULL NULL -59 0.0 59 1 89011 -14921 71 0.0 -9.309027545070706E-5 NULL NULL -71 0.0 71 1 89011 -14933 8 0.0 -9.30154690952923E-5 NULL NULL -8 0.0 8 1 89011 -14965 40 0.0 -9.281657200133645E-5 NULL NULL -40 0.0 40 1 89011 -14966 41 0.0 -9.281037017239075E-5 NULL NULL -41 0.0 41 1 89011 -14974 49 0.0 -9.276078536129291E-5 NULL NULL -49 0.0 49 1 89011 -14985 60 0.0 -9.269269269269269E-5 NULL NULL -60 36.0 60 2 89012 -15006 6 0.0 -9.256297481007597E-5 NULL NULL -6 0.0 6 1 89011 -15007 7 0.0 -9.255680682348237E-5 NULL NULL -7 0.0 7 1 89011 -15012 12 0.0 -9.25259792166267E-5 NULL NULL -12 0.0 12 1 89011 -15013 13 0.0 -9.251981615932858E-5 NULL NULL -13 0.0 13 1 89011 -15014 14 0.0 -9.25136539230052E-5 NULL NULL -14 0.0 14 1 89011 -15035 35 0.0 -9.238443631526438E-5 NULL NULL -35 0.0 35 1 89011 -15038 38 0.0 -9.236600611783483E-5 NULL NULL -38 0.0 38 1 89011 -15061 61 0.0 -9.222495186242614E-5 NULL NULL -61 0.0 61 1 89011 -15065 65 0.0 -9.22004646531696E-5 NULL NULL -65 0.0 65 1 89011 -15071 71 0.0 -9.216375821113397E-5 NULL NULL -71 0.0 71 1 89011 -15082 7 0.0 -9.209653892056756E-5 NULL NULL -7 0.0 7 1 89011 -15091 16 0.0 -9.204161420714332E-5 NULL NULL -16 0.0 16 1 89011 -15092 17 0.0 -9.203551550490326E-5 NULL NULL -17 0.0 17 1 89011 -15101 26 0.0 -9.19806635322164E-5 NULL NULL -26 0.0 26 1 89011 -15103 28 0.0 -9.196848308283122E-5 NULL NULL -28 0.0 28 1 89011 -15111 36 0.0 -9.19197935278936E-5 NULL NULL -36 0.0 36 1 89011 -15112 37 0.0 -9.191371095817894E-5 NULL NULL -37 0.0 37 1 89011 -15119 44 0.0 -9.187115549970236E-5 NULL NULL -44 0.0 44 1 89011 -15143 68 0.0 -9.172554975896454E-5 NULL NULL -68 0.0 68 1 89011 -15148 73 0.0 -9.169527330340639E-5 NULL NULL -73 0.0 73 1 89011 -15153 3 0.0 -9.166501682835082E-5 NULL NULL -3 0.0 3 1 89011 -15169 19 0.0 -9.156833014701034E-5 NULL NULL -19 0.0 19 1 89011 -15180 30 0.0 -9.150197628458498E-5 NULL NULL -30 0.0 30 1 89011 -15188 38 0.0 -9.145377929944693E-5 NULL NULL -38 0.0 38 1 89011 -15193 43 0.0 -9.142368195879682E-5 NULL NULL -43 0.0 43 1 89011 -15198 48 0.0 -9.139360442163443E-5 NULL NULL -48 0.0 48 1 89011 -15223 73 0.0 -9.124351310516981E-5 NULL NULL -73 0.0 73 1 89011 -15227 2 0.0 -9.121954423064294E-5 NULL NULL -2 0.0 2 1 89011 -15232 7 0.0 -9.118960084033614E-5 NULL NULL -7 0.0 7 1 89011 -15234 9 0.0 -9.117762898779047E-5 NULL NULL -9 0.0 9 1 89011 -15242 17 0.0 -9.112977299566986E-5 NULL NULL -17 400.0 17 2 89012 -15254 29 0.0 -9.105808312573752E-5 NULL NULL -29 0.0 29 1 89011 -15275 50 0.0 -9.09328968903437E-5 NULL NULL -50 0.0 50 1 89011 -15277 52 0.0 -9.092099234142829E-5 NULL NULL -52 0.0 52 1 89011 -15278 53 0.0 -9.091504123576385E-5 NULL NULL -53 0.0 53 1 89011 -15296 71 0.0 -9.080805439330544E-5 NULL NULL -71 0.0 71 1 89011 -15298 73 0.0 -9.079618250751732E-5 NULL NULL -73 0.0 73 1 89011 -15313 13 0.0 -9.070724221249919E-5 NULL NULL -13 0.0 13 1 89011 -15324 24 0.0 -9.064212999216915E-5 NULL NULL -24 0.0 24 1 89011 -15325 25 0.0 -9.063621533442089E-5 NULL NULL -25 0.0 25 1 89011 -15328 28 0.0 -9.061847599164927E-5 NULL NULL -28 0.0 28 1 89011 -15340 40 0.0 -9.054758800521513E-5 NULL NULL -40 0.0 40 1 89011 -15369 69 0.0 -9.037673238336912E-5 NULL NULL -69 0.0 69 1 89011 -15375 0 0.0 -9.034146341463415E-5 NULL NULL 0 0.0 0 1 89011 -15401 26 0.0 -9.018894876956042E-5 NULL NULL -26 0.0 26 1 89011 -15416 41 0.0 -9.010119356512714E-5 NULL NULL -41 0.0 41 1 89011 -15417 42 0.0 -9.009534928974509E-5 NULL NULL -42 0.0 42 1 89011 -15423 48 0.0 -9.006029955261622E-5 NULL NULL -48 0.0 48 1 89011 -15429 54 0.0 -9.002527707563679E-5 NULL NULL -54 0.0 54 1 89011 -15436 61 0.0 -8.998445193055195E-5 NULL NULL -61 0.0 61 1 89011 -15443 68 0.0 -8.994366379589458E-5 NULL NULL -68 0.0 68 1 89011 -15456 6 0.0 -8.986801242236025E-5 NULL NULL -6 0.0 6 1 89011 -15509 59 0.0 -8.956090012250952E-5 NULL NULL -59 0.0 59 1 89011 -15512 62 0.0 -8.95435791645178E-5 NULL NULL -62 0.0 62 1 89011 -15516 66 0.0 -8.952049497293117E-5 NULL NULL -66 0.0 66 1 89011 -15523 73 0.0 -8.948012626425304E-5 NULL NULL -73 0.0 73 1 89011 -15541 16 0.0 -8.937648799948523E-5 NULL NULL -16 0.0 16 1 89011 -15545 20 0.0 -8.93534898681248E-5 NULL NULL -20 0.0 20 1 89011 -15548 23 0.0 -8.933624903524569E-5 NULL NULL -23 0.0 23 1 89011 -15549 24 0.0 -8.933050356936138E-5 NULL NULL -24 0.0 24 1 89011 -15551 26 0.0 -8.93190148543502E-5 NULL NULL -26 0.0 26 1 89011 -15588 63 0.0 -8.910700538876059E-5 NULL NULL -63 0.0 63 1 89011 -15593 68 0.0 -8.907843263002629E-5 NULL NULL -68 0.0 68 1 89011 -15602 2 0.0 -8.902704781438277E-5 NULL NULL -2 0.0 2 1 89011 -15605 5 0.0 -8.900993271387376E-5 NULL NULL -5 0.0 5 1 89011 -15609 9 0.0 -8.89871228137613E-5 NULL NULL -9 0.0 9 1 89011 -15616 16 0.0 -8.894723360655738E-5 NULL NULL -16 0.0 16 1 89011 -15620 20 0.0 -8.892445582586428E-5 NULL NULL -20 0.0 20 1 89011 -15625 25 0.0 -8.8896E-5 NULL NULL -25 0.0 25 1 89011 -15626 26 0.0 -8.889031102009471E-5 NULL NULL -26 0.0 26 1 89011 -15646 46 0.0 -8.877668413652051E-5 NULL NULL -46 0.0 46 1 89011 -15655 55 0.0 -8.872564675822421E-5 NULL NULL -55 0.0 55 1 89011 -15668 68 0.0 -8.865202961450089E-5 NULL NULL -68 0.0 68 1 89011 -15678 3 0.0 -8.859548411787218E-5 NULL NULL -3 0.0 3 1 89011 -15694 19 0.0 -8.8505161208105E-5 NULL NULL -19 0.0 19 1 89011 -15699 24 0.0 -8.847697305560863E-5 NULL NULL -24 0.0 24 1 89011 -15705 30 0.0 -8.844317096466093E-5 NULL NULL -30 0.0 30 1 89011 -15707 32 0.0 -8.843190933978481E-5 NULL NULL -32 0.0 32 1 89011 -15717 42 0.0 -8.837564420690972E-5 NULL NULL -42 0.0 42 1 89011 -15726 51 0.0 -8.8325066768409E-5 NULL NULL -51 0.0 51 1 89011 -15745 70 0.0 -8.821848205779612E-5 NULL NULL -70 0.0 70 1 89011 -15749 74 0.0 -8.819607594132961E-5 NULL NULL -74 0.0 74 1 89011 -15752 2 0.0 -8.817927882173692E-5 NULL NULL -2 0.0 2 1 89011 -15754 4 0.0 -8.81680842960518E-5 NULL NULL -4 0.0 4 1 89011 -15764 14 0.0 -8.811215427556457E-5 NULL NULL -14 0.0 14 1 89011 -15769 19 0.0 -8.808421586657366E-5 NULL NULL -19 0.0 19 1 89011 -15827 2 0.0 -8.776142035761673E-5 NULL NULL -2 0.0 2 1 89011 -15841 16 0.0 -8.768385834227637E-5 NULL NULL -16 0.0 16 1 89011 -15861 36 0.0 -8.757329298278797E-5 NULL NULL -36 0.0 36 1 89011 -15890 65 0.0 -8.741346758967904E-5 NULL NULL -65 0.0 65 1 89011 -15909 9 0.0 -8.730907033754479E-5 NULL NULL -9 0.0 9 1 89011 -15921 21 0.0 -8.724326361409459E-5 NULL NULL -21 0.0 21 1 89011 -15932 32 0.0 -8.718302786844088E-5 NULL NULL -32 0.0 32 1 89011 -15933 33 0.0 -8.717755601581623E-5 NULL NULL -33 0.0 33 1 89011 -15956 56 0.0 -8.705189270493858E-5 NULL NULL -56 0.0 56 1 89011 -15958 58 0.0 -8.704098257927059E-5 NULL NULL -58 0.0 58 1 89011 -15965 65 0.0 -8.70028186658315E-5 NULL NULL -65 0.0 65 1 89011 -15969 69 0.0 -8.698102573736615E-5 NULL NULL -69 0.0 69 1 89011 -15973 73 0.0 -8.695924372378389E-5 NULL NULL -73 0.0 73 1 89011 -15985 10 0.0 -8.689396309039725E-5 NULL NULL -10 0.0 10 1 89011 -16030 55 0.0 -8.665003119151591E-5 NULL NULL -55 0.0 55 1 89011 -16036 61 0.0 -8.661761037665253E-5 NULL NULL -61 0.0 61 1 89011 -16045 70 0.0 -8.656902461826114E-5 NULL NULL -70 0.0 70 1 89011 -16055 5 0.0 -8.651510432886951E-5 NULL NULL -5 0.0 5 1 89011 -16056 6 0.0 -8.650971599402093E-5 NULL NULL -6 0.0 6 1 89011 -16069 19 0.0 -8.643972867011015E-5 NULL NULL -19 0.0 19 1 89011 -16070 20 0.0 -8.643434971997511E-5 NULL NULL -20 0.0 20 1 89011 -16096 46 0.0 -8.629473161033797E-5 NULL NULL -46 342.25 46 2 89012 -16125 0 0.0 -8.613953488372093E-5 NULL NULL 0 0.0 0 1 89011 -16127 2 0.0 -8.612885223538166E-5 NULL NULL -2 0.0 2 1 89011 -16146 21 0.0 -8.602749907097733E-5 NULL NULL -21 0.0 21 1 89011 -16165 40 0.0 -8.59263841633158E-5 NULL NULL -40 0.0 40 1 89011 -16174 49 0.0 -8.587857054531965E-5 NULL NULL -49 0.0 49 1 89011 -16178 53 0.0 -8.585733712449006E-5 NULL NULL -53 0.0 53 1 89011 -16189 64 0.0 -8.579899932052628E-5 NULL NULL -64 306.25 64 2 89012 -16191 66 0.0 -8.578840096349824E-5 NULL NULL -66 0.0 66 1 89011 -16212 12 0.0 -8.567727609178386E-5 NULL NULL -12 0.0 12 1 89011 -16219 19 0.0 -8.564029841543868E-5 NULL NULL -19 0.0 19 1 89011 -16227 27 0.0 -8.559807727860973E-5 NULL NULL -27 0.0 27 1 89011 -16228 28 0.0 -8.559280256347055E-5 NULL NULL -28 0.0 28 1 89011 -16232 32 0.0 -8.557171020206999E-5 NULL NULL -32 306.25 32 2 89012 -16238 38 0.0 -8.554009114422959E-5 NULL NULL -38 0.0 38 1 89011 -16240 40 0.0 -8.552955665024631E-5 NULL NULL -40 0.0 40 1 89011 -16270 70 0.0 -8.537185003073141E-5 NULL NULL -70 0.0 70 1 89011 -16274 74 0.0 -8.535086641268281E-5 NULL NULL -74 0.0 74 1 89011 -16276 1 0.0 -8.534037847136889E-5 NULL NULL -1 0.0 1 1 89011 -16278 3 0.0 -8.532989310726133E-5 NULL NULL -3 0.0 3 1 89011 -16279 4 0.0 -8.53246513913631E-5 NULL NULL -4 0.0 4 1 89011 -16280 5 0.0 -8.531941031941033E-5 NULL NULL -5 0.0 5 1 89011 -16282 7 0.0 -8.530893010686648E-5 NULL NULL -7 0.0 7 1 89011 -16285 10 0.0 -8.529321461467609E-5 NULL NULL -10 0.0 10 1 89011 -16298 23 0.0 -8.522518100380415E-5 NULL NULL -23 0.0 23 1 89011 -16319 44 0.0 -8.511550952877014E-5 NULL NULL -44 0.0 44 1 89011 -16337 62 0.0 -8.502172981575565E-5 NULL NULL -62 0.0 62 1 89011 -16338 63 0.0 -8.501652589056188E-5 NULL NULL -63 0.0 63 1 89011 -16352 2 0.0 -8.494373776908023E-5 NULL NULL -2 0.0 2 1 89011 -16368 18 0.0 -8.486070381231672E-5 NULL NULL -18 0.0 18 1 89011 -16370 20 0.0 -8.485033598045205E-5 NULL NULL -20 0.0 20 1 89011 WARNING: Comparing a bigint and a double may result in a loss of precision. WARNING: Comparing a bigint and a double may result in a loss of precision. PREHOOK: query: -- TargetTypeClasses: Long, Double, Timestamp @@ -5881,14 +2176,15 @@ WHERE (((ctimestamp1 != 0)) AND ((((-257 != ctinyint) AND (cboolean2 IS NOT NULL)) AND ((cstring1 RLIKE '.*ss') - AND (-10669 < ctimestamp1))) - OR (ctimestamp2 = -10669) + AND (-3 < ctimestamp1))) + OR (ctimestamp2 = -5) OR ((ctimestamp1 < 0) AND (cstring2 LIKE '%b%')) OR (cdouble = cint) OR ((cboolean1 IS NULL) AND (cfloat < cint)))) GROUP BY ctimestamp1, cstring1 +LIMIT 50 PREHOOK: type: QUERY POSTHOOK: query: -- TargetTypeClasses: Bool, Timestamp, String, Double, Long -- Functions: StDevP, Avg, Count, Min, Var, VarP, Sum @@ -5939,14 +2235,15 @@ WHERE (((ctimestamp1 != 0)) AND ((((-257 != ctinyint) AND (cboolean2 IS NOT NULL)) AND ((cstring1 RLIKE '.*ss') - AND (-10669 < ctimestamp1))) - OR (ctimestamp2 = -10669) + AND (-3 < ctimestamp1))) + OR (ctimestamp2 = -5) OR ((ctimestamp1 < 0) AND (cstring2 LIKE '%b%')) OR (cdouble = cint) OR ((cboolean1 IS NULL) AND (cfloat < cint)))) GROUP BY ctimestamp1, cstring1 +LIMIT 50 POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage @@ -5960,7 +2257,7 @@ STAGE PLANS: alias: alltypesorc Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((ctimestamp1 <> 0) and (((((((-257 <> ctinyint) and cboolean2 is not null) and ((cstring1 rlike '.*ss') and (-10669 < ctimestamp1))) or (ctimestamp2 = -10669)) or ((ctimestamp1 < 0) and (cstring2 like '%b%'))) or (cdouble = cint)) or (cboolean1 is null and (cfloat < cint)))) (type: boolean) + predicate: ((ctimestamp1 <> 0) and (((((((-257 <> ctinyint) and cboolean2 is not null) and ((cstring1 rlike '.*ss') and (-3 < ctimestamp1))) or (ctimestamp2 = -5)) or ((ctimestamp1 < 0) and (cstring2 like '%b%'))) or (cdouble = cint)) or (cboolean1 is null and (cfloat < cint)))) (type: boolean) Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: ctimestamp1 (type: timestamp), cstring1 (type: string), cint (type: int), csmallint (type: smallint), ctinyint (type: tinyint), cfloat (type: float), cdouble (type: double) @@ -5990,17 +2287,20 @@ STAGE PLANS: expressions: _col0 (type: timestamp), _col1 (type: string), _col2 (type: double), (_col2 * 10.175) (type: double), (- _col2) (type: double), _col3 (type: double), (- _col2) (type: double), (-26.28 - _col2) (type: double), _col4 (type: bigint), (- _col4) (type: bigint), ((-26.28 - _col2) * (- _col2)) (type: double), _col5 (type: tinyint), (((-26.28 - _col2) * (- _col2)) * (- _col4)) (type: double), (- (_col2 * 10.175)) (type: double), _col6 (type: double), (_col6 + (((-26.28 - _col2) * (- _col2)) * (- _col4))) (type: double), (- (- _col2)) (type: double), ((- _col4) / _col2) (type: double), _col7 (type: double), (10.175 / _col3) (type: double), _col8 (type: double), _col9 (type: double), ((_col6 + (((-26.28 - _col2) * (- _col2)) * (- _col4))) - (((-26.28 - _col2) * (- _col2)) * (- _col4))) (type: double), (- (- (_col2 * 10.175))) (type: double), _col10 (type: double), (((_col6 + (((-26.28 - _col2) * (- _col2)) * (- _col4))) - (((-26.28 - _col2) * (- _col2)) * (- _col4))) * 10.175) (type: double), (10.175 % (10.175 / _col3)) (type: double), (- _col5) (type: tinyint), _col11 (type: double), _col12 (type: double), (- ((-26.28 - _col2) * (- _col2))) (type: double), ((- _col2) % _col10) (type: double), (-26.28 / (- _col5)) (type: double), _col13 (type: double), _col14 (type: bigint), ((_col6 + (((-26.28 - _col2) * (- _col2)) * (- _col4))) / _col7) (type: double), (- (- _col4)) (type: bigint), _col4 (type: bigint), ((_col6 + (((-26.28 - _col2) * (- _col2)) * (- _col4))) % -26.28) (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35, _col36, _col37, _col38 Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Limit + Number of rows: 50 + Statistics: Num rows: 50 Data size: 1500 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 50 Data size: 1500 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Stage: Stage-0 Fetch Operator - limit: -1 + limit: 50 Processor Tree: ListSink @@ -6048,14 +2348,15 @@ WHERE (((ctimestamp1 != 0)) AND ((((-257 != ctinyint) AND (cboolean2 IS NOT NULL)) AND ((cstring1 RLIKE '.*ss') - AND (-10669 < ctimestamp1))) - OR (ctimestamp2 = -10669) + AND (-3 < ctimestamp1))) + OR (ctimestamp2 = -5) OR ((ctimestamp1 < 0) AND (cstring2 LIKE '%b%')) OR (cdouble = cint) OR ((cboolean1 IS NULL) AND (cfloat < cint)))) GROUP BY ctimestamp1, cstring1 +LIMIT 50 PREHOOK: type: QUERY PREHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -6103,14 +2404,15 @@ WHERE (((ctimestamp1 != 0)) AND ((((-257 != ctinyint) AND (cboolean2 IS NOT NULL)) AND ((cstring1 RLIKE '.*ss') - AND (-10669 < ctimestamp1))) - OR (ctimestamp2 = -10669) + AND (-3 < ctimestamp1))) + OR (ctimestamp2 = -5) OR ((ctimestamp1 < 0) AND (cstring2 LIKE '%b%')) OR (cdouble = cint) OR ((cboolean1 IS NULL) AND (cfloat < cint)))) GROUP BY ctimestamp1, cstring1 +LIMIT 50 POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### @@ -6164,201 +2466,6 @@ POSTHOOK: Input: default@alltypesorc 1969-12-31 15:59:46.82 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -46 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -46.0 NULL 6.522017819364598E-4 46 15601.0 0.0 NULL NULL -0.571304347826087 0.0 NULL NULL 1 1 NULL 1969-12-31 15:59:46.847 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -26 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -26.0 NULL 0.001413979988882123 26 -7196.0 0.0 NULL NULL -1.0107692307692309 0.0 NULL NULL 1 1 NULL 1969-12-31 15:59:46.915 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -25 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -25.0 NULL 0.0 25 -200.0 0.0 NULL NULL -1.0512000000000001 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:46.953 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 47 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 47.0 NULL 6.522017819364598E-4 -47 15601.0 0.0 NULL NULL 0.5591489361702128 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:46.966 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 38 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 38.0 NULL 0.001413979988882123 -38 -7196.0 0.0 NULL NULL 0.6915789473684211 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:46.978 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 32 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 32.0 NULL 0.001413979988882123 -32 -7196.0 0.0 NULL NULL 0.82125 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.031 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -7 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -7.0 NULL 0.001413979988882123 7 -7196.0 0.0 NULL NULL -3.7542857142857144 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.134 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -48 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -48.0 NULL 6.522017819364598E-4 48 15601.0 0.0 NULL NULL -0.5475 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.263 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 17 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 17.0 NULL 0.0 -17 -200.0 0.0 NULL NULL 1.5458823529411765 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.282 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 56 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 56.0 NULL 0.0 -56 -200.0 0.0 NULL NULL 0.4692857142857143 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.406 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -58 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -58.0 NULL 6.522017819364598E-4 58 15601.0 0.0 NULL NULL -0.4531034482758621 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.493 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -27.0 NULL 0.001413979988882123 27 -7196.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.511 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -55 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -55.0 NULL 6.522017819364598E-4 55 15601.0 0.0 NULL NULL -0.47781818181818186 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.616 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 39 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 39.0 NULL 6.522017819364598E-4 -39 15601.0 0.0 NULL NULL 0.6738461538461539 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.666 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 44 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 44.0 NULL 0.0 -44 -200.0 0.0 NULL NULL 0.5972727272727273 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.859 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -58 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -58.0 NULL 0.001413979988882123 58 -7196.0 0.0 NULL NULL -0.4531034482758621 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.921 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 52 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 52.0 NULL 0.0 -52 -200.0 0.0 NULL NULL 0.5053846153846154 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:47.975 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -17 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -17.0 NULL 6.522017819364598E-4 17 15601.0 0.0 NULL NULL -1.5458823529411765 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.022 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 35 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 35.0 NULL 0.001413979988882123 -35 -7196.0 0.0 NULL NULL 0.7508571428571429 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.052 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 15 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 15.0 NULL 6.522017819364598E-4 -15 15601.0 0.0 NULL NULL 1.752 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.12 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 8 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 8.0 NULL 0.001413979988882123 -8 -7196.0 0.0 NULL NULL 3.285 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.133 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -16.0 NULL 0.0 16 -200.0 0.0 NULL NULL -1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.152 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -31 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -31.0 NULL 0.0 31 -200.0 0.0 NULL NULL -0.847741935483871 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.299 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -60 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -60.0 NULL 6.522017819364598E-4 60 15601.0 0.0 NULL NULL -0.438 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.341 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 16.0 NULL 0.0 -16 -200.0 0.0 NULL NULL 1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.429 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -23 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -23.0 NULL 6.522017819364598E-4 23 15601.0 0.0 NULL NULL -1.142608695652174 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.462 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -16.0 NULL 0.001413979988882123 16 -7196.0 0.0 NULL NULL -1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.473 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 34 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 34.0 NULL 0.0 -34 -200.0 0.0 NULL NULL 0.7729411764705882 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.499 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 26 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 26.0 NULL 0.001413979988882123 -26 -7196.0 0.0 NULL NULL 1.0107692307692309 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.552 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -42 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -42.0 NULL 6.522017819364598E-4 42 15601.0 0.0 NULL NULL -0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.622 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 19 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 19.0 NULL 0.001413979988882123 -19 -7196.0 0.0 NULL NULL 1.3831578947368421 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.663 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 26 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 26.0 NULL 0.0 -26 -200.0 0.0 NULL NULL 1.0107692307692309 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.678 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -59 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -59.0 NULL 0.0 59 -200.0 0.0 NULL NULL -0.44542372881355935 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.679 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -60 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -60.0 NULL 6.522017819364598E-4 60 15601.0 0.0 NULL NULL -0.438 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.703 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -13 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -13.0 NULL 0.001413979988882123 13 -7196.0 0.0 NULL NULL -2.0215384615384617 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.734 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 62 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 62.0 NULL 0.001413979988882123 -62 -7196.0 0.0 NULL NULL 0.4238709677419355 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.779 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -34 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -34.0 NULL 0.001413979988882123 34 -7196.0 0.0 NULL NULL -0.7729411764705882 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.929 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -12 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -12.0 NULL 0.001413979988882123 12 -7196.0 0.0 NULL NULL -2.19 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:48.943 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 11 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 11.0 NULL 6.522017819364598E-4 -11 15601.0 0.0 NULL NULL 2.389090909090909 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.021 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 2 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 2.0 NULL 0.001413979988882123 -2 -7196.0 0.0 NULL NULL 13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.051 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 15 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 15.0 NULL 0.001413979988882123 -15 -7196.0 0.0 NULL NULL 1.752 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.053 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 62 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 62.0 NULL 0.0 -62 -200.0 0.0 NULL NULL 0.4238709677419355 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.062 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 41 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 41.0 NULL 0.0 -41 -200.0 0.0 NULL NULL 0.6409756097560976 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.198 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -9 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -9.0 NULL 0.0 9 -200.0 0.0 NULL NULL -2.92 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.23 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 40 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 40.0 NULL 0.001413979988882123 -40 -7196.0 0.0 NULL NULL 0.657 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.314 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -46 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -46.0 NULL 0.001413979988882123 46 -7196.0 0.0 NULL NULL -0.571304347826087 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.326 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 39 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 39.0 NULL 0.001413979988882123 -39 -7196.0 0.0 NULL NULL 0.6738461538461539 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.331 NULL NULL NULL NULL 5067.0 NULL NULL 3 -3 NULL -52 NULL NULL 8.3223867E7 NULL NULL NULL 1323.5555555555557 0.0020080915729228342 NULL 1985.3333333333335 NULL NULL -23.333333333333332 NULL 0.002008091572922567 52 -200.0 5.5482578E7 NULL NULL -0.5053846153846154 36.38070306571267 NULL NULL 3 3 NULL -1969-12-31 15:59:49.383 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -43 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -43.0 NULL 0.0 43 -200.0 0.0 NULL NULL -0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.567 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 38 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 38.0 NULL 0.0 -38 -200.0 0.0 NULL NULL 0.6915789473684211 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.762 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -43 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -43.0 NULL 0.0 43 -200.0 0.0 NULL NULL -0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:49.896 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -22 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -22.0 NULL 6.522017819364598E-4 22 15601.0 0.0 NULL NULL -1.1945454545454546 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.046 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 27.0 NULL 0.001413979988882123 -27 -7196.0 0.0 NULL NULL 0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.074 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -40 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -40.0 NULL 0.0 40 -200.0 0.0 NULL NULL -0.657 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.093 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -2 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -2.0 NULL 0.001413979988882123 2 -7196.0 0.0 NULL NULL -13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.345 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -37 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -37.0 NULL 6.522017819364598E-4 37 15601.0 0.0 NULL NULL -0.7102702702702703 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.404 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 16.0 NULL 0.001413979988882123 -16 -7196.0 0.0 NULL NULL 1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.54 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -51 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -51.0 NULL 0.001413979988882123 51 -7196.0 0.0 NULL NULL -0.5152941176470588 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.573 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -26 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -26.0 NULL 0.0 26 -200.0 0.0 NULL NULL -1.0107692307692309 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.66 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 62 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 62.0 NULL 6.522017819364598E-4 -62 15601.0 0.0 NULL NULL 0.4238709677419355 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.675 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 51 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 51.0 NULL 0.0 -51 -200.0 0.0 NULL NULL 0.5152941176470588 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.843 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -44 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -44.0 NULL 0.001413979988882123 44 -7196.0 0.0 NULL NULL -0.5972727272727273 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:50.893 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 43 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 43.0 NULL 0.0 -43 -200.0 0.0 NULL NULL 0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.009 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -49 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -49.0 NULL 0.001413979988882123 49 -7196.0 0.0 NULL NULL -0.5363265306122449 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.024 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 55 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 55.0 NULL 0.0 -55 -200.0 0.0 NULL NULL 0.47781818181818186 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.104 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 34 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 34.0 NULL 6.522017819364598E-4 -34 15601.0 0.0 NULL NULL 0.7729411764705882 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.208 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -33 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -33.0 NULL 0.001413979988882123 33 -7196.0 0.0 NULL NULL -0.7963636363636364 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.232 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 10 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 10.0 NULL 0.001413979988882123 -10 -7196.0 0.0 NULL NULL 2.628 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.265 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 59 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 59.0 NULL 6.522017819364598E-4 -59 15601.0 0.0 NULL NULL 0.44542372881355935 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.413 NULL NULL NULL NULL 7700.5 NULL NULL 2 -2 NULL -61 NULL NULL 1.248358005E8 NULL NULL NULL 90.25 0.0013213427699500034 NULL 180.5 NULL NULL -51.5 NULL 6.606713849747906E-4 61 -200.0 6.241790025E7 NULL NULL -0.4308196721311476 9.5 NULL NULL 2 2 NULL -1969-12-31 15:59:51.417 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -17 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -17.0 NULL 0.0 17 -200.0 0.0 NULL NULL -1.5458823529411765 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.555 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 49 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 49.0 NULL 0.0 -49 -200.0 0.0 NULL NULL 0.5363265306122449 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.561 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -35 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -35.0 NULL 0.001413979988882123 35 -7196.0 0.0 NULL NULL -0.7508571428571429 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.596 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -30 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -30.0 NULL 6.522017819364598E-4 30 15601.0 0.0 NULL NULL -0.876 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.637 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -8 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -8.0 NULL 6.522017819364598E-4 8 15601.0 0.0 NULL NULL -3.285 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.719 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -47 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -47.0 NULL 0.0 47 -200.0 0.0 NULL NULL -0.5591489361702128 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.725 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 57 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 57.0 NULL 0.001413979988882123 -57 -7196.0 0.0 NULL NULL 0.4610526315789474 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.803 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 42 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 42.0 NULL 0.001413979988882123 -42 -7196.0 0.0 NULL NULL 0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.845 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -27.0 NULL 0.0 27 -200.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:51.884 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 55 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 55.0 NULL 0.0 -55 -200.0 0.0 NULL NULL 0.47781818181818186 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.052 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -49 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -49.0 NULL 0.001413979988882123 49 -7196.0 0.0 NULL NULL -0.5363265306122449 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.076 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 15 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 15.0 NULL 6.522017819364598E-4 -15 15601.0 0.0 NULL NULL 1.752 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.118 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 47 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 47.0 NULL 0.0 -47 -200.0 0.0 NULL NULL 0.5591489361702128 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.311 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 43 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 43.0 NULL 6.522017819364598E-4 -43 15601.0 0.0 NULL NULL 0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.326 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 2 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 2.0 NULL 6.522017819364598E-4 -2 15601.0 0.0 NULL NULL 13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.343 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -16.0 NULL 0.0 16 -200.0 0.0 NULL NULL -1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.357 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 55 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 55.0 NULL 6.522017819364598E-4 -55 15601.0 0.0 NULL NULL 0.47781818181818186 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.408 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -60 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -60.0 NULL 0.001413979988882123 60 -7196.0 0.0 NULL NULL -0.438 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.411 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 45 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 45.0 NULL 0.001413979988882123 -45 -7196.0 0.0 NULL NULL 0.5840000000000001 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.587 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -33 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -33.0 NULL 6.522017819364598E-4 33 15601.0 0.0 NULL NULL -0.7963636363636364 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.815 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -52 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -52.0 NULL 0.0 52 -200.0 0.0 NULL NULL -0.5053846153846154 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:52.969 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -27.0 NULL 0.001413979988882123 27 -7196.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.038 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 8 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 8.0 NULL 6.522017819364598E-4 -8 15601.0 0.0 NULL NULL 3.285 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.06 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 34 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 34.0 NULL 0.0 -34 -200.0 0.0 NULL NULL 0.7729411764705882 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.246 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -8 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -8.0 NULL 0.0 8 -200.0 0.0 NULL NULL -3.285 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.458 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 29 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 29.0 NULL 0.001413979988882123 -29 -7196.0 0.0 NULL NULL 0.9062068965517242 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.546 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -27.0 NULL 0.0 27 -200.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.583 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -59 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -59.0 NULL 6.522017819364598E-4 59 15601.0 0.0 NULL NULL -0.44542372881355935 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.584 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -29 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -29.0 NULL 6.522017819364598E-4 29 15601.0 0.0 NULL NULL -0.9062068965517242 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.635 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 47 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 47.0 NULL 6.522017819364598E-4 -47 15601.0 0.0 NULL NULL 0.5591489361702128 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:53.876 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 37 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 37.0 NULL 0.001413979988882123 -37 -7196.0 0.0 NULL NULL 0.7102702702702703 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.024 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 13 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 13.0 NULL 6.522017819364598E-4 -13 15601.0 0.0 NULL NULL 2.0215384615384617 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.072 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 25 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 25.0 NULL 0.0 -25 -200.0 0.0 NULL NULL 1.0512000000000001 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.116 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 62 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 62.0 NULL 6.522017819364598E-4 -62 15601.0 0.0 NULL NULL 0.4238709677419355 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.131 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -9 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -9.0 NULL 0.0 9 -200.0 0.0 NULL NULL -2.92 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.179 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -18 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -18.0 NULL 0.001413979988882123 18 -7196.0 0.0 NULL NULL -1.46 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.256 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 62 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 62.0 NULL 0.001413979988882123 -62 -7196.0 0.0 NULL NULL 0.4238709677419355 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.307 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -47 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -47.0 NULL 0.001413979988882123 47 -7196.0 0.0 NULL NULL -0.5591489361702128 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.334 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 46 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 46.0 NULL 6.522017819364598E-4 -46 15601.0 0.0 NULL NULL 0.571304347826087 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.342 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 26 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 26.0 NULL 6.522017819364598E-4 -26 15601.0 0.0 NULL NULL 1.0107692307692309 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.454 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 6 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 6.0 NULL 6.522017819364598E-4 -6 15601.0 0.0 NULL NULL 4.38 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.503 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 18 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 18.0 NULL 0.001413979988882123 -18 -7196.0 0.0 NULL NULL 1.46 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.583 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -31 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -31.0 NULL 6.522017819364598E-4 31 15601.0 0.0 NULL NULL -0.847741935483871 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.63 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -29 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -29.0 NULL 0.001413979988882123 29 -7196.0 0.0 NULL NULL -0.9062068965517242 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.742 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -49 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -49.0 NULL 0.001413979988882123 49 -7196.0 0.0 NULL NULL -0.5363265306122449 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.853 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 42 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 42.0 NULL 0.001413979988882123 -42 -7196.0 0.0 NULL NULL 0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.929 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 43 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 43.0 NULL 0.0 -43 -200.0 0.0 NULL NULL 0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.934 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -33 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -33.0 NULL 0.001413979988882123 33 -7196.0 0.0 NULL NULL -0.7963636363636364 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:54.994 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -1 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -1.0 NULL 6.522017819364598E-4 1 15601.0 0.0 NULL NULL -26.28 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.043 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -16.0 NULL 0.0 16 -200.0 0.0 NULL NULL -1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.143 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -53 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -53.0 NULL 0.001413979988882123 53 -7196.0 0.0 NULL NULL -0.4958490566037736 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.204 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 30 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 30.0 NULL 0.0 -30 -200.0 0.0 NULL NULL 0.876 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.411 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -43 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -43.0 NULL 6.522017819364598E-4 43 15601.0 0.0 NULL NULL -0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.492 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 14 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 14.0 NULL 0.001413979988882123 -14 -7196.0 0.0 NULL NULL 1.8771428571428572 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.508 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 31 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 31.0 NULL 0.0 -31 -200.0 0.0 NULL NULL 0.847741935483871 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.755 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -33 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -33.0 NULL 0.0 33 -200.0 0.0 NULL NULL -0.7963636363636364 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.829 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 0 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 0.0 NULL 0.0 0 -200.0 0.0 NULL NULL NULL 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.847 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -9 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -9.0 NULL 6.522017819364598E-4 9 15601.0 0.0 NULL NULL -2.92 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.9 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -21 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -21.0 NULL 0.001413979988882123 21 -7196.0 0.0 NULL NULL -1.2514285714285716 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.971 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 8 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 8.0 NULL 0.001413979988882123 -8 -7196.0 0.0 NULL NULL 3.285 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.989 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -6 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -6.0 NULL 6.522017819364598E-4 6 15601.0 0.0 NULL NULL -4.38 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:55.998 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -40 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -40.0 NULL 6.522017819364598E-4 40 15601.0 0.0 NULL NULL -0.657 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.068 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 46 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 46.0 NULL 6.522017819364598E-4 -46 15601.0 0.0 NULL NULL 0.571304347826087 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.109 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -21 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -21.0 NULL 0.0 21 -200.0 0.0 NULL NULL -1.2514285714285716 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.218 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -4 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -4.0 NULL 0.0 4 -200.0 0.0 NULL NULL -6.57 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.31 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 27.0 NULL 0.001413979988882123 -27 -7196.0 0.0 NULL NULL 0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.319 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -5 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -5.0 NULL 0.0 5 -200.0 0.0 NULL NULL -5.256 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.338 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -44 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -44.0 NULL 6.522017819364598E-4 44 15601.0 0.0 NULL NULL -0.5972727272727273 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.399 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 2 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 2.0 NULL 0.0 -2 -200.0 0.0 NULL NULL 13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.426 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 5 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 5.0 NULL 0.001413979988882123 -5 -7196.0 0.0 NULL NULL 5.256 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.568 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 55 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 55.0 NULL 0.001413979988882123 -55 -7196.0 0.0 NULL NULL 0.47781818181818186 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.762 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 1 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 1.0 NULL 0.0 -1 -200.0 0.0 NULL NULL 26.28 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.806 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 42 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 42.0 NULL 6.522017819364598E-4 -42 15601.0 0.0 NULL NULL 0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.858 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 38 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 38.0 NULL 6.522017819364598E-4 -38 15601.0 0.0 NULL NULL 0.6915789473684211 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.913 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 53 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 53.0 NULL 6.522017819364598E-4 -53 15601.0 0.0 NULL NULL 0.4958490566037736 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.928 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -42 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -42.0 NULL 0.001413979988882123 42 -7196.0 0.0 NULL NULL -0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:56.97 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -2 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -2.0 NULL 6.522017819364598E-4 2 15601.0 0.0 NULL NULL -13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.215 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 16 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 16.0 NULL 6.522017819364598E-4 -16 15601.0 0.0 NULL NULL 1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.245 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 16 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 16.0 NULL 0.0 -16 -200.0 0.0 NULL NULL 1.6425 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.261 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 19 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 19.0 NULL 6.522017819364598E-4 -19 15601.0 0.0 NULL NULL 1.3831578947368421 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.269 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -4 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -4.0 NULL 0.0 4 -200.0 0.0 NULL NULL -6.57 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.28 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 42 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 42.0 NULL 6.522017819364598E-4 -42 15601.0 0.0 NULL NULL 0.6257142857142858 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.386 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 1 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 1.0 NULL 6.522017819364598E-4 -1 15601.0 0.0 NULL NULL 26.28 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.447 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 53 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 53.0 NULL 0.001413979988882123 -53 -7196.0 0.0 NULL NULL 0.4958490566037736 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.524 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -61 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -61.0 NULL 6.522017819364598E-4 61 15601.0 0.0 NULL NULL -0.4308196721311476 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.604 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -41 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -41.0 NULL 0.0 41 -200.0 0.0 NULL NULL -0.6409756097560976 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.678 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -56 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -56.0 NULL 6.522017819364598E-4 56 15601.0 0.0 NULL NULL -0.4692857142857143 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.729 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 30 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 30.0 NULL 6.522017819364598E-4 -30 15601.0 0.0 NULL NULL 0.876 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.765 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -3 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -3.0 NULL 0.001413979988882123 3 -7196.0 0.0 NULL NULL -8.76 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.847 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 50 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 50.0 NULL 0.0 -50 -200.0 0.0 NULL NULL 0.5256000000000001 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.887 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -10 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -10.0 NULL 0.001413979988882123 10 -7196.0 0.0 NULL NULL -2.628 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.916 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 4 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 4.0 NULL 0.001413979988882123 -4 -7196.0 0.0 NULL NULL 6.57 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.92 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -6 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -6.0 NULL 0.001413979988882123 6 -7196.0 0.0 NULL NULL -4.38 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.932 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -43 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -43.0 NULL 6.522017819364598E-4 43 15601.0 0.0 NULL NULL -0.6111627906976744 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:57.951 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 26 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 26.0 NULL 0.0 -26 -200.0 0.0 NULL NULL 1.0107692307692309 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.061 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -9 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -9.0 NULL 0.001413979988882123 9 -7196.0 0.0 NULL NULL -2.92 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.134 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -24 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -24.0 NULL 6.522017819364598E-4 24 15601.0 0.0 NULL NULL -1.095 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.158 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -53 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -53.0 NULL 0.0 53 -200.0 0.0 NULL NULL -0.4958490566037736 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.171 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -27.0 NULL 0.0 27 -200.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.214 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 22 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 22.0 NULL 0.001413979988882123 -22 -7196.0 0.0 NULL NULL 1.1945454545454546 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.272 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 7 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 7.0 NULL 0.0 -7 -200.0 0.0 NULL NULL 3.7542857142857144 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.279 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -58 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -58.0 NULL 6.522017819364598E-4 58 15601.0 0.0 NULL NULL -0.4531034482758621 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.298 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 32 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 32.0 NULL 0.0 -32 -200.0 0.0 NULL NULL 0.82125 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.343 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL -34 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL -34.0 NULL 6.522017819364598E-4 34 15601.0 0.0 NULL NULL -0.7729411764705882 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.382 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -56 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -56.0 NULL 0.001413979988882123 56 -7196.0 0.0 NULL NULL -0.4692857142857143 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.463 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -7 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -7.0 NULL 0.001413979988882123 7 -7196.0 0.0 NULL NULL -3.7542857142857144 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.561 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -17 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -17.0 NULL 0.0 17 -200.0 0.0 NULL NULL -1.5458823529411765 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.578 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -41 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -41.0 NULL 0.001413979988882123 41 -7196.0 0.0 NULL NULL -0.6409756097560976 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.752 NULL NULL NULL NULL 15601.0 NULL NULL 1 -1 NULL 36 NULL NULL 0.0 NULL NULL NULL 0.0 6.522017819370554E-4 NULL 0.0 NULL NULL 36.0 NULL 6.522017819364598E-4 -36 15601.0 0.0 NULL NULL 0.73 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.825 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL -9 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL -9.0 NULL 0.001413979988882123 9 -7196.0 0.0 NULL NULL -2.92 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.892 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -10 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -10.0 NULL 0.0 10 -200.0 0.0 NULL NULL -2.628 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.897 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -27 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -27.0 NULL 0.0 27 -200.0 0.0 NULL NULL -0.9733333333333334 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.923 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -22 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -22.0 NULL 0.0 22 -200.0 0.0 NULL NULL -1.1945454545454546 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.93 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 2 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 2.0 NULL 0.0 -2 -200.0 0.0 NULL NULL 13.14 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.957 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL 49 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL 49.0 NULL 0.0 -49 -200.0 0.0 NULL NULL 0.5363265306122449 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.962 NULL NULL NULL NULL -7196.0 NULL NULL 1 -1 NULL 32 NULL NULL 0.0 NULL NULL NULL 0.0 -0.0014139799888827128 NULL 0.0 NULL NULL 32.0 NULL 0.001413979988882123 -32 -7196.0 0.0 NULL NULL 0.82125 0.0 NULL NULL 1 1 NULL -1969-12-31 15:59:58.989 NULL NULL NULL NULL -200.0 NULL NULL 1 -1 NULL -10 NULL NULL 0.0 NULL NULL NULL 0.0 -0.050875000000000004 NULL 0.0 NULL NULL -10.0 NULL 0.0 10 -200.0 0.0 NULL NULL -2.628 0.0 NULL NULL 1 1 NULL -1969-12-31 16:00:02.351 NULL 3.430705936548119E8 3.4907432904377117E9 -3.430705936548119E8 NULL -3.430705936548119E8 -3.430706199348119E8 8 -8 1.17697441246560272E17 11 -9.4157952997248218E17 -3.4907432904377117E9 NULL NULL 3.430705936548119E8 -2.3318815858783212E-8 0.0 NULL 4.4783048325E8 0.0 NULL 3.4907432904377117E9 11.0 NULL NULL -11 NULL NULL -1.17697441246560272E17 -8.654811918735504 2.389090909090909 0.0 3582643866 NULL 8 8 NULL -1969-12-31 16:00:02.351 HtI02nss6t8S0fqH4vcLkCD 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 11 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL -7980033.0 0.0 NULL 0.0 11.0 NULL NULL -11 NULL NULL -0.0 -0.0 2.389090909090909 0.0 -7980033 NULL 1 1 NULL -1969-12-31 16:00:02.351 MgMjEMssUEN1 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 11 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL -7.27471145E8 0.0 NULL 0.0 11.0 NULL NULL -11 NULL NULL -0.0 -0.0 2.389090909090909 0.0 -727471145 NULL 1 1 NULL -1969-12-31 16:00:02.351 rss1vw14N 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 11 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL -2.6632375E8 0.0 NULL 0.0 11.0 NULL NULL -11 NULL NULL -0.0 -0.0 2.389090909090909 0.0 -266323750 NULL 1 1 NULL -1969-12-31 16:00:02.351 xM1Gglkeqdcp2kE2v6ss5Cb 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 11 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL 5.0130433E8 0.0 NULL 0.0 11.0 NULL NULL -11 NULL NULL -0.0 -0.0 2.389090909090909 0.0 501304330 NULL 1 1 NULL -1969-12-31 16:00:08.451 NULL 2.650627591471319E8 2.6970135743220673E9 -2.650627591471319E8 NULL -2.650627591471319E8 -2.650627854271319E8 9 -9 7.025827325253976E16 -51 -6.3232445927285786E17 -2.6970135743220673E9 NULL NULL 2.650627591471319E8 -3.395422287521066E-8 0.0 NULL 6.486577994444444E8 0.0 NULL 2.6970135743220673E9 -51.0 NULL NULL 51 NULL NULL -7.025827325253976E16 -0.14713189005851746 -0.5152941176470588 0.0 5837920195 NULL 9 9 NULL -1969-12-31 16:00:08.451 Yssb82rdfylDv4K NULL NULL NULL NULL NULL NULL 1 -1 NULL -51 NULL NULL NULL NULL NULL NULL 0.0 NULL NULL 0.0 NULL NULL -51.0 NULL NULL 51 NULL NULL NULL NULL -0.5152941176470588 0.0 NULL NULL 1 1 NULL -1969-12-31 16:00:08.451 ss 8.6150685E7 8.765832198750001E8 -8.6150685E7 NULL -8.6150685E7 -8.615071128E7 2 -2 7.421942790009227E15 -51 -1.4843885580018454E16 -8.765832198750001E8 NULL NULL 8.6150685E7 -2.3215137523282605E-8 0.0 NULL -5.48990416E8 0.0 NULL 8.765832198750001E8 -51.0 NULL NULL 51 NULL NULL -7.421942790009227E15 -6.0 -0.5152941176470588 0.0 -1097980832 NULL 2 2 NULL -1969-12-31 16:00:08.451 ss2PoJAipj6B1tn75O 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 -51 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL -5.85770596E8 0.0 NULL 0.0 -51.0 NULL NULL 51 NULL NULL -0.0 -0.0 -0.5152941176470588 0.0 -585770596 NULL 1 1 NULL -1969-12-31 16:00:15.892 NULL 3.552743011247774E8 3.61491601394461E9 -3.552743011247774E8 NULL -3.552743011247774E8 -3.5527432740477735E8 10 -10 1.26219838376307616E17 8 -1.2621983837630761E18 -3.61491601394461E9 NULL NULL 3.552743011247774E8 -2.8147265277394375E-8 0.0 NULL 6.585487822E8 0.0 NULL 3.61491601394461E9 8.0 NULL NULL -8 NULL NULL -1.26219838376307616E17 -5.124777376651764 3.285 0.0 6585487822 NULL 10 10 NULL -1969-12-31 16:00:15.892 M4HtnssfQiEAD0jYL6 0.0 0.0 -0.0 NULL -0.0 -26.28 1 -1 0.0 8 -0.0 -0.0 NULL NULL 0.0 NULL 0.0 NULL 6.87282226E8 0.0 NULL 0.0 8.0 NULL NULL -8 NULL NULL -0.0 -0.0 3.285 0.0 687282226 NULL 1 1 NULL WARNING: Comparing a bigint and a double may result in a loss of precision. PREHOOK: query: -- TargetTypeClasses: Double, Long, String, Timestamp, Bool -- Functions: Max, Sum, Var, Avg, Min, VarP, StDev, StDevP From 782ca849c7a6a142e5ab60f58a52118575b934b7 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Wed, 15 Oct 2014 01:59:09 +0000 Subject: [PATCH 110/339] HIVE-8391: Comparion between TIMESTAMP and Integer types goes to STRING as "common comparison denominator" instead of a numeric type (Jason Dere, reviewed by Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631931 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/FunctionRegistry.java | 6 +++ .../hive/ql/exec/TestFunctionRegistry.java | 5 ++ .../clientpositive/timestamp_comparison2.q | 23 ++++++++ .../timestamp_comparison2.q.out | 54 +++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 ql/src/test/queries/clientpositive/timestamp_comparison2.q create mode 100644 ql/src/test/results/clientpositive/timestamp_comparison2.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java index d047b25e3842..68cf429cdd3a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java @@ -954,6 +954,12 @@ public static TypeInfo getCommonClassForComparison(TypeInfo a, TypeInfo b) { (PrimitiveTypeInfo)a, (PrimitiveTypeInfo)b,PrimitiveCategory.STRING); } + // Another special case, because timestamp is not implicitly convertible to numeric types. + if ((pgA == PrimitiveGrouping.NUMERIC_GROUP || pgB == PrimitiveGrouping.NUMERIC_GROUP) + && (pcA == PrimitiveCategory.TIMESTAMP || pcB == PrimitiveCategory.TIMESTAMP)) { + return TypeInfoFactory.doubleTypeInfo; + } + for (PrimitiveCategory t : numericTypeList) { if (FunctionRegistry.implicitConvertible(pcA, t) && FunctionRegistry.implicitConvertible(pcB, t)) { diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFunctionRegistry.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFunctionRegistry.java index f2e8113f5ae7..655c3d015d49 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFunctionRegistry.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFunctionRegistry.java @@ -256,6 +256,11 @@ public void testCommonClassComparison() { comparison(TypeInfoFactory.stringTypeInfo, TypeInfoFactory.dateTypeInfo, TypeInfoFactory.stringTypeInfo); + comparison(TypeInfoFactory.intTypeInfo, TypeInfoFactory.timestampTypeInfo, + TypeInfoFactory.doubleTypeInfo); + comparison(TypeInfoFactory.timestampTypeInfo, TypeInfoFactory.intTypeInfo, + TypeInfoFactory.doubleTypeInfo); + comparison(TypeInfoFactory.stringTypeInfo, varchar10, TypeInfoFactory.stringTypeInfo); comparison(varchar10, TypeInfoFactory.stringTypeInfo, TypeInfoFactory.stringTypeInfo); comparison(varchar5, varchar10, varchar10); diff --git a/ql/src/test/queries/clientpositive/timestamp_comparison2.q b/ql/src/test/queries/clientpositive/timestamp_comparison2.q new file mode 100644 index 000000000000..d41cc83dbea3 --- /dev/null +++ b/ql/src/test/queries/clientpositive/timestamp_comparison2.q @@ -0,0 +1,23 @@ +-- Test timestamp-to-numeric comparison +select count(*) +FROM alltypesorc +WHERE +((ctinyint != 0) + AND + (((ctimestamp1 <= 0) + OR ((ctinyint = cint) OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > -29071) AND (3569 >= cdouble))))) +; + +-- Should have same result as previous query +select count(*) +FROM alltypesorc +WHERE +((ctinyint != 0) + AND + (((ctimestamp1 <= timestamp('1969-12-31 16:00:00')) + OR ((ctinyint = cint) OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > timestamp('1969-12-31 07:55:29')) AND (3569 >= cdouble))))) +; diff --git a/ql/src/test/results/clientpositive/timestamp_comparison2.q.out b/ql/src/test/results/clientpositive/timestamp_comparison2.q.out new file mode 100644 index 000000000000..76ac21dcc968 --- /dev/null +++ b/ql/src/test/results/clientpositive/timestamp_comparison2.q.out @@ -0,0 +1,54 @@ +PREHOOK: query: -- Test timestamp-to-numeric comparison +select count(*) +FROM alltypesorc +WHERE +((ctinyint != 0) + AND + (((ctimestamp1 <= 0) + OR ((ctinyint = cint) OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > -29071) AND (3569 >= cdouble))))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: -- Test timestamp-to-numeric comparison +select count(*) +FROM alltypesorc +WHERE +((ctinyint != 0) + AND + (((ctimestamp1 <= 0) + OR ((ctinyint = cint) OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > -29071) AND (3569 >= cdouble))))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +1826 +PREHOOK: query: -- Should have same result as previous query +select count(*) +FROM alltypesorc +WHERE +((ctinyint != 0) + AND + (((ctimestamp1 <= timestamp('1969-12-31 16:00:00')) + OR ((ctinyint = cint) OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > timestamp('1969-12-31 07:55:29')) AND (3569 >= cdouble))))) +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: -- Should have same result as previous query +select count(*) +FROM alltypesorc +WHERE +((ctinyint != 0) + AND + (((ctimestamp1 <= timestamp('1969-12-31 16:00:00')) + OR ((ctinyint = cint) OR (cstring2 LIKE 'ss'))) + AND ((988888 < cdouble) + OR ((ctimestamp2 > timestamp('1969-12-31 07:55:29')) AND (3569 >= cdouble))))) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +1826 From 2e6226f293da2632d5a80ce00f29ecc38065785d Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Wed, 15 Oct 2014 02:09:27 +0000 Subject: [PATCH 111/339] HIVE-8386: HCAT api call is case sensitive on fields in struct column (Jason Dere, reviewed by Sushanth Sowmyan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631934 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/hcatalog/data/schema/TestHCatSchemaUtils.java | 9 +++++---- .../hadoop/hive/serde2/typeinfo/StructTypeInfo.java | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/hcatalog/core/src/test/java/org/apache/hive/hcatalog/data/schema/TestHCatSchemaUtils.java b/hcatalog/core/src/test/java/org/apache/hive/hcatalog/data/schema/TestHCatSchemaUtils.java index 56c184406e7b..e80c3d2b537f 100644 --- a/hcatalog/core/src/test/java/org/apache/hive/hcatalog/data/schema/TestHCatSchemaUtils.java +++ b/hcatalog/core/src/test/java/org/apache/hive/hcatalog/data/schema/TestHCatSchemaUtils.java @@ -35,10 +35,10 @@ public class TestHCatSchemaUtils extends TestCase { public void testSimpleOperation() throws Exception { String typeString = "struct," + + "contact:struct," + "currently_registered_courses:array," + "current_grades:map," - + "phnos:array>,blah:array>"; + + "phNos:array>,blah:array>"; TypeInfo ti = TypeInfoUtils.getTypeInfoFromTypeString(typeString); @@ -46,8 +46,9 @@ public void testSimpleOperation() throws Exception { LOG.info("Type name : {}", ti.getTypeName()); LOG.info("HCatSchema : {}", hsch); assertEquals(hsch.size(), 1); - assertEquals(ti.getTypeName(), hsch.get(0).getTypeString()); - assertEquals(hsch.get(0).getTypeString(), typeString); + // Looks like HCatFieldSchema.getTypeString() lower-cases its results + assertEquals(ti.getTypeName().toLowerCase(), hsch.get(0).getTypeString()); + assertEquals(hsch.get(0).getTypeString(), typeString.toLowerCase()); } @SuppressWarnings("unused") diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/StructTypeInfo.java b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/StructTypeInfo.java index 465bf3107a9f..f89a412a1d74 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/StructTypeInfo.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/StructTypeInfo.java @@ -102,7 +102,7 @@ public ArrayList getAllStructFieldTypeInfos() { public TypeInfo getStructFieldTypeInfo(String field) { String fieldLowerCase = field.toLowerCase(); for (int i = 0; i < allStructFieldNames.size(); i++) { - if (fieldLowerCase.equals(allStructFieldNames.get(i))) { + if (fieldLowerCase.equalsIgnoreCase(allStructFieldNames.get(i))) { return allStructFieldTypeInfos.get(i); } } From effd1ac9aff326a8f32a35eaa59d691ac0599104 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Wed, 15 Oct 2014 02:20:42 +0000 Subject: [PATCH 112/339] HIVE-8102: Partitions of type 'date' behave incorrectly with daylight saving time. (Jason Dere, reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1631936 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/serde2/io/DateWritable.java | 5 +- .../hive/serde2/io/TestDateWritable.java | 63 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/io/DateWritable.java b/serde/src/java/org/apache/hadoop/hive/serde2/io/DateWritable.java index 528998310410..2b0b550ea17c 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/io/DateWritable.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/io/DateWritable.java @@ -128,7 +128,10 @@ public static Date timeToDate(long l) { public static long daysToMillis(int d) { // Convert from day offset to ms in UTC, then apply local timezone offset. long millisUtc = d * MILLIS_PER_DAY; - return millisUtc - LOCAL_TIMEZONE.get().getOffset(millisUtc); + long tmp = millisUtc - LOCAL_TIMEZONE.get().getOffset(millisUtc); + // Between millisUtc and tmp, the time zone offset may have changed due to DST. + // Look up the offset again. + return millisUtc - LOCAL_TIMEZONE.get().getOffset(tmp); } public static int dateToDays(Date d) { diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java index 75de0a632723..8b5bfbd2c604 100644 --- a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java +++ b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java @@ -10,6 +10,12 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.TimeZone; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; public class TestDateWritable { @@ -135,4 +141,61 @@ public static void setupDateStrings() { private static String getRandomDateString() { return dateStrings[(int) (Math.random() * 365)]; } + + public static class DateTestCallable implements Callable { + public DateTestCallable() { + } + + @Override + public String call() throws Exception { + // Iterate through each day of the year, make sure Date/DateWritable match + Date originalDate = Date.valueOf("2014-01-01"); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(originalDate.getTime()); + for (int idx = 0; idx < 365; ++idx) { + originalDate = new Date(cal.getTimeInMillis()); + // Make sure originalDate is at midnight in the local time zone, + // since DateWritable will generate dates at that time. + originalDate = Date.valueOf(originalDate.toString()); + DateWritable dateWritable = new DateWritable(originalDate); + if (!originalDate.equals(dateWritable.get())) { + return originalDate.toString(); + } + cal.add(Calendar.DAY_OF_YEAR, 1); + } + // Success! + return null; + } + } + + @Test + public void testDaylightSavingsTime() throws InterruptedException, ExecutionException { + String[] timeZones = { + "GMT", + "UTC", + "America/Godthab", + "America/Los_Angeles", + "Asia/Jerusalem", + "Australia/Melbourne", + "Europe/London", + // time zones with half hour boundaries + "America/St_Johns", + "Asia/Tehran", + }; + + for (String timeZone: timeZones) { + TimeZone previousDefault = TimeZone.getDefault(); + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + assertEquals("Default timezone should now be " + timeZone, + timeZone, TimeZone.getDefault().getID()); + ExecutorService threadPool = Executors.newFixedThreadPool(1); + try { + Future future = threadPool.submit(new DateTestCallable()); + String result = future.get(); + assertNull("Failed at timezone " + timeZone + ", date " + result, result); + } finally { + threadPool.shutdown(); TimeZone.setDefault(previousDefault); + } + } + } } From d05b1981e8ac694a6c5b792e857905b53e1cc423 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 15 Oct 2014 22:24:08 +0000 Subject: [PATCH 113/339] HIVE-7733 : Ambiguous column reference error on query (Navis via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632193 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/parse/QB.java | 10 + .../hadoop/hive/ql/parse/QBParseInfo.java | 55 ++-- .../hadoop/hive/ql/parse/RowResolver.java | 12 - .../hive/ql/parse/SemanticAnalyzer.java | 99 ++++--- .../queries/clientnegative/ambiguous_col0.q | 2 - .../queries/clientnegative/ambiguous_col1.q | 3 - .../queries/clientnegative/ambiguous_col2.q | 3 - .../queries/clientpositive/complex_alias.q | 46 +++ .../clientnegative/ambiguous_col.q.out | 2 +- .../clientnegative/ambiguous_col0.q.out | 1 - .../clientnegative/ambiguous_col1.q.out | 1 - .../clientnegative/ambiguous_col2.q.out | 1 - .../clientpositive/ambiguous_col.q.out | 12 +- .../clientpositive/complex_alias.q.out | 269 ++++++++++++++++++ 14 files changed, 413 insertions(+), 103 deletions(-) delete mode 100644 ql/src/test/queries/clientnegative/ambiguous_col0.q delete mode 100644 ql/src/test/queries/clientnegative/ambiguous_col1.q delete mode 100644 ql/src/test/queries/clientnegative/ambiguous_col2.q create mode 100644 ql/src/test/queries/clientpositive/complex_alias.q delete mode 100644 ql/src/test/results/clientnegative/ambiguous_col0.q.out delete mode 100644 ql/src/test/results/clientnegative/ambiguous_col1.q.out delete mode 100644 ql/src/test/results/clientnegative/ambiguous_col2.q.out create mode 100644 ql/src/test/results/clientpositive/complex_alias.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/QB.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/QB.java index b3c4b4747673..b15a46d26f85 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/QB.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/QB.java @@ -130,6 +130,10 @@ public static String getAppendedAliasFromId(String outer_id, String alias) { return (outer_id == null ? alias : outer_id + ":" + alias); } + public String getAlias() { + return qbp.getAlias(); + } + public QBParseInfo getParseInfo() { return qbp; } @@ -248,6 +252,12 @@ public boolean getIsQuery() { return isQuery; } + // to decide whether to rewrite RR of subquery + public boolean isTopLevelSelectStarQuery() { + return !isCTAS() && qbp.isTopLevelSimpleSelectStarQuery(); + } + + // to find target for fetch task conversion optimizer (not allows subqueries) public boolean isSimpleSelectQuery() { return qbp.isSimpleSelectQuery() && aliasToSubq.isEmpty() && !isCTAS() && !qbp.isAnalyzeCommand(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/QBParseInfo.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/QBParseInfo.java index 86e460246fcd..02c4be96a591 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/QBParseInfo.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/QBParseInfo.java @@ -27,6 +27,7 @@ import java.util.Map; import java.util.Set; +import org.antlr.runtime.tree.Tree; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.tableSpec; @@ -449,39 +450,49 @@ public void setOuterQueryLimit(int outerQueryLimit) { this.outerQueryLimit = outerQueryLimit; } + public boolean isTopLevelSimpleSelectStarQuery() { + if (alias != null || destToSelExpr.size() != 1 || !isSimpleSelectQuery()) { + return false; + } + for (ASTNode selExprs : destToSelExpr.values()) { + if (selExprs.getChildCount() != 1) { + return false; + } + Tree sel = selExprs.getChild(0).getChild(0); + if (sel == null || sel.getType() != HiveParser.TOK_ALLCOLREF) { + return false; + } + } + return true; + } + public boolean isSimpleSelectQuery() { - if (isSubQ || (joinExpr != null) - || (!destToGroupby.isEmpty()) || (!destToClusterby.isEmpty()) - || (!aliasToLateralViews.isEmpty())) { + if (isSubQ || joinExpr != null || !destToOrderby.isEmpty() || !destToSortby.isEmpty() + || !destToGroupby.isEmpty() || !destToClusterby.isEmpty() || !destToDistributeby.isEmpty() + || !aliasToLateralViews.isEmpty() || !destToLateralView.isEmpty()) { return false; } - Iterator>> aggrIter = destToAggregationExprs - .entrySet().iterator(); - while (aggrIter.hasNext()) { - HashMap h = aggrIter.next().getValue(); - if ((h != null) && (!h.isEmpty())) { + for (Map entry : destToAggregationExprs.values()) { + if (entry != null && !entry.isEmpty()) { return false; } } - if (!destToDistinctFuncExprs.isEmpty()) { - Iterator>> distn = destToDistinctFuncExprs - .entrySet().iterator(); - while (distn.hasNext()) { - List ct = distn.next().getValue(); - if (!ct.isEmpty()) { - return false; - } + for (Map entry : destToWindowingExprs.values()) { + if (entry != null && !entry.isEmpty()) { + return false; + } + } + + for (List ct : destToDistinctFuncExprs.values()) { + if (!ct.isEmpty()) { + return false; } } - Iterator> iter = nameToDest.entrySet() - .iterator(); - while (iter.hasNext()) { - Map.Entry entry = iter.next(); - ASTNode v = entry.getValue(); - if (!(((ASTNode)v.getChild(0)).getToken().getType() == HiveParser.TOK_TMP_FILE)) { + for (ASTNode v : nameToDest.values()) { + if (!(v.getChild(0).getType() == HiveParser.TOK_TMP_FILE)) { return false; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java index 9c5537950875..10ac4b2e8906 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java @@ -29,7 +29,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.hadoop.hive.ql.ErrorMsg; import org.apache.hadoop.hive.ql.exec.ColumnInfo; import org.apache.hadoop.hive.ql.exec.RowSchema; @@ -195,17 +194,6 @@ public ColumnInfo get(String tab_alias, String col_alias) throws SemanticExcepti return ret; } - /** - * check if column name is already exist in RR - */ - public void checkColumn(String tableAlias, String columnAlias) throws SemanticException { - ColumnInfo prev = get(null, columnAlias); - if (prev != null && - (tableAlias == null || !tableAlias.equalsIgnoreCase(prev.getTabAlias()))) { - throw new SemanticException(ErrorMsg.AMBIGUOUS_COLUMN.getMsg(columnAlias)); - } - } - public ArrayList getColumnInfos() { return rowSchema.getSignature(); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index e1eca137df19..ed293dc7ee52 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -37,7 +37,6 @@ import java.util.TreeSet; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; @@ -69,7 +68,6 @@ import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.MetaException; import org.apache.hadoop.hive.metastore.api.Order; -import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants; import org.apache.hadoop.hive.ql.ErrorMsg; import org.apache.hadoop.hive.ql.QueryProperties; import org.apache.hadoop.hive.ql.exec.AbstractMapJoinOperator; @@ -2708,7 +2706,7 @@ private Operator genNotNullFilterForJoinSourcePlan(QB qb, Operator input, @SuppressWarnings("nls") private Integer genColListRegex(String colRegex, String tabAlias, ASTNode sel, ArrayList col_list, - RowResolver input, Integer pos, RowResolver output, List aliases, boolean subQuery) + RowResolver input, Integer pos, RowResolver output, List aliases) throws SemanticException { // The table alias should exist @@ -2766,9 +2764,6 @@ private Integer genColListRegex(String colRegex, String tabAlias, continue; } - if (subQuery) { - output.checkColumn(tmp[0], tmp[1]); - } ColumnInfo oColInfo = inputColsProcessed.get(colInfo); if (oColInfo == null) { ExprNodeColumnDesc expr = new ExprNodeColumnDesc(colInfo.getType(), @@ -3394,7 +3389,6 @@ private Operator genSelectPlan(ASTNode selExprList, QB qb, posn++; } - boolean subQuery = qb.getParseInfo().getIsSubQ(); boolean isInTransform = (selExprList.getChild(posn).getChild(0).getType() == HiveParser.TOK_TRANSFORM); if (isInTransform) { @@ -3432,7 +3426,7 @@ private Operator genSelectPlan(ASTNode selExprList, QB qb, } if (isUDTF && (selectStar = udtfExprType == HiveParser.TOK_FUNCTIONSTAR)) { genColListRegex(".*", null, (ASTNode) udtfExpr.getChild(0), - col_list, inputRR, pos, out_rwsch, qb.getAliases(), subQuery); + col_list, inputRR, pos, out_rwsch, qb.getAliases()); } } @@ -3554,7 +3548,7 @@ private Operator genSelectPlan(ASTNode selExprList, QB qb, if (expr.getType() == HiveParser.TOK_ALLCOLREF) { pos = genColListRegex(".*", expr.getChildCount() == 0 ? null : getUnescapedName((ASTNode) expr.getChild(0)).toLowerCase(), - expr, col_list, inputRR, pos, out_rwsch, qb.getAliases(), subQuery); + expr, col_list, inputRR, pos, out_rwsch, qb.getAliases()); selectStar = true; } else if (expr.getType() == HiveParser.TOK_TABLE_OR_COL && !hasAsClause && !inputRR.getIsExprResolver() @@ -3563,7 +3557,7 @@ && isRegex(unescapeIdentifier(expr.getChild(0).getText()), conf)) { // This can only happen without AS clause // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(0).getText()), - null, expr, col_list, inputRR, pos, out_rwsch, qb.getAliases(), subQuery); + null, expr, col_list, inputRR, pos, out_rwsch, qb.getAliases()); } else if (expr.getType() == HiveParser.DOT && expr.getChild(0).getType() == HiveParser.TOK_TABLE_OR_COL && inputRR.hasTableAlias(unescapeIdentifier(expr.getChild(0) @@ -3576,7 +3570,7 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { pos = genColListRegex(unescapeIdentifier(expr.getChild(1).getText()), unescapeIdentifier(expr.getChild(0).getChild(0).getText() .toLowerCase()), expr, col_list, inputRR, pos, out_rwsch, - qb.getAliases(), subQuery); + qb.getAliases()); } else { // Case when this is an expression TypeCheckCtx tcCtx = new TypeCheckCtx(inputRR); @@ -3590,9 +3584,6 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { colAlias = recommended; } col_list.add(exp); - if (subQuery) { - out_rwsch.checkColumn(tabAlias, colAlias); - } ColumnInfo colInfo = new ColumnInfo(getColumnInternalName(pos), exp.getWritableObjectInspector(), tabAlias, false); @@ -8907,24 +8898,6 @@ private Operator genPostGroupByBodyPlan(Operator curr, String dest, QB qb, } } - // change curr ops row resolver's tab aliases to query alias if it - // exists - if (qb.getParseInfo().getAlias() != null) { - RowResolver rr = opParseCtx.get(curr).getRowResolver(); - RowResolver newRR = new RowResolver(); - String alias = qb.getParseInfo().getAlias(); - for (ColumnInfo colInfo : rr.getColumnInfos()) { - String name = colInfo.getInternalName(); - String[] tmp = rr.reverseLookup(name); - if ("".equals(tmp[0]) || tmp[1] == null) { - // ast expression is not a valid column name for table - tmp[1] = colInfo.getInternalName(); - } - newRR.put(alias, tmp[1], colInfo); - } - opParseCtx.get(curr).setRowResolver(newRR); - } - return curr; } @@ -9509,13 +9482,14 @@ private void setupStats(TableScanDesc tsDesc, QBParseInfo qbp, Table tab, String } } - private Operator genPlan(QBExpr qbexpr) throws SemanticException { + private Operator genPlan(QB parent, QBExpr qbexpr) throws SemanticException { if (qbexpr.getOpcode() == QBExpr.Opcode.NULLOP) { - return genPlan(qbexpr.getQB()); + boolean skipAmbiguityCheck = viewSelect == null && parent.isTopLevelSelectStarQuery(); + return genPlan(qbexpr.getQB(), skipAmbiguityCheck); } if (qbexpr.getOpcode() == QBExpr.Opcode.UNION) { - Operator qbexpr1Ops = genPlan(qbexpr.getQBExpr1()); - Operator qbexpr2Ops = genPlan(qbexpr.getQBExpr2()); + Operator qbexpr1Ops = genPlan(parent, qbexpr.getQBExpr1()); + Operator qbexpr2Ops = genPlan(parent, qbexpr.getQBExpr2()); return genUnionPlan(qbexpr.getAlias(), qbexpr.getQBExpr1().getAlias(), qbexpr1Ops, qbexpr.getQBExpr2().getAlias(), qbexpr2Ops); @@ -9523,8 +9497,13 @@ private Operator genPlan(QBExpr qbexpr) throws SemanticException { return null; } - @SuppressWarnings("nls") public Operator genPlan(QB qb) throws SemanticException { + return genPlan(qb, false); + } + + @SuppressWarnings("nls") + public Operator genPlan(QB qb, boolean skipAmbiguityCheck) + throws SemanticException { // First generate all the opInfos for the elements in the from clause Map aliasToOpInfo = new HashMap(); @@ -9532,8 +9511,7 @@ public Operator genPlan(QB qb) throws SemanticException { // Recurse over the subqueries to fill the subquery part of the plan for (String alias : qb.getSubqAliases()) { QBExpr qbexpr = qb.getSubqForAlias(alias); - aliasToOpInfo.put(alias, genPlan(qbexpr)); - qbexpr.setAlias(alias); + aliasToOpInfo.put(alias, genPlan(qb, qbexpr)); } // Recurse over all the source tables @@ -9632,10 +9610,38 @@ public Operator genPlan(QB qb) throws SemanticException { LOG.debug("Created Plan for Query Block " + qb.getId()); } + if (qb.getAlias() != null) { + rewriteRRForSubQ(qb.getAlias(), bodyOpInfo, skipAmbiguityCheck); + } + this.qb = qb; return bodyOpInfo; } + // change curr ops row resolver's tab aliases to subq alias + private void rewriteRRForSubQ(String alias, Operator operator, boolean skipAmbiguityCheck) + throws SemanticException { + RowResolver rr = opParseCtx.get(operator).getRowResolver(); + RowResolver newRR = new RowResolver(); + for (ColumnInfo colInfo : rr.getColumnInfos()) { + String name = colInfo.getInternalName(); + String[] tmp = rr.reverseLookup(name); + if ("".equals(tmp[0]) || tmp[1] == null) { + // ast expression is not a valid column name for table + tmp[1] = colInfo.getInternalName(); + } else if (newRR.get(alias, tmp[1]) != null) { + // enforce uniqueness of column names + if (!skipAmbiguityCheck) { + throw new SemanticException(ErrorMsg.AMBIGUOUS_COLUMN.getMsg(tmp[1] + " in " + alias)); + } + // if it's wrapped by top-level select star query, skip ambiguity check (for backward compatibility) + tmp[1] = colInfo.getInternalName(); + } + newRR.put(alias, tmp[1], colInfo); + } + opParseCtx.get(operator).setRowResolver(newRR); + } + private Table getDummyTable() throws SemanticException { Path dummyPath = createDummyFile(); Table desc = new Table(DUMMY_DATABASE, DUMMY_TABLE); @@ -13683,7 +13689,6 @@ private RelNode genSelectForWindowing(QB qb, RelNode srcRel) throws SemanticExce ColumnInfo oColInfo = new ColumnInfo( getColumnInternalName(projsForWindowSelOp.size()), wtp.getValue(), null, false); if (false) { - out_rwsch.checkColumn(null, wExprSpec.getAlias()); out_rwsch.put(null, wExprSpec.getAlias(), oColInfo); } else { out_rwsch.putExpression(wExprSpec.getExpression(), oColInfo); @@ -13820,9 +13825,6 @@ private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel) throws SemanticExcep throw new OptiqSemanticException(msg); } - // 4. Determine if select corresponds to a subquery - subQuery = qb.getParseInfo().getIsSubQ(); - // 4. Bailout if select involves Transform boolean isInTransform = (selExprList.getChild(posn).getChild(0).getType() == HiveParser.TOK_TRANSFORM); if (isInTransform) { @@ -13880,8 +13882,7 @@ private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel) throws SemanticExcep if (expr.getType() == HiveParser.TOK_ALLCOLREF) { pos = genColListRegex(".*", expr.getChildCount() == 0 ? null : getUnescapedName((ASTNode) expr.getChild(0)) - .toLowerCase(), expr, col_list, inputRR, pos, out_rwsch, tabAliasesForAllProjs, - subQuery); + .toLowerCase(), expr, col_list, inputRR, pos, out_rwsch, tabAliasesForAllProjs); selectStar = true; } else if (expr.getType() == HiveParser.TOK_TABLE_OR_COL && !hasAsClause && !inputRR.getIsExprResolver() @@ -13890,7 +13891,7 @@ && isRegex(unescapeIdentifier(expr.getChild(0).getText()), conf)) { // This can only happen without AS clause // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(0).getText()), null, expr, - col_list, inputRR, pos, out_rwsch, tabAliasesForAllProjs, subQuery); + col_list, inputRR, pos, out_rwsch, tabAliasesForAllProjs); } else if (expr.getType() == HiveParser.DOT && expr.getChild(0).getType() == HiveParser.TOK_TABLE_OR_COL && inputRR.hasTableAlias(unescapeIdentifier(expr.getChild(0).getChild(0).getText() @@ -13901,7 +13902,7 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(1).getText()), unescapeIdentifier(expr.getChild(0).getChild(0).getText().toLowerCase()), expr, - col_list, inputRR, pos, out_rwsch, tabAliasesForAllProjs, subQuery); + col_list, inputRR, pos, out_rwsch, tabAliasesForAllProjs); } else if (expr.toStringTree().contains("TOK_FUNCTIONDI") && !(srcRel instanceof HiveAggregateRel)) { // Likely a malformed query eg, select hash(distinct c1) from t1; throw new OptiqSemanticException("Distinct without an aggreggation."); @@ -13916,9 +13917,6 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { colAlias = recommended; } col_list.add(exp); - if (subQuery) { - out_rwsch.checkColumn(tabAlias, colAlias); - } ColumnInfo colInfo = new ColumnInfo(getColumnInternalName(pos), exp.getWritableObjectInspector(), tabAlias, false); @@ -13994,7 +13992,6 @@ private RelNode genLogicalPlan(QB qb, boolean outerMostQB) throws SemanticExcept for (String subqAlias : qb.getSubqAliases()) { QBExpr qbexpr = qb.getSubqForAlias(subqAlias); aliasToRel.put(subqAlias, genLogicalPlan(qbexpr)); - qbexpr.setAlias(subqAlias); } // 1.2 Recurse over all the source tables diff --git a/ql/src/test/queries/clientnegative/ambiguous_col0.q b/ql/src/test/queries/clientnegative/ambiguous_col0.q deleted file mode 100644 index 46349c60bc79..000000000000 --- a/ql/src/test/queries/clientnegative/ambiguous_col0.q +++ /dev/null @@ -1,2 +0,0 @@ --- TOK_ALLCOLREF -explain select * from (select * from (select * from src) a join (select * from src1) b on (a.key = b.key)) t; diff --git a/ql/src/test/queries/clientnegative/ambiguous_col1.q b/ql/src/test/queries/clientnegative/ambiguous_col1.q deleted file mode 100644 index 9e8bcbd1bbf7..000000000000 --- a/ql/src/test/queries/clientnegative/ambiguous_col1.q +++ /dev/null @@ -1,3 +0,0 @@ -set hive.support.quoted.identifiers=none; --- TOK_TABLE_OR_COL -explain select * from (select `.*` from (select * from src) a join (select * from src1) b on (a.key = b.key)) t; diff --git a/ql/src/test/queries/clientnegative/ambiguous_col2.q b/ql/src/test/queries/clientnegative/ambiguous_col2.q deleted file mode 100644 index 33d4aed3cd9a..000000000000 --- a/ql/src/test/queries/clientnegative/ambiguous_col2.q +++ /dev/null @@ -1,3 +0,0 @@ -set hive.support.quoted.identifiers=none; --- DOT -explain select * from (select a.`[kv].*`, b.`[kv].*` from (select * from src) a join (select * from src1) b on (a.key = b.key)) t; diff --git a/ql/src/test/queries/clientpositive/complex_alias.q b/ql/src/test/queries/clientpositive/complex_alias.q new file mode 100644 index 000000000000..e2810c335f6f --- /dev/null +++ b/ql/src/test/queries/clientpositive/complex_alias.q @@ -0,0 +1,46 @@ +CREATE TABLE agg1 (col0 INT, col1 STRING, col2 DOUBLE); + +INSERT INTO TABLE agg1 select key,value,key from src tablesample (1 rows); + +EXPLAIN +SELECT single_use_subq11.a1 AS a1, + single_use_subq11.a2 AS a2 +FROM (SELECT Sum(agg1.col2) AS a1 + FROM agg1 + GROUP BY agg1.col0) single_use_subq12 + JOIN (SELECT alias.a2 AS a0, + alias.a1 AS a1, + alias.a1 AS a2 + FROM (SELECT agg1.col1 AS a0, + '42' AS a1, + agg1.col0 AS a2 + FROM agg1 + UNION ALL + SELECT agg1.col1 AS a0, + '41' AS a1, + agg1.col0 AS a2 + FROM agg1) alias + GROUP BY alias.a2, + alias.a1) single_use_subq11 + ON ( single_use_subq11.a0 = single_use_subq11.a0 ); + +SELECT single_use_subq11.a1 AS a1, + single_use_subq11.a2 AS a2 +FROM (SELECT Sum(agg1.col2) AS a1 + FROM agg1 + GROUP BY agg1.col0) single_use_subq12 + JOIN (SELECT alias.a2 AS a0, + alias.a1 AS a1, + alias.a1 AS a2 + FROM (SELECT agg1.col1 AS a0, + '42' AS a1, + agg1.col0 AS a2 + FROM agg1 + UNION ALL + SELECT agg1.col1 AS a0, + '41' AS a1, + agg1.col0 AS a2 + FROM agg1) alias + GROUP BY alias.a2, + alias.a1) single_use_subq11 + ON ( single_use_subq11.a0 = single_use_subq11.a0 ); diff --git a/ql/src/test/results/clientnegative/ambiguous_col.q.out b/ql/src/test/results/clientnegative/ambiguous_col.q.out index 237c21febadf..a2915a4a5d3d 100644 --- a/ql/src/test/results/clientnegative/ambiguous_col.q.out +++ b/ql/src/test/results/clientnegative/ambiguous_col.q.out @@ -1 +1 @@ -FAILED: SemanticException [Error 10007]: Ambiguous column reference key +FAILED: SemanticException [Error 10007]: Ambiguous column reference key in a diff --git a/ql/src/test/results/clientnegative/ambiguous_col0.q.out b/ql/src/test/results/clientnegative/ambiguous_col0.q.out deleted file mode 100644 index 237c21febadf..000000000000 --- a/ql/src/test/results/clientnegative/ambiguous_col0.q.out +++ /dev/null @@ -1 +0,0 @@ -FAILED: SemanticException [Error 10007]: Ambiguous column reference key diff --git a/ql/src/test/results/clientnegative/ambiguous_col1.q.out b/ql/src/test/results/clientnegative/ambiguous_col1.q.out deleted file mode 100644 index 237c21febadf..000000000000 --- a/ql/src/test/results/clientnegative/ambiguous_col1.q.out +++ /dev/null @@ -1 +0,0 @@ -FAILED: SemanticException [Error 10007]: Ambiguous column reference key diff --git a/ql/src/test/results/clientnegative/ambiguous_col2.q.out b/ql/src/test/results/clientnegative/ambiguous_col2.q.out deleted file mode 100644 index 237c21febadf..000000000000 --- a/ql/src/test/results/clientnegative/ambiguous_col2.q.out +++ /dev/null @@ -1 +0,0 @@ -FAILED: SemanticException [Error 10007]: Ambiguous column reference key diff --git a/ql/src/test/results/clientpositive/ambiguous_col.q.out b/ql/src/test/results/clientpositive/ambiguous_col.q.out index e8760f144829..d583162bde01 100644 --- a/ql/src/test/results/clientpositive/ambiguous_col.q.out +++ b/ql/src/test/results/clientpositive/ambiguous_col.q.out @@ -53,8 +53,8 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 + expressions: _col0 (type: string), _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false @@ -124,8 +124,8 @@ STAGE PLANS: outputColumnNames: _col0 Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string) - outputColumnNames: _col0 + expressions: _col0 (type: string), _col0 (type: string) + outputColumnNames: _col0, _col1 Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false @@ -195,8 +195,8 @@ STAGE PLANS: outputColumnNames: _col0 Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string) - outputColumnNames: _col0 + expressions: _col0 (type: string), _col0 (type: string) + outputColumnNames: _col0, _col1 Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false diff --git a/ql/src/test/results/clientpositive/complex_alias.q.out b/ql/src/test/results/clientpositive/complex_alias.q.out new file mode 100644 index 000000000000..d8264bd08541 --- /dev/null +++ b/ql/src/test/results/clientpositive/complex_alias.q.out @@ -0,0 +1,269 @@ +PREHOOK: query: CREATE TABLE agg1 (col0 INT, col1 STRING, col2 DOUBLE) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@agg1 +POSTHOOK: query: CREATE TABLE agg1 (col0 INT, col1 STRING, col2 DOUBLE) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@agg1 +PREHOOK: query: INSERT INTO TABLE agg1 select key,value,key from src tablesample (1 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@agg1 +POSTHOOK: query: INSERT INTO TABLE agg1 select key,value,key from src tablesample (1 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@agg1 +POSTHOOK: Lineage: agg1.col0 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: agg1.col1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: agg1.col2 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +Warning: Shuffle Join JOIN[19][tables = [single_use_subq12, single_use_subq11]] in Stage 'Stage-2:MAPRED' is a cross product +PREHOOK: query: EXPLAIN +SELECT single_use_subq11.a1 AS a1, + single_use_subq11.a2 AS a2 +FROM (SELECT Sum(agg1.col2) AS a1 + FROM agg1 + GROUP BY agg1.col0) single_use_subq12 + JOIN (SELECT alias.a2 AS a0, + alias.a1 AS a1, + alias.a1 AS a2 + FROM (SELECT agg1.col1 AS a0, + '42' AS a1, + agg1.col0 AS a2 + FROM agg1 + UNION ALL + SELECT agg1.col1 AS a0, + '41' AS a1, + agg1.col0 AS a2 + FROM agg1) alias + GROUP BY alias.a2, + alias.a1) single_use_subq11 + ON ( single_use_subq11.a0 = single_use_subq11.a0 ) +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT single_use_subq11.a1 AS a1, + single_use_subq11.a2 AS a2 +FROM (SELECT Sum(agg1.col2) AS a1 + FROM agg1 + GROUP BY agg1.col0) single_use_subq12 + JOIN (SELECT alias.a2 AS a0, + alias.a1 AS a1, + alias.a1 AS a2 + FROM (SELECT agg1.col1 AS a0, + '42' AS a1, + agg1.col0 AS a2 + FROM agg1 + UNION ALL + SELECT agg1.col1 AS a0, + '41' AS a1, + agg1.col0 AS a2 + FROM agg1) alias + GROUP BY alias.a2, + alias.a1) single_use_subq11 + ON ( single_use_subq11.a0 = single_use_subq11.a0 ) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1, Stage-4 + Stage-4 is a root stage + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: agg1 + Statistics: Num rows: 1 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (col0 = col0) (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: '42' (type: string), col0 (type: int) + outputColumnNames: _col1, _col2 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Union + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: _col2 (type: int), _col1 (type: string) + outputColumnNames: _col2, _col1 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Group By Operator + keys: _col2 (type: int), _col1 (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: int), _col1 (type: string) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + TableScan + alias: agg1 + Statistics: Num rows: 1 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (col0 = col0) (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: '41' (type: string), col0 (type: int) + outputColumnNames: _col1, _col2 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Union + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: _col2 (type: int), _col1 (type: string) + outputColumnNames: _col2, _col1 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Group By Operator + keys: _col2 (type: int), _col1 (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: int), _col1 (type: string) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int), KEY._col1 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: _col1 (type: string), _col1 (type: string) + outputColumnNames: _col1, _col2 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + sort order: + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: _col1 (type: string), _col2 (type: string) + TableScan + Reduce Output Operator + sort order: + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 {VALUE._col1} {VALUE._col2} + outputColumnNames: _col2, _col3 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: _col2 (type: string), _col3 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-4 + Map Reduce + Map Operator Tree: + TableScan + alias: agg1 + Statistics: Num rows: 1 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: col0 (type: int), col2 (type: double) + outputColumnNames: col0, col2 + Statistics: Num rows: 1 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(col2) + keys: col0 (type: int) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 1 Data size: 17 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: double) + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +Warning: Shuffle Join JOIN[19][tables = [single_use_subq12, single_use_subq11]] in Stage 'Stage-2:MAPRED' is a cross product +PREHOOK: query: SELECT single_use_subq11.a1 AS a1, + single_use_subq11.a2 AS a2 +FROM (SELECT Sum(agg1.col2) AS a1 + FROM agg1 + GROUP BY agg1.col0) single_use_subq12 + JOIN (SELECT alias.a2 AS a0, + alias.a1 AS a1, + alias.a1 AS a2 + FROM (SELECT agg1.col1 AS a0, + '42' AS a1, + agg1.col0 AS a2 + FROM agg1 + UNION ALL + SELECT agg1.col1 AS a0, + '41' AS a1, + agg1.col0 AS a2 + FROM agg1) alias + GROUP BY alias.a2, + alias.a1) single_use_subq11 + ON ( single_use_subq11.a0 = single_use_subq11.a0 ) +PREHOOK: type: QUERY +PREHOOK: Input: default@agg1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT single_use_subq11.a1 AS a1, + single_use_subq11.a2 AS a2 +FROM (SELECT Sum(agg1.col2) AS a1 + FROM agg1 + GROUP BY agg1.col0) single_use_subq12 + JOIN (SELECT alias.a2 AS a0, + alias.a1 AS a1, + alias.a1 AS a2 + FROM (SELECT agg1.col1 AS a0, + '42' AS a1, + agg1.col0 AS a2 + FROM agg1 + UNION ALL + SELECT agg1.col1 AS a0, + '41' AS a1, + agg1.col0 AS a2 + FROM agg1) alias + GROUP BY alias.a2, + alias.a1) single_use_subq11 + ON ( single_use_subq11.a0 = single_use_subq11.a0 ) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@agg1 +#### A masked pattern was here #### +42 42 +41 41 From 91b10ff99c4c4fbe6e4500f851b76c06837f8400 Mon Sep 17 00:00:00 2001 From: Sushanth Sowmyan Date: Thu, 16 Oct 2014 17:18:13 +0000 Subject: [PATCH 114/339] HIVE-7366 : getDatabase using direct sql (Sushanth Sowmyan, reviewed by Sergei Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632391 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/metastore/MetaStoreDirectSql.java | 103 ++++++++++++++++-- .../hadoop/hive/metastore/ObjectStore.java | 60 +++++++++- 2 files changed, 151 insertions(+), 12 deletions(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java index 5a8591a61acf..dea0f914bc98 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java @@ -45,10 +45,13 @@ import org.apache.hadoop.hive.metastore.api.ColumnStatisticsData; import org.apache.hadoop.hive.metastore.api.ColumnStatisticsDesc; import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj; +import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.MetaException; +import org.apache.hadoop.hive.metastore.api.NoSuchObjectException; import org.apache.hadoop.hive.metastore.api.Order; import org.apache.hadoop.hive.metastore.api.Partition; +import org.apache.hadoop.hive.metastore.api.PrincipalType; import org.apache.hadoop.hive.metastore.api.SerDeInfo; import org.apache.hadoop.hive.metastore.api.SkewedInfo; import org.apache.hadoop.hive.metastore.api.StorageDescriptor; @@ -143,13 +146,18 @@ public boolean isCompatibleDatastore() { } /** - * See {@link #trySetAnsiQuotesForMysql()}. + * This function is intended to be called by functions before they put together a query + * Thus, any query-specific instantiation to be done from within the transaction is done + * here - for eg., for MySQL, we signal that we want to use ANSI SQL quoting behaviour */ - private void setAnsiQuotesForMysql() throws MetaException { - try { - trySetAnsiQuotesForMysql(); - } catch (SQLException sqlEx) { - throw new MetaException("Error setting ansi quotes: " + sqlEx.getMessage()); + private void doDbSpecificInitializationsBeforeQuery() throws MetaException { + if (isMySql){ + try { + assert pm.currentTransaction().isActive(); // must be inside tx together with queries + trySetAnsiQuotesForMysql(); + } catch (SQLException sqlEx) { + throw new MetaException("Error setting ansi quotes: " + sqlEx.getMessage()); + } } } @@ -171,6 +179,78 @@ private void trySetAnsiQuotesForMysql() throws SQLException { } } + public Database getDatabase(String dbName) throws MetaException{ + Query queryDbSelector = null; + Query queryDbParams = null; + try { + dbName = dbName.toLowerCase(); + + doDbSpecificInitializationsBeforeQuery(); + + String queryTextDbSelector= "select " + + "\"DB_ID\", \"NAME\", \"DB_LOCATION_URI\", \"DESC\", " + + "\"OWNER_NAME\", \"OWNER_TYPE\" " + + "FROM \"DBS\" where \"NAME\" = ? "; + Object[] params = new Object[] { dbName }; + queryDbSelector = pm.newQuery("javax.jdo.query.SQL", queryTextDbSelector); + + LOG.debug("getDatabase:query instantiated : " + queryTextDbSelector + " with param ["+params[0]+"]"); + + List sqlResult = (List)queryDbSelector.executeWithArray(params); + if ((sqlResult == null) || sqlResult.isEmpty()) { + LOG.debug("getDatabase:queryDbSelector ran, returned no/empty results, returning NoSuchObjectException"); + throw new MetaException("There is no database named " + dbName); + } + + assert(sqlResult.size() == 1); + if (sqlResult.get(0) == null){ + LOG.debug("getDatabase:queryDbSelector ran, returned results, but the result entry was null, returning NoSuchObjectException"); + throw new MetaException("There is no database named " + dbName); + } + + Object[] dbline = sqlResult.get(0); + Long dbid = StatObjectConverter.extractSqlLong(dbline[0]); + + String queryTextDbParams = "select \"PARAM_KEY\", \"PARAM_VALUE\" " + + " FROM \"DATABASE_PARAMS\" " + + " WHERE \"DB_ID\" = ? " + + " AND \"PARAM_KEY\" IS NOT NULL"; + Object[] params2 = new Object[] { dbid }; + queryDbParams = pm.newQuery("javax.jdo.query.SQL",queryTextDbParams); + LOG.debug("getDatabase:query2 instantiated : " + queryTextDbParams + " with param ["+params2[0]+"]"); + + Map dbParams = new HashMap(); + List sqlResult2 = ensureList(queryDbParams.executeWithArray(params2)); + if (!sqlResult2.isEmpty()){ + for (Object[] line : sqlResult2){ + dbParams.put(extractSqlString(line[0]),extractSqlString(line[1])); + } + } + LOG.debug("getDatabase: instantiating db object to return"); + Database db = new Database(); + db.setName(extractSqlString(dbline[1])); + db.setLocationUri(extractSqlString(dbline[2])); + db.setDescription(extractSqlString(dbline[3])); + db.setOwnerName(extractSqlString(dbline[4])); + String type = extractSqlString(dbline[5]); + db.setOwnerType((null == type || type.trim().isEmpty()) ? null : PrincipalType.valueOf(type)); + db.setParameters(dbParams); + if (LOG.isDebugEnabled()){ + LOG.debug("getDatabase: directsql returning db " + db.getName() + + " locn["+db.getLocationUri() +"] desc [" +db.getDescription() + + "] owner [" + db.getOwnerName() + "] ownertype ["+ db.getOwnerType() +"]"); + } + return db; + } finally { + if (queryDbSelector != null){ + queryDbSelector.closeAll(); + } + if (queryDbParams != null){ + queryDbParams.closeAll(); + } + } + } + /** * Gets partitions by using direct SQL queries. * @param dbName Metastore db name. @@ -260,10 +340,8 @@ private List getPartitionsViaSqlFilterInternal(String dbName, String tblName = tblName.toLowerCase(); // We have to be mindful of order during filtering if we are not returning all partitions. String orderForFilter = (max != null) ? " order by \"PART_NAME\" asc" : ""; - if (isMySql) { - assert pm.currentTransaction().isActive(); - setAnsiQuotesForMysql(); // must be inside tx together with queries - } + + doDbSpecificInitializationsBeforeQuery(); // Get all simple fields for partitions and related objects, which we can map one-on-one. // We will do this in 2 queries to use different existing indices for each one. @@ -621,6 +699,11 @@ private int extractSqlInt(Object field) { return ((Number)field).intValue(); } + private String extractSqlString(Object value) { + if (value == null) return null; + return value.toString(); + } + private static String trimCommaList(StringBuilder sb) { if (sb.length() > 0) { sb.setLength(sb.length() - 1); diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java index 637a39a56932..d41d10d41aad 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -523,6 +523,34 @@ private MDatabase getMDatabase(String name) throws NoSuchObjectException { @Override public Database getDatabase(String name) throws NoSuchObjectException { + try { + return getDatabaseInternal(name); + } catch (MetaException e) { + // Signature restriction to NSOE, and NSOE being a flat exception prevents us from + // setting the cause of the NSOE as the MetaException. We should not lose the info + // we got here, but it's very likely that the MetaException is irrelevant and is + // actually an NSOE message, so we should log it and throw an NSOE with the msg. + LOG.warn("Got a MetaException trying to call getDatabase(" + +name+"), returning NoSuchObjectException", e); + throw new NoSuchObjectException(e.getMessage()); + } + } + + public Database getDatabaseInternal(String name) throws MetaException, NoSuchObjectException { + return new GetDbHelper(name, null, true, true) { + @Override + protected Database getSqlResult(GetHelper ctx) throws MetaException { + return directSql.getDatabase(dbName); + } + + @Override + protected Database getJdoResult(GetHelper ctx) throws MetaException, NoSuchObjectException { + return getJDODatabase(dbName); + } + }.run(false); + } + + public Database getJDODatabase(String name) throws NoSuchObjectException { MDatabase mdb = null; boolean commited = false; try { @@ -2282,7 +2310,14 @@ public GetHelper(String dbName, String tblName, boolean allowSql, boolean allowJ assert allowSql || allowJdo; this.allowJdo = allowJdo; this.dbName = dbName.toLowerCase(); - this.tblName = tblName.toLowerCase(); + if (tblName != null){ + this.tblName = tblName.toLowerCase(); + } else { + // tblName can be null in cases of Helper being used at a higher + // abstraction level, such as with datbases + this.tblName = null; + this.table = null; + } this.doTrace = LOG.isDebugEnabled(); this.isInTxn = isActiveTransaction(); @@ -2331,7 +2366,7 @@ public T run(boolean initTable) throws MetaException, NoSuchObjectException { private void start(boolean initTable) throws MetaException, NoSuchObjectException { start = doTrace ? System.nanoTime() : 0; openTransaction(); - if (initTable) { + if (initTable && (tblName != null)) { table = ensureGetTable(dbName, tblName); } } @@ -2398,6 +2433,27 @@ protected String describeResult() { } } + private abstract class GetDbHelper extends GetHelper { + /** + * GetHelper for returning db info using directSql/JDO. + * Since this is a db-level call, tblName is ignored, and null is passed irrespective of what is passed in. + * @param dbName The Database Name + * @param tblName Placeholder param to match signature, always ignored. + * @param allowSql Whether or not we allow DirectSQL to perform this query. + * @param allowJdo Whether or not we allow ORM to perform this query. + * @throws MetaException + */ + public GetDbHelper( + String dbName, String tblName, boolean allowSql, boolean allowJdo) throws MetaException { + super(dbName,null,allowSql,allowJdo); + } + + @Override + protected String describeResult() { + return "db details for db " + dbName; + } + } + private abstract class GetStatHelper extends GetHelper { public GetStatHelper( String dbName, String tblName, boolean allowSql, boolean allowJdo) throws MetaException { From 0939ff6bd2477214826296a24f1cf96232741689 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Thu, 16 Oct 2014 17:54:25 +0000 Subject: [PATCH 115/339] HIVE-8389 : Fix CBO when indexes are used (Pengcheng Xiong, reviewed by Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632398 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 3 ++- .../hive/ql/index/IndexPredicateAnalyzer.java | 23 +++++++++++++++++++ .../hadoop/hive/ql/optimizer/Optimizer.java | 6 +++-- .../clientnegative/set_hiveconf_validation2.q | 2 +- .../clientpositive/index_auto_partitioned.q | 1 + .../index_bitmap_auto_partitioned.q | 1 + .../set_hiveconf_validation2.q.out | 6 ++--- 7 files changed, 35 insertions(+), 7 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 9788e53a5dbf..74fac31f3dcd 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1317,10 +1317,11 @@ public static enum ConfVars { HIVEOUTERJOINSUPPORTSFILTERS("hive.outerjoin.supports.filters", true, ""), - HIVEFETCHTASKCONVERSION("hive.fetch.task.conversion", "more", new StringSet("minimal", "more"), + HIVEFETCHTASKCONVERSION("hive.fetch.task.conversion", "more", new StringSet("none", "minimal", "more"), "Some select queries can be converted to single FETCH task minimizing latency.\n" + "Currently the query should be single sourced not having any subquery and should not have\n" + "any aggregations or distincts (which incurs RS), lateral views and joins.\n" + + "0. none : disable hive.fetch.task.conversion\n" + "1. minimal : SELECT STAR, FILTER on partition columns, LIMIT only\n" + "2. more : SELECT, FILTER, LIMIT only (support TABLESAMPLE and virtual columns)" ), diff --git a/ql/src/java/org/apache/hadoop/hive/ql/index/IndexPredicateAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/index/IndexPredicateAnalyzer.java index 683618fdfa94..960fc1d2d0d4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/index/IndexPredicateAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/index/IndexPredicateAnalyzer.java @@ -182,6 +182,29 @@ private ExprNodeDesc analyzeExpr( } ExprNodeDesc expr1 = (ExprNodeDesc) nodeOutputs[0]; ExprNodeDesc expr2 = (ExprNodeDesc) nodeOutputs[1]; + // We may need to peel off the GenericUDFBridge that is added by CBO or user + boolean peelOffGenericUDFBridge = false; + while (expr1 instanceof ExprNodeGenericFuncDesc && expr2 instanceof ExprNodeGenericFuncDesc) { + GenericUDF udf1 = ((ExprNodeGenericFuncDesc) expr1).getGenericUDF(); + GenericUDF udf2 = ((ExprNodeGenericFuncDesc) expr2).getGenericUDF(); + // We assume that GenericUDFBridge that is added by CBO or user if they + // have the same udf names. + if (udf1.getUdfName() == udf2.getUdfName()) { + peelOffGenericUDFBridge = true; + expr1 = expr1.getChildren().get(0); + expr2 = expr2.getChildren().get(0); + } else { + break; + } + } + // We also need to update the expr so that the index query can be generated. + // Note that, hive does not support UDFToDouble in the query text. + if (peelOffGenericUDFBridge) { + List list = new ArrayList(); + list.add(expr1); + list.add(expr2); + expr = new ExprNodeGenericFuncDesc(expr.getTypeInfo(), expr.getGenericUDF(), list); + } ExprNodeDesc[] extracted = ExprNodeDescUtils.extractComparePair(expr1, expr2); if (extracted == null || (extracted.length > 2 && !acceptsFields)) { return expr; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java index 0a58200fcb80..a3ee70c7c13f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java @@ -139,8 +139,10 @@ public void initialize(HiveConf hiveConf) { transformations.add(new AnnotateWithOpTraits()); } - transformations.add(new SimpleFetchOptimizer()); // must be called last - + if (!HiveConf.getVar(hiveConf, HiveConf.ConfVars.HIVEFETCHTASKCONVERSION).equals("none")) { + transformations.add(new SimpleFetchOptimizer()); // must be called last + } + if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEFETCHTASKAGGR)) { transformations.add(new SimpleFetchAggregation()); } diff --git a/ql/src/test/queries/clientnegative/set_hiveconf_validation2.q b/ql/src/test/queries/clientnegative/set_hiveconf_validation2.q index 579e9408b6c3..ad14c0c6acae 100644 --- a/ql/src/test/queries/clientnegative/set_hiveconf_validation2.q +++ b/ql/src/test/queries/clientnegative/set_hiveconf_validation2.q @@ -1,4 +1,4 @@ --- should fail: hive.fetch.task.conversion accepts minimal or more +-- should fail: hive.fetch.task.conversion accepts none, minimal or more desc src; set hive.conf.validation=true; diff --git a/ql/src/test/queries/clientpositive/index_auto_partitioned.q b/ql/src/test/queries/clientpositive/index_auto_partitioned.q index 49df8f21e71b..f9f9a1b15a8c 100644 --- a/ql/src/test/queries/clientpositive/index_auto_partitioned.q +++ b/ql/src/test/queries/clientpositive/index_auto_partitioned.q @@ -1,4 +1,5 @@ set hive.stats.dbclass=fs; +set hive.fetch.task.conversion=none; -- SORT_QUERY_RESULTS -- test automatic use of index on table with partitions diff --git a/ql/src/test/queries/clientpositive/index_bitmap_auto_partitioned.q b/ql/src/test/queries/clientpositive/index_bitmap_auto_partitioned.q index 011d77a6fe93..2c0b676cb51b 100644 --- a/ql/src/test/queries/clientpositive/index_bitmap_auto_partitioned.q +++ b/ql/src/test/queries/clientpositive/index_bitmap_auto_partitioned.q @@ -1,4 +1,5 @@ set hive.stats.dbclass=fs; +set hive.fetch.task.conversion=none; -- SORT_QUERY_RESULTS diff --git a/ql/src/test/results/clientnegative/set_hiveconf_validation2.q.out b/ql/src/test/results/clientnegative/set_hiveconf_validation2.q.out index 33f936004df0..af004a135f67 100644 --- a/ql/src/test/results/clientnegative/set_hiveconf_validation2.q.out +++ b/ql/src/test/results/clientnegative/set_hiveconf_validation2.q.out @@ -1,11 +1,11 @@ -PREHOOK: query: -- should fail: hive.fetch.task.conversion accepts minimal or more +PREHOOK: query: -- should fail: hive.fetch.task.conversion accepts none, minimal or more desc src PREHOOK: type: DESCTABLE PREHOOK: Input: default@src -POSTHOOK: query: -- should fail: hive.fetch.task.conversion accepts minimal or more +POSTHOOK: query: -- should fail: hive.fetch.task.conversion accepts none, minimal or more desc src POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@src key string default value string default -Query returned non-zero code: 1, cause: 'SET hive.fetch.task.conversion=true' FAILED in validation : Invalid value.. expects one of [minimal, more]. +Query returned non-zero code: 1, cause: 'SET hive.fetch.task.conversion=true' FAILED in validation : Invalid value.. expects one of [none, minimal, more]. From 72bc2831ffdcb553dec319e4af30de45b3dea098 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Thu, 16 Oct 2014 19:32:45 +0000 Subject: [PATCH 116/339] HIVE-6715 : Hive JDBC should include username into open session request for non-sasl connection (Prasad Mujumdar, reviewed by Vaibhav Gumashta, Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632420 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hive/jdbc/TestNoSaslAuth.java | 102 ++++++++++++++++++ .../org/apache/hive/jdbc/HiveConnection.java | 6 ++ 2 files changed, 108 insertions(+) create mode 100644 itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestNoSaslAuth.java diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestNoSaslAuth.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestNoSaslAuth.java new file mode 100644 index 000000000000..84f1168b2829 --- /dev/null +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestNoSaslAuth.java @@ -0,0 +1,102 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hive.jdbc; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.util.HashMap; +import java.util.Map; + +import junit.framework.Assert; + +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; +import org.apache.hive.jdbc.miniHS2.MiniHS2; +import org.apache.hive.service.cli.HiveSQLException; +import org.apache.hive.service.cli.session.HiveSessionHook; +import org.apache.hive.service.cli.session.HiveSessionHookContext; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class TestNoSaslAuth { + private static MiniHS2 miniHS2 = null; + private static String sessionUserName = ""; + + public static class NoSaslSessionHook implements HiveSessionHook { + public static boolean checkUser = false; + + @Override + public void run(HiveSessionHookContext sessionHookContext) + throws HiveSQLException { + if (checkUser) { + Assert.assertEquals(sessionHookContext.getSessionUser(), sessionUserName); + } + } + } + + private Connection hs2Conn = null; + + @BeforeClass + public static void beforeTest() throws Exception { + Class.forName(MiniHS2.getJdbcDriverName()); + HiveConf conf = new HiveConf(); + conf.setBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY, false); + conf.setBoolVar(ConfVars.HIVE_SERVER2_ENABLE_DOAS, false); + conf.setVar(ConfVars.HIVE_SERVER2_SESSION_HOOK, + NoSaslSessionHook.class.getName()); + conf.setVar(ConfVars.HIVE_SERVER2_AUTHENTICATION, "NOSASL"); + miniHS2 = new MiniHS2(conf); + Map overlayProps = new HashMap(); + miniHS2.start(overlayProps); + } + + @Before + public void setUp() throws Exception { + // enable the hook check after the server startup, + NoSaslSessionHook.checkUser = true; + } + + @After + public void tearDown() throws Exception { + hs2Conn.close(); + NoSaslSessionHook.checkUser = false; + } + + @AfterClass + public static void afterTest() throws Exception { + if (miniHS2.isStarted()) + miniHS2.stop(); + } + + /** + * Initiate a non-sasl connection. The session hook will verfiy the user name + * set correctly + * + * @throws Exception + */ + @Test + public void testConnection() throws Exception { + sessionUserName = "user1"; + hs2Conn = DriverManager.getConnection( + miniHS2.getJdbcURL() + ";auth=noSasl", sessionUserName, "foo"); + } +} diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index 8dadda7776af..e4ec0c6eefa7 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -443,6 +443,12 @@ private void openSession() throws SQLException { } openReq.setConfiguration(openConf); + // Store the user name in the open request in case no non-sasl authentication + if (JdbcConnectionParams.AUTH_SIMPLE.equals(sessConfMap.get(JdbcConnectionParams.AUTH_TYPE))) { + openReq.setUsername(sessConfMap.get(JdbcConnectionParams.AUTH_USER)); + openReq.setPassword(sessConfMap.get(JdbcConnectionParams.AUTH_PASSWD)); + } + try { TOpenSessionResp openResp = client.OpenSession(openReq); From 6014a82ddeaf89e20ca2e85562aefc9a6c9e6d82 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Fri, 17 Oct 2014 15:33:57 +0000 Subject: [PATCH 117/339] HIVE-8428 : PCR doesnt remove filters involving casts (Ashutosh Chauhan via Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632609 13f79535-47bb-0310-9956-ffa450edef68 --- .../ConstantPropagateProcFactory.java | 20 +++++++++++++++++- .../ql/optimizer/pcr/PcrOpProcFactory.java | 13 +++++++++++- .../hadoop/hive/ql/parse/TezCompiler.java | 4 +++- .../queries/clientpositive/orc_ppd_decimal.q | 2 ++ .../clientpositive/orc_vectorization_ppd.q | 2 ++ ql/src/test/queries/clientpositive/pcr.q | 4 +++- ql/src/test/results/clientpositive/pcr.q.out | Bin 231992 -> 234247 bytes 7 files changed, 41 insertions(+), 4 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index b323cb58e015..6e10f950e49f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -187,6 +187,14 @@ private static ExprNodeConstantDesc typeCast(ExprNodeDesc desc, TypeInfo ti) { return new ExprNodeConstantDesc(ti, convObj); } + public static ExprNodeDesc foldExpr(ExprNodeGenericFuncDesc funcDesc) { + + GenericUDF udf = funcDesc.getGenericUDF(); + if (!isDeterministicUdf(udf)) { + return funcDesc; + } + return evaluateFunction(funcDesc.getGenericUDF(),funcDesc.getChildren(), funcDesc.getChildren()); + } /** * Fold input expression desc. * @@ -278,7 +286,7 @@ private static boolean isDeterministicUdf(GenericUDF udf) { (UDF) Class.forName(bridge.getUdfClassName(), true, Utilities.getSessionSpecifiedClassLoader()) .newInstance(); files = udfInternal.getRequiredFiles(); - jars = udf.getRequiredJars(); + jars = udfInternal.getRequiredJars(); } catch (Exception e) { LOG.error("The UDF implementation class '" + udfClassName + "' is not present in the class path"); @@ -470,6 +478,16 @@ private static ExprNodeDesc evaluateFunction(GenericUDF udf, List // FIXME: add null support. return null; + } else if (desc instanceof ExprNodeGenericFuncDesc) { + ExprNodeDesc evaluatedFn = foldExpr((ExprNodeGenericFuncDesc)desc); + if (null == evaluatedFn || !(evaluatedFn instanceof ExprNodeConstantDesc)) { + return null; + } + ExprNodeConstantDesc constant = (ExprNodeConstantDesc) evaluatedFn; + Object writableValue = PrimitiveObjectInspectorFactory.getPrimitiveJavaObjectInspector( + (PrimitiveTypeInfo) constant.getTypeInfo()).getPrimitiveWritableObject(constant.getValue()); + arguments[i] = new DeferredJavaObject(writableValue); + argois[i] = ObjectInspectorUtils.getConstantObjectInspector(constant.getWritableObjectInspector(), writableValue); } else { return null; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PcrOpProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PcrOpProcFactory.java index c2d49f6688f2..8955cbd09b12 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PcrOpProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PcrOpProcFactory.java @@ -31,10 +31,13 @@ import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.Partition; +import org.apache.hadoop.hive.ql.optimizer.ConstantPropagateProcFactory; import org.apache.hadoop.hive.ql.parse.ParseContext; import org.apache.hadoop.hive.ql.parse.PrunedPartitionList; import org.apache.hadoop.hive.ql.parse.SemanticException; +import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc; import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; +import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; /** @@ -133,7 +136,15 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, if (wrapper.state == PcrExprProcFactory.WalkState.TRUE) { owc.getOpToRemove().add(new PcrOpWalkerCtx.OpToDeleteInfo(pop, fop)); - } else if (wrapper.state != PcrExprProcFactory.WalkState.FALSE) { + } else if (wrapper.state == PcrExprProcFactory.WalkState.CONSTANT && wrapper.outExpr instanceof ExprNodeGenericFuncDesc) { + ExprNodeDesc desc = ConstantPropagateProcFactory.foldExpr((ExprNodeGenericFuncDesc)wrapper.outExpr); + if (desc != null && desc instanceof ExprNodeConstantDesc && Boolean.TRUE.equals(((ExprNodeConstantDesc)desc).getValue())) { + owc.getOpToRemove().add(new PcrOpWalkerCtx.OpToDeleteInfo(pop, fop)); + } else { + fop.getConf().setPredicate(wrapper.outExpr); + } + } + else if (wrapper.state != PcrExprProcFactory.WalkState.FALSE) { fop.getConf().setPredicate(wrapper.outExpr); } else { LOG.warn("Filter passes no row"); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java index 3ef51896fc6c..364cad9f7a98 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java @@ -306,7 +306,9 @@ private void runDynamicPartitionPruning(OptimizeTezProcContext procCtx, Set 0) order by ds,s; drop table foo_field; - +explain select key,value from srcpart where cast(hr as double) = cast(11 as double); +explain select key,value from srcpart where hr = cast(11 as double); +explain select key,value from srcpart where cast(hr as double) = 11 ; diff --git a/ql/src/test/results/clientpositive/pcr.q.out b/ql/src/test/results/clientpositive/pcr.q.out index 7fe77e04dc68a4a4615cc8497ab5c3f20bff62b8..016c41dc7170c305c12c60e0dc0744c71b83d445 100644 GIT binary patch delta 628 zcmdlng|B@XUqcIH3)2>6i>~Q$?aZ8$Uxn~<7pLZ=CYLB=r&j7r&y#1C)JRS&F44#+ zQb;UTNXaiv%1PB!P_R`1iy9gtiB7-h&!kVj_Q@Y~#3u*U$OsxJWELwVDir1CmnamM zB&MfMcT8lIn||O9qw{2m?;_Kg`Isdq|DGf<-PMcPee%p7GSe5FX5^iopw7fS{SqIu z*7S3N%xu%7m{q2)Rb`TxeqNo~d-BdVQqvdIGIC%zPXg#M5`2SG`2e{dd)ycrVvh?6 UT*_(bdM=;L;*#LZylgHm097Z_8~^|S delta 15 WcmZo)#6i!J~#<^`Gn From 27f5be63f302c76ccd6dd8da052f8706bab305eb Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Fri, 17 Oct 2014 15:35:00 +0000 Subject: [PATCH 118/339] HIVE-8460 : ORC SARG literal creation for double from float may lead to wrong evaluation of SARG (Prashanth J via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632610 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/io/sarg/SearchArgumentImpl.java | 32 +++++++++---------- .../ql/io/sarg/TestSearchArgumentImpl.java | 20 ++++++++++++ .../queries/clientpositive/orc_ppd_decimal.q | 2 -- 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java index 6aa35e10131c..eeb9641545ed 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java @@ -18,17 +18,21 @@ package org.apache.hadoop.hive.ql.io.sarg; -import com.esotericsoftware.kryo.Kryo; -import com.esotericsoftware.kryo.io.Input; -import com.esotericsoftware.kryo.io.Output; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Deque; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.hive.common.type.HiveChar; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.common.type.HiveVarchar; -import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf; -import org.apache.hadoop.hive.ql.io.sarg.SearchArgument; import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc; import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc; import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; @@ -52,15 +56,9 @@ import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Deque; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.io.Input; +import com.esotericsoftware.kryo.io.Output; /** * The implementation of SearchArguments. @@ -366,7 +364,7 @@ private static Object boxLiteral(ExprNodeConstantDesc lit) { case STRING: return StringUtils.stripEnd(lit.getValue().toString(), null); case FLOAT: - return ((Number) lit.getValue()).doubleValue(); + return Double.parseDouble(lit.getValue().toString()); case DATE: case TIMESTAMP: case DECIMAL: @@ -977,7 +975,9 @@ private static Object boxLiteral(Object literal) { literal instanceof Integer) { return Long.valueOf(literal.toString()); } else if (literal instanceof Float) { - return Double.valueOf((Float) literal); + // to avoid change in precision when upcasting float to double + // we convert the literal to string and parse it as double. (HIVE-8460) + return Double.parseDouble(literal.toString()); } else { throw new IllegalArgumentException("Unknown type for literal " + literal); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java b/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java index 96728d9e816d..831ef8c8ec64 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java @@ -2881,4 +2881,24 @@ public void testBuilderComplexTypes2() throws Exception { "leaf-3 = (NULL_SAFE_EQUALS a stinger)\n" + "expr = (and (not leaf-0) (not leaf-1) (not leaf-2) (not leaf-3))", sarg.toString()); } + + @Test + public void testBuilderFloat() throws Exception { + SearchArgument sarg = + SearchArgumentFactory.newBuilder() + .startAnd() + .lessThan("x", new Short((short) 22)) + .lessThan("x1", new Integer(22)) + .lessThanEquals("y", new HiveChar("hi", 10)) + .equals("z", new Float("0.22")) + .equals("z1", new Double(0.22)) + .end() + .build(); + assertEquals("leaf-0 = (LESS_THAN x 22)\n" + + "leaf-1 = (LESS_THAN x1 22)\n" + + "leaf-2 = (LESS_THAN_EQUALS y hi)\n" + + "leaf-3 = (EQUALS z 0.22)\n" + + "leaf-4 = (EQUALS z1 0.22)\n" + + "expr = (and leaf-0 leaf-1 leaf-2 leaf-3 leaf-4)", sarg.toString()); + } } diff --git a/ql/src/test/queries/clientpositive/orc_ppd_decimal.q b/ql/src/test/queries/clientpositive/orc_ppd_decimal.q index dde64b3a2d92..a54b8629ef2f 100644 --- a/ql/src/test/queries/clientpositive/orc_ppd_decimal.q +++ b/ql/src/test/queries/clientpositive/orc_ppd_decimal.q @@ -22,9 +22,7 @@ set hive.optimize.index.filter=false; select sum(hash(*)) from newtypesorc where d=cast('0.22' as float); set hive.optimize.index.filter=true; -set hive.optimize.constant.propagation=false; select sum(hash(*)) from newtypesorc where d=cast('0.22' as float); -set hive.optimize.constant.propagation=true; set hive.optimize.index.filter=false; select sum(hash(*)) from newtypesorc where d!=0.22; From 0e0b83d96c67d84d13343a58e49bbe4c665ee1f8 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Fri, 17 Oct 2014 15:40:11 +0000 Subject: [PATCH 119/339] HIVE-8464 : Vectorized reducer nested group by query returns wrong results (Matt McCline via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632614 13f79535-47bb-0310-9956-ffa450edef68 --- data/files/store_sales.txt | 1000 +++++++++++++++++ .../resources/testconfiguration.properties | 1 + .../ql/exec/vector/VectorGroupByOperator.java | 8 + .../ql/optimizer/physical/Vectorizer.java | 4 + .../clientpositive/vector_groupby_reduce.q | 129 +++ .../tez/vector_groupby_reduce.q.out | 466 ++++++++ .../vector_groupby_reduce.q.out | 453 ++++++++ 7 files changed, 2061 insertions(+) create mode 100644 data/files/store_sales.txt create mode 100644 ql/src/test/queries/clientpositive/vector_groupby_reduce.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_groupby_reduce.q.out create mode 100644 ql/src/test/results/clientpositive/vector_groupby_reduce.q.out diff --git a/data/files/store_sales.txt b/data/files/store_sales.txt new file mode 100644 index 000000000000..a39881cbab7e --- /dev/null +++ b/data/files/store_sales.txt @@ -0,0 +1,1000 @@ +2451813|65495|3617|67006|591617|3428|24839|10|161|1|79|11.41|18.71|2.80|99.54|221.20|901.39|1478.09|6.08|99.54|121.66|127.74|-779.73| +2451813|65495|13283|67006|591617|3428|24839|10|154|1|37|63.63|101.17|41.47|46.03|1534.39|2354.31|3743.29|59.53|46.03|1488.36|1547.89|-865.95| +2451813|65495|13631|67006|591617|3428|24839|10|172|1|99|80.52|137.68|83.98|0.00|8314.02|7971.48|13630.32|0.00|0.00|8314.02|8314.02|342.54| +2451813|65495|5981|67006|591617|3428|24839|10|280|1|14|57.37|76.30|6.10|0.00|85.40|803.18|1068.20|0.00|0.00|85.40|85.40|-717.78| +2451813|65495|4553|67006|591617|3428|24839|10|236|1|100|25.08|36.86|0.73|0.00|73.00|2508.00|3686.00|6.57|0.00|73.00|79.57|-2435.00| +2451813|65495|10993|67006|591617|3428|24839|10|263|1|91|93.48|108.43|93.24|0.00|8484.84|8506.68|9867.13|254.54|0.00|8484.84|8739.38|-21.84| +2451813|65495|49|67006|591617|3428|24839|10|70|1|5|10.68|15.91|6.68|0.00|33.40|53.40|79.55|2.33|0.00|33.40|35.73|-20.00| +2451813|65495|4583|67006|591617|3428|24839|10|267|1|72|84.72|111.83|61.50|0.00|4428.00|6099.84|8051.76|177.12|0.00|4428.00|4605.12|-1671.84| +2451813|65495|13538|67006|591617|3428|24839|10|106|1|14|11.54|11.77|0.00|0.00|0.00|161.56|164.78|0.00|0.00|0.00|0.00|-161.56| +2451813|65495|3248|67006|591617|3428|24839|10|189|1|58|4.57|5.34|3.52|0.00|204.16|265.06|309.72|0.00|0.00|204.16|204.16|-60.90| +2451813|65495|4682|67006|591617|3428|24839|10|7|1|44|31.07|54.99|24.19|0.00|1064.36|1367.08|2419.56|85.14|0.00|1064.36|1149.50|-302.72| +2451813|65495|5527|67006|591617|3428|24839|10|112|1|88|52.41|63.94|49.23|0.00|4332.24|4612.08|5626.72|259.93|0.00|4332.24|4592.17|-279.84| +2451813|65495|1553|67006|591617|3428|24839|10|242|1|50|67.71|126.61|87.36|0.00|4368.00|3385.50|6330.50|349.44|0.00|4368.00|4717.44|982.50| +2451813|65495|173|67006|591617|3428|24839|10|249|1|65|27.16|52.14|41.19|0.00|2677.35|1765.40|3389.10|214.18|0.00|2677.35|2891.53|911.95| +2451524|75316|6928|68284|1712478|4672|13266|10|37|2|65|93.86|158.62|34.89|0.00|2267.85|6100.90|10310.30|45.35|0.00|2267.85|2313.20|-3833.05| +2451524|75316|13927|68284|1712478|4672|13266|10|131|2|93|35.87|49.14|15.23|0.00|1416.39|3335.91|4570.02|113.31|0.00|1416.39|1529.70|-1919.52| +2451524|75316|10768|68284|1712478|4672|13266|10|78|2|30|2.27|3.83|1.11|0.00|33.30|68.10|114.90|0.00|0.00|33.30|33.30|-34.80| +2451524|75316|14701|68284|1712478|4672|13266|10|260|2|58|53.09|58.39|7.59|0.00|440.22|3079.22|3386.62|0.00|0.00|440.22|440.22|-2639.00| +|75316|17420|||4672||10||2||17.12|19.85||||||19.07|||495.84|| +2451524|75316|9436|68284|1712478|4672|13266|10|144|2|79|88.02|128.50|69.39|4549.90|5481.81|6953.58|10151.50|83.87|4549.90|931.91|1015.78|-6021.67| +2451524|75316|7654|68284|1712478|4672|13266|10|111|2|25|74.26|89.11|35.64|0.00|891.00|1856.50|2227.75|8.91|0.00|891.00|899.91|-965.50| +2451524|75316|12223|68284|1712478|4672|13266|10|267|2|78|65.71|88.70|23.06|341.74|1798.68|5125.38|6918.60|131.12|341.74|1456.94|1588.06|-3668.44| +2451524|75316|15085|68284|1712478|4672|13266|10|107|2|88|64.43|79.89|41.54|0.00|3655.52|5669.84|7030.32|146.22|0.00|3655.52|3801.74|-2014.32| +2451524|75316|3740|68284|1712478|4672|13266|10|72|2|49|6.55|7.86|7.46|0.00|365.54|320.95|385.14|0.00|0.00|365.54|365.54|44.59| +2451524|75316|1363|68284|1712478|4672|13266|10|38|2|4|13.46|15.34|12.57|0.00|50.28|53.84|61.36|4.02|0.00|50.28|54.30|-3.56| +2451524|75316|12068|68284|1712478|4672|13266|10|102|2|74|16.55|17.21|4.47|0.00|330.78|1224.70|1273.54|0.00|0.00|330.78|330.78|-893.92| +2451524|75316|13340|68284|1712478|4672|13266|10|212|2|71|36.01|64.09|3.20|0.00|227.20|2556.71|4550.39|4.54|0.00|227.20|231.74|-2329.51| +2451524|75316|2930|68284|1712478|4672|13266|10|234|2|36|61.23|93.06|11.16|0.00|401.76|2204.28|3350.16|28.12|0.00|401.76|429.88|-1802.52| +2451524|75316|15782|68284|1712478|4672|13266|10|268|2|62|77.97|85.76|79.75|0.00|4944.50|4834.14|5317.12|0.00|0.00|4944.50|4944.50|110.36| +2452638|50412|12447|44047|586372|697|22622|1|293|3|82|56.14|111.15|46.68|0.00|3827.76|4603.48|9114.30|306.22|0.00|3827.76|4133.98|-775.72| +2452638|50412|246|44047|586372|697|22622|1|229|3|96|98.02|136.24|104.90|0.00|10070.40|9409.92|13079.04|100.70|0.00|10070.40|10171.10|660.48| +||1531||||22622|1|222|3|||130.66|||3104.46||3527.82|124.17||||| +2452638|50412|3525|44047|586372|697|22622|1|165|3|42|97.03|178.53|7.14|0.00|299.88|4075.26|7498.26|17.99|0.00|299.88|317.87|-3775.38| +2452638|50412|13021|44047|586372|697|22622|1|56|3|64|74.69|120.25|2.40|0.00|153.60|4780.16|7696.00|3.07|0.00|153.60|156.67|-4626.56| +2452638|50412|17263|44047|586372|697|22622|1|14|3|17|72.38|111.46|75.79|0.00|1288.43|1230.46|1894.82|38.65|0.00|1288.43|1327.08|57.97| +2452638|50412|17971|44047|586372|697|22622|1|51|3|88|27.95|38.57|26.99|403.77|2375.12|2459.60|3394.16|0.00|403.77|1971.35|1971.35|-488.25| +2452638|50412|14443|44047|586372|697|22622|1|296|3|4|95.75|146.49|43.94|0.00|175.76|383.00|585.96|5.27|0.00|175.76|181.03|-207.24| +2452638|50412|14100|44047|586372|697|22622|1|77|3|79|44.66|83.06|17.44|1115.98|1377.76|3528.14|6561.74|5.23|1115.98|261.78|267.01|-3266.36| +2452638|50412|15786|44047|586372|697|22622|1|126|3|56|4.31|6.76|0.06|3.22|3.36|241.36|378.56|0.01|3.22|0.14|0.15|-241.22| +2452638|50412|10693|44047|586372|697|22622|1|140|3|27|37.04|58.89|55.35|0.00|1494.45|1000.08|1590.03|29.88|0.00|1494.45|1524.33|494.37| +2452638|50412|16869|44047|586372|697|22622|1|37|3|4|75.67|130.15|35.14|0.00|140.56|302.68|520.60|9.83|0.00|140.56|150.39|-162.12| +2452638|50412|5355|44047|586372|697|22622|1|90|3|53|23.04|44.00|26.40|0.00|1399.20|1221.12|2332.00|13.99|0.00|1399.20|1413.19|178.08| +2452638|50412|4698|44047|586372|697|22622|1|130|3|98|85.00|132.60|90.16|4506.19|8835.68|8330.00|12994.80|0.00|4506.19|4329.49|4329.49|-4000.51| +2451438|38195|12790|38814|874786|1511|19083|2|77|4|43|54.34|107.59|87.14|0.00|3747.02|2336.62|4626.37|299.76|0.00|3747.02|4046.78|1410.40| +2451438|38195|5515|38814|874786|1511|19083|2|224|4|23|2.91|3.57|3.53|32.47|81.19|66.93|82.11|0.97|32.47|48.72|49.69|-18.21| +2451438|38195|7990|38814|874786|1511|19083|2|16|4|56|64.68|78.90|24.45|0.00|1369.20|3622.08|4418.40|0.00|0.00|1369.20|1369.20|-2252.88| +2451438|38195|9685|38814|874786|1511|19083|2|284|4|21|40.39|40.39|12.11|0.00|254.31|848.19|848.19|22.88|0.00|254.31|277.19|-593.88| +2451438|38195|11036|38814|874786|1511|19083|2|229|4|41|67.18|78.60|5.50|0.00|225.50|2754.38|3222.60|13.53|0.00|225.50|239.03|-2528.88| +2451438|38195|8452|38814|874786|1511|19083|2|152|4|27|26.21|44.81|19.26|0.00|520.02|707.67|1209.87|46.80|0.00|520.02|566.82|-187.65| +2451438|38195|5350|38814|874786|1511|19083|2|241|4|86|64.67|123.51|55.57|0.00|4779.02|5561.62|10621.86|47.79|0.00|4779.02|4826.81|-782.60| +2451438|38195|163|38814|874786|1511|19083|2|190|4|17|54.26|105.80|9.52|116.52|161.84|922.42|1798.60|0.00|116.52|45.32|45.32|-877.10| +2451438|38195|1576|38814|874786|1511|19083|2|150|4|74|81.81|163.62|45.81|0.00|3389.94|6053.94|12107.88|271.19|0.00|3389.94|3661.13|-2664.00| +2451438|38195|6988|38814|874786|1511|19083|2|122|4|23|53.28|77.78|1.55|21.03|35.65|1225.44|1788.94|1.16|21.03|14.62|15.78|-1210.82| +2451465|53976|1940|13246|963544|5042|28940|2|70|5|60|69.54|112.65|57.45|0.00|3447.00|4172.40|6759.00|34.47|0.00|3447.00|3481.47|-725.40| +2451465|53976|11324|13246|963544|5042|28940|2|196|5|52|16.33|32.33|31.68|0.00|1647.36|849.16|1681.16|115.31|0.00|1647.36|1762.67|798.20| +2451465|53976|14599|13246|963544|5042|28940|2|167|5|83|74.15|89.72|63.70|0.00|5287.10|6154.45|7446.76|422.96|0.00|5287.10|5710.06|-867.35| +2451465|53976|11590|13246|963544|5042|28940|2|84|5|15|21.21|33.93|30.53|0.00|457.95|318.15|508.95|22.89|0.00|457.95|480.84|139.80| +2451465|53976|16792|13246|963544|5042|28940|2|12|5|71|22.10|37.57|28.17|0.00|2000.07|1569.10|2667.47|180.00|0.00|2000.07|2180.07|430.97| +2451465|53976|6466|13246|963544|5042|28940|2|200|5|36|7.93|12.92|7.36|0.00|264.96|285.48|465.12|0.00|0.00|264.96|264.96|-20.52| +2451465|53976|15752|13246|963544|5042|28940|2|10|5|66|71.06|136.43|45.02|0.00|2971.32|4689.96|9004.38|59.42|0.00|2971.32|3030.74|-1718.64| +2451465|53976|12650|13246|963544|5042|28940|2|185|5|66|21.01|28.57|5.99|0.00|395.34|1386.66|1885.62|7.90|0.00|395.34|403.24|-991.32| +|53976|5842||963544|||2|158|5|50|30.69|59.84||||1534.50||0.00||1735.00||200.50| +2451465|53976|14686|13246|963544|5042|28940|2|215|5|91|27.68|53.69|0.53|0.00|48.23|2518.88|4885.79|3.85|0.00|48.23|52.08|-2470.65| +2451465|53976|6068|13246|963544|5042|28940|2|125|5|76|89.78|103.24|50.58|0.00|3844.08|6823.28|7846.24|153.76|0.00|3844.08|3997.84|-2979.20| +2451465|53976|13562|13246|963544|5042|28940|2|75|5|64|87.90|95.81|66.10|0.00|4230.40|5625.60|6131.84|0.00|0.00|4230.40|4230.40|-1395.20| +2451465|53976|13958|13246|963544|5042|28940|2|149|5|60|41.72|52.98|32.31|0.00|1938.60|2503.20|3178.80|0.00|0.00|1938.60|1938.60|-564.60| +|53976|1808|13246|||28940|2||5|||77.52|11.62|0.00|732.06||4883.76|43.92|0.00|||| +2451465|53976|16195|13246|963544|5042|28940|2|206|5|50|30.96|56.34|45.07|0.00|2253.50|1548.00|2817.00|22.53|0.00|2253.50|2276.03|705.50| +||8621|53029||2092|||168|6||||||449.88|||||||| +2452109|36794|3049|53029|506184|2092|44800|4|72|6|31|49.78|77.15|69.43|0.00|2152.33|1543.18|2391.65|0.00|0.00|2152.33|2152.33|609.15| +2452109|36794|2549|53029|506184|2092|44800|4|128|6|62|85.07|159.08|76.35|0.00|4733.70|5274.34|9862.96|189.34|0.00|4733.70|4923.04|-540.64| +2452109|36794|10895|53029|506184|2092|44800|4|276|6|1|71.10|89.58|61.81|0.00|61.81|71.10|89.58|3.70|0.00|61.81|65.51|-9.29| +2452109|36794|11705|53029|506184|2092|44800|4|9|6|61|48.18|60.70|18.81|126.21|1147.41|2938.98|3702.70|71.48|126.21|1021.20|1092.68|-1917.78| +2452109|36794|13513|53029|506184|2092|44800|4|248|6|42|64.46|70.26|32.31|0.00|1357.02|2707.32|2950.92|27.14|0.00|1357.02|1384.16|-1350.30| +2452109|36794|3291|53029|506184|2092|44800|4|153|6|100|41.08|42.31|38.50|0.00|3850.00|4108.00|4231.00|346.50|0.00|3850.00|4196.50|-258.00| +2452109|36794|13245|53029|506184|2092|44800|4|252|6|64|86.35|152.83|122.26|6650.94|7824.64|5526.40|9781.12|35.21|6650.94|1173.70|1208.91|-4352.70| +2452109|36794|10355|53029|506184|2092|44800|4|216|6|94|62.67|99.64|97.64|0.00|9178.16|5890.98|9366.16|91.78|0.00|9178.16|9269.94|3287.18| +2452109|36794|6437|53029|506184|2092|44800|4|198|6|72|55.49|93.77|55.32|0.00|3983.04|3995.28|6751.44|199.15|0.00|3983.04|4182.19|-12.24| +2452109|36794|2647|53029|506184|2092|44800|4|150|6|100|4.45|7.87|7.24|0.00|724.00|445.00|787.00|57.92|0.00|724.00|781.92|279.00| +2452260|46712|5183|69954|890396|791|37633|2|6|7|51|84.65|124.43|49.77|0.00|2538.27|4317.15|6345.93|76.14|0.00|2538.27|2614.41|-1778.88| +2452260|46712|4627|69954|890396|791|37633|2|210|7|9|56.13|59.49|30.93|0.00|278.37|505.17|535.41|22.26|0.00|278.37|300.63|-226.80| +2452260||9751|69954|890396|791||||7|4|||||278.60|203.68|366.60|22.28||278.60|300.88|| +2452260|46712|15333|69954|||||85|7|||72.02||||||||4990.30||1141.70| +2452260|46712|4833|69954|890396|791|37633|2|153|7|88|38.23|72.63|39.22|0.00|3451.36|3364.24|6391.44|138.05|0.00|3451.36|3589.41|87.12| +2452260|46712|10487|69954|890396|791|37633|2|153|7|52|63.80|81.02|22.68|0.00|1179.36|3317.60|4213.04|23.58|0.00|1179.36|1202.94|-2138.24| +2452260|46712|5905|69954|890396|791|37633|2|77|7|69|99.85|113.82|110.40|0.00|7617.60|6889.65|7853.58|0.00|0.00|7617.60|7617.60|727.95| +2452260|46712|8955|69954|890396|791|37633|2|55|7|54|42.82|56.09|21.31|0.00|1150.74|2312.28|3028.86|92.05|0.00|1150.74|1242.79|-1161.54| +2452260|46712|15179|69954|890396|791|37633|2|5|7|12|47.60|75.20|65.42|0.00|785.04|571.20|902.40|47.10|0.00|785.04|832.14|213.84| +2452260|46712|4795|69954|890396|791|37633|2|212|7|73|12.17|14.23|11.24|623.59|820.52|888.41|1038.79|5.90|623.59|196.93|202.83|-691.48| +2452260|46712|17255|69954|890396|791|37633|2|275|7|69|34.19|58.46|50.86|0.00|3509.34|2359.11|4033.74|210.56|0.00|3509.34|3719.90|1150.23| +2452260|46712|12571|69954|890396|791|37633|2|147|7|82|69.53|87.60|34.16|0.00|2801.12|5701.46|7183.20|0.00|0.00|2801.12|2801.12|-2900.34| +2452179|52209|4183|86944|578318|6045|49019|8|109|8|90|81.63|151.83|113.87|9428.43|10248.30|7346.70|13664.70|40.99|9428.43|819.87|860.86|-6526.83| +2452179|52209|13427|86944|578318|6045|49019|8|106|8|87|31.78|63.24|16.44|0.00|1430.28|2764.86|5501.88|57.21|0.00|1430.28|1487.49|-1334.58| +2452179|52209|665|86944|578318|6045|49019|8|123|8|31|15.64|26.43|13.21|0.00|409.51|484.84|819.33|4.09|0.00|409.51|413.60|-75.33| +2452179|52209|11893|86944|578318|6045|49019|8|71|8|95|21.29|33.85|20.64|0.00|1960.80|2022.55|3215.75|98.04|0.00|1960.80|2058.84|-61.75| +2452179|52209|11365|86944|578318|6045|49019|8|239|8|7|18.65|27.97|20.41|0.00|142.87|130.55|195.79|1.42|0.00|142.87|144.29|12.32| +2452179|52209|7115|86944|578318|6045|49019|8|242|8|54|36.99|47.71|27.67|0.00|1494.18|1997.46|2576.34|89.65|0.00|1494.18|1583.83|-503.28| +2452179|52209|12041|86944|578318|6045|49019|8|299|8|95|91.80|93.63|75.84|6700.46|7204.80|8721.00|8894.85|5.04|6700.46|504.34|509.38|-8216.66| +2452179|52209|5929|86944|578318|6045|49019|8|128|8|83|14.11|27.37|3.28|0.00|272.24|1171.13|2271.71|13.61|0.00|272.24|285.85|-898.89| +2452179|52209|16671|86944|578318|6045|49019|8|45|8|20|18.95|33.92|31.88|0.00|637.60|379.00|678.40|51.00|0.00|637.60|688.60|258.60| +2452179|52209|17119|86944|578318|6045|49019|8|251|8|51|8.04|8.92|1.07|0.00|54.57|410.04|454.92|4.91|0.00|54.57|59.48|-355.47| +2452179|52209|17545|86944|578318|6045|49019|8|65|8|49|72.15|104.61|80.54|0.00|3946.46|3535.35|5125.89|39.46|0.00|3946.46|3985.92|411.11| +2452496|45986|12969|47480|1023064|4248|43385|4|14|9|59|88.31|106.85|44.87|0.00|2647.33|5210.29|6304.15|211.78|0.00|2647.33|2859.11|-2562.96| +2452496|45986|4623|47480|1023064|4248|43385|4|296|9|34|2.97|3.35|2.04|0.00|69.36|100.98|113.90|3.46|0.00|69.36|72.82|-31.62| +2452496|45986|17310|47480|1023064|4248|43385|4|167|9|33|27.13|53.44|2.13|0.00|70.29|895.29|1763.52|2.81|0.00|70.29|73.10|-825.00| +2452496|45986|13717|47480|1023064|4248|43385|4|172|9|53|75.37|89.69|54.71|0.00|2899.63|3994.61|4753.57|115.98|0.00|2899.63|3015.61|-1094.98| +|45986|16363|47480|1023064||43385|||9|54||||0.00|768.42|3873.42|||0.00||829.89|| +2452496|45986|69|47480|1023064|4248|43385|4|96|9|11|31.70|54.52|47.97|527.67|527.67|348.70|599.72|0.00|527.67|0.00|0.00|-348.70| +2452496|45986|16461|47480|1023064|4248|43385|4|281|9|66|15.21|26.00|25.22|66.58|1664.52|1003.86|1716.00|111.85|66.58|1597.94|1709.79|594.08| +2452496|45986|889|47480|1023064|4248|43385|4|287|9|6|27.17|51.62|25.29|0.00|151.74|163.02|309.72|3.03|0.00|151.74|154.77|-11.28| +2452496|45986|12027|47480|1023064|4248|43385|4|1|9|27|98.68|195.38|15.63|0.00|422.01|2664.36|5275.26|33.76|0.00|422.01|455.77|-2242.35| +2452496|45986|1185|47480|1023064|4248|43385|4|139|9|62|55.68|64.03|3.84|233.31|238.08|3452.16|3969.86|0.14|233.31|4.77|4.91|-3447.39| +2452496|45986|16083|47480|1023064|4248|43385|4|124|9|32|99.10|152.61|132.77|0.00|4248.64|3171.20|4883.52|339.89|0.00|4248.64|4588.53|1077.44| +2452496|45986|7945|47480|1023064|4248|43385|4|239|9|83|8.10|14.58|8.60|0.00|713.80|672.30|1210.14|64.24|0.00|713.80|778.04|41.50| +|45986|13483|||4248||4|109|9||59.14|108.81|46.78|0.00||3311.84|6093.36||0.00|2619.68|2619.68|| +2452496|45986|8334|47480|1023064|4248|43385|4|22|9|71|34.79|36.87|19.17|1197.74|1361.07|2470.09|2617.77|8.16|1197.74|163.33|171.49|-2306.76| +2452496|45986|15133|47480|1023064|4248|43385|4|111|9|15|35.89|63.88|30.66|0.00|459.90|538.35|958.20|41.39|0.00|459.90|501.29|-78.45| +2452496|45986|16659|47480|1023064|4248|43385|4|1|9|84|76.71|85.14|5.10|0.00|428.40|6443.64|7151.76|21.42|0.00|428.40|449.82|-6015.24| +2451966|60226|9811|4451|71288|6925|24515|10|38|10|28|47.85|50.24|19.09|0.00|534.52|1339.80|1406.72|37.41|0.00|534.52|571.93|-805.28| +2451966|60226|3933|4451|71288|6925|24515|10|61|10|52|52.19|66.80|26.05|0.00|1354.60|2713.88|3473.60|94.82|0.00|1354.60|1449.42|-1359.28| +2451966|60226|5863|4451|71288|6925|24515|10|27|10|47|11.71|22.60|3.61|0.00|169.67|550.37|1062.20|3.39|0.00|169.67|173.06|-380.70| +2451966|60226|4357|4451|71288|6925|24515|10|122|10|17|88.36|133.42|53.36|0.00|907.12|1502.12|2268.14|0.00|0.00|907.12|907.12|-595.00| +2451966|60226|15447|4451|71288|6925|24515|10|250|10|67|33.28|34.61|19.72|0.00|1321.24|2229.76|2318.87|39.63|0.00|1321.24|1360.87|-908.52| +2451966|60226|3433|4451|71288|6925|24515|10|195|10|83|10.26|17.33|9.18|0.00|761.94|851.58|1438.39|45.71|0.00|761.94|807.65|-89.64| +2451966|60226|755|4451|71288|6925|24515|10|91|10|74|82.24|152.96|97.89|0.00|7243.86|6085.76|11319.04|144.87|0.00|7243.86|7388.73|1158.10| +||1425|4451|71288|6925|24515|||10|92|||||2092.08|2280.68|3033.24|||2092.08|2280.36|-188.60| +2451966|60226|1511|4451|71288|6925|24515|10|95|10|76|31.47|56.01|31.36|0.00|2383.36|2391.72|4256.76|143.00|0.00|2383.36|2526.36|-8.36| +2451966|60226|13803|4451|71288|6925|24515|10|185|10|66|82.35|137.52|82.51|0.00|5445.66|5435.10|9076.32|0.00|0.00|5445.66|5445.66|10.56| +2452420|68961|7519|48900|781292|2484|22923|8|68|11|68|7.16|12.88|5.66|107.76|384.88|486.88|875.84|8.31|107.76|277.12|285.43|-209.76| +2452420|68961|1315|48900|781292|2484|22923|8|112|11|70|45.84|49.50|45.54|0.00|3187.80|3208.80|3465.00|159.39|0.00|3187.80|3347.19|-21.00| +2452420|68961|12438|48900|781292|2484|22923|8|239|11|16|92.94|185.88|46.47|0.00|743.52|1487.04|2974.08|44.61|0.00|743.52|788.13|-743.52| +2452420|68961|17395|48900|781292|2484|22923|8|214|11|85|38.04|42.98|22.34|0.00|1898.90|3233.40|3653.30|56.96|0.00|1898.90|1955.86|-1334.50| +2452420|68961|157|48900|781292|2484|22923|8|146|11|84|64.63|101.46|14.20|0.00|1192.80|5428.92|8522.64|59.64|0.00|1192.80|1252.44|-4236.12| +2452420|68961|10699|48900|781292|2484|22923|8|199|11|33|73.77|138.68|128.97|0.00|4256.01|2434.41|4576.44|0.00|0.00|4256.01|4256.01|1821.60| +2452420|68961|15157|48900|781292|2484|22923|8|90|11|96|15.52|21.41|21.41|0.00|2055.36|1489.92|2055.36|61.66|0.00|2055.36|2117.02|565.44| +2452420|68961|17226|48900|781292|2484|22923|8|68|11|11|34.03|44.23|42.46|0.00|467.06|374.33|486.53|18.68|0.00|467.06|485.74|92.73| +2452420|68961|11991|48900|781292|2484|22923|8|113|11|38|3.27|3.56|0.32|0.00|12.16|124.26|135.28|0.48|0.00|12.16|12.64|-112.10| +2452420|68961|9901|48900|781292|2484|22923|8|294|11|57|46.93|80.71|63.76|0.00|3634.32|2675.01|4600.47|327.08|0.00|3634.32|3961.40|959.31| +2452420|68961|7608|48900|781292|2484|22923|8|161|11|66|8.34|15.76|15.76|0.00|1040.16|550.44|1040.16|83.21|0.00|1040.16|1123.37|489.72| +2452420|68961|15649|48900|781292|2484|22923|8|277|11|33|66.11|114.37|78.91|0.00|2604.03|2181.63|3774.21|104.16|0.00|2604.03|2708.19|422.40| +||11490||781292||22923|8|246|11|||||0.00||4141.28||483.99|0.00||5861.67|1236.40| +2451206|35137|6248|20820|63209|3198|42434|8|261|12|36|75.17|75.92|40.23|0.00|1448.28|2706.12|2733.12|14.48|0.00|1448.28|1462.76|-1257.84| +2451206|35137|14944|20820|63209|3198|42434|8|1|12|9|7.33|11.94|11.22|31.30|100.98|65.97|107.46|2.09|31.30|69.68|71.77|3.71| +2451206|35137|9788|20820|63209|3198|42434|8|297|12|73|79.42|95.30|78.14|0.00|5704.22|5797.66|6956.90|456.33|0.00|5704.22|6160.55|-93.44| +2451206|35137|373|20820|63209|3198|42434|8|286|12|57|13.95|27.06|8.38|0.00|477.66|795.15|1542.42|33.43|0.00|477.66|511.09|-317.49| +2451206|35137|9616|20820|63209|3198|42434|8|79|12|66|99.06|104.01|78.00|0.00|5148.00|6537.96|6864.66|154.44|0.00|5148.00|5302.44|-1389.96| +2451206|35137|4888|20820|63209|3198|42434|8|183|12|56|75.74|133.30|0.00|0.00|0.00|4241.44|7464.80|0.00|0.00|0.00|0.00|-4241.44| +2451206|35137|14746|20820|63209|3198|42434|8|87|12|26|58.74|82.23|60.02|0.00|1560.52|1527.24|2137.98|46.81|0.00|1560.52|1607.33|33.28| +2451206|35137|1591|20820|63209|3198|42434|8|277|12|82|45.84|49.96|22.98|1262.52|1884.36|3758.88|4096.72|55.96|1262.52|621.84|677.80|-3137.04| +2451206|35137|6148|20820|63209|3198|42434|8|139|12|36|97.62|193.28|15.46|0.00|556.56|3514.32|6958.08|5.56|0.00|556.56|562.12|-2957.76| +2451206|35137|15440|20820|63209|3198|42434|8|1|12|99|27.09|53.63|26.27|0.00|2600.73|2681.91|5309.37|104.02|0.00|2600.73|2704.75|-81.18| +2451206|35137|13399|20820|63209|3198|42434|8|289|12|46|45.27|60.20|22.27|0.00|1024.42|2082.42|2769.20|51.22|0.00|1024.42|1075.64|-1058.00| +2450850|65476|5971|15144|1401973|4002|32431|1|138|13|80|72.61|82.04|63.17|0.00|5053.60|5808.80|6563.20|454.82|0.00|5053.60|5508.42|-755.20| +2450850|65476|6682|15144|1401973|4002|32431|1|135|13|80|32.05|41.98|22.66|0.00|1812.80|2564.00|3358.40|72.51|0.00|1812.80|1885.31|-751.20| +2450850|65476|4430|15144|1401973|4002|32431|1|120|13|73|5.86|11.72|0.70|0.00|51.10|427.78|855.56|4.08|0.00|51.10|55.18|-376.68| +2450850|65476|6085|15144|1401973|4002|32431|1|72|13|58|21.45|28.74|22.12|0.00|1282.96|1244.10|1666.92|115.46|0.00|1282.96|1398.42|38.86| +2450850|65476|1760|15144|1401973|4002|32431|1|121|13|12|80.96|138.44|41.53|0.00|498.36|971.52|1661.28|24.91|0.00|498.36|523.27|-473.16| +2450850|65476|10096|15144|1401973|4002|32431|1|107|13|12|17.14|30.85|28.99|0.00|347.88|205.68|370.20|6.95|0.00|347.88|354.83|142.20| +|65476|1898|15144|||32431|1|180|13||96.46|||0.00|432.48|385.84||8.64|0.00||441.12|| +2450850|65476|7640|15144|1401973|4002|32431|1|5|13|48|17.06|28.49|10.82|0.00|519.36|818.88|1367.52|25.96|0.00|519.36|545.32|-299.52| +2450850||868|15144||4002|32431|1||13||62.85|109.35||0.00||5467.95|9513.45|38.03|0.00|950.91||-4517.04| +2450850|65476|17240|15144|1401973|4002|32431|1|163|13|20|93.85|185.82|137.50|2255.00|2750.00|1877.00|3716.40|39.60|2255.00|495.00|534.60|-1382.00| +2450850|65476|16894|15144|1401973|4002|32431|1|255|13|87|20.99|30.43|16.12|1192.07|1402.44|1826.13|2647.41|14.72|1192.07|210.37|225.09|-1615.76| +2450850|65476|6140|15144|1401973|4002|32431|1|1|13|15|89.90|163.61|4.90|46.30|73.50|1348.50|2454.15|2.44|46.30|27.20|29.64|-1321.30| +2450850|65476|2191|15144||4002|32431|||13||||15.60|||2390.50||||||| +2450850|65476|7723|15144|1401973|4002|32431|1|252|13|27|59.09|112.86|83.51|0.00|2254.77|1595.43|3047.22|202.92|0.00|2254.77|2457.69|659.34| +2450850|65476|2108||1401973||32431|||13|9||||478.29||||1.89|478.29||49.20|| +2450850|65476|11758|15144|1401973|4002|32431|1|84|13|34|72.24|107.63|49.50|1464.21|1683.00|2456.16|3659.42|17.50|1464.21|218.79|236.29|-2237.37| +2452217|34167|13515|19409|1145357|4905|39653|4|125|14|57|87.32|92.55|43.49|1933.56|2478.93|4977.24|5275.35|5.45|1933.56|545.37|550.82|-4431.87| +2452217|34167|177|19409|1145357|4905|39653|4|15|14|41|13.05|15.13|9.22|109.62|378.02|535.05|620.33|0.00|109.62|268.40|268.40|-266.65| +2452217|34167|16929|19409|1145357|4905|39653|4|120|14|14|54.76|91.99|0.91|0.00|12.74|766.64|1287.86|0.25|0.00|12.74|12.99|-753.90| +2452217|34167|16741|19409|1145357|4905|39653|4|253|14|46|76.43|110.82|64.27|0.00|2956.42|3515.78|5097.72|236.51|0.00|2956.42|3192.93|-559.36| +2452217|34167|11549|19409|1145357|4905|39653|4|254|14|6|19.33|26.67|20.80|0.00|124.80|115.98|160.02|7.48|0.00|124.80|132.28|8.82| +2452217|34167|11817|19409|1145357|4905|39653|4|182|14|81|60.77|66.84|7.35|0.00|595.35|4922.37|5414.04|35.72|0.00|595.35|631.07|-4327.02| +2452217|34167|11653|19409|1145357|4905|39653|4|18|14|60|86.94|88.67|39.01|1638.42|2340.60|5216.40|5320.20|0.00|1638.42|702.18|702.18|-4514.22| +2452217||12587|19409||4905|||82|14||||||1233.75||3163.50|74.02||||-467.25| +2452217|34167|13069|19409|1145357|4905|39653|4|117|14|77|93.60|105.76|68.74|0.00|5292.98|7207.20|8143.52|264.64|0.00|5292.98|5557.62|-1914.22| +2452217|34167|4507|19409|1145357|4905|39653|4|118|14|4|45.45|84.08|65.58|0.00|262.32|181.80|336.32|0.00|0.00|262.32|262.32|80.52| +2452217|34167|13845|19409|1145357|4905|39653|4|146|14|17|52.30|84.72|64.38|0.00|1094.46|889.10|1440.24|76.61|0.00|1094.46|1171.07|205.36| +2452217|34167|10175|19409|1145357|4905|39653|4|234|14|19|39.97|57.15|46.86|0.00|890.34|759.43|1085.85|53.42|0.00|890.34|943.76|130.91| +2452217|34167|769|19409|1145357|4905|39653|4|258|14|20|26.29|51.79|9.32|0.00|186.40|525.80|1035.80|11.18|0.00|186.40|197.58|-339.40| +2451797|55556|17267|62835|227170|1458|32993|4|70|15|7|30.61|51.73|51.73|0.00|362.11|214.27|362.11|25.34|0.00|362.11|387.45|147.84| +2451797|55556|11659|62835|227170|1458|32993|4|197|15|80|86.23|156.93|20.40|750.72|1632.00|6898.40|12554.40|17.62|750.72|881.28|898.90|-6017.12| +2451797|55556|17857|62835|227170|1458|32993|4|291|15|38|96.35|104.05|32.25|0.00|1225.50|3661.30|3953.90|61.27|0.00|1225.50|1286.77|-2435.80| +2451797|55556|4777|62835|227170|1458|32993|4|4|15|28|36.86|58.60|58.01|0.00|1624.28|1032.08|1640.80|32.48|0.00|1624.28|1656.76|592.20| +2451797|55556|8690|62835|227170|1458|32993|4|148|15|32|67.37|117.89|9.43|0.00|301.76|2155.84|3772.48|24.14|0.00|301.76|325.90|-1854.08| +2451797|55556|10361|62835|227170|1458|32993|4|82|15|39|74.88|125.04|1.25|0.00|48.75|2920.32|4876.56|2.92|0.00|48.75|51.67|-2871.57| +2451797|55556|16619|62835|227170|1458|32993|4|133|15|81|80.21|152.39|105.14|0.00|8516.34|6497.01|12343.59|766.47|0.00|8516.34|9282.81|2019.33| +2451797|55556|8707|62835|227170|1458|32993|4|58|15|21|48.54|57.27|1.14|0.00|23.94|1019.34|1202.67|0.23|0.00|23.94|24.17|-995.40| +2451797|55556|8353|62835|||32993|4|157|15|||||0.00||||28.50|0.00|950.04||-1336.79| +2451797|55556|4505|62835|227170|1458|32993|4|142|15|59|77.35|113.70|61.39|0.00|3622.01|4563.65|6708.30|289.76|0.00|3622.01|3911.77|-941.64| +2451797|55556|4241|62835|227170|1458|32993|4|136|15|21|89.07|132.71|95.55|0.00|2006.55|1870.47|2786.91|120.39|0.00|2006.55|2126.94|136.08| +2451797|55556|17330|62835|227170|1458|32993|4|265|15|82|67.45|122.08|95.22|6714.91|7808.04|5530.90|10010.56|76.51|6714.91|1093.13|1169.64|-4437.77| +2451797|55556|7391|62835|227170|1458|32993|4|32|15|98|53.76|65.58|3.27|0.00|320.46|5268.48|6426.84|0.00|0.00|320.46|320.46|-4948.02| +2451797|55556|8336|62835|227170|1458|32993|4|112|15|15|44.09|60.84|45.02|0.00|675.30|661.35|912.60|13.50|0.00|675.30|688.80|13.95| +2451797|55556|17564|62835|227170|1458|32993|4|136|15|26|63.52|88.92|40.90|0.00|1063.40|1651.52|2311.92|0.00|0.00|1063.40|1063.40|-588.12| +2451797|55556|13172|62835|227170|1458|32993|4|35|15|25|47.11|57.94|38.81|0.00|970.25|1177.75|1448.50|29.10|0.00|970.25|999.35|-207.50| +2450872|47818|9997|51139|263380|868|33509|1|270|16|94|64.76|119.80|74.27|0.00|6981.38|6087.44|11261.20|488.69|0.00|6981.38|7470.07|893.94| +2450872|47818|17246|51139|263380|868|33509|1|51|16|70|80.85|161.70|100.25|0.00|7017.50|5659.50|11319.00|210.52|0.00|7017.50|7228.02|1358.00| +2450872|47818|9790|51139|263380|868|33509|1|4|16|17|36.95|61.70|60.46|0.00|1027.82|628.15|1048.90|20.55|0.00|1027.82|1048.37|399.67| +2450872|47818|4144|51139|263380|868|33509|1|228|16|94|19.91|25.28|22.49|0.00|2114.06|1871.54|2376.32|21.14|0.00|2114.06|2135.20|242.52| +2450872|47818|8887|51139||868||||16|35|59.82||50.91|||2093.70|2784.60||||1870.94|-311.85| +2450872|47818|6008|51139|263380|868|33509|1|191|16|59|59.62|63.79|60.60|0.00|3575.40|3517.58|3763.61|214.52|0.00|3575.40|3789.92|57.82| +2450872|47818|457|51139|263380|868|33509|1|248|16|60|91.53|167.49|68.67|0.00|4120.20|5491.80|10049.40|370.81|0.00|4120.20|4491.01|-1371.60| +2450872|47818|11168|51139|263380|868|33509|1|132|16|86|62.85|103.07|64.93|0.00|5583.98|5405.10|8864.02|390.87|0.00|5583.98|5974.85|178.88| +2450872|47818|9769|51139|263380|868|33509|1|267|16|42|29.53|33.66|12.11|391.63|508.62|1240.26|1413.72|7.01|391.63|116.99|124.00|-1123.27| +2450872|47818|7504|51139|263380|868|33509|1|172|16|51|31.35|55.17|15.99|0.00|815.49|1598.85|2813.67|65.23|0.00|815.49|880.72|-783.36| +2450872|47818|1888|51139|263380|868|33509|1|48|16|4|47.64|61.93|55.73|0.00|222.92|190.56|247.72|6.68|0.00|222.92|229.60|32.36| +2450872|47818|16226|51139|263380|868|33509|1|152|16|13|31.30|61.03|31.12|0.00|404.56|406.90|793.39|36.41|0.00|404.56|440.97|-2.34| +2450872|47818|11920|51139|263380|868|33509|1|145|16|29|94.31|151.83|103.24|0.00|2993.96|2734.99|4403.07|29.93|0.00|2993.96|3023.89|258.97| +2451200|49168|17683|77683|756435|2034|22386|7|185|17|34|81.48|136.07|55.78|0.00|1896.52|2770.32|4626.38|37.93|0.00|1896.52|1934.45|-873.80| +2451200|49168|4678|77683|756435|2034|22386|7|68|17|34|32.47|56.49|44.06|149.80|1498.04|1103.98|1920.66|121.34|149.80|1348.24|1469.58|244.26| +2451200|49168|6811|77683|756435|2034|22386|7|144|17|70|62.96|66.73|24.02|0.00|1681.40|4407.20|4671.10|33.62|0.00|1681.40|1715.02|-2725.80| +2451200|49168|13177|77683|756435|2034|22386|7|209|17|45|44.18|72.45|51.43|0.00|2314.35|1988.10|3260.25|138.86|0.00|2314.35|2453.21|326.25| +2451200|49168|2092|77683|756435|2034|22386|7|110|17|37|31.71|47.88|37.82|1385.34|1399.34|1173.27|1771.56|0.00|1385.34|14.00|14.00|-1159.27| +2451200|49168|11203|77683|756435|2034|22386|7|80|17|21|93.44|172.86|31.11|0.00|653.31|1962.24|3630.06|26.13|0.00|653.31|679.44|-1308.93| +2451200|49168|13826|77683|756435|2034|22386|7|188|17|32|58.61|63.88|47.91|0.00|1533.12|1875.52|2044.16|137.98|0.00|1533.12|1671.10|-342.40| +2451200|49168|15781|77683|756435|2034|22386|7|279|17|76|24.79|33.46|4.34|0.00|329.84|1884.04|2542.96|6.59|0.00|329.84|336.43|-1554.20| +2451200|49168|9214|77683|756435|2034|22386|7|212|17|57|14.20|25.56|8.94|0.00|509.58|809.40|1456.92|25.47|0.00|509.58|535.05|-299.82| +2451200|49168|10543|77683|756435|2034|22386|7|32|17|54|57.11|93.66|76.80|0.00|4147.20|3083.94|5057.64|290.30|0.00|4147.20|4437.50|1063.26| +2451415|54836|8884|63292|54321|997|9226|10|55|18|18|43.49|59.58|12.51|0.00|225.18|782.82|1072.44|18.01|0.00|225.18|243.19|-557.64| +2451415|54836|11584|63292|54321|997|9226|10|289|18|76|4.26|7.58|3.56|0.00|270.56|323.76|576.08|13.52|0.00|270.56|284.08|-53.20| +2451415|54836|11890|63292|54321|997|9226|10|99|18|7|82.36|159.77|63.90|0.00|447.30|576.52|1118.39|4.47|0.00|447.30|451.77|-129.22| +2451415|54836|12602|63292|54321|997|9226|10|162|18|81|11.32|18.79|8.07|0.00|653.67|916.92|1521.99|0.00|0.00|653.67|653.67|-263.25| +2451415|54836|7378|63292|54321|997|9226|10|270|18|94|61.01|114.08|99.24|7835.99|9328.56|5734.94|10723.52|119.40|7835.99|1492.57|1611.97|-4242.37| +2451415|54836|9886|63292|54321|997|9226|10|191|18|62|9.59|15.43|10.49|0.00|650.38|594.58|956.66|32.51|0.00|650.38|682.89|55.80| +2451415|54836|14011|63292|54321|997|9226|10|221|18|95|55.01|101.21|36.43|0.00|3460.85|5225.95|9614.95|311.47|0.00|3460.85|3772.32|-1765.10| +2451415|54836|17995|63292|54321|997|9226|10|30|18|13|46.79|52.87|32.25|327.01|419.25|608.27|687.31|2.76|327.01|92.24|95.00|-516.03| +2451415|54836|12860|63292|54321|997|9226|10|221|18|18|19.89|32.61|4.23|0.00|76.14|358.02|586.98|4.56|0.00|76.14|80.70|-281.88| +2451415|54836|12826|63292|54321|997|9226|10|89|18|93|82.82|135.82|35.31|426.89|3283.83|7702.26|12631.26|142.84|426.89|2856.94|2999.78|-4845.32| +2451415|54836|14377|63292|54321|997|9226|10|181|18|15|15.47|20.57|18.10|203.62|271.50|232.05|308.55|0.00|203.62|67.88|67.88|-164.17| +2451415|54836|2440|63292|54321|997|9226|10|142|18|40|15.39|28.93|24.87|0.00|994.80|615.60|1157.20|49.74|0.00|994.80|1044.54|379.20| +2451415|54836|8779|63292|54321|||10||18|9|75.19|121.80|60.90|0.00|||||0.00|||| +2451415|54836|14372|63292|54321|997|9226|10|211|18|76|89.58|130.78|27.46|0.00|2086.96|6808.08|9939.28|83.47|0.00|2086.96|2170.43|-4721.12| +2451415|54836|5251|63292|54321|997|9226|10|163|18|41|45.83|78.36|38.39|1353.63|1573.99|1879.03|3212.76|15.42|1353.63|220.36|235.78|-1658.67| +2451361|65446|11914|51104|1847200|1343|38239|7|287|19|59|88.03|153.17|13.78|0.00|813.02|5193.77|9037.03|56.91|0.00|813.02|869.93|-4380.75| +2451361|65446|10651|51104|1847200|1343|38239|7|196|19|46|57.69|70.95|7.09|104.36|326.14|2653.74|3263.70|19.96|104.36|221.78|241.74|-2431.96| +2451361|65446|3133|51104|1847200|1343|38239|7|56|19|96|68.89|102.64|25.66|0.00|2463.36|6613.44|9853.44|221.70|0.00|2463.36|2685.06|-4150.08| +2451361|65446|7087|51104|1847200|1343|38239|7|266|19|1|48.67|51.10|31.68|0.00|31.68|48.67|51.10|1.26|0.00|31.68|32.94|-16.99| +2451361|65446|9346|51104|1847200|1343|38239|7|202|19|39|84.06|85.74|0.85|0.00|33.15|3278.34|3343.86|2.98|0.00|33.15|36.13|-3245.19| +2451361|65446|6772|51104|1847200|1343|38239|7|99|19|97|36.04|62.34|21.81|0.00|2115.57|3495.88|6046.98|21.15|0.00|2115.57|2136.72|-1380.31| +||9094|51104|||38239||169|19|49|61.82|110.03|||1401.40||5391.47|||||| +2451361|65446|1094|51104|1847200|1343|38239|7|74|19|48|19.55|34.79|20.52|128.04|984.96|938.40|1669.92|51.41|128.04|856.92|908.33|-81.48| +2451361|65446|3376|51104|1847200|1343|38239|7|299|19|84|63.07|90.19|30.66|0.00|2575.44|5297.88|7575.96|51.50|0.00|2575.44|2626.94|-2722.44| +2451361|65446|4882|51104|1847200|1343|38239|7|182|19|84|41.48|44.79|33.14|0.00|2783.76|3484.32|3762.36|27.83|0.00|2783.76|2811.59|-700.56| +2451361|65446|8662|51104|1847200|1343|38239|7|163|19|97|72.78|90.24|83.02|0.00|8052.94|7059.66|8753.28|724.76|0.00|8052.94|8777.70|993.28| +2451361|65446|17539|51104|1847200|1343|38239|7|68|19|20|69.20|93.42|73.80|0.00|1476.00|1384.00|1868.40|14.76|0.00|1476.00|1490.76|92.00| +2451361|65446|16330|51104|||38239|7|278|19||79.15||47.10|0.00||395.75||9.42|0.00||244.92|| +2451361|65446|7814|51104|1847200|1343|38239|7|297|19|29|61.78|100.70|16.11|0.00|467.19|1791.62|2920.30|42.04|0.00|467.19|509.23|-1324.43| +2451361|65446|10558|51104|1847200|1343|38239|7|289|19|82|12.34|17.52|6.13|0.00|502.66|1011.88|1436.64|40.21|0.00|502.66|542.87|-509.22| +2451556|45944|5425|44828|671305|3382|48259|10|250|20|15|28.19|29.88|5.97|11.64|89.55|422.85|448.20|5.45|11.64|77.91|83.36|-344.94| +2451556|45944|6026|44828|671305|3382|48259|10|144|20|21|80.56|99.89|15.98|0.00|335.58|1691.76|2097.69|6.71|0.00|335.58|342.29|-1356.18| +2451556|45944|13601|44828|671305|3382|48259|10|133|20|17|1.40|2.52|0.80|11.83|13.60|23.80|42.84|0.12|11.83|1.77|1.89|-22.03| +2451556|45944|2618|44828|671305|3382|48259|10|236|20|4|69.47|121.57|71.72|106.14|286.88|277.88|486.28|16.26|106.14|180.74|197.00|-97.14| +2451556|45944|15131|44828|671305|3382|48259|10|188|20|85|42.56|68.94|19.99|0.00|1699.15|3617.60|5859.90|50.97|0.00|1699.15|1750.12|-1918.45| +2451556|45944|9800|44828|671305|3382|48259|10|230|20|32|18.09|32.74|31.10|0.00|995.20|578.88|1047.68|39.80|0.00|995.20|1035.00|416.32| +|45944|14935|44828||||10|241|20|||22.03|7.04||337.92|719.52||10.13||337.92|348.05|| +2451556|45944|9086|44828|671305|3382|48259|10|12|20|4|98.99|188.08|0.00|0.00|0.00|395.96|752.32|0.00|0.00|0.00|0.00|-395.96| +2451556|45944|5312|44828|671305|3382|48259|10|297|20|9|29.45|50.06|28.03|0.00|252.27|265.05|450.54|5.04|0.00|252.27|257.31|-12.78| +2451556|45944|1451|44828|671305|3382|48259|10|188|20|89|84.34|164.46|18.09|0.00|1610.01|7506.26|14636.94|80.50|0.00|1610.01|1690.51|-5896.25| +2451556|45944|5483|44828|671305|3382|48259|10|103|20|8|30.74|33.50|11.39|0.00|91.12|245.92|268.00|3.64|0.00|91.12|94.76|-154.80| +|45944|8714|44828|671305|3382|48259||97|20||8.15|||0.00|112.44|97.80|190.68|4.49|0.00|||14.64| +2451556|45944|7207|44828|671305|3382|48259|10|130|20|90|83.12|102.23|68.49|0.00|6164.10|7480.80|9200.70|308.20|0.00|6164.10|6472.30|-1316.70| +2451172|70722|2870|60478|1673919|2560|10401|1|84|21|50|91.94|138.82|27.76|0.00|1388.00|4597.00|6941.00|69.40|0.00|1388.00|1457.40|-3209.00| +2451172|70722|12266|60478|1673919|2560|10401|1|172|21|47|11.55|12.58|12.20|0.00|573.40|542.85|591.26|51.60|0.00|573.40|625.00|30.55| +2451172|70722|230|60478|1673919|2560|10401|1|280|21|48|13.37|23.93|20.10|0.00|964.80|641.76|1148.64|86.83|0.00|964.80|1051.63|323.04| +2451172|70722|9187|60478|1673919|2560|10401|1|115|21|14|35.49|42.58|24.69|214.30|345.66|496.86|596.12|3.94|214.30|131.36|135.30|-365.50| +2451172|70722|6476|60478|1673919|2560|10401|1|89|21|49|20.29|31.24|6.24|0.00|305.76|994.21|1530.76|3.05|0.00|305.76|308.81|-688.45| +2451172|70722|1810|60478|1673919|2560|10401|1|88|21|59|66.37|126.76|20.28|873.45|1196.52|3915.83|7478.84|0.00|873.45|323.07|323.07|-3592.76| +2451172|70722|5170|60478|1673919|2560|10401|1|93|21|45|90.00|108.00|65.88|0.00|2964.60|4050.00|4860.00|88.93|0.00|2964.60|3053.53|-1085.40| +2451172|70722|5998|60478|1673919|2560|10401|1|13|21|51|9.41|10.44|3.02|150.93|154.02|479.91|532.44|0.00|150.93|3.09|3.09|-476.82| +2451172|70722|14368|60478|1673919|2560|10401|1|275|21|18|51.29|69.24|59.54|664.46|1071.72|923.22|1246.32|36.65|664.46|407.26|443.91|-515.96| +2451172|70722|14396|60478|1673919|2560|10401|1|109|21|88|45.26|54.76|15.33|0.00|1349.04|3982.88|4818.88|13.49|0.00|1349.04|1362.53|-2633.84| +2451112|65253|16396|64935|1392098|4508|11671|10|146|22|85|86.46|129.69|25.93|0.00|2204.05|7349.10|11023.65|44.08|0.00|2204.05|2248.13|-5145.05| +2451112|65253|17660|64935|1392098|4508|11671|10|102|22|70|95.56|132.82|31.87|0.00|2230.90|6689.20|9297.40|66.92|0.00|2230.90|2297.82|-4458.30| +2451112|65253|15310|64935|1392098|4508|11671|10|154|22|15|82.24|137.34|108.49|1594.80|1627.35|1233.60|2060.10|2.60|1594.80|32.55|35.15|-1201.05| +2451112|65253|12415|64935|1392098|4508|11671|10|160|22|10|38.97|41.69|5.83|1.74|58.30|389.70|416.90|0.00|1.74|56.56|56.56|-333.14| +2451112|65253|9985|64935|1392098|4508|11671|10|145|22|70|21.46|22.96|2.06|0.00|144.20|1502.20|1607.20|0.00|0.00|144.20|144.20|-1358.00| +2451112|65253|17392|64935|1392098|4508|11671|10|262|22|14|51.86|91.27|73.01|0.00|1022.14|726.04|1277.78|30.66|0.00|1022.14|1052.80|296.10| +2451112|65253|16922|64935|1392098|4508|11671|10|190|22|88|28.00|29.68|18.99|0.00|1671.12|2464.00|2611.84|133.68|0.00|1671.12|1804.80|-792.88| +2451112|65253|11599|64935|1392098|4508|11671|10|161|22|66|5.01|5.01|3.10|0.00|204.60|330.66|330.66|6.13|0.00|204.60|210.73|-126.06| +2451112|65253|10474|64935|1392098|4508|11671|10|236|22|31|45.65|54.32|51.60|0.00|1599.60|1415.15|1683.92|0.00|0.00|1599.60|1599.60|184.45| +2452617|31683|7242|21669|1833048|6474|33053|10|189|23|37|54.82|55.91|0.55|18.31|20.35|2028.34|2068.67|0.06|18.31|2.04|2.10|-2026.30| +2452617|31683|11257|21669|1833048|6474|33053|10|142|23|64|29.95|45.52|8.64|0.00|552.96|1916.80|2913.28|0.00|0.00|552.96|552.96|-1363.84| +2452617|31683|12397|21669|1833048|6474|33053|10|106|23|80|78.73|103.13|20.62|0.00|1649.60|6298.40|8250.40|115.47|0.00|1649.60|1765.07|-4648.80| +2452617|31683|9093|21669|1833048|6474|33053|10|52|23|38|80.20|81.00|22.68|0.00|861.84|3047.60|3078.00|17.23|0.00|861.84|879.07|-2185.76| +2452617|31683|15403|21669|1833048|6474|33053|10|153|23|96|51.96|77.42|73.54|0.00|7059.84|4988.16|7432.32|352.99|0.00|7059.84|7412.83|2071.68| +2452617|31683|8181|21669|1833048|6474|33053|10|138|23|13|4.63|7.96|6.60|0.00|85.80|60.19|103.48|0.00|0.00|85.80|85.80|25.61| +2452617|31683|17631|21669|1833048|6474|33053|10|226|23|16|22.06|39.48|34.34|0.00|549.44|352.96|631.68|16.48|0.00|549.44|565.92|196.48| +2452617|31683|319|21669|1833048|6474|33053|10|80|23|86|66.36|104.18|59.38|0.00|5106.68|5706.96|8959.48|255.33|0.00|5106.68|5362.01|-600.28| +2452617|31683|11220|21669|1833048|6474|33053|10|277|23|91|71.30|89.12|36.53|0.00|3324.23|6488.30|8109.92|99.72|0.00|3324.23|3423.95|-3164.07| +2452617|31683|8413|21669|1833048|6474|33053|10|260|23|1|14.20|14.91|3.42|0.54|3.42|14.20|14.91|0.11|0.54|2.88|2.99|-11.32| +2452617|31683|9097|21669|1833048|6474|33053|10|145|23|81|72.51|122.54|121.31|0.00|9826.11|5873.31|9925.74|196.52|0.00|9826.11|10022.63|3952.80| +2452143|49413|2497|15069|576658|6247|49436|10|58|24|85|57.93|68.35|24.60|0.00|2091.00|4924.05|5809.75|62.73|0.00|2091.00|2153.73|-2833.05| +2452143|49413|4749|15069|576658|6247|49436|10|11|24|28|18.17|23.80|10.23|0.00|286.44|508.76|666.40|17.18|0.00|286.44|303.62|-222.32| +2452143|49413|6751|15069|576658|6247|49436|10|187|24|82|7.48|12.34|2.59|0.00|212.38|613.36|1011.88|0.00|0.00|212.38|212.38|-400.98| +2452143|49413|6043|15069|576658|6247|49436|10|280|24|1|33.41|59.80|29.30|0.00|29.30|33.41|59.80|0.00|0.00|29.30|29.30|-4.11| +2452143|49413|13303|15069|576658|6247|49436|10|101|24|97|94.48|172.89|157.32|0.00|15260.04|9164.56|16770.33|152.60|0.00|15260.04|15412.64|6095.48| +2452143|49413|7375|15069|576658|6247|49436|10|64|24|97|78.55|146.88|73.44|0.00|7123.68|7619.35|14247.36|356.18|0.00|7123.68|7479.86|-495.67| +2452143|49413|10265|15069|576658|6247|49436|10|231|24|93|12.03|23.09|11.31|0.00|1051.83|1118.79|2147.37|42.07|0.00|1051.83|1093.90|-66.96| +2452143|49413|1795|15069|576658|6247|49436|10|264|24|21|76.67|138.00|113.16|0.00|2376.36|1610.07|2898.00|190.10|0.00|2376.36|2566.46|766.29| +2452143|49413|11551|15069|576658|6247|49436|10|17|24|48|30.80|56.05|0.56|0.00|26.88|1478.40|2690.40|1.88|0.00|26.88|28.76|-1451.52| +2452143|49413|5653|15069|576658|6247|49436|10|119|24|92|64.99|67.58|27.03|223.80|2486.76|5979.08|6217.36|181.03|223.80|2262.96|2443.99|-3716.12| +2452143|49413|407|15069|576658|6247|49436|10|56|24|53|98.05|104.91|65.04|0.00|3447.12|5196.65|5560.23|241.29|0.00|3447.12|3688.41|-1749.53| +2452143|49413|1389|15069|576658|6247|49436|10|269|24|72|60.01|118.81|81.97|0.00|5901.84|4320.72|8554.32|59.01|0.00|5901.84|5960.85|1581.12| +2452143|49413|3103|15069|576658|6247|49436|10|235|24|73|44.96|56.20|12.92|0.00|943.16|3282.08|4102.60|47.15|0.00|943.16|990.31|-2338.92| +2452143|49413|4873|15069|576658|6247|49436|10|103|24|41|40.34|73.82|3.69|0.00|151.29|1653.94|3026.62|13.61|0.00|151.29|164.90|-1502.65| +2452143|49413|16483|15069|576658|6247|49436|10|291|24|89|13.84|14.53|14.09|100.32|1254.01|1231.76|1293.17|57.68|100.32|1153.69|1211.37|-78.07| +2452143|49413|4425|15069|576658|6247|49436|10|218|24|57|29.31|39.86|5.18|0.00|295.26|1670.67|2272.02|0.00|0.00|295.26|295.26|-1375.41| +2450920|36458|7874|70838|608693|5395|8050|10|243|25|65|2.75|4.26|2.34|31.94|152.10|178.75|276.90|7.20|31.94|120.16|127.36|-58.59| +2450920|36458|9472|70838|608693|5395|8050|10|148|25|48|4.97|7.70|2.69|0.00|129.12|238.56|369.60|7.74|0.00|129.12|136.86|-109.44| +2450920|36458|4880|70838|608693|5395|8050|10|189|25|29|15.35|19.18|0.57|13.88|16.53|445.15|556.22|0.00|13.88|2.65|2.65|-442.50| +2450920|36458|6955|70838|608693|5395|8050|10|150|25|40|87.12|107.15|40.71|0.00|1628.40|3484.80|4286.00|113.98|0.00|1628.40|1742.38|-1856.40| +2450920|36458|2150|70838|608693|5395|8050|10|270|25|100|67.24|86.73|55.50|0.00|5550.00|6724.00|8673.00|388.50|0.00|5550.00|5938.50|-1174.00| +2450920||14635|||||10||25|68|45.79|50.82|19.81|||3113.72|3455.76|80.82||||| +2450920|36458|14488|70838|608693|5395|8050|10|243|25|26|68.17|94.75|62.53|0.00|1625.78|1772.42|2463.50|65.03|0.00|1625.78|1690.81|-146.64| +2450920|36458|3454|70838|608693|5395|8050|10|9|25|100|1.61|2.83|0.79|73.47|79.00|161.00|283.00|0.05|73.47|5.53|5.58|-155.47| +2450920|36458|10159|70838|608693|5395|8050|10|110|25|24|76.64|96.56|5.79|84.76|138.96|1839.36|2317.44|0.00|84.76|54.20|54.20|-1785.16| +2450920|36458|17752|70838|608693|5395|8050|10|142|25|55|11.49|18.38|11.39|0.00|626.45|631.95|1010.90|0.00|0.00|626.45|626.45|-5.50| +2450920|36458|1333|70838|608693|5395|8050|10|93|25|55|30.82|51.46|26.75|0.00|1471.25|1695.10|2830.30|102.98|0.00|1471.25|1574.23|-223.85| +2450920|36458|17000|70838|608693|5395|8050|10|68|25|40|89.34|173.31|69.32|0.00|2772.80|3573.60|6932.40|83.18|0.00|2772.80|2855.98|-800.80| +2450920|36458|5954||608693|||10|220|25|34|76.57||20.67||702.78|2603.38||||702.78|709.80|-1900.60| +2450920|36458|2608|70838|608693|5395|8050|10|129|25|76|87.75|106.17|46.71|0.00|3549.96|6669.00|8068.92|177.49|0.00|3549.96|3727.45|-3119.04| +2452253|63557|11895|15005|179569|1380|23944|10|209|26|77|36.85|60.06|13.81|0.00|1063.37|2837.45|4624.62|95.70|0.00|1063.37|1159.07|-1774.08| +2452253|63557|15039|15005|179569|1380|23944|10|265|26|34|22.65|42.58|16.60|0.00|564.40|770.10|1447.72|50.79|0.00|564.40|615.19|-205.70| +2452253|63557|5721|15005|179569|1380|23944|10|92|26|81|74.96|95.19|82.81|0.00|6707.61|6071.76|7710.39|335.38|0.00|6707.61|7042.99|635.85| +2452253|63557|5385|15005|179569|1380|23944|10|59|26|97|51.89|86.65|40.72|0.00|3949.84|5033.33|8405.05|0.00|0.00|3949.84|3949.84|-1083.49| +2452253|63557|12851|15005|179569|1380|23944|10|217|26|56|14.02|26.63|4.26|0.00|238.56|785.12|1491.28|19.08|0.00|238.56|257.64|-546.56| +2452253|63557|6647|15005|179569|1380|23944|10|85|26|64|57.04|91.83|0.00|0.00|0.00|3650.56|5877.12|0.00|0.00|0.00|0.00|-3650.56| +2452253|63557|5053|15005|179569|1380|23944|10|200|26|4|19.63|33.56|22.14|0.00|88.56|78.52|134.24|7.08|0.00|88.56|95.64|10.04| +2452253|63557|7337|15005|179569|1380|23944|10|292|26|45|37.59|50.74|38.05|0.00|1712.25|1691.55|2283.30|0.00|0.00|1712.25|1712.25|20.70| +2452253|63557|1989|15005|179569|1380|23944|10|199|26|26|83.31|99.97|36.98|0.00|961.48|2166.06|2599.22|67.30|0.00|961.48|1028.78|-1204.58| +|63557|9679|15005|||23944||114|26|18|77.54|144.22||||1395.72|2595.96|||311.40|326.97|-1084.32| +2451942|67151|12237|32780|1342441|102|48163|1|6|27|89|73.90|138.19|103.64|0.00|9223.96|6577.10|12298.91|737.91|0.00|9223.96|9961.87|2646.86| +2451942|67151|2671|32780|1342441|102|48163|1|275|27|92|4.35|5.17|4.13|0.00|379.96|400.20|475.64|15.19|0.00|379.96|395.15|-20.24| +2451942|67151|15025|32780|1342441|102|48163|1|152|27|26|35.56|37.69|12.06|0.00|313.56|924.56|979.94|28.22|0.00|313.56|341.78|-611.00| +2451942|67151|2137|32780|1342441|102|48163|1|11|27|96|3.07|5.12|4.55|0.00|436.80|294.72|491.52|0.00|0.00|436.80|436.80|142.08| +2451942|67151|16029|32780|1342441|102|48163|1|243|27|59|2.11|3.22|3.22|0.00|189.98|124.49|189.98|17.09|0.00|189.98|207.07|65.49| +2451942|67151|7139|32780|1342441|102|48163|1|156|27|59|6.17|10.11|6.26|0.00|369.34|364.03|596.49|18.46|0.00|369.34|387.80|5.31| +2451942|67151|11441|32780|1342441|102|48163|1|63|27|15|14.45|27.31|2.18|0.00|32.70|216.75|409.65|2.61|0.00|32.70|35.31|-184.05| +2451942|67151|10757|32780|1342441|102|48163|1|142|27|15|8.70|12.18|3.89|0.00|58.35|130.50|182.70|4.66|0.00|58.35|63.01|-72.15| +2451942|67151|1305|32780|1342441|102|48163|1|255|27|44|8.35|13.86|11.91|0.00|524.04|367.40|609.84|0.00|0.00|524.04|524.04|156.64| +2451942|67151|12749|32780|1342441|102|48163|1|174|27|31|80.27|115.58|85.52|0.00|2651.12|2488.37|3582.98|106.04|0.00|2651.12|2757.16|162.75| +2451942|67151|11509|32780|1342441|102|48163|1|219|27|65|80.34|138.98|50.03|0.00|3251.95|5222.10|9033.70|195.11|0.00|3251.95|3447.06|-1970.15| +2451942|67151|16419|32780|1342441|102|48163|1|125|27|65|80.10|155.39|113.43|0.00|7372.95|5206.50|10100.35|516.10|0.00|7372.95|7889.05|2166.45| +2451942|67151|13885|32780|1342441|102|48163|1|103|27|66|40.62|53.61|43.42|0.00|2865.72|2680.92|3538.26|57.31|0.00|2865.72|2923.03|184.80| +2451942|67151|8167|32780|1342441|102|48163|1|214|27|28|38.83|69.89|37.74|0.00|1056.72|1087.24|1956.92|21.13|0.00|1056.72|1077.85|-30.52| +2451942|67151|5831|32780|1342441|102|48163|1|196|27|61|8.79|13.62|2.72|0.00|165.92|536.19|830.82|4.97|0.00|165.92|170.89|-370.27| +2451942|67151|16767|32780|1342441|102|48163|1|241|27|60|68.33|73.11|28.51|0.00|1710.60|4099.80|4386.60|34.21|0.00|1710.60|1744.81|-2389.20| +2452125|68718|6411|20087|1610670|453|31836|4|268|28|3|67.26|112.99|76.83|0.00|230.49|201.78|338.97|4.60|0.00|230.49|235.09|28.71| +2452125|68718|2817|20087|1610670|453|31836|4|100|28|8|98.75|190.58|83.85|429.31|670.80|790.00|1524.64|0.00|429.31|241.49|241.49|-548.51| +2452125|68718|8407|20087|1610670|453|31836|4|286|28|14|95.01|132.06|15.84|0.00|221.76|1330.14|1848.84|15.52|0.00|221.76|237.28|-1108.38| +2452125|68718|4483|20087|1610670|453|31836|4|285|28|78|73.90|141.14|117.14|0.00|9136.92|5764.20|11008.92|456.84|0.00|9136.92|9593.76|3372.72| +2452125|68718|7965|20087|1610670|453|31836|4|275|28|93|77.74|136.04|53.05|296.01|4933.65|7229.82|12651.72|0.00|296.01|4637.64|4637.64|-2592.18| +2452125|68718|2967|20087|1610670|453|31836|4|227|28|29|47.87|52.17|3.13|0.00|90.77|1388.23|1512.93|0.90|0.00|90.77|91.67|-1297.46| +2452125|68718|1807|20087|1610670|453|31836|4|192|28|98|78.91|133.35|132.01|0.00|12936.98|7733.18|13068.30|776.21|0.00|12936.98|13713.19|5203.80| +2452125|68718|5437|20087|1610670|453|31836|4|204|28|15|7.49|8.38|7.20|0.00|108.00|112.35|125.70|6.48|0.00|108.00|114.48|-4.35| +2452125|68718|10295|20087|1610670|453|31836|4|231|28|13|31.83|41.37|7.44|0.00|96.72|413.79|537.81|8.70|0.00|96.72|105.42|-317.07| +2452125|68718|8043|20087|1610670|453|31836|4|196|28|58|60.26|69.90|47.53|0.00|2756.74|3495.08|4054.20|137.83|0.00|2756.74|2894.57|-738.34| +2451121|45001|7654|10631|1267519|54|22989|7|159|29|20|98.14|171.74|171.74|1270.87|3434.80|1962.80|3434.80|0.00|1270.87|2163.93|2163.93|201.13| +2451121|45001|12223|10631|1267519|54|22989|7|56|29|59|12.89|14.05|0.84|33.20|49.56|760.51|828.95|1.47|33.20|16.36|17.83|-744.15| +2451121|45001|15085|10631|||22989|7||29|40|||2.93|0.00|117.20|||4.68|0.00|117.20||-297.60| +2451121|45001|3740|10631|1267519|54|22989|7|110|29|5|90.13|104.55|21.95|0.00|109.75|450.65|522.75|9.87|0.00|109.75|119.62|-340.90| +2451121||1363|||54|22989|7||29|75||97.65|3.90|0.00|292.50||7323.75||0.00|292.50|310.05|| +2451121|45001|12068|10631|1267519|54|22989|7|188|29|37|80.75|95.28|1.90|0.00|70.30|2987.75|3525.36|6.32|0.00|70.30|76.62|-2917.45| +2451121|45001|13340|10631|1267519|54|22989|7|142|29|21|40.50|49.00|29.89|0.00|627.69|850.50|1029.00|50.21|0.00|627.69|677.90|-222.81| +2451121|45001|2930|10631|1267519|54|22989|7|80|29|23|64.78|108.18|27.04|0.00|621.92|1489.94|2488.14|55.97|0.00|621.92|677.89|-868.02| +2451121|45001|15782|10631|1267519|54|22989|7|48|29|53|57.11|98.22|10.80|0.00|572.40|3026.83|5205.66|0.00|0.00|572.40|572.40|-2454.43| +2451121|45001|20|10631|1267519|54|22989|7|240|29|18|66.26|83.48|4.17|0.00|75.06|1192.68|1502.64|3.75|0.00|75.06|78.81|-1117.62| +2451121|45001|15626|10631|||||266|29||17.61||||467.40|1003.77|1374.84|9.34|||476.74|-536.37| +2451121|45001|9458|10631|1267519|54|22989|7|169|29|33|52.33|93.14|88.48|0.00|2919.84|1726.89|3073.62|29.19|0.00|2919.84|2949.03|1192.95| +2451121|45001|10795|10631|1267519|54|22989|7|32|29|33|68.24|116.69|57.17|1056.50|1886.61|2251.92|3850.77|66.40|1056.50|830.11|896.51|-1421.81| +2451121||13693|||||||29||95.63|184.56||0.00|0.00|4398.98|8489.76||0.00|||-4398.98| +2451390|52042|8666|45937|499127|7164|13554|7|36|30|21|64.00|81.28|29.26|0.00|614.46|1344.00|1706.88|36.86|0.00|614.46|651.32|-729.54| +2451390|52042|12572|45937|499127|7164|13554|7|270|30|33|61.96|67.53|14.85|210.72|490.05|2044.68|2228.49|19.55|210.72|279.33|298.88|-1765.35| +2451390|52042|12670|45937|499127|7164|13554|7|62|30|20|6.44|10.23|0.51|0.00|10.20|128.80|204.60|0.71|0.00|10.20|10.91|-118.60| +2451390|52042|3506|45937|499127|7164|13554|7|261|30|15|16.31|27.40|10.13|0.00|151.95|244.65|411.00|12.15|0.00|151.95|164.10|-92.70| +2451390|52042|6752|45937|499127|7164|13554|7|189|30|69|40.80|57.12|19.99|0.00|1379.31|2815.20|3941.28|0.00|0.00|1379.31|1379.31|-1435.89| +2451390|52042|5431|45937|499127|7164|13554|7|150|30|77|52.37|82.22|79.75|2701.93|6140.75|4032.49|6330.94|103.16|2701.93|3438.82|3541.98|-593.67| +2451390|52042|7870|45937|499127|7164|13554|7|256|30|7|4.51|6.85|6.02|18.12|42.14|31.57|47.95|0.00|18.12|24.02|24.02|-7.55| +2451390|52042|13579|45937|499127|7164|13554|7|230|30|75|62.71|77.76|9.33|0.00|699.75|4703.25|5832.00|27.99|0.00|699.75|727.74|-4003.50| +2451390|52042|3928|45937|499127|7164|13554|7|4|30|87|27.01|52.66|29.48|0.00|2564.76|2349.87|4581.42|179.53|0.00|2564.76|2744.29|214.89| +2451390|52042|1951|45937|499127|7164|13554|7|16|30|59|17.14|24.68|21.22|813.78|1251.98|1011.26|1456.12|35.05|813.78|438.20|473.25|-573.06| +2451390|52042|17348|45937|499127|7164|13554|7|57|30|62|88.74|169.49|74.57|1248.30|4623.34|5501.88|10508.38|101.25|1248.30|3375.04|3476.29|-2126.84| +2451390|52042|217|45937|499127|7164|13554|7|51|30|91|52.03|95.73|9.57|365.76|870.87|4734.73|8711.43|35.35|365.76|505.11|540.46|-4229.62| +2451390|52042|14848|45937|499127|7164|13554|7|78|30|62|64.03|103.08|41.23|1150.31|2556.26|3969.86|6390.96|28.11|1150.31|1405.95|1434.06|-2563.91| +2451390|52042|17875|45937|499127|7164|13554|7|90|30|78|2.91|4.56|0.41|0.00|31.98|226.98|355.68|0.95|0.00|31.98|32.93|-195.00| +2451390|52042|3238|45937|499127|7164|13554|7|148|30|16|9.84|15.84|8.55|0.00|136.80|157.44|253.44|1.36|0.00|136.80|138.16|-20.64| +2452187|71970|7513|3748|596752|4156|8760|7|113|31|82|44.95|72.36|42.69|0.00|3500.58|3685.90|5933.52|140.02|0.00|3500.58|3640.60|-185.32| +2452187|71970|14575|3748|596752|4156|8760|7|134|31|97|59.90|119.80|112.61|0.00|10923.17|5810.30|11620.60|218.46|0.00|10923.17|11141.63|5112.87| +2452187|71970|6617|3748|596752|4156|8760|7|75|31|11|86.78|91.98|57.94|0.00|637.34|954.58|1011.78|25.49|0.00|637.34|662.83|-317.24| +2452187|71970|15341|3748|596752|4156|8760|7|265|31|31|16.15|31.16|29.60|0.00|917.60|500.65|965.96|18.35|0.00|917.60|935.95|416.95| +2452187|71970|14727|3748|596752|4156|8760|7|134|31|41|48.10|53.87|8.08|0.00|331.28|1972.10|2208.67|29.81|0.00|331.28|361.09|-1640.82| +2452187|71970|913|3748|596752|4156|8760|7|133|31|54|79.11|93.34|59.73|2386.81|3225.42|4271.94|5040.36|67.08|2386.81|838.61|905.69|-3433.33| +2452187|71970|15411|3748|596752|4156|8760|7|60|31|53|47.64|61.45|30.11|973.45|1595.83|2524.92|3256.85|12.44|973.45|622.38|634.82|-1902.54| +2452187|71970|4963|3748|596752|4156|8760|7|103|31|67|56.37|59.18|37.28|1873.32|2497.76|3776.79|3965.06|0.00|1873.32|624.44|624.44|-3152.35| +2452187|71970|16251|3748|596752|4156|8760|7|65|31|51|91.49|182.06|138.36|0.00|7056.36|4665.99|9285.06|211.69|0.00|7056.36|7268.05|2390.37| +2452187|71970|6917|3748|596752|4156|8760|7|46|31|4|49.76|94.04|51.72|0.00|206.88|199.04|376.16|14.48|0.00|206.88|221.36|7.84| +2452187|71970|11739|3748|596752|4156|8760|7|83|31|95|6.99|11.32|5.09|0.00|483.55|664.05|1075.40|43.51|0.00|483.55|527.06|-180.50| +2451840|45877|4339|90120|1101094|6468|1395|4|107|32|6|88.27|139.46|26.49|0.00|158.94|529.62|836.76|7.94|0.00|158.94|166.88|-370.68| +2451840|45877|9683||1101094|6468|1395|4||32|26||149.26|2.98||77.48|2425.54||1.54||77.48||-2348.06| +2451840|45877|12134|90120|1101094|6468|1395|4|212|32|21|51.01|63.25|30.99|0.00|650.79|1071.21|1328.25|52.06|0.00|650.79|702.85|-420.42| +2451840||4537|90120||||4|202|32|22|65.72|69.00|57.27|0.00|1259.94||1518.00||0.00|1259.94||-185.90| +2451840|45877|4808|||6468||||32||57.01||||69.72|798.14|1396.64|||69.72|73.90|| +2451840|45877|5798|90120|1101094|6468|1395|4|40|32|87|46.23|91.99|55.19|4417.40|4801.53|4022.01|8003.13|11.52|4417.40|384.13|395.65|-3637.88| +2451840|45877|17659|90120|1101094|6468|1395|4|172|32|51|23.88|31.04|29.79|0.00|1519.29|1217.88|1583.04|45.57|0.00|1519.29|1564.86|301.41| +2451840|45877|15001|90120|1101094|6468|1395|4|181|32|57|30.07|54.42|23.94|0.00|1364.58|1713.99|3101.94|13.64|0.00|1364.58|1378.22|-349.41| +2451840|45877|11005|90120|1101094|6468|1395|4|174|32|46|51.48|79.27|72.92|1207.55|3354.32|2368.08|3646.42|21.46|1207.55|2146.77|2168.23|-221.31| +2451840|45877|15644|90120|1101094|6468|1395|4|123|32|34|80.54|131.28|89.27|0.00|3035.18|2738.36|4463.52|91.05|0.00|3035.18|3126.23|296.82| +2451840|45877|16421|90120|1101094|6468|1395|4|77|32|74|89.89|160.90|152.85|0.00|11310.90|6651.86|11906.60|113.10|0.00|11310.90|11424.00|4659.04| +2451840|45877|2095|90120|1101094|6468|1395|4|282|32|34|89.33|151.86|66.81|0.00|2271.54|3037.22|5163.24|0.00|0.00|2271.54|2271.54|-765.68| +2451840|45877|7547|90120|1101094|6468|1395|4|194|32|24|43.33|68.46|34.23|0.00|821.52|1039.92|1643.04|16.43|0.00|821.52|837.95|-218.40| +2451840|45877|2887|90120|1101094|6468|1395|4|108|32|8|48.71|96.93|32.95|0.00|263.60|389.68|775.44|15.81|0.00|263.60|279.41|-126.08| +2451840|45877|1115|90120|1101094|6468|1395|4|275|32|61|97.03|172.71|63.90|0.00|3897.90|5918.83|10535.31|194.89|0.00|3897.90|4092.79|-2020.93| +2451840|45877|11348|90120|1101094|6468|1395|4|274|32|41|55.14|57.34|51.03|753.20|2092.23|2260.74|2350.94|107.12|753.20|1339.03|1446.15|-921.71| +2451110|42673|7300|26724|445739|1201|4616|4|203|33|3|3.13|4.00|2.48|0.00|7.44|9.39|12.00|0.14|0.00|7.44|7.58|-1.95| +2451110|42673|15478|26724|445739|1201|4616|4|273|33|22|95.96|149.69|53.88|0.00|1185.36|2111.12|3293.18|82.97|0.00|1185.36|1268.33|-925.76| +2451110|42673|9649|26724|445739|1201|4616|4|233|33|36|18.91|31.01|22.63|0.00|814.68|680.76|1116.36|57.02|0.00|814.68|871.70|133.92| +2451110|42673|12964|26724|445739|1201|4616|4|266|33|80|83.86|114.04|25.08|0.00|2006.40|6708.80|9123.20|180.57|0.00|2006.40|2186.97|-4702.40| +2451110|42673|14692|26724|445739|1201|4616|4|190|33|93|56.78|107.88|90.61|0.00|8426.73|5280.54|10032.84|252.80|0.00|8426.73|8679.53|3146.19| +2451110|42673|12760|26724|445739|1201|4616|4|256|33|54|48.97|55.33|39.83|1161.44|2150.82|2644.38|2987.82|39.57|1161.44|989.38|1028.95|-1655.00| +2451110|42673|11119|26724|445739|1201|4616|4|242|33|92|3.49|3.69|1.95|0.00|179.40|321.08|339.48|7.17|0.00|179.40|186.57|-141.68| +2451110|42673|11756|26724|445739|1201|4616|4|121|33|26|58.87|89.48|57.26|0.00|1488.76|1530.62|2326.48|89.32|0.00|1488.76|1578.08|-41.86| +2451110|42673|14125|26724|445739|1201|4616|4|206|33|66|44.03|46.23|16.64|109.82|1098.24|2905.98|3051.18|19.76|109.82|988.42|1008.18|-1917.56| +2451110|42673|4798|26724|445739|1201|4616|4|178|33|27|28.56|37.98|13.67|350.63|369.09|771.12|1025.46|0.00|350.63|18.46|18.46|-752.66| +2451110|42673|14158|26724|445739|1201|4616|4|26|33|82|48.07|74.50|23.84|0.00|1954.88|3941.74|6109.00|0.00|0.00|1954.88|1954.88|-1986.86| +2451110|42673|12643|26724|445739|1201|4616|4|77|33|89|35.74|46.10|45.63|0.00|4061.07|3180.86|4102.90|81.22|0.00|4061.07|4142.29|880.21| +2451110|42673|10376|26724|445739|1201|4616|4|296|33|21|55.09|110.18|15.42|0.00|323.82|1156.89|2313.78|29.14|0.00|323.82|352.96|-833.07| +2451342|71555|9325|47971|1238972|6773|30574|7|173|34|3|92.35|109.89|48.35|37.71|145.05|277.05|329.67|6.44|37.71|107.34|113.78|-169.71| +2451342|71555|9766|47971|1238972|6773|30574|7|86|34|83|68.57|103.54|70.40|0.00|5843.20|5691.31|8593.82|467.45|0.00|5843.20|6310.65|151.89| +2451342|71555|12512|47971|1238972|6773|30574|7|63|34|60|40.48|78.93|22.10|0.00|1326.00|2428.80|4735.80|39.78|0.00|1326.00|1365.78|-1102.80| +2451342|71555|1717|47971|1238972|6773|30574|7|289|34|53|99.68|128.58|83.57|0.00|4429.21|5283.04|6814.74|265.75|0.00|4429.21|4694.96|-853.83| +2451342|71555|6193|47971|1238972|6773|30574|7|13|34|61|54.55|102.55|34.86|276.43|2126.46|3327.55|6255.55|166.50|276.43|1850.03|2016.53|-1477.52| +2451342||12290|47971|1238972|6773||7||34|53|88.61|108.99|||||5776.47|60.03||750.48||-3945.85| +2451342|71555|1526|47971|1238972|6773|30574|7|237|34|91|78.12|90.61|90.61|0.00|8245.51|7108.92|8245.51|82.45|0.00|8245.51|8327.96|1136.59| +2451342|71555|12016|47971|1238972|6773|30574|7|276|34|42|42.44|69.17|38.73|0.00|1626.66|1782.48|2905.14|146.39|0.00|1626.66|1773.05|-155.82| +2451342|71555|16324|47971|1238972|6773|30574|7|273|34|30|37.27|57.39|16.06|0.00|481.80|1118.10|1721.70|38.54|0.00|481.80|520.34|-636.30| +2451342|71555|4118|47971|1238972|6773|30574|7|121|34|88|38.38|74.84|71.84|0.00|6321.92|3377.44|6585.92|126.43|0.00|6321.92|6448.35|2944.48| +2451342|71555|5197|47971|1238972|6773|30574|7|190|34|63|13.50|26.46|17.19|0.00|1082.97|850.50|1666.98|32.48|0.00|1082.97|1115.45|232.47| +2451342|71555|2312|47971|1238972|6773|30574|7|231|34|6|51.40|78.64|20.44|0.00|122.64|308.40|471.84|7.35|0.00|122.64|129.99|-185.76| +||13814|47971||6773|30574|7|286|34|20|22.82||6.74||134.80|||||||| +2451342|71555|5449|47971|1238972|6773|30574|7|208|34|9|21.24|28.03|4.48|0.00|40.32|191.16|252.27|3.62|0.00|40.32|43.94|-150.84| +2452150|37970|15619|93958|616532|3106|34927|8|236|35|45|90.28|102.01|40.80|0.00|1836.00|4062.60|4590.45|36.72|0.00|1836.00|1872.72|-2226.60| +2452150|37970|17451|93958|616532|3106|34927|8|258|35|7|45.66|59.35|57.56|0.00|402.92|319.62|415.45|12.08|0.00|402.92|415.00|83.30| +2452150|37970|2377|93958|616532|3106|34927|8|2|35|52|98.03|140.18|2.80|90.27|145.60|5097.56|7289.36|0.55|90.27|55.33|55.88|-5042.23| +2452150|37970|5179|93958|616532|3106|34927|8|212|35|83|90.54|120.41|2.40|0.00|199.20|7514.82|9994.03|0.00|0.00|199.20|199.20|-7315.62| +2452150|37970|15757|93958|616532|3106|34927|8|68|35|9|14.83|27.43|0.27|0.00|2.43|133.47|246.87|0.19|0.00|2.43|2.62|-131.04| +2452150|37970|3667|93958|616532|3106|34927|8|250|35|97|59.31|60.49|48.99|3136.33|4752.03|5753.07|5867.53|32.31|3136.33|1615.70|1648.01|-4137.37| +2452150|37970|17341|93958|616532|3106|34927|8|287|35|92|59.48|116.58|68.78|0.00|6327.76|5472.16|10725.36|569.49|0.00|6327.76|6897.25|855.60| +2452150|37970|4325|93958|616532|3106|34927|8|25|35|56|67.43|126.76|115.35|0.00|6459.60|3776.08|7098.56|387.57|0.00|6459.60|6847.17|2683.52| +2452150|37970|11635|93958|616532|3106|34927|8|109|35|87|92.02|175.75|49.21|0.00|4281.27|8005.74|15290.25|342.50|0.00|4281.27|4623.77|-3724.47| +2452150|37970|14239|93958|616532|3106|34927|8|171|35|55|8.27|10.08|1.10|0.00|60.50|454.85|554.40|0.60|0.00|60.50|61.10|-394.35| +2452150|37970|11661||616532|3106|34927|8||35|81|||27.75|||||89.91|||2337.66|223.56| +2452150||411|93958|616532|3106||||35|51||73.41||0.00|1647.30|1940.04||131.78|0.00|||-292.74| +2452150|37970|17365|93958|616532|3106|34927|8|202|35|65|76.20|104.39|69.94|0.00|4546.10|4953.00|6785.35|363.68|0.00|4546.10|4909.78|-406.90| +2452274|74196|17659|72008|631970|1532|24694|8|286|36|91|44.83|73.52|25.73|0.00|2341.43|4079.53|6690.32|140.48|0.00|2341.43|2481.91|-1738.10| +2452274|74196|15001|72008|631970|1532|24694|8|159|36|54|16.24|26.14|22.21|0.00|1199.34|876.96|1411.56|95.94|0.00|1199.34|1295.28|322.38| +2452274|74196|11005|72008|631970|1532|24694|8|127|36|49|70.60|113.66|56.83|0.00|2784.67|3459.40|5569.34|83.54|0.00|2784.67|2868.21|-674.73| +2452274|74196|15645|72008|631970|1532|24694|8|136|36|23|32.35|34.93|4.54|0.00|104.42|744.05|803.39|7.30|0.00|104.42|111.72|-639.63| +2452274|74196|16421|72008|631970|1532|24694|8|144|36|25|69.67|104.50|77.33|0.00|1933.25|1741.75|2612.50|154.66|0.00|1933.25|2087.91|191.50| +2452274|74196|2095|72008|631970|1532|24694|8|147|36|43|91.17|165.01|57.75|0.00|2483.25|3920.31|7095.43|223.49|0.00|2483.25|2706.74|-1437.06| +2452274|74196|7547|72008|631970|1532|24694|8|240|36|46|8.04|15.83|10.60|0.00|487.60|369.84|728.18|39.00|0.00|487.60|526.60|117.76| +2452274|74196|2887|72008|631970|1532|24694|8|97|36|31|24.53|47.09|14.12|0.00|437.72|760.43|1459.79|26.26|0.00|437.72|463.98|-322.71| +2452274|74196|1115|72008|631970|1532|24694|8|45|36|80|11.13|12.46|6.72|198.91|537.60|890.40|996.80|10.16|198.91|338.69|348.85|-551.71| +2452274|74196|11349|72008|631970|1532|24694|8|65|36|80|58.17|94.23|15.07|0.00|1205.60|4653.60|7538.40|36.16|0.00|1205.60|1241.76|-3448.00| +2452274|74196|17561|72008|631970|1532|24694|8|115|36|16|82.46|157.49|17.32|0.00|277.12|1319.36|2519.84|13.85|0.00|277.12|290.97|-1042.24| +2452087|61560|10715|96252|1823714|4423|24685|10|116|37|52|89.22|133.83|111.07|0.00|5775.64|4639.44|6959.16|115.51|0.00|5775.64|5891.15|1136.20| +2452087|61560|16971|96252|1823714|4423|24685|10|236|37|12|53.97|85.27|15.34|0.00|184.08|647.64|1023.24|0.00|0.00|184.08|184.08|-463.56| +2452087|61560|10929|96252|1823714|4423|24685|10|240|37|88|65.45|80.50|47.49|0.00|4179.12|5759.60|7084.00|292.53|0.00|4179.12|4471.65|-1580.48| +2452087|61560|2997|96252|1823714|4423|24685|10|92|37|94|85.67|143.92|100.74|0.00|9469.56|8052.98|13528.48|568.17|0.00|9469.56|10037.73|1416.58| +2452087|61560|13171|96252|1823714|4423|24685|10|150|37|6|84.14|159.86|110.30|0.00|661.80|504.84|959.16|26.47|0.00|661.80|688.27|156.96| +2452087|61560|7283|96252|1823714|4423|24685|10|13|37|87|54.25|60.76|1.21|0.00|105.27|4719.75|5286.12|4.21|0.00|105.27|109.48|-4614.48| +2452087|61560|15337|96252|1823714|4423|24685|10|217|37|62|16.64|32.94|9.88|0.00|612.56|1031.68|2042.28|24.50|0.00|612.56|637.06|-419.12| +2452087|61560|17125||1823714||24685|10||37||||74.97|0.00||5369.06||173.93|0.00||4522.19|| +2451476|51103|9710|16409|414090|2171|25452|8|211|38|7|82.77|91.04|54.62|275.28|382.34|579.39|637.28|2.14|275.28|107.06|109.20|-472.33| +2451476|51103|6220|16409|414090|2171|25452|8|265|38|98|14.54|17.88|10.54|733.37|1032.92|1424.92|1752.24|5.99|733.37|299.55|305.54|-1125.37| +2451476|51103|7784|16409|414090|2171|25452|8|102|38|56|31.89|37.63|24.83|889.90|1390.48|1785.84|2107.28|0.00|889.90|500.58|500.58|-1285.26| +2451476|51103|10441|16409|414090|2171|25452|8|55|38|62|80.37|114.12|59.34|0.00|3679.08|4982.94|7075.44|36.79|0.00|3679.08|3715.87|-1303.86| +2451476|51103|2164|16409|414090|2171|25452|8|20|38|17|72.04|105.17|7.36|111.35|125.12|1224.68|1787.89|0.55|111.35|13.77|14.32|-1210.91| +||757|||2171||8||38|2||||0.00||190.42|239.92|6.38|0.00|91.16|97.54|| +2451476|51103|8870|16409|414090|2171|25452|8|33|38|15|46.69|85.90|10.30|0.00|154.50|700.35|1288.50|12.36|0.00|154.50|166.86|-545.85| +2451476|51103|3439|16409|414090|2171|25452|8|100|38|84|11.71|20.02|10.41|0.00|874.44|983.64|1681.68|43.72|0.00|874.44|918.16|-109.20| +2451476|51103|7018|16409|414090|2171|25452|8|115|38|15|69.78|133.27|129.27|0.00|1939.05|1046.70|1999.05|96.95|0.00|1939.05|2036.00|892.35| +2451476|51103|5113|16409|414090|2171|25452|8|236|38|73|50.59|84.99|79.89|0.00|5831.97|3693.07|6204.27|291.59|0.00|5831.97|6123.56|2138.90| +2451476|51103|4154|16409|414090|2171|25452|8|12|38|35|10.28|14.49|3.33|0.00|116.55|359.80|507.15|8.15|0.00|116.55|124.70|-243.25| +2451476|51103|15698|16409|414090|2171|25452|8|38|38|57|11.40|15.16|12.58|0.00|717.06|649.80|864.12|0.00|0.00|717.06|717.06|67.26| +2451874|48754|3476|58896|1112127|5358|8989|10|163|39|73|80.57|132.94|130.28|0.00|9510.44|5881.61|9704.62|95.10|0.00|9510.44|9605.54|3628.83| +2451874|48754|7697|58896|1112127|5358|8989|10|89|39|24|44.89|79.45|70.71|0.00|1697.04|1077.36|1906.80|152.73|0.00|1697.04|1849.77|619.68| +2451874|48754|4190|58896|1112127|5358|8989|10|288|39|86|35.56|37.33|29.49|0.00|2536.14|3058.16|3210.38|101.44|0.00|2536.14|2637.58|-522.02| +2451874|48754|386|58896|1112127|5358|8989|10|258|39|89|28.08|44.08|36.58|0.00|3255.62|2499.12|3923.12|260.44|0.00|3255.62|3516.06|756.50| +2451874|48754|8411|58896|1112127|5358|8989|10|226|39|96|35.69|54.60|50.23|0.00|4822.08|3426.24|5241.60|241.10|0.00|4822.08|5063.18|1395.84| +2451874|48754|7097|58896|1112127|5358|8989|10|186|39|78|33.10|51.96|27.53|0.00|2147.34|2581.80|4052.88|0.00|0.00|2147.34|2147.34|-434.46| +2451874|48754|1598|58896|1112127|5358|8989|10|254|39|64|44.63|54.44|15.24|0.00|975.36|2856.32|3484.16|48.76|0.00|975.36|1024.12|-1880.96| +2451874|48754|8078|58896|1112127|5358|8989|10|198|39|54|73.60|113.34|73.67|1352.58|3978.18|3974.40|6120.36|183.79|1352.58|2625.60|2809.39|-1348.80| +2451874|48754|4957|58896|1112127|5358|8989|10|72|39|24|16.10|22.37|10.96|0.00|263.04|386.40|536.88|5.26|0.00|263.04|268.30|-123.36| +2451874|48754|7604|58896|1112127|5358|8989|10|140|39|49|46.49|49.27|49.27|0.00|2414.23|2278.01|2414.23|48.28|0.00|2414.23|2462.51|136.22| +2451874|48754|15491|58896|1112127|5358|8989|10|34|39|54|3.20|4.80|2.01|103.11|108.54|172.80|259.20|0.16|103.11|5.43|5.59|-167.37| +2451874|48754|3943|58896|1112127|5358|8989|10|213|39|64|59.68|85.93|16.32|490.90|1044.48|3819.52|5499.52|16.60|490.90|553.58|570.18|-3265.94| +2451874|48754|5393|58896|1112127|5358|8989|10|45|39|98|58.75|67.56|20.94|0.00|2052.12|5757.50|6620.88|123.12|0.00|2052.12|2175.24|-3705.38| +2451874|48754|15625|58896|1112127|5358|8989|10|63|39|17|96.62|157.49|108.66|0.00|1847.22|1642.54|2677.33|36.94|0.00|1847.22|1884.16|204.68| +2451874|48754|7118|58896|1112127|5358|8989|10|161|39|67|68.99|101.41|31.43|0.00|2105.81|4622.33|6794.47|21.05|0.00|2105.81|2126.86|-2516.52| +2450925|62048|5098|66489|634761|2233|49705|4|90|40|35|33.91|41.70|22.93|497.58|802.55|1186.85|1459.50|21.34|497.58|304.97|326.31|-881.88| +2450925|62048|10094|66489|634761|2233|49705|4|64|40|80|8.63|9.92|8.63|669.68|690.40|690.40|793.60|1.24|669.68|20.72|21.96|-669.68| +2450925|62048|13658|66489|634761|2233|49705|4|21|40|53|56.42|112.27|33.68|0.00|1785.04|2990.26|5950.31|107.10|0.00|1785.04|1892.14|-1205.22| +2450925|62048|3985|66489|634761|2233|49705|4|280|40|63|22.94|37.16|0.00|0.00|0.00|1445.22|2341.08|0.00|0.00|0.00|0.00|-1445.22| +2450925|62048|5318|66489|634761|2233|49705|4|190|40|87|32.66|44.09|22.92|0.00|1994.04|2841.42|3835.83|119.64|0.00|1994.04|2113.68|-847.38| +||12050|66489||2233|49705|4|258|40||38.12||62.75|0.00|||3522.20|103.53|0.00||3554.78|| +2450925|62048|2854|66489|634761|2233|49705|4|196|40|71|10.62|19.85|2.77|33.43|196.67|754.02|1409.35|13.05|33.43|163.24|176.29|-590.78| +2450925|62048|16976|66489|634761|2233|49705|4|208|40|3|20.70|28.77|8.34|0.00|25.02|62.10|86.31|2.00|0.00|25.02|27.02|-37.08| +2450925|62048|3490|66489|634761|2233|49705|4|275|40|65|41.24|66.80|45.42|0.00|2952.30|2680.60|4342.00|206.66|0.00|2952.30|3158.96|271.70| +2450925|62048|10912|66489|634761|2233|49705|4|264|40|23|2.46|4.84|3.92|9.91|90.16|56.58|111.32|6.42|9.91|80.25|86.67|23.67| +2451094|69987|7402|87890|1540338|4786|12434|10|59|41|69|57.23|97.29|65.18|0.00|4497.42|3948.87|6713.01|224.87|0.00|4497.42|4722.29|548.55| +2451094|69987|3380|87890|1540338|4786|12434|10|195|41|88|14.11|15.37|13.06|0.00|1149.28|1241.68|1352.56|11.49|0.00|1149.28|1160.77|-92.40| +2451094|69987|15242|87890|1540338|4786|12434|10|141|41|87|48.25|59.34|20.17|0.00|1754.79|4197.75|5162.58|122.83|0.00|1754.79|1877.62|-2442.96| +2451094|69987|10|87890|1540338|4786|12434|10|275|41|50|54.36|102.74|78.08|0.00|3904.00|2718.00|5137.00|234.24|0.00|3904.00|4138.24|1186.00| +2451094|69987|10915|87890|1540338|4786|12434|10|256|41|81|91.63|174.09|19.14|201.54|1550.34|7422.03|14101.29|121.39|201.54|1348.80|1470.19|-6073.23| +2451094|69987|5566|87890|1540338|4786|12434|10|254|41|11|50.45|75.67|10.59|0.00|116.49|554.95|832.37|6.98|0.00|116.49|123.47|-438.46| +2451094|69987|9322|87890|1540338|4786|12434|10|276|41|8|59.40|87.31|82.94|0.00|663.52|475.20|698.48|19.90|0.00|663.52|683.42|188.32| +2451094|69987|16514|87890|1540338|4786|12434|10|285|41|20|5.05|5.20|5.09|78.38|101.80|101.00|104.00|0.46|78.38|23.42|23.88|-77.58| +2451094|69987|15328|87890|1540338|4786|12434|10|8|41|46|84.03|168.06|70.58|0.00|3246.68|3865.38|7730.76|227.26|0.00|3246.68|3473.94|-618.70| +2451094|69987|7603|87890|1540338|4786|12434|10|166|41|94|6.12|9.91|3.17|0.00|297.98|575.28|931.54|23.83|0.00|297.98|321.81|-277.30| +2451094|69987|6310|87890|1540338|4786|12434|10|202|41|90|60.10|63.70|17.83|978.86|1604.70|5409.00|5733.00|25.03|978.86|625.84|650.87|-4783.16| +2451094|69987|14788|87890|1540338|4786|12434|10|222|41|15|90.04|108.04|70.22|0.00|1053.30|1350.60|1620.60|31.59|0.00|1053.30|1084.89|-297.30| +2451094|69987|64|87890|1540338|4786|12434|10|286|41|29|27.18|52.72|4.21|120.86|122.09|788.22|1528.88|0.06|120.86|1.23|1.29|-786.99| +2450952|40089|2314|49423|170973|3276|11226|10|16|42|74|24.46|39.38|16.93|0.00|1252.82|1810.04|2914.12|87.69|0.00|1252.82|1340.51|-557.22| +2450952|40089|10016|49423|170973|3276|11226|10|76|42|57|12.47|13.96|1.39|0.00|79.23|710.79|795.72|4.75|0.00|79.23|83.98|-631.56| +2450952|40089|3346|49423|170973|3276|11226|10|191|42|74|29.72|48.74|36.55|0.00|2704.70|2199.28|3606.76|0.00|0.00|2704.70|2704.70|505.42| +2450952|40089|976|49423|170973|3276|11226|10|21|42|100|12.59|19.13|8.22|0.00|822.00|1259.00|1913.00|24.66|0.00|822.00|846.66|-437.00| +2450952|40089|10471|49423|170973|3276|11226|10|13|42|19|42.67|42.67|10.24|0.00|194.56|810.73|810.73|15.56|0.00|194.56|210.12|-616.17| +2450952|40089|6058|49423|170973|3276|11226|10|120|42|30|81.10|139.49|33.47|0.00|1004.10|2433.00|4184.70|50.20|0.00|1004.10|1054.30|-1428.90| +2450952|40089|12550|49423|170973|3276|11226|10|199|42|41|17.09|22.90|6.41|0.00|262.81|700.69|938.90|7.88|0.00|262.81|270.69|-437.88| +2450952|40089|2392|49423|170973|3276|11226|10|163|42|14|49.48|72.24|55.62|0.00|778.68|692.72|1011.36|31.14|0.00|778.68|809.82|85.96| +2450952|40089|15002|49423|170973|3276|11226|10|21|42|41|58.33|80.49|38.63|0.00|1583.83|2391.53|3300.09|126.70|0.00|1583.83|1710.53|-807.70| +2450952|40089|6134|49423|170973|3276|11226|10|146|42|92|18.91|33.09|23.82|0.00|2191.44|1739.72|3044.28|109.57|0.00|2191.44|2301.01|451.72| +2450952|40089|3613|49423|170973|3276|11226|10|8|42|30|56.33|65.34|56.84|528.61|1705.20|1689.90|1960.20|0.00|528.61|1176.59|1176.59|-513.31| +2450952|40089|9740|49423|170973|3276|11226|10|268|42|52|52.46|90.23|32.48|1621.40|1688.96|2727.92|4691.96|1.35|1621.40|67.56|68.91|-2660.36| +2450952|40089|619|49423|170973|3276|11226|10|55|42|69|56.85|80.15|28.85|0.00|1990.65|3922.65|5530.35|0.00|0.00|1990.65|1990.65|-1932.00| +2450952|40089|1436|49423|170973|3276|11226|10|7|42|94|54.21|81.31|36.58|0.00|3438.52|5095.74|7643.14|68.77|0.00|3438.52|3507.29|-1657.22| +2450952|40089|8462|49423|170973|3276|11226|10|241|42|23|27.88|33.45|7.02|24.21|161.46|641.24|769.35|0.00|24.21|137.25|137.25|-503.99| +2450952|40089|2602|49423|170973|3276|11226|10|96|42|30|55.77|71.38|63.52|0.00|1905.60|1673.10|2141.40|76.22|0.00|1905.60|1981.82|232.50| +2451878|68553|5852|80811|1454478|5392|12259|4|1|43|16|81.99|84.44|81.06|0.00|1296.96|1311.84|1351.04|51.87|0.00|1296.96|1348.83|-14.88| +2451878|68553|14669|80811|1454478|5392|12259|4|269|43|97|52.94|98.99|12.86|0.00|1247.42|5135.18|9602.03|62.37|0.00|1247.42|1309.79|-3887.76| +2451878|68553|3911|80811|1454478|5392|12259|4|55|43|26|21.75|36.97|34.01|0.00|884.26|565.50|961.22|61.89|0.00|884.26|946.15|318.76| +2451878|68553|2923|80811|1454478|5392|12259|4|274|43|16|82.12|136.31|80.42|0.00|1286.72|1313.92|2180.96|51.46|0.00|1286.72|1338.18|-27.20| +2451878|68553|3344|80811|1454478|5392|12259|4|47|43|22|88.77|109.18|82.97|0.00|1825.34|1952.94|2401.96|0.00|0.00|1825.34|1825.34|-127.60| +2451878|68553|11771|80811|1454478|5392|12259|4|173|43|30|41.13|46.88|41.25|420.75|1237.50|1233.90|1406.40|49.00|420.75|816.75|865.75|-417.15| +2451878|68553|5773|80811|1454478|5392|12259|4|220|43|85|66.42|87.67|77.14|0.00|6556.90|5645.70|7451.95|0.00|0.00|6556.90|6556.90|911.20| +2451878|68553|4691|80811|1454478|5392|12259|4|63|43|41|2.24|4.39|0.00|0.00|0.00|91.84|179.99|0.00|0.00|0.00|0.00|-91.84| +2451878|68553|4364|80811|1454478|5392|12259|4|266|43|77|82.92|106.96|14.97|0.00|1152.69|6384.84|8235.92|11.52|0.00|1152.69|1164.21|-5232.15| +2452274|44359|7527|53792|336661|4330|25999|7|110|44|67|90.05|124.26|93.19|0.00|6243.73|6033.35|8325.42|437.06|0.00|6243.73|6680.79|210.38| +2452274|44359|2351|53792|336661|4330|25999|7|233|44|56|55.53|96.06|35.54|1850.92|1990.24|3109.68|5379.36|11.14|1850.92|139.32|150.46|-2970.36| +2452274|44359|2623|53792|336661|4330|25999|7|2|44|18|39.17|74.03|65.14|0.00|1172.52|705.06|1332.54|82.07|0.00|1172.52|1254.59|467.46| +2452274|44359|9059|53792|336661|4330|25999|7|173|44|68|30.11|50.28|18.60|0.00|1264.80|2047.48|3419.04|50.59|0.00|1264.80|1315.39|-782.68| +2452274|44359|12341|53792|336661|4330|25999|7|127|44|20|82.28|124.24|73.30|0.00|1466.00|1645.60|2484.80|14.66|0.00|1466.00|1480.66|-179.60| +2452274|44359|14149|53792|336661|4330|25999|7|164|44|80|18.83|22.40|16.35|0.00|1308.00|1506.40|1792.00|78.48|0.00|1308.00|1386.48|-198.40| +2452274|44359|15803|53792|336661|4330|25999|7|295|44|81|43.81|83.23|4.99|0.00|404.19|3548.61|6741.63|12.12|0.00|404.19|416.31|-3144.42| +2452274|44359|16491|53792|336661|4330|25999|7|103|44|56|32.28|53.26|13.31|0.00|745.36|1807.68|2982.56|52.17|0.00|745.36|797.53|-1062.32| +2452274|44359|13331|53792|336661|4330|25999|7|240|44|98|3.53|6.67|0.20|0.00|19.60|345.94|653.66|0.00|0.00|19.60|19.60|-326.34| +2452274|44359|16909|53792|336661|4330|25999|7|288|44|61|92.15|148.36|45.99|0.00|2805.39|5621.15|9049.96|56.10|0.00|2805.39|2861.49|-2815.76| +2452274|44359|11707|53792|336661|4330|25999|7|155|44|83|85.49|126.52|41.75|138.61|3465.25|7095.67|10501.16|232.86|138.61|3326.64|3559.50|-3769.03| +2452274|44359|13449|53792|336661|4330|25999|7|71|44|45|50.83|86.91|86.04|0.00|3871.80|2287.35|3910.95|309.74|0.00|3871.80|4181.54|1584.45| +2452274|44359|16837|53792|336661|4330|25999|7|265|44|92|30.11|37.63|35.37|0.00|3254.04|2770.12|3461.96|260.32|0.00|3254.04|3514.36|483.92| +2452274|44359|7303|53792|336661|4330|25999|7|50|44|14|36.13|62.14|19.26|0.00|269.64|505.82|869.96|18.87|0.00|269.64|288.51|-236.18| +2452257|37558|10115|16606|596784|6209|42787|4|37|45|68|38.09|58.65|7.62|310.89|518.16|2590.12|3988.20|0.00|310.89|207.27|207.27|-2382.85| +2452257|37558|16349|16606|596784|6209|42787|4|213|45|6|94.59|150.39|99.25|0.00|595.50|567.54|902.34|0.00|0.00|595.50|595.50|27.96| +2452257|37558|11095|16606|596784|6209|42787|4|235|45|40|52.97|90.04|69.33|0.00|2773.20|2118.80|3601.60|249.58|0.00|2773.20|3022.78|654.40| +2452257|37558|1479|16606|596784|6209|42787|4|299|45|49|5.01|8.91|0.00|0.00|0.00|245.49|436.59|0.00|0.00|0.00|0.00|-245.49| +2452257|37558|7363|16606|596784|6209|42787|4|137|45|87|85.95|87.66|4.38|0.00|381.06|7477.65|7626.42|7.62|0.00|381.06|388.68|-7096.59| +2452257|37558|13133|16606|596784|6209|42787|4|170|45|46|85.87|126.22|68.15|0.00|3134.90|3950.02|5806.12|219.44|0.00|3134.90|3354.34|-815.12| +2452257|37558|5309|16606|596784|6209|42787|4|44|45|18|51.16|83.39|21.68|0.00|390.24|920.88|1501.02|31.21|0.00|390.24|421.45|-530.64| +2452257|37558|811|16606|596784|6209|42787|4|265|45|62|23.41|29.26|4.09|0.00|253.58|1451.42|1814.12|12.67|0.00|253.58|266.25|-1197.84| +2452257|37558|3265|16606|596784|6209|42787|4|246|45|98|27.12|40.13|31.70|0.00|3106.60|2657.76|3932.74|279.59|0.00|3106.60|3386.19|448.84| +2451299|47778|15595|34598|1011655|6312|14569|8|53|46|32|29.12|35.81|12.17|0.00|389.44|931.84|1145.92|0.00|0.00|389.44|389.44|-542.40| +2451299|47778|17384|34598|1011655|6312|14569|8|266|46|13|93.68|140.52|25.29|0.00|328.77|1217.84|1826.76|3.28|0.00|328.77|332.05|-889.07| +2451299|47778|17150|34598|1011655|6312|14569|8|221|46|57|71.68|115.40|79.62|0.00|4538.34|4085.76|6577.80|181.53|0.00|4538.34|4719.87|452.58| +2451299|47778|1960|34598|1011655|6312|14569|8|133|46|12|53.47|92.50|73.07|0.00|876.84|641.64|1110.00|26.30|0.00|876.84|903.14|235.20| +2451299|47778|7040|34598|1011655|6312|14569|8|279|46|33|90.87|97.23|25.27|0.00|833.91|2998.71|3208.59|33.35|0.00|833.91|867.26|-2164.80| +2451299|47778|16540|34598|1011655|6312|14569|8|240|46|30|54.36|73.92|69.48|0.00|2084.40|1630.80|2217.60|125.06|0.00|2084.40|2209.46|453.60| +2451299|47778|13042|34598|1011655|6312|14569|8|135|46|58|41.38|49.65|5.46|0.00|316.68|2400.04|2879.70|6.33|0.00|316.68|323.01|-2083.36| +2451299|47778|8065|34598||6312||8|120|46||43.04||||860.25||4099.50||||894.66|| +2451299|47778|3010|34598|1011655|6312|14569|8|86|46|67|66.87|83.58|58.50|0.00|3919.50|4480.29|5599.86|313.56|0.00|3919.50|4233.06|-560.79| +2451299|47778|11426|34598|1011655|6312|14569|8|221|46|72|53.81|99.01|42.57|0.00|3065.04|3874.32|7128.72|61.30|0.00|3065.04|3126.34|-809.28| +2451147|42794|3085|83903|534604|58|5159|4|268|47|51|63.55|104.85|53.47|490.85|2726.97|3241.05|5347.35|67.08|490.85|2236.12|2303.20|-1004.93| +2451147|42794|13477|83903|534604|58|5159|4|22|47|10|78.83|143.47|58.82|0.00|588.20|788.30|1434.70|11.76|0.00|588.20|599.96|-200.10| +2451147|42794|5468|83903|534604|58|5159|4|156|47|7|5.03|7.44|0.66|0.00|4.62|35.21|52.08|0.04|0.00|4.62|4.66|-30.59| +2451147||5305|83903|534604|||||47||84.70|102.48|95.30|0.00|||||0.00|8291.10||| +2451147|42794|1132|83903|534604|58|5159|4|144|47|66|53.46|79.65|63.72|0.00|4205.52|3528.36|5256.90|42.05|0.00|4205.52|4247.57|677.16| +2451147|42794|4774|83903|534604|58|5159|4|147|47|11|63.71|102.57|58.46|0.00|643.06|700.81|1128.27|38.58|0.00|643.06|681.64|-57.75| +2451147|42794|5008|83903|534604|58|5159|4|164|47|82|1.76|2.62|0.83|0.00|68.06|144.32|214.84|4.08|0.00|68.06|72.14|-76.26| +2451147|42794|254|83903|534604||5159||138|47|||||0.00|7444.36|||595.54|0.00||8039.90|623.70| +2451147|42794|3202|83903|534604|58|5159|4|205|47|7|26.06|49.77|28.36|0.00|198.52|182.42|348.39|3.97|0.00|198.52|202.49|16.10| +2451147|42794|1916|83903|534604|58|5159|4|150|47|71|47.62|49.04|43.64|0.00|3098.44|3381.02|3481.84|278.85|0.00|3098.44|3377.29|-282.58| +2451147|42794|481|83903|534604|58|5159|4|92|47|30|36.51|48.92|6.35|0.00|190.50|1095.30|1467.60|5.71|0.00|190.50|196.21|-904.80| +2451147|42794|9770|83903|534604|58|5159|4|154|47|33|69.12|133.40|45.35|0.00|1496.55|2280.96|4402.20|0.00|0.00|1496.55|1496.55|-784.41| +|42794|3878|||58||4||47||||111.69||||4582.40|||||| +2451147|42794|7214|83903|534604|58|5159|4|196|47|1|12.80|17.28|8.12|0.00|8.12|12.80|17.28|0.73|0.00|8.12|8.85|-4.68| +2451147|42794|13246|83903|534604|58|5159|4|139|47|47|11.71|16.51|0.16|6.16|7.52|550.37|775.97|0.00|6.16|1.36|1.36|-549.01| +2452606|71569|9199|21202|888343|6237|1331|8|246|48|88|37.89|49.63|27.79|0.00|2445.52|3334.32|4367.44|97.82|0.00|2445.52|2543.34|-888.80| +2452606|71569|12468|21202|888343|6237|1331|8|164|48|62|43.72|66.45|39.87|0.00|2471.94|2710.64|4119.90|222.47|0.00|2471.94|2694.41|-238.70| +2452606|71569|13153|21202|888343|6237|1331|8|187|48|74|34.26|42.48|5.94|0.00|439.56|2535.24|3143.52|8.79|0.00|439.56|448.35|-2095.68| +2452606|71569|2820|21202|888343|6237|1331|8|23|48|4|6.46|9.69|6.68|16.29|26.72|25.84|38.76|0.00|16.29|10.43|10.43|-15.41| +2452606||11259||||1331|8||48||||39.00|0.00|897.00||1520.53|35.88|0.00|||| +2452606|71569|17799|21202|888343|6237|1331|8|82|48|17|80.36|151.07|120.85|0.00|2054.45|1366.12|2568.19|41.08|0.00|2054.45|2095.53|688.33| +2452606|71569|2829|21202|888343|6237|1331|8|289|48|65|22.10|27.84|24.49|0.00|1591.85|1436.50|1809.60|31.83|0.00|1591.85|1623.68|155.35| +2452606|71569|5971|21202|888343|6237|1331|8|110|48|29|40.46|54.21|39.03|0.00|1131.87|1173.34|1572.09|90.54|0.00|1131.87|1222.41|-41.47| +2452606|71569|6684|21202|888343|6237|1331|8|117|48|44|20.22|40.03|39.22|0.00|1725.68|889.68|1761.32|120.79|0.00|1725.68|1846.47|836.00| +2452606|71569|4431|21202|888343|6237|1331|8|110|48|39|97.07|177.63|5.32|0.00|207.48|3785.73|6927.57|0.00|0.00|207.48|207.48|-3578.25| +2452606|71569|6085|21202|888343|6237|1331|8|41|48|1|58.13|102.30|82.86|0.00|82.86|58.13|102.30|2.48|0.00|82.86|85.34|24.73| +2452606|71569|1761|21202|888343|6237|1331|8|183|48|22|55.73|63.53|0.63|0.00|13.86|1226.06|1397.66|0.41|0.00|13.86|14.27|-1212.20| +2451774|39843|9049|79401|1604468|3582|4296|8|246|49|68|75.38|144.72|115.77|0.00|7872.36|5125.84|9840.96|551.06|0.00|7872.36|8423.42|2746.52| +2451774|39843|9553|79401|1604468|3582|4296|8|149|49|71|29.28|44.21|3.97|0.00|281.87|2078.88|3138.91|22.54|0.00|281.87|304.41|-1797.01| +2451774|39843|12737|79401|1604468|3582|4296|8|107|49|48|2.17|4.01|2.60|0.00|124.80|104.16|192.48|8.73|0.00|124.80|133.53|20.64| +2451774|39843|7141|79401|1604468|3582|4296|8|139|49|94|50.50|63.63|57.26|4521.24|5382.44|4747.00|5981.22|51.67|4521.24|861.20|912.87|-3885.80| +2451774|39843|749|79401|1604468|3582|4296|8|8|49|60|42.11|83.37|76.70|0.00|4602.00|2526.60|5002.20|0.00|0.00|4602.00|4602.00|2075.40| +2451774|39843|6805|79401|1604468|3582|4296|8|58|49|40|12.90|25.41|23.63|0.00|945.20|516.00|1016.40|56.71|0.00|945.20|1001.91|429.20| +2451774|39843|16361|79401|1604468|3582|4296|8|240|49|4|79.85|125.36|6.26|0.00|25.04|319.40|501.44|1.75|0.00|25.04|26.79|-294.36| +2451774|39843|2135|79401|1604468|3582|4296|8|103|49|4|15.80|16.59|7.46|0.00|29.84|63.20|66.36|1.79|0.00|29.84|31.63|-33.36| +2451774|39843|15155|79401|1604468|3582|4296|8|81|49|84|4.40|6.60|2.24|0.00|188.16|369.60|554.40|3.76|0.00|188.16|191.92|-181.44| +2451774|39843|5342|79401|1604468|3582|4296|8|89|49|69|46.41|46.87|41.71|1957.03|2877.99|3202.29|3234.03|27.62|1957.03|920.96|948.58|-2281.33| +2451774|39843|5852|79401|1604468|3582|4296|8|45|49|47|74.90|77.89|45.17|0.00|2122.99|3520.30|3660.83|21.22|0.00|2122.99|2144.21|-1397.31| +2451203|46470|1280|55849|1179944|5639|14534|4|231|50|69|8.66|14.80|1.62|0.00|111.78|597.54|1021.20|5.58|0.00|111.78|117.36|-485.76| +2451203|46470|16081|55849|1179944|5639|14534|4|206|50|82|99.55|124.43|2.48|0.00|203.36|8163.10|10203.26|14.23|0.00|203.36|217.59|-7959.74| +2451203|46470|1312|55849|1179944|5639|14534|4|8|50|30|25.84|49.35|9.87|0.00|296.10|775.20|1480.50|5.92|0.00|296.10|302.02|-479.10| +2451203|46470|7135|55849|1179944|5639|14534|4|199|50|69|12.68|21.42|19.70|1182.59|1359.30|874.92|1477.98|3.53|1182.59|176.71|180.24|-698.21| +2451203|46470|1984|55849|1179944|5639|14534|4|188|50|40|8.81|8.81|6.25|222.50|250.00|352.40|352.40|0.82|222.50|27.50|28.32|-324.90| +2451203|46470|5023|||||||50||16.24|||0.00|83.44||132.48|0.00|0.00|||-46.48| +2451203|46470|1909|55849|1179944|5639|14534|4|86|50|53|56.01|62.17|6.83|322.17|361.99|2968.53|3295.01|0.00|322.17|39.82|39.82|-2928.71| +2451203|46470|3097|55849|1179944|5639|14534|4|191|50|64|33.17|55.39|27.14|0.00|1736.96|2122.88|3544.96|156.32|0.00|1736.96|1893.28|-385.92| +2451693|47958|12625|83517|38885|1806|28327|10|169|51|53|97.27|176.05|116.19|0.00|6158.07|5155.31|9330.65|307.90|0.00|6158.07|6465.97|1002.76| +2451693|47958|3091|83517|38885|1806|28327|10|136|51|28|92.87|120.73|84.51|0.00|2366.28|2600.36|3380.44|23.66|0.00|2366.28|2389.94|-234.08| +2451693|47958|422|83517|38885|1806|28327|10|166|51|21|69.89|131.39|97.22|306.24|2041.62|1467.69|2759.19|52.06|306.24|1735.38|1787.44|267.69| +2451693|47958|5029|83517|38885|1806|28327|10|227|51|12|34.53|46.96|29.58|0.00|354.96|414.36|563.52|10.64|0.00|354.96|365.60|-59.40| +2451693|47958|17705|83517|38885|1806|28327|10|86|51|66|46.11|60.86|23.12|0.00|1525.92|3043.26|4016.76|91.55|0.00|1525.92|1617.47|-1517.34| +2451693||11234||38885|1806|28327|10||51|||113.10||0.00||1187.55|||0.00||1859.09|| +2451693|47958|17483|83517|38885|1806|28327|10|223|51|22|31.99|32.94|24.37|160.84|536.14|703.78|724.68|11.25|160.84|375.30|386.55|-328.48| +2451693|47958|8384|83517|38885|1806|28327|10|298|51|79|15.35|29.01|22.33|0.00|1764.07|1212.65|2291.79|158.76|0.00|1764.07|1922.83|551.42| +2451693|47958|6565|83517|38885|1806|28327|10|165|51|33|32.44|55.47|2.21|0.00|72.93|1070.52|1830.51|5.83|0.00|72.93|78.76|-997.59| +2451693|47958|5059|83517|38885|1806|28327|10|78|51|51|48.54|85.43|0.85|0.00|43.35|2475.54|4356.93|0.86|0.00|43.35|44.21|-2432.19| +2451693|47958|4687|83517|38885|1806|28327|10|129|51|6|93.02|97.67|9.76|0.00|58.56|558.12|586.02|5.27|0.00|58.56|63.83|-499.56| +2451693|47958|9311|83517|38885|1806|28327|10|77|51|90|39.48|53.69|7.51|0.00|675.90|3553.20|4832.10|47.31|0.00|675.90|723.21|-2877.30| +2451693|47958|13199|83517|38885|1806|28327|10|198|51|97|99.32|105.27|94.74|0.00|9189.78|9634.04|10211.19|459.48|0.00|9189.78|9649.26|-444.26| +2451693|47958|10133|83517|38885|1806|28327|10|246|51|54|46.71|51.38|34.42|55.76|1858.68|2522.34|2774.52|54.08|55.76|1802.92|1857.00|-719.42| +2451027|41589|7606|45831|354191|951|5264|7|30|52|45|42.51|72.26|3.61|0.00|162.45|1912.95|3251.70|0.00|0.00|162.45|162.45|-1750.50| +2451027|41589|15649|45831|354191|951|5264|7|25|52|29|22.86|29.71|16.04|0.00|465.16|662.94|861.59|13.95|0.00|465.16|479.11|-197.78| +2451027|41589|11488|45831|354191|951|5264|7|108|52|76|78.68|106.21|86.03|0.00|6538.28|5979.68|8071.96|130.76|0.00|6538.28|6669.04|558.60| +2451027|41589|2420|45831|354191|951|5264|7|94|52|90|22.31|35.24|18.67|0.00|1680.30|2007.90|3171.60|100.81|0.00|1680.30|1781.11|-327.60| +2451027|41589|16646|45831|354191|951|5264|7|165|52|48|95.82|132.23|70.08|773.68|3363.84|4599.36|6347.04|0.00|773.68|2590.16|2590.16|-2009.20| +2451027|41589|17456|45831|354191|951|5264|7|71|52|37|7.93|11.97|4.54|0.00|167.98|293.41|442.89|1.67|0.00|167.98|169.65|-125.43| +|41589|6098||354191||||45|52||4.83|7.63|7.40||||495.95|||481.00|481.00|| +2451027|41589|3334|45831|354191|951|5264|7|8|52|73|29.20|39.71|29.78|1260.88|2173.94|2131.60|2898.83|73.04|1260.88|913.06|986.10|-1218.54| +2451027|41589|17402|45831|354191|951|5264|7|242|52|91|81.94|139.29|123.96|0.00|11280.36|7456.54|12675.39|789.62|0.00|11280.36|12069.98|3823.82| +2451452|39338|16420|87672|1260894|5316|32985|4|117|53|14|36.72|63.15|56.20|0.00|786.80|514.08|884.10|15.73|0.00|786.80|802.53|272.72| +2451452|39338|2095|87672|1260894|5316|32985|4|209|53|62|23.98|32.61|28.69|0.00|1778.78|1486.76|2021.82|53.36|0.00|1778.78|1832.14|292.02| +2451452|39338|7546|87672|1260894|5316|32985|4|39|53|58|73.79|118.80|91.47|0.00|5305.26|4279.82|6890.40|424.42|0.00|5305.26|5729.68|1025.44| +2451452|39338|2887|87672|1260894|5316|32985|4|175|53|39|66.68|106.02|99.65|0.00|3886.35|2600.52|4134.78|349.77|0.00|3886.35|4236.12|1285.83| +2451452|39338|1114|87672|1260894|5316|32985|4|178|53|40|28.34|38.25|5.73|192.52|229.20|1133.60|1530.00|0.36|192.52|36.68|37.04|-1096.92| +2451452|39338|11348|87672|1260894|5316|32985|4|277|53|38|5.54|9.30|2.23|0.00|84.74|210.52|353.40|3.38|0.00|84.74|88.12|-125.78| +2451452|39338|17560|87672|1260894|5316|32985|4|218|53|15|46.39|68.19|62.73|592.79|940.95|695.85|1022.85|24.37|592.79|348.16|372.53|-347.69| +2451452|39338|17296|87672|1260894|5316|32985|4|194|53|43|21.40|29.10|0.58|0.00|24.94|920.20|1251.30|0.00|0.00|24.94|24.94|-895.26| +2451452|39338|13220|87672|1260894|5316|32985|4|135|53|76|27.93|49.15|25.55|0.00|1941.80|2122.68|3735.40|174.76|0.00|1941.80|2116.56|-180.88| +2451452|39338|13795|87672|1260894|5316|32985|4|260|53|38|93.96|177.58|17.75|0.00|674.50|3570.48|6748.04|26.98|0.00|674.50|701.48|-2895.98| +2451452|39338|16648|87672|1260894|5316|32985|4|208|53|79|55.29|95.09|9.50|570.38|750.50|4367.91|7512.11|1.80|570.38|180.12|181.92|-4187.79| +2451452|39338|15991|87672|1260894|5316|32985|4|39|53|37|77.75|87.08|27.86|0.00|1030.82|2876.75|3221.96|82.46|0.00|1030.82|1113.28|-1845.93| +2451452|39338|2786|87672|1260894|5316|32985|4|146|53|70|76.55|114.05|112.90|0.00|7903.00|5358.50|7983.50|316.12|0.00|7903.00|8219.12|2544.50| +2452604|50471|16059|48157|1761636|4715|20594|1|264|54|15|7.90|15.24|8.68|0.00|130.20|118.50|228.60|5.20|0.00|130.20|135.40|11.70| +2452604|50471|6517|48157|1761636|4715|20594|1|198|54|40|23.38|27.12|14.64|158.11|585.60|935.20|1084.80|34.19|158.11|427.49|461.68|-507.71| +2452604|50471|9159|48157|1761636|4715|20594|1|23|54|75|55.47|100.95|61.57|0.00|4617.75|4160.25|7571.25|369.42|0.00|4617.75|4987.17|457.50| +2452604|50471|1165|48157|1761636|4715|20594|1|124|54|62|69.84|138.28|113.38|0.00|7029.56|4330.08|8573.36|632.66|0.00|7029.56|7662.22|2699.48| +2452604|50471|17479|48157|1761636|4715|20594|1|210|54|34|94.14|131.79|6.58|0.00|223.72|3200.76|4480.86|0.00|0.00|223.72|223.72|-2977.04| +2452604|50471|825|48157|1761636|4715|20594|1|228|54|50|99.64|121.56|35.25|0.00|1762.50|4982.00|6078.00|123.37|0.00|1762.50|1885.87|-3219.50| +2452604|50471|702|48157|1761636|4715|20594|1|171|54|40|16.76|32.51|18.85|0.00|754.00|670.40|1300.40|52.78|0.00|754.00|806.78|83.60| +2452604|50471|3861|||4715|20594|1||54|||82.97|||3235.80|4485.00||||3235.80||| +2452604|50471|14737|48157|1761636|4715|20594|1|297|54|38|29.20|56.94|48.39|18.38|1838.82|1109.60|2163.72|18.20|18.38|1820.44|1838.64|710.84| +2452604|50471|16974||||20594|1|38|54|||85.43||0.00|588.30||||0.00||600.06|| +2451908|54460|1339|86157|1184215|7073|47178|2|203|55|16|71.32|136.93|94.48|0.00|1511.68|1141.12|2190.88|15.11|0.00|1511.68|1526.79|370.56| +2451908|54460|14923|86157|1184215|7073|47178|2|16|55|71|30.04|32.14|16.71|94.91|1186.41|2132.84|2281.94|43.66|94.91|1091.50|1135.16|-1041.34| +2451908|54460|12205|86157|1184215|7073|47178|2|85|55|90|56.92|108.14|90.83|6458.01|8174.70|5122.80|9732.60|17.16|6458.01|1716.69|1733.85|-3406.11| +2451908|54460|12170|86157|1184215|7073|47178|2|167|55|92|69.53|119.59|101.65|0.00|9351.80|6396.76|11002.28|187.03|0.00|9351.80|9538.83|2955.04| +2451908|54460|5137||1184215||47178|2|145|55|33|57.28||24.75||816.75|1890.24|2475.99||||833.08|-1073.49| +2451908|54460|3001|86157|1184215|7073|47178|2|142|55|7|57.58|91.55|54.01|0.00|378.07|403.06|640.85|11.34|0.00|378.07|389.41|-24.99| +2451908|54460|9703|86157|1184215|7073|47178|2|282|55|44|57.21|88.67|37.24|0.00|1638.56|2517.24|3901.48|81.92|0.00|1638.56|1720.48|-878.68| +2451908|54460|14135|86157|1184215|7073|47178|2|31|55|36|26.40|46.72|34.57|0.00|1244.52|950.40|1681.92|12.44|0.00|1244.52|1256.96|294.12| +2451908|54460|17677|86157|1184215|7073|47178|2|251|55|17|26.59|47.86|22.97|0.00|390.49|452.03|813.62|19.52|0.00|390.49|410.01|-61.54| +2452480|41902|8691|68383|848615|1294|3526|2|280|56|59|98.91|141.44|41.01|0.00|2419.59|5835.69|8344.96|48.39|0.00|2419.59|2467.98|-3416.10| +2452480|41902|10362|68383|848615|1294|3526|2|271|56|54|82.62|98.31|8.84|0.00|477.36|4461.48|5308.74|14.32|0.00|477.36|491.68|-3984.12| +2452480|41902|16620|68383|848615|1294|3526|2|128|56|23|9.94|17.49|13.81|0.00|317.63|228.62|402.27|28.58|0.00|317.63|346.21|89.01| +2452480|41902|8707|68383|848615|1294|3526|2|30|56|68|79.70|137.88|60.66|0.00|4124.88|5419.60|9375.84|82.49|0.00|4124.88|4207.37|-1294.72| +2452480|41902|8353|68383|848615|1294|3526|2|150|56|35|80.42|81.22|4.06|38.36|142.10|2814.70|2842.70|4.14|38.36|103.74|107.88|-2710.96| +2452480|41902|4506|68383|848615|1294|3526|2|142|56|57|69.45|125.70|90.50|0.00|5158.50|3958.65|7164.90|103.17|0.00|5158.50|5261.67|1199.85| +2452480|41902|4242|68383|848615|1294|3526|2|52|56|2|88.74|106.48|68.14|0.00|136.28|177.48|212.96|12.26|0.00|136.28|148.54|-41.20| +2452480|41902|17331|68383|848615|1294|3526|2|78|56|74|32.12|41.43|14.91|375.13|1103.34|2376.88|3065.82|65.53|375.13|728.21|793.74|-1648.67| +2451580|63306|12596|4076|1484072|2915|42911|4|9|57|91|36.67|70.77|17.69|0.00|1609.79|3336.97|6440.07|0.00|0.00|1609.79|1609.79|-1727.18| +2451580|63306|4933|4076|1484072|2915|42911|4|278|57|22|93.86|122.95|30.73|0.00|676.06|2064.92|2704.90|47.32|0.00|676.06|723.38|-1388.86| +2451580|63306|15182|4076|1484072|2915|42911|4|291|57|86|84.85|110.30|65.07|0.00|5596.02|7297.10|9485.80|0.00|0.00|5596.02|5596.02|-1701.08| +2451580|63306|3253|4076|1484072|2915|42911|4|13|57|71|91.02|108.31|80.14|0.00|5689.94|6462.42|7690.01|398.29|0.00|5689.94|6088.23|-772.48| +2451580|63306|12721|4076|1484072|2915|42911|4|75|57|62|76.40|99.32|10.92|446.84|677.04|4736.80|6157.84|0.00|446.84|230.20|230.20|-4506.60| +2451580|63306|12740|4076|1484072|2915|42911|4|225|57|52|55.58|85.03|28.05|0.00|1458.60|2890.16|4421.56|14.58|0.00|1458.60|1473.18|-1431.56| +2451580|63306|4028|4076|1484072|2915|42911|4|52|57|88|82.23|112.65|100.25|0.00|8822.00|7236.24|9913.20|529.32|0.00|8822.00|9351.32|1585.76| +2451580|63306|17729|4076|1484072|2915|42911|4|174|57|26|97.20|183.70|77.15|0.00|2005.90|2527.20|4776.20|140.41|0.00|2005.90|2146.31|-521.30| +2451580||17993||1484072|2915||4||57|99||98.76||||5256.90|||||6183.00|| +2451654||5117|21601||600||||58|2|56.01|96.33|89.58||179.16|||7.16||179.16||| +2451654|29623|15635|21601|1515277|600|723|8|243|58|6|82.45|131.09|15.73|0.00|94.38|494.70|786.54|3.77|0.00|94.38|98.15|-400.32| +2451654|29623|3848|21601|1515277|600|723|8|217|58|6|45.41|55.85|20.10|0.00|120.60|272.46|335.10|2.41|0.00|120.60|123.01|-151.86| +2451654|29623|7649|21601|1515277|600|723|8|63|58|19|44.04|50.64|42.53|0.00|808.07|836.76|962.16|64.64|0.00|808.07|872.71|-28.69| +2451654|29623|1829|21601|1515277|600|723|8|176|58|52|19.97|38.54|28.90|0.00|1502.80|1038.44|2004.08|120.22|0.00|1502.80|1623.02|464.36| +2451654|29623|16472|21601|1515277|600|723|8|39|58|6|7.58|13.87|4.02|0.00|24.12|45.48|83.22|0.24|0.00|24.12|24.36|-21.36| +2451654|29623|9743|21601|1515277|600|723|8|103|58|62|73.14|91.42|29.25|0.00|1813.50|4534.68|5668.04|18.13|0.00|1813.50|1831.63|-2721.18| +2451654|29623|16949|21601|1515277|600|723|8|206|58|35|25.76|27.04|22.17|0.00|775.95|901.60|946.40|62.07|0.00|775.95|838.02|-125.65| +2451654|29623|10802|21601|1515277|600|723|8|299|58|14|79.64|136.98|43.83|0.00|613.62|1114.96|1917.72|49.08|0.00|613.62|662.70|-501.34| +2452309|42321|12858|32944|286640|1583|29326|10|28|59|90|61.18|105.84|104.78|0.00|9430.20|5506.20|9525.60|565.81|0.00|9430.20|9996.01|3924.00| +2452309|42321|14529|32944|286640|1583|29326|10|77|59|44|42.76|69.27|8.31|277.88|365.64|1881.44|3047.88|5.26|277.88|87.76|93.02|-1793.68| +2452309|42321|3546|32944|286640|1583|29326|10|227|59|22|64.21|96.95|67.86|0.00|1492.92|1412.62|2132.90|74.64|0.00|1492.92|1567.56|80.30| +2452309|42321|5772|32944|286640|1583|29326|10|270|59|70|56.19|103.38|4.13|0.00|289.10|3933.30|7236.60|8.67|0.00|289.10|297.77|-3644.20| +2452309|42321|8010|32944|286640|1583|29326|10|63|59|46|20.15|40.09|39.28|0.00|1806.88|926.90|1844.14|72.27|0.00|1806.88|1879.15|879.98| +2452309|42321|8335|32944|286640|1583|29326|10|36|59|36|32.82|47.91|13.41|463.44|482.76|1181.52|1724.76|1.35|463.44|19.32|20.67|-1162.20| +2452309|42321|9397|32944|286640|1583|29326|10|34|59|92|70.69|139.96|19.59|0.00|1802.28|6503.48|12876.32|144.18|0.00|1802.28|1946.46|-4701.20| +2452309|42321|11916|32944|286640|1583|29326|10|244|59|19|34.31|63.47|13.32|35.43|253.08|651.89|1205.93|17.41|35.43|217.65|235.06|-434.24| +||10651|||||10||59|100|35.78|62.25|47.31|898.89|4731.00||||898.89||3985.39|| +2452309|42321|3133|32944|286640|1583|29326|10|201|59|92|14.57|27.82|19.19|0.00|1765.48|1340.44|2559.44|35.30|0.00|1765.48|1800.78|425.04| +2452309|42321|7087|32944|286640|1583|29326|10|244|59|80|58.71|64.58|0.64|0.00|51.20|4696.80|5166.40|3.58|0.00|51.20|54.78|-4645.60| +2452309|42321|9348|32944|286640|1583|29326|10|57|59|62|83.62|99.50|11.94|0.00|740.28|5184.44|6169.00|14.80|0.00|740.28|755.08|-4444.16| +2452181|62777|555|82654|81736|5618|27547|1|14|60|62|49.17|87.52|63.88|0.00|3960.56|3048.54|5426.24|39.60|0.00|3960.56|4000.16|912.02| +2452181|62777|1117|82654|81736|5618|27547|1|220|60|78|46.63|48.02|35.05|0.00|2733.90|3637.14|3745.56|54.67|0.00|2733.90|2788.57|-903.24| +2452181|62777|97|82654|81736|5618|27547|1|88|60|50|37.49|44.23|5.74|0.00|287.00|1874.50|2211.50|5.74|0.00|287.00|292.74|-1587.50| +2452181|62777|10277|82654|81736|5618|27547|1|249|60|62|28.05|33.37|25.69|0.00|1592.78|1739.10|2068.94|95.56|0.00|1592.78|1688.34|-146.32| +2452181|62777|633|82654|81736|5618|27547|1|10|60|71|96.74|162.52|87.76|0.00|6230.96|6868.54|11538.92|560.78|0.00|6230.96|6791.74|-637.58| +2452181|62777|4235|82654|81736|5618|27547|1|275|60|28|29.67|41.53|27.82|280.42|778.96|830.76|1162.84|4.98|280.42|498.54|503.52|-332.22| +||4937|||5618|||162|60|22|27.75|47.17||0.00||610.50|1037.74||0.00||744.51|| +2452181|62777|7231|82654|81736|5618|27547|1|259|60|95|45.42|88.11|79.29|0.00|7532.55|4314.90|8370.45|301.30|0.00|7532.55|7833.85|3217.65| +2452181|62777|13975|82654|81736|5618|27547|1|68|60|14|76.01|127.69|31.92|0.00|446.88|1064.14|1787.66|31.28|0.00|446.88|478.16|-617.26| +2452181|62777|10393|82654|81736|5618|27547|1|34|60|75|98.86|168.06|20.16|1375.92|1512.00|7414.50|12604.50|12.24|1375.92|136.08|148.32|-7278.42| +2452181|62777|1573|82654|81736|5618|27547|1|258|60|90|19.02|31.00|1.55|0.00|139.50|1711.80|2790.00|4.18|0.00|139.50|143.68|-1572.30| +2452181|62777|999|82654|81736|5618|27547|1|140|60|43|22.13|43.81|29.35|0.00|1262.05|951.59|1883.83|88.34|0.00|1262.05|1350.39|310.46| +2452181|62777|4041|82654|81736|5618|27547|1|285|60|25|36.26|52.21|8.35|0.00|208.75|906.50|1305.25|12.52|0.00|208.75|221.27|-697.75| +2452181|62777|17755|82654|81736|5618|27547|1|256|60|88|52.17|88.16|85.51|0.00|7524.88|4590.96|7758.08|0.00|0.00|7524.88|7524.88|2933.92| +2452181|62777|4513|82654|81736|5618|27547|1|163|60|72|79.56|146.39|139.07|0.00|10013.04|5728.32|10540.08|500.65|0.00|10013.04|10513.69|4284.72| +2452181|62777|16887|82654|81736|5618|27547|1|219|60|25|17.92|22.75|9.32|0.00|233.00|448.00|568.75|9.32|0.00|233.00|242.32|-215.00| +2451181|71311|1106|151|1065156|561|29166|1|9|61|4|78.21|95.41|31.48|0.00|125.92|312.84|381.64|1.25|0.00|125.92|127.17|-186.92| +2451181|71311|10330|151|1065156|561|29166|1|193|61|8|46.45|87.79|75.49|0.00|603.92|371.60|702.32|48.31|0.00|603.92|652.23|232.32| +2451181|71311|8924|151|1065156|561|29166|1|175|61|11|86.51|134.09|127.38|0.00|1401.18|951.61|1474.99|56.04|0.00|1401.18|1457.22|449.57| +2451181|71311|4567|151|1065156|561|29166|1|151|61|26|29.60|50.61|19.23|24.99|499.98|769.60|1315.86|4.74|24.99|474.99|479.73|-294.61| +2451181|71311|16462|151|1065156|561|29166|1|112|61|26|24.34|37.97|21.64|0.00|562.64|632.84|987.22|45.01|0.00|562.64|607.65|-70.20| +2451181|71311|6380|151|1065156|561|29166|1|233|61|77|69.52|70.91|16.30|0.00|1255.10|5353.04|5460.07|50.20|0.00|1255.10|1305.30|-4097.94| +2451181|71311|5528|151|1065156|561|29166|1|117|61|78|13.85|24.23|9.20|0.00|717.60|1080.30|1889.94|28.70|0.00|717.60|746.30|-362.70| +2451181||3362||1065156|561||1||61|48|67.92|||||3260.16|5737.44|||1548.96|1564.44|-1711.20| +2451181|71311|7591|151|1065156|561|29166|1|212|61|78|91.99|127.86|56.25|0.00|4387.50|7175.22|9973.08|0.00|0.00|4387.50|4387.50|-2787.72| +2451181|71311|2264|151|1065156|561|29166|1|219|61|36|60.94|80.44|16.89|0.00|608.04|2193.84|2895.84|42.56|0.00|608.04|650.60|-1585.80| +2452184|50871|12199|98197|570263|5176|26889|10|239|62|5|85.54|112.91|29.35|0.00|146.75|427.70|564.55|5.87|0.00|146.75|152.62|-280.95| +2452184||12407||570263|5176|26889|10|243|62|||||1799.82|2727.00|4462.80|8523.60|64.90|1799.82|927.18||| +2452184|50871|8457|98197|570263|5176|26889|10|264|62|37|99.97|103.96|94.60|35.00|3500.20|3698.89|3846.52|207.91|35.00|3465.20|3673.11|-233.69| +2452184|50871|16151|98197|570263|5176|26889|10|293|62|93|84.72|150.80|16.58|1310.64|1541.94|7878.96|14024.40|16.19|1310.64|231.30|247.49|-7647.66| +2452184|50871|15733|98197|570263|5176|26889|10|249|62|40|28.03|45.40|40.86|310.53|1634.40|1121.20|1816.00|105.90|310.53|1323.87|1429.77|202.67| +2452184||6403|||||||62||92.02|||0.00|5801.41||7251.94|232.05|0.00||6033.46|-732.01| +2452184|50871|4093|98197|570263|5176|26889|10|115|62|94|5.53|10.78|5.39|0.00|506.66|519.82|1013.32|15.19|0.00|506.66|521.85|-13.16| +2452184|50871|12163|98197|570263|5176|26889|10|287|62|29|16.70|16.86|11.29|0.00|327.41|484.30|488.94|29.46|0.00|327.41|356.87|-156.89| +2452184|50871|15399|98197|570263|5176|26889|10|122|62|74|71.70|136.94|86.27|1915.19|6383.98|5305.80|10133.56|357.50|1915.19|4468.79|4826.29|-837.01| +2452184|50871|13559|98197|570263|5176|26889|10|242|62|80|52.56|80.94|74.46|0.00|5956.80|4204.80|6475.20|357.40|0.00|5956.80|6314.20|1752.00| +2452184|50871|10149|98197|570263|5176|26889|10|143|62|75|48.36|61.41|38.07|2455.51|2855.25|3627.00|4605.75|27.98|2455.51|399.74|427.72|-3227.26| +2452543|36708|11946|96129|245000|5071|13142|8|115|63|85|94.28|94.28|32.99|0.00|2804.15|8013.80|8013.80|140.20|0.00|2804.15|2944.35|-5209.65| +2452543|36708|16569|96129|245000|5071||||63|69||125.43||||||||666.41||| +2452543|36708|5079|96129|245000|5071|13142|8|161|63|79|36.05|71.01|34.79|0.00|2748.41|2847.95|5609.79|27.48|0.00|2748.41|2775.89|-99.54| +2452543|36708|11370|96129|245000|5071|13142|8|115|63|38|56.43|86.90|26.07|0.00|990.66|2144.34|3302.20|29.71|0.00|990.66|1020.37|-1153.68| +2452543|36708|13339|96129|245000|5071|13142|8|134|63|19|19.44|25.85|4.91|0.00|93.29|369.36|491.15|0.00|0.00|93.29|93.29|-276.07| +2452543|36708|9319|96129|245000|5071|13142|8|203|63|80|9.27|13.62|10.48|0.00|838.40|741.60|1089.60|50.30|0.00|838.40|888.70|96.80| +2452543|36708|5217|96129|245000|5071|13142|8|202|63|66|15.71|18.85|7.72|0.00|509.52|1036.86|1244.10|45.85|0.00|509.52|555.37|-527.34| +2452543|36708|4488|96129|245000|5071|13142|8|207|63|73|22.85|44.78|22.83|483.31|1666.59|1668.05|3268.94|11.83|483.31|1183.28|1195.11|-484.77| +2452543|36708|15793|96129|245000|5071|13142|8|287|63|40|75.62|129.31|69.82|0.00|2792.80|3024.80|5172.40|83.78|0.00|2792.80|2876.58|-232.00| +2452543|36708|5658|96129|245000|5071|13142|8|101|63|99|88.78|111.86|64.87|0.00|6422.13|8789.22|11074.14|577.99|0.00|6422.13|7000.12|-2367.09| +2452414|44845|14407|48017|1111710|203|7449|10|91|64|8|44.36|55.45|27.17|63.03|217.36|354.88|443.60|7.71|63.03|154.33|162.04|-200.55| +2452414|44845|15867|48017|1111710|203|7449|10|163|64|59|43.77|52.96|30.71|0.00|1811.89|2582.43|3124.64|126.83|0.00|1811.89|1938.72|-770.54| +2452414|44845|11835|48017|1111710|203|7449|10|232|64|82|30.65|54.55|15.81|0.00|1296.42|2513.30|4473.10|90.74|0.00|1296.42|1387.16|-1216.88| +||1213|48017|1111710|203|||163|64||38.46|65.38||0.00|943.92|2922.96|||0.00|||| +2452414|44845|15936|48017|1111710|203|7449|10|151|64|30|56.24|64.11|55.77|0.00|1673.10|1687.20|1923.30|117.11|0.00|1673.10|1790.21|-14.10| +||13224|48017|1111710|203||||64||||||||6670.37||||6389.50|1634.64| +2452414|44845|16921|48017|1111710|203|7449|10|203|64|19|98.61|143.97|2.87|0.00|54.53|1873.59|2735.43|0.00|0.00|54.53|54.53|-1819.06| +2452414|44845|17617|48017|1111710|203|7449|10|44|64|17|91.67|119.17|29.79|0.00|506.43|1558.39|2025.89|20.25|0.00|506.43|526.68|-1051.96| +||3963|48017||||10||64||||18.03|737.78||4137.88|7985.60|15.20|737.78|380.08||| +2452414|44845|17586|48017|1111710|203|7449|10|133|64|78|77.26|124.38|68.40|0.00|5335.20|6026.28|9701.64|0.00|0.00|5335.20|5335.20|-691.08| +2452414|44845|3090|48017|1111710|203|7449|10|49|64|87|78.06|156.12|104.60|455.01|9100.20|6791.22|13582.44|0.00|455.01|8645.19|8645.19|1853.97| +2452262|53102|15177|43973|1627323|5073|39623|4|208|65|55|89.19|139.13|125.21|0.00|6886.55|4905.45|7652.15|482.05|0.00|6886.55|7368.60|1981.10| +2452262|53102|13897|43973|1627323|5073|39623|4|227|65|40|52.84|66.57|51.25|0.00|2050.00|2113.60|2662.80|82.00|0.00|2050.00|2132.00|-63.60| +2452262|53102|14905|43973|1627323|5073|39623|4|277|65|85|81.24|157.60|31.52|0.00|2679.20|6905.40|13396.00|187.54|0.00|2679.20|2866.74|-4226.20| +2452262|53102|4227|43973|1627323|5073|39623|4|264|65|42|45.38|53.54|10.17|0.00|427.14|1905.96|2248.68|12.81|0.00|427.14|439.95|-1478.82| +2452262|53102|9625|43973|1627323|5073|39623|4|69|65|51|40.95|40.95|30.30|0.00|1545.30|2088.45|2088.45|30.90|0.00|1545.30|1576.20|-543.15| +2452262|53102|17025|43973|1627323|5073|39623|4|253|65|67|25.52|37.76|32.09|107.50|2150.03|1709.84|2529.92|122.55|107.50|2042.53|2165.08|332.69| +2452262|53102|2287|43973|1627323|5073|39623|4|114|65|100|91.80|125.76|125.76|0.00|12576.00|9180.00|12576.00|251.52|0.00|12576.00|12827.52|3396.00| +2452262|53102|9847|43973|1627323|5073|39623|4|189|65|54|64.26|87.39|14.85|0.00|801.90|3470.04|4719.06|16.03|0.00|801.90|817.93|-2668.14| +2452187|39658|8197|66766|1444812|3658|43304|2|177|66|41|84.22|124.64|54.84|0.00|2248.44|3453.02|5110.24|0.00|0.00|2248.44|2248.44|-1204.58| +2452187|39658|6507|66766|1444812|3658|43304|2|293|66|76|43.81|56.07|42.05|0.00|3195.80|3329.56|4261.32|127.83|0.00|3195.80|3323.63|-133.76| +|39658|9237|66766|1444812|3658|43304|||66|29|76.94|||629.21|998.76|||14.78|629.21|||| +2452187|39658|7227|66766|1444812|3658|43304|2|224|66|66|92.15|97.67|95.71|0.00|6316.86|6081.90|6446.22|126.33|0.00|6316.86|6443.19|234.96| +2452187|39658|15629|66766|1444812|3658|43304|2|150|66|20|22.04|41.21|15.65|0.00|313.00|440.80|824.20|18.78|0.00|313.00|331.78|-127.80| +2452187|39658|11419|66766|1444812|3658|43304|2|67|66|66|10.12|12.75|12.36|350.77|815.76|667.92|841.50|4.64|350.77|464.99|469.63|-202.93| +2452187|39658|10019|66766|1444812|3658|43304|2|122|66|10|48.77|69.25|58.17|0.00|581.70|487.70|692.50|0.00|0.00|581.70|581.70|94.00| +2452187|39658|7033|66766|1444812|3658|43304|2|97|66|65|4.08|5.30|3.28|0.00|213.20|265.20|344.50|14.92|0.00|213.20|228.12|-52.00| +2452187|39658|16795|66766|1444812|3658|43304|2|153|66|28|42.00|81.06|9.72|0.00|272.16|1176.00|2269.68|0.00|0.00|272.16|272.16|-903.84| +2452187|39658|16745|66766|1444812|3658|43304|2|45|66|91|9.53|16.39|8.19|0.00|745.29|867.23|1491.49|67.07|0.00|745.29|812.36|-121.94| +2452424|57161|757|94624|1655162|6900|14591|8|228|67|77|94.12|118.59|106.73|0.00|8218.21|7247.24|9131.43|657.45|0.00|8218.21|8875.66|970.97| +2452424|57161|8871|94624|1655162|6900|14591|8|9|67|71|78.59|87.23|79.37|3606.57|5635.27|5579.89|6193.33|81.14|3606.57|2028.70|2109.84|-3551.19| +2452424|57161|3439|94624|1655162|6900|14591|8|137|67|73|23.52|35.04|23.12|0.00|1687.76|1716.96|2557.92|135.02|0.00|1687.76|1822.78|-29.20| +2452424|57161|7020|94624|1655162|6900|14591|8|182|67|79|97.01|154.24|131.10|0.00|10356.90|7663.79|12184.96|207.13|0.00|10356.90|10564.03|2693.11| +2452424|57161|5113||||14591|8||67||49.59|58.51|54.41|0.00|||702.12||0.00||659.44|| +2452424|57161|4155|94624|1655162|6900|14591|8|32|67|87|87.74|143.89|15.82|0.00|1376.34|7633.38|12518.43|0.00|0.00|1376.34|1376.34|-6257.04| +2452424|57161|15699|94624|1655162|6900|14591|8|252|67|44|34.59|41.50|35.69|0.00|1570.36|1521.96|1826.00|125.62|0.00|1570.36|1695.98|48.40| +2452424|57161|12087|94624|1655162|6900|14591|8|249|67|70|80.71|129.94|51.97|0.00|3637.90|5649.70|9095.80|145.51|0.00|3637.90|3783.41|-2011.80| +2452424|57161|7507|94624|1655162|6900|14591|8|4|67|77|26.78|53.56|1.07|0.00|82.39|2062.06|4124.12|1.64|0.00|82.39|84.03|-1979.67| +2452424|57161|8469|94624|1655162|6900|14591|||67|59||85.43|76.03|0.00|||5040.37||0.00|||637.79| +2452424|57161|2133|94624|1655162|6900|14591|8|288|67|74|71.99|76.30|14.49|0.00|1072.26|5327.26|5646.20|42.89|0.00|1072.26|1115.15|-4255.00| +2451095||7765|2564|291068|5172||||68||69.58|95.32||0.00||2087.40||70.34|0.00||1242.74|-915.00| +2451095|38136|1603|2564|291068|5172|12476|10|111|68|57|21.03|26.07|22.42|945.67|1277.94|1198.71|1485.99|3.32|945.67|332.27|335.59|-866.44| +2451095|38136|5162|2564|291068|5172|12476|10|203|68|23|83.48|155.27|10.86|0.00|249.78|1920.04|3571.21|2.49|0.00|249.78|252.27|-1670.26| +2451095|38136|2296|2564|291068|5172|12476|10|101|68|52|98.90|168.13|166.44|0.00|8654.88|5142.80|8742.76|605.84|0.00|8654.88|9260.72|3512.08| +2451095|38136|17426|2564|291068|5172|12476|10|267|68|2|48.36|59.48|1.18|0.00|2.36|96.72|118.96|0.16|0.00|2.36|2.52|-94.36| +2451095|38136|17600|2564|291068|5172|12476|10|277|68|13|52.66|57.92|10.42|101.59|135.46|684.58|752.96|1.35|101.59|33.87|35.22|-650.71| +2451095|38136|12724|2564|291068|5172|12476|10|264|68|88|9.63|11.65|8.50|0.00|748.00|847.44|1025.20|22.44|0.00|748.00|770.44|-99.44| +2451095|38136|2564|2564|291068|5172|12476|10|153|68|83|77.32|134.53|6.72|0.00|557.76|6417.56|11165.99|11.15|0.00|557.76|568.91|-5859.80| +2451095|38136|6763|2564|291068|5172|12476|10|282|68|77|96.29|112.65|68.71|0.00|5290.67|7414.33|8674.05|317.44|0.00|5290.67|5608.11|-2123.66| +2451095|38136|2035|2564|291068|5172|12476|10|173|68|22|54.35|100.54|18.09|0.00|397.98|1195.70|2211.88|23.87|0.00|397.98|421.85|-797.72| +2451095|38136|1387|2564|291068|5172|12476|10|122|68|74|90.20|103.73|94.39|0.00|6984.86|6674.80|7676.02|279.39|0.00|6984.86|7264.25|310.06| +2451095|38136|1820|2564|291068|5172|12476|10|5|68|54|55.82|98.24|33.40|0.00|1803.60|3014.28|5304.96|72.14|0.00|1803.60|1875.74|-1210.68| +2451095|38136|12526|2564|291068|5172|12476|10|86|68|3|13.06|20.11|19.30|53.26|57.90|39.18|60.33|0.23|53.26|4.64|4.87|-34.54| +2451524|50604|4267|22064|294863|2062|27261|1|244|69|10|72.37|72.37|46.31|0.00|463.10|723.70|723.70|41.67|0.00|463.10|504.77|-260.60| +2451524|50604|7822|22064|294863|2062|27261|1|8|69|30|78.10|134.33|79.25|1664.25|2377.50|2343.00|4029.90|64.19|1664.25|713.25|777.44|-1629.75| +2451524|50604|322|||||||69|45||84.53||||||7.22||||| +2451524|50604|11137|22064|294863|2062|27261|1|238|69|68|22.04|22.26|8.68|0.00|590.24|1498.72|1513.68|47.21|0.00|590.24|637.45|-908.48| +|50604|13792|||||1||69||85.64||2.89|||2483.56|||||84.64|| +2451524|50604|13489|22064|294863|2062|27261|1|264|69|66|2.68|3.16|1.92|0.00|126.72|176.88|208.56|6.33|0.00|126.72|133.05|-50.16| +2451524|50604|15448|22064|294863|2062|27261|1|149|69|16|94.38|111.36|60.13|913.97|962.08|1510.08|1781.76|2.40|913.97|48.11|50.51|-1461.97| +2451524|50604|6136|22064|294863|2062|27261|1|107|69|7|49.79|75.68|33.29|0.00|233.03|348.53|529.76|2.33|0.00|233.03|235.36|-115.50| +2451524|50604|337|22064|294863|2062|27261|1|279|69|34|20.99|27.07|12.45|0.00|423.30|713.66|920.38|12.69|0.00|423.30|435.99|-290.36| +2451524|50604|8599|22064|294863|2062|27261|1|106|69|53|56.42|58.11|26.73|0.00|1416.69|2990.26|3079.83|56.66|0.00|1416.69|1473.35|-1573.57| +2451524|50604|7264|22064|294863|2062|27261|1|34|69|67|78.29|90.03|71.12|0.00|4765.04|5245.43|6032.01|190.60|0.00|4765.04|4955.64|-480.39| +2451524|50604|4208|22064|294863|2062|27261|1|185|69|9|99.77|120.72|25.35|0.00|228.15|897.93|1086.48|15.97|0.00|228.15|244.12|-669.78| +2451880|64866|6185|4344|1865354|4317|18927|10|144|70|82|84.60|141.28|62.16|0.00|5097.12|6937.20|11584.96|101.94|0.00|5097.12|5199.06|-1840.08| +2451880|64866|2462|4344||||||70||92.70||46.16|0.00||||108.93|0.00|2723.44||-2745.86| +|64866|6425|4344|1865354|||10||70||||24.72||2076.48|3289.44|5065.20|||2076.48||| +2451880|64866|8893|4344|1865354|4317|18927|10|244|70|17|63.51|104.15|99.98|0.00|1699.66|1079.67|1770.55|152.96|0.00|1699.66|1852.62|619.99| +2451880|64866|1592|4344|1865354|4317|18927|10|262|70|53|99.59|127.47|119.82|0.00|6350.46|5278.27|6755.91|63.50|0.00|6350.46|6413.96|1072.19| +2451880|64866|3947|4344|1865354||18927||295|70||63.80||||4224.08|||126.72|||4350.80|1799.68| +2451880|64866|14549|4344|1865354|4317|18927|10|79|70|4|35.39|40.69|1.22|0.00|4.88|141.56|162.76|0.34|0.00|4.88|5.22|-136.68| +2451880|64866|17815|4344|1865354|4317|18927|10|292|70|95|36.89|42.79|4.27|0.00|405.65|3504.55|4065.05|16.22|0.00|405.65|421.87|-3098.90| +2451880|64866|9857|4344|1865354|4317|18927|10|193|70|20|54.96|97.82|41.08|0.00|821.60|1099.20|1956.40|41.08|0.00|821.60|862.68|-277.60| +2451880|64866|3296|4344|1865354|4317|18927|10|125|70|48|10.23|17.59|1.93|0.00|92.64|491.04|844.32|7.41|0.00|92.64|100.05|-398.40| +2451161|66803|2098|85239|571432|5978|30571|1|188|71|51|57.87|64.23|26.97|0.00|1375.47|2951.37|3275.73|27.50|0.00|1375.47|1402.97|-1575.90| +2451161|66803|9274|85239|571432|5978|30571|1|75|71|36|12.39|24.53|17.66|464.10|635.76|446.04|883.08|12.01|464.10|171.66|183.67|-274.38| +2451161|66803|10288|85239|571432|5978|30571|1|101|71|30|29.57|40.21|30.96|0.00|928.80|887.10|1206.30|18.57|0.00|928.80|947.37|41.70| +2451161||5858|85239||||1||71||||||||87.99|0.20||20.22||-34.11| +2451161|66803|10108|85239|571432|5978|30571|1|42|71|66|9.49|18.79|5.82|0.00|384.12|626.34|1240.14|3.84|0.00|384.12|387.96|-242.22| +2451161|66803|9997|85239|571432|5978|30571|1|210|71|26|53.28|54.87|41.15|0.00|1069.90|1385.28|1426.62|10.69|0.00|1069.90|1080.59|-315.38| +2451161|66803|17246|85239|571432|5978|30571|1|59|71|90|50.57|77.87|46.72|0.00|4204.80|4551.30|7008.30|378.43|0.00|4204.80|4583.23|-346.50| +2451161|66803|9790|85239|571432|5978|30571|1|108|71|96|37.78|68.38|7.52|0.00|721.92|3626.88|6564.48|64.97|0.00|721.92|786.89|-2904.96| +2451161|66803|4144|85239|571432|5978|30571|1|226|71|49|26.75|53.23|23.42|0.00|1147.58|1310.75|2608.27|91.80|0.00|1147.58|1239.38|-163.17| +2451161|66803|8887|85239|571432|5978|30571|1|219|71|10|61.40|91.48|32.93|0.00|329.30|614.00|914.80|3.29|0.00|329.30|332.59|-284.70| +2451161|66803|6008|85239|571432|5978|30571|1|45|71|54|38.98|66.65|63.98|0.00|3454.92|2104.92|3599.10|310.94|0.00|3454.92|3765.86|1350.00| +2451161|66803|457|85239|571432|5978|30571|1|179|71|75|27.02|42.42|41.99|0.00|3149.25|2026.50|3181.50|94.47|0.00|3149.25|3243.72|1122.75| +2451161|66803|11168|85239|571432|5978|30571|1|228|71|79|24.66|29.83|14.61|0.00|1154.19|1948.14|2356.57|80.79|0.00|1154.19|1234.98|-793.95| +||9769|||5978||1||71|79|52.15||50.35|0.00|3977.65||5849.95|238.65|0.00|3977.65||-142.20| +2451161|66803|7504|85239|571432|5978|30571|1|9|71|3|78.44|147.46|76.67|0.00|230.01|235.32|442.38|13.80|0.00|230.01|243.81|-5.31| +2451161|66803|1888|85239|571432|5978|30571|1|36|71|4|40.47|59.08|2.36|0.00|9.44|161.88|236.32|0.84|0.00|9.44|10.28|-152.44| +2451791|44195|13423|60602|1460628|5454|16633|8|215|72|62|34.39|51.58|37.13|207.18|2302.06|2132.18|3197.96|104.74|207.18|2094.88|2199.62|-37.30| +2451791|44195|10427|60602|1460628|5454|16633|8|43|72|66|55.31|101.77|15.26|0.00|1007.16|3650.46|6716.82|60.42|0.00|1007.16|1067.58|-2643.30| +2451791|44195|6113|60602|1460628|5454|16633|8|176|72|45|59.65|117.51|37.60|0.00|1692.00|2684.25|5287.95|135.36|0.00|1692.00|1827.36|-992.25| +2451791|44195|9860|60602|1460628|5454|16633|8|60|72|26|69.92|130.05|124.84|0.00|3245.84|1817.92|3381.30|129.83|0.00|3245.84|3375.67|1427.92| +2451791|44195|10753|60602|1460628|5454|16633|8|92|72|16|32.01|52.81|29.57|0.00|473.12|512.16|844.96|37.84|0.00|473.12|510.96|-39.04| +2451791|44195|12788|60602|1460628|5454|16633|8|224|72|29|34.57|40.79|19.57|0.00|567.53|1002.53|1182.91|22.70|0.00|567.53|590.23|-435.00| +2451791||5917|||5454||||72|85||8.51|4.59|0.00||436.05|||0.00|390.15||| +2451791|44195|13904|60602|1460628|5454|16633|8|77|72|37|40.39|43.62|41.87|1549.19|1549.19|1494.43|1613.94|0.00|1549.19|0.00|0.00|-1494.43| +2451791|44195|15587|60602|1460628|5454|16633|8|284|72|87|19.04|20.75|17.43|0.00|1516.41|1656.48|1805.25|75.82|0.00|1516.41|1592.23|-140.07| +2451791|44195|11741|60602|1460628|5454|16633|8|181|72|62|79.25|137.89|95.14|0.00|5898.68|4913.50|8549.18|235.94|0.00|5898.68|6134.62|985.18| +2451791|44195|1535|||5454|16633|8||72|9|69.06|||0.00|45.18|621.54||2.71|0.00||47.89|| +2451791|44195|16765|60602|1460628|5454|16633|8|256|72|56|89.44|104.64|52.32|0.00|2929.92|5008.64|5859.84|205.09|0.00|2929.92|3135.01|-2078.72| +2451791|44195|12901|60602|1460628|5454|16633|8|50|72|57|1.64|2.91|1.36|0.00|77.52|93.48|165.87|2.32|0.00|77.52|79.84|-15.96| +2451791|44195|6671|60602|1460628|5454|16633|8|195|72|13|42.82|67.65|55.47|0.00|721.11|556.66|879.45|7.21|0.00|721.11|728.32|164.45| +2451791|44195|13085|60602|1460628|5454|16633|8|74|72|94|85.13|143.01|118.69|0.00|11156.86|8002.22|13442.94|1004.11|0.00|11156.86|12160.97|3154.64| +2451434|64285|16519|5309|868000|5091|31429|2|91|73|97|82.11|86.21|65.51|0.00|6354.47|7964.67|8362.37|444.81|0.00|6354.47|6799.28|-1610.20| +2451434|64285|6862|5309|868000|5091|31429|2|199|73|58|86.48|142.69|97.02|0.00|5627.16|5015.84|8276.02|225.08|0.00|5627.16|5852.24|611.32| +|64285|17269||868000|5091||2||73|40||11.30|9.49|0.00||||0.00|0.00|379.60||| +2451434|64285|15109|5309|868000|5091|31429|2|270|73|38|53.90|76.53|74.99|2707.13|2849.62|2048.20|2908.14|1.42|2707.13|142.49|143.91|-1905.71| +2451434|64285|247|5309|868000|5091|31429|2|240|73|53|5.22|5.58|3.57|0.00|189.21|276.66|295.74|17.02|0.00|189.21|206.23|-87.45| +2451434|64285|16585|5309|868000|5091|31429|2|276|73|38|69.27|99.74|38.89|0.00|1477.82|2632.26|3790.12|118.22|0.00|1477.82|1596.04|-1154.44| +2451434|64285|10051|5309|868000|5091|31429|2|150|73|49|97.28|107.98|104.74|2771.42|5132.26|4766.72|5291.02|94.43|2771.42|2360.84|2455.27|-2405.88| +2451434|64285|3205|5309|868000|5091|31429|2|22|73|82|44.64|86.60|26.84|0.00|2200.88|3660.48|7101.20|66.02|0.00|2200.88|2266.90|-1459.60| +2451434|64285|12502|5309|868000|5091|31429|2|176|73|75|21.63|42.39|28.40|0.00|2130.00|1622.25|3179.25|149.10|0.00|2130.00|2279.10|507.75| +2451434|64285|1063|5309|868000|5091|31429|2|244|73|37|34.93|46.80|37.90|0.00|1402.30|1292.41|1731.60|42.06|0.00|1402.30|1444.36|109.89| +2451434|64285|4946|5309|868000|5091|31429|2|18|73|54|71.08|85.29|36.67|0.00|1980.18|3838.32|4605.66|99.00|0.00|1980.18|2079.18|-1858.14| +2451111|36520|3104|62205|1003527|4049|47771|1|143|74|78|52.23|104.46|82.52|0.00|6436.56|4073.94|8147.88|386.19|0.00|6436.56|6822.75|2362.62| +2451111|36520|16694|62205|1003527|4049|47771|1|122|74|72|36.04|58.38|11.09|0.00|798.48|2594.88|4203.36|39.92|0.00|798.48|838.40|-1796.40| +2451111|36520|326|62205|1003527|4049|47771|1|99|74|29|76.73|108.95|46.84|624.84|1358.36|2225.17|3159.55|7.33|624.84|733.52|740.85|-1491.65| +2451111|36520|5492|62205|1003527|4049|47771|1|80|74|54|31.24|32.80|14.10|0.00|761.40|1686.96|1771.20|45.68|0.00|761.40|807.08|-925.56| +2451111|36520|9620|62205|1003527|4049|47771|1|210|74|95|56.35|91.28|83.97|0.00|7977.15|5353.25|8671.60|558.40|0.00|7977.15|8535.55|2623.90| +2451111|36520|8653|62205|1003527|4049|47771|1|292|74|12|4.33|7.66|5.28|0.00|63.36|51.96|91.92|0.00|0.00|63.36|63.36|11.40| +2451111|36520|13208|62205|1003527|4049|47771|1|291|74|87|82.61|100.78|86.67|0.00|7540.29|7187.07|8767.86|75.40|0.00|7540.29|7615.69|353.22| +2451111|36520|3175|62205|1003527|4049|47771|1|274|74|23|50.69|82.62|9.08|0.00|208.84|1165.87|1900.26|0.00|0.00|208.84|208.84|-957.03| +2451111|36520|10069|62205|1003527|4049|47771|1|164|74|99|99.98|104.97|98.67|0.00|9768.33|9898.02|10392.03|683.78|0.00|9768.33|10452.11|-129.69| +2451111|36520|3754|62205|1003527|4049|47771|1|124|74|26|89.35|162.61|115.45|0.00|3001.70|2323.10|4227.86|180.10|0.00|3001.70|3181.80|678.60| +2451111|36520|3278|||||1||74||||56.91||||||||3872.15|-726.39| +2451111|36520|3542|62205|1003527|4049|47771|1|180|74|96|93.18|131.38|42.04|0.00|4035.84|8945.28|12612.48|242.15|0.00|4035.84|4277.99|-4909.44| +2451111|36520|7694|62205|1003527|4049|47771|1|37|74|17|36.61|69.19|67.11|0.00|1140.87|622.37|1176.23|11.40|0.00|1140.87|1152.27|518.50| +2451883|30123|14186|18184|770971|111|14098|2|135|75|63|82.77|122.49|11.02|0.00|694.26|5214.51|7716.87|20.82|0.00|694.26|715.08|-4520.25| +2451883|30123|8726|18184|770971|111|14098|2|269|75|6|25.87|26.64|13.05|0.00|78.30|155.22|159.84|0.00|0.00|78.30|78.30|-76.92| +2451883|30123|607|18184|770971|111|14098|2|67|75|20|88.61|100.12|61.07|0.00|1221.40|1772.20|2002.40|85.49|0.00|1221.40|1306.89|-550.80| +2451883|30123|4625|18184|770971|111|14098|2|159|75|73|76.04|116.34|79.11|0.00|5775.03|5550.92|8492.82|231.00|0.00|5775.03|6006.03|224.11| +2451883|30123|10217|18184|770971|111|14098|2|142|75|85|83.25|100.73|37.27|0.00|3167.95|7076.25|8562.05|285.11|0.00|3167.95|3453.06|-3908.30| +2451883|30123|2948|18184|770971|111|14098|2|151|75|25|7.48|11.07|9.40|0.00|235.00|187.00|276.75|2.35|0.00|235.00|237.35|48.00| +2451883|30123|6938|18184|770971|111|14098|2|224|75|89|20.73|36.48|26.99|0.00|2402.11|1844.97|3246.72|24.02|0.00|2402.11|2426.13|557.14| +2451883|30123|9905|18184|770971|111|14098|2|291|75|54|63.01|78.76|77.18|0.00|4167.72|3402.54|4253.04|208.38|0.00|4167.72|4376.10|765.18| +2451883|30123|6953|18184|770971|111|14098|2|58|75|71|33.34|57.67|4.03|0.00|286.13|2367.14|4094.57|2.86|0.00|286.13|288.99|-2081.01| +2451883|30123|11039|18184|770971|111|14098|2|79|75|70|87.84|110.67|13.28|0.00|929.60|6148.80|7746.90|74.36|0.00|929.60|1003.96|-5219.20| +2451883|30123|16796|18184|770971|111|14098|2|178|75|93|5.19|6.02|0.66|0.00|61.38|482.67|559.86|1.22|0.00|61.38|62.60|-421.29| +2452143|39901|257|53531|580721|1958|24348|8|284|76|5|8.47|11.34|2.15|0.00|10.75|42.35|56.70|0.10|0.00|10.75|10.85|-31.60| +2452143|39901|1503|53531|580721|1958|24348|8|192|76|97|30.22|32.93|20.41|1207.65|1979.77|2931.34|3194.21|38.60|1207.65|772.12|810.72|-2159.22| +2452143||2869||580721|||||76|32|||||||1564.80|||1267.20|1355.90|| +2452143||465||||||278|76|2|95.45||76.51|0.00|153.02||318.80||0.00|153.02||-37.88| +2452143|39901|4237|53531|580721|1958|24348|8|18|76|48|60.58|81.17|55.19|0.00|2649.12|2907.84|3896.16|158.94|0.00|2649.12|2808.06|-258.72| +|39901|1107|||1958||8|203|76|16||84.68|||||1354.88|4.24||212.12||-715.88| +2452143|39901|10331|53531|580721|1958|24348|8|157|76|3|29.09|57.01|37.05|0.00|111.15|87.27|171.03|6.66|0.00|111.15|117.81|23.88| +2452143|39901|8925|53531|580721|1958|24348|8|31|76|6|80.04|108.05|22.69|0.00|136.14|480.24|648.30|12.25|0.00|136.14|148.39|-344.10| +2452143|39901|4567|53531|580721|1958|24348|8|111|76|40|2.19|3.00|1.29|0.00|51.60|87.60|120.00|1.54|0.00|51.60|53.14|-36.00| +2452143|39901|16463|53531|580721|1958|24348|8|151|76|53|86.06|104.13|27.07|0.00|1434.71|4561.18|5518.89|100.42|0.00|1434.71|1535.13|-3126.47| +2452143|39901|6381|53531|580721|1958|24348|8|156|76|50|34.93|63.92|32.59|0.00|1629.50|1746.50|3196.00|32.59|0.00|1629.50|1662.09|-117.00| +2452143|39901|5529|53531|580721|1958|24348|8|59|76|78|49.64|65.52|53.07|0.00|4139.46|3871.92|5110.56|165.57|0.00|4139.46|4305.03|267.54| +2452143|39901|3363|53531|580721|1958|24348|8|153|76|25|89.90|106.08|77.43|1529.24|1935.75|2247.50|2652.00|20.32|1529.24|406.51|426.83|-1840.99| +2452143|39901|7591|53531|580721|1958|24348|8|207|76|27|61.86|89.69|80.72|0.00|2179.44|1670.22|2421.63|21.79|0.00|2179.44|2201.23|509.22| +2452143|39901|2265|53531|580721|1958|24348|8|18|76|98|89.70|95.08|29.47|0.00|2888.06|8790.60|9317.84|0.00|0.00|2888.06|2888.06|-5902.54| +2451083|53379|13456|19214|1611001|1988|16175|2|171|77|48|85.61|113.86|108.16|0.00|5191.68|4109.28|5465.28|51.91|0.00|5191.68|5243.59|1082.40| +2451083|53379|7448|19214|1611001|1988|16175|2|74|77|95|29.07|54.07|17.84|0.00|1694.80|2761.65|5136.65|84.74|0.00|1694.80|1779.54|-1066.85| +2451083|53379|2713|19214|1611001|1988|16175|2|284|77|85|85.72|129.43|56.94|0.00|4839.90|7286.20|11001.55|387.19|0.00|4839.90|5227.09|-2446.30| +2451083|53379|1399|19214|1611001|1988|16175|2|161|77|34|96.21|182.79|29.24|596.49|994.16|3271.14|6214.86|3.97|596.49|397.67|401.64|-2873.47| +2451083|53379|7339|19214|1611001|1988|16175|2|54|77|88|31.13|59.14|13.60|155.58|1196.80|2739.44|5204.32|10.41|155.58|1041.22|1051.63|-1698.22| +2451083|53379|8686|19214|1611001|1988|16175|2|225|77|38|45.30|84.25|37.91|0.00|1440.58|1721.40|3201.50|72.02|0.00|1440.58|1512.60|-280.82| +2451083|53379|12439|19214|1611001|1988|16175|2|9|77|95|74.32|115.93|31.30|0.00|2973.50|7060.40|11013.35|118.94|0.00|2973.50|3092.44|-4086.90| +2451083|53379|9220|19214|1611001|1988|16175|2|270|77|90|87.41|138.10|75.95|0.00|6835.50|7866.90|12429.00|136.71|0.00|6835.50|6972.21|-1031.40| +2451083|53379|992|19214|1611001|1988|16175|2|295|77|62|21.65|33.34|3.33|0.00|206.46|1342.30|2067.08|10.32|0.00|206.46|216.78|-1135.84| +2451083||7486|19214|1611001|1988||2||77|49||84.08|||535.57|||26.77||535.57|562.34|| +2451083|53379|6289|19214|1611001|1988|16175|2|217|77|30|26.16|32.70|30.41|0.00|912.30|784.80|981.00|54.73|0.00|912.30|967.03|127.50| +2451083|53379|3868|19214|1611001|1988|16175|2|140|77|89|3.72|6.28|1.31|0.00|116.59|331.08|558.92|9.32|0.00|116.59|125.91|-214.49| +2451083|53379|16687|19214|1611001|1988|16175|2|175|77|16|67.63|119.02|86.88|0.00|1390.08|1082.08|1904.32|97.30|0.00|1390.08|1487.38|308.00| +2451083|53379|11918|19214|1611001|1988|16175|2|167|77|36|25.95|42.03|19.75|0.00|711.00|934.20|1513.08|28.44|0.00|711.00|739.44|-223.20| +2451083|53379|14815|19214|1611001|1988|16175|2|277|77|18|69.28|87.29|52.37|0.00|942.66|1247.04|1571.22|84.83|0.00|942.66|1027.49|-304.38| +2451063|30397|6110|10282|743469|2609|19796|4|249|78|43|28.45|40.68|10.98|0.00|472.14|1223.35|1749.24|23.60|0.00|472.14|495.74|-751.21| +2451063|30397|6044|10282|743469|2609|19796|4|213|78|59|15.94|29.01|25.52|240.90|1505.68|940.46|1711.59|50.59|240.90|1264.78|1315.37|324.32| +2451063|30397|11209|10282|743469|2609|19796|4|187|78|7|88.17|166.64|121.64|664.15|851.48|617.19|1166.48|1.87|664.15|187.33|189.20|-429.86| +2451063|30397|6500|10282|743469|2609|19796|4|289|78|76|38.42|68.77|63.26|4375.06|4807.76|2919.92|5226.52|12.98|4375.06|432.70|445.68|-2487.22| +2451063|30397|3304|10282|743469|2609|19796|4|252|78|50|61.49|75.01|72.00|0.00|3600.00|3074.50|3750.50|216.00|0.00|3600.00|3816.00|525.50| +2451063|30397|7576|10282|743469|2609|19796|4|180|78|87|60.62|83.65|15.89|0.00|1382.43|5273.94|7277.55|41.47|0.00|1382.43|1423.90|-3891.51| +2451063|30397|14996|10282|743469|2609|19796|4|213|78|39|36.47|53.24|8.51|0.00|331.89|1422.33|2076.36|3.31|0.00|331.89|335.20|-1090.44| +2451063|30397|901|10282|743469|2609|19796|4|49|78|3|54.50|105.73|88.81|223.80|266.43|163.50|317.19|1.70|223.80|42.63|44.33|-120.87| +2451063|30397|12706|10282|743469|2609|19796|4|124|78|19|81.10|116.78|82.91|0.00|1575.29|1540.90|2218.82|94.51|0.00|1575.29|1669.80|34.39| +2451063|30397|5965|10282|743469|2609|19796|4|8|78|78|7.47|13.22|0.26|0.00|20.28|582.66|1031.16|1.62|0.00|20.28|21.90|-562.38| +2451063|30397|8611|10282|743469|2609|19796|4|40|78|79|95.42|163.16|76.68|0.00|6057.72|7538.18|12889.64|0.00|0.00|6057.72|6057.72|-1480.46| +2451063|30397|3856|10282|743469|2609|19796|4|9|78|27|60.10|87.14|73.19|0.00|1976.13|1622.70|2352.78|158.09|0.00|1976.13|2134.22|353.43| +2451063|30397|10507|10282|743469|2609|19796|4|56|78|6|50.83|57.94|36.50|0.00|219.00|304.98|347.64|6.57|0.00|219.00|225.57|-85.98| +2452280|32066|16519|62017|1062416|1215|43261|7|117|79|9|69.84|98.47|12.80|0.00|115.20|628.56|886.23|4.60|0.00|115.20|119.80|-513.36| +2452280|32066|6864|62017|1062416|1215|43261|7|1|79|1|86.12|105.92|68.84|0.00|68.84|86.12|105.92|1.37|0.00|68.84|70.21|-17.28| +2452280|32066|17269|62017|1062416|1215|43261|7|216|79|81|5.88|9.52|1.61|0.00|130.41|476.28|771.12|11.73|0.00|130.41|142.14|-345.87| +2452280|32066|15109|||1215|43261|7|150|79||45.07|52.73|20.03||620.93|1397.17||||||| +2452280|32066|247|62017||||7||79|||113.96|28.49||227.92|660.64|911.68|||227.92||-432.72| +2452280|32066|16585|62017|1062416|1215|43261|7|252|79|93|70.70|114.53|9.16|0.00|851.88|6575.10|10651.29|0.00|0.00|851.88|851.88|-5723.22| +2452280|32066|10051|62017|1062416|1215|43261|7|156|79|10|94.53|124.77|19.96|0.00|199.60|945.30|1247.70|17.96|0.00|199.60|217.56|-745.70| +2452280|32066|3205|62017|1062416|1215|43261|7|133|79|48|21.34|26.67|15.20|0.00|729.60|1024.32|1280.16|7.29|0.00|729.60|736.89|-294.72| +2452280|32066|12504|62017|1062416|1215|43261|7|141|79|81|14.87|27.80|5.28|0.00|427.68|1204.47|2251.80|12.83|0.00|427.68|440.51|-776.79| +2452280|32066|1063|62017|1062416|1215|43261|7|224|79|85|77.51|148.81|139.88|0.00|11889.80|6588.35|12648.85|118.89|0.00|11889.80|12008.69|5301.45| +2452280|32066|4947|62017|1062416|1215|43261|7|14|79|35|99.77|180.58|74.03|1114.15|2591.05|3491.95|6320.30|44.30|1114.15|1476.90|1521.20|-2015.05| +2452280|32066|10524|62017|1062416|1215|43261|7|202|79|36|21.73|22.81|5.24|0.00|188.64|782.28|821.16|11.31|0.00|188.64|199.95|-593.64| +2452280|32066|14322|62017|1062416|1215|43261|7|18|79|41|58.88|109.51|64.61|0.00|2649.01|2414.08|4489.91|185.43|0.00|2649.01|2834.44|234.93| +2452280|32066|15888|62017|1062416|1215|43261|7|154|79|58|99.75|146.63|23.46|1156.57|1360.68|5785.50|8504.54|18.36|1156.57|204.11|222.47|-5581.39| +2452280|32066|15498|62017|1062416|1215|43261|7|181|79|3|94.64|147.63|87.10|0.00|261.30|283.92|442.89|23.51|0.00|261.30|284.81|-22.62| +2451143|67039|7231|17368|633451|1887|30323|10|27|80|49|76.07|116.38|95.43|0.00|4676.07|3727.43|5702.62|327.32|0.00|4676.07|5003.39|948.64| +2451143|67039|13975|17368|633451|1887|30323|10|162|80|13|83.81|136.61|121.58|0.00|1580.54|1089.53|1775.93|47.41|0.00|1580.54|1627.95|491.01| +2451143|67039|10393|17368|633451|1887|30323|10|283|80|5|71.37|97.06|67.94|0.00|339.70|356.85|485.30|20.38|0.00|339.70|360.08|-17.15| +2451143|67039|1573|17368|633451|1887|30323|10|137|80|40|43.33|83.62|81.94|0.00|3277.60|1733.20|3344.80|196.65|0.00|3277.60|3474.25|1544.40| +2451143|67039|998|17368|633451|1887|30323|10|297|80|93|69.32|75.55|24.93|0.00|2318.49|6446.76|7026.15|208.66|0.00|2318.49|2527.15|-4128.27| +2451143|67039|4040|17368|633451|1887|30323|10|94|80|66|15.01|27.91|3.07|0.00|202.62|990.66|1842.06|14.18|0.00|202.62|216.80|-788.04| +2451143|67039|17755|17368|633451|1887|30323|10|147|80|94|56.04|64.44|12.24|0.00|1150.56|5267.76|6057.36|46.02|0.00|1150.56|1196.58|-4117.20| +2451143|67039|4513||||30323|10||80||76.02||112.82|0.00|9251.24|6233.64|9537.42||0.00||9898.82|3017.60| +2451143|67039|16886|17368|633451|1887|30323|10|189|80|77|89.22|146.32|7.31|135.08|562.87|6869.94|11266.64|4.27|135.08|427.79|432.06|-6442.15| +2451143|67039|1519|17368|633451|1887|30323|10|147|80|25|66.36|130.06|58.52|0.00|1463.00|1659.00|3251.50|0.00|0.00|1463.00|1463.00|-196.00| +2451143|67039|7610|17368|633451|1887|30323|10|201|80|37|24.62|26.09|21.13|0.00|781.81|910.94|965.33|15.63|0.00|781.81|797.44|-129.13| +||12968|17368|633451||||197|80|||28.84|16.15|||2103.93|2797.48|140.98||||| +2451143|67039|4622|17368|633451|1887|30323|10|249|80|1|60.10|110.58|33.17|0.00|33.17|60.10|110.58|2.32|0.00|33.17|35.49|-26.93| +2451143|67039|17308|17368|633451|1887|30323|10|57|80|29|94.38|159.50|71.77|0.00|2081.33|2737.02|4625.50|104.06|0.00|2081.33|2185.39|-655.69| +2451143|67039|13717|17368|633451|1887|30323|10|137|80|91|60.42|116.00|106.72|0.00|9711.52|5498.22|10556.00|97.11|0.00|9711.52|9808.63|4213.30| +2451143|67039|16363|17368|633451|1887|30323|10|262|80|84|84.80|109.39|25.15|0.00|2112.60|7123.20|9188.76|84.50|0.00|2112.60|2197.10|-5010.60| +2451167|61212|5078|24625|258943|3661|29179|7|258|81|75|33.72|35.06|11.21|0.00|840.75|2529.00|2629.50|58.85|0.00|840.75|899.60|-1688.25| +2451167||11368|24625||3661|29179|7||81|26||43.18||582.98|594.88|951.60||0.11|582.98||12.01|-939.70| +2451167|61212|13339|24625|258943|3661|29179|7|261|81|6|4.63|8.19|7.20|36.72|43.20|27.78|49.14|0.25|36.72|6.48|6.73|-21.30| +2451167|61212|9319|24625|258943|3661|29179|7|79|81|36|91.74|143.11|64.39|1831.25|2318.04|3302.64|5151.96|14.60|1831.25|486.79|501.39|-2815.85| +2451167|61212|5216|24625|258943|3661|29179|7|81|81|64|4.59|6.33|6.26|0.00|400.64|293.76|405.12|4.00|0.00|400.64|404.64|106.88| +2451167|61212|4486|24625|258943|3661|29179|7|64|81|31|63.84|79.16|3.95|0.00|122.45|1979.04|2453.96|7.34|0.00|122.45|129.79|-1856.59| +2451167|61212|15793|24625|258943|3661|29179|7|229|81|8|5.61|10.09|10.09|0.00|80.72|44.88|80.72|1.61|0.00|80.72|82.33|35.84| +2451167|61212|5656|24625|258943|3661|29179|7|136|81|24|40.61|76.34|0.00|0.00|0.00|974.64|1832.16|0.00|0.00|0.00|0.00|-974.64| +2451167|61212|8918|24625|258943|3661|29179|7|62|81|37|86.54|154.04|61.61|0.00|2279.57|3201.98|5699.48|205.16|0.00|2279.57|2484.73|-922.41| +2451167|61212|7166|24625|258943|3661|29179|7|259|81|7|22.87|40.93|0.00|0.00|0.00|160.09|286.51|0.00|0.00|0.00|0.00|-160.09| +2451167|61212|11107|24625|258943|3661|29179|7|29|81|36|47.86|86.14|74.08|0.00|2666.88|1722.96|3101.04|160.01|0.00|2666.88|2826.89|943.92| +2451167|61212|7663|24625|258943|3661|29179|7|284|81|79|52.07|59.35|16.61|0.00|1312.19|4113.53|4688.65|104.97|0.00|1312.19|1417.16|-2801.34| +2451363|75450|7862|20896|1350703|157|46411|4|36|82|75|21.65|25.98|21.30|0.00|1597.50|1623.75|1948.50|79.87|0.00|1597.50|1677.37|-26.25| +2451363|75450|14998|20896|1350703|157|46411|4|249|82|49|52.59|57.32|33.81|0.00|1656.69|2576.91|2808.68|149.10|0.00|1656.69|1805.79|-920.22| +2451363|75450|13138|20896|1350703|157|46411|4|125|82|59|31.81|41.67|11.66|564.11|687.94|1876.79|2458.53|6.19|564.11|123.83|130.02|-1752.96| +2451363|75450|17041|20896|1350703|157|46411|4|17|82|18|4.71|7.25|4.93|0.00|88.74|84.78|130.50|6.21|0.00|88.74|94.95|3.96| +2451363|75450|2572|20896|1350703|157|46411|4|154|82|53|55.41|109.71|86.67|0.00|4593.51|2936.73|5814.63|91.87|0.00|4593.51|4685.38|1656.78| diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 5734d5ca812d..e342d155fc8d 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -165,6 +165,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vector_distinct_2.q,\ vector_elt.q,\ vector_groupby_3.q,\ + vector_groupby_reduce.q,\ vector_left_outer_join.q,\ vector_mapjoin_reduce.q,\ vector_non_string_partition.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java index 6274cb6c2aa1..86b60ab9b4cb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java @@ -851,11 +851,19 @@ private void changeToUnsortedStreamingMode() throws HiveException { @Override public void startGroup() throws HiveException { processingMode.startGroup(); + + // We do not call startGroup on operators below because we are batching rows in + // an output batch and the semantics will not work. + // super.startGroup(); } @Override public void endGroup() throws HiveException { processingMode.endGroup(); + + // We do not call endGroup on operators below because we are batching rows in + // an output batch and the semantics will not work. + // super.endGroup(); } @Override diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java index 9cbec1f9191b..648cdb1f9cc3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java @@ -1040,6 +1040,10 @@ private boolean validateGroupByOperator(GroupByOperator op, boolean isReduce, bo return false; } if (desc.getKeys().size() > 0) { + if (op.getParentOperators().size() > 0) { + LOG.info("Reduce vector mode can only handle a key group GROUP BY operator when it is fed by reduce-shuffle"); + return false; + } LOG.info("Reduce-side GROUP BY will process key groups"); vectorDesc.setVectorGroupBatches(true); } else { diff --git a/ql/src/test/queries/clientpositive/vector_groupby_reduce.q b/ql/src/test/queries/clientpositive/vector_groupby_reduce.q new file mode 100644 index 000000000000..5da20893a042 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_groupby_reduce.q @@ -0,0 +1,129 @@ +SET hive.vectorized.execution.enabled=true; + +create table store_sales_txt +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +row format delimited fields terminated by '|' +stored as textfile; + +LOAD DATA LOCAL INPATH '../../data/files/store_sales.txt' OVERWRITE INTO TABLE store_sales_txt; + +create table store_sales +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +stored as orc +tblproperties ("orc.stripe.size"="33554432", "orc.compress.size"="16384"); + +set hive.exec.dynamic.partition.mode=nonstrict; + +insert overwrite table store_sales +select +ss_sold_date_sk , + ss_sold_time_sk , + ss_item_sk , + ss_customer_sk , + ss_cdemo_sk , + ss_hdemo_sk , + ss_addr_sk , + ss_store_sk , + ss_promo_sk , + ss_ticket_number , + ss_quantity , + ss_wholesale_cost , + ss_list_price , + ss_sales_price , + ss_ext_discount_amt , + ss_ext_sales_price , + ss_ext_wholesale_cost , + ss_ext_list_price , + ss_ext_tax , + ss_coupon_amt , + ss_net_paid , + ss_net_paid_inc_tax , + ss_net_profit + from store_sales_txt; + +explain +select + ss_ticket_number +from + store_sales +group by ss_ticket_number +limit 20; + +select + ss_ticket_number +from + store_sales +group by ss_ticket_number +limit 20; + +explain +select + min(ss_ticket_number) +from + (select + ss_ticket_number + from + store_sales + group by ss_ticket_number) a +group by ss_ticket_number +limit 20; + +select + min(ss_ticket_number) +from + (select + ss_ticket_number + from + store_sales + group by ss_ticket_number) a +group by ss_ticket_number +limit 20; + diff --git a/ql/src/test/results/clientpositive/tez/vector_groupby_reduce.q.out b/ql/src/test/results/clientpositive/tez/vector_groupby_reduce.q.out new file mode 100644 index 000000000000..d45fbde84bdc --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_groupby_reduce.q.out @@ -0,0 +1,466 @@ +PREHOOK: query: create table store_sales_txt +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +row format delimited fields terminated by '|' +stored as textfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@store_sales_txt +POSTHOOK: query: create table store_sales_txt +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +row format delimited fields terminated by '|' +stored as textfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@store_sales_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/store_sales.txt' OVERWRITE INTO TABLE store_sales_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@store_sales_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/store_sales.txt' OVERWRITE INTO TABLE store_sales_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@store_sales_txt +PREHOOK: query: create table store_sales +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +stored as orc +tblproperties ("orc.stripe.size"="33554432", "orc.compress.size"="16384") +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@store_sales +POSTHOOK: query: create table store_sales +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +stored as orc +tblproperties ("orc.stripe.size"="33554432", "orc.compress.size"="16384") +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@store_sales +PREHOOK: query: insert overwrite table store_sales +select +ss_sold_date_sk , + ss_sold_time_sk , + ss_item_sk , + ss_customer_sk , + ss_cdemo_sk , + ss_hdemo_sk , + ss_addr_sk , + ss_store_sk , + ss_promo_sk , + ss_ticket_number , + ss_quantity , + ss_wholesale_cost , + ss_list_price , + ss_sales_price , + ss_ext_discount_amt , + ss_ext_sales_price , + ss_ext_wholesale_cost , + ss_ext_list_price , + ss_ext_tax , + ss_coupon_amt , + ss_net_paid , + ss_net_paid_inc_tax , + ss_net_profit + from store_sales_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@store_sales_txt +PREHOOK: Output: default@store_sales +POSTHOOK: query: insert overwrite table store_sales +select +ss_sold_date_sk , + ss_sold_time_sk , + ss_item_sk , + ss_customer_sk , + ss_cdemo_sk , + ss_hdemo_sk , + ss_addr_sk , + ss_store_sk , + ss_promo_sk , + ss_ticket_number , + ss_quantity , + ss_wholesale_cost , + ss_list_price , + ss_sales_price , + ss_ext_discount_amt , + ss_ext_sales_price , + ss_ext_wholesale_cost , + ss_ext_list_price , + ss_ext_tax , + ss_coupon_amt , + ss_net_paid , + ss_net_paid_inc_tax , + ss_net_profit + from store_sales_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@store_sales_txt +POSTHOOK: Output: default@store_sales +POSTHOOK: Lineage: store_sales.ss_addr_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_cdemo_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_coupon_amt SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_coupon_amt, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_customer_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ext_discount_amt SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ext_discount_amt, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ext_list_price SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ext_list_price, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ext_sales_price SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ext_sales_price, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ext_tax SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ext_tax, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ext_wholesale_cost SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ext_wholesale_cost, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_hdemo_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_item_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_list_price SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_list_price, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_net_paid SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_net_paid, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_net_paid_inc_tax SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_net_profit SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_promo_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_quantity SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_sales_price SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_sales_price, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_sold_date_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_sold_time_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_store_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_store_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ticket_number SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ticket_number, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_wholesale_cost SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_wholesale_cost, type:float, comment:null), ] +PREHOOK: query: explain +select + ss_ticket_number +from + store_sales +group by ss_ticket_number +limit 20 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select + ss_ticket_number +from + store_sales +group by ss_ticket_number +limit 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: store_sales + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_ticket_number (type: int) + outputColumnNames: ss_ticket_number + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ss_ticket_number (type: int) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 44138 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 44138 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 1760 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 1760 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: select + ss_ticket_number +from + store_sales +group by ss_ticket_number +limit 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@store_sales +#### A masked pattern was here #### +POSTHOOK: query: select + ss_ticket_number +from + store_sales +group by ss_ticket_number +limit 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@store_sales +#### A masked pattern was here #### +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +PREHOOK: query: explain +select + min(ss_ticket_number) +from + (select + ss_ticket_number + from + store_sales + group by ss_ticket_number) a +group by ss_ticket_number +limit 20 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select + min(ss_ticket_number) +from + (select + ss_ticket_number + from + store_sales + group by ss_ticket_number) a +group by ss_ticket_number +limit 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: store_sales + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_ticket_number (type: int) + outputColumnNames: ss_ticket_number + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ss_ticket_number (type: int) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 44138 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 44138 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: min(_col0) + keys: _col0 (type: int) + mode: complete + outputColumnNames: _col0, _col1 + Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 1760 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 1760 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: select + min(ss_ticket_number) +from + (select + ss_ticket_number + from + store_sales + group by ss_ticket_number) a +group by ss_ticket_number +limit 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@store_sales +#### A masked pattern was here #### +POSTHOOK: query: select + min(ss_ticket_number) +from + (select + ss_ticket_number + from + store_sales + group by ss_ticket_number) a +group by ss_ticket_number +limit 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@store_sales +#### A masked pattern was here #### +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 diff --git a/ql/src/test/results/clientpositive/vector_groupby_reduce.q.out b/ql/src/test/results/clientpositive/vector_groupby_reduce.q.out new file mode 100644 index 000000000000..438d6b6467bf --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_groupby_reduce.q.out @@ -0,0 +1,453 @@ +PREHOOK: query: create table store_sales_txt +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +row format delimited fields terminated by '|' +stored as textfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@store_sales_txt +POSTHOOK: query: create table store_sales_txt +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +row format delimited fields terminated by '|' +stored as textfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@store_sales_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/store_sales.txt' OVERWRITE INTO TABLE store_sales_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@store_sales_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/store_sales.txt' OVERWRITE INTO TABLE store_sales_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@store_sales_txt +PREHOOK: query: create table store_sales +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +stored as orc +tblproperties ("orc.stripe.size"="33554432", "orc.compress.size"="16384") +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@store_sales +POSTHOOK: query: create table store_sales +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +stored as orc +tblproperties ("orc.stripe.size"="33554432", "orc.compress.size"="16384") +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@store_sales +PREHOOK: query: insert overwrite table store_sales +select +ss_sold_date_sk , + ss_sold_time_sk , + ss_item_sk , + ss_customer_sk , + ss_cdemo_sk , + ss_hdemo_sk , + ss_addr_sk , + ss_store_sk , + ss_promo_sk , + ss_ticket_number , + ss_quantity , + ss_wholesale_cost , + ss_list_price , + ss_sales_price , + ss_ext_discount_amt , + ss_ext_sales_price , + ss_ext_wholesale_cost , + ss_ext_list_price , + ss_ext_tax , + ss_coupon_amt , + ss_net_paid , + ss_net_paid_inc_tax , + ss_net_profit + from store_sales_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@store_sales_txt +PREHOOK: Output: default@store_sales +POSTHOOK: query: insert overwrite table store_sales +select +ss_sold_date_sk , + ss_sold_time_sk , + ss_item_sk , + ss_customer_sk , + ss_cdemo_sk , + ss_hdemo_sk , + ss_addr_sk , + ss_store_sk , + ss_promo_sk , + ss_ticket_number , + ss_quantity , + ss_wholesale_cost , + ss_list_price , + ss_sales_price , + ss_ext_discount_amt , + ss_ext_sales_price , + ss_ext_wholesale_cost , + ss_ext_list_price , + ss_ext_tax , + ss_coupon_amt , + ss_net_paid , + ss_net_paid_inc_tax , + ss_net_profit + from store_sales_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@store_sales_txt +POSTHOOK: Output: default@store_sales +POSTHOOK: Lineage: store_sales.ss_addr_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_addr_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_cdemo_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_cdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_coupon_amt SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_coupon_amt, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_customer_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_customer_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ext_discount_amt SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ext_discount_amt, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ext_list_price SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ext_list_price, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ext_sales_price SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ext_sales_price, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ext_tax SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ext_tax, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ext_wholesale_cost SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ext_wholesale_cost, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_hdemo_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_hdemo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_item_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_list_price SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_list_price, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_net_paid SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_net_paid, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_net_paid_inc_tax SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_net_paid_inc_tax, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_net_profit SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_net_profit, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_promo_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_promo_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_quantity SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_quantity, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_sales_price SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_sales_price, type:float, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_sold_date_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_sold_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_sold_time_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_sold_time_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_store_sk SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_store_sk, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_ticket_number SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_ticket_number, type:int, comment:null), ] +POSTHOOK: Lineage: store_sales.ss_wholesale_cost SIMPLE [(store_sales_txt)store_sales_txt.FieldSchema(name:ss_wholesale_cost, type:float, comment:null), ] +PREHOOK: query: explain +select + ss_ticket_number +from + store_sales +group by ss_ticket_number +limit 20 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select + ss_ticket_number +from + store_sales +group by ss_ticket_number +limit 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: store_sales + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_ticket_number (type: int) + outputColumnNames: ss_ticket_number + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ss_ticket_number (type: int) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 44138 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 44138 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 1760 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 1760 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: select + ss_ticket_number +from + store_sales +group by ss_ticket_number +limit 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@store_sales +#### A masked pattern was here #### +POSTHOOK: query: select + ss_ticket_number +from + store_sales +group by ss_ticket_number +limit 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@store_sales +#### A masked pattern was here #### +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +PREHOOK: query: explain +select + min(ss_ticket_number) +from + (select + ss_ticket_number + from + store_sales + group by ss_ticket_number) a +group by ss_ticket_number +limit 20 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select + min(ss_ticket_number) +from + (select + ss_ticket_number + from + store_sales + group by ss_ticket_number) a +group by ss_ticket_number +limit 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: store_sales + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ss_ticket_number (type: int) + outputColumnNames: ss_ticket_number + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ss_ticket_number (type: int) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 44138 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 44138 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: min(_col0) + keys: _col0 (type: int) + mode: complete + outputColumnNames: _col0, _col1 + Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 1760 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 1760 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: select + min(ss_ticket_number) +from + (select + ss_ticket_number + from + store_sales + group by ss_ticket_number) a +group by ss_ticket_number +limit 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@store_sales +#### A masked pattern was here #### +POSTHOOK: query: select + min(ss_ticket_number) +from + (select + ss_ticket_number + from + store_sales + group by ss_ticket_number) a +group by ss_ticket_number +limit 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@store_sales +#### A masked pattern was here #### +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 From 3eb9fab8cb9d1691c8e284484efae9892c27fdf5 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Fri, 17 Oct 2014 15:42:35 +0000 Subject: [PATCH 120/339] HIVE-8476 : JavaDoc updates to HiveEndPoint.newConnection() for secure streaming with Kerberos (Roshan Naik via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632616 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hive/hcatalog/streaming/HiveEndPoint.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java index 91c8dd7083b0..aad73d00e3d4 100644 --- a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java +++ b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java @@ -130,11 +130,16 @@ public StreamingConnection newConnection(final boolean createPartIfNotExists, Hi } /** - * Acquire a new connection to MetaStore for streaming + * Acquire a new connection to MetaStore for streaming. To connect using Kerberos, + * 'authenticatedUser' argument should have been used to do a kerberos login. Additionally the + * 'hive.metastore.kerberos.principal' setting should be set correctly either in hive-site.xml or + * in the 'conf' argument (if not null). If using hive-site.xml, it should be in classpath. + * * @param createPartIfNotExists If true, the partition specified in the endpoint * will be auto created if it does not exist + * @param conf HiveConf object to be used for the connection. Can be null. * @param authenticatedUser UserGroupInformation object obtained from successful authentication. - * Uses insecure mode if this argument is null. + * Uses non-secure mode if this argument is null. * @return * @throws ConnectionError if there is a connection problem * @throws InvalidPartition if specified partition is not valid (createPartIfNotExists = false) From 1d1cfc0b6ea61aeba4097168580f9f51e60d8f79 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Fri, 17 Oct 2014 18:35:21 +0000 Subject: [PATCH 121/339] HIVE-8411: Support partial partition spec for certain ALTER PARTITION statements (Jason Dere, reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632648 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/ErrorMsg.java | 2 + .../apache/hadoop/hive/ql/exec/DDLTask.java | 133 +-- .../hive/ql/parse/DDLSemanticAnalyzer.java | 20 +- .../hadoop/hive/ql/plan/AlterTableDesc.java | 19 + ...alter_partition_partial_spec_dyndisabled.q | 13 + .../alter_partition_change_col.q | 66 +- ...r_partition_partial_spec_dyndisabled.q.out | 40 + .../alter_partition_change_col.q.out | 780 +++++++++++------- 8 files changed, 679 insertions(+), 394 deletions(-) create mode 100644 ql/src/test/queries/clientnegative/alter_partition_partial_spec_dyndisabled.q create mode 100644 ql/src/test/results/clientnegative/alter_partition_partial_spec_dyndisabled.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java index 31978fe3af29..9ac540ef3e83 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java @@ -421,6 +421,8 @@ public enum ErrorMsg { "an AcidOutputFormat or is not bucketed", true), ACID_NO_SORTED_BUCKETS(10298, "ACID insert, update, delete not supported on tables that are " + "sorted, table {0}", true), + ALTER_TABLE_TYPE_PARTIAL_PARTITION_SPEC_NO_SUPPORTED(10299, + "Alter table partition type {0} does not allow partial partition spec"), //========================== 20000 range starts here ========================// SCRIPT_INIT_ERROR(20000, "Unable to initialize custom script."), diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index d5374bc8eaed..4d0e89dbf4c1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -88,6 +88,7 @@ import org.apache.hadoop.hive.ql.metadata.formatting.MetaDataFormatter; import org.apache.hadoop.hive.ql.parse.AlterTablePartMergeFilesDesc; import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer; +import org.apache.hadoop.hive.ql.parse.DDLSemanticAnalyzer; import org.apache.hadoop.hive.ql.plan.AddPartitionDesc; import org.apache.hadoop.hive.ql.plan.AlterDatabaseDesc; import org.apache.hadoop.hive.ql.plan.AlterIndexDesc; @@ -3259,22 +3260,77 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { // alter the table Table tbl = db.getTable(alterTbl.getOldName()); - Partition part = null; List allPartitions = null; if (alterTbl.getPartSpec() != null) { - if (alterTbl.getOp() != AlterTableDesc.AlterTableTypes.ALTERPROTECTMODE) { - part = db.getPartition(tbl, alterTbl.getPartSpec(), false); + Map partSpec = alterTbl.getPartSpec(); + if (DDLSemanticAnalyzer.isFullSpec(tbl, partSpec)) { + allPartitions = new ArrayList(); + Partition part = db.getPartition(tbl, partSpec, false); if (part == null) { + // User provided a fully specified partition spec but it doesn't exist, fail. throw new HiveException(ErrorMsg.INVALID_PARTITION, - StringUtils.join(alterTbl.getPartSpec().keySet(), ',') + " for table " + alterTbl.getOldName()); + StringUtils.join(alterTbl.getPartSpec().keySet(), ',') + " for table " + alterTbl.getOldName()); + } - } - else { + allPartitions.add(part); + } else { + // DDLSemanticAnalyzer has already checked if partial partition specs are allowed, + // thus we should not need to check it here. allPartitions = db.getPartitions(tbl, alterTbl.getPartSpec()); } } Table oldTbl = tbl.copy(); + if (allPartitions != null) { + // Alter all partitions + for (Partition part : allPartitions) { + alterTableOrSinglePartition(alterTbl, tbl, part); + } + } else { + // Just alter the table + alterTableOrSinglePartition(alterTbl, tbl, null); + } + + if (allPartitions == null) { + updateModifiedParameters(tbl.getTTable().getParameters(), conf); + tbl.checkValidity(); + } else { + for (Partition tmpPart: allPartitions) { + updateModifiedParameters(tmpPart.getParameters(), conf); + } + } + + try { + if (allPartitions == null) { + db.alterTable(alterTbl.getOldName(), tbl); + } else { + db.alterPartitions(tbl.getTableName(), allPartitions); + } + } catch (InvalidOperationException e) { + LOG.error("alter table: " + stringifyException(e)); + throw new HiveException(e, ErrorMsg.GENERIC_ERROR); + } + + // This is kind of hacky - the read entity contains the old table, whereas + // the write entity + // contains the new table. This is needed for rename - both the old and the + // new table names are + // passed + // Don't acquire locks for any of these, we have already asked for them in DDLSemanticAnalyzer. + if (allPartitions != null ) { + for (Partition tmpPart: allPartitions) { + work.getInputs().add(new ReadEntity(tmpPart)); + work.getOutputs().add(new WriteEntity(tmpPart, WriteEntity.WriteType.DDL_NO_LOCK)); + } + } else { + work.getInputs().add(new ReadEntity(oldTbl)); + work.getOutputs().add(new WriteEntity(tbl, WriteEntity.WriteType.DDL_NO_LOCK)); + } + return 0; + } + + private int alterTableOrSinglePartition(AlterTableDesc alterTbl, Table tbl, Partition part) + throws HiveException { List oldCols = (part == null ? tbl.getCols() : part.getCols()); StorageDescriptor sd = (part == null ? tbl.getTTable().getSd() : part.getTPartition().getSd()); @@ -3420,12 +3476,10 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { AlterTableDesc.ProtectModeType protectMode = alterTbl.getProtectModeType(); ProtectMode mode = null; - if (allPartitions != null) { - for (Partition tmpPart: allPartitions) { - mode = tmpPart.getProtectMode(); - setAlterProtectMode(protectModeEnable, protectMode, mode); - tmpPart.setProtectMode(mode); - } + if (part != null) { + mode = part.getProtectMode(); + setAlterProtectMode(protectModeEnable, protectMode, mode); + part.setProtectMode(mode); } else { mode = tbl.getProtectMode(); setAlterProtectMode(protectModeEnable,protectMode, mode); @@ -3468,12 +3522,12 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { throw new HiveException(e); } } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ADDSKEWEDBY) { - /* Validation's been done at compile time. no validation is needed here. */ + // Validation's been done at compile time. no validation is needed here. List skewedColNames = null; List> skewedValues = null; if (alterTbl.isTurnOffSkewed()) { - /* Convert skewed table to non-skewed table. */ + // Convert skewed table to non-skewed table. skewedColNames = new ArrayList(); skewedValues = new ArrayList>(); } else { @@ -3482,7 +3536,7 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { } if ( null == tbl.getSkewedInfo()) { - /* Convert non-skewed table to skewed table. */ + // Convert non-skewed table to skewed table. SkewedInfo skewedInfo = new SkewedInfo(); skewedInfo.setSkewedColNames(skewedColNames); skewedInfo.setSkewedColValues(skewedValues); @@ -3524,59 +3578,12 @@ private int alterTable(Hive db, AlterTableDesc alterTbl) throws HiveException { } tbl.setNumBuckets(alterTbl.getNumberBuckets()); } - } else { + } else { throw new HiveException(ErrorMsg.UNSUPPORTED_ALTER_TBL_OP, alterTbl.getOp().toString()); } - if (part == null && allPartitions == null) { - updateModifiedParameters(tbl.getTTable().getParameters(), conf); - tbl.checkValidity(); - } else if (part != null) { - updateModifiedParameters(part.getParameters(), conf); - } - else { - for (Partition tmpPart: allPartitions) { - updateModifiedParameters(tmpPart.getParameters(), conf); - } - } - - try { - if (part == null && allPartitions == null) { - db.alterTable(alterTbl.getOldName(), tbl); - } else if (part != null) { - db.alterPartition(tbl.getTableName(), part); - } - else { - db.alterPartitions(tbl.getTableName(), allPartitions); - } - } catch (InvalidOperationException e) { - LOG.info("alter table: " + stringifyException(e)); - throw new HiveException(e, ErrorMsg.GENERIC_ERROR); - } - - // This is kind of hacky - the read entity contains the old table, whereas - // the write entity - // contains the new table. This is needed for rename - both the old and the - // new table names are - // passed - // Don't acquire locks for any of these, we have already asked for them in DDLSemanticAnalyzer. - if(part != null) { - work.getInputs().add(new ReadEntity(part)); - work.getOutputs().add(new WriteEntity(part, WriteEntity.WriteType.DDL_NO_LOCK)); - } - else if (allPartitions != null ){ - for (Partition tmpPart: allPartitions) { - work.getInputs().add(new ReadEntity(tmpPart)); - work.getOutputs().add(new WriteEntity(tmpPart, WriteEntity.WriteType.DDL_NO_LOCK)); - } - } - else { - work.getInputs().add(new ReadEntity(oldTbl)); - work.getOutputs().add(new WriteEntity(tbl, WriteEntity.WriteType.DDL_NO_LOCK)); - } return 0; } - /** * Drop a given table or some partitions. DropTableDesc is currently used for both. * diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index 4e58ad8df421..7783f5f0c0db 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -1034,7 +1034,7 @@ private void analyzeTruncateTable(ASTNode ast) throws SemanticException { rootTasks.add(truncateTask); } - private boolean isFullSpec(Table table, Map partSpec) { + public static boolean isFullSpec(Table table, Map partSpec) { for (FieldSchema partCol : table.getPartCols()) { if (partSpec.get(partCol.getName()) == null) { return false; @@ -1399,11 +1399,21 @@ private void addInputsOutputsAlterTable(String tableName, Map pa // ReadEntity as no lock. re.noLockNeeded(); inputs.add(re); - if (desc == null || desc.getOp() != AlterTableDesc.AlterTableTypes.ALTERPROTECTMODE) { + + if (isFullSpec(tab, partSpec)) { + // Fully specified partition spec Partition part = getPartition(tab, partSpec, true); - outputs.add(new WriteEntity(part, writeType)); - } - else { + outputs.add(new WriteEntity(part, writeType)); + } else { + // Partial partition spec supplied. Make sure this is allowed. + if (desc == null + || !AlterTableDesc.doesAlterTableTypeSupportPartialPartitionSpec(desc.getOp())) { + throw new SemanticException( + ErrorMsg.ALTER_TABLE_TYPE_PARTIAL_PARTITION_SPEC_NO_SUPPORTED, desc.getOp().name()); + } else if (!conf.getBoolVar(HiveConf.ConfVars.DYNAMICPARTITIONING)) { + throw new SemanticException(ErrorMsg.DYNAMIC_PARTITION_DISABLED); + } + for (Partition part : getPartitions(tab, partSpec, true)) { outputs.add(new WriteEntity(part, writeType)); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java index 298bbca7379f..f869821d2c92 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java @@ -21,8 +21,10 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.Order; @@ -63,6 +65,20 @@ public static enum ProtectModeType { NO_DROP, OFFLINE, READ_ONLY, NO_DROP_CASCADE } + public static final Set alterTableTypesWithPartialSpec = + new HashSet(); + + static { + alterTableTypesWithPartialSpec.add(AlterTableDesc.AlterTableTypes.ALTERPROTECTMODE); + alterTableTypesWithPartialSpec.add(AlterTableDesc.AlterTableTypes.ADDCOLS); + alterTableTypesWithPartialSpec.add(AlterTableDesc.AlterTableTypes.REPLACECOLS); + alterTableTypesWithPartialSpec.add(AlterTableDesc.AlterTableTypes.RENAMECOLUMN); + alterTableTypesWithPartialSpec.add(AlterTableDesc.AlterTableTypes.ADDPROPS); + alterTableTypesWithPartialSpec.add(AlterTableDesc.AlterTableTypes.DROPPROPS); + alterTableTypesWithPartialSpec.add(AlterTableDesc.AlterTableTypes.ADDSERDE); + alterTableTypesWithPartialSpec.add(AlterTableDesc.AlterTableTypes.ADDSERDEPROPS); + alterTableTypesWithPartialSpec.add(AlterTableDesc.AlterTableTypes.ADDFILEFORMAT); + } AlterTableTypes op; String oldName; @@ -704,5 +720,8 @@ public boolean getIsDropIfExists() { return isDropIfExists; } + public static boolean doesAlterTableTypeSupportPartialPartitionSpec(AlterTableTypes type) { + return alterTableTypesWithPartialSpec.contains(type); + } } diff --git a/ql/src/test/queries/clientnegative/alter_partition_partial_spec_dyndisabled.q b/ql/src/test/queries/clientnegative/alter_partition_partial_spec_dyndisabled.q new file mode 100644 index 000000000000..74bfb43e7a2f --- /dev/null +++ b/ql/src/test/queries/clientnegative/alter_partition_partial_spec_dyndisabled.q @@ -0,0 +1,13 @@ +SET hive.exec.dynamic.partition = true; +SET hive.exec.dynamic.partition.mode = nonstrict; + +create table alter_partition_partial_spec_dyndisabled0 (c1 string) partitioned by (p1 string, p2 string); + +alter table alter_partition_partial_spec_dyndisabled0 add partition (p1='abc', p2='123'); +alter table alter_partition_partial_spec_dyndisabled0 partition (p1, p2) change c1 c1 int; + +describe alter_partition_partial_spec_dyndisabled0 partition (p1='abc', p2='123'); + +SET hive.exec.dynamic.partition = false; +-- Same statement should fail if dynamic partitioning disabled +alter table alter_partition_partial_spec_dyndisabled0 partition (p1, p2) change c1 c1 int; diff --git a/ql/src/test/queries/clientpositive/alter_partition_change_col.q b/ql/src/test/queries/clientpositive/alter_partition_change_col.q index baabb9fa4683..4451ef3f993c 100644 --- a/ql/src/test/queries/clientpositive/alter_partition_change_col.q +++ b/ql/src/test/queries/clientpositive/alter_partition_change_col.q @@ -6,54 +6,70 @@ SET hive.exec.dynamic.partition.mode = nonstrict; create table alter_partition_change_col0 (c1 string, c2 string); load data local inpath '../../data/files/dec.txt' overwrite into table alter_partition_change_col0; -create table alter_partition_change_col1 (c1 string, c2 string) partitioned by (p1 string); +create table alter_partition_change_col1 (c1 string, c2 string) partitioned by (p1 string, p2 string); -insert overwrite table alter_partition_change_col1 partition (p1) - select c1, c2, 'abc' from alter_partition_change_col0 +insert overwrite table alter_partition_change_col1 partition (p1, p2) + select c1, c2, 'abc', '123' from alter_partition_change_col0 union all - select c1, c2, null from alter_partition_change_col0; + select c1, c2, null, '123' from alter_partition_change_col0; show partitions alter_partition_change_col1; -select * from alter_partition_change_col1; +select * from alter_partition_change_col1 where p1='abc'; +select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'; -- Change c2 to decimal(10,0) alter table alter_partition_change_col1 change c2 c2 decimal(10,0); -alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(10,0); -alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(10,0); -select * from alter_partition_change_col1; +alter table alter_partition_change_col1 partition (p1='abc', p2='123') change c2 c2 decimal(10,0); +alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123') change c2 c2 decimal(10,0); +select * from alter_partition_change_col1 where p1='abc'; +select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'; -- Change the column type at the table level. Table-level describe shows the new type, but the existing partition does not. alter table alter_partition_change_col1 change c2 c2 decimal(14,4); describe alter_partition_change_col1; -describe alter_partition_change_col1 partition (p1='abc'); -select * from alter_partition_change_col1; +describe alter_partition_change_col1 partition (p1='abc', p2='123'); +select * from alter_partition_change_col1 where p1='abc'; +select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'; -- now change the column type of the existing partition -alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(14,4); -describe alter_partition_change_col1 partition (p1='abc'); -select * from alter_partition_change_col1; +alter table alter_partition_change_col1 partition (p1='abc', p2='123') change c2 c2 decimal(14,4); +describe alter_partition_change_col1 partition (p1='abc', p2='123'); +select * from alter_partition_change_col1 where p1='abc'; +select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'; -- change column for default partition value -alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(14,4); -describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__'); -select * from alter_partition_change_col1; +alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123') change c2 c2 decimal(14,4); +describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123'); +select * from alter_partition_change_col1 where p1='abc'; +select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'; -- Try out replace columns -alter table alter_partition_change_col1 partition (p1='abc') replace columns (c1 string); +alter table alter_partition_change_col1 partition (p1='abc', p2='123') replace columns (c1 string); describe alter_partition_change_col1; -describe alter_partition_change_col1 partition (p1='abc'); -select * from alter_partition_change_col1; +describe alter_partition_change_col1 partition (p1='abc', p2='123'); +select * from alter_partition_change_col1 where p1='abc'; +select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'; + alter table alter_partition_change_col1 replace columns (c1 string); describe alter_partition_change_col1; -select * from alter_partition_change_col1; +select * from alter_partition_change_col1 where p1='abc'; +select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'; -- Try add columns alter table alter_partition_change_col1 add columns (c2 decimal(14,4)); describe alter_partition_change_col1; -describe alter_partition_change_col1 partition (p1='abc'); -select * from alter_partition_change_col1; +describe alter_partition_change_col1 partition (p1='abc', p2='123'); +select * from alter_partition_change_col1 where p1='abc'; +select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'; -alter table alter_partition_change_col1 partition (p1='abc') add columns (c2 decimal(14,4)); -describe alter_partition_change_col1 partition (p1='abc'); -select * from alter_partition_change_col1; +alter table alter_partition_change_col1 partition (p1='abc', p2='123') add columns (c2 decimal(14,4)); +describe alter_partition_change_col1 partition (p1='abc', p2='123'); +select * from alter_partition_change_col1 where p1='abc'; +select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'; +-- Try changing column for all partitions at once +alter table alter_partition_change_col1 partition (p1, p2='123') change column c2 c2 decimal(10,0); +describe alter_partition_change_col1 partition (p1='abc', p2='123'); +describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123'); +select * from alter_partition_change_col1 where p1='abc'; +select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__'; diff --git a/ql/src/test/results/clientnegative/alter_partition_partial_spec_dyndisabled.q.out b/ql/src/test/results/clientnegative/alter_partition_partial_spec_dyndisabled.q.out new file mode 100644 index 000000000000..8ec2c283ab78 --- /dev/null +++ b/ql/src/test/results/clientnegative/alter_partition_partial_spec_dyndisabled.q.out @@ -0,0 +1,40 @@ +PREHOOK: query: create table alter_partition_partial_spec_dyndisabled0 (c1 string) partitioned by (p1 string, p2 string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alter_partition_partial_spec_dyndisabled0 +POSTHOOK: query: create table alter_partition_partial_spec_dyndisabled0 (c1 string) partitioned by (p1 string, p2 string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alter_partition_partial_spec_dyndisabled0 +PREHOOK: query: alter table alter_partition_partial_spec_dyndisabled0 add partition (p1='abc', p2='123') +PREHOOK: type: ALTERTABLE_ADDPARTS +PREHOOK: Output: default@alter_partition_partial_spec_dyndisabled0 +POSTHOOK: query: alter table alter_partition_partial_spec_dyndisabled0 add partition (p1='abc', p2='123') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Output: default@alter_partition_partial_spec_dyndisabled0 +POSTHOOK: Output: default@alter_partition_partial_spec_dyndisabled0@p1=abc/p2=123 +PREHOOK: query: alter table alter_partition_partial_spec_dyndisabled0 partition (p1, p2) change c1 c1 int +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter_partition_partial_spec_dyndisabled0 +PREHOOK: Output: default@alter_partition_partial_spec_dyndisabled0@p1=abc/p2=123 +POSTHOOK: query: alter table alter_partition_partial_spec_dyndisabled0 partition (p1, p2) change c1 c1 int +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@alter_partition_partial_spec_dyndisabled0 +POSTHOOK: Input: default@alter_partition_partial_spec_dyndisabled0@p1=abc/p2=123 +POSTHOOK: Output: default@alter_partition_partial_spec_dyndisabled0@p1=abc/p2=123 +PREHOOK: query: describe alter_partition_partial_spec_dyndisabled0 partition (p1='abc', p2='123') +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_partial_spec_dyndisabled0 +POSTHOOK: query: describe alter_partition_partial_spec_dyndisabled0 partition (p1='abc', p2='123') +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_partial_spec_dyndisabled0 +c1 int +p1 string +p2 string + +# Partition Information +# col_name data_type comment + +p1 string +p2 string +FAILED: SemanticException [Error 10095]: Dynamic partition is disabled. Either enable it by setting hive.exec.dynamic.partition=true or specify partition column values diff --git a/ql/src/test/results/clientpositive/alter_partition_change_col.q.out b/ql/src/test/results/clientpositive/alter_partition_change_col.q.out index 7123e40cde7d..148bff47dcf7 100644 --- a/ql/src/test/results/clientpositive/alter_partition_change_col.q.out +++ b/ql/src/test/results/clientpositive/alter_partition_change_col.q.out @@ -18,73 +18,81 @@ POSTHOOK: query: load data local inpath '../../data/files/dec.txt' overwrite int POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@alter_partition_change_col0 -PREHOOK: query: create table alter_partition_change_col1 (c1 string, c2 string) partitioned by (p1 string) +PREHOOK: query: create table alter_partition_change_col1 (c1 string, c2 string) partitioned by (p1 string, p2 string) PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@alter_partition_change_col1 -POSTHOOK: query: create table alter_partition_change_col1 (c1 string, c2 string) partitioned by (p1 string) +POSTHOOK: query: create table alter_partition_change_col1 (c1 string, c2 string) partitioned by (p1 string, p2 string) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@alter_partition_change_col1 -PREHOOK: query: insert overwrite table alter_partition_change_col1 partition (p1) - select c1, c2, 'abc' from alter_partition_change_col0 +PREHOOK: query: insert overwrite table alter_partition_change_col1 partition (p1, p2) + select c1, c2, 'abc', '123' from alter_partition_change_col0 union all - select c1, c2, null from alter_partition_change_col0 + select c1, c2, null, '123' from alter_partition_change_col0 PREHOOK: type: QUERY PREHOOK: Input: default@alter_partition_change_col0 PREHOOK: Output: default@alter_partition_change_col1 -POSTHOOK: query: insert overwrite table alter_partition_change_col1 partition (p1) - select c1, c2, 'abc' from alter_partition_change_col0 +POSTHOOK: query: insert overwrite table alter_partition_change_col1 partition (p1, p2) + select c1, c2, 'abc', '123' from alter_partition_change_col0 union all - select c1, c2, null from alter_partition_change_col0 + select c1, c2, null, '123' from alter_partition_change_col0 POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col0 -POSTHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Output: default@alter_partition_change_col1@p1=abc -POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=__HIVE_DEFAULT_PARTITION__).c1 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), ] -POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=__HIVE_DEFAULT_PARTITION__).c2 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), ] -POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=abc).c1 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), ] -POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=abc).c2 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), ] +POSTHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 +POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=__HIVE_DEFAULT_PARTITION__,p2=123).c1 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), ] +POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=__HIVE_DEFAULT_PARTITION__,p2=123).c2 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), ] +POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=abc,p2=123).c1 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c1, type:string, comment:null), ] +POSTHOOK: Lineage: alter_partition_change_col1 PARTITION(p1=abc,p2=123).c2 EXPRESSION [(alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), (alter_partition_change_col0)alter_partition_change_col0.FieldSchema(name:c2, type:string, comment:null), ] PREHOOK: query: show partitions alter_partition_change_col1 PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@alter_partition_change_col1 POSTHOOK: query: show partitions alter_partition_change_col1 POSTHOOK: type: SHOWPARTITIONS POSTHOOK: Input: default@alter_partition_change_col1 -p1=__HIVE_DEFAULT_PARTITION__ -p1=abc -PREHOOK: query: select * from alter_partition_change_col1 +p1=__HIVE_DEFAULT_PARTITION__/p2=123 +p1=abc/p2=123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='abc' PREHOOK: type: QUERY PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: Input: default@alter_partition_change_col1@p1=abc +PREHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 #### A masked pattern was here #### -POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: query: select * from alter_partition_change_col1 where p1='abc' POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -#### A masked pattern was here #### -Beck 0.0 __HIVE_DEFAULT_PARTITION__ -Beck 0.0 abc -Beck 77.341 __HIVE_DEFAULT_PARTITION__ -Beck 77.341 abc -Beck 79.9 __HIVE_DEFAULT_PARTITION__ -Beck 79.9 abc -Cluck 5.96 __HIVE_DEFAULT_PARTITION__ -Cluck 5.96 abc -Mary 33.33 __HIVE_DEFAULT_PARTITION__ -Mary 33.33 abc -Mary 4.329 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 abc -Snow 55.71 __HIVE_DEFAULT_PARTITION__ -Snow 55.71 abc -Tom -12.25 __HIVE_DEFAULT_PARTITION__ -Tom -12.25 abc -Tom 19.00 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 abc -Tom 234.79 __HIVE_DEFAULT_PARTITION__ -Tom 234.79 abc +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +Beck 0.0 abc 123 +Beck 77.341 abc 123 +Beck 79.9 abc 123 +Cluck 5.96 abc 123 +Mary 33.33 abc 123 +Mary 4.329 abc 123 +Snow 55.71 abc 123 +Tom -12.25 abc 123 +Tom 19.00 abc 123 +Tom 234.79 abc 123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +Beck 0.0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 77.341 __HIVE_DEFAULT_PARTITION__ 123 +Beck 79.9 __HIVE_DEFAULT_PARTITION__ 123 +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ 123 +Mary 33.33 __HIVE_DEFAULT_PARTITION__ 123 +Mary 4.329 __HIVE_DEFAULT_PARTITION__ 123 +Snow 55.71 __HIVE_DEFAULT_PARTITION__ 123 +Tom -12.25 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19.00 __HIVE_DEFAULT_PARTITION__ 123 +Tom 234.79 __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: -- Change c2 to decimal(10,0) alter table alter_partition_change_col1 change c2 c2 decimal(10,0) PREHOOK: type: ALTERTABLE_RENAMECOL @@ -95,56 +103,64 @@ alter table alter_partition_change_col1 change c2 c2 decimal(10,0) POSTHOOK: type: ALTERTABLE_RENAMECOL POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Output: default@alter_partition_change_col1 -PREHOOK: query: alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(10,0) +PREHOOK: query: alter table alter_partition_change_col1 partition (p1='abc', p2='123') change c2 c2 decimal(10,0) PREHOOK: type: ALTERTABLE_RENAMECOL PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Output: default@alter_partition_change_col1@p1=abc -POSTHOOK: query: alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(10,0) +PREHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 +POSTHOOK: query: alter table alter_partition_change_col1 partition (p1='abc', p2='123') change c2 c2 decimal(10,0) POSTHOOK: type: ALTERTABLE_RENAMECOL POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -POSTHOOK: Output: default@alter_partition_change_col1@p1=abc -PREHOOK: query: alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(10,0) +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 +PREHOOK: query: alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123') change c2 c2 decimal(10,0) PREHOOK: type: ALTERTABLE_RENAMECOL PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: query: alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(10,0) +PREHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +POSTHOOK: query: alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123') change c2 c2 decimal(10,0) POSTHOOK: type: ALTERTABLE_RENAMECOL POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +POSTHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='abc' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='abc' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +Beck 0 abc 123 +Beck 77 abc 123 +Beck 80 abc 123 +Cluck 6 abc 123 +Mary 33 abc 123 +Mary 4 abc 123 +Snow 56 abc 123 +Tom -12 abc 123 +Tom 19 abc 123 +Tom 235 abc 123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' PREHOOK: type: QUERY PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: Input: default@alter_partition_change_col1@p1=abc +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 #### A masked pattern was here #### -POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -#### A masked pattern was here #### -Beck 0 __HIVE_DEFAULT_PARTITION__ -Beck 0 abc -Beck 77 __HIVE_DEFAULT_PARTITION__ -Beck 77 abc -Beck 80 __HIVE_DEFAULT_PARTITION__ -Beck 80 abc -Cluck 6 __HIVE_DEFAULT_PARTITION__ -Cluck 6 abc -Mary 33 __HIVE_DEFAULT_PARTITION__ -Mary 33 abc -Mary 4 __HIVE_DEFAULT_PARTITION__ -Mary 4 abc -Snow 56 __HIVE_DEFAULT_PARTITION__ -Snow 56 abc -Tom -12 __HIVE_DEFAULT_PARTITION__ -Tom -12 abc -Tom 19 __HIVE_DEFAULT_PARTITION__ -Tom 19 abc -Tom 235 __HIVE_DEFAULT_PARTITION__ -Tom 235 abc +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +Beck 0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 77 __HIVE_DEFAULT_PARTITION__ 123 +Beck 80 __HIVE_DEFAULT_PARTITION__ 123 +Cluck 6 __HIVE_DEFAULT_PARTITION__ 123 +Mary 33 __HIVE_DEFAULT_PARTITION__ 123 +Mary 4 __HIVE_DEFAULT_PARTITION__ 123 +Snow 56 __HIVE_DEFAULT_PARTITION__ 123 +Tom -12 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19 __HIVE_DEFAULT_PARTITION__ 123 +Tom 235 __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: -- Change the column type at the table level. Table-level describe shows the new type, but the existing partition does not. alter table alter_partition_change_col1 change c2 c2 decimal(14,4) PREHOOK: type: ALTERTABLE_RENAMECOL @@ -164,182 +180,214 @@ POSTHOOK: Input: default@alter_partition_change_col1 c1 string c2 decimal(14,4) p1 string +p2 string # Partition Information # col_name data_type comment p1 string -PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +p2 string +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') PREHOOK: type: DESCTABLE PREHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@alter_partition_change_col1 c1 string c2 decimal(10,0) p1 string +p2 string # Partition Information # col_name data_type comment p1 string -PREHOOK: query: select * from alter_partition_change_col1 +p2 string +PREHOOK: query: select * from alter_partition_change_col1 where p1='abc' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='abc' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +Beck 0 abc 123 +Beck 77 abc 123 +Beck 80 abc 123 +Cluck 6 abc 123 +Mary 33 abc 123 +Mary 4 abc 123 +Snow 56 abc 123 +Tom -12 abc 123 +Tom 19 abc 123 +Tom 235 abc 123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' PREHOOK: type: QUERY PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: Input: default@alter_partition_change_col1@p1=abc +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 #### A masked pattern was here #### -POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -#### A masked pattern was here #### -Beck 0 __HIVE_DEFAULT_PARTITION__ -Beck 0 abc -Beck 77 __HIVE_DEFAULT_PARTITION__ -Beck 77 abc -Beck 80 __HIVE_DEFAULT_PARTITION__ -Beck 80 abc -Cluck 6 __HIVE_DEFAULT_PARTITION__ -Cluck 6 abc -Mary 33 __HIVE_DEFAULT_PARTITION__ -Mary 33 abc -Mary 4 __HIVE_DEFAULT_PARTITION__ -Mary 4 abc -Snow 56 __HIVE_DEFAULT_PARTITION__ -Snow 56 abc -Tom -12 __HIVE_DEFAULT_PARTITION__ -Tom -12 abc -Tom 19 __HIVE_DEFAULT_PARTITION__ -Tom 19 abc -Tom 235 __HIVE_DEFAULT_PARTITION__ -Tom 235 abc +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +Beck 0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 77 __HIVE_DEFAULT_PARTITION__ 123 +Beck 80 __HIVE_DEFAULT_PARTITION__ 123 +Cluck 6 __HIVE_DEFAULT_PARTITION__ 123 +Mary 33 __HIVE_DEFAULT_PARTITION__ 123 +Mary 4 __HIVE_DEFAULT_PARTITION__ 123 +Snow 56 __HIVE_DEFAULT_PARTITION__ 123 +Tom -12 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19 __HIVE_DEFAULT_PARTITION__ 123 +Tom 235 __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: -- now change the column type of the existing partition -alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(14,4) +alter table alter_partition_change_col1 partition (p1='abc', p2='123') change c2 c2 decimal(14,4) PREHOOK: type: ALTERTABLE_RENAMECOL PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Output: default@alter_partition_change_col1@p1=abc +PREHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 POSTHOOK: query: -- now change the column type of the existing partition -alter table alter_partition_change_col1 partition (p1='abc') change c2 c2 decimal(14,4) +alter table alter_partition_change_col1 partition (p1='abc', p2='123') change c2 c2 decimal(14,4) POSTHOOK: type: ALTERTABLE_RENAMECOL POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -POSTHOOK: Output: default@alter_partition_change_col1@p1=abc -PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') PREHOOK: type: DESCTABLE PREHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@alter_partition_change_col1 c1 string c2 decimal(14,4) p1 string +p2 string # Partition Information # col_name data_type comment p1 string -PREHOOK: query: select * from alter_partition_change_col1 +p2 string +PREHOOK: query: select * from alter_partition_change_col1 where p1='abc' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='abc' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +Beck 0.0 abc 123 +Beck 77.341 abc 123 +Beck 79.9 abc 123 +Cluck 5.96 abc 123 +Mary 33.33 abc 123 +Mary 4.329 abc 123 +Snow 55.71 abc 123 +Tom -12.25 abc 123 +Tom 19.00 abc 123 +Tom 234.79 abc 123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' PREHOOK: type: QUERY PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: Input: default@alter_partition_change_col1@p1=abc +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 #### A masked pattern was here #### -POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -#### A masked pattern was here #### -Beck 0 __HIVE_DEFAULT_PARTITION__ -Beck 0.0 abc -Beck 77 __HIVE_DEFAULT_PARTITION__ -Beck 77.341 abc -Beck 79.9 abc -Beck 80 __HIVE_DEFAULT_PARTITION__ -Cluck 5.96 abc -Cluck 6 __HIVE_DEFAULT_PARTITION__ -Mary 33 __HIVE_DEFAULT_PARTITION__ -Mary 33.33 abc -Mary 4 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 abc -Snow 55.71 abc -Snow 56 __HIVE_DEFAULT_PARTITION__ -Tom -12 __HIVE_DEFAULT_PARTITION__ -Tom -12.25 abc -Tom 19 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 abc -Tom 234.79 abc -Tom 235 __HIVE_DEFAULT_PARTITION__ +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +Beck 0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 77 __HIVE_DEFAULT_PARTITION__ 123 +Beck 80 __HIVE_DEFAULT_PARTITION__ 123 +Cluck 6 __HIVE_DEFAULT_PARTITION__ 123 +Mary 33 __HIVE_DEFAULT_PARTITION__ 123 +Mary 4 __HIVE_DEFAULT_PARTITION__ 123 +Snow 56 __HIVE_DEFAULT_PARTITION__ 123 +Tom -12 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19 __HIVE_DEFAULT_PARTITION__ 123 +Tom 235 __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: -- change column for default partition value -alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(14,4) +alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123') change c2 c2 decimal(14,4) PREHOOK: type: ALTERTABLE_RENAMECOL PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ +PREHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 POSTHOOK: query: -- change column for default partition value -alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') change c2 c2 decimal(14,4) +alter table alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123') change c2 c2 decimal(14,4) POSTHOOK: type: ALTERTABLE_RENAMECOL POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: query: describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +POSTHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +PREHOOK: query: describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123') PREHOOK: type: DESCTABLE PREHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: query: describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__') +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123') POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@alter_partition_change_col1 c1 string c2 decimal(14,4) p1 string +p2 string # Partition Information # col_name data_type comment p1 string -PREHOOK: query: select * from alter_partition_change_col1 +p2 string +PREHOOK: query: select * from alter_partition_change_col1 where p1='abc' PREHOOK: type: QUERY PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: Input: default@alter_partition_change_col1@p1=abc +PREHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 #### A masked pattern was here #### -POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: query: select * from alter_partition_change_col1 where p1='abc' POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -#### A masked pattern was here #### -Beck 0.0 __HIVE_DEFAULT_PARTITION__ -Beck 0.0 abc -Beck 77.341 __HIVE_DEFAULT_PARTITION__ -Beck 77.341 abc -Beck 79.9 __HIVE_DEFAULT_PARTITION__ -Beck 79.9 abc -Cluck 5.96 __HIVE_DEFAULT_PARTITION__ -Cluck 5.96 abc -Mary 33.33 __HIVE_DEFAULT_PARTITION__ -Mary 33.33 abc -Mary 4.329 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 abc -Snow 55.71 __HIVE_DEFAULT_PARTITION__ -Snow 55.71 abc -Tom -12.25 __HIVE_DEFAULT_PARTITION__ -Tom -12.25 abc -Tom 19.00 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 abc -Tom 234.79 __HIVE_DEFAULT_PARTITION__ -Tom 234.79 abc +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +Beck 0.0 abc 123 +Beck 77.341 abc 123 +Beck 79.9 abc 123 +Cluck 5.96 abc 123 +Mary 33.33 abc 123 +Mary 4.329 abc 123 +Snow 55.71 abc 123 +Tom -12.25 abc 123 +Tom 19.00 abc 123 +Tom 234.79 abc 123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +Beck 0.0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 77.341 __HIVE_DEFAULT_PARTITION__ 123 +Beck 79.9 __HIVE_DEFAULT_PARTITION__ 123 +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ 123 +Mary 33.33 __HIVE_DEFAULT_PARTITION__ 123 +Mary 4.329 __HIVE_DEFAULT_PARTITION__ 123 +Snow 55.71 __HIVE_DEFAULT_PARTITION__ 123 +Tom -12.25 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19.00 __HIVE_DEFAULT_PARTITION__ 123 +Tom 234.79 __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: -- Try out replace columns -alter table alter_partition_change_col1 partition (p1='abc') replace columns (c1 string) +alter table alter_partition_change_col1 partition (p1='abc', p2='123') replace columns (c1 string) PREHOOK: type: ALTERTABLE_REPLACECOLS PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Output: default@alter_partition_change_col1@p1=abc +PREHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 POSTHOOK: query: -- Try out replace columns -alter table alter_partition_change_col1 partition (p1='abc') replace columns (c1 string) +alter table alter_partition_change_col1 partition (p1='abc', p2='123') replace columns (c1 string) POSTHOOK: type: ALTERTABLE_REPLACECOLS POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -POSTHOOK: Output: default@alter_partition_change_col1@p1=abc +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 PREHOOK: query: describe alter_partition_change_col1 PREHOOK: type: DESCTABLE PREHOOK: Input: default@alter_partition_change_col1 @@ -349,56 +397,68 @@ POSTHOOK: Input: default@alter_partition_change_col1 c1 string c2 decimal(14,4) p1 string +p2 string # Partition Information # col_name data_type comment p1 string -PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +p2 string +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') PREHOOK: type: DESCTABLE PREHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@alter_partition_change_col1 c1 string p1 string +p2 string # Partition Information # col_name data_type comment p1 string -PREHOOK: query: select * from alter_partition_change_col1 +p2 string +PREHOOK: query: select * from alter_partition_change_col1 where p1='abc' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='abc' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +Beck NULL abc 123 +Beck NULL abc 123 +Beck NULL abc 123 +Cluck NULL abc 123 +Mary NULL abc 123 +Mary NULL abc 123 +Snow NULL abc 123 +Tom NULL abc 123 +Tom NULL abc 123 +Tom NULL abc 123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' PREHOOK: type: QUERY PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: Input: default@alter_partition_change_col1@p1=abc +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 #### A masked pattern was here #### -POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -#### A masked pattern was here #### -Beck 0.0 __HIVE_DEFAULT_PARTITION__ -Beck 77.341 __HIVE_DEFAULT_PARTITION__ -Beck 79.9 __HIVE_DEFAULT_PARTITION__ -Beck NULL abc -Beck NULL abc -Beck NULL abc -Cluck 5.96 __HIVE_DEFAULT_PARTITION__ -Cluck NULL abc -Mary 33.33 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 __HIVE_DEFAULT_PARTITION__ -Mary NULL abc -Mary NULL abc -Snow 55.71 __HIVE_DEFAULT_PARTITION__ -Snow NULL abc -Tom -12.25 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 __HIVE_DEFAULT_PARTITION__ -Tom 234.79 __HIVE_DEFAULT_PARTITION__ -Tom NULL abc -Tom NULL abc -Tom NULL abc +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +Beck 0.0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 77.341 __HIVE_DEFAULT_PARTITION__ 123 +Beck 79.9 __HIVE_DEFAULT_PARTITION__ 123 +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ 123 +Mary 33.33 __HIVE_DEFAULT_PARTITION__ 123 +Mary 4.329 __HIVE_DEFAULT_PARTITION__ 123 +Snow 55.71 __HIVE_DEFAULT_PARTITION__ 123 +Tom -12.25 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19.00 __HIVE_DEFAULT_PARTITION__ 123 +Tom 234.79 __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: alter table alter_partition_change_col1 replace columns (c1 string) PREHOOK: type: ALTERTABLE_REPLACECOLS PREHOOK: Input: default@alter_partition_change_col1 @@ -415,43 +475,53 @@ POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@alter_partition_change_col1 c1 string p1 string +p2 string # Partition Information # col_name data_type comment p1 string -PREHOOK: query: select * from alter_partition_change_col1 +p2 string +PREHOOK: query: select * from alter_partition_change_col1 where p1='abc' PREHOOK: type: QUERY PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: Input: default@alter_partition_change_col1@p1=abc +PREHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 #### A masked pattern was here #### -POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: query: select * from alter_partition_change_col1 where p1='abc' POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -#### A masked pattern was here #### -Beck __HIVE_DEFAULT_PARTITION__ -Beck __HIVE_DEFAULT_PARTITION__ -Beck __HIVE_DEFAULT_PARTITION__ -Beck abc -Beck abc -Beck abc -Cluck __HIVE_DEFAULT_PARTITION__ -Cluck abc -Mary __HIVE_DEFAULT_PARTITION__ -Mary __HIVE_DEFAULT_PARTITION__ -Mary abc -Mary abc -Snow __HIVE_DEFAULT_PARTITION__ -Snow abc -Tom __HIVE_DEFAULT_PARTITION__ -Tom __HIVE_DEFAULT_PARTITION__ -Tom __HIVE_DEFAULT_PARTITION__ -Tom abc -Tom abc -Tom abc +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +Beck abc 123 +Beck abc 123 +Beck abc 123 +Cluck abc 123 +Mary abc 123 +Mary abc 123 +Snow abc 123 +Tom abc 123 +Tom abc 123 +Tom abc 123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +Beck __HIVE_DEFAULT_PARTITION__ 123 +Beck __HIVE_DEFAULT_PARTITION__ 123 +Beck __HIVE_DEFAULT_PARTITION__ 123 +Cluck __HIVE_DEFAULT_PARTITION__ 123 +Mary __HIVE_DEFAULT_PARTITION__ 123 +Mary __HIVE_DEFAULT_PARTITION__ 123 +Snow __HIVE_DEFAULT_PARTITION__ 123 +Tom __HIVE_DEFAULT_PARTITION__ 123 +Tom __HIVE_DEFAULT_PARTITION__ 123 +Tom __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: -- Try add columns alter table alter_partition_change_col1 add columns (c2 decimal(14,4)) PREHOOK: type: ALTERTABLE_ADDCOLS @@ -471,108 +541,216 @@ POSTHOOK: Input: default@alter_partition_change_col1 c1 string c2 decimal(14,4) p1 string +p2 string # Partition Information # col_name data_type comment p1 string -PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +p2 string +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') PREHOOK: type: DESCTABLE PREHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@alter_partition_change_col1 c1 string p1 string +p2 string # Partition Information # col_name data_type comment p1 string -PREHOOK: query: select * from alter_partition_change_col1 +p2 string +PREHOOK: query: select * from alter_partition_change_col1 where p1='abc' PREHOOK: type: QUERY PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: Input: default@alter_partition_change_col1@p1=abc +PREHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 #### A masked pattern was here #### -POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: query: select * from alter_partition_change_col1 where p1='abc' POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -#### A masked pattern was here #### -Beck 0.0 __HIVE_DEFAULT_PARTITION__ -Beck 77.341 __HIVE_DEFAULT_PARTITION__ -Beck 79.9 __HIVE_DEFAULT_PARTITION__ -Beck NULL abc -Beck NULL abc -Beck NULL abc -Cluck 5.96 __HIVE_DEFAULT_PARTITION__ -Cluck NULL abc -Mary 33.33 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 __HIVE_DEFAULT_PARTITION__ -Mary NULL abc -Mary NULL abc -Snow 55.71 __HIVE_DEFAULT_PARTITION__ -Snow NULL abc -Tom -12.25 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 __HIVE_DEFAULT_PARTITION__ -Tom 234.79 __HIVE_DEFAULT_PARTITION__ -Tom NULL abc -Tom NULL abc -Tom NULL abc -PREHOOK: query: alter table alter_partition_change_col1 partition (p1='abc') add columns (c2 decimal(14,4)) +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +Beck NULL abc 123 +Beck NULL abc 123 +Beck NULL abc 123 +Cluck NULL abc 123 +Mary NULL abc 123 +Mary NULL abc 123 +Snow NULL abc 123 +Tom NULL abc 123 +Tom NULL abc 123 +Tom NULL abc 123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +Beck 0.0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 77.341 __HIVE_DEFAULT_PARTITION__ 123 +Beck 79.9 __HIVE_DEFAULT_PARTITION__ 123 +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ 123 +Mary 33.33 __HIVE_DEFAULT_PARTITION__ 123 +Mary 4.329 __HIVE_DEFAULT_PARTITION__ 123 +Snow 55.71 __HIVE_DEFAULT_PARTITION__ 123 +Tom -12.25 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19.00 __HIVE_DEFAULT_PARTITION__ 123 +Tom 234.79 __HIVE_DEFAULT_PARTITION__ 123 +PREHOOK: query: alter table alter_partition_change_col1 partition (p1='abc', p2='123') add columns (c2 decimal(14,4)) PREHOOK: type: ALTERTABLE_ADDCOLS PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Output: default@alter_partition_change_col1@p1=abc -POSTHOOK: query: alter table alter_partition_change_col1 partition (p1='abc') add columns (c2 decimal(14,4)) +PREHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 +POSTHOOK: query: alter table alter_partition_change_col1 partition (p1='abc', p2='123') add columns (c2 decimal(14,4)) POSTHOOK: type: ALTERTABLE_ADDCOLS POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -POSTHOOK: Output: default@alter_partition_change_col1@p1=abc -PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') PREHOOK: type: DESCTABLE PREHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc') +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@alter_partition_change_col1 c1 string c2 decimal(14,4) p1 string +p2 string # Partition Information # col_name data_type comment p1 string -PREHOOK: query: select * from alter_partition_change_col1 +p2 string +PREHOOK: query: select * from alter_partition_change_col1 where p1='abc' PREHOOK: type: QUERY PREHOOK: Input: default@alter_partition_change_col1 -PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -PREHOOK: Input: default@alter_partition_change_col1@p1=abc +PREHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 #### A masked pattern was here #### -POSTHOOK: query: select * from alter_partition_change_col1 +POSTHOOK: query: select * from alter_partition_change_col1 where p1='abc' POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 -POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Input: default@alter_partition_change_col1@p1=abc -#### A masked pattern was here #### -Beck 0.0 __HIVE_DEFAULT_PARTITION__ -Beck 0.0 abc -Beck 77.341 __HIVE_DEFAULT_PARTITION__ -Beck 77.341 abc -Beck 79.9 __HIVE_DEFAULT_PARTITION__ -Beck 79.9 abc -Cluck 5.96 __HIVE_DEFAULT_PARTITION__ -Cluck 5.96 abc -Mary 33.33 __HIVE_DEFAULT_PARTITION__ -Mary 33.33 abc -Mary 4.329 __HIVE_DEFAULT_PARTITION__ -Mary 4.329 abc -Snow 55.71 __HIVE_DEFAULT_PARTITION__ -Snow 55.71 abc -Tom -12.25 __HIVE_DEFAULT_PARTITION__ -Tom -12.25 abc -Tom 19.00 __HIVE_DEFAULT_PARTITION__ -Tom 19.00 abc -Tom 234.79 __HIVE_DEFAULT_PARTITION__ -Tom 234.79 abc +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +Beck 0.0 abc 123 +Beck 77.341 abc 123 +Beck 79.9 abc 123 +Cluck 5.96 abc 123 +Mary 33.33 abc 123 +Mary 4.329 abc 123 +Snow 55.71 abc 123 +Tom -12.25 abc 123 +Tom 19.00 abc 123 +Tom 234.79 abc 123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +Beck 0.0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 77.341 __HIVE_DEFAULT_PARTITION__ 123 +Beck 79.9 __HIVE_DEFAULT_PARTITION__ 123 +Cluck 5.96 __HIVE_DEFAULT_PARTITION__ 123 +Mary 33.33 __HIVE_DEFAULT_PARTITION__ 123 +Mary 4.329 __HIVE_DEFAULT_PARTITION__ 123 +Snow 55.71 __HIVE_DEFAULT_PARTITION__ 123 +Tom -12.25 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19.00 __HIVE_DEFAULT_PARTITION__ 123 +Tom 234.79 __HIVE_DEFAULT_PARTITION__ 123 +PREHOOK: query: -- Try changing column for all partitions at once +alter table alter_partition_change_col1 partition (p1, p2='123') change column c2 c2 decimal(10,0) +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +PREHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 +POSTHOOK: query: -- Try changing column for all partitions at once +alter table alter_partition_change_col1 partition (p1, p2='123') change column c2 c2 decimal(10,0) +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +POSTHOOK: Output: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +POSTHOOK: Output: default@alter_partition_change_col1@p1=abc/p2=123 +PREHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='abc', p2='123') +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +c2 decimal(10,0) +p1 string +p2 string + +# Partition Information +# col_name data_type comment + +p1 string +p2 string +PREHOOK: query: describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123') +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: query: describe alter_partition_change_col1 partition (p1='__HIVE_DEFAULT_PARTITION__', p2='123') +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@alter_partition_change_col1 +c1 string +c2 decimal(10,0) +p1 string +p2 string + +# Partition Information +# col_name data_type comment + +p1 string +p2 string +PREHOOK: query: select * from alter_partition_change_col1 where p1='abc' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='abc' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 +#### A masked pattern was here #### +Beck 0 abc 123 +Beck 77 abc 123 +Beck 80 abc 123 +Cluck 6 abc 123 +Mary 33 abc 123 +Mary 4 abc 123 +Snow 56 abc 123 +Tom -12 abc 123 +Tom 19 abc 123 +Tom 235 abc 123 +PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +PREHOOK: type: QUERY +PREHOOK: Input: default@alter_partition_change_col1 +PREHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +POSTHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alter_partition_change_col1 +POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 +#### A masked pattern was here #### +Beck 0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 77 __HIVE_DEFAULT_PARTITION__ 123 +Beck 80 __HIVE_DEFAULT_PARTITION__ 123 +Cluck 6 __HIVE_DEFAULT_PARTITION__ 123 +Mary 33 __HIVE_DEFAULT_PARTITION__ 123 +Mary 4 __HIVE_DEFAULT_PARTITION__ 123 +Snow 56 __HIVE_DEFAULT_PARTITION__ 123 +Tom -12 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19 __HIVE_DEFAULT_PARTITION__ 123 +Tom 235 __HIVE_DEFAULT_PARTITION__ 123 From 5bb29b0ff8760d0adbe47678d24c23073c83babb Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Fri, 17 Oct 2014 20:02:41 +0000 Subject: [PATCH 122/339] HIVE-8349: Distinguish between UNIFORM hash-partitioning and AUTOPARALLEL re-partitioning. (Gopal V, reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632660 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/exec/ReduceSinkOperator.java | 8 ++-- .../ql/optimizer/ReduceSinkMapJoinProc.java | 5 ++- .../ql/optimizer/SetReducerParallelism.java | 15 ++++++- .../hadoop/hive/ql/parse/GenTezUtils.java | 4 +- .../hadoop/hive/ql/plan/ExprNodeDesc.java | 16 +++++++ .../hadoop/hive/ql/plan/ReduceSinkDesc.java | 42 ++++++++++++++++--- .../test/results/compiler/plan/groupby1.q.xml | 8 ++++ .../test/results/compiler/plan/groupby2.q.xml | 8 ++++ .../test/results/compiler/plan/groupby3.q.xml | 8 ++++ .../test/results/compiler/plan/groupby4.q.xml | 8 ++++ .../test/results/compiler/plan/groupby5.q.xml | 8 ++++ .../test/results/compiler/plan/groupby6.q.xml | 8 ++++ .../test/results/compiler/plan/input20.q.xml | 8 ++++ .../test/results/compiler/plan/input4.q.xml | 8 ++++ .../test/results/compiler/plan/input5.q.xml | 8 ++++ ql/src/test/results/compiler/plan/join1.q.xml | 14 +++++++ ql/src/test/results/compiler/plan/join2.q.xml | 26 ++++++++++++ ql/src/test/results/compiler/plan/join3.q.xml | 20 +++++++++ ql/src/test/results/compiler/plan/join4.q.xml | 14 +++++++ ql/src/test/results/compiler/plan/join5.q.xml | 14 +++++++ ql/src/test/results/compiler/plan/join6.q.xml | 14 +++++++ ql/src/test/results/compiler/plan/join7.q.xml | 20 +++++++++ ql/src/test/results/compiler/plan/join8.q.xml | 14 +++++++ 23 files changed, 286 insertions(+), 12 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java index d8698dab0797..ceba28dec03d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java @@ -55,6 +55,8 @@ import org.apache.hadoop.mapred.OutputCollector; import org.apache.hadoop.util.hash.MurmurHash; +import static org.apache.hadoop.hive.ql.plan.ReduceSinkDesc.ReducerTraits.UNIFORM; + /** * Reduce Sink Operator sends output to the reduce stage. **/ @@ -110,7 +112,7 @@ public class ReduceSinkOperator extends TerminalOperator protected transient int numDistributionKeys; protected transient int numDistinctExprs; protected transient String[] inputAliases; // input aliases of this RS for join (used for PPD) - protected transient boolean autoParallel = false; + protected transient boolean useUniformHash = false; // picks topN K:V pairs from input. protected transient TopNHash reducerHash = new TopNHash(); protected transient HiveKey keyWritable = new HiveKey(); @@ -217,7 +219,7 @@ protected void initializeOp(Configuration hconf) throws HiveException { reducerHash.initialize(limit, memUsage, conf.isMapGroupBy(), this); } - autoParallel = conf.isAutoParallel(); + useUniformHash = conf.getReducerTraits().contains(UNIFORM); firstRow = true; initializeChildren(hconf); @@ -339,7 +341,7 @@ public void processOp(Object row, int tag) throws HiveException { final int hashCode; // distKeyLength doesn't include tag, but includes buckNum in cachedKeys[0] - if (autoParallel && partitionEval.length > 0) { + if (useUniformHash && partitionEval.length > 0) { hashCode = computeMurmurHash(firstKey); } else { hashCode = computeHashCode(row); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ReduceSinkMapJoinProc.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ReduceSinkMapJoinProc.java index 65fb66ecfd14..ed6f71320771 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ReduceSinkMapJoinProc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ReduceSinkMapJoinProc.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hive.ql.optimizer; import java.util.ArrayList; +import java.util.EnumSet; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -55,6 +56,8 @@ import org.apache.hadoop.hive.ql.plan.TezWork.VertexType; import org.apache.hadoop.hive.ql.stats.StatsUtils; +import static org.apache.hadoop.hive.ql.plan.ReduceSinkDesc.ReducerTraits.FIXED; + public class ReduceSinkMapJoinProc implements NodeProcessor { protected transient Log LOG = LogFactory.getLog(this.getClass().getName()); @@ -167,7 +170,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procContext, if (joinConf.isBucketMapJoin()) { // disable auto parallelism for bucket map joins - parentRS.getConf().setAutoParallel(false); + parentRS.getConf().setReducerTraits(EnumSet.of(FIXED)); numBuckets = (Integer) joinConf.getBigTableBucketNumMapping().values().toArray()[0]; if (joinConf.getCustomBucketMapJoin()) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetReducerParallelism.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetReducerParallelism.java index 625af85abce3..fef2c296b3a2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetReducerParallelism.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetReducerParallelism.java @@ -18,6 +18,8 @@ package org.apache.hadoop.hive.ql.optimizer; +import java.util.Collection; +import java.util.EnumSet; import java.util.Stack; import org.apache.commons.logging.Log; @@ -31,9 +33,13 @@ import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx; import org.apache.hadoop.hive.ql.parse.OptimizeTezProcContext; import org.apache.hadoop.hive.ql.parse.SemanticException; +import org.apache.hadoop.hive.ql.plan.ExprNodeDesc.ExprNodeDescEqualityWrapper; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc; +import static org.apache.hadoop.hive.ql.plan.ReduceSinkDesc.ReducerTraits.AUTOPARALLEL; +import static org.apache.hadoop.hive.ql.plan.ReduceSinkDesc.ReducerTraits.UNIFORM; + /** * SetReducerParallelism determines how many reducers should * be run for a given reduce sink. @@ -86,7 +92,14 @@ public Object process(Node nd, Stack stack, maxReducers, false); LOG.info("Set parallelism for reduce sink "+sink+" to: "+numReducers); desc.setNumReducers(numReducers); - desc.setAutoParallel(true); + + final Collection keyCols = ExprNodeDescEqualityWrapper.transform(desc.getKeyCols()); + final Collection partCols = ExprNodeDescEqualityWrapper.transform(desc.getPartitionCols()); + if (keyCols != null && keyCols.equals(partCols)) { + desc.setReducerTraits(EnumSet.of(UNIFORM, AUTOPARALLEL)); + } else { + desc.setReducerTraits(EnumSet.of(AUTOPARALLEL)); + } } } else { LOG.info("Number of reducers determined to be: "+desc.getNumReducers()); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java index f2723ec26728..627ca7b10071 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java @@ -57,6 +57,8 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; +import static org.apache.hadoop.hive.ql.plan.ReduceSinkDesc.ReducerTraits.AUTOPARALLEL; + /** * GenTezUtils is a collection of shared helper methods to produce * TezWork @@ -117,7 +119,7 @@ public ReduceWork createReduceWork(GenTezProcContext context, Operator root, reduceWork.setNumReduceTasks(reduceSink.getConf().getNumReducers()); - if (isAutoReduceParallelism && reduceSink.getConf().isAutoParallel()) { + if (isAutoReduceParallelism && reduceSink.getConf().getReducerTraits().contains(AUTOPARALLEL)) { reduceWork.setAutoReduceParallelism(true); // configured limit for reducers diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java index 82d86eed22ad..0fe9eda6e736 100755 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java @@ -19,6 +19,8 @@ package org.apache.hadoop.hive.ql.plan; import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; import org.apache.hadoop.hive.ql.lib.Node; @@ -125,5 +127,19 @@ public boolean equals(Object other) { public int hashCode() { return exprNodeDesc == null ? 0 : exprNodeDesc.hashCode(); } + + /* helper function to allow Set()/Collection() operations with ExprNodeDesc */ + public static Collection transform( + Collection descs) { + if (descs == null) { + return null; + } + final Collection wrapped = new ArrayList( + descs.size()); + for (ExprNodeDesc desc : descs) { + wrapped.add(new ExprNodeDescEqualityWrapper(desc)); + } + return wrapped; + } } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java index 2c4175aa293a..57beb693ad22 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hive.ql.plan; import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; import org.apache.commons.logging.Log; @@ -90,7 +91,22 @@ public class ReduceSinkDesc extends AbstractOperatorDesc { //flag used to control how TopN handled for PTF/Windowing partitions. private boolean isPTFReduceSink = false; private boolean skipTag; // Skip writing tags when feeding into mapjoin hashtable - private Boolean autoParallel = null; // Is reducer auto-parallelism enabled, disabled or unset + + public static enum ReducerTraits { + UNSET(0), // unset + FIXED(1), // distribution of keys is fixed + AUTOPARALLEL(2), // can change reducer count (ORDER BY can concat adjacent buckets) + UNIFORM(3); // can redistribute into buckets uniformly (GROUP BY can) + + private final int trait; + + private ReducerTraits(int trait) { + this.trait = trait; + } + }; + + // Is reducer auto-parallelism unset (FIXED, UNIFORM, PARALLEL) + private EnumSet reduceTraits = EnumSet.of(ReducerTraits.UNSET); // Write type, since this needs to calculate buckets differently for updates and deletes private AcidUtils.Operation writeType; @@ -148,7 +164,7 @@ public Object clone() { desc.setBucketCols(bucketCols); desc.setStatistics(this.getStatistics()); desc.setSkipTag(skipTag); - desc.autoParallel = autoParallel; + desc.reduceTraits = reduceTraits.clone(); return desc; } @@ -361,16 +377,30 @@ public boolean getSkipTag() { @Explain(displayName = "auto parallelism", normalExplain = false) public final boolean isAutoParallel() { - return (autoParallel != null) && autoParallel; + return (this.reduceTraits.contains(ReducerTraits.AUTOPARALLEL)); + } + + public final EnumSet getReducerTraits() { + return this.reduceTraits; } - public final void setAutoParallel(final boolean autoParallel) { + public final void setReducerTraits(EnumSet traits) { // we don't allow turning on auto parallel once it has been // explicitly turned off. That is to avoid scenarios where // auto parallelism could break assumptions about number of // reducers or hash function. - if (this.autoParallel == null || this.autoParallel == true) { - this.autoParallel = autoParallel; + + boolean wasUnset = this.reduceTraits.remove(ReducerTraits.UNSET); + + if (this.reduceTraits.contains(ReducerTraits.FIXED)) { + return; + } else if (traits.contains(ReducerTraits.FIXED)) { + this.reduceTraits.removeAll(EnumSet.of( + ReducerTraits.AUTOPARALLEL, + ReducerTraits.UNIFORM)); + this.reduceTraits.addAll(traits); + } else { + this.reduceTraits.addAll(traits); } } diff --git a/ql/src/test/results/compiler/plan/groupby1.q.xml b/ql/src/test/results/compiler/plan/groupby1.q.xml index 4f2e1328ebcd..3b7e69b3350f 100755 --- a/ql/src/test/results/compiler/plan/groupby1.q.xml +++ b/ql/src/test/results/compiler/plan/groupby1.q.xml @@ -429,6 +429,14 @@ + + + + + UNSET + + + -1 diff --git a/ql/src/test/results/compiler/plan/groupby2.q.xml b/ql/src/test/results/compiler/plan/groupby2.q.xml index fe050e2a5851..3a1164c59e23 100755 --- a/ql/src/test/results/compiler/plan/groupby2.q.xml +++ b/ql/src/test/results/compiler/plan/groupby2.q.xml @@ -309,6 +309,14 @@ + + + + + UNSET + + + -1 diff --git a/ql/src/test/results/compiler/plan/groupby3.q.xml b/ql/src/test/results/compiler/plan/groupby3.q.xml index 2246a7bfc35d..b33a2c64e43a 100644 --- a/ql/src/test/results/compiler/plan/groupby3.q.xml +++ b/ql/src/test/results/compiler/plan/groupby3.q.xml @@ -364,6 +364,14 @@ + + + + + UNSET + + + -1 diff --git a/ql/src/test/results/compiler/plan/groupby4.q.xml b/ql/src/test/results/compiler/plan/groupby4.q.xml index 909f6dddb291..a61b055db30d 100644 --- a/ql/src/test/results/compiler/plan/groupby4.q.xml +++ b/ql/src/test/results/compiler/plan/groupby4.q.xml @@ -259,6 +259,14 @@ + + + + + UNSET + + + -1 diff --git a/ql/src/test/results/compiler/plan/groupby5.q.xml b/ql/src/test/results/compiler/plan/groupby5.q.xml index 11060751507b..2946c67d953e 100644 --- a/ql/src/test/results/compiler/plan/groupby5.q.xml +++ b/ql/src/test/results/compiler/plan/groupby5.q.xml @@ -281,6 +281,14 @@ + + + + + UNSET + + + -1 diff --git a/ql/src/test/results/compiler/plan/groupby6.q.xml b/ql/src/test/results/compiler/plan/groupby6.q.xml index 86c00eb171e2..08bf86fac868 100644 --- a/ql/src/test/results/compiler/plan/groupby6.q.xml +++ b/ql/src/test/results/compiler/plan/groupby6.q.xml @@ -259,6 +259,14 @@ + + + + + UNSET + + + -1 diff --git a/ql/src/test/results/compiler/plan/input20.q.xml b/ql/src/test/results/compiler/plan/input20.q.xml index 08d45a616362..845367d945b2 100644 --- a/ql/src/test/results/compiler/plan/input20.q.xml +++ b/ql/src/test/results/compiler/plan/input20.q.xml @@ -292,6 +292,14 @@ + + + + + UNSET + + + -1 diff --git a/ql/src/test/results/compiler/plan/input4.q.xml b/ql/src/test/results/compiler/plan/input4.q.xml index 2daf426b7a52..f9d534092928 100755 --- a/ql/src/test/results/compiler/plan/input4.q.xml +++ b/ql/src/test/results/compiler/plan/input4.q.xml @@ -443,6 +443,14 @@ + + + + + UNSET + + + -1 diff --git a/ql/src/test/results/compiler/plan/input5.q.xml b/ql/src/test/results/compiler/plan/input5.q.xml index 22afeb12357c..a21164158585 100644 --- a/ql/src/test/results/compiler/plan/input5.q.xml +++ b/ql/src/test/results/compiler/plan/input5.q.xml @@ -448,6 +448,14 @@ + + + + + UNSET + + + -1 diff --git a/ql/src/test/results/compiler/plan/join1.q.xml b/ql/src/test/results/compiler/plan/join1.q.xml index a78972f40907..9a1c20207333 100644 --- a/ql/src/test/results/compiler/plan/join1.q.xml +++ b/ql/src/test/results/compiler/plan/join1.q.xml @@ -487,6 +487,14 @@ + + + + + UNSET + + + 1 @@ -890,6 +898,12 @@ + + + + + + diff --git a/ql/src/test/results/compiler/plan/join2.q.xml b/ql/src/test/results/compiler/plan/join2.q.xml index 2ee352c1577e..28a7d8fe634c 100644 --- a/ql/src/test/results/compiler/plan/join2.q.xml +++ b/ql/src/test/results/compiler/plan/join2.q.xml @@ -465,6 +465,14 @@ + + + + + UNSET + + + @@ -741,6 +749,12 @@ + + + + + + 1 @@ -1944,6 +1958,12 @@ + + + + + + 1 @@ -2273,6 +2293,12 @@ + + + + + + diff --git a/ql/src/test/results/compiler/plan/join3.q.xml b/ql/src/test/results/compiler/plan/join3.q.xml index a6e403ef1978..93914dad24fb 100644 --- a/ql/src/test/results/compiler/plan/join3.q.xml +++ b/ql/src/test/results/compiler/plan/join3.q.xml @@ -534,6 +534,14 @@ + + + + + UNSET + + + 1 @@ -920,6 +928,12 @@ + + + + + + 2 @@ -1284,6 +1298,12 @@ + + + + + + diff --git a/ql/src/test/results/compiler/plan/join4.q.xml b/ql/src/test/results/compiler/plan/join4.q.xml index d3e912795fb3..63fcd6449db4 100644 --- a/ql/src/test/results/compiler/plan/join4.q.xml +++ b/ql/src/test/results/compiler/plan/join4.q.xml @@ -336,6 +336,14 @@ + + + + + UNSET + + + @@ -911,6 +919,12 @@ + + + + + + 1 diff --git a/ql/src/test/results/compiler/plan/join5.q.xml b/ql/src/test/results/compiler/plan/join5.q.xml index 8615beb0f7dc..71487a66c2c2 100644 --- a/ql/src/test/results/compiler/plan/join5.q.xml +++ b/ql/src/test/results/compiler/plan/join5.q.xml @@ -336,6 +336,14 @@ + + + + + UNSET + + + @@ -911,6 +919,12 @@ + + + + + + 1 diff --git a/ql/src/test/results/compiler/plan/join6.q.xml b/ql/src/test/results/compiler/plan/join6.q.xml index 473d2179e6be..3ff26103e133 100644 --- a/ql/src/test/results/compiler/plan/join6.q.xml +++ b/ql/src/test/results/compiler/plan/join6.q.xml @@ -336,6 +336,14 @@ + + + + + UNSET + + + @@ -911,6 +919,12 @@ + + + + + + 1 diff --git a/ql/src/test/results/compiler/plan/join7.q.xml b/ql/src/test/results/compiler/plan/join7.q.xml index 5568a7a8bbaa..279147a8814f 100644 --- a/ql/src/test/results/compiler/plan/join7.q.xml +++ b/ql/src/test/results/compiler/plan/join7.q.xml @@ -401,6 +401,14 @@ + + + + + UNSET + + + @@ -976,6 +984,12 @@ + + + + + + 1 @@ -1515,6 +1529,12 @@ + + + + + + 2 diff --git a/ql/src/test/results/compiler/plan/join8.q.xml b/ql/src/test/results/compiler/plan/join8.q.xml index 7ef3d43d74ac..c9a2de423c13 100644 --- a/ql/src/test/results/compiler/plan/join8.q.xml +++ b/ql/src/test/results/compiler/plan/join8.q.xml @@ -336,6 +336,14 @@ + + + + + UNSET + + + @@ -952,6 +960,12 @@ + + + + + + 1 From 1826006d05f29f0ff41269dca673bc972f199139 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Sat, 18 Oct 2014 00:02:11 +0000 Subject: [PATCH 123/339] HIVE-8462 : CBO duplicates columns (with HIVE-8511 addendum) (Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632698 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/parse/SemanticAnalyzer.java | 96 +++++++++---------- .../queries/clientpositive/cbo_correctness.q | 4 + .../clientpositive/cbo_correctness.q.out | 68 +++++++++++++ .../clientpositive/tez/cbo_correctness.q.out | 68 +++++++++++++ 4 files changed, 188 insertions(+), 48 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index ed293dc7ee52..bcbcdd174879 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -2705,7 +2705,7 @@ private Operator genNotNullFilterForJoinSourcePlan(QB qb, Operator input, @SuppressWarnings("nls") private Integer genColListRegex(String colRegex, String tabAlias, - ASTNode sel, ArrayList col_list, + ASTNode sel, ArrayList col_list, HashSet excludeCols, RowResolver input, Integer pos, RowResolver output, List aliases) throws SemanticException { @@ -2747,6 +2747,9 @@ private Integer genColListRegex(String colRegex, String tabAlias, // from the input schema for (Map.Entry entry : fMap.entrySet()) { ColumnInfo colInfo = entry.getValue(); + if (excludeCols != null && excludeCols.contains(colInfo)) { + continue; // This was added during plan generation. + } String name = colInfo.getInternalName(); String[] tmp = input.reverseLookup(name); @@ -3426,7 +3429,7 @@ private Operator genSelectPlan(ASTNode selExprList, QB qb, } if (isUDTF && (selectStar = udtfExprType == HiveParser.TOK_FUNCTIONSTAR)) { genColListRegex(".*", null, (ASTNode) udtfExpr.getChild(0), - col_list, inputRR, pos, out_rwsch, qb.getAliases()); + col_list, null, inputRR, pos, out_rwsch, qb.getAliases()); } } @@ -3548,7 +3551,7 @@ private Operator genSelectPlan(ASTNode selExprList, QB qb, if (expr.getType() == HiveParser.TOK_ALLCOLREF) { pos = genColListRegex(".*", expr.getChildCount() == 0 ? null : getUnescapedName((ASTNode) expr.getChild(0)).toLowerCase(), - expr, col_list, inputRR, pos, out_rwsch, qb.getAliases()); + expr, col_list, null, inputRR, pos, out_rwsch, qb.getAliases()); selectStar = true; } else if (expr.getType() == HiveParser.TOK_TABLE_OR_COL && !hasAsClause && !inputRR.getIsExprResolver() @@ -3557,7 +3560,7 @@ && isRegex(unescapeIdentifier(expr.getChild(0).getText()), conf)) { // This can only happen without AS clause // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(0).getText()), - null, expr, col_list, inputRR, pos, out_rwsch, qb.getAliases()); + null, expr, col_list, null, inputRR, pos, out_rwsch, qb.getAliases()); } else if (expr.getType() == HiveParser.DOT && expr.getChild(0).getType() == HiveParser.TOK_TABLE_OR_COL && inputRR.hasTableAlias(unescapeIdentifier(expr.getChild(0) @@ -3568,9 +3571,8 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { // This can only happen without AS clause // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(1).getText()), - unescapeIdentifier(expr.getChild(0).getChild(0).getText() - .toLowerCase()), expr, col_list, inputRR, pos, out_rwsch, - qb.getAliases()); + unescapeIdentifier(expr.getChild(0).getChild(0).getText().toLowerCase()), + expr, col_list, null, inputRR, pos, out_rwsch, qb.getAliases()); } else { // Case when this is an expression TypeCheckCtx tcCtx = new TypeCheckCtx(inputRR); @@ -13657,50 +13659,46 @@ partitionKeys, ImmutableList. copyOf(orderKeys), lowerBound, return new Pair(w, wHiveRetType); } - private RelNode genSelectForWindowing(QB qb, RelNode srcRel) throws SemanticException { - RelNode selOpForWindow = null; + private RelNode genSelectForWindowing( + QB qb, RelNode srcRel, HashSet newColumns) throws SemanticException { QBParseInfo qbp = getQBParseInfo(qb); WindowingSpec wSpec = (!qb.getAllWindowingSpecs().isEmpty()) ? qb.getAllWindowingSpecs() .values().iterator().next() : null; + if (wSpec == null) return null; + // 1. Get valid Window Function Spec + wSpec.validateAndMakeEffective(); + List windowExpressions = wSpec.getWindowExpressions(); + if (windowExpressions == null || windowExpressions.isEmpty()) return null; - if (wSpec != null) { - // 1. Get valid Window Function Spec - wSpec.validateAndMakeEffective(); - List windowExpressions = wSpec.getWindowExpressions(); - - if (windowExpressions != null && !windowExpressions.isEmpty()) { - RowResolver inputRR = this.relToHiveRR.get(srcRel); - // 2. Get RexNodes for original Projections from below - List projsForWindowSelOp = new ArrayList( - HiveOptiqUtil.getProjsFromBelowAsInputRef(srcRel)); - - // 3. Construct new Row Resolver with everything from below. - RowResolver out_rwsch = new RowResolver(); - RowResolver.add(out_rwsch, inputRR, 0); - - // 4. Walk through Window Expressions & Construct RexNodes for those, - // Update out_rwsch - for (WindowExpressionSpec wExprSpec : windowExpressions) { - if (out_rwsch.getExpression(wExprSpec.getExpression()) == null) { - Pair wtp = genWindowingProj(qb, wExprSpec, srcRel); - projsForWindowSelOp.add(wtp.getKey()); - - // 6.2.2 Update Output Row Schema - ColumnInfo oColInfo = new ColumnInfo( - getColumnInternalName(projsForWindowSelOp.size()), wtp.getValue(), null, false); - if (false) { - out_rwsch.put(null, wExprSpec.getAlias(), oColInfo); - } else { - out_rwsch.putExpression(wExprSpec.getExpression(), oColInfo); - } - } - } + RowResolver inputRR = this.relToHiveRR.get(srcRel); + // 2. Get RexNodes for original Projections from below + List projsForWindowSelOp = new ArrayList( + HiveOptiqUtil.getProjsFromBelowAsInputRef(srcRel)); - selOpForWindow = genSelectRelNode(projsForWindowSelOp, out_rwsch, srcRel); + // 3. Construct new Row Resolver with everything from below. + RowResolver out_rwsch = new RowResolver(); + RowResolver.add(out_rwsch, inputRR, 0); + + // 4. Walk through Window Expressions & Construct RexNodes for those, + // Update out_rwsch + for (WindowExpressionSpec wExprSpec : windowExpressions) { + if (out_rwsch.getExpression(wExprSpec.getExpression()) == null) { + Pair wtp = genWindowingProj(qb, wExprSpec, srcRel); + projsForWindowSelOp.add(wtp.getKey()); + + // 6.2.2 Update Output Row Schema + ColumnInfo oColInfo = new ColumnInfo( + getColumnInternalName(projsForWindowSelOp.size()), wtp.getValue(), null, false); + if (false) { + out_rwsch.put(null, wExprSpec.getAlias(), oColInfo); + } else { + out_rwsch.putExpression(wExprSpec.getExpression(), oColInfo); + } + newColumns.add(oColInfo); } } - return selOpForWindow; + return genSelectRelNode(projsForWindowSelOp, out_rwsch, srcRel); } private RelNode genSelectRelNode(List optiqColLst, RowResolver out_rwsch, @@ -13789,9 +13787,10 @@ public String apply(String hName) { * @throws SemanticException */ private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel) throws SemanticException { - // 0. Generate a Select Node for Windowing - RelNode selForWindow = genSelectForWindowing(qb, srcRel); + // Exclude the newly-generated select columns from */etc. resolution. + HashSet excludedColumns = new HashSet(); + RelNode selForWindow = genSelectForWindowing(qb, srcRel, excludedColumns); srcRel = (selForWindow == null) ? srcRel : selForWindow; boolean subQuery; @@ -13882,7 +13881,8 @@ private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel) throws SemanticExcep if (expr.getType() == HiveParser.TOK_ALLCOLREF) { pos = genColListRegex(".*", expr.getChildCount() == 0 ? null : getUnescapedName((ASTNode) expr.getChild(0)) - .toLowerCase(), expr, col_list, inputRR, pos, out_rwsch, tabAliasesForAllProjs); + .toLowerCase(), expr, col_list, excludedColumns, inputRR, pos, out_rwsch, + tabAliasesForAllProjs); selectStar = true; } else if (expr.getType() == HiveParser.TOK_TABLE_OR_COL && !hasAsClause && !inputRR.getIsExprResolver() @@ -13891,7 +13891,7 @@ && isRegex(unescapeIdentifier(expr.getChild(0).getText()), conf)) { // This can only happen without AS clause // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(0).getText()), null, expr, - col_list, inputRR, pos, out_rwsch, tabAliasesForAllProjs); + col_list, excludedColumns, inputRR, pos, out_rwsch, tabAliasesForAllProjs); } else if (expr.getType() == HiveParser.DOT && expr.getChild(0).getType() == HiveParser.TOK_TABLE_OR_COL && inputRR.hasTableAlias(unescapeIdentifier(expr.getChild(0).getChild(0).getText() @@ -13902,7 +13902,7 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(1).getText()), unescapeIdentifier(expr.getChild(0).getChild(0).getText().toLowerCase()), expr, - col_list, inputRR, pos, out_rwsch, tabAliasesForAllProjs); + col_list, excludedColumns, inputRR, pos, out_rwsch, tabAliasesForAllProjs); } else if (expr.toStringTree().contains("TOK_FUNCTIONDI") && !(srcRel instanceof HiveAggregateRel)) { // Likely a malformed query eg, select hash(distinct c1) from t1; throw new OptiqSemanticException("Distinct without an aggreggation."); diff --git a/ql/src/test/queries/clientpositive/cbo_correctness.q b/ql/src/test/queries/clientpositive/cbo_correctness.q index a65d88a56ac7..4d8f156787ef 100644 --- a/ql/src/test/queries/clientpositive/cbo_correctness.q +++ b/ql/src/test/queries/clientpositive/cbo_correctness.q @@ -482,3 +482,7 @@ select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value fro UNION ALL select 'avg' as key, avg(c_int) as value from t3 s3) unionsrc group by unionsrc.key order by unionsrc.key; +-- Windowing +select *, rank() over(partition by key order by value) as rr from src1; + +select *, rank() over(partition by key order by value) from src1; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/cbo_correctness.q.out b/ql/src/test/results/clientpositive/cbo_correctness.q.out index f3f94fde1642..7c25e1f1c1a6 100644 --- a/ql/src/test/results/clientpositive/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/cbo_correctness.q.out @@ -19037,3 +19037,71 @@ POSTHOOK: Input: default@t3 avg 1 max 1 min 1 +PREHOOK: query: -- Windowing +select *, rank() over(partition by key order by value) as rr from src1 +PREHOOK: type: QUERY +PREHOOK: Input: default@src1 +#### A masked pattern was here #### +POSTHOOK: query: -- Windowing +select *, rank() over(partition by key order by value) as rr from src1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src1 +#### A masked pattern was here #### + 1 + 1 + 1 + 1 + val_165 5 + val_193 6 + val_265 7 + val_27 8 + val_409 9 + val_484 10 +128 1 +146 val_146 1 +150 val_150 1 +213 val_213 1 +224 1 +238 val_238 1 +255 val_255 1 +273 val_273 1 +278 val_278 1 +311 val_311 1 +369 1 +401 val_401 1 +406 val_406 1 +66 val_66 1 +98 val_98 1 +PREHOOK: query: select *, rank() over(partition by key order by value) from src1 +PREHOOK: type: QUERY +PREHOOK: Input: default@src1 +#### A masked pattern was here #### +POSTHOOK: query: select *, rank() over(partition by key order by value) from src1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src1 +#### A masked pattern was here #### + 1 + 1 + 1 + 1 + val_165 5 + val_193 6 + val_265 7 + val_27 8 + val_409 9 + val_484 10 +128 1 +146 val_146 1 +150 val_150 1 +213 val_213 1 +224 1 +238 val_238 1 +255 val_255 1 +273 val_273 1 +278 val_278 1 +311 val_311 1 +369 1 +401 val_401 1 +406 val_406 1 +66 val_66 1 +98 val_98 1 diff --git a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out index f2c61e6a72bc..e467773bf99b 100644 --- a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out @@ -19037,3 +19037,71 @@ POSTHOOK: Input: default@t3 avg 1 max 1 min 1 +PREHOOK: query: -- Windowing +select *, rank() over(partition by key order by value) as rr from src1 +PREHOOK: type: QUERY +PREHOOK: Input: default@src1 +#### A masked pattern was here #### +POSTHOOK: query: -- Windowing +select *, rank() over(partition by key order by value) as rr from src1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src1 +#### A masked pattern was here #### + 1 + 1 + 1 + 1 + val_165 5 + val_193 6 + val_265 7 + val_27 8 + val_409 9 + val_484 10 +128 1 +146 val_146 1 +150 val_150 1 +213 val_213 1 +224 1 +238 val_238 1 +255 val_255 1 +273 val_273 1 +278 val_278 1 +311 val_311 1 +369 1 +401 val_401 1 +406 val_406 1 +66 val_66 1 +98 val_98 1 +PREHOOK: query: select *, rank() over(partition by key order by value) from src1 +PREHOOK: type: QUERY +PREHOOK: Input: default@src1 +#### A masked pattern was here #### +POSTHOOK: query: select *, rank() over(partition by key order by value) from src1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src1 +#### A masked pattern was here #### + 1 + 1 + 1 + 1 + val_165 5 + val_193 6 + val_265 7 + val_27 8 + val_409 9 + val_484 10 +128 1 +146 val_146 1 +150 val_150 1 +213 val_213 1 +224 1 +238 val_238 1 +255 val_255 1 +273 val_273 1 +278 val_278 1 +311 val_311 1 +369 1 +401 val_401 1 +406 val_406 1 +66 val_66 1 +98 val_98 1 From cae5daa67b7671f842b2f38301e5c176bb481776 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 18 Oct 2014 00:18:38 +0000 Subject: [PATCH 124/339] HIVE-8452: Cleanup handling of resource configuration for tez (Gunther Hagleitner, reviewed by Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632705 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 3 ++ .../hadoop/hive/ql/exec/tez/DagUtils.java | 35 +++++++++++++------ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 74fac31f3dcd..750bab36db51 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -958,6 +958,9 @@ public static enum ConfVars { HIVETEZCONTAINERSIZE("hive.tez.container.size", -1, "By default Tez will spawn containers of the size of a mapper. This can be used to overwrite."), + HIVETEZCPUVCORES("hive.tez.cpu.vcores", -1, + "By default Tez will ask for however many cpus map-reduce is configured to use per container. " + +"This can be used to overwrite."), HIVETEZJAVAOPTS("hive.tez.java.opts", null, "By default Tez will use the Java options from map tasks. This can be used to overwrite."), HIVETEZLOGLEVEL("hive.tez.log.level", "INFO", diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java index 7703d6916168..d64ff8793c78 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java @@ -431,8 +431,9 @@ public static Resource getContainerResource(Configuration conf) { int memory = HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCONTAINERSIZE) > 0 ? HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCONTAINERSIZE) : conf.getInt(MRJobConfig.MAP_MEMORY_MB, MRJobConfig.DEFAULT_MAP_MEMORY_MB); - int cpus = conf.getInt(MRJobConfig.MAP_CPU_VCORES, - MRJobConfig.DEFAULT_MAP_CPU_VCORES); + int cpus = HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCPUVCORES) > 0 ? + HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCPUVCORES) : + conf.getInt(MRJobConfig.MAP_CPU_VCORES, MRJobConfig.DEFAULT_MAP_CPU_VCORES); return Resource.newInstance(memory, cpus); } @@ -452,17 +453,29 @@ private Map getContainerEnvironment(Configuration conf, boolean */ private String getContainerJavaOpts(Configuration conf) { String javaOpts = HiveConf.getVar(conf, HiveConf.ConfVars.HIVETEZJAVAOPTS); - if (javaOpts != null && !javaOpts.isEmpty()) { - String logLevel = HiveConf.getVar(conf, HiveConf.ConfVars.HIVETEZLOGLEVEL); - List logProps = Lists.newArrayList(); - TezUtils.addLog4jSystemProperties(logLevel, logProps); - StringBuilder sb = new StringBuilder(); - for (String str : logProps) { - sb.append(str).append(" "); + + String logLevel = HiveConf.getVar(conf, HiveConf.ConfVars.HIVETEZLOGLEVEL); + List logProps = Lists.newArrayList(); + TezUtils.addLog4jSystemProperties(logLevel, logProps); + StringBuilder sb = new StringBuilder(); + for (String str : logProps) { + sb.append(str).append(" "); + } + logLevel = sb.toString(); + + if (HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCONTAINERSIZE) > 0) { + if (javaOpts != null) { + return javaOpts + " " + logLevel; + } else { + return logLevel; + } + } else { + if (javaOpts != null && !javaOpts.isEmpty()) { + LOG.warn(HiveConf.ConfVars.HIVETEZJAVAOPTS + " will be ignored because " + + HiveConf.ConfVars.HIVETEZCONTAINERSIZE + " is not set!"); } - return javaOpts + " " + sb.toString(); + return logLevel + " " + MRHelpers.getJavaOptsForMRMapper(conf); } - return MRHelpers.getJavaOptsForMRMapper(conf); } private Vertex createVertex(JobConf conf, MergeJoinWork mergeJoinWork, LocalResource appJarLr, From 3bfe051dfe446cb03f9148d4792343c2f38e26b5 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 18 Oct 2014 00:23:25 +0000 Subject: [PATCH 125/339] HIVE-8489: Add sanity check to dynamic partition pruning (Gunther Hagleitner, reviewed by Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632710 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/tez/DynamicPartitionPruner.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicPartitionPruner.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicPartitionPruner.java index 7ba2ae1ef692..696874e13e6a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicPartitionPruner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicPartitionPruner.java @@ -87,6 +87,8 @@ public class DynamicPartitionPruner { private final Object endOfEvents = new Object(); + private int totalEventCount = 0; + public DynamicPartitionPruner() { } @@ -114,7 +116,7 @@ public void prune(MapWork work, JobConf jobConf, InputInitializerContext context // synchronous event processing loop. Won't return until all events have // been processed. this.processEvents(); - this.prunePartitions(work); + this.prunePartitions(work, context); LOG.info("Ok to proceed."); } @@ -163,12 +165,22 @@ public void initialize(MapWork work, JobConf jobConf) throws SerDeException { } } - private void prunePartitions(MapWork work) throws HiveException { + private void prunePartitions(MapWork work, InputInitializerContext context) throws HiveException { + int expectedEvents = 0; for (String source : this.sourceInfoMap.keySet()) { for (SourceInfo si : this.sourceInfoMap.get(source)) { + int taskNum = context.getVertexNumTasks(source); + LOG.info("Expecting " + taskNum + " events for vertex " + source); + expectedEvents += taskNum; prunePartitionSingleSource(source, si, work); } } + + // sanity check. all tasks must submit events for us to succeed. + if (expectedEvents != totalEventCount) { + LOG.error("Expecting: " + expectedEvents + ", received: " + totalEventCount); + throw new HiveException("Incorrect event count in dynamic parition pruning"); + } } private void prunePartitionSingleSource(String source, SourceInfo si, MapWork work) @@ -396,7 +408,8 @@ public int read(byte[] bytes, int off, int len) throws IOException { public void addEvent(InputInitializerEvent event) { synchronized(sourcesWaitingForEvents) { if (sourcesWaitingForEvents.contains(event.getSourceVertexName())) { - queue.offer(event); + ++totalEventCount; + queue.offer(event); } } } From 1ba2e527b37c6bb78cca4bf76fce09f6574af5e8 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 18 Oct 2014 00:41:55 +0000 Subject: [PATCH 126/339] HIVE-8429: Add records in/out counters (Gunther Hagleitner, reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632714 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/FileSinkOperator.java | 29 +++++++++-- .../hadoop/hive/ql/exec/FilterOperator.java | 28 ----------- .../hadoop/hive/ql/exec/JoinOperator.java | 2 +- .../hadoop/hive/ql/exec/MapOperator.java | 34 +++++++++++-- .../apache/hadoop/hive/ql/exec/Operator.java | 13 ++--- .../hive/ql/exec/ReduceSinkOperator.java | 29 +++++++++++ .../hadoop/hive/ql/exec/ScriptOperator.java | 4 +- .../hadoop/hive/ql/exec/mr/ExecMapper.java | 49 +++++-------------- .../hadoop/hive/ql/exec/mr/ExecReducer.java | 35 +------------ .../hadoop/hive/ql/exec/tez/DagUtils.java | 5 ++ .../hive/ql/exec/tez/MapRecordProcessor.java | 11 +---- .../ql/exec/tez/MergeFileRecordProcessor.java | 8 +-- .../hive/ql/exec/tez/RecordProcessor.java | 39 --------------- .../ql/exec/tez/ReduceRecordProcessor.java | 8 +-- .../ql/exec/vector/VectorFilterOperator.java | 2 - .../ql/exec/vector/VectorMapOperator.java | 7 +++ .../hadoop/hive/ql/exec/TestOperators.java | 49 ------------------- 17 files changed, 123 insertions(+), 229 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java index e02071c6f84b..45c056748bdb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java @@ -109,6 +109,15 @@ public class FileSinkOperator extends TerminalOperator implements private StructField bucketField; // field bucket is in in record id private StructObjectInspector recIdInspector; // OI for inspecting record id private IntObjectInspector bucketInspector; // OI for inspecting bucket id + protected transient long numRows = 0; + protected transient long cntr = 1; + + /** + * Counters. + */ + public static enum Counter { + RECORDS_OUT + } /** * RecordWriter. @@ -249,7 +258,7 @@ public Stat getStat() { private static final long serialVersionUID = 1L; protected transient FileSystem fs; protected transient Serializer serializer; - protected transient LongWritable row_count; + protected final transient LongWritable row_count = new LongWritable(); private transient boolean isNativeTable = true; /** @@ -352,7 +361,7 @@ protected void initializeOp(Configuration hconf) throws HiveException { prtner = (HivePartitioner) ReflectionUtils.newInstance( jc.getPartitionerClass(), null); } - row_count = new LongWritable(); + if (dpCtx != null) { dpSetup(); } @@ -381,6 +390,13 @@ protected void initializeOp(Configuration hconf) throws HiveException { bucketField = recIdInspector.getAllStructFieldRefs().get(1); bucketInspector = (IntObjectInspector)bucketField.getFieldObjectInspector(); } + + String context = jc.get(Operator.CONTEXT_NAME_KEY, ""); + if (context != null && !context.isEmpty()) { + context = "_" + context.replace(" ","_"); + } + statsMap.put(Counter.RECORDS_OUT + context, row_count); + initializeChildren(hconf); } catch (HiveException e) { throw e; @@ -657,9 +673,9 @@ public void processOp(Object row, int tag) throws HiveException { fpaths.stat.addToStat(StatsSetupConst.ROW_COUNT, 1); } - - if (row_count != null) { - row_count.set(row_count.get() + 1); + if (++numRows == cntr) { + cntr *= 10; + LOG.info(toString() + ": records written - " + numRows); } int writerOffset = findWriterOffset(row); @@ -921,6 +937,9 @@ private String getDynPartDirectory(List row, List dpColNames) { @Override public void closeOp(boolean abort) throws HiveException { + row_count.set(numRows); + LOG.info(toString() + ": records written - " + numRows); + if (!bDynParts && !filesCreated) { createBucketFiles(fsp); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java index c6f61f0a1194..b96faa4f8141 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java @@ -37,29 +37,14 @@ public class FilterOperator extends Operator implements Serializable { private static final long serialVersionUID = 1L; - - /** - * Counter. - * - */ - public static enum Counter { - FILTERED, PASSED - } - - protected final transient LongWritable filtered_count; - protected final transient LongWritable passed_count; private transient ExprNodeEvaluator conditionEvaluator; private transient PrimitiveObjectInspector conditionInspector; - private transient int consecutiveFails; private transient int consecutiveSearches; private transient IOContext ioContext; protected transient int heartbeatInterval; public FilterOperator() { super(); - filtered_count = new LongWritable(); - passed_count = new LongWritable(); - consecutiveFails = 0; consecutiveSearches = 0; } @@ -73,8 +58,6 @@ protected void initializeOp(Configuration hconf) throws HiveException { conditionEvaluator = ExprNodeEvaluatorFactory.toCachedEval(conditionEvaluator); } - statsMap.put(Counter.FILTERED, filtered_count); - statsMap.put(Counter.PASSED, passed_count); conditionInspector = null; ioContext = IOContext.get(hconf.get(Utilities.INPUT_NAME)); } catch (Throwable e) { @@ -135,17 +118,6 @@ public void processOp(Object row, int tag) throws HiveException { .getPrimitiveJavaObject(condition); if (Boolean.TRUE.equals(ret)) { forward(row, rowInspector); - passed_count.set(passed_count.get() + 1); - consecutiveFails = 0; - } else { - filtered_count.set(filtered_count.get() + 1); - consecutiveFails++; - - // In case of a lot of consecutive failures, send a heartbeat in order to - // avoid timeout - if (((consecutiveFails % heartbeatInterval) == 0) && (reporter != null)) { - reporter.progress(); - } } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/JoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/JoinOperator.java index c7470995aafb..878df75fdc00 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/JoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/JoinOperator.java @@ -63,7 +63,7 @@ protected void initializeOp(Configuration hconf) throws HiveException { skewJoinKeyContext.initiliaze(hconf); skewJoinKeyContext.setSkewJoinJobCounter(skewjoin_followup_jobs); } - statsMap.put(SkewkeyTableCounter.SKEWJOINFOLLOWUPJOBS, skewjoin_followup_jobs); + statsMap.put(SkewkeyTableCounter.SKEWJOINFOLLOWUPJOBS.toString(), skewjoin_followup_jobs); } @Override diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java index f624bf49e897..f0754102c3c1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java @@ -75,10 +75,16 @@ public class MapOperator extends Operator implements Serializable, Clon * */ public static enum Counter { - DESERIALIZE_ERRORS + DESERIALIZE_ERRORS, + RECORDS_IN } private final transient LongWritable deserialize_error_count = new LongWritable(); + private final transient LongWritable recordCounter = new LongWritable(); + protected transient long numRows = 0; + protected transient long cntr = 1; + protected final boolean isInfoEnabled = LOG.isInfoEnabled(); + protected final boolean isDebugEnabled = LOG.isDebugEnabled(); private final Map opCtxMap = new HashMap(); private final Map, MapOpCtx> childrenOpToOpCtxMap = @@ -362,7 +368,7 @@ public void setChildren(Configuration hconf) throws HiveException { for (String onealias : aliases) { Operator op = conf.getAliasToWork().get(onealias); - if (LOG.isDebugEnabled()) { + if (isDebugEnabled) { LOG.debug("Adding alias " + onealias + " to work list for file " + onefile); } @@ -380,8 +386,10 @@ public void setChildren(Configuration hconf) throws HiveException { if (!onepath.toUri().relativize(fpath.toUri()).equals(fpath.toUri())) { children.add(op); childrenOpToOpCtxMap.put(op, opCtx); - LOG.info("dump " + op + " " + if (isInfoEnabled) { + LOG.info("dump " + op + " " + opCtxMap.get(inp).rowObjectInspector.getTypeName()); + } } current = opCtx; // just need for TestOperators.testMapOperator } @@ -406,7 +414,13 @@ public void setChildren(Configuration hconf) throws HiveException { public void initializeOp(Configuration hconf) throws HiveException { // set that parent initialization is done and call initialize on children state = State.INIT; - statsMap.put(Counter.DESERIALIZE_ERRORS, deserialize_error_count); + statsMap.put(Counter.DESERIALIZE_ERRORS.toString(), deserialize_error_count); + + String context = hconf.get(Operator.CONTEXT_NAME_KEY, ""); + if (context != null && !context.isEmpty()) { + context = "_" + context.replace(" ","_"); + } + statsMap.put(Counter.RECORDS_IN + context, recordCounter); List> children = getChildOperators(); @@ -451,6 +465,7 @@ public void closeOp(boolean abort) throws HiveException { op.close(abort); } } + recordCounter.set(numRows); } // Find context for current input file @@ -473,7 +488,9 @@ public void cleanUpInputFileChangedOp() throws HiveException { MapOpCtx context = opCtxMap.get(inp); if (context != null) { current = context; - LOG.info("Processing alias " + onealias + " for file " + onefile); + if (isInfoEnabled) { + LOG.info("Processing alias " + onealias + " for file " + onefile); + } return; } } @@ -533,6 +550,13 @@ public void process(Writable value) throws HiveException { // The row has been converted to comply with table schema, irrespective of partition schema. // So, use tblOI (and not partOI) for forwarding try { + numRows++; + if (isInfoEnabled) { + if (numRows == cntr) { + cntr *= 10; + LOG.info(toString() + ": records read - " + numRows); + } + } forward(row, current.rowObjectInspector); } catch (Exception e) { // Serialize the row and output the error message. diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java index 3dc7c7657812..dc538abd3291 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java @@ -61,6 +61,7 @@ public abstract class Operator implements Serializable,C public static final String HIVECOUNTERCREATEDFILES = "CREATED_FILES"; public static final String HIVECOUNTERFATAL = "FATAL_ERROR"; + public static final String CONTEXT_NAME_KEY = "__hive.context.name"; private transient Configuration configuration; protected List> childOperators; @@ -210,7 +211,7 @@ public RowSchema getSchema() { // non-bean .. - protected transient HashMap, LongWritable> statsMap = new HashMap, LongWritable>(); + protected transient Map statsMap = new HashMap(); @SuppressWarnings("rawtypes") protected transient OutputCollector out; protected transient Log LOG = LogFactory.getLog(this.getClass().getName()); @@ -287,9 +288,9 @@ public void setAlias(String alias) { } } - public Map, Long> getStats() { - HashMap, Long> ret = new HashMap, Long>(); - for (Enum one : statsMap.keySet()) { + public Map getStats() { + HashMap ret = new HashMap(); + for (String one : statsMap.keySet()) { ret.put(one, Long.valueOf(statsMap.get(one).get())); } return (ret); @@ -807,7 +808,7 @@ protected void forward(Object row, ObjectInspector rowInspector) } public void resetStats() { - for (Enum e : statsMap.keySet()) { + for (String e : statsMap.keySet()) { statsMap.get(e).set(0L); } } @@ -840,7 +841,7 @@ public void preorderMap(OperatorFunc opFunc) { } public void logStats() { - for (Enum e : statsMap.keySet()) { + for (String e : statsMap.keySet()) { LOG.info(e.toString() + ":" + statsMap.get(e).toString()); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java index ceba28dec03d..436a0e59af35 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java @@ -51,6 +51,7 @@ import org.apache.hadoop.io.BinaryComparable; import org.apache.hadoop.io.BytesWritable; import org.apache.hadoop.io.Text; +import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Writable; import org.apache.hadoop.mapred.OutputCollector; import org.apache.hadoop.util.hash.MurmurHash; @@ -67,6 +68,13 @@ public class ReduceSinkOperator extends TerminalOperator PTFUtils.makeTransient(ReduceSinkOperator.class, "inputAliases", "valueIndex"); } + /** + * Counters. + */ + public static enum Counter { + RECORDS_OUT_INTERMEDIATE + } + private static final Log LOG = LogFactory.getLog(ReduceSinkOperator.class.getName()); private static final boolean isInfoEnabled = LOG.isInfoEnabled(); private static final boolean isDebugEnabled = LOG.isDebugEnabled(); @@ -146,9 +154,19 @@ public class ReduceSinkOperator extends TerminalOperator private StructObjectInspector recIdInspector; // OI for the record identifier private IntObjectInspector bucketInspector; // OI for the bucket field in the record id + protected transient long numRows = 0; + protected transient long cntr = 1; + private final transient LongWritable recordCounter = new LongWritable(); + @Override protected void initializeOp(Configuration hconf) throws HiveException { try { + String context = hconf.get(Operator.CONTEXT_NAME_KEY, ""); + if (context != null && !context.isEmpty()) { + context = "_" + context.replace(" ","_"); + } + statsMap.put(Counter.RECORDS_OUT_INTERMEDIATE + context, recordCounter); + List keys = conf.getKeyCols(); if (isDebugEnabled) { @@ -508,6 +526,13 @@ protected void collect(BytesWritable keyWritable, Writable valueWritable) throws // Since this is a terminal operator, update counters explicitly - // forward is not called if (null != out) { + numRows++; + if (isInfoEnabled) { + if (numRows == cntr) { + cntr *= 10; + LOG.info(toString() + ": records written - " + numRows); + } + } out.collect(keyWritable, valueWritable); } } @@ -537,6 +562,10 @@ protected void closeOp(boolean abort) throws HiveException { } super.closeOp(abort); out = null; + if (isInfoEnabled) { + LOG.info(toString() + ": records written - " + numRows); + } + recordCounter.set(numRows); } /** diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java index 8228e09084a1..9d171655668d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java @@ -236,8 +236,8 @@ public File getAbsolutePath(String filename) { protected void initializeOp(Configuration hconf) throws HiveException { firstRow = true; - statsMap.put(Counter.DESERIALIZE_ERRORS, deserialize_error_count); - statsMap.put(Counter.SERIALIZE_ERRORS, serialize_error_count); + statsMap.put(Counter.DESERIALIZE_ERRORS.toString(), deserialize_error_count); + statsMap.put(Counter.SERIALIZE_ERRORS.toString(), serialize_error_count); try { this.hconf = hconf; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecMapper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecMapper.java index f188e6922978..b6a7388ccb23 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecMapper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecMapper.java @@ -26,8 +26,11 @@ import java.util.List; import java.util.Map; +import org.apache.hadoop.conf.Configuration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.ql.exec.FetchOperator; import org.apache.hadoop.hive.ql.exec.MapOperator; import org.apache.hadoop.hive.ql.exec.MapredContext; @@ -72,9 +75,6 @@ public class ExecMapper extends MapReduceBase implements Mapper { private static boolean done; // used to log memory usage periodically - public static MemoryMXBean memoryMXBean; - private long numRows = 0; - private long nextCntr = 1; private MapredLocalWork localWork = null; private boolean isLogInfoEnabled = false; @@ -84,8 +84,6 @@ public class ExecMapper extends MapReduceBase implements Mapper { public void configure(JobConf job) { execContext = new ExecMapperContext(job); // Allocate the bean at the beginning - - memoryMXBean = ManagementFactory.getMemoryMXBean(); - l4j.info("maximum memory = " + memoryMXBean.getHeapMemoryUsage().getMax()); isLogInfoEnabled = l4j.isInfoEnabled(); @@ -176,15 +174,6 @@ public void map(Object key, Object value, OutputCollector output, // Since there is no concept of a group, we don't invoke // startGroup/endGroup for a mapper mo.process((Writable)value); - if (isLogInfoEnabled) { - numRows++; - if (numRows == nextCntr) { - long used_memory = memoryMXBean.getHeapMemoryUsage().getUsed(); - l4j.info("ExecMapper: processing " + numRows - + " rows: used memory = " + used_memory); - nextCntr = getNextCntr(numRows); - } - } } } catch (Throwable e) { abort = true; @@ -198,18 +187,6 @@ public void map(Object key, Object value, OutputCollector output, } } - - private long getNextCntr(long cntr) { - // A very simple counter to keep track of number of rows processed by the - // reducer. It dumps - // every 1 million times, and quickly before that - if (cntr >= 1000000) { - return cntr + 1000000; - } - - return 10 * cntr; - } - @Override public void close() { // No row was processed @@ -245,13 +222,7 @@ public void close() { } } - if (isLogInfoEnabled) { - long used_memory = memoryMXBean.getHeapMemoryUsage().getUsed(); - l4j.info("ExecMapper: processed " + numRows + " rows: used memory = " - + used_memory); - } - - ReportStats rps = new ReportStats(rp); + ReportStats rps = new ReportStats(rp, jc); mo.preorderMap(rps); return; } catch (Exception e) { @@ -288,17 +259,21 @@ public static void setDone(boolean done) { */ public static class ReportStats implements Operator.OperatorFunc { private final Reporter rp; + private final Configuration conf; + private final String groupName; - public ReportStats(Reporter rp) { + public ReportStats(Reporter rp, Configuration conf) { this.rp = rp; + this.conf = conf; + this.groupName = HiveConf.getVar(conf, HiveConf.ConfVars.HIVECOUNTERGROUP); } @Override public void func(Operator op) { - Map, Long> opStats = op.getStats(); - for (Map.Entry, Long> e : opStats.entrySet()) { + Map opStats = op.getStats(); + for (Map.Entry e : opStats.entrySet()) { if (rp != null) { - rp.incrCounter(e.getKey(), e.getValue()); + rp.incrCounter(groupName, e.getKey(), e.getValue()); } } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecReducer.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecReducer.java index 9cd8b569e733..8c2ba6cb49f9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecReducer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecReducer.java @@ -70,8 +70,6 @@ public class ExecReducer extends MapReduceBase implements Reducer { private static final boolean isTraceEnabled = LOG.isTraceEnabled(); private static final String PLAN_KEY = "__REDUCE_PLAN__"; - // used to log memory usage periodically - private final MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); // Input value serde needs to be an array to support different SerDe // for different tags private final Deserializer[] inputValueDeserializer = new Deserializer[Byte.MAX_VALUE]; @@ -86,8 +84,6 @@ public class ExecReducer extends MapReduceBase implements Reducer { private Reporter rp; private boolean abort = false; private boolean isTagged = false; - private long cntr = 0; - private long nextCntr = 1; private TableDesc keyTableDesc; private TableDesc[] valueTableDesc; private ObjectInspector[] rowObjectInspector; @@ -103,8 +99,6 @@ public void configure(JobConf job) { ObjectInspector keyObjectInspector; if (isInfoEnabled) { - LOG.info("maximum memory = " + memoryMXBean.getHeapMemoryUsage().getMax()); - try { LOG.info("conf classpath = " + Arrays.asList(((URLClassLoader) job.getClassLoader()).getURLs())); @@ -245,17 +239,7 @@ public void reduce(Object key, Iterator values, OutputCollector output, row.clear(); row.add(keyObject); row.add(valueObject[tag]); - if (isInfoEnabled) { - cntr++; - if (cntr == nextCntr) { - long used_memory = memoryMXBean.getHeapMemoryUsage().getUsed(); - if (isInfoEnabled) { - LOG.info("ExecReducer: processing " + cntr - + " rows: used memory = " + used_memory); - } - nextCntr = getNextCntr(cntr); - } - } + try { reducer.processOp(row, tag); } catch (Exception e) { @@ -283,17 +267,6 @@ public void reduce(Object key, Iterator values, OutputCollector output, } } - private long getNextCntr(long cntr) { - // A very simple counter to keep track of number of rows processed by the - // reducer. It dumps - // every 1 million times, and quickly before that - if (cntr >= 1000000) { - return cntr + 1000000; - } - - return 10 * cntr; - } - @Override public void close() { @@ -310,13 +283,9 @@ public void close() { } reducer.endGroup(); } - if (isInfoEnabled) { - LOG.info("ExecReducer: processed " + cntr + " rows: used memory = " - + memoryMXBean.getHeapMemoryUsage().getUsed()); - } reducer.close(abort); - ReportStats rps = new ReportStats(rp); + ReportStats rps = new ReportStats(rp, jc); reducer.preorderMap(rps); } catch (Exception e) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java index d64ff8793c78..acf2d3197c46 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java @@ -50,6 +50,7 @@ import org.apache.hadoop.hive.ql.Context; import org.apache.hadoop.hive.ql.ErrorMsg; import org.apache.hadoop.hive.ql.exec.CommonMergeJoinOperator; +import org.apache.hadoop.hive.ql.exec.Operator; import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.exec.mr.ExecMapper; import org.apache.hadoop.hive.ql.exec.mr.ExecReducer; @@ -178,6 +179,8 @@ private void addCredentials(ReduceWork reduceWork, DAG dag) { private JobConf initializeVertexConf(JobConf baseConf, Context context, MapWork mapWork) { JobConf conf = new JobConf(baseConf); + conf.set(Operator.CONTEXT_NAME_KEY, mapWork.getName()); + if (mapWork.getNumMapTasks() != null) { // Is this required ? conf.setInt(MRJobConfig.NUM_MAPS, mapWork.getNumMapTasks().intValue()); @@ -653,6 +656,8 @@ private Vertex createVertex(JobConf conf, MapWork mapWork, private JobConf initializeVertexConf(JobConf baseConf, Context context, ReduceWork reduceWork) { JobConf conf = new JobConf(baseConf); + conf.set(Operator.CONTEXT_NAME_KEY, reduceWork.getName()); + // Is this required ? conf.set("mapred.reducer.class", ExecReducer.class.getName()); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java index c77e081606b5..579d65deba4b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java @@ -269,11 +269,7 @@ private DummyStoreOperator getJoinParentOp(Operator merg @Override void run() throws Exception { - while (sources[position].pushRecord()) { - if (isLogInfoEnabled) { - logProgress(); - } - } + while (sources[position].pushRecord()) {} } @Override @@ -305,10 +301,7 @@ void close(){ } } - if (isLogInfoEnabled) { - logCloseInfo(); - } - ReportStats rps = new ReportStats(reporter); + ReportStats rps = new ReportStats(reporter, jconf); mapOp.preorderMap(rps); return; } catch (Exception e) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MergeFileRecordProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MergeFileRecordProcessor.java index 04cd42566765..2b38d79f45c1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MergeFileRecordProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MergeFileRecordProcessor.java @@ -156,10 +156,7 @@ void close() { } mergeOp.close(abort); - if (isLogInfoEnabled) { - logCloseInfo(); - } - ExecMapper.ReportStats rps = new ExecMapper.ReportStats(reporter); + ExecMapper.ReportStats rps = new ExecMapper.ReportStats(reporter, jconf); mergeOp.preorderMap(rps); } catch (Exception e) { if (!abort) { @@ -190,9 +187,6 @@ private boolean processRow(Object key, Object value) { row[0] = key; row[1] = value; mergeOp.processOp(row, 0); - if (isLogInfoEnabled) { - logProgress(); - } } } catch (Throwable e) { abort = true; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/RecordProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/RecordProcessor.java index 372c54d50392..258557f94d38 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/RecordProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/RecordProcessor.java @@ -52,13 +52,10 @@ public abstract class RecordProcessor { // used to log memory usage periodically - public static MemoryMXBean memoryMXBean; protected boolean isLogInfoEnabled = false; protected boolean isLogTraceEnabled = false; protected MRTaskReporter reporter; - private long numRows = 0; - private long nextUpdateCntr = 1; protected PerfLogger perfLogger = PerfLogger.getPerfLogger(); protected String CLASS_NAME = RecordProcessor.class.getName(); @@ -79,11 +76,6 @@ void init(JobConf jconf, ProcessorContext processorContext, MRTaskReporter mrRep this.outputs = outputs; this.processorContext = processorContext; - // Allocate the bean at the beginning - - memoryMXBean = ManagementFactory.getMemoryMXBean(); - - l4j.info("maximum memory = " + memoryMXBean.getHeapMemoryUsage().getMax()); - isLogInfoEnabled = l4j.isInfoEnabled(); isLogTraceEnabled = l4j.isTraceEnabled(); @@ -110,37 +102,6 @@ void init(JobConf jconf, ProcessorContext processorContext, MRTaskReporter mrRep abstract void close(); - /** - * Log information to be logged at the end - */ - protected void logCloseInfo() { - long used_memory = memoryMXBean.getHeapMemoryUsage().getUsed(); - l4j.info("TezProcessor: processed " + numRows + " rows/groups: used memory = " + used_memory); - } - - /** - * Log number of records processed and memory used after processing many records - */ - protected void logProgress() { - numRows++; - if (numRows == nextUpdateCntr) { - long used_memory = memoryMXBean.getHeapMemoryUsage().getUsed(); - l4j.info("TezProcessor: processing " + numRows + " rows/groups: used memory = " + used_memory); - nextUpdateCntr = getNextUpdateRecordCounter(numRows); - } - } - - private long getNextUpdateRecordCounter(long cntr) { - // A very simple counter to keep track of number of rows processed by the - // reducer. It dumps - // every 1 million times, and quickly before that - if (cntr >= 1000000) { - return cntr + 1000000; - } - - return 10 * cntr; - } - protected void createOutputMap() { Preconditions.checkState(outMap == null, "Outputs should only be setup once"); outMap = Maps.newHashMap(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java index 941f97cf7630..8e3c2febb924 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java @@ -165,11 +165,7 @@ void run() throws Exception { } // run the operator pipeline - while (sources[position].pushRecord()) { - if (isLogInfoEnabled) { - logProgress(); - } - } + while (sources[position].pushRecord()) {} } /** @@ -208,7 +204,7 @@ void close(){ dummyOp.close(abort); } } - ReportStats rps = new ReportStats(reporter); + ReportStats rps = new ReportStats(reporter, jconf); reducer.preorderMap(rps); } catch (Exception e) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java index 907ace1f4cfe..e0f954643963 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java @@ -60,8 +60,6 @@ protected void initializeOp(Configuration hconf) throws HiveException { try { heartbeatInterval = HiveConf.getIntVar(hconf, HiveConf.ConfVars.HIVESENDHEARTBEAT); - statsMap.put(Counter.FILTERED, filtered_count); - statsMap.put(Counter.PASSED, passed_count); } catch (Throwable e) { throw new HiveException(e); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java index 311f6d6a3aa1..08df4470bdd9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java @@ -40,6 +40,13 @@ public void process(Writable value) throws HiveException { // The row has been converted to comply with table schema, irrespective of partition schema. // So, use tblOI (and not partOI) for forwarding try { + if (isInfoEnabled) { + numRows += ((VectorizedRowBatch)value).size; + while (numRows > cntr) { + cntr *= 10; + LOG.info(toString() + ": records read - " + numRows); + } + } forward(value, current.getRowObjectInspector()); } catch (Exception e) { throw new HiveException("Hive Runtime Error while processing row ", e); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java index 90e4cad15e15..f12853ea2275 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java @@ -109,55 +109,6 @@ protected void setUp() { } } - public void testBaseFilterOperator() throws Throwable { - try { - System.out.println("Testing Filter Operator"); - ExprNodeDesc col0 = TestExecDriver.getStringColumn("col0"); - ExprNodeDesc col1 = TestExecDriver.getStringColumn("col1"); - ExprNodeDesc col2 = TestExecDriver.getStringColumn("col2"); - ExprNodeDesc zero = new ExprNodeConstantDesc("0"); - ExprNodeDesc func1 = TypeCheckProcFactory.DefaultExprProcessor - .getFuncExprNodeDesc(">", col2, col1); - ExprNodeDesc func2 = TypeCheckProcFactory.DefaultExprProcessor - .getFuncExprNodeDesc("==", col0, zero); - ExprNodeDesc func3 = TypeCheckProcFactory.DefaultExprProcessor - .getFuncExprNodeDesc("and", func1, func2); - assert (func3 != null); - FilterDesc filterCtx = new FilterDesc(func3, false); - - // Configuration - Operator op = OperatorFactory.get(FilterDesc.class); - op.setConf(filterCtx); - - // runtime initialization - op.initialize(new JobConf(TestOperators.class), - new ObjectInspector[] {r[0].oi}); - - for (InspectableObject oner : r) { - op.processOp(oner.o, 0); - } - - Map, Long> results = op.getStats(); - System.out.println("filtered = " - + results.get(FilterOperator.Counter.FILTERED)); - assertEquals(Long.valueOf(4), results - .get(FilterOperator.Counter.FILTERED)); - System.out.println("passed = " - + results.get(FilterOperator.Counter.PASSED)); - assertEquals(Long.valueOf(1), results.get(FilterOperator.Counter.PASSED)); - - /* - * for(Enum e: results.keySet()) { System.out.println(e.toString() + ":" + - * results.get(e)); } - */ - System.out.println("Filter Operator ok"); - - } catch (Throwable e) { - e.printStackTrace(); - throw e; - } - } - private void testTaskIds(String [] taskIds, String expectedAttemptId, String expectedTaskId) { Configuration conf = new JobConf(TestOperators.class); for (String one: taskIds) { From 96085117823da496408a288ad7654ec78b1ea30b Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Sat, 18 Oct 2014 01:15:14 +0000 Subject: [PATCH 127/339] HIVE-8475 : add test case for use of index from not-current database (Thejas Nair, reviewed by Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1632716 13f79535-47bb-0310-9956-ffa450edef68 --- .../test/queries/clientpositive/index_in_db.q | 13 ++++++ .../results/clientpositive/index_in_db.q.out | 42 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 ql/src/test/queries/clientpositive/index_in_db.q create mode 100644 ql/src/test/results/clientpositive/index_in_db.q.out diff --git a/ql/src/test/queries/clientpositive/index_in_db.q b/ql/src/test/queries/clientpositive/index_in_db.q new file mode 100644 index 000000000000..253870cb686b --- /dev/null +++ b/ql/src/test/queries/clientpositive/index_in_db.q @@ -0,0 +1,13 @@ +set hive.optimize.index.filter=true; +drop database if exists index_test_db cascade; +-- Test selecting selecting from a table that is backed by an index +-- create table, index in a db, then set default db as current db, and try selecting + +create database index_test_db; + +use index_test_db; +create table testtb (id int, name string); +create index id_index on table testtb (id) as 'COMPACT' WITH DEFERRED REBUILD in table testdb_id_idx_tb; + +use default; +select * from index_test_db.testtb where id>2; diff --git a/ql/src/test/results/clientpositive/index_in_db.q.out b/ql/src/test/results/clientpositive/index_in_db.q.out new file mode 100644 index 000000000000..53faf99e0a5a --- /dev/null +++ b/ql/src/test/results/clientpositive/index_in_db.q.out @@ -0,0 +1,42 @@ +PREHOOK: query: drop database if exists index_test_db cascade +PREHOOK: type: DROPDATABASE +POSTHOOK: query: drop database if exists index_test_db cascade +POSTHOOK: type: DROPDATABASE +PREHOOK: query: -- Test selecting selecting from a table that is backed by an index +-- create table, index in a db, then set default db as current db, and try selecting + +create database index_test_db +PREHOOK: type: CREATEDATABASE +POSTHOOK: query: -- Test selecting selecting from a table that is backed by an index +-- create table, index in a db, then set default db as current db, and try selecting + +create database index_test_db +POSTHOOK: type: CREATEDATABASE +PREHOOK: query: use index_test_db +PREHOOK: type: SWITCHDATABASE +POSTHOOK: query: use index_test_db +POSTHOOK: type: SWITCHDATABASE +PREHOOK: query: create table testtb (id int, name string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:index_test_db +POSTHOOK: query: create table testtb (id int, name string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:index_test_db +POSTHOOK: Output: index_test_db@testtb +PREHOOK: query: create index id_index on table testtb (id) as 'COMPACT' WITH DEFERRED REBUILD in table testdb_id_idx_tb +PREHOOK: type: CREATEINDEX +POSTHOOK: query: create index id_index on table testtb (id) as 'COMPACT' WITH DEFERRED REBUILD in table testdb_id_idx_tb +POSTHOOK: type: CREATEINDEX +POSTHOOK: Output: index_test_db@testdb_id_idx_tb +PREHOOK: query: use default +PREHOOK: type: SWITCHDATABASE +POSTHOOK: query: use default +POSTHOOK: type: SWITCHDATABASE +PREHOOK: query: select * from index_test_db.testtb where id>2 +PREHOOK: type: QUERY +PREHOOK: Input: index_test_db@testtb +#### A masked pattern was here #### +POSTHOOK: query: select * from index_test_db.testtb where id>2 +POSTHOOK: type: QUERY +POSTHOOK: Input: index_test_db@testtb +#### A masked pattern was here #### From ef4c78c4b5c1f6e83c731fba4ae734e0ba7d6e9b Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Mon, 20 Oct 2014 03:33:12 +0000 Subject: [PATCH 128/339] HIVE-8514 : TestCliDriver.testCliDriver_index_in_db fails in trunk (Thejas Nair, reviewed by Navis) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633027 13f79535-47bb-0310-9956-ffa450edef68 --- ql/src/test/results/clientpositive/index_in_db.q.out | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ql/src/test/results/clientpositive/index_in_db.q.out b/ql/src/test/results/clientpositive/index_in_db.q.out index 53faf99e0a5a..91af7ba8c00f 100644 --- a/ql/src/test/results/clientpositive/index_in_db.q.out +++ b/ql/src/test/results/clientpositive/index_in_db.q.out @@ -7,31 +7,40 @@ PREHOOK: query: -- Test selecting selecting from a table that is backed by an in create database index_test_db PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:index_test_db POSTHOOK: query: -- Test selecting selecting from a table that is backed by an index -- create table, index in a db, then set default db as current db, and try selecting create database index_test_db POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:index_test_db PREHOOK: query: use index_test_db PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:index_test_db POSTHOOK: query: use index_test_db POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:index_test_db PREHOOK: query: create table testtb (id int, name string) PREHOOK: type: CREATETABLE PREHOOK: Output: database:index_test_db +PREHOOK: Output: index_test_db@testtb POSTHOOK: query: create table testtb (id int, name string) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:index_test_db POSTHOOK: Output: index_test_db@testtb PREHOOK: query: create index id_index on table testtb (id) as 'COMPACT' WITH DEFERRED REBUILD in table testdb_id_idx_tb PREHOOK: type: CREATEINDEX +PREHOOK: Input: index_test_db@testtb POSTHOOK: query: create index id_index on table testtb (id) as 'COMPACT' WITH DEFERRED REBUILD in table testdb_id_idx_tb POSTHOOK: type: CREATEINDEX +POSTHOOK: Input: index_test_db@testtb POSTHOOK: Output: index_test_db@testdb_id_idx_tb PREHOOK: query: use default PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:default POSTHOOK: query: use default POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:default PREHOOK: query: select * from index_test_db.testtb where id>2 PREHOOK: type: QUERY PREHOOK: Input: index_test_db@testtb From 7b063634b65eae0e47f9f8d6ebd1076698232e82 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Mon, 20 Oct 2014 06:53:35 +0000 Subject: [PATCH 129/339] HIVE-8173: HiveServer2 dynamic service discovery: figure out best ZooKeeper ACLs for security (Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633059 13f79535-47bb-0310-9956-ffa450edef68 --- jdbc/src/java/org/apache/hive/jdbc/Utils.java | 21 +++--- .../hive/ql/util/ZooKeeperHiveHelper.java | 58 +++++++++++++++++ .../hive/service/server/HiveServer2.java | 65 +++++++++++++++++-- .../hadoop/hive/shims/Hadoop20Shims.java | 6 ++ .../hadoop/hive/shims/HadoopShimsSecure.java | 11 ++++ .../apache/hadoop/hive/shims/HadoopShims.java | 9 +++ 6 files changed, 152 insertions(+), 18 deletions(-) diff --git a/jdbc/src/java/org/apache/hive/jdbc/Utils.java b/jdbc/src/java/org/apache/hive/jdbc/Utils.java index 9b08fd9105d0..de7b5e9d20ec 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/Utils.java +++ b/jdbc/src/java/org/apache/hive/jdbc/Utils.java @@ -295,10 +295,6 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep // key=value pattern Pattern pattern = Pattern.compile("([^;]*)=([^;]*)[;]?"); - Map sessionVarMap = connParams.getSessionVars(); - Map hiveConfMap = connParams.getHiveConfs(); - Map hiveVarMap = connParams.getHiveVars(); - // dbname and session settings String sessVars = jdbcURI.getPath(); if ((sessVars != null) && !sessVars.isEmpty()) { @@ -315,7 +311,7 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep if (sessVars != null) { Matcher sessMatcher = pattern.matcher(sessVars); while (sessMatcher.find()) { - if (sessionVarMap.put(sessMatcher.group(1), sessMatcher.group(2)) != null) { + if (connParams.getSessionVars().put(sessMatcher.group(1), sessMatcher.group(2)) != null) { throw new JdbcUriParseException("Bad URL format: Multiple values for property " + sessMatcher.group(1)); } @@ -332,7 +328,7 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep if (confStr != null) { Matcher confMatcher = pattern.matcher(confStr); while (confMatcher.find()) { - hiveConfMap.put(confMatcher.group(1), confMatcher.group(2)); + connParams.getHiveConfs().put(confMatcher.group(1), confMatcher.group(2)); } } @@ -341,7 +337,7 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep if (varStr != null) { Matcher varMatcher = pattern.matcher(varStr); while (varMatcher.find()) { - hiveVarMap.put(varMatcher.group(1), varMatcher.group(2)); + connParams.getHiveVars().put(varMatcher.group(1), varMatcher.group(2)); } } @@ -350,19 +346,19 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep String usageUrlBase = "jdbc:hive2://:/dbName;"; // Handle deprecation of AUTH_QOP_DEPRECATED newUsage = usageUrlBase + JdbcConnectionParams.AUTH_QOP + "="; - handleParamDeprecation(sessionVarMap, sessionVarMap, JdbcConnectionParams.AUTH_QOP_DEPRECATED, - JdbcConnectionParams.AUTH_QOP, newUsage); + handleParamDeprecation(connParams.getSessionVars(), connParams.getSessionVars(), + JdbcConnectionParams.AUTH_QOP_DEPRECATED, JdbcConnectionParams.AUTH_QOP, newUsage); // Handle deprecation of TRANSPORT_MODE_DEPRECATED newUsage = usageUrlBase + JdbcConnectionParams.TRANSPORT_MODE + "="; - handleParamDeprecation(hiveConfMap, sessionVarMap, + handleParamDeprecation(connParams.getHiveConfs(), connParams.getSessionVars(), JdbcConnectionParams.TRANSPORT_MODE_DEPRECATED, JdbcConnectionParams.TRANSPORT_MODE, newUsage); // Handle deprecation of HTTP_PATH_DEPRECATED newUsage = usageUrlBase + JdbcConnectionParams.HTTP_PATH + "="; - handleParamDeprecation(hiveConfMap, sessionVarMap, JdbcConnectionParams.HTTP_PATH_DEPRECATED, - JdbcConnectionParams.HTTP_PATH, newUsage); + handleParamDeprecation(connParams.getHiveConfs(), connParams.getSessionVars(), + JdbcConnectionParams.HTTP_PATH_DEPRECATED, JdbcConnectionParams.HTTP_PATH, newUsage); // Extract host, port if (connParams.isEmbeddedMode()) { @@ -374,6 +370,7 @@ public static JdbcConnectionParams parseURL(String uri) throws JdbcUriParseExcep // Else substitute the dummy authority with a resolved one. // In case of dynamic service discovery using ZooKeeper, it picks a server uri from ZooKeeper String resolvedAuthorityString = resolveAuthority(connParams); + LOG.info("Resolved authority: " + resolvedAuthorityString); uri = uri.replace(dummyAuthorityString, resolvedAuthorityString); connParams.setJdbcUriString(uri); // Create a Java URI from the resolved URI for extracting the host/port diff --git a/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java b/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java index d9faa4587273..11dd962eee59 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java @@ -18,12 +18,18 @@ package org.apache.hadoop.hive.ql.util; +import java.util.HashMap; import java.util.List; +import java.util.Map; + +import javax.security.auth.login.AppConfigurationEntry; +import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.security.authentication.util.KerberosUtil; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.Watcher; @@ -33,6 +39,7 @@ public class ZooKeeperHiveHelper { public static final Log LOG = LogFactory.getLog(ZooKeeperHiveHelper.class.getName()); public static final String ZOOKEEPER_PATH_SEPARATOR = "/"; + public static final String SASL_LOGIN_CONTEXT_NAME = "HiveZooKeeperClient"; /** * Get the ensemble server addresses from the configuration. The format is: host1:port, * host2:port.. @@ -94,4 +101,55 @@ public void process(org.apache.zookeeper.WatchedEvent event) { } } + /** + * Dynamically sets up the JAAS configuration + * @param principal + * @param keyTabFile + */ + public static void setUpJaasConfiguration(String principal, String keyTabFile) { + JaasConfiguration jaasConf = + new JaasConfiguration(ZooKeeperHiveHelper.SASL_LOGIN_CONTEXT_NAME, principal, keyTabFile); + // Install the Configuration in the runtime. + javax.security.auth.login.Configuration.setConfiguration(jaasConf); + } + + /** + * A JAAS configuration for ZooKeeper clients intended to use for SASL Kerberos. + */ + private static class JaasConfiguration extends javax.security.auth.login.Configuration { + // Current installed Configuration + private javax.security.auth.login.Configuration baseConfig = + javax.security.auth.login.Configuration.getConfiguration(); + private final String loginContextName; + private final String principal; + private final String keyTabFile; + + public JaasConfiguration(String hiveLoginContextName, String principal, String keyTabFile) { + this.loginContextName = hiveLoginContextName; + this.principal = principal; + this.keyTabFile = keyTabFile; + } + + @Override + public AppConfigurationEntry[] getAppConfigurationEntry(String appName) { + if (loginContextName.equals(appName)) { + Map krbOptions = new HashMap(); + krbOptions.put("doNotPrompt", "true"); + krbOptions.put("storeKey", "true"); + krbOptions.put("useKeyTab", "true"); + krbOptions.put("principal", principal); + krbOptions.put("keyTab", keyTabFile); + krbOptions.put("refreshKrb5Config", "true"); + AppConfigurationEntry hiveZooKeeperClientEntry = + new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(), + LoginModuleControlFlag.REQUIRED, krbOptions); + return new AppConfigurationEntry[] { hiveZooKeeperClientEntry }; + } + // Try the base config + if (baseConfig != null) { + return baseConfig.getAppConfigurationEntry(appName); + } + return null; + } + } } diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java b/service/src/java/org/apache/hive/service/server/HiveServer2.java index 8691fcce352c..0aab3f942eb9 100644 --- a/service/src/java/org/apache/hive/service/server/HiveServer2.java +++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java @@ -18,7 +18,9 @@ package org.apache.hive.service.server; +import java.io.IOException; import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -36,6 +38,7 @@ import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.ql.exec.tez.TezSessionPoolManager; import org.apache.hadoop.hive.ql.util.ZooKeeperHiveHelper; +import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hive.common.util.HiveStringUtils; import org.apache.hive.common.util.HiveVersionInfo; import org.apache.hive.service.CompositeService; @@ -48,7 +51,10 @@ import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs.Ids; +import org.apache.zookeeper.ZooDefs.Perms; import org.apache.zookeeper.ZooKeeper; +import org.apache.zookeeper.client.ZooKeeperSaslClient; +import org.apache.zookeeper.data.ACL; /** * HiveServer2. @@ -115,14 +121,19 @@ private void addServerInstanceToZooKeeper(HiveConf hiveConf) throws Exception { String rootNamespace = hiveConf.getVar(HiveConf.ConfVars.HIVE_SERVER2_ZOOKEEPER_NAMESPACE); String instanceURI = getServerInstanceURI(hiveConf); byte[] znodeDataUTF8 = instanceURI.getBytes(Charset.forName("UTF-8")); + // Znode ACLs + List nodeAcls = new ArrayList(); + setUpAuthAndAcls(hiveConf, nodeAcls); + // Create a ZooKeeper client zooKeeperClient = new ZooKeeper(zooKeeperEnsemble, zooKeeperSessionTimeout, new ZooKeeperHiveHelper.DummyWatcher()); - - // Create the parent znodes recursively; ignore if the parent already exists + // Create the parent znodes recursively; ignore if the parent already exists. + // If pre-creating the parent on a kerberized cluster, ensure that you give ACLs, + // as explained in {@link #setUpAuthAndAcls(HiveConf, List) setUpAuthAndAcls} try { - ZooKeeperHiveHelper.createPathRecursively(zooKeeperClient, rootNamespace, - Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); + ZooKeeperHiveHelper.createPathRecursively(zooKeeperClient, rootNamespace, nodeAcls, + CreateMode.PERSISTENT); LOG.info("Created the root name space: " + rootNamespace + " on ZooKeeper for HiveServer2"); } catch (KeeperException e) { if (e.code() != KeeperException.Code.NODEEXISTS) { @@ -133,12 +144,12 @@ private void addServerInstanceToZooKeeper(HiveConf hiveConf) throws Exception { // Create a znode under the rootNamespace parent for this instance of the server // Znode name: serverUri=host:port;version=versionInfo;sequence=sequenceNumber try { - String znodePath = + String pathPrefix = ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + rootNamespace + ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + "serverUri=" + instanceURI + ";" + "version=" + HiveVersionInfo.getVersion() + ";" + "sequence="; znodePath = - zooKeeperClient.create(znodePath, znodeDataUTF8, Ids.OPEN_ACL_UNSAFE, + zooKeeperClient.create(pathPrefix, znodeDataUTF8, nodeAcls, CreateMode.EPHEMERAL_SEQUENTIAL); setRegisteredWithZooKeeper(true); // Set a watch on the znode @@ -153,6 +164,48 @@ private void addServerInstanceToZooKeeper(HiveConf hiveConf) throws Exception { } } + /** + * Set up ACLs for znodes based on whether the cluster is secure or not. + * On a kerberized cluster, ZooKeeper performs Kerberos-SASL authentication. + * We give Read privilege to the world, but Create/Delete/Write/Admin to the authenticated user. + * On a non-kerberized cluster, we give Create/Read/Delete/Write/Admin privileges to the world. + * + * For a kerberized cluster, we also dynamically set up the client's JAAS conf. + * @param hiveConf + * @param nodeAcls + * @return + * @throws Exception + */ + private void setUpAuthAndAcls(HiveConf hiveConf, List nodeAcls) throws Exception { + if (ShimLoader.getHadoopShims().isSecurityEnabled()) { + String principal = + ShimLoader.getHadoopShims().getResolvedPrincipal( + hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL)); + String keyTabFile = hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_KEYTAB); + if (principal.isEmpty()) { + throw new IOException( + "HiveServer2 Kerberos principal is empty"); + } + if (keyTabFile.isEmpty()) { + throw new IOException( + "HiveServer2 Kerberos keytab is empty"); + } + // ZooKeeper property name to pick the correct JAAS conf section + System.setProperty(ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY, + ZooKeeperHiveHelper.SASL_LOGIN_CONTEXT_NAME); + // Install the JAAS Configuration for the runtime + ZooKeeperHiveHelper.setUpJaasConfiguration(principal, keyTabFile); + // Read all to the world + nodeAcls.addAll(Ids.READ_ACL_UNSAFE); + // Create/Delete/Write/Admin to the authenticated user + nodeAcls.add(new ACL(Perms.ALL, Ids.AUTH_IDS)); + } else { + // ACLs for znodes on a non-kerberized cluster + // Create/Read/Delete/Write/Admin to the world + nodeAcls.addAll(Ids.OPEN_ACL_UNSAFE); + } + } + /** * The watcher class which sets the de-register flag when the znode corresponding to this server * instance is deleted. Additionally, it shuts down the server if there are no more active client diff --git a/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java b/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java index 52f02c1a7915..9f062ca85edf 100644 --- a/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java +++ b/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java @@ -619,6 +619,12 @@ public UserGroupInformation loginUserFromKeytabAndReturnUGI( return null; } + @Override + public String getResolvedPrincipal(String principal) throws IOException { + // Not supported + return null; + } + @Override public void reLoginUserFromKeytab() throws IOException{ throwKerberosUnsupportedError(); diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java index 6e1ad0348281..606f973eb51a 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java @@ -573,6 +573,17 @@ public UserGroupInformation loginUserFromKeytabAndReturnUGI( return UserGroupInformation.loginUserFromKeytabAndReturnUGI(hostPrincipal, keytabFile); } + /** + * Convert Kerberos principal name pattern to valid Kerberos principal names. + * @param principal (principal name pattern) + * @return + * @throws IOException + */ + @Override + public String getResolvedPrincipal(String principal) throws IOException { + return SecurityUtil.getServerPrincipal(principal, "0.0.0.0"); + } + @Override public String getTokenFileLocEnvName() { return UserGroupInformation.HADOOP_TOKEN_FILE_LOCATION; diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java index d56795f7be1c..0a1a86ab93ec 100644 --- a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java +++ b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java @@ -61,6 +61,7 @@ import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.hadoop.mapreduce.TaskAttemptID; import org.apache.hadoop.mapreduce.TaskID; +import org.apache.hadoop.security.SecurityUtil; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.Progressable; @@ -321,6 +322,14 @@ enum JobTrackerState { INITIALIZING, RUNNING }; public UserGroupInformation loginUserFromKeytabAndReturnUGI(String principal, String keytabFile) throws IOException; + /** + * Convert Kerberos principal name pattern to valid Kerberos principal names. + * @param principal (principal name pattern) + * @return + * @throws IOException + */ + public String getResolvedPrincipal(String principal) throws IOException; + /** * Perform kerberos re-login using the given principal and keytab, to renew * the credentials From 3aac1b9e24bb04f5f2f4375f63a479e89ca3f8a7 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Mon, 20 Oct 2014 06:56:03 +0000 Subject: [PATCH 130/339] HIVE-8377: Enable Kerberized SSL for HiveServer2 in http mode (Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633061 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hive/jdbc/HiveConnection.java | 83 +++++++++---------- .../cli/thrift/ThriftHttpCLIService.java | 33 -------- 2 files changed, 40 insertions(+), 76 deletions(-) diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index e4ec0c6eefa7..d71bde3cbc92 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -258,15 +258,12 @@ private DefaultHttpClient getHttpClient(Boolean useSsl) throws SQLException { HttpRequestInterceptor requestInterceptor; // If Kerberos if (isKerberosAuthMode()) { - if (useSsl) { - String msg = "SSL encryption is currently not supported with " + - "kerberos authentication"; - throw new SQLException(msg, " 08S01"); - } /** * Add an interceptor which sets the appropriate header in the request. * It does the kerberos authentication and get the final service ticket, * for sending to the server before every request. + * In https mode, the entire information is encrypted + * TODO: Optimize this with a mix of kerberos + using cookie. */ requestInterceptor = new HttpKerberosRequestInterceptor( sessConfMap.get(JdbcConnectionParams.AUTH_PRINCIPAL), host, getServerHttpUrl(false)); @@ -277,46 +274,46 @@ private DefaultHttpClient getHttpClient(Boolean useSsl) throws SQLException { * In https mode, the entire information is encrypted */ requestInterceptor = new HttpBasicAuthInterceptor(getUserName(), getPassword()); - // Configure httpClient for SSL - if (useSsl) { - String sslTrustStorePath = sessConfMap.get(JdbcConnectionParams.SSL_TRUST_STORE); - String sslTrustStorePassword = sessConfMap.get( - JdbcConnectionParams.SSL_TRUST_STORE_PASSWORD); - KeyStore sslTrustStore; - SSLSocketFactory socketFactory; - /** - * The code within the try block throws: - * 1. SSLInitializationException - * 2. KeyStoreException - * 3. IOException - * 4. NoSuchAlgorithmException - * 5. CertificateException - * 6. KeyManagementException - * 7. UnrecoverableKeyException - * We don't want the client to retry on any of these, hence we catch all - * and throw a SQLException. - */ - try { - if (sslTrustStorePath == null || sslTrustStorePath.isEmpty()) { - // Create a default socket factory based on standard JSSE trust material - socketFactory = SSLSocketFactory.getSocketFactory(); - } - else { - // Pick trust store config from the given path - sslTrustStore = KeyStore.getInstance(JdbcConnectionParams.SSL_TRUST_STORE_TYPE); - sslTrustStore.load(new FileInputStream(sslTrustStorePath), - sslTrustStorePassword.toCharArray()); - socketFactory = new SSLSocketFactory(sslTrustStore); - } - socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - Scheme sslScheme = new Scheme("https", 443, socketFactory); - httpClient.getConnectionManager().getSchemeRegistry().register(sslScheme); + } + // Configure httpClient for SSL + if (useSsl) { + String sslTrustStorePath = sessConfMap.get(JdbcConnectionParams.SSL_TRUST_STORE); + String sslTrustStorePassword = sessConfMap.get( + JdbcConnectionParams.SSL_TRUST_STORE_PASSWORD); + KeyStore sslTrustStore; + SSLSocketFactory socketFactory; + /** + * The code within the try block throws: + * 1. SSLInitializationException + * 2. KeyStoreException + * 3. IOException + * 4. NoSuchAlgorithmException + * 5. CertificateException + * 6. KeyManagementException + * 7. UnrecoverableKeyException + * We don't want the client to retry on any of these, hence we catch all + * and throw a SQLException. + */ + try { + if (sslTrustStorePath == null || sslTrustStorePath.isEmpty()) { + // Create a default socket factory based on standard JSSE trust material + socketFactory = SSLSocketFactory.getSocketFactory(); } - catch (Exception e) { - String msg = "Could not create an https connection to " + - jdbcUriString + ". " + e.getMessage(); - throw new SQLException(msg, " 08S01", e); + else { + // Pick trust store config from the given path + sslTrustStore = KeyStore.getInstance(JdbcConnectionParams.SSL_TRUST_STORE_TYPE); + sslTrustStore.load(new FileInputStream(sslTrustStorePath), + sslTrustStorePassword.toCharArray()); + socketFactory = new SSLSocketFactory(sslTrustStore); } + socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + Scheme sslScheme = new Scheme("https", 443, socketFactory); + httpClient.getConnectionManager().getSchemeRegistry().register(sslScheme); + } + catch (Exception e) { + String msg = "Could not create an https connection to " + + jdbcUriString + ". " + e.getMessage(); + throw new SQLException(msg, " 08S01", e); } } httpClient.addRequestInterceptor(requestInterceptor); diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java index cfa7284da666..f7b16487fe12 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java @@ -29,12 +29,10 @@ import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.Shell; import org.apache.hive.service.auth.HiveAuthFactory; -import org.apache.hive.service.auth.HiveAuthFactory.AuthTypes; import org.apache.hive.service.cli.CLIService; import org.apache.hive.service.cli.thrift.TCLIService.Iface; import org.apache.hive.service.server.ThreadFactoryWithGarbageCleanup; import org.apache.thrift.TProcessor; -import org.apache.thrift.TProcessorFactory; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TProtocolFactory; import org.apache.thrift.server.TServlet; @@ -60,9 +58,6 @@ public ThriftHttpCLIService(CLIService cliService) { @Override public void run() { try { - // Verify config validity - verifyHttpConfiguration(hiveConf); - // HTTP Server httpServer = new org.eclipse.jetty.server.Server(); @@ -162,32 +157,4 @@ private String getHttpPath(String httpPath) { } return httpPath; } - - /** - * Verify that this configuration is supported by transportMode of HTTP - * @param hiveConf - */ - private static void verifyHttpConfiguration(HiveConf hiveConf) { - String authType = hiveConf.getVar(ConfVars.HIVE_SERVER2_AUTHENTICATION); - - // Error out if KERBEROS auth mode is being used and use SSL is also set to true - if(authType.equalsIgnoreCase(AuthTypes.KERBEROS.toString()) && - hiveConf.getBoolVar(ConfVars.HIVE_SERVER2_USE_SSL)) { - String msg = ConfVars.HIVE_SERVER2_AUTHENTICATION + " setting of " + - authType + " is not supported with " + - ConfVars.HIVE_SERVER2_USE_SSL + " set to true"; - LOG.fatal(msg); - throw new RuntimeException(msg); - } - - // Warn that SASL is not used in http mode - if(authType.equalsIgnoreCase(AuthTypes.NONE.toString())) { - // NONE in case of thrift mode uses SASL - LOG.warn(ConfVars.HIVE_SERVER2_AUTHENTICATION + " setting to " + - authType + ". SASL is not supported with http transport mode," + - " so using equivalent of " - + AuthTypes.NOSASL); - } - } - } From bebca0f32c5d990a6dcfd18235e286ea6ba01724 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 20 Oct 2014 21:35:37 +0000 Subject: [PATCH 131/339] HIVE-7914 : Simplify join predicates for CBO to avoid cross products (John Pullokkaran via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633233 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index bcbcdd174879..85b09ca2ad49 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -41,6 +41,7 @@ import java.util.regex.PatternSyntaxException; import com.google.common.annotations.VisibleForTesting; + import net.hydromatic.optiq.SchemaPlus; import net.hydromatic.optiq.tools.Frameworks; @@ -272,6 +273,7 @@ import org.eigenbase.rex.RexBuilder; import org.eigenbase.rex.RexInputRef; import org.eigenbase.rex.RexNode; +import org.eigenbase.rex.RexUtil; import org.eigenbase.rex.RexWindowBound; import org.eigenbase.rex.RexFieldCollation; import org.eigenbase.sql.SqlAggFunction; @@ -12829,8 +12831,9 @@ private RelNode genFilterRelNode(ASTNode filterExpr, RelNode srcRel) throws Sema .get(srcRel); RexNode convertedFilterExpr = new RexNodeConverter(cluster, srcRel.getRowType(), hiveColNameOptiqPosMap, 0, true).convert(filterCondn); + RexNode factoredFilterExpr = RexUtil.pullFactors(cluster.getRexBuilder(), convertedFilterExpr); RelNode filterRel = new HiveFilterRel(cluster, cluster.traitSetOf(HiveRel.CONVENTION), - srcRel, convertedFilterExpr); + srcRel, factoredFilterExpr); this.relToHiveColNameOptiqPosMap.put(filterRel, hiveColNameOptiqPosMap); relToHiveRR.put(filterRel, relToHiveRR.get(srcRel)); relToHiveColNameOptiqPosMap.put(filterRel, hiveColNameOptiqPosMap); From 8c4cfacc80e6f32cf245c86057664b8a6036d1d5 Mon Sep 17 00:00:00 2001 From: Eugene Koifman Date: Mon, 20 Oct 2014 21:38:05 +0000 Subject: [PATCH 132/339] HIVE-8387 add retry logic to ZooKeeperStorage in WebHCat git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633234 13f79535-47bb-0310-9956-ffa450edef68 --- hcatalog/webhcat/svr/pom.xml | 41 +++- .../hcatalog/templeton/tool/HDFSStorage.java | 70 ------ .../templeton/tool/JobStateTracker.java | 63 +++--- .../templeton/tool/TempletonStorage.java | 44 +--- .../templeton/tool/ZooKeeperCleanup.java | 21 +- .../templeton/tool/ZooKeeperStorage.java | 209 ++++++------------ pom.xml | 9 +- 7 files changed, 160 insertions(+), 297 deletions(-) diff --git a/hcatalog/webhcat/svr/pom.xml b/hcatalog/webhcat/svr/pom.xml index 17499faf22cf..dc60414217f9 100644 --- a/hcatalog/webhcat/svr/pom.xml +++ b/hcatalog/webhcat/svr/pom.xml @@ -38,7 +38,7 @@ - + org.apache.hive.hcatalog @@ -67,6 +67,14 @@ commons-exec ${commons-exec.version} + + + + org.apache.curator + curator-framework + ${curator.version} + + org.apache.zookeeper zookeeper @@ -190,6 +198,37 @@ + + org.apache.maven.plugins + maven-shade-plugin + + + include-curator + + package + + shade + + + true + + + org.apache.curator + + + + + org.apache.curator + webhcat.org.apache.curator + + + + + + diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/HDFSStorage.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/HDFSStorage.java index fb46b5896f96..9c73a733cb65 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/HDFSStorage.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/HDFSStorage.java @@ -25,9 +25,7 @@ import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -115,32 +113,6 @@ public String getField(Type type, String id, String key) { return null; } - @Override - public Map getFields(Type type, String id) { - HashMap map = new HashMap(); - BufferedReader in = null; - Path p = new Path(getPath(type) + "/" + id); - try { - for (FileStatus status : fs.listStatus(p)) { - in = new BufferedReader(new InputStreamReader(fs.open(status.getPath()))); - String line = null; - String val = ""; - while ((line = in.readLine()) != null) { - if (!val.equals("")) { - val += "\n"; - } - val += line; - } - map.put(status.getPath().getName(), val); - } - } catch (IOException e) { - LOG.trace("Couldn't find " + p); - } finally { - close(in); - } - return map; - } - @Override public boolean delete(Type type, String id) throws NotFoundException { Path p = new Path(getPath(type) + "/" + id); @@ -153,14 +125,6 @@ public boolean delete(Type type, String id) throws NotFoundException { return false; } - @Override - public List getAll() { - ArrayList allNodes = new ArrayList(); - for (Type type : Type.values()) { - allNodes.addAll(getAllForType(type)); - } - return allNodes; - } @Override public List getAllForType(Type type) { @@ -176,40 +140,6 @@ public List getAllForType(Type type) { return allNodes; } - @Override - public List getAllForKey(String key, String value) { - ArrayList allNodes = new ArrayList(); - try { - for (Type type : Type.values()) { - allNodes.addAll(getAllForTypeAndKey(type, key, value)); - } - } catch (Exception e) { - LOG.trace("Couldn't find children for key " + key + ": " + - e.getMessage()); - } - return allNodes; - } - - @Override - public List getAllForTypeAndKey(Type type, String key, String value) { - ArrayList allNodes = new ArrayList(); - HashMap map = new HashMap(); - try { - for (FileStatus status : - fs.listStatus(new Path(getPath(type)))) { - map = (HashMap) - getFields(type, status.getPath().getName()); - if (map.get(key).equals(value)) { - allNodes.add(status.getPath().getName()); - } - } - } catch (Exception e) { - LOG.trace("Couldn't find children for key " + key + ": " + - e.getMessage()); - } - return allNodes; - } - @Override public void openStorage(Configuration config) throws IOException { storage_root = config.get(TempletonStorage.STORAGE_ROOT); diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobStateTracker.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobStateTracker.java index da3ad20b5fb4..41fd82f0b211 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobStateTracker.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobStateTracker.java @@ -24,19 +24,30 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.curator.framework.CuratorFramework; import org.apache.hadoop.conf.Configuration; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.ZooDefs.Ids; -import org.apache.zookeeper.data.Stat; +/* + * The general idea here is to create + * /created/1 + * /created/2 + * /created/3 .... + * for each job submitted. The node number is generated by ZK (PERSISTENT_SEQUENTIAL) and the + * payload is the JobId. Basically this keeps track of the order in which jobs were submitted, + * and ZooKeeperCleanup uses this to purge old job info. + * Since the /jobs/ node has a create/update timestamp + * (http://zookeeper.apache.org/doc/trunk/zookeeperProgrammers.html#sc_zkStatStructure) this whole + * thing can be removed. +*/ public class JobStateTracker { // The path to the tracking root private String job_trackingroot = null; // The zookeeper connection to use - private ZooKeeper zk; + private CuratorFramework zk; // The id of the tracking node -- must be a SEQUENTIAL node private String trackingnode; @@ -51,7 +62,7 @@ public class JobStateTracker { * Constructor for a new node -- takes the jobid of an existing job * */ - public JobStateTracker(String node, ZooKeeper zk, boolean nodeIsTracker, + public JobStateTracker(String node, CuratorFramework zk, boolean nodeIsTracker, String job_trackingpath) { this.zk = zk; if (nodeIsTracker) { @@ -65,30 +76,25 @@ public JobStateTracker(String node, ZooKeeper zk, boolean nodeIsTracker, /** * Create the parent znode for this job state. */ - public void create() - throws IOException { - String[] paths = ZooKeeperStorage.getPaths(job_trackingroot); - for (String znode : paths) { - try { - zk.create(znode, new byte[0], - Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - } catch (KeeperException.NodeExistsException e) { - } catch (Exception e) { - throw new IOException("Unable to create parent nodes"); - } + public void create() throws IOException { + try { + zk.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT) + .withACL(Ids.OPEN_ACL_UNSAFE).forPath(job_trackingroot); + } catch (KeeperException.NodeExistsException e) { + //root must exist already + } catch (Exception e) { + throw new IOException("Unable to create parent nodes"); } try { - trackingnode = zk.create(makeTrackingZnode(), jobid.getBytes(), - Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL); + trackingnode = zk.create().withMode(CreateMode.PERSISTENT_SEQUENTIAL) + .withACL(Ids.OPEN_ACL_UNSAFE).forPath(makeTrackingZnode(), jobid.getBytes()); } catch (Exception e) { throw new IOException("Unable to create " + makeTrackingZnode()); } } - - public void delete() - throws IOException { + public void delete() throws IOException { try { - zk.delete(makeTrackingJobZnode(trackingnode), -1); + zk.delete().forPath(makeTrackingJobZnode(trackingnode)); } catch (Exception e) { // Might have been deleted already LOG.info("Couldn't delete " + makeTrackingJobZnode(trackingnode)); @@ -101,13 +107,10 @@ public void delete() */ public String getJobID() throws IOException { try { - return new String(zk.getData(makeTrackingJobZnode(trackingnode), - false, new Stat())); - } catch (KeeperException e) { + return new String(zk.getData().forPath(makeTrackingJobZnode(trackingnode))); + } catch (Exception e) { // It was deleted during the transaction - throw new IOException("Node already deleted " + trackingnode); - } catch (InterruptedException e) { - throw new IOException("Couldn't read node " + trackingnode); + throw new IOException("Node already deleted " + trackingnode, e); } } @@ -129,13 +132,13 @@ public String makeTrackingJobZnode(String nodename) { * Get the list of tracking jobs. These can be used to determine which jobs have * expired. */ - public static List getTrackingJobs(Configuration conf, ZooKeeper zk) + public static List getTrackingJobs(Configuration conf, CuratorFramework zk) throws IOException { ArrayList jobs = new ArrayList(); try { - for (String myid : zk.getChildren( + for (String myid : zk.getChildren().forPath( conf.get(TempletonStorage.STORAGE_ROOT) - + ZooKeeperStorage.TRACKINGDIR, false)) { + + ZooKeeperStorage.TRACKINGDIR)) { jobs.add(myid); } } catch (Exception e) { diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonStorage.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonStorage.java index 97d572cbfdc4..cf27ffa8407d 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonStorage.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonStorage.java @@ -20,7 +20,6 @@ import java.io.IOException; import java.util.List; -import java.util.Map; import org.apache.hadoop.conf.Configuration; @@ -45,7 +44,7 @@ public interface TempletonStorage { // These are the possible types referenced by 'type' below. public enum Type { - UNKNOWN, JOB, JOBTRACKING, TEMPLETONOVERHEAD + UNKNOWN, JOB, JOBTRACKING } public static final String STORAGE_CLASS = "templeton.storage.class"; @@ -78,20 +77,6 @@ public void saveField(Type type, String id, String key, String val) */ public String getField(Type type, String id, String key); - /** - * Get all the name/value pairs stored for this id. - * Be careful using getFields() -- optimistic locking will mean that - * your odds of a conflict are decreased if you read/write one field - * at a time. getFields() is intended for read-only usage. - * - * If the type is UNKNOWN, search for the id in all types. - * - * @param type The data type (as listed above) - * @param id The String id of this data grouping (jobid, etc.) - * @return A Map of key/value pairs found for this type/id. - */ - public Map getFields(Type type, String id); - /** * Delete a data grouping (all data for a jobid, all tracking data * for a job, etc.). If the type is UNKNOWN, search for the id @@ -104,13 +89,6 @@ public void saveField(Type type, String id, String key, String val) */ public boolean delete(Type type, String id) throws NotFoundException; - /** - * Get the id of each data grouping in the storage system. - * - * @return An ArrayList of ids. - */ - public List getAll(); - /** * Get the id of each data grouping of a given type in the storage * system. @@ -119,26 +97,6 @@ public void saveField(Type type, String id, String key, String val) */ public List getAllForType(Type type); - /** - * Get the id of each data grouping that has the specific key/value - * pair. - * @param key The name of the field to search for - * @param value The value of the field to search for - * @return An ArrayList of ids. - */ - public List getAllForKey(String key, String value); - - /** - * Get the id of each data grouping of a given type that has the - * specific key/value pair. - * @param type The data type (as listed above) - * @param key The name of the field to search for - * @param value The value of the field to search for - * @return An ArrayList of ids. - */ - public List getAllForTypeAndKey(Type type, String key, - String value); - /** * For storage methods that require a connection, this is a hint * that it's time to open a connection. diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/ZooKeeperCleanup.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/ZooKeeperCleanup.java index 4f5e2d908aa0..24336e27f1ca 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/ZooKeeperCleanup.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/ZooKeeperCleanup.java @@ -24,8 +24,8 @@ import java.util.List; import java.util.Date; +import org.apache.curator.framework.CuratorFramework; import org.apache.hadoop.conf.Configuration; -import org.apache.zookeeper.ZooKeeper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -89,7 +89,7 @@ public static void startInstance(Configuration appConf) throws IOException { * @throws IOException */ public void run() { - ZooKeeper zk = null; + CuratorFramework zk = null; List nodes = null; isRunning = true; while (!stop) { @@ -112,13 +112,7 @@ public void run() { } catch (Exception e) { LOG.error("Cleanup cycle failed: " + e.getMessage()); } finally { - if (zk != null) { - try { - zk.close(); - } catch (InterruptedException e) { - // We're trying to exit anyway, just ignore. - } - } + if (zk != null) zk.close(); } long sleepMillis = (long) (Math.random() * interval); @@ -140,7 +134,7 @@ public void run() { * * @throws IOException */ - public List getChildList(ZooKeeper zk) { + public List getChildList(CuratorFramework zk) { try { List jobs = JobStateTracker.getTrackingJobs(appConf, zk); Collections.sort(jobs); @@ -154,7 +148,7 @@ public List getChildList(ZooKeeper zk) { /** * Check to see if a job is more than maxage old, and delete it if so. */ - public boolean checkAndDelete(String node, ZooKeeper zk) { + public boolean checkAndDelete(String node, CuratorFramework zk) { JobState state = null; try { JobStateTracker tracker = new JobStateTracker(node, zk, true, @@ -167,8 +161,11 @@ public boolean checkAndDelete(String node, ZooKeeper zk) { // an error in creation, and we want to delete it anyway. long then = 0; if (state.getCreated() != null) { + //this is set in ZooKeeperStorage.create() then = state.getCreated(); } + //todo: this should check that the job actually completed and likely use completion time + //which is not tracked directly but available on /jobs/ node via "mtime" in Stat if (now - then > maxage) { LOG.info("Deleting " + tracker.getJobID()); state.delete(); @@ -177,7 +174,7 @@ public boolean checkAndDelete(String node, ZooKeeper zk) { } return false; } catch (Exception e) { - LOG.info("checkAndDelete failed for " + node); + LOG.info("checkAndDelete failed for " + node + " due to: " + e.getMessage()); // We don't throw a new exception for this -- just keep going with the // next one. return true; diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/ZooKeeperStorage.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/ZooKeeperStorage.java index ecde59817b0b..b9fc4b1b0815 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/ZooKeeperStorage.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/ZooKeeperStorage.java @@ -19,21 +19,18 @@ package org.apache.hive.hcatalog.templeton.tool; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.hadoop.conf.Configuration; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.WatchedEvent; -import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs.Ids; -import org.apache.zookeeper.ZooKeeper; /** * A storage implementation based on storing everything in ZooKeeper. @@ -60,29 +57,29 @@ public class ZooKeeperStorage implements TempletonStorage { private static final Log LOG = LogFactory.getLog(ZooKeeperStorage.class); - private ZooKeeper zk; + private CuratorFramework zk; /** * Open a ZooKeeper connection for the JobState. */ - public static ZooKeeper zkOpen(String zkHosts, int zkSessionTimeout) + public static CuratorFramework zkOpen(String zkHosts, int zkSessionTimeoutMs) throws IOException { - return new ZooKeeper(zkHosts, - zkSessionTimeout, - new Watcher() { - @Override - synchronized public void process(WatchedEvent event) { - } - }); + //do we need to add a connection status listener? What will that do? + ExponentialBackoffRetry retryPolicy = new ExponentialBackoffRetry(1000, 3); + CuratorFramework zk = CuratorFrameworkFactory.newClient(zkHosts, zkSessionTimeoutMs, + CuratorFrameworkFactory.builder().getConnectionTimeoutMs(), retryPolicy); + zk.start(); + return zk; } /** * Open a ZooKeeper connection for the JobState. */ - public static ZooKeeper zkOpen(Configuration conf) - throws IOException { + public static CuratorFramework zkOpen(Configuration conf) throws IOException { + /*the silly looking call to Builder below is to get the default value of session timeout + from Curator which itself exposes it as system property*/ return zkOpen(conf.get(ZK_HOSTS), - conf.getInt(ZK_SESSION_TIMEOUT, 30000)); + conf.getInt(ZK_SESSION_TIMEOUT, CuratorFrameworkFactory.builder().getSessionTimeoutMs())); } public ZooKeeperStorage() { @@ -93,15 +90,9 @@ public ZooKeeperStorage() { /** * Close this ZK connection. */ - public void close() - throws IOException { + public void close() throws IOException { if (zk != null) { - try { - zk.close(); - zk = null; - } catch (InterruptedException e) { - throw new IOException("Closing ZooKeeper connection", e); - } + zk.close(); } } @@ -118,48 +109,54 @@ public void startCleanup(Configuration config) { */ public void create(Type type, String id) throws IOException { + boolean wasCreated = false; try { - String[] paths = getPaths(makeZnode(type, id)); - boolean wasCreated = false; - for (String znode : paths) { - try { - zk.create(znode, new byte[0], - Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - wasCreated = true; - } catch (KeeperException.NodeExistsException e) { + zk.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).withACL(Ids.OPEN_ACL_UNSAFE).forPath(makeZnode(type, id)); + wasCreated = true; + } + catch(KeeperException.NodeExistsException ex) { + //we just created top level node for this jobId + } + catch(Exception ex) { + throw new IOException("Error creating " + makeZnode(type, id), ex); + } + if(wasCreated) { + try { + // Really not sure if this should go here. Will have + // to see how the storage mechanism evolves. + if (type.equals(Type.JOB)) { + JobStateTracker jt = new JobStateTracker(id, zk, false, job_trackingpath); + jt.create(); } - } - if (wasCreated) { + } catch (Exception e) { + LOG.error("Error tracking (jobId=" + id + "): " + e.getMessage()); + // If we couldn't create the tracker node, don't create the main node. try { - // Really not sure if this should go here. Will have - // to see how the storage mechanism evolves. - if (type.equals(Type.JOB)) { - JobStateTracker jt = new JobStateTracker(id, zk, false, - job_trackingpath); - jt.create(); - } - } catch (Exception e) { - LOG.warn("Error tracking: " + e.getMessage()); - // If we couldn't create the tracker node, don't - // create the main node. - zk.delete(makeZnode(type, id), -1); + zk.delete().forPath(makeZnode(type, id));//default version is -1 + } + catch(Exception ex) { + //EK: it's not obvious that this is the right logic, if we don't record the 'callback' + //for example and never notify the client of job completion + throw new IOException("Failed to delete " + makeZnode(type, id) + ":" + ex); } } - if (zk.exists(makeZnode(type, id), false) == null) + } + try { + if (zk.checkExists().forPath(makeZnode(type, id)) == null) { throw new IOException("Unable to create " + makeZnode(type, id)); - if (wasCreated) { - try { - saveField(type, id, "created", - Long.toString(System.currentTimeMillis())); - } catch (NotFoundException nfe) { - // Wow, something's really wrong. - throw new IOException("Couldn't write to node " + id, nfe); - } } - } catch (KeeperException e) { - throw new IOException("Creating " + id, e); - } catch (InterruptedException e) { - throw new IOException("Creating " + id, e); + } + catch (Exception ex) { + throw new IOException(ex); + } + if (wasCreated) { + try { + saveField(type, id, "created", + Long.toString(System.currentTimeMillis())); + } catch (NotFoundException nfe) { + // Wow, something's really wrong. + throw new IOException("Couldn't write to node " + id, nfe); + } } } @@ -198,25 +195,14 @@ public static String[] getPaths(String fullpath) { /** * A helper method that sets a field value. - * @param type - * @param id - * @param name - * @param val - * @throws KeeperException - * @throws UnsupportedEncodingException - * @throws InterruptedException + * @throws java.lang.Exception */ - private void setFieldData(Type type, String id, String name, String val) - throws KeeperException, UnsupportedEncodingException, InterruptedException { + private void setFieldData(Type type, String id, String name, String val) throws Exception { try { - zk.create(makeFieldZnode(type, id, name), - val.getBytes(ENCODING), - Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); + zk.create().withMode(CreateMode.PERSISTENT).withACL(Ids.OPEN_ACL_UNSAFE) + .forPath(makeFieldZnode(type, id, name), val.getBytes(ENCODING)); } catch (KeeperException.NodeExistsException e) { - zk.setData(makeFieldZnode(type, id, name), - val.getBytes(ENCODING), - -1); + zk.setData().forPath(makeFieldZnode(type, id, name), val.getBytes(ENCODING)); } } @@ -251,34 +237,20 @@ public void saveField(Type type, String id, String key, String val) @Override public String getField(Type type, String id, String key) { try { - byte[] b = zk.getData(makeFieldZnode(type, id, key), false, null); + byte[] b = zk.getData().forPath(makeFieldZnode(type, id, key)); return new String(b, ENCODING); } catch (Exception e) { return null; } } - @Override - public Map getFields(Type type, String id) { - HashMap map = new HashMap(); - try { - for (String node : zk.getChildren(makeZnode(type, id), false)) { - byte[] b = zk.getData(makeFieldZnode(type, id, node), - false, null); - map.put(node, new String(b, ENCODING)); - } - } catch (Exception e) { - return map; - } - return map; - } - @Override public boolean delete(Type type, String id) throws NotFoundException { try { - for (String child : zk.getChildren(makeZnode(type, id), false)) { + + for (String child : zk.getChildren().forPath(makeZnode(type, id))) { try { - zk.delete(makeFieldZnode(type, id, child), -1); + zk.delete().forPath(makeFieldZnode(type, id, child)); } catch (Exception e) { // Other nodes may be trying to delete this at the same time, // so just log errors and skip them. @@ -287,7 +259,7 @@ public boolean delete(Type type, String id) throws NotFoundException { } } try { - zk.delete(makeZnode(type, id), -1); + zk.delete().forPath(makeZnode(type, id)); } catch (Exception e) { // Same thing -- might be deleted by other nodes, so just go on. throw new NotFoundException("Couldn't delete " + @@ -301,58 +273,15 @@ public boolean delete(Type type, String id) throws NotFoundException { return true; } - @Override - public List getAll() { - ArrayList allNodes = new ArrayList(); - for (Type type : Type.values()) { - allNodes.addAll(getAllForType(type)); - } - return allNodes; - } - @Override public List getAllForType(Type type) { try { - return zk.getChildren(getPath(type), false); + return zk.getChildren().forPath(getPath(type)); } catch (Exception e) { return new ArrayList(); } } - @Override - public List getAllForKey(String key, String value) { - ArrayList allNodes = new ArrayList(); - try { - for (Type type : Type.values()) { - allNodes.addAll(getAllForTypeAndKey(type, key, value)); - } - } catch (Exception e) { - LOG.info("Couldn't find children."); - } - return allNodes; - } - - @Override - public List getAllForTypeAndKey(Type type, String key, String value) { - ArrayList allNodes = new ArrayList(); - try { - for (String id : zk.getChildren(getPath(type), false)) { - for (String field : zk.getChildren(id, false)) { - if (field.endsWith("/" + key)) { - byte[] b = zk.getData(field, false, null); - if (new String(b, ENCODING).equals(value)) { - allNodes.add(id); - } - } - } - } - } catch (Exception e) { - // Log and go to the next type -- this one might not exist - LOG.info("Couldn't find children of " + getPath(type)); - } - return allNodes; - } - @Override public void openStorage(Configuration config) throws IOException { storage_root = config.get(STORAGE_ROOT); diff --git a/pom.xml b/pom.xml index 8bef0ee3f531..8a63eb1e124c 100644 --- a/pom.xml +++ b/pom.xml @@ -161,6 +161,7 @@ 3.4.5 1.1 2.4.0 + 2.5.0 @@ -472,7 +473,13 @@ - + + org.apache.curator + curator-framework + ${curator.version} + + + org.codehaus.groovy groovy-all ${groovy.version} From 142dae6e1ddc2faf561ad8f5d8cc358cde4dd01e Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Mon, 20 Oct 2014 21:39:55 +0000 Subject: [PATCH 133/339] HIVE-8497: StatsNoJobTask doesn't close RecordReader, FSDataInputStream of which keeps open to prevent stale data clean (Xiaobing Zhou via Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633236 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hadoop/hive/ql/exec/StatsNoJobTask.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/StatsNoJobTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/StatsNoJobTask.java index 07efb8fb992f..f0899646b2f3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/StatsNoJobTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/StatsNoJobTask.java @@ -153,7 +153,9 @@ public void run() { partn.getInputFormatClass(), jc); InputSplit dummySplit = new FileSplit(file.getPath(), 0, 0, new String[] { partn.getLocation() }); - Object recordReader = inputFormat.getRecordReader(dummySplit, jc, Reporter.NULL); + org.apache.hadoop.mapred.RecordReader recordReader = + (org.apache.hadoop.mapred.RecordReader) + inputFormat.getRecordReader(dummySplit, jc, Reporter.NULL); StatsProvidingRecordReader statsRR; if (recordReader instanceof StatsProvidingRecordReader) { statsRR = (StatsProvidingRecordReader) recordReader; @@ -163,6 +165,7 @@ public void run() { numFiles += 1; statsAvailable = true; } + recordReader.close(); } } @@ -254,6 +257,7 @@ private int aggregateStats(ExecutorService threadPool) { numFiles += 1; statsAvailable = true; } + recordReader.close(); } } From 77f9949a94db3906f9fdb50be28164cc74d32c9c Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Mon, 20 Oct 2014 21:44:55 +0000 Subject: [PATCH 134/339] HIVE-8478: Vectorized Reduce-Side Group By doesn't handle Decimal type correctly (Matt McCline via Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633237 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 1 + .../ql/exec/vector/VectorGroupKeyHelper.java | 5 +- .../ql/optimizer/physical/Vectorizer.java | 20 +- .../vector_reduce_groupby_decimal.q | 35 +++ .../tez/vector_reduce_groupby_decimal.q.out | 209 +++++++++++++++++ .../vector_reduce_groupby_decimal.q.out | 211 ++++++++++++++++++ 6 files changed, 471 insertions(+), 10 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/vector_reduce_groupby_decimal.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_reduce_groupby_decimal.q.out create mode 100644 ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index e342d155fc8d..9b5845b706fa 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -171,6 +171,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vector_non_string_partition.q,\ vector_orderby_5.q,\ vector_partitioned_date_time.q,\ + vector_reduce_groupby_decimal.q,\ vector_string_concat.q,\ vector_varchar_4.q,\ vector_varchar_simple.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java index 3c4f6cf1e9c9..96c449830ed7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java @@ -112,7 +112,10 @@ public void copyGroupKey(VectorizedRowBatch inputBatch, VectorizedRowBatch outpu DecimalColumnVector inputColumnVector = (DecimalColumnVector) inputBatch.cols[keyIndex]; DecimalColumnVector outputColumnVector = (DecimalColumnVector) outputBatch.cols[keyIndex]; if (inputColumnVector.noNulls || !inputColumnVector.isNull[0]) { - outputColumnVector.vector[outputBatch.size] = inputColumnVector.vector[0]; + + // Since we store references to Decimal128 instances, we must use the update method instead + // of plain assignment. + outputColumnVector.vector[outputBatch.size].update(inputColumnVector.vector[0]); } else { outputColumnVector.noNulls = false; outputColumnVector.isNull[outputBatch.size] = true; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java index 648cdb1f9cc3..786d6b705688 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java @@ -907,7 +907,12 @@ boolean validateReduceWorkOperator(Operator op) { } break; case GROUPBY: - ret = validateGroupByOperator((GroupByOperator) op, true, true); + if (HiveConf.getBoolVar(physicalContext.getConf(), + HiveConf.ConfVars.HIVE_VECTORIZATION_REDUCE_GROUPBY_ENABLED)) { + ret = validateGroupByOperator((GroupByOperator) op, true, true); + } else { + ret = false; + } break; case FILTER: ret = validateFilterOperator((FilterOperator) op); @@ -1015,12 +1020,10 @@ private boolean validateGroupByOperator(GroupByOperator op, boolean isReduce, bo if (!ret) { return false; } - boolean isVectorOutput = isTez && aggregatorsOutputIsPrimitive(desc.getAggregators(), isReduce); - vectorDesc.setVectorOutput(isVectorOutput); if (isReduce) { if (desc.isDistinct()) { LOG.info("Distinct not supported in reduce vector mode"); - return false; + return false; } // Sort-based GroupBy? if (desc.getMode() != GroupByDesc.Mode.COMPLETE && @@ -1033,11 +1036,11 @@ private boolean validateGroupByOperator(GroupByOperator op, boolean isReduce, bo LOG.info("Reduce GROUP BY mode is " + desc.getMode().name()); if (desc.getGroupKeyNotReductionKey()) { LOG.info("Reduce vector mode not supported when group key is not reduction key"); - return false; + return false; } - if (!isVectorOutput) { + if (!aggregatorsOutputIsPrimitive(desc.getAggregators(), isReduce)) { LOG.info("Reduce vector mode only supported when aggregate outputs are primitive types"); - return false; + return false; } if (desc.getKeys().size() > 0) { if (op.getParentOperators().size() > 0) { @@ -1049,9 +1052,8 @@ private boolean validateGroupByOperator(GroupByOperator op, boolean isReduce, bo } else { LOG.info("Reduce-side GROUP BY will do global aggregation"); } + vectorDesc.setVectorOutput(true); vectorDesc.setIsReduce(true); - } else { - LOG.info("Downstream operators of map-side GROUP BY will be vectorized: " + isVectorOutput); } return true; } diff --git a/ql/src/test/queries/clientpositive/vector_reduce_groupby_decimal.q b/ql/src/test/queries/clientpositive/vector_reduce_groupby_decimal.q new file mode 100644 index 000000000000..a282518c329e --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_reduce_groupby_decimal.q @@ -0,0 +1,35 @@ +CREATE TABLE decimal_test STORED AS ORC AS SELECT cint, cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2 FROM alltypesorc +WHERE cint is not null and cdouble is not null; + +SET hive.vectorized.execution.enabled=true; + +EXPLAIN +SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test +WHERE cdecimal1 is not null and cdecimal2 is not null +GROUP BY cint, cdouble, cdecimal1, cdecimal2 +ORDER BY cint, cdouble, cdecimal1, cdecimal2 +LIMIT 50; + +SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test +WHERE cdecimal1 is not null and cdecimal2 is not null +GROUP BY cint, cdouble, cdecimal1, cdecimal2 +ORDER BY cint, cdouble, cdecimal1, cdecimal2 +LIMIT 50; + +SET hive.vectorized.execution.enabled=false; + +SELECT sum(hash(*)) + FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test + WHERE cdecimal1 is not null and cdecimal2 is not null + GROUP BY cint, cdouble, cdecimal1, cdecimal2 + ORDER BY cint, cdouble, cdecimal1, cdecimal2 + LIMIT 50) as q; + +SET hive.vectorized.execution.enabled=true; + +SELECT sum(hash(*)) + FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test + WHERE cdecimal1 is not null and cdecimal2 is not null + GROUP BY cint, cdouble, cdecimal1, cdecimal2 + ORDER BY cint, cdouble, cdecimal1, cdecimal2 + LIMIT 50) as q; diff --git a/ql/src/test/results/clientpositive/tez/vector_reduce_groupby_decimal.q.out b/ql/src/test/results/clientpositive/tez/vector_reduce_groupby_decimal.q.out new file mode 100644 index 000000000000..14acfc5cd76f --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_reduce_groupby_decimal.q.out @@ -0,0 +1,209 @@ +PREHOOK: query: CREATE TABLE decimal_test STORED AS ORC AS SELECT cint, cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2 FROM alltypesorc +WHERE cint is not null and cdouble is not null +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_test +POSTHOOK: query: CREATE TABLE decimal_test STORED AS ORC AS SELECT cint, cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2 FROM alltypesorc +WHERE cint is not null and cdouble is not null +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_test +PREHOOK: query: EXPLAIN +SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test +WHERE cdecimal1 is not null and cdecimal2 is not null +GROUP BY cint, cdouble, cdecimal1, cdecimal2 +ORDER BY cint, cdouble, cdecimal1, cdecimal2 +LIMIT 50 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test +WHERE cdecimal1 is not null and cdecimal2 is not null +GROUP BY cint, cdouble, cdecimal1, cdecimal2 +ORDER BY cint, cdouble, cdecimal1, cdecimal2 +LIMIT 50 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_test + Statistics: Num rows: 6102 Data size: 1440072 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cdecimal1 is not null and cdecimal2 is not null) (type: boolean) + Statistics: Num rows: 1526 Data size: 360136 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int), cdouble (type: double), cdecimal1 (type: decimal(20,10)), cdecimal2 (type: decimal(23,14)) + outputColumnNames: cint, cdouble, cdecimal1, cdecimal2 + Statistics: Num rows: 1526 Data size: 360136 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: min(cdecimal1) + keys: cint (type: int), cdouble (type: double), cdecimal1 (type: decimal(20,10)), cdecimal2 (type: decimal(23,14)) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 1526 Data size: 360136 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: double), _col2 (type: decimal(20,10)), _col3 (type: decimal(23,14)) + sort order: ++++ + Map-reduce partition columns: _col0 (type: int), _col1 (type: double), _col2 (type: decimal(20,10)), _col3 (type: decimal(23,14)) + Statistics: Num rows: 1526 Data size: 360136 Basic stats: COMPLETE Column stats: NONE + value expressions: _col4 (type: decimal(20,10)) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: min(VALUE._col0) + keys: KEY._col0 (type: int), KEY._col1 (type: double), KEY._col2 (type: decimal(20,10)), KEY._col3 (type: decimal(23,14)) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 763 Data size: 180068 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: double), _col2 (type: decimal(20,10)), _col3 (type: decimal(23,14)), _col4 (type: decimal(20,10)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 763 Data size: 180068 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: double), _col2 (type: decimal(20,10)), _col3 (type: decimal(23,14)) + sort order: ++++ + Statistics: Num rows: 763 Data size: 180068 Basic stats: COMPLETE Column stats: NONE + value expressions: _col4 (type: decimal(20,10)) + Execution mode: vectorized + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: double), KEY.reducesinkkey2 (type: decimal(20,10)), KEY.reducesinkkey3 (type: decimal(23,14)), VALUE._col0 (type: decimal(20,10)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 763 Data size: 180068 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 50 + Statistics: Num rows: 50 Data size: 11800 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 50 Data size: 11800 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 50 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test +WHERE cdecimal1 is not null and cdecimal2 is not null +GROUP BY cint, cdouble, cdecimal1, cdecimal2 +ORDER BY cint, cdouble, cdecimal1, cdecimal2 +LIMIT 50 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test +WHERE cdecimal1 is not null and cdecimal2 is not null +GROUP BY cint, cdouble, cdecimal1, cdecimal2 +ORDER BY cint, cdouble, cdecimal1, cdecimal2 +LIMIT 50 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_test +#### A masked pattern was here #### +-1073051226 -7382.0 -4409.2486486486 -5280.969230769231 -4409.2486486486 +-1072081801 8373.0 5001.1702702703 5989.915384615385 5001.1702702703 +-1072076362 -5470.0 -3267.2162162162 -3913.1538461538466 -3267.2162162162 +-1070883071 -741.0 -442.5972972973 -530.1 -442.5972972973 +-1070551679 -947.0 -565.6405405405 -677.4692307692308 -565.6405405405 +-1069512165 11417.0 6819.3432432432 8167.546153846154 6819.3432432432 +-1069109166 8390.0 5011.3243243243 6002.076923076923 5011.3243243243 +-1068623584 -14005.0 -8365.1486486486 -10018.961538461539 -8365.1486486486 +-1067386090 -3977.0 -2375.4513513514 -2845.084615384616 -2375.4513513514 +-1066922682 -9987.0 -5965.2081081081 -7144.546153846154 -5965.2081081081 +-1066226047 -9439.0 -5637.8891891892 -6752.515384615385 -5637.8891891892 +-1065117869 2538.0 1515.9405405405 1815.646153846154 1515.9405405405 +-1064949302 6454.0 3854.9567567568 4617.092307692308 3854.9567567568 +-1063498122 -11480.0 -6856.9729729730 -8212.615384615387 -6856.9729729730 +-1062973443 10541.0 6296.1108108108 7540.869230769231 6296.1108108108 +-1061614989 -4234.0 -2528.9567567568 -3028.938461538462 -2528.9567567568 +-1061057428 -1085.0 -648.0675675676 -776.1923076923077 -648.0675675676 +-1059941909 8782.0 5245.4648648649 6282.507692307693 5245.4648648649 +-1059338191 7322.0 4373.4108108108 5238.046153846154 4373.4108108108 +-1059047258 12452.0 7437.5459459459 8907.969230769231 7437.5459459459 +-1056684111 13991.0 8356.7864864865 10008.946153846155 8356.7864864865 +-1055945837 13690.0 8177.0 9793.615384615387 8177.0 +-1055669248 2570.0 1535.0540540541 1838.538461538462 1535.0540540541 +-1055316250 -14990.0 -8953.4864864865 -10723.615384615385 -8953.4864864865 +-1053385587 14504.0 8663.2 10375.938461538462 8663.2 +-1053238077 -3704.0 -2212.3891891892 -2649.784615384616 -2212.3891891892 +-1052745800 -12404.0 -7408.8756756757 -8873.630769230771 -7408.8756756757 +-1052322972 -7433.0 -4439.7108108108 -5317.453846153847 -4439.7108108108 +-1050684541 -8261.0 -4934.2729729730 -5909.792307692308 -4934.2729729730 +-1050657303 -6999.0 -4180.4837837838 -5006.976923076923 -4180.4837837838 +-1050165799 8634.0 5157.0648648649 6176.63076923077 5157.0648648649 +-1048934049 -524.0 -312.9837837838 -374.86153846153854 -312.9837837838 +-1046399794 4130.0 2466.8378378378 2954.5384615384614 2466.8378378378 +-1045867222 -8034.0 -4798.6864864865 -5747.400000000001 -4798.6864864865 +-1045196363 -5039.0 -3009.7810810811 -3604.823076923077 -3009.7810810811 +-1045181724 -5706.0 -3408.1783783784 -4081.9846153846156 -3408.1783783784 +-1045087657 -5865.0 -3503.1486486486 -4195.7307692307695 -3503.1486486486 +-1044207190 5381.0 3214.0567567568 3849.4846153846156 3214.0567567568 +-1044093617 -3422.0 -2043.9513513514 -2448.046153846154 -2043.9513513514 +-1043573508 16216.0 9685.7729729730 11600.676923076924 9685.7729729730 +-1043132597 12302.0 7347.9513513514 8800.66153846154 7347.9513513514 +-1043082182 9180.0 5483.1891891892 6567.2307692307695 5483.1891891892 +-1042805968 5133.0 3065.9270270270 3672.0692307692307 3065.9270270270 +-1042712895 9296.0 5552.4756756757 6650.215384615385 5552.4756756757 +-1042396242 9583.0 5723.9000000000 6855.53076923077 5723.9000000000 +-1041734429 -836.0 -499.3405405405 -598.0615384615385 -499.3405405405 +-1041391389 -12970.0 -7746.9459459459 -9278.538461538463 -7746.9459459459 +-1041252354 756.0 451.5567567568 540.8307692307692 451.5567567568 +-1039776293 13704.0 8185.3621621622 9803.630769230771 8185.3621621622 +-1039762548 -3802.0 -2270.9243243243 -2719.8923076923083 -2270.9243243243 +PREHOOK: query: SELECT sum(hash(*)) + FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test + WHERE cdecimal1 is not null and cdecimal2 is not null + GROUP BY cint, cdouble, cdecimal1, cdecimal2 + ORDER BY cint, cdouble, cdecimal1, cdecimal2 + LIMIT 50) as q +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(*)) + FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test + WHERE cdecimal1 is not null and cdecimal2 is not null + GROUP BY cint, cdouble, cdecimal1, cdecimal2 + ORDER BY cint, cdouble, cdecimal1, cdecimal2 + LIMIT 50) as q +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_test +#### A masked pattern was here #### +12703057972 +PREHOOK: query: SELECT sum(hash(*)) + FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test + WHERE cdecimal1 is not null and cdecimal2 is not null + GROUP BY cint, cdouble, cdecimal1, cdecimal2 + ORDER BY cint, cdouble, cdecimal1, cdecimal2 + LIMIT 50) as q +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(*)) + FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test + WHERE cdecimal1 is not null and cdecimal2 is not null + GROUP BY cint, cdouble, cdecimal1, cdecimal2 + ORDER BY cint, cdouble, cdecimal1, cdecimal2 + LIMIT 50) as q +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_test +#### A masked pattern was here #### +12703057972 diff --git a/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out b/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out new file mode 100644 index 000000000000..2343508f76dd --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out @@ -0,0 +1,211 @@ +PREHOOK: query: CREATE TABLE decimal_test STORED AS ORC AS SELECT cint, cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2 FROM alltypesorc +WHERE cint is not null and cdouble is not null +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_test +POSTHOOK: query: CREATE TABLE decimal_test STORED AS ORC AS SELECT cint, cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2 FROM alltypesorc +WHERE cint is not null and cdouble is not null +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_test +PREHOOK: query: EXPLAIN +SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test +WHERE cdecimal1 is not null and cdecimal2 is not null +GROUP BY cint, cdouble, cdecimal1, cdecimal2 +ORDER BY cint, cdouble, cdecimal1, cdecimal2 +LIMIT 50 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test +WHERE cdecimal1 is not null and cdecimal2 is not null +GROUP BY cint, cdouble, cdecimal1, cdecimal2 +ORDER BY cint, cdouble, cdecimal1, cdecimal2 +LIMIT 50 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_test + Statistics: Num rows: 6102 Data size: 1440072 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cdecimal1 is not null and cdecimal2 is not null) (type: boolean) + Statistics: Num rows: 1526 Data size: 360136 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int), cdouble (type: double), cdecimal1 (type: decimal(20,10)), cdecimal2 (type: decimal(23,14)) + outputColumnNames: cint, cdouble, cdecimal1, cdecimal2 + Statistics: Num rows: 1526 Data size: 360136 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: min(cdecimal1) + keys: cint (type: int), cdouble (type: double), cdecimal1 (type: decimal(20,10)), cdecimal2 (type: decimal(23,14)) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 1526 Data size: 360136 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: double), _col2 (type: decimal(20,10)), _col3 (type: decimal(23,14)) + sort order: ++++ + Map-reduce partition columns: _col0 (type: int), _col1 (type: double), _col2 (type: decimal(20,10)), _col3 (type: decimal(23,14)) + Statistics: Num rows: 1526 Data size: 360136 Basic stats: COMPLETE Column stats: NONE + value expressions: _col4 (type: decimal(20,10)) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: min(VALUE._col0) + keys: KEY._col0 (type: int), KEY._col1 (type: double), KEY._col2 (type: decimal(20,10)), KEY._col3 (type: decimal(23,14)) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 763 Data size: 180068 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: double), _col2 (type: decimal(20,10)), _col3 (type: decimal(23,14)), _col4 (type: decimal(20,10)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 763 Data size: 180068 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col0 (type: int), _col1 (type: double), _col2 (type: decimal(20,10)), _col3 (type: decimal(23,14)) + sort order: ++++ + Statistics: Num rows: 763 Data size: 180068 Basic stats: COMPLETE Column stats: NONE + value expressions: _col4 (type: decimal(20,10)) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: double), KEY.reducesinkkey2 (type: decimal(20,10)), KEY.reducesinkkey3 (type: decimal(23,14)), VALUE._col0 (type: decimal(20,10)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 763 Data size: 180068 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 50 + Statistics: Num rows: 50 Data size: 11800 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 50 Data size: 11800 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 50 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test +WHERE cdecimal1 is not null and cdecimal2 is not null +GROUP BY cint, cdouble, cdecimal1, cdecimal2 +ORDER BY cint, cdouble, cdecimal1, cdecimal2 +LIMIT 50 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test +WHERE cdecimal1 is not null and cdecimal2 is not null +GROUP BY cint, cdouble, cdecimal1, cdecimal2 +ORDER BY cint, cdouble, cdecimal1, cdecimal2 +LIMIT 50 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_test +#### A masked pattern was here #### +-1073051226 -7382.0 -4409.2486486486 -5280.969230769231 -4409.2486486486 +-1072081801 8373.0 5001.1702702703 5989.915384615385 5001.1702702703 +-1072076362 -5470.0 -3267.2162162162 -3913.1538461538466 -3267.2162162162 +-1070883071 -741.0 -442.5972972973 -530.1 -442.5972972973 +-1070551679 -947.0 -565.6405405405 -677.4692307692308 -565.6405405405 +-1069512165 11417.0 6819.3432432432 8167.546153846154 6819.3432432432 +-1069109166 8390.0 5011.3243243243 6002.076923076923 5011.3243243243 +-1068623584 -14005.0 -8365.1486486486 -10018.961538461539 -8365.1486486486 +-1067386090 -3977.0 -2375.4513513514 -2845.084615384616 -2375.4513513514 +-1066922682 -9987.0 -5965.2081081081 -7144.546153846154 -5965.2081081081 +-1066226047 -9439.0 -5637.8891891892 -6752.515384615385 -5637.8891891892 +-1065117869 2538.0 1515.9405405405 1815.646153846154 1515.9405405405 +-1064949302 6454.0 3854.9567567568 4617.092307692308 3854.9567567568 +-1063498122 -11480.0 -6856.9729729730 -8212.615384615387 -6856.9729729730 +-1062973443 10541.0 6296.1108108108 7540.869230769231 6296.1108108108 +-1061614989 -4234.0 -2528.9567567568 -3028.938461538462 -2528.9567567568 +-1061057428 -1085.0 -648.0675675676 -776.1923076923077 -648.0675675676 +-1059941909 8782.0 5245.4648648649 6282.507692307693 5245.4648648649 +-1059338191 7322.0 4373.4108108108 5238.046153846154 4373.4108108108 +-1059047258 12452.0 7437.5459459459 8907.969230769231 7437.5459459459 +-1056684111 13991.0 8356.7864864865 10008.946153846155 8356.7864864865 +-1055945837 13690.0 8177.0 9793.615384615387 8177.0 +-1055669248 2570.0 1535.0540540541 1838.538461538462 1535.0540540541 +-1055316250 -14990.0 -8953.4864864865 -10723.615384615385 -8953.4864864865 +-1053385587 14504.0 8663.2 10375.938461538462 8663.2 +-1053238077 -3704.0 -2212.3891891892 -2649.784615384616 -2212.3891891892 +-1052745800 -12404.0 -7408.8756756757 -8873.630769230771 -7408.8756756757 +-1052322972 -7433.0 -4439.7108108108 -5317.453846153847 -4439.7108108108 +-1050684541 -8261.0 -4934.2729729730 -5909.792307692308 -4934.2729729730 +-1050657303 -6999.0 -4180.4837837838 -5006.976923076923 -4180.4837837838 +-1050165799 8634.0 5157.0648648649 6176.63076923077 5157.0648648649 +-1048934049 -524.0 -312.9837837838 -374.86153846153854 -312.9837837838 +-1046399794 4130.0 2466.8378378378 2954.5384615384614 2466.8378378378 +-1045867222 -8034.0 -4798.6864864865 -5747.400000000001 -4798.6864864865 +-1045196363 -5039.0 -3009.7810810811 -3604.823076923077 -3009.7810810811 +-1045181724 -5706.0 -3408.1783783784 -4081.9846153846156 -3408.1783783784 +-1045087657 -5865.0 -3503.1486486486 -4195.7307692307695 -3503.1486486486 +-1044207190 5381.0 3214.0567567568 3849.4846153846156 3214.0567567568 +-1044093617 -3422.0 -2043.9513513514 -2448.046153846154 -2043.9513513514 +-1043573508 16216.0 9685.7729729730 11600.676923076924 9685.7729729730 +-1043132597 12302.0 7347.9513513514 8800.66153846154 7347.9513513514 +-1043082182 9180.0 5483.1891891892 6567.2307692307695 5483.1891891892 +-1042805968 5133.0 3065.9270270270 3672.0692307692307 3065.9270270270 +-1042712895 9296.0 5552.4756756757 6650.215384615385 5552.4756756757 +-1042396242 9583.0 5723.9000000000 6855.53076923077 5723.9000000000 +-1041734429 -836.0 -499.3405405405 -598.0615384615385 -499.3405405405 +-1041391389 -12970.0 -7746.9459459459 -9278.538461538463 -7746.9459459459 +-1041252354 756.0 451.5567567568 540.8307692307692 451.5567567568 +-1039776293 13704.0 8185.3621621622 9803.630769230771 8185.3621621622 +-1039762548 -3802.0 -2270.9243243243 -2719.8923076923083 -2270.9243243243 +PREHOOK: query: SELECT sum(hash(*)) + FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test + WHERE cdecimal1 is not null and cdecimal2 is not null + GROUP BY cint, cdouble, cdecimal1, cdecimal2 + ORDER BY cint, cdouble, cdecimal1, cdecimal2 + LIMIT 50) as q +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(*)) + FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test + WHERE cdecimal1 is not null and cdecimal2 is not null + GROUP BY cint, cdouble, cdecimal1, cdecimal2 + ORDER BY cint, cdouble, cdecimal1, cdecimal2 + LIMIT 50) as q +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_test +#### A masked pattern was here #### +12703057972 +PREHOOK: query: SELECT sum(hash(*)) + FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test + WHERE cdecimal1 is not null and cdecimal2 is not null + GROUP BY cint, cdouble, cdecimal1, cdecimal2 + ORDER BY cint, cdouble, cdecimal1, cdecimal2 + LIMIT 50) as q +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(*)) + FROM (SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test + WHERE cdecimal1 is not null and cdecimal2 is not null + GROUP BY cint, cdouble, cdecimal1, cdecimal2 + ORDER BY cint, cdouble, cdecimal1, cdecimal2 + LIMIT 50) as q +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_test +#### A masked pattern was here #### +12703057972 From aea7ff44fa89c8960ff359b597ab28b13f7e10e1 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 20 Oct 2014 22:41:15 +0000 Subject: [PATCH 135/339] HIVE-8404 : ColumnPruner doesnt prune columns from limit operator (Ashutosh Chauhan via Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633246 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/optimizer/ColumnPruner.java | 5 +++++ .../ql/optimizer/ColumnPrunerProcFactory.java | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java index 8e174758939d..046a52f85efc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java @@ -29,6 +29,7 @@ import org.apache.hadoop.hive.ql.exec.GroupByOperator; import org.apache.hadoop.hive.ql.exec.LateralViewForwardOperator; import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator; +import org.apache.hadoop.hive.ql.exec.LimitOperator; import org.apache.hadoop.hive.ql.exec.MapJoinOperator; import org.apache.hadoop.hive.ql.exec.Operator; import org.apache.hadoop.hive.ql.exec.PTFOperator; @@ -76,6 +77,7 @@ public ColumnPruner() { * @param pactx * the current parse context */ + @Override public ParseContext transform(ParseContext pactx) throws SemanticException { pGraphContext = pactx; opToParseCtxMap = pGraphContext.getOpParseCtx(); @@ -120,6 +122,9 @@ public ParseContext transform(ParseContext pactx) throws SemanticException { opRules.put(new RuleRegExp("R11", ScriptOperator.getOperatorName() + "%"), ColumnPrunerProcFactory.getScriptProc()); + opRules.put(new RuleRegExp("R12", + LimitOperator.getOperatorName() + "%"), + ColumnPrunerProcFactory.getLimitProc()); // The dispatcher fires the processor corresponding to the closest matching // rule and passes the context along Dispatcher disp = new DefaultRuleDispatcher(ColumnPrunerProcFactory diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java index 0a9c6d240d70..ba28bc71ffe2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java @@ -38,6 +38,7 @@ import org.apache.hadoop.hive.ql.exec.JoinOperator; import org.apache.hadoop.hive.ql.exec.LateralViewForwardOperator; import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator; +import org.apache.hadoop.hive.ql.exec.LimitOperator; import org.apache.hadoop.hive.ql.exec.MapJoinOperator; import org.apache.hadoop.hive.ql.exec.Operator; import org.apache.hadoop.hive.ql.exec.OperatorFactory; @@ -215,6 +216,24 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, } } + public static class ColumnPrunerLimitProc extends ColumnPrunerDefaultProc { + + @Override + public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, + Object... nodeOutputs) throws SemanticException { + super.process(nd, stack, ctx, nodeOutputs); + List cols = ((ColumnPrunerProcCtx)ctx).getPrunedColLists().get(nd); + if (null != cols) { + pruneOperator(ctx, (LimitOperator) nd, cols); + } + return null; + } + } + + public static ColumnPrunerLimitProc getLimitProc() { + return new ColumnPrunerLimitProc(); + } + public static ColumnPrunerScriptProc getScriptProc() { return new ColumnPrunerScriptProc(); } From bd1c50084dbb1a396278d771313cb322cd232ce2 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 20 Oct 2014 22:46:02 +0000 Subject: [PATCH 136/339] HIVE-8492 : Enhance Constant Folding to propagate constants for simple expressions (Ashutosh Chauhan via Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633248 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/FunctionRegistry.java | 22 +++--- .../ConstantPropagateProcFactory.java | 31 ++++++-- .../test/queries/clientpositive/constprog2.q | 6 ++ .../results/clientpositive/constprog2.q.out | 75 +++++++++++++++++++ 4 files changed, 116 insertions(+), 18 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java index 68cf429cdd3a..03f427b91edb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java @@ -500,7 +500,7 @@ public static void registerGenericUDF(boolean isNative, String functionName, Class genericUDFClass) { if (GenericUDF.class.isAssignableFrom(genericUDFClass)) { FunctionInfo fI = new FunctionInfo(isNative, functionName, - (GenericUDF) ReflectionUtils.newInstance(genericUDFClass, null)); + ReflectionUtils.newInstance(genericUDFClass, null)); mFunctions.put(functionName.toLowerCase(), fI); registerNativeStatus(fI); } else { @@ -523,7 +523,7 @@ public static void registerGenericUDTF(boolean isNative, String functionName, Class genericUDTFClass) { if (GenericUDTF.class.isAssignableFrom(genericUDTFClass)) { FunctionInfo fI = new FunctionInfo(isNative, functionName, - (GenericUDTF) ReflectionUtils.newInstance(genericUDTFClass, null)); + ReflectionUtils.newInstance(genericUDTFClass, null)); mFunctions.put(functionName.toLowerCase(), fI); registerNativeStatus(fI); } else { @@ -534,7 +534,7 @@ public static void registerGenericUDTF(boolean isNative, String functionName, private static FunctionInfo getFunctionInfoFromMetastore(String functionName) { FunctionInfo ret = null; - + try { String dbName; String fName; @@ -577,7 +577,7 @@ private static FunctionInfo getFunctionInfoFromMetastore(String functionName) { // Lookup of UDf class failed LOG.error("Unable to load UDF class: " + e); } - + return ret; } @@ -599,7 +599,7 @@ private static T getQualifiedFunctionInfo( if (functionInfo != null) { loadFunctionResourcesIfNecessary(functionName, functionInfo); } - + return functionInfo; } @@ -990,7 +990,7 @@ public static PrimitiveCategory getCommonCategory(TypeInfo a, TypeInfo b) { // If either is not a numeric type, return null. return null; } - + return (ai > bi) ? pcA : pcB; } @@ -1195,7 +1195,7 @@ public static void registerUDAF(boolean isNative, String functionName, Class udafClass) { FunctionInfo fi = new FunctionInfo(isNative, functionName.toLowerCase(), new GenericUDAFBridge( - (UDAF) ReflectionUtils.newInstance(udafClass, null))); + ReflectionUtils.newInstance(udafClass, null))); mFunctions.put(functionName.toLowerCase(), fi); // All aggregate functions should also be usable as window functions @@ -1543,7 +1543,7 @@ public static GenericUDF cloneGenericUDF(GenericUDF genericUDF) { clonedUDF = new GenericUDFMacro(bridge.getMacroName(), bridge.getBody(), bridge.getColNames(), bridge.getColTypes()); } else { - clonedUDF = (GenericUDF) ReflectionUtils + clonedUDF = ReflectionUtils .newInstance(genericUDF.getClass(), null); } @@ -1582,7 +1582,7 @@ public static GenericUDTF cloneGenericUDTF(GenericUDTF genericUDTF) { if (null == genericUDTF) { return null; } - return (GenericUDTF) ReflectionUtils.newInstance(genericUDTF.getClass(), + return ReflectionUtils.newInstance(genericUDTF.getClass(), null); } @@ -1707,7 +1707,7 @@ public static boolean isOpPositive(ExprNodeDesc desc) { /** * Returns whether the exprNodeDesc is node of "cast". */ - private static boolean isOpCast(ExprNodeDesc desc) { + public static boolean isOpCast(ExprNodeDesc desc) { if (!(desc instanceof ExprNodeGenericFuncDesc)) { return false; } @@ -1940,7 +1940,7 @@ public static TableFunctionResolver getWindowingTableFunction() { return getTableFunctionResolver(WINDOWING_TABLE_FUNCTION); } - + public static boolean isNoopFunction(String fnName) { fnName = fnName.toLowerCase(); return fnName.equals(NOOP_MAP_TABLE_FUNCTION) || diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index 6e10f950e49f..e4d2df5ab64d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -32,6 +32,7 @@ import org.apache.hadoop.hive.ql.exec.ColumnInfo; import org.apache.hadoop.hive.ql.exec.FileSinkOperator; import org.apache.hadoop.hive.ql.exec.FilterOperator; +import org.apache.hadoop.hive.ql.exec.FunctionRegistry; import org.apache.hadoop.hive.ql.exec.GroupByOperator; import org.apache.hadoop.hive.ql.exec.JoinOperator; import org.apache.hadoop.hive.ql.exec.Operator; @@ -57,7 +58,6 @@ import org.apache.hadoop.hive.ql.plan.GroupByDesc; import org.apache.hadoop.hive.ql.plan.JoinCondDesc; import org.apache.hadoop.hive.ql.plan.JoinDesc; -import org.apache.hadoop.hive.ql.plan.PlanUtils; import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc; import org.apache.hadoop.hive.ql.plan.TableScanDesc; import org.apache.hadoop.hive.ql.udf.UDFType; @@ -316,15 +316,22 @@ private static void propagate(GenericUDF udf, List newExprs, RowRe if (udf instanceof GenericUDFOPEqual) { ExprNodeDesc lOperand = newExprs.get(0); ExprNodeDesc rOperand = newExprs.get(1); - ExprNodeColumnDesc c; ExprNodeConstantDesc v; - if (lOperand instanceof ExprNodeColumnDesc && rOperand instanceof ExprNodeConstantDesc) { - c = (ExprNodeColumnDesc) lOperand; - v = (ExprNodeConstantDesc) rOperand; - } else if (rOperand instanceof ExprNodeColumnDesc && lOperand instanceof ExprNodeConstantDesc) { - c = (ExprNodeColumnDesc) rOperand; + if (lOperand instanceof ExprNodeConstantDesc) { v = (ExprNodeConstantDesc) lOperand; + } else if (rOperand instanceof ExprNodeConstantDesc) { + v = (ExprNodeConstantDesc) rOperand; } else { + // we need a constant on one side. + return; + } + // If both sides are constants, there is nothing to propagate + ExprNodeColumnDesc c = getColumnExpr(lOperand); + if (null == c) { + c = getColumnExpr(rOperand); + } + if (null == c) { + // we need a column expression on other side. return; } ColumnInfo ci = resolveColumn(rr, c); @@ -350,6 +357,16 @@ private static void propagate(GenericUDF udf, List newExprs, RowRe } } + private static ExprNodeColumnDesc getColumnExpr(ExprNodeDesc expr) { + if (expr instanceof ExprNodeColumnDesc) { + return (ExprNodeColumnDesc)expr; + } + if (FunctionRegistry.isOpCast(expr)) { + return (ExprNodeColumnDesc)expr.getChildren().get(0); + } + return null; + } + private static ExprNodeDesc shortcutFunction(GenericUDF udf, List newExprs) { if (udf instanceof GenericUDFOPAnd) { for (int i = 0; i < 2; i++) { diff --git a/ql/src/test/queries/clientpositive/constprog2.q b/ql/src/test/queries/clientpositive/constprog2.q index 72ce5a3449b0..600166856c25 100644 --- a/ql/src/test/queries/clientpositive/constprog2.q +++ b/ql/src/test/queries/clientpositive/constprog2.q @@ -7,4 +7,10 @@ SELECT src1.key, src1.key + 1, src2.value SELECT src1.key, src1.key + 1, src2.value FROM src src1 join src src2 ON src1.key = src2.key AND src1.key = 86; +EXPLAIN +SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND cast(src1.key as double) = 86; + +SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND cast(src1.key as double) = 86; diff --git a/ql/src/test/results/clientpositive/constprog2.q.out b/ql/src/test/results/clientpositive/constprog2.q.out index 148d95b1dba1..50ff890d6091 100644 --- a/ql/src/test/results/clientpositive/constprog2.q.out +++ b/ql/src/test/results/clientpositive/constprog2.q.out @@ -73,3 +73,78 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### 86 87.0 val_86 +PREHOOK: query: EXPLAIN +SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND cast(src1.key as double) = 86 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND cast(src1.key as double) = 86 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((UDFToDouble(key) = 86) and key is not null) (type: boolean) + Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: '86' (type: string) + sort order: + + Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((UDFToDouble(key) = 86) and key is not null) (type: boolean) + Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: '86' (type: string) + sort order: + + Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 {VALUE._col0} + outputColumnNames: _col6 + Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: '86' (type: string), 87.0 (type: double), _col6 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND cast(src1.key as double) = 86 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND cast(src1.key as double) = 86 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +86 87.0 val_86 From 3ae069b64ddf066aef093da89e420e35b72b97e7 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 20 Oct 2014 22:49:20 +0000 Subject: [PATCH 137/339] HIVE-8350 : Constant folding should happen before group-by optimization (Ashutosh Chauhan via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633250 13f79535-47bb-0310-9956-ffa450edef68 --- .../ConstantPropagateProcFactory.java | 16 ++++++ .../hive/ql/optimizer/GroupByOptimizer.java | 19 ++++--- .../hadoop/hive/ql/optimizer/Optimizer.java | 7 +-- ql/src/test/results/compiler/plan/cast1.q.xml | 21 ++++++++ ql/src/test/results/compiler/plan/udf1.q.xml | 51 +++++++++++++++++++ ql/src/test/results/compiler/plan/udf4.q.xml | 48 +++++++++++++++++ ql/src/test/results/compiler/plan/udf6.q.xml | 3 ++ .../test/results/compiler/plan/udf_case.q.xml | 3 ++ .../test/results/compiler/plan/udf_when.q.xml | 3 ++ 9 files changed, 162 insertions(+), 9 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index e4d2df5ab64d..9ca194a2ac97 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -29,6 +29,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.exec.ColumnInfo; import org.apache.hadoop.hive.ql.exec.FileSinkOperator; import org.apache.hadoop.hive.ql.exec.FilterOperator; @@ -710,6 +711,21 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, Object.. if (colList != null) { for (int i = 0; i < colList.size(); i++) { ExprNodeDesc newCol = foldExpr(colList.get(i), constants, cppCtx, op, 0, false); + if (!(colList.get(i) instanceof ExprNodeConstantDesc) && newCol instanceof ExprNodeConstantDesc) { + // Lets try to store original column name, if this column got folded + // This is useful for optimizations like GroupByOptimizer + String colName = colList.get(i).getExprString(); + if (HiveConf.getPositionFromInternalName(colName) == -1) { + // if its not an internal name, this is what we want. + ((ExprNodeConstantDesc)newCol).setFoldedFromCol(colName); + } else { + // If it was internal column, lets try to get name from columnExprMap + ExprNodeDesc desc = columnExprMap.get(colName); + if (desc instanceof ExprNodeConstantDesc) { + ((ExprNodeConstantDesc)newCol).setFoldedFromCol(((ExprNodeConstantDesc)desc).getFoldedFromCol()); + } + } + } colList.set(i, newCol); if (columnExprMap != null) { columnExprMap.put(columnNames.get(i), newCol); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java index d06522f4d7df..1d18e0c9d518 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java @@ -332,18 +332,26 @@ protected GroupByOptimizerSortMatch checkSortGroupBy(Stack stack, continue; } - ExprNodeDesc selectColList = selectDesc.getColList().get(pos); - if (selectColList instanceof ExprNodeColumnDesc) { + ExprNodeDesc selectCol = selectDesc.getColList().get(pos); + if (selectCol instanceof ExprNodeColumnDesc) { String newValue = - tableColsMapping.get(((ExprNodeColumnDesc) selectColList).getColumn()); + tableColsMapping.get(((ExprNodeColumnDesc) selectCol).getColumn()); tableColsMapping.put(outputColumnName, newValue); } else { tableColsMapping.remove(outputColumnName); - if ((selectColList instanceof ExprNodeConstantDesc) || - (selectColList instanceof ExprNodeNullDesc)) { + if (selectCol instanceof ExprNodeNullDesc) { newConstantCols.add(outputColumnName); } + if (selectCol instanceof ExprNodeConstantDesc) { + // Lets see if this constant was folded because of optimization. + String origCol = ((ExprNodeConstantDesc) selectCol).getFoldedFromCol(); + if (origCol != null) { + tableColsMapping.put(outputColumnName, origCol); + } else { + newConstantCols.add(outputColumnName); + } + } } } @@ -351,7 +359,6 @@ protected GroupByOptimizerSortMatch checkSortGroupBy(Stack stack, } } - boolean sortGroupBy = true; // compute groupby columns from groupby keys List groupByCols = new ArrayList(); // If the group by expression is anything other than a list of columns, diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java index a3ee70c7c13f..f80d38d51e01 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java @@ -70,13 +70,14 @@ public void initialize(HiveConf hiveConf) { transformations.add(new ListBucketingPruner()); } } + + if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTCONSTANTPROPAGATION)) { + transformations.add(new ConstantPropagate()); + } if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTGROUPBY) || HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_MAP_GROUPBY_SORT)) { transformations.add(new GroupByOptimizer()); } - if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTCONSTANTPROPAGATION)) { - transformations.add(new ConstantPropagate()); - } transformations.add(new ColumnPruner()); if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_OPTIMIZE_SKEWJOIN_COMPILETIME)) { transformations.add(new SkewJoinOptimizer()); diff --git a/ql/src/test/results/compiler/plan/cast1.q.xml b/ql/src/test/results/compiler/plan/cast1.q.xml index e13556704812..1bba17065da0 100644 --- a/ql/src/test/results/compiler/plan/cast1.q.xml +++ b/ql/src/test/results/compiler/plan/cast1.q.xml @@ -379,6 +379,9 @@ _col6 + + UDFToInteger(true) + @@ -390,6 +393,9 @@ _col5 + + UDFToBoolean(1) + @@ -401,6 +407,9 @@ _col4 + + (3 + UDFToInteger(2.0)) + @@ -412,6 +421,9 @@ _col3 + + (3.0 + 2.0) + @@ -423,6 +435,9 @@ _col2 + + (3 + 2.0) + @@ -434,6 +449,9 @@ _col1 + + (3.0 + 2) + @@ -445,6 +463,9 @@ _col0 + + (3 + 2) + diff --git a/ql/src/test/results/compiler/plan/udf1.q.xml b/ql/src/test/results/compiler/plan/udf1.q.xml index 44988ac6ea09..a6c45b2efa86 100644 --- a/ql/src/test/results/compiler/plan/udf1.q.xml +++ b/ql/src/test/results/compiler/plan/udf1.q.xml @@ -535,6 +535,9 @@ _col8 + + ('' rlike '.*') + @@ -546,6 +549,9 @@ _col7 + + ('ab' like 'a') + @@ -557,6 +563,9 @@ _col6 + + ('ab' like '_a%') + @@ -568,6 +577,9 @@ _col5 + + ('ab' like '\%\_') + @@ -579,6 +591,9 @@ _col4 + + ('%_' like '\%\_') + @@ -590,6 +605,9 @@ _col3 + + ('ab' like '%a_') + @@ -601,6 +619,9 @@ _col2 + + ('ab' like '%a%') + @@ -612,6 +633,9 @@ _col1 + + ('b' like '%a%') + @@ -623,6 +647,9 @@ _col9 + + ('a' rlike '[ab]') + @@ -634,6 +661,9 @@ _col13 + + regexp_replace('abc', 'b', 'c') + @@ -645,6 +675,9 @@ _col12 + + ('hadoop' rlike 'o*') + @@ -656,6 +689,9 @@ _col11 + + ('hadoop' rlike '[a-z]*') + @@ -667,6 +703,9 @@ _col10 + + ('' rlike '[ab]') + @@ -678,6 +717,9 @@ _col16 + + regexp_replace('hadoop', '(.)[a-z]*', '$1ive') + @@ -689,6 +731,9 @@ _col15 + + regexp_replace('abbbb', 'bb', 'b') + @@ -700,6 +745,9 @@ _col14 + + regexp_replace('abc', 'z', 'a') + @@ -711,6 +759,9 @@ _col0 + + ('a' like '%a%') + diff --git a/ql/src/test/results/compiler/plan/udf4.q.xml b/ql/src/test/results/compiler/plan/udf4.q.xml index 4ca78bf939d0..1edf38ac64ed 100644 --- a/ql/src/test/results/compiler/plan/udf4.q.xml +++ b/ql/src/test/results/compiler/plan/udf4.q.xml @@ -548,6 +548,9 @@ _col8 + + sqrt(0.0) + @@ -563,6 +566,9 @@ _col6 + + sqrt(1.0) + @@ -574,6 +580,9 @@ _col5 + + floor((- 1.5)) + @@ -585,6 +594,9 @@ _col4 + + floor(1.5) + @@ -596,6 +608,9 @@ _col3 + + floor(1.0) + @@ -607,6 +622,9 @@ _col2 + + round((- 1.5)) + @@ -618,6 +636,9 @@ _col1 + + round(1.5) + @@ -629,6 +650,9 @@ _col9 + + ceil(1.0) + @@ -672,6 +696,9 @@ _col12 + + ceil(1.0) + @@ -683,6 +710,9 @@ _col11 + + ceil((- 1.5)) + @@ -694,6 +724,9 @@ _col10 + + ceil(1.5) + @@ -705,6 +738,9 @@ _col17 + + (1 + (- 2)) + @@ -716,6 +752,9 @@ _col16 + + (1 + 2) + @@ -727,6 +766,9 @@ _col15 + + (- 3) + @@ -749,6 +791,9 @@ _col0 + + round(1.0) + @@ -760,6 +805,9 @@ _col18 + + (~ 1) + diff --git a/ql/src/test/results/compiler/plan/udf6.q.xml b/ql/src/test/results/compiler/plan/udf6.q.xml index 24008dfce7b8..c4c89809ccb0 100644 --- a/ql/src/test/results/compiler/plan/udf6.q.xml +++ b/ql/src/test/results/compiler/plan/udf6.q.xml @@ -338,6 +338,9 @@ _col0 + + concat('a', 'b') + diff --git a/ql/src/test/results/compiler/plan/udf_case.q.xml b/ql/src/test/results/compiler/plan/udf_case.q.xml index dc620cb2ad0a..351846962117 100644 --- a/ql/src/test/results/compiler/plan/udf_case.q.xml +++ b/ql/src/test/results/compiler/plan/udf_case.q.xml @@ -351,6 +351,9 @@ _col0 + + CASE (1) WHEN (1) THEN (2) WHEN (3) THEN (4) ELSE (5) END + diff --git a/ql/src/test/results/compiler/plan/udf_when.q.xml b/ql/src/test/results/compiler/plan/udf_when.q.xml index dc620cb2ad0a..4a1d604314b8 100644 --- a/ql/src/test/results/compiler/plan/udf_when.q.xml +++ b/ql/src/test/results/compiler/plan/udf_when.q.xml @@ -351,6 +351,9 @@ _col0 + + CASE WHEN ((1 = 1)) THEN (2) WHEN ((3 = 5)) THEN (4) ELSE (5) END + From 882bb0842e947a09ab0974acb0ca49177694ece5 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 20 Oct 2014 22:51:39 +0000 Subject: [PATCH 138/339] HIVE-8358 : Constant folding should happen before PCR (Ashutosh Chauhan via Prashanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633252 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/optimizer/Optimizer.java | 9 +- .../clientpositive/annotate_stats_part.q.out | 34 +++--- .../test/results/clientpositive/bucket3.q.out | Bin 13567 -> 13568 bytes .../clientpositive/columnstats_partlvl.q.out | Bin 31030 -> 30990 bytes .../columnstats_partlvl_dp.q.out | 4 +- .../results/clientpositive/constprog_dp.q.out | 2 +- .../clientpositive/index_auto_unused.q.out | 2 +- .../index_stale_partitioned.q.out | 2 +- .../test/results/clientpositive/input23.q.out | Bin 7237 -> 7163 bytes .../test/results/clientpositive/input25.q.out | 16 +-- .../test/results/clientpositive/input26.q.out | 18 +-- .../test/results/clientpositive/input42.q.out | Bin 58255 -> 58285 bytes .../results/clientpositive/input_part0.q.out | 2 +- .../results/clientpositive/input_part1.q.out | Bin 17204 -> 17216 bytes .../results/clientpositive/input_part2.q.out | Bin 33781 -> 33785 bytes .../results/clientpositive/input_part3.q.out | 2 +- .../results/clientpositive/input_part5.q.out | 2 +- .../results/clientpositive/input_part7.q.out | Bin 20914 -> 20812 bytes .../results/clientpositive/input_part8.q.out | 2 +- .../results/clientpositive/input_part9.q.out | Bin 33282 -> 33292 bytes .../limit_partition_metadataonly.q.out | 2 +- .../clientpositive/list_bucket_dml_12.q.out | Bin 25042 -> 25066 bytes .../clientpositive/list_bucket_dml_13.q.out | Bin 19100 -> 19129 bytes .../clientpositive/list_bucket_dml_2.q.out | Bin 29443 -> 29455 bytes .../clientpositive/list_bucket_dml_4.q.out | Bin 39373 -> 39385 bytes .../clientpositive/list_bucket_dml_5.q.out | Bin 26694 -> 26704 bytes .../clientpositive/list_bucket_dml_9.q.out | Bin 39059 -> 39071 bytes .../list_bucket_query_multiskew_3.q.out | 6 +- .../merge_dynamic_partition.q.out | 2 +- .../results/clientpositive/nonmr_fetch.q.out | 4 +- .../nonmr_fetch_threshold.q.out | 4 +- ql/src/test/results/clientpositive/pcr.q.out | Bin 234247 -> 233665 bytes ql/src/test/results/clientpositive/ppd2.q.out | 29 ++--- .../results/clientpositive/ppd_udf_case.q.out | 40 +++---- .../clientpositive/ppd_union_view.q.out | 16 +-- .../clientpositive/quotedid_partition.q.out | 2 +- .../rand_partitionpruner2.q.out | Bin 19676 -> 19686 bytes .../rand_partitionpruner3.q.out | Bin 13235 -> 13255 bytes .../test/results/clientpositive/sample1.q.out | Bin 27768 -> 27780 bytes .../test/results/clientpositive/sample8.q.out | Bin 27255 -> 27097 bytes .../results/clientpositive/smb_mapjoin9.q.out | 6 +- .../clientpositive/smb_mapjoin_10.q.out | 8 +- .../results/clientpositive/tez/bucket3.q.out | Bin 13493 -> 13494 bytes .../tez/dynamic_partition_pruning.q.out | 16 +-- .../tez/dynamic_partition_pruning_2.q.out | 31 +++-- .../results/clientpositive/tez/sample1.q.out | Bin 21930 -> 21942 bytes .../clientpositive/tez/transform_ppr2.q.out | Bin 13680 -> 13690 bytes ...vectorized_dynamic_partition_pruning.q.out | 16 +-- .../clientpositive/transform_ppr2.q.out | Bin 12682 -> 12692 bytes .../truncate_column_list_bucket.q.out | Bin 13114 -> 13112 bytes .../results/clientpositive/union_ppr.q.out | Bin 20456 -> 20354 bytes .../clientpositive/union_remove_25.q.out | 48 ++++---- .../results/clientpositive/union_view.q.out | 30 ++--- .../results/compiler/plan/input_part1.q.xml | 112 ++++++++---------- .../test/results/compiler/plan/sample1.q.xml | 112 ++++++++---------- 55 files changed, 272 insertions(+), 307 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java index f80d38d51e01..a0f994348b36 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java @@ -64,6 +64,12 @@ public void initialize(HiveConf hiveConf) { transformations.add(new SyntheticJoinPredicate()); transformations.add(new PredicatePushDown()); transformations.add(new PartitionPruner()); + } + if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTCONSTANTPROPAGATION)) { + transformations.add(new ConstantPropagate()); + } + + if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTPPD)) { transformations.add(new PartitionConditionRemover()); if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTLISTBUCKETING)) { /* Add list bucketing pruner. */ @@ -71,9 +77,6 @@ public void initialize(HiveConf hiveConf) { } } - if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTCONSTANTPROPAGATION)) { - transformations.add(new ConstantPropagate()); - } if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTGROUPBY) || HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_MAP_GROUPBY_SORT)) { transformations.add(new GroupByOptimizer()); diff --git a/ql/src/test/results/clientpositive/annotate_stats_part.q.out b/ql/src/test/results/clientpositive/annotate_stats_part.q.out index b952fa6be817..b767a3217c22 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_part.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_part.q.out @@ -135,11 +135,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 2 Data size: 323 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 2 Data size: 323 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) + expressions: state (type: string), locid (type: int), zip (type: bigint), '__HIVE_DEFAULT_PARTITION__' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 2 Data size: 323 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 2 Data size: 323 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- basicStatState: PARTIAL colStatState: NONE @@ -181,11 +181,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) + expressions: state (type: string), locid (type: int), zip (type: bigint), '2001' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- partition level analyze statistics for all partitions @@ -222,11 +222,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) + expressions: state (type: string), locid (type: int), zip (type: bigint), '__HIVE_DEFAULT_PARTITION__' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: NONE @@ -535,14 +535,14 @@ STAGE PLANS: Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (locid > 0) (type: boolean) - Statistics: Num rows: 2 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: locid (type: int), year (type: string) + expressions: locid (type: int), '2001' (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 2 Data size: 376 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 376 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -571,14 +571,14 @@ STAGE PLANS: Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (locid > 0) (type: boolean) - Statistics: Num rows: 2 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: locid (type: int), year (type: string) + expressions: locid (type: int), '2001' (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 2 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/bucket3.q.out b/ql/src/test/results/clientpositive/bucket3.q.out index 7b65e52e6764570a0d82606a6573e5692d623264..0d6516cf8eab07b7841fdb6c4c23e85570ea638e 100644 GIT binary patch delta 24 fcmeyL*^sp%Nts#QP<`?{c7@6L!fcznluHExc*F>^ delta 23 ecmZq3`k%QWNtr37c=9`Tg~|ECY@554O9cUV<_QY` diff --git a/ql/src/test/results/clientpositive/columnstats_partlvl.q.out b/ql/src/test/results/clientpositive/columnstats_partlvl.q.out index 626541c1b2cdb7c73bd051c199bf593322b07f1e..0131517d8eb3426190d4c5681d6fc1290d903144 100644 GIT binary patch delta 133 zcmdn?iLvh!=Q6z0hvO4&CHig5_DnP8}V z#XQ+wJz=sZzdevPo_wEObaKAHip`FOfs6>%y<$+~CND5jpWKk^KG}~`X!CB*YJC70 Cku2K) delta 123 zcmeDC#JKGf*R|fzdXD^ii diff --git a/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out b/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out index 1c95486a8836..073b387c7b1d 100644 --- a/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out +++ b/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out @@ -85,7 +85,7 @@ STAGE PLANS: TableScan alias: employee_part Select Operator - expressions: employeesalary (type: double), country (type: string), employeename (type: string), employeeid (type: int) + expressions: 4000.0 (type: double), country (type: string), employeename (type: string), employeeid (type: int) outputColumnNames: employeesalary, country, employeename, employeeid Group By Operator aggregations: compute_stats(employeename, 16), compute_stats(employeeid, 16) @@ -158,7 +158,7 @@ STAGE PLANS: TableScan alias: employee_part Select Operator - expressions: employeesalary (type: double), country (type: string), employeeid (type: int) + expressions: 2000.0 (type: double), country (type: string), employeeid (type: int) outputColumnNames: employeesalary, country, employeeid Group By Operator aggregations: compute_stats(employeeid, 16) diff --git a/ql/src/test/results/clientpositive/constprog_dp.q.out b/ql/src/test/results/clientpositive/constprog_dp.q.out index 98af017c3928..8cf301d6f75e 100644 --- a/ql/src/test/results/clientpositive/constprog_dp.q.out +++ b/ql/src/test/results/clientpositive/constprog_dp.q.out @@ -32,7 +32,7 @@ STAGE PLANS: alias: srcpart Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string) + expressions: key (type: string), value (type: string), '2008-04-08' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/index_auto_unused.q.out b/ql/src/test/results/clientpositive/index_auto_unused.q.out index 8ebfcae3da5a..ad799e80d697 100644 --- a/ql/src/test/results/clientpositive/index_auto_unused.q.out +++ b/ql/src/test/results/clientpositive/index_auto_unused.q.out @@ -371,7 +371,7 @@ STAGE PLANS: predicate: (key < 10) (type: boolean) Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) + expressions: key (type: string), value (type: string), '2008-04-09' (type: string), '12' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/index_stale_partitioned.q.out b/ql/src/test/results/clientpositive/index_stale_partitioned.q.out index 5988d7604a75..edd97464b0df 100644 --- a/ql/src/test/results/clientpositive/index_stale_partitioned.q.out +++ b/ql/src/test/results/clientpositive/index_stale_partitioned.q.out @@ -95,7 +95,7 @@ STAGE PLANS: predicate: (key = 86) (type: boolean) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: '86' (type: string), val (type: string), foo (type: string) + expressions: '86' (type: string), val (type: string), 'bar' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/input23.q.out b/ql/src/test/results/clientpositive/input23.q.out index fefcfa5d1dec7fd8282e2e3820c26d52d9209825..51a23292d3855cccb446e147f1e1ca0423115aa5 100644 GIT binary patch delta 40 wcmX?V@!NcZ8^`7xjx5f}GD6&w{|fp~juJXLxm;MD$xwZAfUxLhf8lQ&05la1`~Uy| delta 97 zcmexue$--v8;7`#LQ1iMMoDEss+B@3z3e{nbKB2C9 o@yYo)MzzR1?leb~Xg&GV$fGXcOZ3R?gG delta 25 ecmey_&h)jNX@jvaQ%2EdbK!J$5WPq$JQDzcrwK^_ diff --git a/ql/src/test/results/clientpositive/input_part3.q.out b/ql/src/test/results/clientpositive/input_part3.q.out index 380e019d366c..3514bb7bad19 100644 --- a/ql/src/test/results/clientpositive/input_part3.q.out +++ b/ql/src/test/results/clientpositive/input_part3.q.out @@ -16,7 +16,7 @@ STAGE PLANS: alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) + expressions: key (type: string), value (type: string), '2008-04-08' (type: string), '11' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE ListSink diff --git a/ql/src/test/results/clientpositive/input_part5.q.out b/ql/src/test/results/clientpositive/input_part5.q.out index 6077ec861e82..ffc925150774 100644 --- a/ql/src/test/results/clientpositive/input_part5.q.out +++ b/ql/src/test/results/clientpositive/input_part5.q.out @@ -35,7 +35,7 @@ STAGE PLANS: predicate: (key < 100) (type: boolean) Statistics: Num rows: 333 Data size: 3537 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) + expressions: key (type: string), value (type: string), '2008-04-08' (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 333 Data size: 3537 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/input_part7.q.out b/ql/src/test/results/clientpositive/input_part7.q.out index a9c003bf604ee81befb66fae31ecaa72307d4202..13c7857bcf61f49a7142eafc1696451cd1614475 100644 GIT binary patch delta 141 zcmdnAnDNXa#tl>XCa>Ug-~5d)m~nEvfY;=2d_t2SFtJQ75KWz|EttcjZe(C!p=)5G oYha;1Sy4R delta 152 zcmX@Jh;h?m#tl>Xm{N)-JBmb1*3lB4+$kV4d4sU`WPkn#j7F0Wii%Fw7w`hh1CvqRyi9Nn69xJwFB3es*-)ZaaPn+TK}Ms^r!ly%b^avFI delta 17 YcmeBaVQOk&+HjPWDW!PxMONz?06bI%t^fc4 diff --git a/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out b/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out index 354d440997cf..751388640b80 100644 --- a/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out +++ b/ql/src/test/results/clientpositive/limit_partition_metadataonly.q.out @@ -14,7 +14,7 @@ STAGE PLANS: alias: srcpart Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: ds (type: string) + expressions: '2008-04-08' (type: string) outputColumnNames: _col0 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE ListSink diff --git a/ql/src/test/results/clientpositive/list_bucket_dml_12.q.out b/ql/src/test/results/clientpositive/list_bucket_dml_12.q.out index b041d52139af96f0ae20838241ef3324ce2aa798..ea4b6b89314453bd807f21cd66915c98c20258fe 100644 GIT binary patch delta 92 zcmca~nDNzN#tmAgit0uN1{S&oCb|X|>Ixbql?AC*3dJQwnR)4&ItuEBhU%N`O+_S$ NQuda0b7)8{F979!8l?aL delta 68 zcmaELnDNqK#tmAgqAA4+8YPtlsa6WbB}JKe>6$tU8AY2L{NA!|wy;(g#wnjA3;=UD B7?A(~ diff --git a/ql/src/test/results/clientpositive/list_bucket_dml_13.q.out b/ql/src/test/results/clientpositive/list_bucket_dml_13.q.out index afe201d3eb4d9bdfc5b5f30c9975cd627dfe031f..9b30a84eb284548e6a0fd88412382f29b8299c5b 100644 GIT binary patch delta 55 zcmbO;m2u}(#tlo%WYmoe3@mgFOmqz_)D<*JDhpDr6pBlVGV{_kbtXH?i%oXqmYW>Q LZMK=$yk8gq-}?}T delta 44 zcmdlvm2u8g#tlo%L{o|tG)gK9Qmqt9R+nmL-onidE_Q< M=26`I$x+Y{00wpu-T(jq delta 36 rcmeBw#@PIfal<@E(Uf8ZjgrcOR4awzlA_GKbWI(FjH1o^9Rmyj46F^> diff --git a/ql/src/test/results/clientpositive/list_bucket_dml_4.q.out b/ql/src/test/results/clientpositive/list_bucket_dml_4.q.out index 671653e94db74aa177c9fe76e8cc4db298288135..b517c8391a9465bbdf52968c766af3429a903b8b 100644 GIT binary patch delta 56 zcmX@Rnd#Ixbql?AC*3dJQwnR)4&ItuEBhU$|QdF3YC M@+xk=)ACUS01{XdK>z>% delta 44 zcmcb)nd$6irVSk}qAA4+8YPtlsa6WbB}JKe>6$tU8AX#7dF3YC@+xkA(ehCQ0FC$& A1ONa4 diff --git a/ql/src/test/results/clientpositive/list_bucket_dml_5.q.out b/ql/src/test/results/clientpositive/list_bucket_dml_5.q.out index 0610fa27f14a529c1cb261f7411d5c1ac4e96cf0..d8a0abfe3cfbf5497365bd2e064238c4930511bf 100644 GIT binary patch delta 27 jcmX?hf$_ox#trYidDM*z3@mgFOmqz_)Hi?h4wV4_nxzTN delta 21 dcmca`f$`V{#trYinNo@;|K~K^tmC610|0ea2{Qly diff --git a/ql/src/test/results/clientpositive/list_bucket_dml_9.q.out b/ql/src/test/results/clientpositive/list_bucket_dml_9.q.out index 4ac64b177c421a1b619c6ad54483006ab5b68fc5..135cd78c43f9f60cb35461f54f8a040fd93c6e12 100644 GIT binary patch delta 60 zcmbQdk!k)$rVUBWit0uN1{S&oCb|X|>Ixbql?AC*3dJQwnR)4&ItuEBhU$|OY~?1e Q_28Jio=0-?w&uGc07Kgo&j0`b delta 48 zcmbQgk!kWqrVUBWqAA4+8YPtlsa6WbB}JKe>6$tU8AX#5Y~?1e_28Jio=0-?q2{|H E0Kv-=k^lez diff --git a/ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out b/ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out index 0e4741791a4d..d738dbf55386 100644 --- a/ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out +++ b/ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out @@ -288,7 +288,7 @@ STAGE PLANS: predicate: (key = '145') (type: boolean) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: '145' (type: string), value (type: string), ds (type: string), hr (type: string) + expressions: '145' (type: string), value (type: string), '1' (type: string), '1' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -601,7 +601,7 @@ STAGE PLANS: predicate: ((key = '484') and (value = 'val_484')) (type: boolean) Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: '484' (type: string), 'val_484' (type: string), ds (type: string), hr (type: string) + expressions: '484' (type: string), 'val_484' (type: string), '1' (type: string), '2' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -755,7 +755,7 @@ STAGE PLANS: predicate: ((key = '327') and (value = 'val_327')) (type: boolean) Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: '327' (type: string), 'val_327' (type: string), ds (type: string), hr (type: string) + expressions: '327' (type: string), 'val_327' (type: string), '1' (type: string), '3' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/merge_dynamic_partition.q.out b/ql/src/test/results/clientpositive/merge_dynamic_partition.q.out index 85294bfbeb0f..da19b325e9a6 100644 --- a/ql/src/test/results/clientpositive/merge_dynamic_partition.q.out +++ b/ql/src/test/results/clientpositive/merge_dynamic_partition.q.out @@ -1291,7 +1291,7 @@ STAGE PLANS: alias: srcpart_merge_dp Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) + expressions: key (type: string), value (type: string), '2008-04-08' (type: string), '11' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/nonmr_fetch.q.out b/ql/src/test/results/clientpositive/nonmr_fetch.q.out index 87502cf5f0ac..c6a4318d59f0 100644 --- a/ql/src/test/results/clientpositive/nonmr_fetch.q.out +++ b/ql/src/test/results/clientpositive/nonmr_fetch.q.out @@ -58,7 +58,7 @@ STAGE PLANS: alias: srcpart Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) + expressions: key (type: string), value (type: string), '2008-04-08' (type: string), '11' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Limit @@ -313,7 +313,7 @@ STAGE PLANS: alias: srcpart Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) + expressions: key (type: string), value (type: string), '2008-04-08' (type: string), '11' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Limit diff --git a/ql/src/test/results/clientpositive/nonmr_fetch_threshold.q.out b/ql/src/test/results/clientpositive/nonmr_fetch_threshold.q.out index 1749aa4bfd10..cb0d3326195a 100644 --- a/ql/src/test/results/clientpositive/nonmr_fetch_threshold.q.out +++ b/ql/src/test/results/clientpositive/nonmr_fetch_threshold.q.out @@ -14,7 +14,7 @@ STAGE PLANS: alias: srcpart Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) + expressions: key (type: string), value (type: string), '2008-04-08' (type: string), '11' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Limit @@ -64,7 +64,7 @@ STAGE PLANS: alias: srcpart Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) + expressions: key (type: string), value (type: string), '2008-04-08' (type: string), '11' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Limit diff --git a/ql/src/test/results/clientpositive/pcr.q.out b/ql/src/test/results/clientpositive/pcr.q.out index 016c41dc7170c305c12c60e0dc0744c71b83d445..568417a4b5760a10f9e837bbd48f05769a40c5c3 100644 GIT binary patch delta 771 zcmZo)#&>WbU&9v0^=;D?wlfJ%50GS(+kSf+<8>x5e>;%>iG6y&Nk;qWvXdC^O`mm& z(QtZUJhK6(nT|qya(<3E*Yw1hj49J~`@J=t7#4JDE z;RYichcQHh$@aoCjDk$;#yTMFCX*BAiB48X5uASaDkBF=W?qTThqDDV zoa42a#kK>ZcP8g{6%*#E9N^%FN~%x3_*`kaUKyj~c0F6>ReYcz*O)$ElbK`k8$tEy zastf0lMfhKO~2s7tj(fsXb84gVe$nbf$avq%nCwqF{$amDAS$3PLr8?yMrzBRhH=+ TQkgZU$2&1k+3uFgd{7qvPLvA) delta 932 zcmX@Okgt6iU&9v0^=*>_VpO&tXk+}!1ZD+DGJay8Z19(D`UMR}i|OAcGT!G^s19@V z33b(rPtMOVoPK2zqY)p9Q0?>wR?OxCW;zNW73L7if@|`^7{%!clNo1DKb^uTFnyjH z6WjEklNpu4ETGwe>dZ3J6S|n?r+=_#VxPWcKBL0q9#u(@7U%7Ir!cN!oNm8}QEj@w zSw?BW;*z4wymXz+yb>Jf{CL?2`pHtARPw z{ogVLPmi-_7TEq~I%5qZ#36Ya%>2_XFiJt(VG44G-1K!j823$&n8o-4WT(<}gWrsT zl2Dsq6vFQ9jF%X9gI%XGSs?|VLZBnJGO|H}Z~Dd*MzQI}^BGOK5#ebv{h}4K`}W=Q z8SjWP>1ihz|Bc1~dhF9A28>vz{}W>5nf`MLV@CUj+l<>k+-8dRp3J>SaJsKL zv(xnGSZ3kLvtwnZ8}KlDPSaoxp1wehNn|@PJ(&ni-*3e%IQ^U^qrl_`&xN;Nuws7A lM@ZLv&g}^y%sV)?1NB<6PCw(sY&ZSGV@9d%vy+(B^Z=W}OjZB@ diff --git a/ql/src/test/results/clientpositive/ppd2.q.out b/ql/src/test/results/clientpositive/ppd2.q.out index 1efce1b3c4f6..64fe191de82e 100644 --- a/ql/src/test/results/clientpositive/ppd2.q.out +++ b/ql/src/test/results/clientpositive/ppd2.q.out @@ -455,25 +455,22 @@ STAGE PLANS: TableScan alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Filter Operator - predicate: ((ds = '2008-04-08') and (hr = '11')) (type: boolean) + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: key, value Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: key (type: string), value (type: string) - outputColumnNames: key, value + Group By Operator + aggregations: count(value) + keys: key (type: string) + mode: hash + outputColumnNames: _col0, _col1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Group By Operator - aggregations: count(value) - keys: key (type: string) - mode: hash - outputColumnNames: _col0, _col1 + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: string) - sort order: + - Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - value expressions: _col1 (type: bigint) + value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) diff --git a/ql/src/test/results/clientpositive/ppd_udf_case.q.out b/ql/src/test/results/clientpositive/ppd_udf_case.q.out index e24be0ada3cc..182699372880 100644 --- a/ql/src/test/results/clientpositive/ppd_udf_case.q.out +++ b/ql/src/test/results/clientpositive/ppd_udf_case.q.out @@ -44,7 +44,7 @@ STAGE PLANS: sort order: + Map-reduce partition columns: key (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE - value expressions: value (type: string), ds (type: string), hr (type: string) + value expressions: value (type: string), hr (type: string) TableScan alias: a Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE @@ -56,23 +56,23 @@ STAGE PLANS: sort order: + Map-reduce partition columns: key (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE - value expressions: value (type: string), ds (type: string), hr (type: string) + value expressions: value (type: string), hr (type: string) Reduce Operator Tree: Join Operator condition map: Inner Join 0 to 1 condition expressions: - 0 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col1} {VALUE._col2} - 1 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col1} {VALUE._col2} - outputColumnNames: _col0, _col1, _col2, _col3, _col7, _col8, _col9, _col10 + 0 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col2} + 1 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col2} + outputColumnNames: _col0, _col1, _col3, _col7, _col8, _col10 Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((_col2 = '2008-04-08') and (_col9 = '2008-04-08')) and CASE (_col0) WHEN ('27') THEN (true) WHEN ('38') THEN (false) ELSE (null) END) (type: boolean) - Statistics: Num rows: 34 Data size: 361 Basic stats: COMPLETE Column stats: NONE + predicate: CASE (_col0) WHEN ('27') THEN (true) WHEN ('38') THEN (false) ELSE (null) END (type: boolean) + Statistics: Num rows: 137 Data size: 1455 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col3 (type: string), _col7 (type: string), _col8 (type: string), _col10 (type: string) outputColumnNames: _col0, _col1, _col3, _col4, _col5, _col7 - Statistics: Num rows: 34 Data size: 361 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 137 Data size: 1455 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -87,15 +87,15 @@ STAGE PLANS: Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), '2008-04-08' (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string), '2008-04-08' (type: string), _col7 (type: string) sort order: ++++++++ - Statistics: Num rows: 34 Data size: 361 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 137 Data size: 1455 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), '2008-04-08' (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string), '2008-04-08' (type: string), KEY.reducesinkkey7 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 - Statistics: Num rows: 34 Data size: 361 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 137 Data size: 1455 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 34 Data size: 361 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 137 Data size: 1455 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -189,7 +189,7 @@ STAGE PLANS: sort order: + Map-reduce partition columns: key (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE - value expressions: value (type: string), ds (type: string), hr (type: string) + value expressions: value (type: string), hr (type: string) TableScan alias: a Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE @@ -201,19 +201,19 @@ STAGE PLANS: sort order: + Map-reduce partition columns: key (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE - value expressions: value (type: string), ds (type: string), hr (type: string) + value expressions: value (type: string), hr (type: string) Reduce Operator Tree: Join Operator condition map: Inner Join 0 to 1 condition expressions: - 0 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col1} {VALUE._col2} - 1 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col1} {VALUE._col2} - outputColumnNames: _col0, _col1, _col2, _col3, _col7, _col8, _col9, _col10 + 0 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col2} + 1 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col2} + outputColumnNames: _col0, _col1, _col3, _col7, _col8, _col10 Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col7 (type: string), _col8 (type: string), _col9 (type: string), _col10 (type: string) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + expressions: _col0 (type: string), _col1 (type: string), _col3 (type: string), _col7 (type: string), _col8 (type: string), _col10 (type: string) + outputColumnNames: _col0, _col1, _col3, _col4, _col5, _col7 Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false @@ -227,12 +227,12 @@ STAGE PLANS: Map Operator Tree: TableScan Reduce Output Operator - key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string), _col6 (type: string), _col7 (type: string) + key expressions: _col0 (type: string), _col1 (type: string), '2008-04-08' (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string), '2008-04-08' (type: string), _col7 (type: string) sort order: ++++++++ Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Select Operator - expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string), KEY.reducesinkkey6 (type: string), KEY.reducesinkkey7 (type: string) + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), '2008-04-08' (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string), '2008-04-08' (type: string), KEY.reducesinkkey7 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/ppd_union_view.q.out b/ql/src/test/results/clientpositive/ppd_union_view.q.out index e41959e8a55c..1aae964d9b71 100644 --- a/ql/src/test/results/clientpositive/ppd_union_view.q.out +++ b/ql/src/test/results/clientpositive/ppd_union_view.q.out @@ -177,9 +177,9 @@ STAGE PLANS: predicate: keymap is not null (type: boolean) Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: keymap (type: string), ds (type: string) + key expressions: keymap (type: string), '2011-10-13' (type: string) sort order: ++ - Map-reduce partition columns: keymap (type: string), ds (type: string) + Map-reduce partition columns: keymap (type: string) Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE tag: 1 value expressions: key (type: string) @@ -193,9 +193,9 @@ STAGE PLANS: predicate: keymap is not null (type: boolean) Statistics: Num rows: 1 Data size: 14 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: keymap (type: string), ds (type: string) + key expressions: keymap (type: string), '2011-10-13' (type: string) sort order: ++ - Map-reduce partition columns: keymap (type: string), ds (type: string) + Map-reduce partition columns: keymap (type: string) Statistics: Num rows: 1 Data size: 14 Basic stats: COMPLETE Column stats: NONE tag: 0 value expressions: value (type: string) @@ -302,12 +302,12 @@ STAGE PLANS: condition map: Inner Join 0 to 1 condition expressions: - 0 {VALUE._col0} {KEY.reducesinkkey1} + 0 {VALUE._col0} 1 {VALUE._col0} - outputColumnNames: _col1, _col2, _col6 + outputColumnNames: _col1, _col6 Statistics: Num rows: 1 Data size: 15 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col6 (type: string), _col1 (type: string), _col2 (type: string) + expressions: _col6 (type: string), _col1 (type: string), '2011-10-13' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 1 Data size: 15 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -534,7 +534,7 @@ STAGE PLANS: Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE GatherStats: false Select Operator - expressions: key (type: string), value (type: string), ds (type: string) + expressions: key (type: string), value (type: string), '2011-10-15' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE Union diff --git a/ql/src/test/results/clientpositive/quotedid_partition.q.out b/ql/src/test/results/clientpositive/quotedid_partition.q.out index 6253b338781c..3972c5dce974 100644 --- a/ql/src/test/results/clientpositive/quotedid_partition.q.out +++ b/ql/src/test/results/clientpositive/quotedid_partition.q.out @@ -46,7 +46,7 @@ STAGE PLANS: predicate: (x+1 = '10') (type: boolean) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: '10' (type: string), y&y (type: string), !@#$%^&*()_q (type: string) + expressions: '10' (type: string), y&y (type: string), 'a' (type: string) outputColumnNames: x+1, y&y, !@#$%^&*()_q Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Group By Operator diff --git a/ql/src/test/results/clientpositive/rand_partitionpruner2.q.out b/ql/src/test/results/clientpositive/rand_partitionpruner2.q.out index 44320e82c851f75aeb4860c9c09f6190ada2c737..971307b05b834041972aff376d236f1c72db21e7 100644 GIT binary patch delta 27 icmcaJlkwS1#tj`DJnBXU1{S&oCb|X|>YKYbf?NQFI0#$- delta 17 ZcmaDhlkv_>#tj`DOew{ir*H(h002fr2K4{{ diff --git a/ql/src/test/results/clientpositive/rand_partitionpruner3.q.out b/ql/src/test/results/clientpositive/rand_partitionpruner3.q.out index ad2c388f19fc7f203ed857905e2c70156c4da883..8cfa24329479d1173c8ab76ca941b7db3136e2a5 100644 GIT binary patch delta 47 scmdm-ems4{d=4IUBLf2qT>}$c0}J)d3ptD=P(&s#9R+nmL-oxIIBz5Y E0EP|^i2wiq delta 36 scmZp<$@t?2vig;gXrWAVo~j*hIl4 ru_RHUII}9%O2OF7X!1f6v&sKc!Y4DDOvIGkywHS^5sUCf(_@JJj2QNLewVb8ai_r=_r7tjVG@%JUBViNKH2}FGWEEBxIyu ztDtUVU|^wZV4`bap{}W^0GBfc$r&1|Pj2LrpRAiI#&4nEl30?cP@Gu>bdZJVWJVLS a$sEQn(8V`1nlLh=3j!5uZMHR?V*&t|4Mv~< diff --git a/ql/src/test/results/clientpositive/smb_mapjoin9.q.out b/ql/src/test/results/clientpositive/smb_mapjoin9.q.out index fcf0a583012b..e5663847df41 100644 --- a/ql/src/test/results/clientpositive/smb_mapjoin9.q.out +++ b/ql/src/test/results/clientpositive/smb_mapjoin9.q.out @@ -314,13 +314,13 @@ STAGE PLANS: Inner Join 0 to 1 condition expressions: 0 {key} - 1 {key} {value} {ds} + 1 {key} {value} keys: 0 key (type: int) 1 key (type: int) - outputColumnNames: _col0, _col6, _col7, _col8 + outputColumnNames: _col0, _col6, _col7 Select Operator - expressions: _col6 (type: int), _col7 (type: string), _col8 (type: string), _col0 (type: int) + expressions: _col6 (type: int), _col7 (type: string), '2010-10-15' (type: string), _col0 (type: int) outputColumnNames: _col0, _col1, _col2, _col3 File Output Operator compressed: false diff --git a/ql/src/test/results/clientpositive/smb_mapjoin_10.q.out b/ql/src/test/results/clientpositive/smb_mapjoin_10.q.out index 08c47e45319f..181d6a970aec 100644 --- a/ql/src/test/results/clientpositive/smb_mapjoin_10.q.out +++ b/ql/src/test/results/clientpositive/smb_mapjoin_10.q.out @@ -90,14 +90,14 @@ STAGE PLANS: condition map: Inner Join 0 to 1 condition expressions: - 0 {userid} {pageid} {postid} {type} {ds} - 1 {userid} {pageid} {postid} {type} {ds} + 0 {userid} {pageid} {postid} {type} + 1 {userid} {pageid} {postid} {type} keys: 0 userid (type: int), pageid (type: int), postid (type: int), type (type: string) 1 userid (type: int), pageid (type: int), postid (type: int), type (type: string) - outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col8, _col9, _col10, _col11, _col12 + outputColumnNames: _col0, _col1, _col2, _col3, _col8, _col9, _col10, _col11 Select Operator - expressions: _col0 (type: int), _col1 (type: int), _col2 (type: int), _col3 (type: string), _col4 (type: string), _col8 (type: int), _col9 (type: int), _col10 (type: int), _col11 (type: string), _col12 (type: string) + expressions: _col0 (type: int), _col1 (type: int), _col2 (type: int), _col3 (type: string), '1' (type: string), _col8 (type: int), _col9 (type: int), _col10 (type: int), _col11 (type: string), '2' (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9 File Output Operator compressed: false diff --git a/ql/src/test/results/clientpositive/tez/bucket3.q.out b/ql/src/test/results/clientpositive/tez/bucket3.q.out index 2b19e169d3e82c518f64d1c0997c02374b5ea749..17e1985dfa4cdc541bd8369dd5ae5fb408954010 100644 GIT binary patch delta 24 gcmdm*xh-=;n<}%qq59Ixbql?AC*3dJQwnR)4&ItuEBhU%Laa&r0r E0B(j3F8}}l delta 36 scmdnCnsL=?#tl83qAA4+8YPtlsa6WbB}JKe>6$tU8AY4da&r0r0RAEj@&Et; diff --git a/ql/src/test/results/clientpositive/tez/transform_ppr2.q.out b/ql/src/test/results/clientpositive/tez/transform_ppr2.q.out index abf627fd9edeb13482d8850b2ad2779cbb190149..9bdb5f403e16fcc4cd72fab77208868f02baeb11 100644 GIT binary patch delta 25 gcmey6^($+`H*OwvBLf2qT>}$c0}J)dKe#J20fw&$5dZ)H delta 15 WcmeyB^&xA+H*Ths;>}Dv6`BA+dIqZi diff --git a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out index b0a5bcb1cdfe..7e187115539b 100644 --- a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out +++ b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out @@ -1923,7 +1923,7 @@ STAGE PLANS: filterExpr: (ds is not null and (ds = '2008-04-08')) (type: boolean) Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: ds (type: string) + expressions: '2008-04-08' (type: string) outputColumnNames: ds Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Group By Operator @@ -2595,7 +2595,6 @@ STAGE PLANS: sort order: + Map-reduce partition columns: ds (type: string) Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - value expressions: hr (type: string) Map 5 Map Operator Tree: TableScan @@ -2660,14 +2659,12 @@ STAGE PLANS: condition map: Inner Join 0 to 1 condition expressions: - 0 {VALUE._col2} + 0 1 - outputColumnNames: _col3 Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col3 (type: string) + key expressions: '11' (type: string) sort order: + - Map-reduce partition columns: _col3 (type: string) Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: @@ -4410,7 +4407,7 @@ STAGE PLANS: filterExpr: (ds is not null and (ds = '2008-04-08')) (type: boolean) Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: ds (type: string) + expressions: '2008-04-08' (type: string) outputColumnNames: ds Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Group By Operator @@ -4803,12 +4800,11 @@ STAGE PLANS: condition map: Inner Join 0 to 1 condition expressions: - 0 {hr} + 0 1 keys: 0 ds (type: string) 1 ds (type: string) - outputColumnNames: _col3 input vertices: 1 Map 4 Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE @@ -4819,7 +4815,7 @@ STAGE PLANS: 0 1 keys: - 0 _col3 (type: string) + 0 '11' (type: string) 1 '11' (type: string) input vertices: 1 Map 3 diff --git a/ql/src/test/results/clientpositive/transform_ppr2.q.out b/ql/src/test/results/clientpositive/transform_ppr2.q.out index acc6d0b5632c8d034c92834c6e49694b2509d43d..d09746e783ef93376babcc9c96e722dbdc39b28b 100644 GIT binary patch delta 25 gcmeB5o|3#FiknB>$iTot*T6*Az(Rd<47Z*d0Am&gvH$=8 delta 15 WcmbP|+?Bi`ikm5=cyk)Jo*Do!dId`W diff --git a/ql/src/test/results/clientpositive/truncate_column_list_bucket.q.out b/ql/src/test/results/clientpositive/truncate_column_list_bucket.q.out index fc4a30b680fc7e0e7fa6f95cc89a58f4314801b1..8745b13e75c51052df9b7f4eda0e59f3dc6a1eef 100644 GIT binary patch delta 30 gcmdm$wj*srH$Stwq59^2eg_dKV>;{REX@m?0H=%!J^%m! delta 32 hcmdmywkvHzH$O{3Vo}NFi^|hkH>--Su7|j0|4H2Fv0); diff --git a/ql/src/test/results/clientpositive/union_remove_25.q.out b/ql/src/test/results/clientpositive/union_remove_25.q.out index 3b20e15d9ab6..28940f7d6db9 100644 --- a/ql/src/test/results/clientpositive/union_remove_25.q.out +++ b/ql/src/test/results/clientpositive/union_remove_25.q.out @@ -292,8 +292,8 @@ STAGE PLANS: alias: srcpart Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string) - outputColumnNames: _col0, _col1, _col2 + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 500 @@ -301,17 +301,17 @@ STAGE PLANS: Reduce Output Operator sort order: Statistics: Num rows: 500 Data size: 5000 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + value expressions: _col0 (type: string), _col1 (type: string) Reduce Operator Tree: Select Operator - expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: string) - outputColumnNames: _col0, _col1, _col2 + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string) + outputColumnNames: _col0, _col1 Statistics: Num rows: 500 Data size: 5000 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 500 Statistics: Num rows: 500 Data size: 5000 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint), _col2 (type: string) + expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint), '2008-04-08' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 500 Data size: 5000 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -342,8 +342,8 @@ STAGE PLANS: alias: srcpart Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string) - outputColumnNames: _col0, _col1, _col2 + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 500 @@ -351,17 +351,17 @@ STAGE PLANS: Reduce Output Operator sort order: Statistics: Num rows: 500 Data size: 5000 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + value expressions: _col0 (type: string), _col1 (type: string) Reduce Operator Tree: Select Operator - expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: string) - outputColumnNames: _col0, _col1, _col2 + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string) + outputColumnNames: _col0, _col1 Statistics: Num rows: 500 Data size: 5000 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 500 Statistics: Num rows: 500 Data size: 5000 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint), _col2 (type: string) + expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint), '2008-04-08' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 500 Data size: 5000 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -476,8 +476,8 @@ STAGE PLANS: alias: srcpart Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) - outputColumnNames: _col0, _col1, _col2, _col3 + expressions: key (type: string), value (type: string), hr (type: string) + outputColumnNames: _col0, _col1, _col3 Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 1000 @@ -485,17 +485,17 @@ STAGE PLANS: Reduce Output Operator sort order: Statistics: Num rows: 1000 Data size: 10000 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string) + value expressions: _col0 (type: string), _col1 (type: string), _col3 (type: string) Reduce Operator Tree: Select Operator - expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: string) - outputColumnNames: _col0, _col1, _col2, _col3 + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col3 (type: string) + outputColumnNames: _col0, _col1, _col3 Statistics: Num rows: 1000 Data size: 10000 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 1000 Statistics: Num rows: 1000 Data size: 10000 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint), _col2 (type: string), _col3 (type: string) + expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint), '2008-04-08' (type: string), _col3 (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 1000 Data size: 10000 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -527,8 +527,8 @@ STAGE PLANS: alias: srcpart Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string), ds (type: string), hr (type: string) - outputColumnNames: _col0, _col1, _col2, _col3 + expressions: key (type: string), value (type: string), hr (type: string) + outputColumnNames: _col0, _col1, _col3 Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 1000 @@ -536,17 +536,17 @@ STAGE PLANS: Reduce Output Operator sort order: Statistics: Num rows: 1000 Data size: 10000 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string) + value expressions: _col0 (type: string), _col1 (type: string), _col3 (type: string) Reduce Operator Tree: Select Operator - expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: string) - outputColumnNames: _col0, _col1, _col2, _col3 + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col3 (type: string) + outputColumnNames: _col0, _col1, _col3 Statistics: Num rows: 1000 Data size: 10000 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 1000 Statistics: Num rows: 1000 Data size: 10000 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint), _col2 (type: string), _col3 (type: string) + expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint), '2008-04-08' (type: string), _col3 (type: string) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 1000 Data size: 10000 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/union_view.q.out b/ql/src/test/results/clientpositive/union_view.q.out index bbbf5e781e2a..bf31828ad66d 100644 --- a/ql/src/test/results/clientpositive/union_view.q.out +++ b/ql/src/test/results/clientpositive/union_view.q.out @@ -85,7 +85,7 @@ STAGE PLANS: predicate: (key = 86) (type: boolean) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: 86 (type: int), value (type: string), ds (type: string) + expressions: 86 (type: int), value (type: string), '1' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -144,7 +144,7 @@ STAGE PLANS: predicate: (key = 86) (type: boolean) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: 86 (type: int), value (type: string), ds (type: string) + expressions: 86 (type: int), value (type: string), '2' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -203,7 +203,7 @@ STAGE PLANS: predicate: (key = 86) (type: boolean) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: 86 (type: int), value (type: string), ds (type: string) + expressions: 86 (type: int), value (type: string), '3' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -483,13 +483,13 @@ STAGE PLANS: predicate: (key = 86) (type: boolean) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: value (type: string), ds (type: string) - outputColumnNames: _col1, _col2 + expressions: value (type: string) + outputColumnNames: _col1 Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Union Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: 86 (type: int), _col1 (type: string), _col2 (type: string) + expressions: 86 (type: int), _col1 (type: string), '1' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -548,13 +548,13 @@ STAGE PLANS: predicate: (key = 86) (type: boolean) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: value (type: string), ds (type: string) - outputColumnNames: _col1, _col2 + expressions: value (type: string) + outputColumnNames: _col1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Union Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: 86 (type: int), _col1 (type: string), _col2 (type: string) + expressions: 86 (type: int), _col1 (type: string), '2' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -613,13 +613,13 @@ STAGE PLANS: predicate: (key = 86) (type: boolean) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: value (type: string), ds (type: string) - outputColumnNames: _col1, _col2 + expressions: value (type: string) + outputColumnNames: _col1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Union Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: 86 (type: int), _col1 (type: string), _col2 (type: string) + expressions: 86 (type: int), _col1 (type: string), '3' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -1087,13 +1087,13 @@ STAGE PLANS: predicate: (key = 86) (type: boolean) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: value (type: string), ds (type: string) - outputColumnNames: _col1, _col2 + expressions: value (type: string) + outputColumnNames: _col1 Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Union Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: 86 (type: int), _col1 (type: string), _col2 (type: string) + expressions: 86 (type: int), _col1 (type: string), '4' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/compiler/plan/input_part1.q.xml b/ql/src/test/results/compiler/plan/input_part1.q.xml index d87834d60ed0..3640102ed483 100644 --- a/ql/src/test/results/compiler/plan/input_part1.q.xml +++ b/ql/src/test/results/compiler/plan/input_part1.q.xml @@ -351,41 +351,35 @@ _col3 - - + + ds - - true - - - srcpart - + + 2008-04-08 + _col2 - - + + hr - - true - - - srcpart - + + 12 + _col1 - + value @@ -399,7 +393,7 @@ _col0 - + key @@ -418,16 +412,16 @@ - + - + - + - + @@ -634,38 +628,6 @@ - - - - ds - - - srcpart - - - - - - string - - - - - - - hr - - - srcpart - - - - - - string - - - @@ -713,12 +675,6 @@ value - - ds - - - hr - @@ -731,10 +687,42 @@ - + + + ds + + + ds + + + srcpart + + + + + + string + + - + + + hr + + + hr + + + srcpart + + + + + + string + + diff --git a/ql/src/test/results/compiler/plan/sample1.q.xml b/ql/src/test/results/compiler/plan/sample1.q.xml index 0541c16f7956..0ab3b87544a2 100644 --- a/ql/src/test/results/compiler/plan/sample1.q.xml +++ b/ql/src/test/results/compiler/plan/sample1.q.xml @@ -351,41 +351,35 @@ _col3 - - + + hr - - true - - - s - + + 11 + _col2 - - + + ds - - true - - - s - + + 2008-04-08 + _col1 - + value @@ -399,7 +393,7 @@ _col0 - + key @@ -418,16 +412,16 @@ - + - + - + - + @@ -727,38 +721,6 @@ - - - - ds - - - s - - - - - - string - - - - - - - hr - - - s - - - - - - string - - - @@ -806,12 +768,6 @@ value - - ds - - - hr - @@ -824,10 +780,42 @@ - + + + ds + + + ds + + + s + + + + + + string + + - + + + hr + + + hr + + + s + + + + + + string + + From be569e8cc715122aee3c61765a563d5a2dd6bf4f Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Tue, 21 Oct 2014 02:22:03 +0000 Subject: [PATCH 139/339] HIVE-8501 : Fix CBO to use indexes when GenericUDFBridge is applied (Pengcheng Xiong, reviewed by Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633265 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/index/IndexPredicateAnalyzer.java | 67 +++++++++++++------ 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/index/IndexPredicateAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/index/IndexPredicateAnalyzer.java index 960fc1d2d0d4..48b4b514c045 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/index/IndexPredicateAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/index/IndexPredicateAnalyzer.java @@ -44,6 +44,13 @@ import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc; import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFToBinary; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFToChar; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFToDate; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFToDecimal; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFToUnixTimeStamp; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFToUtcTimestamp; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFToVarchar; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBaseCompare; @@ -152,6 +159,32 @@ public Object process(Node nd, Stack stack, return residualPredicate; } + //Check if ExprNodeColumnDesc is wrapped in expr. + //If so, peel off. Otherwise return itself. + private ExprNodeDesc getColumnExpr(ExprNodeDesc expr) { + if (expr instanceof ExprNodeColumnDesc) { + return expr; + } + ExprNodeGenericFuncDesc funcDesc = null; + if (expr instanceof ExprNodeGenericFuncDesc) { + funcDesc = (ExprNodeGenericFuncDesc) expr; + } + if (null == funcDesc) { + return expr; + } + GenericUDF udf = funcDesc.getGenericUDF(); + // check if its a simple cast expression. + if ((udf instanceof GenericUDFBridge || udf instanceof GenericUDFToBinary + || udf instanceof GenericUDFToChar || udf instanceof GenericUDFToVarchar + || udf instanceof GenericUDFToDecimal || udf instanceof GenericUDFToDate + || udf instanceof GenericUDFToUnixTimeStamp || udf instanceof GenericUDFToUtcTimestamp) + && funcDesc.getChildren().size() == 1 + && funcDesc.getChildren().get(0) instanceof ExprNodeColumnDesc) { + return expr.getChildren().get(0); + } + return expr; + } + private ExprNodeDesc analyzeExpr( ExprNodeGenericFuncDesc expr, List searchConditions, @@ -183,33 +216,16 @@ private ExprNodeDesc analyzeExpr( ExprNodeDesc expr1 = (ExprNodeDesc) nodeOutputs[0]; ExprNodeDesc expr2 = (ExprNodeDesc) nodeOutputs[1]; // We may need to peel off the GenericUDFBridge that is added by CBO or user - boolean peelOffGenericUDFBridge = false; - while (expr1 instanceof ExprNodeGenericFuncDesc && expr2 instanceof ExprNodeGenericFuncDesc) { - GenericUDF udf1 = ((ExprNodeGenericFuncDesc) expr1).getGenericUDF(); - GenericUDF udf2 = ((ExprNodeGenericFuncDesc) expr2).getGenericUDF(); - // We assume that GenericUDFBridge that is added by CBO or user if they - // have the same udf names. - if (udf1.getUdfName() == udf2.getUdfName()) { - peelOffGenericUDFBridge = true; - expr1 = expr1.getChildren().get(0); - expr2 = expr2.getChildren().get(0); - } else { - break; - } - } - // We also need to update the expr so that the index query can be generated. - // Note that, hive does not support UDFToDouble in the query text. - if (peelOffGenericUDFBridge) { - List list = new ArrayList(); - list.add(expr1); - list.add(expr2); - expr = new ExprNodeGenericFuncDesc(expr.getTypeInfo(), expr.getGenericUDF(), list); + if (expr1.getTypeInfo().equals(expr2.getTypeInfo())) { + expr1 = getColumnExpr(expr1); + expr2 = getColumnExpr(expr2); } + ExprNodeDesc[] extracted = ExprNodeDescUtils.extractComparePair(expr1, expr2); if (extracted == null || (extracted.length > 2 && !acceptsFields)) { return expr; } - + ExprNodeColumnDesc columnDesc; ExprNodeConstantDesc constantDesc; if (extracted[0] instanceof ExprNodeConstantDesc) { @@ -239,6 +255,13 @@ private ExprNodeDesc analyzeExpr( fields = ExprNodeDescUtils.extractFields(fieldDesc); } + // We also need to update the expr so that the index query can be generated. + // Note that, hive does not support UDFToDouble etc in the query text. + List list = new ArrayList(); + list.add(expr1); + list.add(expr2); + expr = new ExprNodeGenericFuncDesc(expr.getTypeInfo(), expr.getGenericUDF(), list); + searchConditions.add( new IndexSearchCondition( columnDesc, From 731034228eadb5377353956ba48109e4f2384d0a Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Tue, 21 Oct 2014 20:29:53 +0000 Subject: [PATCH 140/339] HIVE-8479: Tez sessions cannot change queues once assigned to one within a CLI session (Vikram Dixit K via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633450 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/tez/TezSessionPoolManager.java | 34 ++-- .../hive/ql/exec/tez/TezSessionState.java | 9 +- .../hive/ql/exec/tez/TestTezSessionPool.java | 171 +++++++++--------- .../hive/ql/exec/tez/TestTezSessionState.java | 45 +++-- 4 files changed, 140 insertions(+), 119 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java index a4fd36d029d0..e5fce1466d4d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionPoolManager.java @@ -141,7 +141,9 @@ private TezSessionState getSession(HiveConf conf, boolean doOpen, private TezSessionState getNewSessionState(HiveConf conf, String queueName, boolean doOpen) throws Exception { TezSessionState retTezSessionState = createSession(TezSessionState.makeSessionId()); - retTezSessionState.setQueueName(queueName); + if (queueName != null) { + conf.set("tez.queue.name", queueName); + } String what = "Created"; if (doOpen) { retTezSessionState.open(conf); @@ -221,29 +223,27 @@ private boolean canWorkWithSameSession(TezSessionState session, HiveConf conf) throw new HiveException(e); } - HiveConf existingConf = session.getConf(); - if (existingConf == null) { - return false; - } - + boolean doAsEnabled = conf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS); // either variables will never be null because a default value is returned in case of absence - if (existingConf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS) != - conf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS)) { + if (doAsEnabled != conf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS)) { return false; } if (!session.isDefault()) { - if (existingConf.get("tez.queue.name") == conf.get("tez.queue.name")) { - // both are null - return true; - } - if ((existingConf.get("tez.queue.name") == null)) { - // doesn't matter if the other conf is null or not. if it is null, above case catches it - return false; + String queueName = session.getQueueName(); + LOG.info("Current queue name is " + queueName + " incoming queue name is " + + conf.get("tez.queue.name")); + if (queueName == null) { + if (conf.get("tez.queue.name") != null) { + // queue names are different + return false; + } else { + return true; + } } - if (!existingConf.get("tez.queue.name").equals(conf.get("tez.queue.name"))) { - // handles the case of incoming conf having a null for tez.queue.name + if (!queueName.equals(conf.get("tez.queue.name"))) { + // the String.equals method handles the case of conf not having the queue name as well. return false; } } else { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java index 110b80ae55fc..563fb49cb578 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java @@ -67,13 +67,14 @@ public class TezSessionState { private LocalResource appJarLr; private TezClient session; private String sessionId; - private DagUtils utils; + private final DagUtils utils; private String queueName; private boolean defaultQueue = false; private String user; private final Set additionalFilesNotFromConf = new HashSet(); private final Set localizedResources = new HashSet(); + private boolean doAsEnabled; private static List openSessions = Collections.synchronizedList(new LinkedList()); @@ -130,6 +131,8 @@ public void open(HiveConf conf) public void open(HiveConf conf, String[] additionalFiles) throws IOException, LoginException, IllegalArgumentException, URISyntaxException, TezException { this.conf = conf; + this.queueName = conf.get("tez.queue.name"); + this.doAsEnabled = conf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS); UserGroupInformation ugi; ugi = ShimLoader.getHadoopShims().getUGIForConf(conf); @@ -392,4 +395,8 @@ public List getLocalizedResources() { public String getUser() { return user; } + + public boolean getDoAsEnabled() { + return doAsEnabled; + } } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionPool.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionPool.java index c6ac55743604..b6834be7d9d3 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionPool.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionPool.java @@ -47,117 +47,122 @@ public TezSessionState createSession(String sessionId) { } @Before - public void setUp() { - conf = new HiveConf(); - } + public void setUp() { + conf = new HiveConf(); + } @Test - public void testGetNonDefaultSession() { - poolManager = new TestTezSessionPoolManager(); - try { - TezSessionState sessionState = poolManager.getSession(null, conf, true); - TezSessionState sessionState1 = poolManager.getSession(sessionState, conf, true); - if (sessionState1 != sessionState) { - fail(); - } - } catch (Exception e) { - e.printStackTrace(); + public void testGetNonDefaultSession() { + poolManager = new TestTezSessionPoolManager(); + try { + TezSessionState sessionState = poolManager.getSession(null, conf, true); + TezSessionState sessionState1 = poolManager.getSession(sessionState, conf, true); + if (sessionState1 != sessionState) { + fail(); + } + conf.set("tez.queue.name", "nondefault"); + TezSessionState sessionState2 = poolManager.getSession(sessionState, conf, true); + if (sessionState2 == sessionState) { fail(); } + } catch (Exception e) { + e.printStackTrace(); + fail(); } + } @Test - public void testSessionPoolGetInOrder() { - try { - conf.setBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS, false); - conf.setVar(HiveConf.ConfVars.HIVE_SERVER2_TEZ_DEFAULT_QUEUES, "a,b,c"); - conf.setIntVar(HiveConf.ConfVars.HIVE_SERVER2_TEZ_SESSIONS_PER_DEFAULT_QUEUE, 2); - - poolManager = new TestTezSessionPoolManager(); - poolManager.setupPool(conf); - poolManager.startPool(); - TezSessionState sessionState = poolManager.getSession(null, conf, true); - if (sessionState.getQueueName().compareTo("a") != 0) { - fail(); - } - poolManager.returnSession(sessionState); - - sessionState = poolManager.getSession(null, conf, true); - if (sessionState.getQueueName().compareTo("b") != 0) { - fail(); - } - poolManager.returnSession(sessionState); + public void testSessionPoolGetInOrder() { + try { + conf.setBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS, false); + conf.setVar(HiveConf.ConfVars.HIVE_SERVER2_TEZ_DEFAULT_QUEUES, "a,b,c"); + conf.setIntVar(HiveConf.ConfVars.HIVE_SERVER2_TEZ_SESSIONS_PER_DEFAULT_QUEUE, 2); - sessionState = poolManager.getSession(null, conf, true); - if (sessionState.getQueueName().compareTo("c") != 0) { - fail(); - } - poolManager.returnSession(sessionState); + poolManager = new TestTezSessionPoolManager(); + poolManager.setupPool(conf); + poolManager.startPool(); + TezSessionState sessionState = poolManager.getSession(null, conf, true); + if (sessionState.getQueueName().compareTo("a") != 0) { + fail(); + } + poolManager.returnSession(sessionState); - sessionState = poolManager.getSession(null, conf, true); - if (sessionState.getQueueName().compareTo("a") != 0) { - fail(); - } + sessionState = poolManager.getSession(null, conf, true); + if (sessionState.getQueueName().compareTo("b") != 0) { + fail(); + } + poolManager.returnSession(sessionState); - poolManager.returnSession(sessionState); + sessionState = poolManager.getSession(null, conf, true); + if (sessionState.getQueueName().compareTo("c") != 0) { + fail(); + } + poolManager.returnSession(sessionState); - } catch (Exception e) { - e.printStackTrace(); + sessionState = poolManager.getSession(null, conf, true); + if (sessionState.getQueueName().compareTo("a") != 0) { fail(); } + + poolManager.returnSession(sessionState); + + } catch (Exception e) { + e.printStackTrace(); + fail(); } + } public class SessionThread implements Runnable { @Override - public void run() { - try { - HiveConf tmpConf = new HiveConf(conf); - if (random.nextDouble() > 0.5) { - tmpConf.set("tez.queue.name", "default"); - } else { - tmpConf.set("tez.queue.name", ""); - } - - TezSessionState session = poolManager.getSession(null, tmpConf, true); - Thread.sleep((random.nextInt(9) % 10) * 1000); - poolManager.returnSession(session); - } catch (Exception e) { - e.printStackTrace(); + public void run() { + try { + HiveConf tmpConf = new HiveConf(conf); + if (random.nextDouble() > 0.5) { + tmpConf.set("tez.queue.name", "default"); + } else { + tmpConf.set("tez.queue.name", ""); } + + TezSessionState session = poolManager.getSession(null, tmpConf, true); + Thread.sleep((random.nextInt(9) % 10) * 1000); + poolManager.returnSession(session); + } catch (Exception e) { + e.printStackTrace(); } + } } @Test - public void testReturn() { - conf.set("tez.queue.name", ""); - random = new Random(1000); - conf.setBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS, false); - conf.setVar(HiveConf.ConfVars.HIVE_SERVER2_TEZ_DEFAULT_QUEUES, "a,b,c"); - conf.setIntVar(HiveConf.ConfVars.HIVE_SERVER2_TEZ_SESSIONS_PER_DEFAULT_QUEUE, 2); + public void testReturn() { + conf.set("tez.queue.name", ""); + random = new Random(1000); + conf.setBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS, false); + conf.setVar(HiveConf.ConfVars.HIVE_SERVER2_TEZ_DEFAULT_QUEUES, "a,b,c"); + conf.setIntVar(HiveConf.ConfVars.HIVE_SERVER2_TEZ_SESSIONS_PER_DEFAULT_QUEUE, 2); + try { + poolManager = new TestTezSessionPoolManager(); + poolManager.setupPool(conf); + poolManager.startPool(); + } catch (Exception e) { + e.printStackTrace(); + fail(); + } + List threadList = new ArrayList(); + for (int i = 0; i < 15; i++) { + Thread t = new Thread(new SessionThread()); + t.start(); + } + + for (Thread t : threadList) { try { - poolManager = new TestTezSessionPoolManager(); - poolManager.setupPool(conf); - poolManager.startPool(); - } catch (Exception e) { + t.join(); + } catch (InterruptedException e) { e.printStackTrace(); fail(); } - List threadList = new ArrayList(); - for (int i = 0; i < 15; i++) { - Thread t = new Thread(new SessionThread()); - t.start(); - } - - for (Thread t : threadList) { - try { - t.join(); - } catch (InterruptedException e) { - e.printStackTrace(); - fail(); - } - } } + } @Test public void testCloseAndOpenDefault() throws Exception { diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionState.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionState.java index 99a7a00fac4f..63687eb26f45 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionState.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/tez/TestTezSessionState.java @@ -37,9 +37,10 @@ public class TestTezSessionState extends TezSessionState { private boolean open; - private String sessionId; + private final String sessionId; private HiveConf hiveConf; private String user; + private boolean doAsEnabled; public TestTezSessionState(String sessionId) { super(sessionId); @@ -47,38 +48,46 @@ public TestTezSessionState(String sessionId) { } @Override - public boolean isOpen() { - return open; - } + public boolean isOpen() { + return open; + } public void setOpen(boolean open) { this.open = open; } @Override - public void open(HiveConf conf) throws IOException, - LoginException, URISyntaxException, TezException { - this.hiveConf = conf; - UserGroupInformation ugi; - ugi = ShimLoader.getHadoopShims().getUGIForConf(conf); - user = ShimLoader.getHadoopShims().getShortUserName(ugi); - } + public void open(HiveConf conf) throws IOException, LoginException, URISyntaxException, + TezException { + this.hiveConf = conf; + UserGroupInformation ugi; + ugi = ShimLoader.getHadoopShims().getUGIForConf(conf); + user = ShimLoader.getHadoopShims().getShortUserName(ugi); + this.doAsEnabled = conf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS); + } @Override - public void close(boolean keepTmpDir) throws TezException, IOException { - open = keepTmpDir; - } + public void close(boolean keepTmpDir) throws TezException, IOException { + open = keepTmpDir; + } + @Override public HiveConf getConf() { return this.hiveConf; } @Override - public String getSessionId() { - return sessionId; - } - + public String getSessionId() { + return sessionId; + } + + @Override public String getUser() { return user; } + + @Override + public boolean getDoAsEnabled() { + return this.doAsEnabled; + } } From 84b36b8b3a7f4c7a63a99b7dcf1dae4e68aa2678 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Tue, 21 Oct 2014 20:41:52 +0000 Subject: [PATCH 141/339] HIVE-8341: Transaction information in config file can grow excessively large (Alan Gates via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633456 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/common/ValidTxnListImpl.java | 64 ++++++++++++- .../org/apache/hadoop/hive/conf/HiveConf.java | 4 + .../hadoop/hive/common/TestValidTxnImpl.java | 94 +++++++++++++++++++ .../hadoop/hive/ql/exec/ScriptOperator.java | 41 ++++++-- .../queries/clientpositive/transform_acid.q | 13 +++ .../clientpositive/transform_acid.q.out | 31 ++++++ ql/src/test/scripts/transform_acid_grep.sh | 20 ++++ 7 files changed, 255 insertions(+), 12 deletions(-) create mode 100644 common/src/test/org/apache/hadoop/hive/common/TestValidTxnImpl.java create mode 100644 ql/src/test/queries/clientpositive/transform_acid.q create mode 100644 ql/src/test/results/clientpositive/transform_acid.q.out create mode 100644 ql/src/test/scripts/transform_acid_grep.sh diff --git a/common/src/java/org/apache/hadoop/hive/common/ValidTxnListImpl.java b/common/src/java/org/apache/hadoop/hive/common/ValidTxnListImpl.java index 26528f9b31ae..0a0e5d0a23cd 100644 --- a/common/src/java/org/apache/hadoop/hive/common/ValidTxnListImpl.java +++ b/common/src/java/org/apache/hadoop/hive/common/ValidTxnListImpl.java @@ -18,10 +18,23 @@ package org.apache.hadoop.hive.common; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.util.Arrays; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; public class ValidTxnListImpl implements ValidTxnList { + static final private Log LOG = LogFactory.getLog(ValidTxnListImpl.class.getName()); + final static private int MAX_UNCOMPRESSED_LENGTH = 256; + final static private char COMPRESSION_MARKER = 'C'; + final static private String STRING_ENCODING = "ISO-8859-1"; + private long[] exceptions; private long highWatermark; @@ -95,7 +108,25 @@ public String writeToString() { buf.append(except); } } - return buf.toString(); + if (buf.length() > MAX_UNCOMPRESSED_LENGTH) { + try { + ByteArrayOutputStream byteBuf = new ByteArrayOutputStream(); + GZIPOutputStream gzip = new GZIPOutputStream(byteBuf); + gzip.write(buf.toString().getBytes()); + gzip.close(); + StringBuilder buf2 = new StringBuilder(); + buf2.append(COMPRESSION_MARKER); + buf2.append(buf.length()); + buf2.append(':'); + buf2.append(byteBuf.toString(STRING_ENCODING)); + return buf2.toString(); + } catch (IOException e) { + LOG.error("Unable to compress transaction list, " + e.getMessage()); + throw new RuntimeException(e); + } + } else { + return buf.toString(); + } } @Override @@ -104,11 +135,36 @@ public void readFromString(String src) { highWatermark = Long.MAX_VALUE; exceptions = new long[0]; } else { - String[] values = src.split(":"); + String[] values; + if (src.charAt(0) == COMPRESSION_MARKER) { + try { + int colon = src.indexOf(':'); + int len = Integer.valueOf(src.substring(1, colon)); + ByteArrayInputStream byteBuf = + new ByteArrayInputStream(src.substring(colon + 1).getBytes(STRING_ENCODING)); + GZIPInputStream gzip = new GZIPInputStream(byteBuf); + byte[] buf = new byte[len]; + int bytesRead = 0; + int offset = 0; + int maxReadLen = len; + do { + bytesRead = gzip.read(buf, offset, maxReadLen); + offset += bytesRead; + maxReadLen -= bytesRead; + } while (maxReadLen > 0); + values = new String(buf).split(":"); + } catch (IOException e) { + LOG.error("Unable to decode compressed transaction list, " + e.getMessage()); + throw new RuntimeException(e); + } + + } else { + values = src.split(":"); + } highWatermark = Long.parseLong(values[0]); exceptions = new long[values.length - 1]; - for(int i = 1; i < values.length; ++i) { - exceptions[i-1] = Long.parseLong(values[i]); + for (int i = 1; i < values.length; ++i) { + exceptions[i - 1] = Long.parseLong(values[i]); } } } diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 750bab36db51..d6e579167b70 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -610,6 +610,10 @@ public static enum ConfVars { "transform function (the custom mapper/reducer that the user has specified in the query)"), HIVESCRIPTTRUNCATEENV("hive.script.operator.truncate.env", false, "Truncate each environment variable for external script in scripts operator to 20KB (to fit system limits)"), + HIVESCRIPT_ENV_BLACKLIST("hive.script.operator.env.blacklist", + "hive.txn.valid.txns,hive.script.operator.env.blacklist", + "Comma separated list of keys from the configuration file not to convert to environment " + + "variables when envoking the script operator"), HIVEMAPREDMODE("hive.mapred.mode", "nonstrict", "The mode in which the Hive operations are being performed. \n" + "In strict mode, some risky queries are not allowed to run. They include:\n" + diff --git a/common/src/test/org/apache/hadoop/hive/common/TestValidTxnImpl.java b/common/src/test/org/apache/hadoop/hive/common/TestValidTxnImpl.java new file mode 100644 index 000000000000..7a4539da9c0e --- /dev/null +++ b/common/src/test/org/apache/hadoop/hive/common/TestValidTxnImpl.java @@ -0,0 +1,94 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hive.common; + +import junit.framework.Assert; +import org.apache.hadoop.conf.Configuration; +import org.junit.Test; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; + +/** + * Tests for {@link org.apache.hadoop.hive.common.ValidTxnListImpl} + */ +public class TestValidTxnImpl { + + @Test + public void noExceptions() throws Exception { + ValidTxnList txnList = new ValidTxnListImpl(new long[0], 1); + String str = txnList.writeToString(); + Assert.assertEquals("1:", str); + ValidTxnList newList = new ValidTxnListImpl(); + newList.readFromString(str); + Assert.assertTrue(newList.isTxnCommitted(1)); + Assert.assertFalse(newList.isTxnCommitted(2)); + } + + @Test + public void exceptions() throws Exception { + ValidTxnList txnList = new ValidTxnListImpl(new long[]{2L,4L}, 5); + String str = txnList.writeToString(); + Assert.assertEquals("5:2:4", str); + ValidTxnList newList = new ValidTxnListImpl(); + newList.readFromString(str); + Assert.assertTrue(newList.isTxnCommitted(1)); + Assert.assertFalse(newList.isTxnCommitted(2)); + Assert.assertTrue(newList.isTxnCommitted(3)); + Assert.assertFalse(newList.isTxnCommitted(4)); + Assert.assertTrue(newList.isTxnCommitted(5)); + Assert.assertFalse(newList.isTxnCommitted(6)); + } + + @Test + public void longEnoughToCompress() throws Exception { + long[] exceptions = new long[1000]; + for (int i = 0; i < 1000; i++) exceptions[i] = i + 100; + ValidTxnList txnList = new ValidTxnListImpl(exceptions, 2000); + String str = txnList.writeToString(); + Assert.assertEquals('C', str.charAt(0)); + ValidTxnList newList = new ValidTxnListImpl(); + newList.readFromString(str); + for (int i = 0; i < 100; i++) Assert.assertTrue(newList.isTxnCommitted(i)); + for (int i = 100; i < 1100; i++) Assert.assertFalse(newList.isTxnCommitted(i)); + for (int i = 1100; i < 2001; i++) Assert.assertTrue(newList.isTxnCommitted(i)); + Assert.assertFalse(newList.isTxnCommitted(2001)); + } + + @Test + public void readWriteConfig() throws Exception { + long[] exceptions = new long[1000]; + for (int i = 0; i < 1000; i++) exceptions[i] = i + 100; + ValidTxnList txnList = new ValidTxnListImpl(exceptions, 2000); + String str = txnList.writeToString(); + Assert.assertEquals('C', str.charAt(0)); + Configuration conf = new Configuration(); + conf.set(ValidTxnList.VALID_TXNS_KEY, str); + File tmpFile = File.createTempFile("TestValidTxnImpl", "readWriteConfig"); + DataOutputStream out = new DataOutputStream(new FileOutputStream(tmpFile)); + conf.write(out); + out.close(); + DataInputStream in = new DataInputStream(new FileInputStream(tmpFile)); + Configuration newConf = new Configuration(); + newConf.readFields(in); + Assert.assertEquals(str, newConf.get(ValidTxnList.VALID_TXNS_KEY)); + } +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java index 9d171655668d..f386e5033773 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java @@ -27,8 +27,10 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.Iterator; import java.util.Map; +import java.util.Set; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.TimeUnit; @@ -82,6 +84,8 @@ public static enum Counter { transient Deserializer scriptOutputDeserializer; transient volatile Throwable scriptError = null; transient RecordWriter scriptOutWriter = null; + // List of conf entries not to turn into env vars + transient Set blackListedConfEntries = null; static final String IO_EXCEPTION_BROKEN_PIPE_STRING = "Broken pipe"; static final String IO_EXCEPTION_STREAM_CLOSED = "Stream closed"; @@ -119,7 +123,8 @@ String safeEnvVarName(String name) { /** * Most UNIX implementations impose some limit on the total size of environment variables and - * size of strings. To fit in this limit we need sometimes to truncate strings. + * size of strings. To fit in this limit we need sometimes to truncate strings. Also, + * some values tend be long and are meaningless to scripts, so strain them out. * @param value environment variable value to check * @param name name of variable (used only for logging purposes) * @param truncate truncate value or not @@ -138,6 +143,23 @@ String safeEnvVarValue(String value, String name, boolean truncate) { return value; } + boolean blackListed(String name) { + if (blackListedConfEntries == null) { + blackListedConfEntries = new HashSet(); + if (hconf != null) { + String bl = hconf.get(HiveConf.ConfVars.HIVESCRIPT_ENV_BLACKLIST.toString()); + if (bl != null && bl.length() > 0) { + String[] bls = bl.split(","); + for (String b : bls) { + b.replaceAll(".", "_"); + blackListedConfEntries.add(b); + } + } + } + } + return blackListedConfEntries.contains(name); + } + /** * addJobConfToEnvironment is mostly shamelessly copied from hadoop streaming. Added additional * check on environment variable length @@ -147,13 +169,16 @@ void addJobConfToEnvironment(Configuration conf, Map env) { while (it.hasNext()) { Map.Entry en = it.next(); String name = en.getKey(); - // String value = (String)en.getValue(); // does not apply variable - // expansion - String value = conf.get(name); // does variable expansion - name = safeEnvVarName(name); - boolean truncate = conf.getBoolean(HiveConf.ConfVars.HIVESCRIPTTRUNCATEENV.toString(), false); - value = safeEnvVarValue(value, name, truncate); - env.put(name, value); + if (!blackListed(name)) { + // String value = (String)en.getValue(); // does not apply variable + // expansion + String value = conf.get(name); // does variable expansion + name = safeEnvVarName(name); + boolean truncate = conf + .getBoolean(HiveConf.ConfVars.HIVESCRIPTTRUNCATEENV.toString(), false); + value = safeEnvVarValue(value, name, truncate); + env.put(name, value); + } } } diff --git a/ql/src/test/queries/clientpositive/transform_acid.q b/ql/src/test/queries/clientpositive/transform_acid.q new file mode 100644 index 000000000000..4cb9e38b4f37 --- /dev/null +++ b/ql/src/test/queries/clientpositive/transform_acid.q @@ -0,0 +1,13 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; + +-- EXCLUDE_OS_WINDOWS + +create table transform_acid(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true'); +insert into table transform_acid select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint < 0 order by cint limit 1; + + +ADD FILE ../../ql/src/test/scripts/transform_acid_grep.sh; + +SELECT transform(*) USING 'transform_acid_grep.sh' AS (col string) FROM transform_acid; diff --git a/ql/src/test/results/clientpositive/transform_acid.q.out b/ql/src/test/results/clientpositive/transform_acid.q.out new file mode 100644 index 000000000000..704a26198842 --- /dev/null +++ b/ql/src/test/results/clientpositive/transform_acid.q.out @@ -0,0 +1,31 @@ +PREHOOK: query: -- EXCLUDE_OS_WINDOWS + +create table transform_acid(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@transform_acid +POSTHOOK: query: -- EXCLUDE_OS_WINDOWS + +create table transform_acid(a int, b varchar(128)) clustered by (a) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@transform_acid +PREHOOK: query: insert into table transform_acid select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint < 0 order by cint limit 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@transform_acid +POSTHOOK: query: insert into table transform_acid select cint, cast(cstring1 as varchar(128)) from alltypesorc where cint < 0 order by cint limit 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@transform_acid +POSTHOOK: Lineage: transform_acid.a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: transform_acid.b EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: SELECT transform(*) USING 'transform_acid_grep.sh' AS (col string) FROM transform_acid +PREHOOK: type: QUERY +PREHOOK: Input: default@transform_acid +#### A masked pattern was here #### +POSTHOOK: query: SELECT transform(*) USING 'transform_acid_grep.sh' AS (col string) FROM transform_acid +POSTHOOK: type: QUERY +POSTHOOK: Input: default@transform_acid +#### A masked pattern was here #### +a diff --git a/ql/src/test/scripts/transform_acid_grep.sh b/ql/src/test/scripts/transform_acid_grep.sh new file mode 100644 index 000000000000..2b2001a21e22 --- /dev/null +++ b/ql/src/test/scripts/transform_acid_grep.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +env | grep hive.txn.valid.txns +echo a +exit 0 + From aa88274593adc489756ed2f330b935859720bc50 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Tue, 21 Oct 2014 21:12:49 +0000 Subject: [PATCH 142/339] HIVE-8168: With dynamic partition enabled fact table selectivity is not taken into account when generating the physical plan (Use CBO cardinality using physical plan generation) (Prasanth J via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633468 13f79535-47bb-0310-9956-ffa450edef68 --- data/files/customer_address.txt | 20 + data/files/store.txt | 12 + .../annotation/StatsRulesProcFactory.java | 182 +++- .../hadoop/hive/ql/plan/ColStatistics.java | 31 + .../hadoop/hive/ql/stats/StatsUtils.java | 59 ++ .../clientpositive/annotate_stats_join_pkfk.q | 123 +++ .../annotate_stats_join_pkfk.q.out | 987 ++++++++++++++++++ 7 files changed, 1393 insertions(+), 21 deletions(-) create mode 100644 data/files/customer_address.txt create mode 100644 data/files/store.txt create mode 100644 ql/src/test/queries/clientpositive/annotate_stats_join_pkfk.q create mode 100644 ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out diff --git a/data/files/customer_address.txt b/data/files/customer_address.txt new file mode 100644 index 000000000000..81e05afc945f --- /dev/null +++ b/data/files/customer_address.txt @@ -0,0 +1,20 @@ +1|AAAAAAAABAAAAAAA|18|Jackson |Parkway|Suite 280|Fairfield|Maricopa County|AZ|86192|United States|-7|condo| +2|AAAAAAAACAAAAAAA|362|Washington 6th|RD|Suite 80|Fairview|Taos County|NM|85709|United States|-7|condo| +3|AAAAAAAADAAAAAAA|585|Dogwood Washington|Circle|Suite Q|Pleasant Valley|York County|PA|12477|United States|-5|single family| +4|AAAAAAAAEAAAAAAA|111|Smith |Wy|Suite A|Oak Ridge|Kit Carson County|CO|88371|United States|-7|condo| +5|AAAAAAAAFAAAAAAA|31|College |Blvd|Suite 180|Glendale|Barry County|MO|63951|United States|-6|single family| +6|AAAAAAAAGAAAAAAA|59|Williams Sixth|Parkway|Suite 100|Lakeview|Chelan County|WA|98579|United States|-8|single family| +7|AAAAAAAAHAAAAAAA||Hill 7th|Road|Suite U|Farmington|||39145|United States||| +8|AAAAAAAAIAAAAAAA|875|Lincoln |Ct.|Suite Y|Union|Bledsoe County|TN|38721|United States|-5|apartment| +9|AAAAAAAAJAAAAAAA|819|1st Laurel|Ave|Suite 70|New Hope|Perry County|AL|39431|United States|-6|condo| +10|AAAAAAAAKAAAAAAA|851|Woodland Poplar|ST|Suite Y|Martinsville|Haines Borough|AK|90419|United States|-9|condo| +11|AAAAAAAALAAAAAAA|189|13th 2nd|Street|Suite 470|Maple Grove|Madison County|MT|68252|United States|-7|single family| +12|AAAAAAAAMAAAAAAA|76|Ash 8th|Ct.|Suite O|Edgewood|Mifflin County|PA|10069|United States|-5|apartment| +13|AAAAAAAANAAAAAAA|424|Main Second|Ln|Suite 130|Greenville|Noxubee County|MS|51387|United States|-6|single family| +14|AAAAAAAAOAAAAAAA|923|Pine Oak|Dr.|Suite 100||Lipscomb County|TX|77752||-6|| +15|AAAAAAAAPAAAAAAA|314|Spring |Ct.|Suite B|Oakland|Washington County|OH|49843|United States|-5|apartment| +16|AAAAAAAAABAAAAAA|576|Adams Center|Street|Suite J|Valley View|Oldham County|TX|75124|United States|-6|condo| +17|AAAAAAAABBAAAAAA|801|Green |Dr.|Suite 0|Montpelier|Richland County|OH|48930|United States|-5|single family| +18|AAAAAAAACBAAAAAA|460|Maple Spruce|Court|Suite 480|Somerville|Potter County|SD|57783|United States|-7|condo| +19|AAAAAAAADBAAAAAA|611|Wilson |Way|Suite O|Oakdale|Tangipahoa Parish|LA|79584|United States|-6|apartment| +20|AAAAAAAAEBAAAAAA|675|Elm Wilson|Street|Suite I|Hopewell|Williams County|OH|40587|United States|-5|condo| diff --git a/data/files/store.txt b/data/files/store.txt new file mode 100644 index 000000000000..078bafdd1e0e --- /dev/null +++ b/data/files/store.txt @@ -0,0 +1,12 @@ +1|AAAAAAAABAAAAAAA|1997-03-13||2451189|ought|245|5250760|8AM-4PM|William Ward|2|Unknown|Enough high areas stop expectations. Elaborate, local is|Charles Bartley|1|Unknown|1|Unknown|767|Spring |Wy|Suite 250|Midway|Williamson County|TN|31904|United States|-5|0.03| +2|AAAAAAAACAAAAAAA|1997-03-13|2000-03-12||able|236|5285950|8AM-4PM|Scott Smith|8|Unknown|Parliamentary candidates wait then heavy, keen mil|David Lamontagne|1|Unknown|1|Unknown|255|Sycamore |Dr.|Suite 410|Midway|Williamson County|TN|31904|United States|-5|0.03| +3|AAAAAAAACAAAAAAA|2000-03-13|||able|236|7557959|8AM-4PM|Scott Smith|7|Unknown|Impossible, true arms can treat constant, complete w|David Lamontagne|1|Unknown|1|Unknown|877|Park Laurel|Road|Suite T|Midway|Williamson County|TN|31904|United States|-5|0.03| +4|AAAAAAAAEAAAAAAA|1997-03-13|1999-03-13|2451044|ese|218|9341467|8AM-4PM|Edwin Adams|4|Unknown|Events would achieve other, eastern hours. Mechanisms must not eat other, new org|Thomas Pollack|1|Unknown|1|Unknown|27|Lake |Ln|Suite 260|Midway|Williamson County|TN|31904|United States|-5|0.03| +5|AAAAAAAAEAAAAAAA|1999-03-14|2001-03-12|2450910|anti|288|9078805|8AM-4PM|Edwin Adams|8|Unknown|Events would achieve other, eastern hours. Mechanisms must not eat other, new org|Thomas Pollack|1|Unknown|1|Unknown|27|Lee 6th|Court|Suite 80|Fairview|Williamson County|TN|35709|United States|-5|0.03| +6|AAAAAAAAEAAAAAAA|2001-03-13|||cally|229|9026222|8AM-4PM|Edwin Adams|10|Unknown|Events would achieve other, eastern hours. Mechanisms must not eat other, new org|Thomas Pollack|1|Unknown|1|Unknown|220|6th |Lane|Suite 140|Midway|Williamson County|TN|31904|United States|-5|0.03| +7|AAAAAAAAHAAAAAAA|1997-03-13|||ation|297|8954883|8AM-4PM|David Thomas|9|Unknown|Architects coul|Thomas Benton|1|Unknown|1|Unknown|811|Lee |Circle|Suite T|Midway|Williamson County|TN|31904|United States|-5|0.01| +8|AAAAAAAAIAAAAAAA|1997-03-13|2000-03-12||eing|278|6995995|8AM-4PM|Brett Yates|2|Unknown|Various bars make most. Difficult levels introduce at a boots. Buildings welcome only never el|Dean Morrison|1|Unknown|1|Unknown|226|12th |Lane|Suite D|Fairview|Williamson County|TN|35709|United States|-5|0.08| +9|AAAAAAAAIAAAAAAA|2000-03-13|||eing|271|6995995|8AM-4PM|Brett Yates|2|Unknown|Formal, psychological pounds relate reasonable, young principles. Black, |Dean Morrison|1|Unknown|1|Unknown|226|Hill |Boulevard|Suite 190|Midway|Williamson County|TN|31904|United States|-5|0.08| +10|AAAAAAAAKAAAAAAA|1997-03-13|1999-03-13||bar|294|9294113|8AM-4PM|Raymond Jacobs|8|Unknown|Little expectations include yet forward meetings.|Michael Wilson|1|Unknown|1|Unknown|175|4th |Court|Suite C|Midway|Williamson County|TN|31904|United States|-5|0.06| +11|AAAAAAAAKAAAAAAA|1999-03-14|2001-03-12||ought|294|9294113|8AM-4PM|Raymond Jacobs|6|Unknown|Mysterious employe|Michael Wilson|1|Unknown|1|Unknown|175|Park Green|Court|Suite 160|Midway|Williamson County|TN|31904|United States|-5|0.11| +12|AAAAAAAAKAAAAAAA|2001-03-13|||ought|294|5219562|8AM-12AM|Robert Thompson|6|Unknown|Events develop i|Dustin Kelly|1|Unknown|1|Unknown|337|College |Boulevard|Suite 100|Fairview|Williamson County|TN|31904|United States|-5|0.01| diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java index a147a4510ced..1feb1fd361d3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java @@ -1021,11 +1021,17 @@ private long applyGBYRule(long numRows, long dvProd) { */ public static class JoinStatsRule extends DefaultStatsRule implements NodeProcessor { + private boolean pkfkInferred = false; + private long newNumRows = 0; + private List> parents; + private CommonJoinOperator jop; + private int numAttr = 1; + @Override public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, Object... nodeOutputs) throws SemanticException { - CommonJoinOperator jop = (CommonJoinOperator) nd; - List> parents = jop.getParentOperators(); + jop = (CommonJoinOperator) nd; + parents = jop.getParentOperators(); AnnotateStatsProcCtx aspCtx = (AnnotateStatsProcCtx) procCtx; HiveConf conf = aspCtx.getConf(); boolean allStatsAvail = true; @@ -1052,22 +1058,25 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, Statistics stats = new Statistics(); Map rowCountParents = new HashMap(); List distinctVals = Lists.newArrayList(); - - // 2 relations, multiple attributes - boolean multiAttr = false; - int numAttr = 1; int numParent = parents.size(); - Map joinedColStats = Maps.newHashMap(); Map> joinKeys = Maps.newHashMap(); List rowCounts = Lists.newArrayList(); + // detect if there are multiple attributes in join key + ReduceSinkOperator rsOp = (ReduceSinkOperator) jop.getParentOperators().get(0); + List keyExprs = rsOp.getConf().getKeyCols(); + numAttr = keyExprs.size(); + + // infer PK-FK relationship in single attribute join case + inferPKFKRelationship(); + // get the join keys from parent ReduceSink operators for (int pos = 0; pos < parents.size(); pos++) { ReduceSinkOperator parent = (ReduceSinkOperator) jop.getParentOperators().get(pos); Statistics parentStats = parent.getStatistics(); - List keyExprs = parent.getConf().getKeyCols(); + keyExprs = parent.getConf().getKeyCols(); // Parent RS may have column statistics from multiple parents. // Populate table alias to row count map, this will be used later to @@ -1082,12 +1091,6 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, } rowCounts.add(parentStats.getNumRows()); - // multi-attribute join key - if (keyExprs.size() > 1) { - multiAttr = true; - numAttr = keyExprs.size(); - } - // compute fully qualified join key column names. this name will be // used to quickly look-up for column statistics of join key. // TODO: expressions in join condition will be ignored. assign @@ -1110,7 +1113,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // attribute join, else max(V(R,y1), V(S,y1)) * max(V(R,y2), V(S,y2)) // in case of multi-attribute join long denom = 1; - if (multiAttr) { + if (numAttr > 1) { List perAttrDVs = Lists.newArrayList(); for (int idx = 0; idx < numAttr; idx++) { for (Integer i : joinKeys.keySet()) { @@ -1149,9 +1152,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, } // Update NDV of joined columns to be min(V(R,y), V(S,y)) - if (multiAttr) { - updateJoinColumnsNDV(joinKeys, joinedColStats, numAttr); - } + updateJoinColumnsNDV(joinKeys, joinedColStats, numAttr); // column statistics from different sources are put together and rename // fully qualified column names based on output schema of join operator @@ -1181,10 +1182,9 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // update join statistics stats.setColumnStats(outColStats); - long newRowCount = computeNewRowCount(rowCounts, denom); + long newRowCount = pkfkInferred ? newNumRows : computeNewRowCount(rowCounts, denom); - updateStatsForJoinType(stats, newRowCount, jop, rowCountParents, - outInTabAlias); + updateStatsForJoinType(stats, newRowCount, jop, rowCountParents,outInTabAlias); jop.setStatistics(stats); if (isDebugEnabled) { @@ -1229,6 +1229,146 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, return null; } + private void inferPKFKRelationship() { + if (numAttr == 1) { + List parentsWithPK = getPrimaryKeyCandidates(parents); + + // in case of fact to many dimensional tables join, the join key in fact table will be + // mostly foreign key which will have corresponding primary key in dimension table. + // The selectivity of fact table in that case will be product of all selectivities of + // dimension tables (assumes conjunctivity) + for (Integer id : parentsWithPK) { + ColStatistics csPK = null; + Operator parent = parents.get(id); + for (ColStatistics cs : parent.getStatistics().getColumnStats()) { + if (cs.isPrimaryKey()) { + csPK = cs; + break; + } + } + + // infer foreign key candidates positions + List parentsWithFK = getForeignKeyCandidates(parents, csPK); + if (parentsWithFK.size() == 1 && + parentsWithFK.size() + parentsWithPK.size() == parents.size()) { + Operator parentWithFK = parents.get(parentsWithFK.get(0)); + List parentsSel = getSelectivity(parents, parentsWithPK); + Float prodSelectivity = 1.0f; + for (Float selectivity : parentsSel) { + prodSelectivity *= selectivity; + } + newNumRows = (long) (parentWithFK.getStatistics().getNumRows() * prodSelectivity); + pkfkInferred = true; + + // some debug information + if (isDebugEnabled) { + List parentIds = Lists.newArrayList(); + + // print primary key containing parents + for (Integer i : parentsWithPK) { + parentIds.add(parents.get(i).toString()); + } + LOG.debug("STATS-" + jop.toString() + ": PK parent id(s) - " + parentIds); + parentIds.clear(); + + // print foreign key containing parents + for (Integer i : parentsWithFK) { + parentIds.add(parents.get(i).toString()); + } + LOG.debug("STATS-" + jop.toString() + ": FK parent id(s) - " + parentIds); + } + } + } + } + } + + /** + * Get selectivity of reduce sink operators. + * @param ops - reduce sink operators + * @param opsWithPK - reduce sink operators with primary keys + * @return - list of selectivity for primary key containing operators + */ + private List getSelectivity(List> ops, + List opsWithPK) { + List result = Lists.newArrayList(); + for (Integer idx : opsWithPK) { + Operator op = ops.get(idx); + TableScanOperator tsOp = OperatorUtils + .findSingleOperatorUpstream(op, TableScanOperator.class); + long inputRow = tsOp.getStatistics().getNumRows(); + long outputRow = op.getStatistics().getNumRows(); + result.add((float) outputRow / (float) inputRow); + } + return result; + } + + /** + * Returns the index of parents whose join key column statistics ranges are within the specified + * primary key range (inferred as foreign keys). + * @param ops - operators + * @param csPK - column statistics of primary key + * @return - list of foreign key containing parent ids + */ + private List getForeignKeyCandidates(List> ops, + ColStatistics csPK) { + List result = Lists.newArrayList(); + if (csPK == null || ops == null) { + return result; + } + + for (int i = 0; i < ops.size(); i++) { + Operator op = ops.get(i); + if (op != null && op instanceof ReduceSinkOperator) { + ReduceSinkOperator rsOp = (ReduceSinkOperator) op; + List keys = rsOp.getConf().getKeyCols(); + List fqCols = StatsUtils.getFullQualifedColNameFromExprs(keys, + rsOp.getColumnExprMap()); + if (fqCols.size() == 1) { + String joinCol = fqCols.get(0); + if (rsOp.getStatistics() != null) { + ColStatistics cs = rsOp.getStatistics().getColumnStatisticsFromFQColName(joinCol); + if (cs != null && !cs.isPrimaryKey()) { + if (StatsUtils.inferForeignKey(csPK, cs)) { + result.add(i); + } + } + } + } + } + } + return result; + } + + /** + * Returns the index of parents whose join key columns are infer as primary keys + * @param ops - operators + * @return - list of primary key containing parent ids + */ + private List getPrimaryKeyCandidates(List> ops) { + List result = Lists.newArrayList(); + if (ops != null || !ops.isEmpty()) { + for (int i = 0; i < ops.size(); i++) { + Operator op = ops.get(i); + if (op instanceof ReduceSinkOperator) { + ReduceSinkOperator rsOp = (ReduceSinkOperator) op; + List keys = rsOp.getConf().getKeyCols(); + List fqCols = StatsUtils.getFullQualifedColNameFromExprs(keys, + rsOp.getColumnExprMap()); + if (fqCols.size() == 1) { + String joinCol = fqCols.get(0); + if (rsOp.getStatistics() != null) { + ColStatistics cs = rsOp.getStatistics().getColumnStatisticsFromFQColName(joinCol); + if (cs != null && cs.isPrimaryKey()) { + result.add(i); + } + } + } + } + } + } + return result; + } + private Long getEasedOutDenominator(List distinctVals) { // Exponential back-off for NDVs. // 1) Descending order sort of NDVs diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ColStatistics.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ColStatistics.java index d1b7dea72e18..c42019058ecd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ColStatistics.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ColStatistics.java @@ -33,12 +33,14 @@ public class ColStatistics { private long numTrues; private long numFalses; private Range range; + private boolean isPrimaryKey; public ColStatistics(String tabAlias, String colName, String colType) { this.setTableAlias(tabAlias); this.setColumnName(colName); this.setColumnType(colType); this.setFullyQualifiedColName(StatsUtils.getFullyQualifiedColumnName(tabAlias, colName)); + this.setPrimaryKey(false); } public ColStatistics() { @@ -150,6 +152,12 @@ public String toString() { sb.append(numTrues); sb.append(" numFalses: "); sb.append(numFalses); + if (range != null) { + sb.append(" "); + sb.append(range); + } + sb.append(" isPrimaryKey: "); + sb.append(isPrimaryKey); return sb.toString(); } @@ -162,24 +170,47 @@ public ColStatistics clone() throws CloneNotSupportedException { clone.setNumNulls(numNulls); clone.setNumTrues(numTrues); clone.setNumFalses(numFalses); + clone.setPrimaryKey(isPrimaryKey); if (range != null ) { clone.setRange(range.clone()); } return clone; } + public boolean isPrimaryKey() { + return isPrimaryKey; + } + + public void setPrimaryKey(boolean isPrimaryKey) { + this.isPrimaryKey = isPrimaryKey; + } + public static class Range { public final Number minValue; public final Number maxValue; + Range(Number minValue, Number maxValue) { super(); this.minValue = minValue; this.maxValue = maxValue; } + @Override public Range clone() { return new Range(minValue, maxValue); } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("Range: ["); + sb.append(" min: "); + sb.append(minValue); + sb.append(" max: "); + sb.append(maxValue); + sb.append(" ]"); + return sb.toString(); + } } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java index eb46e3264fe7..d42ede4f6d0c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java @@ -177,6 +177,9 @@ public static Statistics collectStatistics(HiveConf conf, PrunedPartitionList pa colStats = getTableColumnStats(table, schema, neededColumns); } + // infer if any column can be primary key based on column statistics + inferAndSetPrimaryKey(stats.getNumRows(), colStats); + stats.setColumnStatsState(deriveStatType(colStats, neededColumns)); stats.addToColumnStats(colStats); } else if (partList != null) { @@ -263,6 +266,9 @@ public static Statistics collectStatistics(HiveConf conf, PrunedPartitionList pa addParitionColumnStats(neededColumns, referencedColumns, schema, table, partList, columnStats); + // infer if any column can be primary key based on column statistics + inferAndSetPrimaryKey(stats.getNumRows(), columnStats); + stats.addToColumnStats(columnStats); State colState = deriveStatType(columnStats, referencedColumns); if (aggrStats.getPartsFound() != partNames.size() && colState != State.NONE) { @@ -277,6 +283,58 @@ public static Statistics collectStatistics(HiveConf conf, PrunedPartitionList pa return stats; } + + /** + * Based on the provided column statistics and number of rows, this method infers if the column + * can be primary key. It checks if the difference between the min and max value is equal to + * number of rows specified. + * @param numRows - number of rows + * @param colStats - column statistics + */ + public static void inferAndSetPrimaryKey(long numRows, List colStats) { + if (colStats != null) { + for (ColStatistics cs : colStats) { + if (cs != null && cs.getRange() != null && cs.getRange().minValue != null && + cs.getRange().maxValue != null) { + if (numRows == + ((cs.getRange().maxValue.longValue() - cs.getRange().minValue.longValue()) + 1)) { + cs.setPrimaryKey(true); + } + } + } + } + } + + /** + * Infer foreign key relationship from given column statistics. + * @param csPK - column statistics of primary key + * @param csFK - column statistics of potential foreign key + * @return + */ + public static boolean inferForeignKey(ColStatistics csPK, ColStatistics csFK) { + if (csPK != null && csFK != null) { + if (csPK.isPrimaryKey()) { + if (csPK.getRange() != null && csFK.getRange() != null) { + ColStatistics.Range pkRange = csPK.getRange(); + ColStatistics.Range fkRange = csFK.getRange(); + return isWithin(fkRange, pkRange); + } + } + } + return false; + } + + private static boolean isWithin(ColStatistics.Range range1, ColStatistics.Range range2) { + if (range1.minValue != null && range2.minValue != null && range1.maxValue != null && + range2.maxValue != null) { + if (range1.minValue.longValue() >= range2.minValue.longValue() && + range1.maxValue.longValue() <= range2.maxValue.longValue()) { + return true; + } + } + return false; + } + private static void addParitionColumnStats(List neededColumns, List referencedColumns, List schema, Table table, PrunedPartitionList partList, List colStats) @@ -533,6 +591,7 @@ public static ColStatistics getColStatistics(ColumnStatisticsObj cso, String tab // Columns statistics for complex datatypes are not supported yet return null; } + return cs; } diff --git a/ql/src/test/queries/clientpositive/annotate_stats_join_pkfk.q b/ql/src/test/queries/clientpositive/annotate_stats_join_pkfk.q new file mode 100644 index 000000000000..aa62c60656c8 --- /dev/null +++ b/ql/src/test/queries/clientpositive/annotate_stats_join_pkfk.q @@ -0,0 +1,123 @@ +set hive.stats.fetch.column.stats=true; + +drop table store_sales; +drop table store; +drop table customer_address; + +-- s_store_sk is PK, ss_store_sk is FK +-- ca_address_sk is PK, ss_addr_sk is FK + +create table store_sales +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +row format delimited fields terminated by '|'; + +create table store +( + s_store_sk int, + s_store_id string, + s_rec_start_date string, + s_rec_end_date string, + s_closed_date_sk int, + s_store_name string, + s_number_employees int, + s_floor_space int, + s_hours string, + s_manager string, + s_market_id int, + s_geography_class string, + s_market_desc string, + s_market_manager string, + s_division_id int, + s_division_name string, + s_company_id int, + s_company_name string, + s_street_number string, + s_street_name string, + s_street_type string, + s_suite_number string, + s_city string, + s_county string, + s_state string, + s_zip string, + s_country string, + s_gmt_offset float, + s_tax_precentage float +) +row format delimited fields terminated by '|'; + +create table customer_address +( + ca_address_sk int, + ca_address_id string, + ca_street_number string, + ca_street_name string, + ca_street_type string, + ca_suite_number string, + ca_city string, + ca_county string, + ca_state string, + ca_zip string, + ca_country string, + ca_gmt_offset float, + ca_location_type string +) +row format delimited fields terminated by '|'; + +load data local inpath '../../data/files/store.txt' overwrite into table store; +load data local inpath '../../data/files/store_sales.txt' overwrite into table store_sales; +load data local inpath '../../data/files/customer_address.txt' overwrite into table customer_address; + +analyze table store compute statistics; +analyze table store compute statistics for columns s_store_sk, s_floor_space; +analyze table store_sales compute statistics; +analyze table store_sales compute statistics for columns ss_store_sk, ss_addr_sk, ss_quantity; +analyze table customer_address compute statistics; +analyze table customer_address compute statistics for columns ca_address_sk; + +explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk); + +explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where s.s_store_sk > 0; + +explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where s.s_company_id > 0 and ss.ss_quantity > 10; + +explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where s.s_floor_space > 0; + +explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where ss.ss_quantity > 10; + +explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk); + +explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) where s.s_store_sk > 1000; + +explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) where s.s_floor_space > 1000; + +explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) where ss.ss_quantity > 10; + +explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join customer_address ca on (ca.ca_address_sk = ss.ss_addr_sk); + +drop table store_sales; +drop table store; +drop table customer_address; diff --git a/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out b/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out new file mode 100644 index 000000000000..040dd4efca28 --- /dev/null +++ b/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out @@ -0,0 +1,987 @@ +PREHOOK: query: drop table store_sales +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table store_sales +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table store +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table store +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table customer_address +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table customer_address +POSTHOOK: type: DROPTABLE +PREHOOK: query: -- s_store_sk is PK, ss_store_sk is FK +-- ca_address_sk is PK, ss_addr_sk is FK + +create table store_sales +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +row format delimited fields terminated by '|' +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@store_sales +POSTHOOK: query: -- s_store_sk is PK, ss_store_sk is FK +-- ca_address_sk is PK, ss_addr_sk is FK + +create table store_sales +( + ss_sold_date_sk int, + ss_sold_time_sk int, + ss_item_sk int, + ss_customer_sk int, + ss_cdemo_sk int, + ss_hdemo_sk int, + ss_addr_sk int, + ss_store_sk int, + ss_promo_sk int, + ss_ticket_number int, + ss_quantity int, + ss_wholesale_cost float, + ss_list_price float, + ss_sales_price float, + ss_ext_discount_amt float, + ss_ext_sales_price float, + ss_ext_wholesale_cost float, + ss_ext_list_price float, + ss_ext_tax float, + ss_coupon_amt float, + ss_net_paid float, + ss_net_paid_inc_tax float, + ss_net_profit float +) +row format delimited fields terminated by '|' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@store_sales +PREHOOK: query: create table store +( + s_store_sk int, + s_store_id string, + s_rec_start_date string, + s_rec_end_date string, + s_closed_date_sk int, + s_store_name string, + s_number_employees int, + s_floor_space int, + s_hours string, + s_manager string, + s_market_id int, + s_geography_class string, + s_market_desc string, + s_market_manager string, + s_division_id int, + s_division_name string, + s_company_id int, + s_company_name string, + s_street_number string, + s_street_name string, + s_street_type string, + s_suite_number string, + s_city string, + s_county string, + s_state string, + s_zip string, + s_country string, + s_gmt_offset float, + s_tax_precentage float +) +row format delimited fields terminated by '|' +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@store +POSTHOOK: query: create table store +( + s_store_sk int, + s_store_id string, + s_rec_start_date string, + s_rec_end_date string, + s_closed_date_sk int, + s_store_name string, + s_number_employees int, + s_floor_space int, + s_hours string, + s_manager string, + s_market_id int, + s_geography_class string, + s_market_desc string, + s_market_manager string, + s_division_id int, + s_division_name string, + s_company_id int, + s_company_name string, + s_street_number string, + s_street_name string, + s_street_type string, + s_suite_number string, + s_city string, + s_county string, + s_state string, + s_zip string, + s_country string, + s_gmt_offset float, + s_tax_precentage float +) +row format delimited fields terminated by '|' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@store +PREHOOK: query: create table customer_address +( + ca_address_sk int, + ca_address_id string, + ca_street_number string, + ca_street_name string, + ca_street_type string, + ca_suite_number string, + ca_city string, + ca_county string, + ca_state string, + ca_zip string, + ca_country string, + ca_gmt_offset float, + ca_location_type string +) +row format delimited fields terminated by '|' +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@customer_address +POSTHOOK: query: create table customer_address +( + ca_address_sk int, + ca_address_id string, + ca_street_number string, + ca_street_name string, + ca_street_type string, + ca_suite_number string, + ca_city string, + ca_county string, + ca_state string, + ca_zip string, + ca_country string, + ca_gmt_offset float, + ca_location_type string +) +row format delimited fields terminated by '|' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@customer_address +PREHOOK: query: load data local inpath '../../data/files/store.txt' overwrite into table store +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@store +POSTHOOK: query: load data local inpath '../../data/files/store.txt' overwrite into table store +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@store +PREHOOK: query: load data local inpath '../../data/files/store_sales.txt' overwrite into table store_sales +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@store_sales +POSTHOOK: query: load data local inpath '../../data/files/store_sales.txt' overwrite into table store_sales +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@store_sales +PREHOOK: query: load data local inpath '../../data/files/customer_address.txt' overwrite into table customer_address +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@customer_address +POSTHOOK: query: load data local inpath '../../data/files/customer_address.txt' overwrite into table customer_address +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@customer_address +PREHOOK: query: analyze table store compute statistics +PREHOOK: type: QUERY +PREHOOK: Input: default@store +PREHOOK: Output: default@store +POSTHOOK: query: analyze table store compute statistics +POSTHOOK: type: QUERY +POSTHOOK: Input: default@store +POSTHOOK: Output: default@store +PREHOOK: query: analyze table store compute statistics for columns s_store_sk, s_floor_space +PREHOOK: type: QUERY +PREHOOK: Input: default@store +#### A masked pattern was here #### +POSTHOOK: query: analyze table store compute statistics for columns s_store_sk, s_floor_space +POSTHOOK: type: QUERY +POSTHOOK: Input: default@store +#### A masked pattern was here #### +PREHOOK: query: analyze table store_sales compute statistics +PREHOOK: type: QUERY +PREHOOK: Input: default@store_sales +PREHOOK: Output: default@store_sales +POSTHOOK: query: analyze table store_sales compute statistics +POSTHOOK: type: QUERY +POSTHOOK: Input: default@store_sales +POSTHOOK: Output: default@store_sales +PREHOOK: query: analyze table store_sales compute statistics for columns ss_store_sk, ss_addr_sk, ss_quantity +PREHOOK: type: QUERY +PREHOOK: Input: default@store_sales +#### A masked pattern was here #### +POSTHOOK: query: analyze table store_sales compute statistics for columns ss_store_sk, ss_addr_sk, ss_quantity +POSTHOOK: type: QUERY +POSTHOOK: Input: default@store_sales +#### A masked pattern was here #### +PREHOOK: query: analyze table customer_address compute statistics +PREHOOK: type: QUERY +PREHOOK: Input: default@customer_address +PREHOOK: Output: default@customer_address +POSTHOOK: query: analyze table customer_address compute statistics +POSTHOOK: type: QUERY +POSTHOOK: Input: default@customer_address +POSTHOOK: Output: default@customer_address +PREHOOK: query: analyze table customer_address compute statistics for columns ca_address_sk +PREHOOK: type: QUERY +PREHOOK: Input: default@customer_address +#### A masked pattern was here #### +POSTHOOK: query: analyze table customer_address compute statistics for columns ca_address_sk +POSTHOOK: type: QUERY +POSTHOOK: Input: default@customer_address +#### A masked pattern was here #### +PREHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) +PREHOOK: type: QUERY +POSTHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: s + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: s_store_sk is not null (type: boolean) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: ss + Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: ss_store_sk is not null (type: boolean) + Statistics: Num rows: 964 Data size: 3716 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 964 Data size: 3716 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 + outputColumnNames: _col0 + Statistics: Num rows: 964 Data size: 3856 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 964 Data size: 3856 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 964 Data size: 3856 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where s.s_store_sk > 0 +PREHOOK: type: QUERY +POSTHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where s.s_store_sk > 0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: s + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (s_store_sk is not null and (s_store_sk > 0)) (type: boolean) + Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: ss + Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (ss_store_sk is not null and (ss_store_sk > 0)) (type: boolean) + Statistics: Num rows: 321 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 321 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 + outputColumnNames: _col0 + Statistics: Num rows: 107 Data size: 428 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 107 Data size: 428 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 107 Data size: 428 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where s.s_company_id > 0 and ss.ss_quantity > 10 +PREHOOK: type: QUERY +POSTHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where s.s_company_id > 0 and ss.ss_quantity > 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: s + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: PARTIAL + Filter Operator + predicate: (s_store_sk is not null and (s_company_id > 0)) (type: boolean) + Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: PARTIAL + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: PARTIAL + TableScan + alias: ss + Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (ss_store_sk is not null and (ss_quantity > 10)) (type: boolean) + Statistics: Num rows: 321 Data size: 2460 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 321 Data size: 2460 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 + outputColumnNames: _col0 + Statistics: Num rows: 107 Data size: 428 Basic stats: COMPLETE Column stats: PARTIAL + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 107 Data size: 428 Basic stats: COMPLETE Column stats: PARTIAL + File Output Operator + compressed: false + Statistics: Num rows: 107 Data size: 428 Basic stats: COMPLETE Column stats: PARTIAL + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where s.s_floor_space > 0 +PREHOOK: type: QUERY +POSTHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where s.s_floor_space > 0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: s + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (s_store_sk is not null and (s_floor_space > 0)) (type: boolean) + Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: ss + Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: ss_store_sk is not null (type: boolean) + Statistics: Num rows: 964 Data size: 3716 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 964 Data size: 3716 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 + outputColumnNames: _col0 + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where ss.ss_quantity > 10 +PREHOOK: type: QUERY +POSTHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) where ss.ss_quantity > 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: s + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: s_store_sk is not null (type: boolean) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: ss + Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (ss_store_sk is not null and (ss_quantity > 10)) (type: boolean) + Statistics: Num rows: 321 Data size: 2460 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 321 Data size: 2460 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 + outputColumnNames: _col0 + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) +PREHOOK: type: QUERY +POSTHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: s1 + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: s_store_sk is not null (type: boolean) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: s + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: s_store_sk is not null (type: boolean) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: ss + Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: ss_store_sk is not null (type: boolean) + Statistics: Num rows: 964 Data size: 3716 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 964 Data size: 3716 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 + 2 + outputColumnNames: _col0 + Statistics: Num rows: 964 Data size: 3856 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 964 Data size: 3856 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 964 Data size: 3856 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) where s.s_store_sk > 1000 +PREHOOK: type: QUERY +POSTHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) where s.s_store_sk > 1000 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: s1 + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (s_store_sk is not null and (s_store_sk > 1000)) (type: boolean) + Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: s + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (s_store_sk is not null and (s_store_sk > 1000)) (type: boolean) + Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: ss + Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (ss_store_sk is not null and (ss_store_sk > 1000)) (type: boolean) + Statistics: Num rows: 321 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 321 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 + 2 + outputColumnNames: _col0 + Statistics: Num rows: 35 Data size: 140 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 35 Data size: 140 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 35 Data size: 140 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) where s.s_floor_space > 1000 +PREHOOK: type: QUERY +POSTHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) where s.s_floor_space > 1000 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: s1 + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: s_store_sk is not null (type: boolean) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: s + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (s_store_sk is not null and (s_floor_space > 1000)) (type: boolean) + Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: ss + Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: ss_store_sk is not null (type: boolean) + Statistics: Num rows: 964 Data size: 3716 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 964 Data size: 3716 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 + 2 + outputColumnNames: _col0 + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) where ss.ss_quantity > 10 +PREHOOK: type: QUERY +POSTHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join store s1 on (s1.s_store_sk = ss.ss_store_sk) where ss.ss_quantity > 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: s1 + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: s_store_sk is not null (type: boolean) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: s + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: s_store_sk is not null (type: boolean) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: ss + Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (ss_store_sk is not null and (ss_quantity > 10)) (type: boolean) + Statistics: Num rows: 321 Data size: 2460 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 321 Data size: 2460 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 + 2 + outputColumnNames: _col0 + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join customer_address ca on (ca.ca_address_sk = ss.ss_addr_sk) +PREHOOK: type: QUERY +POSTHOOK: query: explain select s.s_store_sk from store s join store_sales ss on (s.s_store_sk = ss.ss_store_sk) join customer_address ca on (ca.ca_address_sk = ss.ss_addr_sk) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-2 is a root stage + Stage-1 depends on stages: Stage-2 + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + alias: s + Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: s_store_sk is not null (type: boolean) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: s_store_sk (type: int) + sort order: + + Map-reduce partition columns: s_store_sk (type: int) + Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + alias: ss + Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: (ss_store_sk is not null and ss_addr_sk is not null) (type: boolean) + Statistics: Num rows: 916 Data size: 7012 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ss_store_sk (type: int) + sort order: + + Map-reduce partition columns: ss_store_sk (type: int) + Statistics: Num rows: 916 Data size: 7012 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: ss_addr_sk (type: int) + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 {VALUE._col6} + outputColumnNames: _col0, _col38 + Statistics: Num rows: 916 Data size: 7328 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: ca + Statistics: Num rows: 20 Data size: 2114 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: ca_address_sk is not null (type: boolean) + Statistics: Num rows: 20 Data size: 80 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: ca_address_sk (type: int) + sort order: + + Map-reduce partition columns: ca_address_sk (type: int) + Statistics: Num rows: 20 Data size: 80 Basic stats: COMPLETE Column stats: COMPLETE + TableScan + Reduce Output Operator + key expressions: _col38 (type: int) + sort order: + + Map-reduce partition columns: _col38 (type: int) + Statistics: Num rows: 916 Data size: 7328 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col0 (type: int) + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {VALUE._col0} + 1 + outputColumnNames: _col0 + Statistics: Num rows: 916 Data size: 3664 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 916 Data size: 3664 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 916 Data size: 3664 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: drop table store_sales +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@store_sales +PREHOOK: Output: default@store_sales +POSTHOOK: query: drop table store_sales +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@store_sales +POSTHOOK: Output: default@store_sales +PREHOOK: query: drop table store +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@store +PREHOOK: Output: default@store +POSTHOOK: query: drop table store +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@store +POSTHOOK: Output: default@store +PREHOOK: query: drop table customer_address +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@customer_address +PREHOOK: Output: default@customer_address +POSTHOOK: query: drop table customer_address +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@customer_address +POSTHOOK: Output: default@customer_address From 83818b9c01490f59d62d1a2f9a490c8121dc2b1b Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Tue, 21 Oct 2014 23:31:00 +0000 Subject: [PATCH 143/339] HIVE-8390 : CBO produces annoying exception message and wraps exceptions too much (Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633485 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/parse/SemanticAnalyzer.java | 95 +++++++++++++++++-- 1 file changed, 86 insertions(+), 9 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 85b09ca2ad49..1b7a41d56345 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -22,6 +22,9 @@ import java.io.IOException; import java.io.Serializable; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.UndeclaredThrowableException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; @@ -9940,13 +9943,21 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { * .getRowResolver(), true); */ } catch (Exception e) { - LOG.error("CBO failed, skipping CBO. ", e); - if (!conf.getBoolVar(ConfVars.HIVE_IN_TEST) || - (optiqPlanner.noColsMissingStats.get() > 0) || - e instanceof OptiqSemanticException) { + boolean isMissingStats = optiqPlanner.noColsMissingStats.get() > 0; + if (isMissingStats) { + LOG.error("CBO failed due to missing column stats (see previous errors), skipping CBO"); + } else { + LOG.error("CBO failed, skipping CBO. ", e); + } + if (!conf.getBoolVar(ConfVars.HIVE_IN_TEST) || isMissingStats + || e instanceof OptiqSemanticException) { reAnalyzeAST = true; + } else if (e instanceof SemanticException) { + throw (SemanticException)e; + } else if (e instanceof RuntimeException) { + throw (RuntimeException)e; } else { - throw e instanceof SemanticException ? (SemanticException) e : new SemanticException(e); + throw new SemanticException(e); } } finally { runCBO = false; @@ -12259,16 +12270,50 @@ private ASTNode getOptimizedAST(Map partitionCache) optimizedOptiqPlan = Frameworks.withPlanner(this, Frameworks.newConfigBuilder().typeSystem(new HiveTypeSystemImpl()).build()); } catch (Exception e) { - if (semanticException != null) - throw semanticException; - else - throw new RuntimeException(e); + rethrowCalciteException(e); + throw new AssertionError("rethrowCalciteException didn't throw for " + e.getMessage()); } optiqOptimizedAST = ASTConverter.convert(optimizedOptiqPlan, topLevelFieldSchema); return optiqOptimizedAST; } + /* + * Unwraps a chain of useless UndeclaredThrowableException-s, InvocationTargetException-s + * and RuntimeException-s potentially coming from CBO/Calcite code. + */ + private void rethrowCalciteException(Exception e) throws SemanticException { + Throwable first = (semanticException != null) ? semanticException : e, + current = first, cause = current.getCause(); + while (cause != null) { + Throwable causeOfCause = cause.getCause(); + if (current == first && causeOfCause == null && isUselessCause(first)) { + // "cause" is a root cause, and "e"/"first" is a useless exception it's wrapped in. + first = cause; + break; + } else if (causeOfCause != null && isUselessCause(cause) + && ExceptionHelper.resetCause(current, causeOfCause)) { + // "cause" was a useless intermediate cause and was replace it with its own cause. + cause = causeOfCause; + continue; // do loop once again with the new cause of "current" + } + current = cause; + cause = current.getCause(); + } + + if (first instanceof RuntimeException) { + throw (RuntimeException)first; + } else if (first instanceof SemanticException) { + throw (SemanticException)first; + } + throw new RuntimeException(first); + } + + private boolean isUselessCause(Throwable t) { + return t instanceof RuntimeException || t instanceof InvocationTargetException + || t instanceof UndeclaredThrowableException; + } + @Override public RelNode apply(RelOptCluster cluster, RelOptSchema relOptSchema, SchemaPlus rootSchema) { RelNode optiqGenPlan = null; @@ -14239,4 +14284,36 @@ private List getTabAliases(RowResolver inputRR) { return tabAliases; } } + + private static class ExceptionHelper { + private static final Field CAUSE_FIELD = getField(Throwable.class, "cause"), + TARGET_FIELD = getField(InvocationTargetException.class, "target"), + MESSAGE_FIELD = getField(Throwable.class, "detailMessage"); + private static Field getField(Class clazz, String name) { + try { + Field f = clazz.getDeclaredField(name); + f.setAccessible(true); + return f; + } catch (Throwable t) { + return null; + } + } + public static boolean resetCause(Throwable target, Throwable newCause) { + try { + if (MESSAGE_FIELD == null) return false; + Field field = (target instanceof InvocationTargetException) ? TARGET_FIELD : CAUSE_FIELD; + if (field == null) return false; + + Throwable oldCause = target.getCause(); + String oldMsg = target.getMessage(); + field.set(target, newCause); + if (oldMsg != null && oldMsg.equals(oldCause.toString())) { + MESSAGE_FIELD.set(target, newCause == null ? null : newCause.toString()); + } + } catch (Throwable se) { + return false; + } + return true; + } + } } From 00dea34c2b62573a2ea1260b6345bff3c832dd14 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Wed, 22 Oct 2014 00:02:51 +0000 Subject: [PATCH 144/339] HIVE-8445: TestColumnAccess, TestReadEntityDirect use same table names (Jason Dere, reviewed by Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633491 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/parse/TestColumnAccess.java | 9 +++++++++ .../apache/hadoop/hive/ql/plan/TestReadEntityDirect.java | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestColumnAccess.java b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestColumnAccess.java index edcc313cddbd..5d22e270df70 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestColumnAccess.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestColumnAccess.java @@ -31,6 +31,7 @@ import org.apache.hadoop.hive.ql.QueryPlan; import org.apache.hadoop.hive.ql.hooks.ReadEntity; import org.apache.hadoop.hive.ql.session.SessionState; +import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -47,6 +48,14 @@ public static void Setup() throws CommandNeedRetryException { Assert.assertEquals("Checking command success", 0, ret); } + @AfterClass + public static void Teardown() throws Exception { + Driver driver = createDriver(); + driver.run("drop table t1"); + driver.run("drop table t2"); + driver.run("drop view v1"); + } + @Test public void testQueryTable1() throws ParseException { String query = "select * from t1"; diff --git a/ql/src/test/org/apache/hadoop/hive/ql/plan/TestReadEntityDirect.java b/ql/src/test/org/apache/hadoop/hive/ql/plan/TestReadEntityDirect.java index 2d27cec12094..6615a45d0e8a 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/plan/TestReadEntityDirect.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/plan/TestReadEntityDirect.java @@ -38,6 +38,7 @@ import org.apache.hadoop.hive.ql.session.SessionState; import org.junit.Before; import org.junit.BeforeClass; +import org.junit.AfterClass; import org.junit.Test; /** @@ -56,6 +57,13 @@ public static void onetimeSetup() throws CommandNeedRetryException { assertEquals("Checking command success", 0, ret); } + @AfterClass + public static void onetimeTeardown() throws Exception { + Driver driver = createDriver(); + driver.run("drop table t1"); + driver.run("drop view v1"); + } + @Before public void setup() { CheckInputReadEntityDirect.readEntities = null; From 65dd8368c0e0fe3ac46eb696f77ab8551374b4c7 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Wed, 22 Oct 2014 00:27:56 +0000 Subject: [PATCH 145/339] HIVE-8186 : Self join may fail if one side have virtual column(s) and other doesn't (Navis, reviewed by Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633498 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 2 - data/conf/hive-log4j.properties | 7 +- .../hive/minikdc/TestJdbcWithMiniKdc.java | 26 +- .../hive/beeline/TestBeeLineWithArgs.java | 4 +- jdbc/src/java/org/apache/hive/jdbc/Utils.java | 7 +- .../hadoop/hive/ql/exec/MapOperator.java | 419 ++++++++---------- .../apache/hadoop/hive/ql/exec/Operator.java | 46 +- .../hive/ql/exec/ReduceSinkOperator.java | 29 +- .../hadoop/hive/ql/exec/ScriptOperator.java | 16 +- .../apache/hadoop/hive/ql/exec/Utilities.java | 14 +- .../ql/exec/vector/VectorMapOperator.java | 11 +- .../hadoop/hive/ql/io/orc/OrcInputFormat.java | 4 +- .../apache/hadoop/hive/ql/plan/TableDesc.java | 9 +- .../hadoop/hive/ql/exec/TestOperators.java | 11 +- ql/src/test/queries/clientpositive/join_vc.q | 7 + .../test/results/clientpositive/join_vc.q.out | 224 ++++++++++ .../hive/service/auth/HiveAuthFactory.java | 32 +- 17 files changed, 552 insertions(+), 316 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index d6e579167b70..b4deba764768 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -598,8 +598,6 @@ public static enum ConfVars { new TimeValidator(TimeUnit.SECONDS), "How long to run autoprogressor for the script/UDTF operators.\n" + "Set to 0 for forever."), - HIVETABLENAME("hive.table.name", "", ""), - HIVEPARTITIONNAME("hive.partition.name", "", ""), HIVESCRIPTAUTOPROGRESS("hive.script.auto.progress", false, "Whether Hive Transform/Map/Reduce Clause should automatically send progress information to TaskTracker \n" + "to avoid the task getting killed because of inactivity. Hive sends progress information when the script is \n" + diff --git a/data/conf/hive-log4j.properties b/data/conf/hive-log4j.properties index 7f5dfc451a5e..f90b833b181c 100644 --- a/data/conf/hive-log4j.properties +++ b/data/conf/hive-log4j.properties @@ -75,6 +75,11 @@ log4j.category.JPOX.Query=ERROR,DRFA log4j.category.JPOX.General=ERROR,DRFA log4j.category.JPOX.Enhancer=ERROR,DRFA log4j.logger.org.apache.hadoop.conf.Configuration=ERROR,DRFA +log4j.logger.org.apache.zookeeper=INFO,DRFA +log4j.logger.org.apache.zookeeper.server.ServerCnxn=WARN,DRFA log4j.logger.org.apache.zookeeper.server.NIOServerCnxn=WARN,DRFA +log4j.logger.org.apache.zookeeper.ClientCnxn=WARN,DRFA +log4j.logger.org.apache.zookeeper.ClientCnxnSocket=WARN,DRFA log4j.logger.org.apache.zookeeper.ClientCnxnSocketNIO=WARN,DRFA - +log4j.logger.org.apache.hadoop.hive.ql.log.PerfLogger=WARN,DRFA +log4j.logger.org.apache.hadoop.hive.ql.exec.Operator=INFO,DRFA diff --git a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java index 2355519f3f21..6647ce589fa2 100644 --- a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java +++ b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java @@ -19,7 +19,6 @@ package org.apache.hive.minikdc; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -153,7 +152,7 @@ public void testTokenAuth() throws Exception { } /*** - * Negtive test for token based authentication + * Negative test for token based authentication * Verify that a user can't retrieve a token for user that * it's not allowed to impersonate * @throws Exception @@ -163,13 +162,20 @@ public void testNegativeTokenAuth() throws Exception { miniHiveKdc.loginUser(MiniHiveKdc.HIVE_TEST_SUPER_USER); hs2Conn = DriverManager.getConnection(miniHS2.getJdbcURL()); - // retrieve token and store in the cache - String token = ((HiveConnection)hs2Conn).getDelegationToken( - MiniHiveKdc.HIVE_TEST_USER_2, MiniHiveKdc.HIVE_SERVICE_PRINCIPAL); - hs2Conn.close(); + try { + // retrieve token and store in the cache + String token = ((HiveConnection)hs2Conn).getDelegationToken( + MiniHiveKdc.HIVE_TEST_USER_2, MiniHiveKdc.HIVE_SERVICE_PRINCIPAL); - assertNull(MiniHiveKdc.HIVE_TEST_SUPER_USER + " shouldn't be allowed to create token for " + - MiniHiveKdc.HIVE_TEST_USER_2, token); + fail(MiniHiveKdc.HIVE_TEST_SUPER_USER + " shouldn't be allowed to retrieve token for " + + MiniHiveKdc.HIVE_TEST_USER_2); + } catch (SQLException e) { + // Expected error + assertTrue(e.getMessage().contains("Failed to validate proxy privilege")); + assertTrue(e.getCause().getCause().getMessage().contains("Failed to validate proxy privilege")); + } finally { + hs2Conn.close(); + } } /** @@ -201,7 +207,9 @@ public void testNegativeProxyAuth() throws Exception { + MiniHiveKdc.HIVE_TEST_USER_2); } catch (SQLException e) { // Expected error - assertEquals("08S01", e.getSQLState().trim()); + e.printStackTrace(); + assertTrue(e.getMessage().contains("Failed to validate proxy privilege")); + assertTrue(e.getCause().getCause().getMessage().contains("is not allowed to impersonate")); } } diff --git a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java index 6561743a4585..9180a1a2cc08 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java @@ -260,9 +260,9 @@ public void testBeelineHiveVariable() throws Throwable { public void testBeelineHiveConfVariable() throws Throwable { List argList = getBaseArgs(JDBC_URL); argList.add("--hiveconf"); - argList.add("hive.table.name=dummy"); + argList.add("test.hive.table.name=dummy"); final String TEST_NAME = "testBeelineHiveConfVariable"; - final String SCRIPT_TEXT = "create table ${hiveconf:hive.table.name} (d int);\nshow tables;\n"; + final String SCRIPT_TEXT = "create table ${hiveconf:test.hive.table.name} (d int);\nshow tables;\n"; final String EXPECTED_PATTERN = "dummy"; testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } diff --git a/jdbc/src/java/org/apache/hive/jdbc/Utils.java b/jdbc/src/java/org/apache/hive/jdbc/Utils.java index de7b5e9d20ec..8bbeef7bd65e 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/Utils.java +++ b/jdbc/src/java/org/apache/hive/jdbc/Utils.java @@ -226,10 +226,11 @@ public static void verifySuccess(TStatus status) throws SQLException { // Verify success and optionally with_info status, else throw SQLException public static void verifySuccess(TStatus status, boolean withInfo) throws SQLException { - if ((status.getStatusCode() != TStatusCode.SUCCESS_STATUS) && - (withInfo && (status.getStatusCode() != TStatusCode.SUCCESS_WITH_INFO_STATUS))) { - throw new HiveSQLException(status); + if (status.getStatusCode() == TStatusCode.SUCCESS_STATUS || + (withInfo && status.getStatusCode() == TStatusCode.SUCCESS_WITH_INFO_STATUS)) { + return; } + throw new HiveSQLException(status); } /** diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java index f0754102c3c1..8e8e9f6fa51f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java @@ -23,20 +23,20 @@ import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; import java.util.Set; +import com.google.common.annotations.VisibleForTesting; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; -import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants; import org.apache.hadoop.hive.ql.exec.mr.ExecMapperContext; import org.apache.hadoop.hive.ql.exec.tez.MapRecordProcessor; import org.apache.hadoop.hive.ql.io.RecordIdentifier; -import org.apache.hadoop.hive.ql.io.IOContext; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.VirtualColumn; import org.apache.hadoop.hive.ql.plan.MapWork; @@ -59,6 +59,7 @@ import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.io.Writable; +import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.util.StringUtils; /** @@ -83,58 +84,24 @@ public static enum Counter { private final transient LongWritable recordCounter = new LongWritable(); protected transient long numRows = 0; protected transient long cntr = 1; - protected final boolean isInfoEnabled = LOG.isInfoEnabled(); - protected final boolean isDebugEnabled = LOG.isDebugEnabled(); - - private final Map opCtxMap = new HashMap(); - private final Map, MapOpCtx> childrenOpToOpCtxMap = - new HashMap, MapOpCtx>(); - - protected transient MapOpCtx current; - private transient List> extraChildrenToClose = null; - private final Map normalizedPaths = new HashMap(); - - private static class MapInputPath { - String path; - String alias; - Operator op; - PartitionDesc partDesc; - - /** - * @param path - * @param alias - * @param op - */ - public MapInputPath(String path, String alias, Operator op, PartitionDesc partDesc) { - this.path = path; - this.alias = alias; - this.op = op; - this.partDesc = partDesc; - } - @Override - public boolean equals(Object o) { - if (o instanceof MapInputPath) { - MapInputPath mObj = (MapInputPath) o; - return path.equals(mObj.path) && alias.equals(mObj.alias) - && op.equals(mObj.op); - } + // input path --> {operator --> context} + private final Map, MapOpCtx>> opCtxMap = + new HashMap, MapOpCtx>>(); + // child operator --> object inspector (converted OI if it's needed) + private final Map, StructObjectInspector> childrenOpToOI = + new HashMap, StructObjectInspector>(); - return false; - } - - @Override - public int hashCode() { - int ret = (path == null) ? 0 : path.hashCode(); - ret += (alias == null) ? 0 : alias.hashCode(); - ret += (op == null) ? 0 : op.hashCode(); - return ret; - } - } + // context for current input file + protected transient MapOpCtx[] currentCtxs; + private transient final Map normalizedPaths = new HashMap(); protected static class MapOpCtx { - StructObjectInspector tblRawRowObjectInspector; // columns + final String alias; + final Operator op; + final PartitionDesc partDesc; + StructObjectInspector partObjectInspector; // partition columns StructObjectInspector vcsObjectInspector; // virtual columns StructObjectInspector rowObjectInspector; @@ -150,6 +117,12 @@ protected static class MapOpCtx { List vcs; Object[] vcValues; + public MapOpCtx(String alias, Operator op, PartitionDesc partDesc) { + this.alias = alias; + this.op = op; + this.partDesc = partDesc; + } + private boolean isPartitioned() { return partObjectInspector != null; } @@ -158,12 +131,30 @@ private boolean hasVC() { return vcsObjectInspector != null; } - private Object readRow(Writable value) throws SerDeException { - return partTblObjectInspectorConverter.convert(deserializer.deserialize(value)); + private Object readRow(Writable value, ExecMapperContext context) throws SerDeException { + Object deserialized = deserializer.deserialize(value); + Object row = partTblObjectInspectorConverter.convert(deserialized); + if (hasVC()) { + rowWithPartAndVC[0] = row; + if (context != null) { + populateVirtualColumnValues(context, vcs, vcValues, deserializer); + } + int vcPos = isPartitioned() ? 2 : 1; + rowWithPartAndVC[vcPos] = vcValues; + return rowWithPartAndVC; + } else if (isPartitioned()) { + rowWithPart[0] = row; + return rowWithPart; + } + return row; } - public StructObjectInspector getRowObjectInspector() { - return rowObjectInspector; + public boolean forward(Object row) throws HiveException { + if (op.getDone()) { + return false; + } + op.processOp(row, 0); + return true; } } @@ -176,20 +167,20 @@ public StructObjectInspector getRowObjectInspector() { * @param mapWork * @throws HiveException */ - public void initializeAsRoot(Configuration hconf, MapWork mapWork) - throws HiveException { + @VisibleForTesting + void initializeAsRoot(JobConf hconf, MapWork mapWork) throws Exception { setConf(mapWork); setChildren(hconf); + setExecContext(new ExecMapperContext(hconf)); initialize(hconf, null); } - private MapOpCtx initObjectInspector(Configuration hconf, MapInputPath ctx, - Map convertedOI) throws Exception { + private MapOpCtx initObjectInspector(Configuration hconf, MapOpCtx opCtx, + StructObjectInspector tableRowOI) throws Exception { - PartitionDesc pd = ctx.partDesc; + PartitionDesc pd = opCtx.partDesc; TableDesc td = pd.getTableDesc(); - MapOpCtx opCtx = new MapOpCtx(); // Use table properties in case of unpartitioned tables, // and the union of table properties and partition properties, with partition // taking precedence, in the case of partitioned tables @@ -200,18 +191,13 @@ private MapOpCtx initObjectInspector(Configuration hconf, MapInputPath ctx, opCtx.tableName = String.valueOf(overlayedProps.getProperty("name")); opCtx.partName = String.valueOf(partSpec); - - Class serdeclass = hconf.getClassByName(pd.getSerdeClassName()); - opCtx.deserializer = (Deserializer) serdeclass.newInstance(); - SerDeUtils.initializeSerDe(opCtx.deserializer, hconf, td.getProperties(), pd.getProperties()); + opCtx.deserializer = pd.getDeserializer(hconf); StructObjectInspector partRawRowObjectInspector = (StructObjectInspector) opCtx.deserializer.getObjectInspector(); - opCtx.tblRawRowObjectInspector = convertedOI.get(td); - - opCtx.partTblObjectInspectorConverter = ObjectInspectorConverters.getConverter( - partRawRowObjectInspector, opCtx.tblRawRowObjectInspector); + opCtx.partTblObjectInspectorConverter = + ObjectInspectorConverters.getConverter(partRawRowObjectInspector, tableRowOI); // Next check if this table has partitions and if so // get the list of partition names as well as allocate @@ -259,8 +245,8 @@ private MapOpCtx initObjectInspector(Configuration hconf, MapInputPath ctx, // The op may not be a TableScan for mapjoins // Consider the query: select /*+MAPJOIN(a)*/ count(*) FROM T1 a JOIN T2 b ON a.key = b.key; // In that case, it will be a Select, but the rowOI need not be amended - if (ctx.op instanceof TableScanOperator) { - TableScanOperator tsOp = (TableScanOperator) ctx.op; + if (opCtx.op instanceof TableScanOperator) { + TableScanOperator tsOp = (TableScanOperator) opCtx.op; TableScanDesc tsDesc = tsOp.getConf(); if (tsDesc != null && tsDesc.hasVirtualCols()) { opCtx.vcs = tsDesc.getVirtualCols(); @@ -274,11 +260,11 @@ private MapOpCtx initObjectInspector(Configuration hconf, MapInputPath ctx, } } if (!opCtx.hasVC() && !opCtx.isPartitioned()) { - opCtx.rowObjectInspector = opCtx.tblRawRowObjectInspector; + opCtx.rowObjectInspector = tableRowOI; return opCtx; } List inspectors = new ArrayList(); - inspectors.add(opCtx.tblRawRowObjectInspector); + inspectors.add(tableRowOI); if (opCtx.isPartitioned()) { inspectors.add(opCtx.partObjectInspector); } @@ -308,19 +294,14 @@ private Map getConvertedOI(Configuration hconf for (String onefile : conf.getPathToAliases().keySet()) { PartitionDesc pd = conf.getPathToPartitionInfo().get(onefile); TableDesc tableDesc = pd.getTableDesc(); - Properties tblProps = tableDesc.getProperties(); - Class sdclass = hconf.getClassByName(pd.getSerdeClassName()); - Deserializer partDeserializer = (Deserializer) sdclass.newInstance(); - SerDeUtils.initializeSerDe(partDeserializer, hconf, tblProps, pd.getProperties()); - StructObjectInspector partRawRowObjectInspector = (StructObjectInspector) partDeserializer - .getObjectInspector(); + Deserializer partDeserializer = pd.getDeserializer(hconf); + StructObjectInspector partRawRowObjectInspector = + (StructObjectInspector) partDeserializer.getObjectInspector(); StructObjectInspector tblRawRowObjectInspector = tableDescOI.get(tableDesc); if ((tblRawRowObjectInspector == null) || (identityConverterTableDesc.contains(tableDesc))) { - sdclass = hconf.getClassByName(tableDesc.getSerdeClassName()); - Deserializer tblDeserializer = (Deserializer) sdclass.newInstance(); - SerDeUtils.initializeSerDe(tblDeserializer, hconf, tblProps, null); + Deserializer tblDeserializer = tableDesc.getDeserializer(hconf); tblRawRowObjectInspector = (StructObjectInspector) ObjectInspectorConverters.getConvertedOI( partRawRowObjectInspector, @@ -344,70 +325,85 @@ else if (partRawRowObjectInspector.equals(tblRawRowObjectInspector)) { return tableDescOI; } - public void setChildren(Configuration hconf) throws HiveException { - Path fpath = IOContext.get(hconf.get(Utilities.INPUT_NAME)).getInputPath(); - - boolean schemeless = fpath.toUri().getScheme() == null; + public void setChildren(Configuration hconf) throws Exception { List> children = new ArrayList>(); Map convertedOI = getConvertedOI(hconf); - try { - for (Map.Entry> entry : conf.getPathToAliases().entrySet()) { - String onefile = entry.getKey(); - List aliases = entry.getValue(); + for (Map.Entry> entry : conf.getPathToAliases().entrySet()) { + String onefile = entry.getKey(); + List aliases = entry.getValue(); + PartitionDesc partDesc = conf.getPathToPartitionInfo().get(onefile); - Path onepath = new Path(onefile); - if (schemeless) { - onepath = new Path(onepath.toUri().getPath()); + for (String alias : aliases) { + Operator op = conf.getAliasToWork().get(alias); + if (isLogDebugEnabled) { + LOG.debug("Adding alias " + alias + " to work list for file " + + onefile); + } + Map, MapOpCtx> contexts = opCtxMap.get(onefile); + if (contexts == null) { + opCtxMap.put(onefile, contexts = new LinkedHashMap, MapOpCtx>()); + } + if (contexts.containsKey(op)) { + continue; } + MapOpCtx context = new MapOpCtx(alias, op, partDesc); + StructObjectInspector tableRowOI = convertedOI.get(partDesc.getTableDesc()); + contexts.put(op, initObjectInspector(hconf, context, tableRowOI)); - PartitionDesc partDesc = conf.getPathToPartitionInfo().get(onefile); + op.setParentOperators(new ArrayList>(1)); + op.getParentOperators().add(this); + children.add(op); + } + } - for (String onealias : aliases) { - Operator op = conf.getAliasToWork().get(onealias); - if (isDebugEnabled) { - LOG.debug("Adding alias " + onealias + " to work list for file " - + onefile); - } - MapInputPath inp = new MapInputPath(onefile, onealias, op, partDesc); - if (opCtxMap.containsKey(inp)) { - continue; - } - MapOpCtx opCtx = initObjectInspector(hconf, inp, convertedOI); - opCtxMap.put(inp, opCtx); - - op.setParentOperators(new ArrayList>()); - op.getParentOperators().add(this); - // check for the operators who will process rows coming to this Map - // Operator - if (!onepath.toUri().relativize(fpath.toUri()).equals(fpath.toUri())) { - children.add(op); - childrenOpToOpCtxMap.put(op, opCtx); - if (isInfoEnabled) { - LOG.info("dump " + op + " " - + opCtxMap.get(inp).rowObjectInspector.getTypeName()); - } - } - current = opCtx; // just need for TestOperators.testMapOperator + initOperatorContext(children); + + // we found all the operators that we are supposed to process. + setChildOperators(children); + } + + private void initOperatorContext(List> children) + throws HiveException { + for (Map, MapOpCtx> contexts : opCtxMap.values()) { + for (MapOpCtx context : contexts.values()) { + if (!children.contains(context.op)) { + continue; + } + StructObjectInspector prev = + childrenOpToOI.put(context.op, context.rowObjectInspector); + if (prev != null && !prev.equals(context.rowObjectInspector)) { + throw new HiveException("Conflict on row inspector for " + context.alias); + } + if (isLogInfoEnabled) { + LOG.info("dump " + context.op + " " + context.rowObjectInspector.getTypeName()); } } + } + } - if (children.size() == 0) { - // didn't find match for input file path in configuration! - // serious problem .. - LOG.error("Configuration does not have any alias for path: " - + fpath.toUri()); - throw new HiveException("Configuration and input path are inconsistent"); + private String getNominalPath(Path fpath) { + String nominal = null; + boolean schemaless = fpath.toUri().getScheme() == null; + for (String onefile : conf.getPathToAliases().keySet()) { + Path onepath = normalizePath(onefile, schemaless); + // check for the operators who will process rows coming to this Map Operator + if (onepath.toUri().relativize(fpath.toUri()).equals(fpath.toUri())) { + // not from this + continue; } - - // we found all the operators that we are supposed to process. - setChildOperators(children); - } catch (Exception e) { - throw new HiveException(e); + if (nominal != null) { + throw new IllegalStateException("Ambiguous input path " + fpath); + } + nominal = onefile; + } + if (nominal == null) { + throw new IllegalStateException("Invalid input path " + fpath); } + return nominal; } @Override @@ -422,88 +418,56 @@ public void initializeOp(Configuration hconf) throws HiveException { } statsMap.put(Counter.RECORDS_IN + context, recordCounter); - List> children = getChildOperators(); - - for (Entry, MapOpCtx> entry : childrenOpToOpCtxMap - .entrySet()) { - Operator child = entry.getKey(); - MapOpCtx mapOpCtx = entry.getValue(); - // Add alias, table name, and partitions to hadoop conf so that their - // children will inherit these - HiveConf.setVar(hconf, HiveConf.ConfVars.HIVETABLENAME, mapOpCtx.tableName); - HiveConf.setVar(hconf, HiveConf.ConfVars.HIVEPARTITIONNAME, mapOpCtx.partName); - child.initialize(hconf, new ObjectInspector[] {mapOpCtx.rowObjectInspector}); - } - - for (Entry entry : opCtxMap.entrySet()) { - MapInputPath input = entry.getKey(); - MapOpCtx mapOpCtx = entry.getValue(); - // Add alias, table name, and partitions to hadoop conf so that their - // children will inherit these - HiveConf.setVar(hconf, HiveConf.ConfVars.HIVETABLENAME, mapOpCtx.tableName); - HiveConf.setVar(hconf, HiveConf.ConfVars.HIVEPARTITIONNAME, mapOpCtx.partName); - - Operator op = input.op; - if (children.indexOf(op) == -1) { - // op is not in the children list, so need to remember it and close it afterwards - if (extraChildrenToClose == null) { - extraChildrenToClose = new ArrayList>(); - } - extraChildrenToClose.add(op); - op.initialize(hconf, new ObjectInspector[] {entry.getValue().rowObjectInspector}); - } + for (Entry, StructObjectInspector> entry : childrenOpToOI.entrySet()) { + Operator child = entry.getKey(); + child.initialize(hconf, new ObjectInspector[] {entry.getValue()}); } } - /** - * close extra child operators that are initialized but are not executed. - */ @Override public void closeOp(boolean abort) throws HiveException { - if (extraChildrenToClose != null) { - for (Operator op : extraChildrenToClose) { - op.close(abort); - } - } recordCounter.set(numRows); + super.closeOp(abort); } // Find context for current input file @Override public void cleanUpInputFileChangedOp() throws HiveException { + super.cleanUpInputFileChangedOp(); Path fpath = getExecContext().getCurrentInputPath(); - - for (String onefile : conf.getPathToAliases().keySet()) { - Path onepath = normalizePath(onefile); - // check for the operators who will process rows coming to this Map - // Operator - if (onepath.toUri().relativize(fpath.toUri()).equals(fpath.toUri())) { - // not from this - continue; - } - PartitionDesc partDesc = conf.getPathToPartitionInfo().get(onefile); - for (String onealias : conf.getPathToAliases().get(onefile)) { - Operator op = conf.getAliasToWork().get(onealias); - MapInputPath inp = new MapInputPath(onefile, onealias, op, partDesc); - MapOpCtx context = opCtxMap.get(inp); - if (context != null) { - current = context; - if (isInfoEnabled) { - LOG.info("Processing alias " + onealias + " for file " + onefile); - } - return; + String nominalPath = getNominalPath(fpath); + Map, MapOpCtx> contexts = opCtxMap.get(nominalPath); + if (isLogInfoEnabled) { + StringBuilder builder = new StringBuilder(); + for (MapOpCtx context : contexts.values()) { + if (builder.length() > 0) { + builder.append(", "); } + builder.append(context.alias); + } + if (isLogDebugEnabled) { + LOG.info("Processing alias(es) " + builder.toString() + " for file " + fpath); } } - throw new IllegalStateException("Invalid path " + fpath); + // Add alias, table name, and partitions to hadoop conf so that their + // children will inherit these + for (Entry, MapOpCtx> entry : contexts.entrySet()) { + Operator operator = entry.getKey(); + MapOpCtx context = entry.getValue(); + operator.setInputContext(nominalPath, context.tableName, context.partName); + } + currentCtxs = contexts.values().toArray(new MapOpCtx[contexts.size()]); } - private Path normalizePath(String onefile) { + private Path normalizePath(String onefile, boolean schemaless) { //creating Path is expensive, so cache the corresponding //Path object in normalizedPaths Path path = normalizedPaths.get(onefile); - if(path == null){ + if (path == null) { path = new Path(onefile); + if (schemaless && path.toUri().getScheme() != null) { + path = new Path(path.toUri().getPath()); + } normalizedPaths.put(onefile, path); } return path; @@ -517,57 +481,46 @@ public void process(Writable value) throws HiveException { // The child operators cleanup if input file has changed cleanUpInputFileChanged(); } - Object row; - try { - row = current.readRow(value); - if (current.hasVC()) { - current.rowWithPartAndVC[0] = row; - if (context != null) { - populateVirtualColumnValues(context, current.vcs, current.vcValues, current.deserializer); - } - int vcPos = current.isPartitioned() ? 2 : 1; - current.rowWithPartAndVC[vcPos] = current.vcValues; - row = current.rowWithPartAndVC; - } else if (current.isPartitioned()) { - current.rowWithPart[0] = row; - row = current.rowWithPart; - } - } catch (Exception e) { - // Serialize the row and output. - String rawRowString; + int childrenDone = 0; + for (MapOpCtx current : currentCtxs) { + Object row = null; try { - rawRowString = value.toString(); - } catch (Exception e2) { - rawRowString = "[Error getting row data with exception " + - StringUtils.stringifyException(e2) + " ]"; + row = current.readRow(value, context); + if (!current.forward(row)) { + childrenDone++; + } + } catch (Exception e) { + // TODO: policy on deserialization errors + String message = toErrorMessage(value, row, current.rowObjectInspector); + if (row == null) { + deserialize_error_count.set(deserialize_error_count.get() + 1); + throw new HiveException("Hive Runtime Error while processing writable " + message, e); + } + throw new HiveException("Hive Runtime Error while processing row " + message, e); } + } + rowForwarded(childrenDone); + } - // TODO: policy on deserialization errors - deserialize_error_count.set(deserialize_error_count.get() + 1); - throw new HiveException("Hive Runtime Error while processing writable " + rawRowString, e); + protected final void rowForwarded(int childrenDone) { + numRows++; + if (isLogInfoEnabled && numRows == cntr) { + cntr *= 10; + LOG.info(toString() + ": records read - " + numRows); } + if (childrenDone == currentCtxs.length) { + setDone(true); + } + } - // The row has been converted to comply with table schema, irrespective of partition schema. - // So, use tblOI (and not partOI) for forwarding + private String toErrorMessage(Writable value, Object row, ObjectInspector inspector) { try { - numRows++; - if (isInfoEnabled) { - if (numRows == cntr) { - cntr *= 10; - LOG.info(toString() + ": records read - " + numRows); - } + if (row != null) { + return SerDeUtils.getJSONString(row, inspector); } - forward(row, current.rowObjectInspector); + return String.valueOf(value); } catch (Exception e) { - // Serialize the row and output the error message. - String rowString; - try { - rowString = SerDeUtils.getJSONString(row, current.rowObjectInspector); - } catch (Exception e2) { - rowString = "[Error getting row data with exception " + - StringUtils.stringifyException(e2) + " ]"; - } - throw new HiveException("Hive Runtime Error while processing row " + rowString, e); + return "[Error getting row data with exception " + StringUtils.stringifyException(e) + " ]"; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java index dc538abd3291..273691e65d13 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java @@ -214,8 +214,11 @@ public RowSchema getSchema() { protected transient Map statsMap = new HashMap(); @SuppressWarnings("rawtypes") protected transient OutputCollector out; - protected transient Log LOG = LogFactory.getLog(this.getClass().getName()); - protected transient boolean isLogInfoEnabled = LOG.isInfoEnabled(); + protected transient final Log LOG = LogFactory.getLog(getClass().getName()); + protected transient final Log PLOG = LogFactory.getLog(Operator.class.getName()); // for simple disabling logs from all operators + protected transient final boolean isLogInfoEnabled = LOG.isInfoEnabled() && PLOG.isInfoEnabled(); + protected transient final boolean isLogDebugEnabled = LOG.isDebugEnabled() && PLOG.isDebugEnabled(); + protected transient final boolean isLogTraceEnabled = LOG.isTraceEnabled() && PLOG.isTraceEnabled(); protected transient String alias; protected transient Reporter reporter; protected transient String id; @@ -491,33 +494,45 @@ public ObjectInspector getOutputObjInspector() { public abstract void processOp(Object row, int tag) throws HiveException; protected final void defaultStartGroup() throws HiveException { - LOG.debug("Starting group"); + if (isLogDebugEnabled) { + LOG.debug("Starting group"); + } if (childOperators == null) { return; } - LOG.debug("Starting group for children:"); + if (isLogDebugEnabled) { + LOG.debug("Starting group for children:"); + } for (Operator op : childOperators) { op.startGroup(); } - LOG.debug("Start group Done"); + if (isLogDebugEnabled) { + LOG.debug("Start group Done"); + } } protected final void defaultEndGroup() throws HiveException { - LOG.debug("Ending group"); + if (isLogDebugEnabled) { + LOG.debug("Ending group"); + } if (childOperators == null) { return; } - LOG.debug("Ending group for children:"); + if (isLogDebugEnabled) { + LOG.debug("Ending group for children:"); + } for (Operator op : childOperators) { op.endGroup(); } - LOG.debug("End group Done"); + if (isLogDebugEnabled) { + LOG.debug("End group Done"); + } } // If a operator wants to do some work at the beginning of a group @@ -1047,6 +1062,17 @@ public void cleanUpInputFileChanged() throws HiveException { public void cleanUpInputFileChangedOp() throws HiveException { } + // called by map operator. propagated recursively to single parented descendants + public void setInputContext(String inputPath, String tableName, String partitionName) { + if (childOperators != null) { + for (Operator child : childOperators) { + if (child.getNumParent() == 1) { + child.setInputContext(inputPath, tableName, partitionName); + } + } + } + } + public boolean supportSkewJoinOptimization() { return false; } @@ -1264,7 +1290,7 @@ public OpTraits getOpTraits() { } public void setOpTraits(OpTraits metaInfo) { - if (LOG.isDebugEnabled()) { + if (isLogDebugEnabled) { LOG.debug("Setting traits ("+metaInfo+") on "+this); } if (conf != null) { @@ -1275,7 +1301,7 @@ public void setOpTraits(OpTraits metaInfo) { } public void setStatistics(Statistics stats) { - if (LOG.isDebugEnabled()) { + if (isLogDebugEnabled) { LOG.debug("Setting stats ("+stats+") on "+this); } if (conf != null) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java index 436a0e59af35..73e77ff4538e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java @@ -25,8 +25,6 @@ import java.util.List; import java.util.Random; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.io.AcidUtils; @@ -75,10 +73,6 @@ public static enum Counter { RECORDS_OUT_INTERMEDIATE } - private static final Log LOG = LogFactory.getLog(ReduceSinkOperator.class.getName()); - private static final boolean isInfoEnabled = LOG.isInfoEnabled(); - private static final boolean isDebugEnabled = LOG.isDebugEnabled(); - private static final boolean isTraceEnabled = LOG.isTraceEnabled(); private static final long serialVersionUID = 1L; private static final MurmurHash hash = (MurmurHash) MurmurHash.getInstance(); @@ -169,7 +163,7 @@ protected void initializeOp(Configuration hconf) throws HiveException { List keys = conf.getKeyCols(); - if (isDebugEnabled) { + if (isLogDebugEnabled) { LOG.debug("keys size is " + keys.size()); for (ExprNodeDesc k : keys) { LOG.debug("Key exprNodeDesc " + k.getExprString()); @@ -214,7 +208,7 @@ protected void initializeOp(Configuration hconf) throws HiveException { tag = conf.getTag(); tagByte[0] = (byte) tag; skipTag = conf.getSkipTag(); - if (isInfoEnabled) { + if (isLogInfoEnabled) { LOG.info("Using tag = " + tag); } @@ -316,7 +310,7 @@ public void processOp(Object row, int tag) throws HiveException { bucketInspector = (IntObjectInspector)bucketField.getFieldObjectInspector(); } - if (isInfoEnabled) { + if (isLogInfoEnabled) { LOG.info("keys are " + conf.getOutputKeyColumnNames() + " num distributions: " + conf.getNumDistributionKeys()); } @@ -362,7 +356,7 @@ public void processOp(Object row, int tag) throws HiveException { if (useUniformHash && partitionEval.length > 0) { hashCode = computeMurmurHash(firstKey); } else { - hashCode = computeHashCode(row); + hashCode = computeHashCode(row, bucketNumber); } firstKey.setHashCode(hashCode); @@ -411,7 +405,7 @@ private int computeBucketNumber(Object row, int numBuckets) throws HiveException // column directly. Object recIdValue = acidRowInspector.getStructFieldData(row, recIdField); buckNum = bucketInspector.get(recIdInspector.getStructFieldData(recIdValue, bucketField)); - if (isTraceEnabled) { + if (isLogTraceEnabled) { LOG.trace("Acid choosing bucket number " + buckNum); } } else { @@ -458,7 +452,7 @@ protected final int computeMurmurHash(HiveKey firstKey) { return hash.hash(firstKey.getBytes(), firstKey.getDistKeyLength(), 0); } - private int computeHashCode(Object row) throws HiveException { + private int computeHashCode(Object row, int buckNum) throws HiveException { // Evaluate the HashCode int keyHashCode = 0; if (partitionEval.length == 0) { @@ -482,10 +476,11 @@ private int computeHashCode(Object row) throws HiveException { + ObjectInspectorUtils.hashCode(o, partitionObjectInspectors[i]); } } - if (isTraceEnabled) { - LOG.trace("Going to return hash code " + (keyHashCode * 31 + bucketNumber)); + int hashCode = buckNum < 0 ? keyHashCode : keyHashCode * 31 + buckNum; + if (isLogTraceEnabled) { + LOG.trace("Going to return hash code " + hashCode); } - return bucketNumber < 0 ? keyHashCode : keyHashCode * 31 + bucketNumber; + return hashCode; } private boolean partitionKeysAreNull(Object row) throws HiveException { @@ -527,7 +522,7 @@ protected void collect(BytesWritable keyWritable, Writable valueWritable) throws // forward is not called if (null != out) { numRows++; - if (isInfoEnabled) { + if (isLogInfoEnabled) { if (numRows == cntr) { cntr *= 10; LOG.info(toString() + ": records written - " + numRows); @@ -562,7 +557,7 @@ protected void closeOp(boolean abort) throws HiveException { } super.closeOp(abort); out = null; - if (isInfoEnabled) { + if (isLogInfoEnabled) { LOG.info(toString() + ": records written - " + numRows); } recordCounter.set(numRows); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java index f386e5033773..87eaa8fe8f73 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java @@ -308,6 +308,16 @@ void displayBrokenPipeInfo() { return; } + private transient String tableName; + private transient String partitionName ; + + @Override + public void setInputContext(String inputPath, String tableName, String partitionName) { + this.tableName = tableName; + this.partitionName = partitionName; + super.setInputContext(inputPath, tableName, partitionName); + } + @Override public void processOp(Object row, int tag) throws HiveException { // initialize the user's process only when you receive the first row @@ -331,10 +341,8 @@ public void processOp(Object row, int tag) throws HiveException { String[] wrappedCmdArgs = addWrapper(cmdArgs); LOG.info("Executing " + Arrays.asList(wrappedCmdArgs)); - LOG.info("tablename=" - + hconf.get(HiveConf.ConfVars.HIVETABLENAME.varname)); - LOG.info("partname=" - + hconf.get(HiveConf.ConfVars.HIVEPARTITIONNAME.varname)); + LOG.info("tablename=" + tableName); + LOG.info("partname=" + partitionName); LOG.info("alias=" + alias); ProcessBuilder pb = new ProcessBuilder(wrappedCmdArgs); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 155002aebbb9..7443f8ae351f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -2042,15 +2042,21 @@ public static String getResourceFiles(Configuration conf, SessionState.ResourceT public static ClassLoader getSessionSpecifiedClassLoader() { SessionState state = SessionState.get(); if (state == null || state.getConf() == null) { - LOG.debug("Hive Conf not found or Session not initiated, use thread based class loader instead"); + if (LOG.isDebugEnabled()) { + LOG.debug("Hive Conf not found or Session not initiated, use thread based class loader instead"); + } return JavaUtils.getClassLoader(); } ClassLoader sessionCL = state.getConf().getClassLoader(); - if (sessionCL != null){ - LOG.debug("Use session specified class loader"); + if (sessionCL != null) { + if (LOG.isDebugEnabled()) { + LOG.debug("Use session specified class loader"); + } return sessionCL; } - LOG.debug("Session specified class loader not found, use thread based class loader"); + if (LOG.isDebugEnabled()) { + LOG.debug("Session specified class loader not found, use thread based class loader"); + } return JavaUtils.getClassLoader(); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java index 08df4470bdd9..250533ce7eb0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java @@ -40,14 +40,13 @@ public void process(Writable value) throws HiveException { // The row has been converted to comply with table schema, irrespective of partition schema. // So, use tblOI (and not partOI) for forwarding try { - if (isInfoEnabled) { - numRows += ((VectorizedRowBatch)value).size; - while (numRows > cntr) { - cntr *= 10; - LOG.info(toString() + ": records read - " + numRows); + int childrenDone = 0; + for (MapOpCtx current : currentCtxs) { + if (!current.forward(value)) { + childrenDone++; } } - forward(value, current.getRowObjectInspector()); + rowForwarded(childrenDone); } catch (Exception e) { throw new HiveException("Hive Runtime Error while processing row ", e); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java index b2b1a4132d3a..7c2def7df953 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java @@ -1188,7 +1188,9 @@ static Path findOriginalBucket(FileSystem fs, int bucket) throws IOException { for(FileStatus stat: fs.listStatus(directory)) { String name = stat.getPath().getName(); - if (Integer.parseInt(name.substring(0, name.indexOf('_'))) == bucket) { + String numberPart = name.substring(0, name.indexOf('_')); + if (org.apache.commons.lang3.StringUtils.isNumeric(numberPart) && + Integer.parseInt(numberPart) == bucket) { return stat.getPath(); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/TableDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/TableDesc.java index 78d4d1fac09b..62e3debd287c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/TableDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/TableDesc.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.Properties; +import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.common.JavaUtils; import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants; import org.apache.hadoop.hive.ql.exec.Utilities; @@ -76,12 +77,16 @@ public Class getInputFileFormatClass() { return inputFileFormatClass; } + public Deserializer getDeserializer() throws Exception { + return getDeserializer(null); + } + /** * Return a deserializer object corresponding to the tableDesc. */ - public Deserializer getDeserializer() throws Exception { + public Deserializer getDeserializer(Configuration conf) throws Exception { Deserializer de = getDeserializerClass().newInstance(); - SerDeUtils.initializeSerDe(de, null, properties, null); + SerDeUtils.initializeSerDe(de, conf, properties, null); return de; } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java index f12853ea2275..77ec3a1736d0 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java @@ -18,10 +18,7 @@ package org.apache.hadoop.hive.ql.exec; -import java.io.File; import java.io.IOException; -import java.io.OutputStream; -import java.io.PrintStream; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -32,7 +29,6 @@ import junit.framework.TestCase; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.Driver; @@ -49,8 +45,6 @@ import org.apache.hadoop.hive.ql.plan.ScriptDesc; import org.apache.hadoop.hive.ql.plan.SelectDesc; import org.apache.hadoop.hive.ql.plan.TableDesc; -import org.apache.hadoop.hive.ql.processors.CommandProcessor; -import org.apache.hadoop.hive.ql.processors.CommandProcessorFactory; import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.serde2.objectinspector.InspectableObject; @@ -60,12 +54,9 @@ import org.apache.hadoop.hive.serde2.objectinspector.StructField; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; -import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.InputSplit; import org.apache.hadoop.mapred.JobConf; -import org.apache.hadoop.mapred.RecordReader; -import org.apache.hadoop.mapred.Reporter; import org.apache.hadoop.mapred.TextInputFormat; import org.junit.Test; @@ -279,7 +270,7 @@ public void testMapOperator() throws Throwable { try { System.out.println("Testing Map Operator"); // initialize configuration - Configuration hconf = new JobConf(TestOperators.class); + JobConf hconf = new JobConf(TestOperators.class); HiveConf.setVar(hconf, HiveConf.ConfVars.HADOOPMAPFILENAME, "hdfs:///testDir/testFile"); IOContext.get(hconf.get(Utilities.INPUT_NAME)).setInputPath( diff --git a/ql/src/test/queries/clientpositive/join_vc.q b/ql/src/test/queries/clientpositive/join_vc.q index 63b3da7190f5..8d7dea9ef415 100644 --- a/ql/src/test/queries/clientpositive/join_vc.q +++ b/ql/src/test/queries/clientpositive/join_vc.q @@ -3,3 +3,10 @@ explain select t3.BLOCK__OFFSET__INSIDE__FILE,t3.key,t3.value from src t1 join src t2 on t1.key = t2.key join src t3 on t2.value = t3.value order by t3.BLOCK__OFFSET__INSIDE__FILE,t3.key,t3.value limit 3; select t3.BLOCK__OFFSET__INSIDE__FILE,t3.key,t3.value from src t1 join src t2 on t1.key = t2.key join src t3 on t2.value = t3.value order by t3.BLOCK__OFFSET__INSIDE__FILE,t3.key,t3.value limit 3; + +explain +select t2.BLOCK__OFFSET__INSIDE__FILE +from src t1 join src t2 on t1.key = t2.key where t1.key < 100; + +select t2.BLOCK__OFFSET__INSIDE__FILE +from src t1 join src t2 on t1.key = t2.key where t1.key < 100; diff --git a/ql/src/test/results/clientpositive/join_vc.q.out b/ql/src/test/results/clientpositive/join_vc.q.out index 12004cac9b47..58e1450651a6 100644 --- a/ql/src/test/results/clientpositive/join_vc.q.out +++ b/ql/src/test/results/clientpositive/join_vc.q.out @@ -137,3 +137,227 @@ POSTHOOK: Input: default@src 0 238 val_238 0 238 val_238 0 238 val_238 +PREHOOK: query: explain +select t2.BLOCK__OFFSET__INSIDE__FILE +from src t1 join src t2 on t1.key = t2.key where t1.key < 100 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select t2.BLOCK__OFFSET__INSIDE__FILE +from src t1 join src t2 on t1.key = t2.key where t1.key < 100 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: t2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key is not null and (key < 100)) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + value expressions: BLOCK__OFFSET__INSIDE__FILE (type: bigint) + TableScan + alias: t1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key is not null and (key < 100)) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 {VALUE._col1} + outputColumnNames: _col7 + Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col7 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select t2.BLOCK__OFFSET__INSIDE__FILE +from src t1 join src t2 on t1.key = t2.key where t1.key < 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: select t2.BLOCK__OFFSET__INSIDE__FILE +from src t1 join src t2 on t1.key = t2.key where t1.key < 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +2088 +2632 +968 +2088 +2632 +968 +2088 +2632 +968 +2846 +3170 +1720 +4362 +1720 +4362 +386 +2770 +386 +2770 +910 +5340 +5514 +5340 +5514 +2824 +4004 +1118 +4594 +1972 +4594 +1972 +2226 +5284 +2226 +5284 +34 +5616 +3494 +3592 +3192 +3138 +4012 +1238 +3138 +4012 +1238 +3138 +4012 +1238 +5626 +328 +5626 +328 +1218 +3388 +2030 +3298 +2030 +3298 +2330 +4068 +1198 +3060 +4540 +3864 +3060 +4540 +3864 +3060 +4540 +3864 +2308 +1462 +2308 +1462 +4186 +1440 +1024 +1906 +3128 +1906 +3128 +3516 +1592 +198 +1754 +5306 +1754 +5306 +3570 +3794 +4640 +4548 +3794 +4640 +4548 +3794 +4640 +4548 +2792 +1208 +2792 +1208 +3548 +3378 +3538 +3378 +3538 +2622 +3368 +1916 +4058 +396 +5070 +1674 +5070 +1674 +1872 +5606 +1872 +5606 +2612 +12 +2652 +5398 +2802 +5744 +4304 +2802 +5744 +4304 +2802 +5744 +4304 +1176 +3160 +2400 +3160 +2400 +2216 +5572 +5802 +5572 +5802 +92 +2458 +92 +2458 diff --git a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index e473ea956778..ab34d2d4759c 100644 --- a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -234,54 +234,62 @@ public static TServerSocket getServerSSLSocket(String hiveHost, int portNum, Str // retrieve delegation token for the given user public String getDelegationToken(String owner, String renewer) throws HiveSQLException { if (saslServer == null) { - throw new HiveSQLException("Delegation token only supported over kerberos authentication"); + throw new HiveSQLException( + "Delegation token only supported over kerberos authentication", "08S01"); } try { String tokenStr = saslServer.getDelegationTokenWithService(owner, renewer, HS2_CLIENT_TOKEN); if (tokenStr == null || tokenStr.isEmpty()) { - throw new HiveSQLException("Received empty retrieving delegation token for user " + owner); + throw new HiveSQLException( + "Received empty retrieving delegation token for user " + owner, "08S01"); } return tokenStr; } catch (IOException e) { - throw new HiveSQLException("Error retrieving delegation token for user " + owner, e); + throw new HiveSQLException( + "Error retrieving delegation token for user " + owner, "08S01", e); } catch (InterruptedException e) { - throw new HiveSQLException("delegation token retrieval interrupted", e); + throw new HiveSQLException("delegation token retrieval interrupted", "08S01", e); } } // cancel given delegation token public void cancelDelegationToken(String delegationToken) throws HiveSQLException { if (saslServer == null) { - throw new HiveSQLException("Delegation token only supported over kerberos authentication"); + throw new HiveSQLException( + "Delegation token only supported over kerberos authentication", "08S01"); } try { saslServer.cancelDelegationToken(delegationToken); } catch (IOException e) { - throw new HiveSQLException("Error canceling delegation token " + delegationToken, e); + throw new HiveSQLException( + "Error canceling delegation token " + delegationToken, "08S01", e); } } public void renewDelegationToken(String delegationToken) throws HiveSQLException { if (saslServer == null) { - throw new HiveSQLException("Delegation token only supported over kerberos authentication"); + throw new HiveSQLException( + "Delegation token only supported over kerberos authentication", "08S01"); } try { saslServer.renewDelegationToken(delegationToken); } catch (IOException e) { - throw new HiveSQLException("Error renewing delegation token " + delegationToken, e); + throw new HiveSQLException( + "Error renewing delegation token " + delegationToken, "08S01", e); } } public String getUserFromToken(String delegationToken) throws HiveSQLException { if (saslServer == null) { - throw new HiveSQLException("Delegation token only supported over kerberos authentication"); + throw new HiveSQLException( + "Delegation token only supported over kerberos authentication", "08S01"); } try { return saslServer.getUserFromToken(delegationToken); } catch (IOException e) { - throw new HiveSQLException("Error extracting user from delegation token " + delegationToken, - e); + throw new HiveSQLException( + "Error extracting user from delegation token " + delegationToken, "08S01", e); } } @@ -302,7 +310,7 @@ public static void verifyProxyAccess(String realUser, String proxyUser, String i } } catch (IOException e) { throw new HiveSQLException( - "Failed to validate proxy privilege of " + realUser + " for " + proxyUser, e); + "Failed to validate proxy privilege of " + realUser + " for " + proxyUser, "08S01", e); } } From 78881b6cc930fa97daf15e08930976b70f5f6644 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Wed, 22 Oct 2014 17:20:48 +0000 Subject: [PATCH 146/339] HIVE-8474 Vectorized reads of transactional tables fail when not all columns are selected (Alan Gates, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633657 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/vector/VectorizedBatchUtil.java | 393 ++++++++++-------- .../ql/exec/vector/VectorizedRowBatchCtx.java | 30 +- .../ql/io/orc/VectorizedOrcAcidRowReader.java | 20 +- .../acid_vectorization_partition.q | 10 + .../acid_vectorization_project.q | 11 + .../acid_vectorization_partition.q.out | 60 +++ .../acid_vectorization_project.q.out | 73 ++++ 7 files changed, 410 insertions(+), 187 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/acid_vectorization_partition.q create mode 100644 ql/src/test/queries/clientpositive/acid_vectorization_project.q create mode 100644 ql/src/test/results/clientpositive/acid_vectorization_partition.q.out create mode 100644 ql/src/test/results/clientpositive/acid_vectorization_project.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java index 1e24710f8774..514c6d68aad8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java @@ -23,6 +23,8 @@ import java.util.LinkedList; import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.common.type.HiveChar; import org.apache.hadoop.hive.common.type.HiveVarchar; import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr; @@ -50,6 +52,7 @@ import org.apache.hadoop.io.Text; public class VectorizedBatchUtil { + private static final Log LOG = LogFactory.getLog(VectorizedBatchUtil.class); /** * Sets the IsNull value for ColumnVector at specified index @@ -232,169 +235,237 @@ public static void addRowToBatchFrom(Object row, StructObjectInspector oi, final int off = colOffset; // Iterate thru the cols and load the batch for (int i = 0; i < fieldRefs.size(); i++) { - Object fieldData = oi.getStructFieldData(row, fieldRefs.get(i)); - ObjectInspector foi = fieldRefs.get(i).getFieldObjectInspector(); + setVector(row, oi, fieldRefs, batch, buffer, rowIndex, i, off); + } + } - // Vectorization only supports PRIMITIVE data types. Assert the same - assert (foi.getCategory() == Category.PRIMITIVE); + /** + * Iterates thru all the columns in a given row and populates the batch + * from a given offset + * + * @param row Deserialized row object + * @param oi Object insepector for that row + * @param rowIndex index to which the row should be added to batch + * @param batch Vectorized batch to which the row is added at rowIndex + * @param context context object for this vectorized batch + * @param buffer + * @throws HiveException + */ + public static void acidAddRowToBatch(Object row, + StructObjectInspector oi, + int rowIndex, + VectorizedRowBatch batch, + VectorizedRowBatchCtx context, + DataOutputBuffer buffer) throws HiveException { + List fieldRefs = oi.getAllStructFieldRefs(); + // Iterate thru the cols and load the batch + for (int i = 0; i < fieldRefs.size(); i++) { + if (batch.cols[i] == null) { + // This means the column was not included in the projection from the underlying read + continue; + } + if (context.isPartitionCol(i)) { + // The value will have already been set before we're called, so don't overwrite it + continue; + } + setVector(row, oi, fieldRefs, batch, buffer, rowIndex, i, 0); + } + } - // Get writable object - PrimitiveObjectInspector poi = (PrimitiveObjectInspector) foi; - Object writableCol = poi.getPrimitiveWritableObject(fieldData); + private static void setVector(Object row, + StructObjectInspector oi, + List fieldRefs, + VectorizedRowBatch batch, + DataOutputBuffer buffer, + int rowIndex, + int colIndex, + int offset) throws HiveException { - // NOTE: The default value for null fields in vectorization is 1 for int types, NaN for - // float/double. String types have no default value for null. - switch (poi.getPrimitiveCategory()) { - case BOOLEAN: { - LongColumnVector lcv = (LongColumnVector) batch.cols[off + i]; - if (writableCol != null) { - lcv.vector[rowIndex] = ((BooleanWritable) writableCol).get() ? 1 : 0; - lcv.isNull[rowIndex] = false; - } else { - lcv.vector[rowIndex] = 1; - setNullColIsNullValue(lcv, rowIndex); - } - } - break; - case BYTE: { - LongColumnVector lcv = (LongColumnVector) batch.cols[off + i]; - if (writableCol != null) { - lcv.vector[rowIndex] = ((ByteWritable) writableCol).get(); - lcv.isNull[rowIndex] = false; - } else { - lcv.vector[rowIndex] = 1; - setNullColIsNullValue(lcv, rowIndex); - } + Object fieldData = oi.getStructFieldData(row, fieldRefs.get(colIndex)); + ObjectInspector foi = fieldRefs.get(colIndex).getFieldObjectInspector(); + + // Vectorization only supports PRIMITIVE data types. Assert the same + assert (foi.getCategory() == Category.PRIMITIVE); + + // Get writable object + PrimitiveObjectInspector poi = (PrimitiveObjectInspector) foi; + Object writableCol = poi.getPrimitiveWritableObject(fieldData); + + // NOTE: The default value for null fields in vectorization is 1 for int types, NaN for + // float/double. String types have no default value for null. + switch (poi.getPrimitiveCategory()) { + case BOOLEAN: { + LongColumnVector lcv = (LongColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + lcv.vector[rowIndex] = ((BooleanWritable) writableCol).get() ? 1 : 0; + lcv.isNull[rowIndex] = false; + } else { + lcv.vector[rowIndex] = 1; + setNullColIsNullValue(lcv, rowIndex); } - break; - case SHORT: { - LongColumnVector lcv = (LongColumnVector) batch.cols[off + i]; - if (writableCol != null) { - lcv.vector[rowIndex] = ((ShortWritable) writableCol).get(); - lcv.isNull[rowIndex] = false; - } else { - lcv.vector[rowIndex] = 1; - setNullColIsNullValue(lcv, rowIndex); - } + } + break; + case BYTE: { + LongColumnVector lcv = (LongColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + lcv.vector[rowIndex] = ((ByteWritable) writableCol).get(); + lcv.isNull[rowIndex] = false; + } else { + lcv.vector[rowIndex] = 1; + setNullColIsNullValue(lcv, rowIndex); } - break; - case INT: { - LongColumnVector lcv = (LongColumnVector) batch.cols[off + i]; - if (writableCol != null) { - lcv.vector[rowIndex] = ((IntWritable) writableCol).get(); - lcv.isNull[rowIndex] = false; - } else { - lcv.vector[rowIndex] = 1; - setNullColIsNullValue(lcv, rowIndex); - } + } + break; + case SHORT: { + LongColumnVector lcv = (LongColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + lcv.vector[rowIndex] = ((ShortWritable) writableCol).get(); + lcv.isNull[rowIndex] = false; + } else { + lcv.vector[rowIndex] = 1; + setNullColIsNullValue(lcv, rowIndex); } - break; - case LONG: { - LongColumnVector lcv = (LongColumnVector) batch.cols[off + i]; - if (writableCol != null) { - lcv.vector[rowIndex] = ((LongWritable) writableCol).get(); - lcv.isNull[rowIndex] = false; - } else { - lcv.vector[rowIndex] = 1; - setNullColIsNullValue(lcv, rowIndex); - } + } + break; + case INT: { + LongColumnVector lcv = (LongColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + lcv.vector[rowIndex] = ((IntWritable) writableCol).get(); + lcv.isNull[rowIndex] = false; + } else { + lcv.vector[rowIndex] = 1; + setNullColIsNullValue(lcv, rowIndex); } - break; - case DATE: { - LongColumnVector lcv = (LongColumnVector) batch.cols[off + i]; - if (writableCol != null) { - lcv.vector[rowIndex] = ((DateWritable) writableCol).getDays(); - lcv.isNull[rowIndex] = false; - } else { - lcv.vector[rowIndex] = 1; - setNullColIsNullValue(lcv, rowIndex); - } + } + break; + case LONG: { + LongColumnVector lcv = (LongColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + lcv.vector[rowIndex] = ((LongWritable) writableCol).get(); + lcv.isNull[rowIndex] = false; + } else { + lcv.vector[rowIndex] = 1; + setNullColIsNullValue(lcv, rowIndex); } - break; - case FLOAT: { - DoubleColumnVector dcv = (DoubleColumnVector) batch.cols[off + i]; - if (writableCol != null) { - dcv.vector[rowIndex] = ((FloatWritable) writableCol).get(); - dcv.isNull[rowIndex] = false; - } else { - dcv.vector[rowIndex] = Double.NaN; - setNullColIsNullValue(dcv, rowIndex); - } + } + break; + case DATE: { + LongColumnVector lcv = (LongColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + lcv.vector[rowIndex] = ((DateWritable) writableCol).getDays(); + lcv.isNull[rowIndex] = false; + } else { + lcv.vector[rowIndex] = 1; + setNullColIsNullValue(lcv, rowIndex); } - break; - case DOUBLE: { - DoubleColumnVector dcv = (DoubleColumnVector) batch.cols[off + i]; - if (writableCol != null) { - dcv.vector[rowIndex] = ((DoubleWritable) writableCol).get(); - dcv.isNull[rowIndex] = false; - } else { - dcv.vector[rowIndex] = Double.NaN; - setNullColIsNullValue(dcv, rowIndex); - } + } + break; + case FLOAT: { + DoubleColumnVector dcv = (DoubleColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + dcv.vector[rowIndex] = ((FloatWritable) writableCol).get(); + dcv.isNull[rowIndex] = false; + } else { + dcv.vector[rowIndex] = Double.NaN; + setNullColIsNullValue(dcv, rowIndex); } - break; - case TIMESTAMP: { - LongColumnVector lcv = (LongColumnVector) batch.cols[off + i]; - if (writableCol != null) { - Timestamp t = ((TimestampWritable) writableCol).getTimestamp(); - lcv.vector[rowIndex] = TimestampUtils.getTimeNanoSec(t); - lcv.isNull[rowIndex] = false; - } else { - lcv.vector[rowIndex] = 1; - setNullColIsNullValue(lcv, rowIndex); - } + } + break; + case DOUBLE: { + DoubleColumnVector dcv = (DoubleColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + dcv.vector[rowIndex] = ((DoubleWritable) writableCol).get(); + dcv.isNull[rowIndex] = false; + } else { + dcv.vector[rowIndex] = Double.NaN; + setNullColIsNullValue(dcv, rowIndex); } - break; - case BINARY: { - BytesColumnVector bcv = (BytesColumnVector) batch.cols[off + i]; - if (writableCol != null) { - bcv.isNull[rowIndex] = false; - BytesWritable bw = (BytesWritable) writableCol; - byte[] bytes = bw.getBytes(); - int start = buffer.getLength(); - int length = bytes.length; - try { - buffer.write(bytes, 0, length); - } catch (IOException ioe) { - throw new IllegalStateException("bad write", ioe); - } - bcv.setRef(rowIndex, buffer.getData(), start, length); - } else { - setNullColIsNullValue(bcv, rowIndex); - } + } + break; + case TIMESTAMP: { + LongColumnVector lcv = (LongColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + Timestamp t = ((TimestampWritable) writableCol).getTimestamp(); + lcv.vector[rowIndex] = TimestampUtils.getTimeNanoSec(t); + lcv.isNull[rowIndex] = false; + } else { + lcv.vector[rowIndex] = 1; + setNullColIsNullValue(lcv, rowIndex); } - break; - case STRING: { - BytesColumnVector bcv = (BytesColumnVector) batch.cols[off + i]; - if (writableCol != null) { + } + break; + case BINARY: { + BytesColumnVector bcv = (BytesColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { bcv.isNull[rowIndex] = false; - Text colText = (Text) writableCol; + BytesWritable bw = (BytesWritable) writableCol; + byte[] bytes = bw.getBytes(); int start = buffer.getLength(); - int length = colText.getLength(); + int length = bytes.length; try { - buffer.write(colText.getBytes(), 0, length); + buffer.write(bytes, 0, length); } catch (IOException ioe) { throw new IllegalStateException("bad write", ioe); } bcv.setRef(rowIndex, buffer.getData(), start, length); - } else { - setNullColIsNullValue(bcv, rowIndex); + } else { + setNullColIsNullValue(bcv, rowIndex); + } + } + break; + case STRING: { + BytesColumnVector bcv = (BytesColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + bcv.isNull[rowIndex] = false; + Text colText = (Text) writableCol; + int start = buffer.getLength(); + int length = colText.getLength(); + try { + buffer.write(colText.getBytes(), 0, length); + } catch (IOException ioe) { + throw new IllegalStateException("bad write", ioe); } + bcv.setRef(rowIndex, buffer.getData(), start, length); + } else { + setNullColIsNullValue(bcv, rowIndex); } - break; - case CHAR: { - BytesColumnVector bcv = (BytesColumnVector) batch.cols[off + i]; + } + break; + case CHAR: { + BytesColumnVector bcv = (BytesColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + bcv.isNull[rowIndex] = false; + HiveChar colHiveChar = ((HiveCharWritable) writableCol).getHiveChar(); + byte[] bytes = colHiveChar.getStrippedValue().getBytes(); + + // We assume the CHAR maximum length was enforced when the object was created. + int length = bytes.length; + + int start = buffer.getLength(); + try { + // In vector mode, we store CHAR as unpadded. + buffer.write(bytes, 0, length); + } catch (IOException ioe) { + throw new IllegalStateException("bad write", ioe); + } + bcv.setRef(rowIndex, buffer.getData(), start, length); + } else { + setNullColIsNullValue(bcv, rowIndex); + } + } + break; + case VARCHAR: { + BytesColumnVector bcv = (BytesColumnVector) batch.cols[offset + colIndex]; if (writableCol != null) { bcv.isNull[rowIndex] = false; - HiveChar colHiveChar = ((HiveCharWritable) writableCol).getHiveChar(); - byte[] bytes = colHiveChar.getStrippedValue().getBytes(); - - // We assume the CHAR maximum length was enforced when the object was created. + HiveVarchar colHiveVarchar = ((HiveVarcharWritable) writableCol).getHiveVarchar(); + byte[] bytes = colHiveVarchar.getValue().getBytes(); + + // We assume the VARCHAR maximum length was enforced when the object was created. int length = bytes.length; int start = buffer.getLength(); try { - // In vector mode, we store CHAR as unpadded. buffer.write(bytes, 0, length); } catch (IOException ioe) { throw new IllegalStateException("bad write", ioe); @@ -405,45 +476,21 @@ public static void addRowToBatchFrom(Object row, StructObjectInspector oi, } } break; - case VARCHAR: { - BytesColumnVector bcv = (BytesColumnVector) batch.cols[off + i]; - if (writableCol != null) { - bcv.isNull[rowIndex] = false; - HiveVarchar colHiveVarchar = ((HiveVarcharWritable) writableCol).getHiveVarchar(); - byte[] bytes = colHiveVarchar.getValue().getBytes(); - - // We assume the VARCHAR maximum length was enforced when the object was created. - int length = bytes.length; - - int start = buffer.getLength(); - try { - buffer.write(bytes, 0, length); - } catch (IOException ioe) { - throw new IllegalStateException("bad write", ioe); - } - bcv.setRef(rowIndex, buffer.getData(), start, length); - } else { - setNullColIsNullValue(bcv, rowIndex); - } - } - break; - case DECIMAL: - DecimalColumnVector dcv = (DecimalColumnVector) batch.cols[off + i]; - if (writableCol != null) { - dcv.isNull[rowIndex] = false; - HiveDecimalWritable wobj = (HiveDecimalWritable) writableCol; - dcv.vector[rowIndex].update(wobj.getHiveDecimal().unscaledValue(), - (short) wobj.getScale()); - } else { - setNullColIsNullValue(dcv, rowIndex); - } - break; - default: - throw new HiveException("Vectorizaton is not supported for datatype:" - + poi.getPrimitiveCategory()); + case DECIMAL: + DecimalColumnVector dcv = (DecimalColumnVector) batch.cols[offset + colIndex]; + if (writableCol != null) { + dcv.isNull[rowIndex] = false; + HiveDecimalWritable wobj = (HiveDecimalWritable) writableCol; + dcv.vector[rowIndex].update(wobj.getHiveDecimal().unscaledValue(), + (short) wobj.getScale()); + } else { + setNullColIsNullValue(dcv, rowIndex); } + break; + default: + throw new HiveException("Vectorizaton is not supported for datatype:" + + poi.getPrimitiveCategory()); } } - } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java index 22f5f5eb3bdc..81a8ee73bca5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java @@ -22,10 +22,12 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -84,7 +86,11 @@ public class VectorizedRowBatchCtx { private Map partitionValues; //partition types - private Map partitionTypes; + private Map partitionTypes; + + // partition column positions, for use by classes that need to know whether a given column is a + // partition column + private Set partitionCols; // Column projection list - List of column indexes to include. This // list does not contain partition columns @@ -203,12 +209,13 @@ public void init(Configuration hiveConf, FileSplit split) throws ClassNotFoundEx // Check to see if this split is part of a partition of a table String pcols = partProps.getProperty(hive_metastoreConstants.META_TABLE_PARTITION_COLUMNS); + String[] partKeys = null; if (pcols != null && pcols.length() > 0) { // Partitions exist for this table. Get the partition object inspector and // raw row object inspector (row with out partition col) LinkedHashMap partSpec = part.getPartSpec(); - String[] partKeys = pcols.trim().split("/"); + partKeys = pcols.trim().split("/"); String pcolTypes = partProps.getProperty(hive_metastoreConstants.META_TABLE_PARTITION_COLUMN_TYPES); String[] partKeyTypes = pcolTypes.trim().split(":"); @@ -262,6 +269,15 @@ public void init(Configuration hiveConf, FileSplit split) throws ClassNotFoundEx .asList(new StructObjectInspector[] {partRawRowObjectInspector, partObjectInspector})); rowOI = rowObjectInspector; rawRowOI = partRawRowObjectInspector; + + // We have to do this after we've set rowOI, as getColIndexBasedOnColName uses it + partitionCols = new HashSet(); + if (pcols != null && pcols.length() > 0) { + for (int i = 0; i < partKeys.length; i++) { + partitionCols.add(getColIndexBasedOnColName(partKeys[i])); + } + } + } else { // No partitions for this table, hence row OI equals raw row OI @@ -586,6 +602,16 @@ public void addPartitionColsToBatch(VectorizedRowBatch batch) throws HiveExcepti } } + /** + * Determine whether a given column is a partition column + * @param colnum column number in + * {@link org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch}s created by this context. + * @return true if it is a partition column, false otherwise + */ + public final boolean isPartitionCol(int colnum) { + return (partitionCols == null) ? false : partitionCols.contains(colnum); + } + private void addScratchColumnsToBatch(VectorizedRowBatch vrb) throws HiveException { if (columnTypeMap != null && !columnTypeMap.isEmpty()) { int origNumCols = vrb.numCols; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/VectorizedOrcAcidRowReader.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/VectorizedOrcAcidRowReader.java index ca90fc5c7373..a8e5c2e66c33 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/VectorizedOrcAcidRowReader.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/VectorizedOrcAcidRowReader.java @@ -48,7 +48,6 @@ class VectorizedOrcAcidRowReader private final OrcStruct value; private final VectorizedRowBatchCtx rowBatchCtx; private final ObjectInspector objectInspector; - private boolean needToSetPartition = true; private final DataOutputBuffer buffer = new DataOutputBuffer(); VectorizedOrcAcidRowReader(AcidInputFormat.RowReader inner, @@ -83,23 +82,20 @@ public boolean next(NullWritable nullWritable, if (!innerReader.next(key, value)) { return false; } - if (needToSetPartition) { - try { - rowBatchCtx.addPartitionColsToBatch(vectorizedRowBatch); - } catch (HiveException e) { - throw new IOException("Problem adding partition column", e); - } - needToSetPartition = false; + try { + rowBatchCtx.addPartitionColsToBatch(vectorizedRowBatch); + } catch (HiveException e) { + throw new IOException("Problem adding partition column", e); } try { - VectorizedBatchUtil.addRowToBatch(value, + VectorizedBatchUtil.acidAddRowToBatch(value, (StructObjectInspector) objectInspector, - vectorizedRowBatch.size++, vectorizedRowBatch, buffer); + vectorizedRowBatch.size++, vectorizedRowBatch, rowBatchCtx, buffer); while (vectorizedRowBatch.size < vectorizedRowBatch.selected.length && innerReader.next(key, value)) { - VectorizedBatchUtil.addRowToBatch(value, + VectorizedBatchUtil.acidAddRowToBatch(value, (StructObjectInspector) objectInspector, - vectorizedRowBatch.size++, vectorizedRowBatch, buffer); + vectorizedRowBatch.size++, vectorizedRowBatch, rowBatchCtx, buffer); } } catch (HiveException he) { throw new IOException("error iterating", he); diff --git a/ql/src/test/queries/clientpositive/acid_vectorization_partition.q b/ql/src/test/queries/clientpositive/acid_vectorization_partition.q new file mode 100644 index 000000000000..9348d05d5030 --- /dev/null +++ b/ql/src/test/queries/clientpositive/acid_vectorization_partition.q @@ -0,0 +1,10 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +CREATE TABLE acid_vectorized_part(a INT, b STRING) partitioned by (ds string) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true'); +insert into table acid_vectorized_part partition (ds = 'today') select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10; +insert into table acid_vectorized_part partition (ds = 'tomorrow') select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10; +set hive.vectorized.execution.enabled=true; +select * from acid_vectorized_part order by a, b; diff --git a/ql/src/test/queries/clientpositive/acid_vectorization_project.q b/ql/src/test/queries/clientpositive/acid_vectorization_project.q new file mode 100644 index 000000000000..a44b57aec36f --- /dev/null +++ b/ql/src/test/queries/clientpositive/acid_vectorization_project.q @@ -0,0 +1,11 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +CREATE TABLE acid_vectorized(a INT, b STRING, c float) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true'); +insert into table acid_vectorized select cint, cstring1, cfloat from alltypesorc where cint is not null order by cint limit 10; +set hive.vectorized.execution.enabled=true; +select a,b from acid_vectorized order by a; +select a,c from acid_vectorized order by a; +select b,c from acid_vectorized order by b; diff --git a/ql/src/test/results/clientpositive/acid_vectorization_partition.q.out b/ql/src/test/results/clientpositive/acid_vectorization_partition.q.out new file mode 100644 index 000000000000..ee97cc928533 --- /dev/null +++ b/ql/src/test/results/clientpositive/acid_vectorization_partition.q.out @@ -0,0 +1,60 @@ +PREHOOK: query: CREATE TABLE acid_vectorized_part(a INT, b STRING) partitioned by (ds string) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_vectorized_part +POSTHOOK: query: CREATE TABLE acid_vectorized_part(a INT, b STRING) partitioned by (ds string) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_vectorized_part +PREHOOK: query: insert into table acid_vectorized_part partition (ds = 'today') select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_vectorized_part@ds=today +POSTHOOK: query: insert into table acid_vectorized_part partition (ds = 'today') select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_vectorized_part@ds=today +POSTHOOK: Lineage: acid_vectorized_part PARTITION(ds=today).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_vectorized_part PARTITION(ds=today).b SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: insert into table acid_vectorized_part partition (ds = 'tomorrow') select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_vectorized_part@ds=tomorrow +POSTHOOK: query: insert into table acid_vectorized_part partition (ds = 'tomorrow') select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_vectorized_part@ds=tomorrow +POSTHOOK: Lineage: acid_vectorized_part PARTITION(ds=tomorrow).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_vectorized_part PARTITION(ds=tomorrow).b SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: select * from acid_vectorized_part order by a, b +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized_part +PREHOOK: Input: default@acid_vectorized_part@ds=today +PREHOOK: Input: default@acid_vectorized_part@ds=tomorrow +#### A masked pattern was here #### +POSTHOOK: query: select * from acid_vectorized_part order by a, b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized_part +POSTHOOK: Input: default@acid_vectorized_part@ds=today +POSTHOOK: Input: default@acid_vectorized_part@ds=tomorrow +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa today +-1073279343 oj1YrV5Wa tomorrow +-1073051226 A34p7oRr2WvUJNf tomorrow +-1073051226 A34p7oRr2WvUJNf today +-1072910839 0iqrc5 tomorrow +-1072910839 0iqrc5 today +-1072081801 dPkN74F7 today +-1072081801 dPkN74F7 tomorrow +-1072076362 2uLyD28144vklju213J1mr today +-1072076362 2uLyD28144vklju213J1mr tomorrow +-1071480828 aw724t8c5558x2xneC624 tomorrow +-1071480828 aw724t8c5558x2xneC624 today +-1071363017 Anj0oF today +-1071363017 Anj0oF tomorrow +-1070883071 0ruyd6Y50JpdGRf6HqD tomorrow +-1070883071 0ruyd6Y50JpdGRf6HqD today +-1070551679 iUR3Q today +-1070551679 iUR3Q tomorrow +-1069736047 k17Am8uPHWk02cEf1jet tomorrow +-1069736047 k17Am8uPHWk02cEf1jet today diff --git a/ql/src/test/results/clientpositive/acid_vectorization_project.q.out b/ql/src/test/results/clientpositive/acid_vectorization_project.q.out new file mode 100644 index 000000000000..1bdacb9a766a --- /dev/null +++ b/ql/src/test/results/clientpositive/acid_vectorization_project.q.out @@ -0,0 +1,73 @@ +PREHOOK: query: CREATE TABLE acid_vectorized(a INT, b STRING, c float) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_vectorized +POSTHOOK: query: CREATE TABLE acid_vectorized(a INT, b STRING, c float) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_vectorized +PREHOOK: query: insert into table acid_vectorized select cint, cstring1, cfloat from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_vectorized +POSTHOOK: query: insert into table acid_vectorized select cint, cstring1, cfloat from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_vectorized +POSTHOOK: Lineage: acid_vectorized.a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_vectorized.b SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: acid_vectorized.c SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ] +PREHOOK: query: select a,b from acid_vectorized order by a +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +POSTHOOK: query: select a,b from acid_vectorized order by a +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa +-1073051226 A34p7oRr2WvUJNf +-1072910839 0iqrc5 +-1072081801 dPkN74F7 +-1072076362 2uLyD28144vklju213J1mr +-1071480828 aw724t8c5558x2xneC624 +-1071363017 Anj0oF +-1070883071 0ruyd6Y50JpdGRf6HqD +-1070551679 iUR3Q +-1069736047 k17Am8uPHWk02cEf1jet +PREHOOK: query: select a,c from acid_vectorized order by a +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +POSTHOOK: query: select a,c from acid_vectorized order by a +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +-1073279343 11.0 +-1073051226 NULL +-1072910839 11.0 +-1072081801 NULL +-1072076362 NULL +-1071480828 -51.0 +-1071363017 8.0 +-1070883071 NULL +-1070551679 NULL +-1069736047 11.0 +PREHOOK: query: select b,c from acid_vectorized order by b +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +POSTHOOK: query: select b,c from acid_vectorized order by b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +0iqrc5 11.0 +0ruyd6Y50JpdGRf6HqD NULL +2uLyD28144vklju213J1mr NULL +A34p7oRr2WvUJNf NULL +Anj0oF 8.0 +aw724t8c5558x2xneC624 -51.0 +dPkN74F7 NULL +iUR3Q NULL +k17Am8uPHWk02cEf1jet 11.0 +oj1YrV5Wa 11.0 From 9ae7f999cd2b5635527c4d538d68e664118cd8be Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 22 Oct 2014 17:57:36 +0000 Subject: [PATCH 147/339] HIVE-6934 : PartitionPruner doesn't handle top level constant expression correctly (Hari Sankar via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633666 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/optimizer/ppr/PartitionPruner.java | 98 +++--- .../clientpositive/partition_boolexpr.q | 12 + .../clientpositive/partition_boolexpr.q.out | 299 ++++++++++++++++++ 3 files changed, 372 insertions(+), 37 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/partition_boolexpr.q create mode 100644 ql/src/test/results/clientpositive/partition_boolexpr.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java index e43d39f0f074..1796b7bb287c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java @@ -56,7 +56,9 @@ import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPOr; +import org.apache.hadoop.hive.serde.serdeConstants; import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector; +import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; /** @@ -188,12 +190,18 @@ public static PrunedPartitionList prune(Table tab, ExprNodeDesc prunerExpr, // Replace virtual columns with nulls. See javadoc for details. prunerExpr = removeNonPartCols(prunerExpr, extractPartColNames(tab), partColsUsedInFilter); // Remove all parts that are not partition columns. See javadoc for details. - ExprNodeGenericFuncDesc compactExpr = (ExprNodeGenericFuncDesc)compactExpr(prunerExpr.clone()); + ExprNodeDesc compactExpr = compactExpr(prunerExpr.clone()); String oldFilter = prunerExpr.getExprString(); - if (compactExpr == null) { - // Non-strict mode, and all the predicates are on non-partition columns - get everything. - LOG.debug("Filter " + oldFilter + " was null after compacting"); - return getAllPartsFromCacheOrServer(tab, key, true, prunedPartitionsMap); + if (isBooleanExpr(compactExpr)) { + // For null and true values, return every partition + if (!isFalseExpr(compactExpr)) { + // Non-strict mode, and all the predicates are on non-partition columns - get everything. + LOG.debug("Filter " + oldFilter + " was null after compacting"); + return getAllPartsFromCacheOrServer(tab, key, true, prunedPartitionsMap); + } else { + return new PrunedPartitionList(tab, new LinkedHashSet(new ArrayList()), + new ArrayList(), false); + } } LOG.debug("Filter w/ compacting: " + compactExpr.getExprString() + "; filter w/o compacting: " + oldFilter); @@ -204,7 +212,7 @@ public static PrunedPartitionList prune(Table tab, ExprNodeDesc prunerExpr, return ppList; } - ppList = getPartitionsFromServer(tab, compactExpr, conf, alias, partColsUsedInFilter, oldFilter.equals(compactExpr.getExprString())); + ppList = getPartitionsFromServer(tab, (ExprNodeGenericFuncDesc)compactExpr, conf, alias, partColsUsedInFilter, oldFilter.equals(compactExpr.getExprString())); prunedPartitionsMap.put(key, ppList); return ppList; } @@ -225,16 +233,22 @@ private static PrunedPartitionList getAllPartsFromCacheOrServer(Table tab, Strin partsCache.put(key, ppList); return ppList; } - - private static ExprNodeDesc removeTruePredciates(ExprNodeDesc e) { - if (e instanceof ExprNodeConstantDesc) { - ExprNodeConstantDesc eC = (ExprNodeConstantDesc) e; - if (e.getTypeInfo() == TypeInfoFactory.booleanTypeInfo - && eC.getValue() == Boolean.TRUE) { - return null; - } - } - return e; + + static private boolean isBooleanExpr(ExprNodeDesc expr) { + return expr != null && expr instanceof ExprNodeConstantDesc && + ((ExprNodeConstantDesc)expr).getTypeInfo() instanceof PrimitiveTypeInfo && + ((PrimitiveTypeInfo)(((ExprNodeConstantDesc)expr).getTypeInfo())). + getTypeName().equals(serdeConstants.BOOLEAN_TYPE_NAME); + } + static private boolean isTrueExpr(ExprNodeDesc expr) { + return isBooleanExpr(expr) && + ((ExprNodeConstantDesc)expr).getValue() != null && + ((ExprNodeConstantDesc)expr).getValue().equals(Boolean.TRUE); + } + static private boolean isFalseExpr(ExprNodeDesc expr) { + return isBooleanExpr(expr) && + ((ExprNodeConstantDesc)expr).getValue() != null && + ((ExprNodeConstantDesc)expr).getValue().equals(Boolean.FALSE); } /** @@ -245,10 +259,13 @@ private static ExprNodeDesc removeTruePredciates(ExprNodeDesc e) { * @return partition pruning expression that only contains partition columns. */ static private ExprNodeDesc compactExpr(ExprNodeDesc expr) { - if (expr instanceof ExprNodeConstantDesc) { - expr = removeTruePredciates(expr); - if (expr == null || ((ExprNodeConstantDesc)expr).getValue() == null) { - return null; + // If this is a constant boolean expression, return the value. + if (expr == null) { + return null; + } + if (expr instanceof ExprNodeConstantDesc) { + if (isBooleanExpr(expr)) { + return expr; } else { throw new IllegalStateException("Unexpected non-null ExprNodeConstantDesc: " + expr.getExprString()); @@ -256,22 +273,29 @@ static private ExprNodeDesc compactExpr(ExprNodeDesc expr) { } else if (expr instanceof ExprNodeGenericFuncDesc) { GenericUDF udf = ((ExprNodeGenericFuncDesc)expr).getGenericUDF(); boolean isAnd = udf instanceof GenericUDFOPAnd; - if (isAnd || udf instanceof GenericUDFOPOr) { + boolean isOr = udf instanceof GenericUDFOPOr; + + if (isAnd || isOr) { List children = expr.getChildren(); - ExprNodeDesc left = removeTruePredciates(children.get(0)); - children.set(0, left == null ? null : compactExpr(left)); - ExprNodeDesc right = removeTruePredciates(children.get(1)); - children.set(1, right == null ? null : compactExpr(right)); - - // Note that one does not simply compact (not-null or null) to not-null. - // Only if we have an "and" is it valid to send one side to metastore. - if (children.get(0) == null && children.get(1) == null) { - return null; - } else if (children.get(0) == null) { - return isAnd ? children.get(1) : null; - } else if (children.get(1) == null) { - return isAnd ? children.get(0) : null; - } + ExprNodeDesc left = children.get(0); + children.set(0, compactExpr(left)); + ExprNodeDesc right = children.get(1); + children.set(1, compactExpr(right)); + + if (isTrueExpr(children.get(0)) && isTrueExpr(children.get(1))) { + return new ExprNodeConstantDesc(Boolean.TRUE); + } else if (isTrueExpr(children.get(0))) { + return isAnd ? children.get(1) : new ExprNodeConstantDesc(Boolean.TRUE); + } else if (isTrueExpr(children.get(1))) { + return isAnd ? children.get(0) : new ExprNodeConstantDesc(Boolean.TRUE); + } else if (isFalseExpr(children.get(0)) && isFalseExpr(children.get(1))) { + return new ExprNodeConstantDesc(Boolean.FALSE); + } else if (isFalseExpr(children.get(0))) { + return isAnd ? new ExprNodeConstantDesc(Boolean.FALSE) : children.get(1); + } else if (isFalseExpr(children.get(1))) { + return isAnd ? new ExprNodeConstantDesc(Boolean.FALSE) : children.get(0); + } + } return expr; } else { @@ -296,9 +320,9 @@ static private ExprNodeDesc removeNonPartCols(ExprNodeDesc expr, List pa if (!partCols.contains(column)) { // Column doesn't appear to be a partition column for the table. return new ExprNodeConstantDesc(expr.getTypeInfo(), null); - } + } referred.add(column); - } + } if (expr instanceof ExprNodeGenericFuncDesc) { List children = expr.getChildren(); for (int i = 0; i < children.size(); ++i) { diff --git a/ql/src/test/queries/clientpositive/partition_boolexpr.q b/ql/src/test/queries/clientpositive/partition_boolexpr.q new file mode 100644 index 000000000000..3394d7da5414 --- /dev/null +++ b/ql/src/test/queries/clientpositive/partition_boolexpr.q @@ -0,0 +1,12 @@ +-- create testing table. +create table part_boolexpr(key int, value string) partitioned by (dt int, ts string); + +-- both the below queries should return 0 rows +select count(*) from part_boolexpr where key = 'abc'; +select * from part_boolexpr where dt = 'abc'; +explain select count(1) from srcpart where true; +explain select count(1) from srcpart where false; +explain select count(1) from srcpart where true and hr='11'; +explain select count(1) from srcpart where true or hr='11'; +explain select count(1) from srcpart where false or hr='11'; +explain select count(1) from srcpart where false and hr='11'; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/partition_boolexpr.q.out b/ql/src/test/results/clientpositive/partition_boolexpr.q.out new file mode 100644 index 000000000000..7d414ff7a2eb --- /dev/null +++ b/ql/src/test/results/clientpositive/partition_boolexpr.q.out @@ -0,0 +1,299 @@ +PREHOOK: query: -- create testing table. +create table part_boolexpr(key int, value string) partitioned by (dt int, ts string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@part_boolexpr +POSTHOOK: query: -- create testing table. +create table part_boolexpr(key int, value string) partitioned by (dt int, ts string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@part_boolexpr +PREHOOK: query: -- both the below queries should return 0 rows +select count(*) from part_boolexpr where key = 'abc' +PREHOOK: type: QUERY +PREHOOK: Input: default@part_boolexpr +#### A masked pattern was here #### +POSTHOOK: query: -- both the below queries should return 0 rows +select count(*) from part_boolexpr where key = 'abc' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@part_boolexpr +#### A masked pattern was here #### +0 +PREHOOK: query: select * from part_boolexpr where dt = 'abc' +PREHOOK: type: QUERY +PREHOOK: Input: default@part_boolexpr +#### A masked pattern was here #### +POSTHOOK: query: select * from part_boolexpr where dt = 'abc' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@part_boolexpr +#### A masked pattern was here #### +PREHOOK: query: explain select count(1) from srcpart where true +PREHOOK: type: QUERY +POSTHOOK: query: explain select count(1) from srcpart where true +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: srcpart + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Select Operator + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(1) + 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) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select count(1) from srcpart where false +PREHOOK: type: QUERY +POSTHOOK: query: explain select count(1) from srcpart where false +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select count(1) from srcpart where true and hr='11' +PREHOOK: type: QUERY +POSTHOOK: query: explain select count(1) from srcpart where true and hr='11' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: srcpart + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Select Operator + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(1) + 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) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select count(1) from srcpart where true or hr='11' +PREHOOK: type: QUERY +POSTHOOK: query: explain select count(1) from srcpart where true or hr='11' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: srcpart + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Select Operator + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(1) + 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) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select count(1) from srcpart where false or hr='11' +PREHOOK: type: QUERY +POSTHOOK: query: explain select count(1) from srcpart where false or hr='11' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: srcpart + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Select Operator + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(1) + 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) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain select count(1) from srcpart where false and hr='11' +PREHOOK: type: QUERY +POSTHOOK: query: explain select count(1) from srcpart where false and hr='11' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + From afc669c7ae8340b502d62db81053c8cdd8de685a Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Wed, 22 Oct 2014 19:38:48 +0000 Subject: [PATCH 148/339] HIVE-8551 : NPE in FunctionRegistry (affects CBO in negative tests) (Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633694 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/FunctionRegistry.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java index 03f427b91edb..62400dd0bf43 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java @@ -1964,17 +1964,18 @@ public static void registerTableFunction(String name, Class Date: Wed, 22 Oct 2014 20:17:17 +0000 Subject: [PATCH 149/339] HIVE-8490 : Constant folding should happen before partition pruning (Ashutosh Chauhan via Prasnth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633707 13f79535-47bb-0310-9956-ffa450edef68 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java index a0f994348b36..3e325589b7ee 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java @@ -63,13 +63,12 @@ public void initialize(HiveConf hiveConf) { transformations.add(new PredicateTransitivePropagate()); transformations.add(new SyntheticJoinPredicate()); transformations.add(new PredicatePushDown()); - transformations.add(new PartitionPruner()); } if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTCONSTANTPROPAGATION)) { transformations.add(new ConstantPropagate()); } - if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTPPD)) { + transformations.add(new PartitionPruner()); transformations.add(new PartitionConditionRemover()); if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTLISTBUCKETING)) { /* Add list bucketing pruner. */ From feb50d303033ab91e7fefe0b78285a1e5c4359f9 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 22 Oct 2014 20:19:17 +0000 Subject: [PATCH 150/339] HIVE-8530 : CBO: Preserve types of literals (John Pullokkaran via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633708 13f79535-47bb-0310-9956-ffa450edef68 --- .../optiq/translator/ASTBuilder.java | 34 ++++++++++++++++--- .../optiq/translator/ASTConverter.java | 13 +++++-- .../optiq/translator/RexNodeConverter.java | 2 +- 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java index 98723a37f8ed..276ce894a1f1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java @@ -136,6 +136,10 @@ static ASTNode selectExpr(ASTNode expr, String alias) { } static ASTNode literal(RexLiteral literal) { + return literal(literal, false); + } + + static ASTNode literal(RexLiteral literal, boolean useTypeQualInLiteral) { Object val = null; int type = 0; SqlTypeName sqlType = literal.getType().getSqlTypeName(); @@ -147,24 +151,44 @@ static ASTNode literal(RexLiteral literal) { type = HiveParser.BigintLiteral; break; case TINYINT: - val = literal.getValue3(); + if (useTypeQualInLiteral) { + val = literal.getValue3() + "Y"; + } else { + val = literal.getValue3(); + } type = HiveParser.TinyintLiteral; break; case SMALLINT: - val = literal.getValue3(); + if (useTypeQualInLiteral) { + val = literal.getValue3() + "S"; + } else { + val = literal.getValue3(); + } type = HiveParser.SmallintLiteral; break; case INTEGER: case BIGINT: - val = literal.getValue3(); + if (useTypeQualInLiteral) { + val = literal.getValue3() + "L"; + } else { + val = literal.getValue3(); + } type = HiveParser.BigintLiteral; break; case DOUBLE: - val = literal.getValue3() + "D"; + if (useTypeQualInLiteral) { + val = literal.getValue3() + "D"; + } else { + val = literal.getValue3(); + } type = HiveParser.Number; break; case DECIMAL: - val = literal.getValue3() + "BD"; + if (useTypeQualInLiteral) { + val = literal.getValue3() + "BD"; + } else { + val = literal.getValue3(); + } type = HiveParser.DecimalLiteral; break; case FLOAT: diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java index f5a704fb5549..04282636f748 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java @@ -149,8 +149,9 @@ private ASTNode convert() { int i = 0; for (RexNode r : select.getChildExps()) { - ASTNode selectExpr = ASTBuilder.selectExpr(r.accept(new RexVisitor(schema)), select - .getRowType().getFieldNames().get(i++)); + ASTNode selectExpr = ASTBuilder.selectExpr(r.accept( + new RexVisitor(schema, r instanceof RexLiteral)), + select.getRowType().getFieldNames().get(i++)); b.add(selectExpr); } } @@ -329,10 +330,16 @@ public void visit(RelNode node, int ordinal, RelNode parent) { static class RexVisitor extends RexVisitorImpl { private final Schema schema; + private boolean useTypeQualInLiteral; protected RexVisitor(Schema schema) { + this(schema, false); + } + + protected RexVisitor(Schema schema, boolean useTypeQualInLiteral) { super(true); this.schema = schema; + this.useTypeQualInLiteral = useTypeQualInLiteral; } @Override @@ -357,7 +364,7 @@ public ASTNode visitInputRef(RexInputRef inputRef) { @Override public ASTNode visitLiteral(RexLiteral literal) { - return ASTBuilder.literal(literal); + return ASTBuilder.literal(literal, useTypeQualInLiteral); } private ASTNode getPSpecAST(RexWindow window) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java index ec85603191ef..7b97eca7c9b4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java @@ -314,7 +314,7 @@ protected RexNode convert(ExprNodeConstantDesc literal) throws OptiqSemanticExce optiqLiteral = rexBuilder.makeBinaryLiteral(bs); break; case SHORT: - optiqLiteral = rexBuilder.makeExactLiteral(new BigDecimal((Short) value)); + optiqLiteral = rexBuilder.makeExactLiteral(new BigDecimal((Short) value), optiqDataType); break; case INT: optiqLiteral = rexBuilder.makeExactLiteral(new BigDecimal((Integer) value)); From 5345aeaef69ff98901f85ed9775cc0c6a9ccf21b Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 22 Oct 2014 20:21:31 +0000 Subject: [PATCH 151/339] HIVE-8531 : Fold is not null filter if there are other comparison filter present on same column (Ashutosh Chauhan via Harish Butani) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633710 13f79535-47bb-0310-9956-ffa450edef68 --- .../test/results/positive/hbase_queries.q.out | 4 +- .../ConstantPropagateProcFactory.java | 17 +- .../hive/ql/parse/SemanticAnalyzer.java | 9 +- .../results/clientpositive/auto_join11.q.out | 16 +- .../results/clientpositive/auto_join12.q.out | 22 +-- .../results/clientpositive/auto_join13.q.out | 20 +-- .../results/clientpositive/auto_join14.q.out | 4 +- .../results/clientpositive/auto_join16.q.out | 8 +- .../results/clientpositive/auto_join27.q.out | 38 ++--- .../results/clientpositive/auto_join29.q.out | 22 +-- .../auto_join_without_localtask.q.out | 14 +- .../clientpositive/auto_smb_mapjoin_14.q.out | 24 +-- .../auto_sortmerge_join_10.q.out | 54 +++--- .../auto_sortmerge_join_9.q.out | 90 +++++----- .../test/results/clientpositive/cluster.q.out | 88 +++++----- .../results/clientpositive/constprog2.q.out | 36 ++-- .../correlationoptimizer10.q.out | 82 ++++----- .../correlationoptimizer13.q.out | 26 +-- .../correlationoptimizer8.q.out | 124 +++++++------- .../correlationoptimizer9.q.out | 118 ++++++------- .../results/clientpositive/decimal_udf.q.out | 18 +- .../groupby_grouping_sets4.q.out | 8 +- .../index_auto_mult_tables.q.out | 40 ++--- .../index_auto_mult_tables_compact.q.out | 40 ++--- .../test/results/clientpositive/join11.q.out | 22 +-- .../test/results/clientpositive/join12.q.out | 30 ++-- .../test/results/clientpositive/join13.q.out | 28 ++-- .../test/results/clientpositive/join14.q.out | 6 +- .../test/results/clientpositive/join16.q.out | 10 +- .../test/results/clientpositive/join34.q.out | Bin 18375 -> 18339 bytes .../test/results/clientpositive/join35.q.out | Bin 26433 -> 26421 bytes .../test/results/clientpositive/join38.q.out | 22 +-- .../test/results/clientpositive/join_vc.q.out | 18 +- .../clientpositive/mapjoin_mapjoin.q.out | Bin 32017 -> 31995 bytes .../orc_predicate_pushdown.q.out | 14 +- ql/src/test/results/clientpositive/ppd2.q.out | 22 +-- .../clientpositive/ppd_clusterby.q.out | 44 ++--- .../results/clientpositive/ppd_gby_join.q.out | 30 ++-- .../results/clientpositive/ppd_join.q.out | 30 ++-- .../results/clientpositive/ppd_join2.q.out | 36 ++-- .../results/clientpositive/ppd_join3.q.out | 48 +++--- .../results/clientpositive/ppd_join4.q.out | 2 +- .../results/clientpositive/ppd_random.q.out | 18 +- .../results/clientpositive/regex_col.q.out | 22 +-- .../test/results/clientpositive/sample8.q.out | Bin 27097 -> 27053 bytes .../results/clientpositive/semijoin.q.out | 50 +++--- .../results/clientpositive/skewjoin.q.out | 28 ++-- .../clientpositive/smb_mapjoin_14.q.out | 24 +-- .../clientpositive/smb_mapjoin_25.q.out | 52 +++--- .../clientpositive/smb_mapjoin_6.q.out | 12 +- .../sort_merge_join_desc_1.q.out | 4 +- .../sort_merge_join_desc_8.q.out | 4 +- .../clientpositive/subquery_exists.q.out | 10 +- .../results/clientpositive/subquery_in.q.out | 38 ++--- .../clientpositive/subquery_in_having.q.out | 18 +- .../clientpositive/subquery_multiinsert.q.out | 18 +- .../subquery_unqualcolumnrefs.q.out | 44 ++--- .../clientpositive/subquery_views.q.out | 20 +-- .../tez/auto_sortmerge_join_10.q.out | 34 ++-- .../tez/auto_sortmerge_join_9.q.out | 156 +++++++++--------- .../tez/bucket_map_join_tez2.q.out | 20 +-- .../tez/dynamic_partition_pruning.q.out | 58 ++++--- .../tez/dynamic_partition_pruning_2.q.out | 6 +- .../tez/filter_join_breaktask.q.out | Bin 18824 -> 18800 bytes .../clientpositive/tez/mapjoin_mapjoin.q.out | Bin 35265 -> 35245 bytes .../clientpositive/tez/subquery_exists.q.out | 10 +- .../clientpositive/tez/subquery_in.q.out | 38 ++--- ...vectorized_dynamic_partition_pruning.q.out | 58 ++++--- .../test/results/clientpositive/union20.q.out | 34 ++-- .../test/results/clientpositive/union24.q.out | Bin 76059 -> 75985 bytes .../test/results/clientpositive/union27.q.out | 32 ++-- .../vector_decimal_mapjoin.q.out | 14 +- 72 files changed, 1084 insertions(+), 1022 deletions(-) diff --git a/hbase-handler/src/test/results/positive/hbase_queries.q.out b/hbase-handler/src/test/results/positive/hbase_queries.q.out index 19722365dc38..b1e7936738b1 100644 --- a/hbase-handler/src/test/results/positive/hbase_queries.q.out +++ b/hbase-handler/src/test/results/positive/hbase_queries.q.out @@ -271,7 +271,7 @@ STAGE PLANS: alias: hbase_table_2 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Filter Operator - predicate: ((key < 120) and key is not null) (type: boolean) + predicate: (key < 120) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: key (type: int), value (type: string) @@ -287,7 +287,7 @@ STAGE PLANS: alias: hbase_table_1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Filter Operator - predicate: ((100 < key) and key is not null) (type: boolean) + predicate: (100 < key) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: key (type: int) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index 9ca194a2ac97..e035201ebae8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -64,9 +64,11 @@ import org.apache.hadoop.hive.ql.udf.UDFType; import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredJavaObject; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBaseCompare; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqual; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNotNull; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNull; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPOr; import org.apache.hadoop.hive.serde.serdeConstants; @@ -372,17 +374,30 @@ private static ExprNodeDesc shortcutFunction(GenericUDF udf, List if (udf instanceof GenericUDFOPAnd) { for (int i = 0; i < 2; i++) { ExprNodeDesc childExpr = newExprs.get(i); + ExprNodeDesc other = newExprs.get(Math.abs(i - 1)); if (childExpr instanceof ExprNodeConstantDesc) { ExprNodeConstantDesc c = (ExprNodeConstantDesc) childExpr; if (Boolean.TRUE.equals(c.getValue())) { // if true, prune it - return newExprs.get(Math.abs(i - 1)); + return other; } else { // if false return false return childExpr; } + } else if (childExpr instanceof ExprNodeGenericFuncDesc && + ((ExprNodeGenericFuncDesc)childExpr).getGenericUDF() instanceof GenericUDFOPNotNull && + childExpr.getChildren().get(0) instanceof ExprNodeColumnDesc && other instanceof ExprNodeGenericFuncDesc + && ((ExprNodeGenericFuncDesc)other).getGenericUDF() instanceof GenericUDFBaseCompare + && other.getChildren().size() == 2) { + ExprNodeColumnDesc colDesc = getColumnExpr(other.getChildren().get(0)); + if (null == colDesc) { + colDesc = getColumnExpr(other.getChildren().get(1)); + } + if (null != colDesc && colDesc.isSame(childExpr.getChildren().get(0))) { + return other; + } } } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 1b7a41d56345..511103bc1c34 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -2662,7 +2662,10 @@ private Operator genNotNullFilterForJoinSourcePlan(QB qb, Operator input, if (joinKeys == null || joinKeys.length == 0) { return input; } - + Map hashes = new HashMap(); + if (input instanceof FilterOperator) { + ExprNodeDescUtils.getExprNodeColumnDesc(Arrays.asList(((FilterDesc)input.getConf()).getPredicate()), hashes); + } ExprNodeDesc filterPred = null; List nullSafes = joinTree.getNullSafes(); for (int i = 0; i < joinKeys.length; i++) { @@ -2672,6 +2675,10 @@ private Operator genNotNullFilterForJoinSourcePlan(QB qb, Operator input, // virtual column, since those columns can never be null. continue; } + if(null != hashes.get(joinKeys[i].hashCode())) { + // there is already a predicate on this src. + continue; + } List args = new ArrayList(); args.add(joinKeys[i]); ExprNodeDesc nextExpr = ExprNodeGenericFuncDesc.newInstance( diff --git a/ql/src/test/results/clientpositive/auto_join11.q.out b/ql/src/test/results/clientpositive/auto_join11.q.out index 3a4658acd113..8dbad6724475 100644 --- a/ql/src/test/results/clientpositive/auto_join11.q.out +++ b/ql/src/test/results/clientpositive/auto_join11.q.out @@ -32,12 +32,12 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 @@ -53,12 +53,12 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -69,11 +69,11 @@ STAGE PLANS: 0 _col0 (type: string) 1 _col0 (type: string) outputColumnNames: _col0, _col3 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col3 (type: string) outputColumnNames: _col0, _col3 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: sum(hash(_col0,_col3)) mode: hash diff --git a/ql/src/test/results/clientpositive/auto_join12.q.out b/ql/src/test/results/clientpositive/auto_join12.q.out index cf65a999ba19..037116c2c699 100644 --- a/ql/src/test/results/clientpositive/auto_join12.q.out +++ b/ql/src/test/results/clientpositive/auto_join12.q.out @@ -41,12 +41,12 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key < 80) and key is not null) and (key < 100)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 80) and (key < 100)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 @@ -61,12 +61,12 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key < 100) and key is not null) and (key < 80)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: (((key < 100) and (key < 80)) and key is not null) (type: boolean) + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 @@ -84,12 +84,12 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key < 100) and key is not null) and (key < 80)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 100) and (key < 80)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -103,11 +103,11 @@ STAGE PLANS: 1 _col0 (type: string) 2 _col0 (type: string) outputColumnNames: _col0, _col3 - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col3 (type: string) outputColumnNames: _col0, _col3 - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: sum(hash(_col0,_col3)) mode: hash diff --git a/ql/src/test/results/clientpositive/auto_join13.q.out b/ql/src/test/results/clientpositive/auto_join13.q.out index cfdaebdbfe4c..0cb9b4ffc460 100644 --- a/ql/src/test/results/clientpositive/auto_join13.q.out +++ b/ql/src/test/results/clientpositive/auto_join13.q.out @@ -41,12 +41,12 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 @@ -80,12 +80,12 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -96,10 +96,10 @@ STAGE PLANS: 0 _col0 (type: string) 1 _col0 (type: string) outputColumnNames: _col0, _col2, _col3 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (_col0 + _col2) is not null (type: boolean) - Statistics: Num rows: 46 Data size: 489 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -110,11 +110,11 @@ STAGE PLANS: 0 (_col0 + _col2) (type: double) 1 UDFToDouble(_col0) (type: double) outputColumnNames: _col0, _col3 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 100 Data size: 1065 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col3 (type: string) outputColumnNames: _col0, _col3 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 100 Data size: 1065 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: sum(hash(_col0,_col3)) mode: hash diff --git a/ql/src/test/results/clientpositive/auto_join14.q.out b/ql/src/test/results/clientpositive/auto_join14.q.out index addebe4afbb7..450a9617e044 100644 --- a/ql/src/test/results/clientpositive/auto_join14.q.out +++ b/ql/src/test/results/clientpositive/auto_join14.q.out @@ -37,8 +37,8 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 diff --git a/ql/src/test/results/clientpositive/auto_join16.q.out b/ql/src/test/results/clientpositive/auto_join16.q.out index ac0daa3df2d0..f96bae3590f5 100644 --- a/ql/src/test/results/clientpositive/auto_join16.q.out +++ b/ql/src/test/results/clientpositive/auto_join16.q.out @@ -32,12 +32,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((key > 10) and (key > 20)) and key is not null) and value is not null) and (value < 200)) (type: boolean) - Statistics: Num rows: 4 Data size: 42 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > 10) and value is not null) and (key > 20)) and (value < 200)) (type: boolean) + Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 4 Data size: 42 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 @@ -53,7 +53,7 @@ STAGE PLANS: alias: tab Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((key > 20) and key is not null) and value is not null) and (value < 200)) (type: boolean) + predicate: ((((key > 20) and value is not null) and key is not null) and (value < 200)) (type: boolean) Statistics: Num rows: 14 Data size: 148 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: diff --git a/ql/src/test/results/clientpositive/auto_join27.q.out b/ql/src/test/results/clientpositive/auto_join27.q.out index 0fc7dd229692..c16992f2bed4 100644 --- a/ql/src/test/results/clientpositive/auto_join27.q.out +++ b/ql/src/test/results/clientpositive/auto_join27.q.out @@ -37,32 +37,32 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 200) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 200) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: key, value - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: key (type: string), value (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -82,12 +82,12 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 200) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 200) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 @@ -101,7 +101,7 @@ STAGE PLANS: Map Operator Tree: TableScan Union - Statistics: Num rows: 124 Data size: 1316 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 249 Data size: 2644 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -111,9 +111,9 @@ STAGE PLANS: keys: 0 _col0 (type: string) 1 _col0 (type: string) - Statistics: Num rows: 136 Data size: 1447 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 273 Data size: 2908 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 136 Data size: 1447 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 273 Data size: 2908 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) mode: hash @@ -129,14 +129,14 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 200) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 200) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 124 Data size: 1316 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 249 Data size: 2644 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -146,9 +146,9 @@ STAGE PLANS: keys: 0 _col0 (type: string) 1 _col0 (type: string) - Statistics: Num rows: 136 Data size: 1447 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 273 Data size: 2908 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 136 Data size: 1447 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 273 Data size: 2908 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) mode: hash diff --git a/ql/src/test/results/clientpositive/auto_join29.q.out b/ql/src/test/results/clientpositive/auto_join29.q.out index 26ed0e88bd31..b382a12847c3 100644 --- a/ql/src/test/results/clientpositive/auto_join29.q.out +++ b/ql/src/test/results/clientpositive/auto_join29.q.out @@ -3551,8 +3551,8 @@ STAGE PLANS: alias: src1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > 10) and key is not null) and (key < 10)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > 10) and (key < 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 {value} @@ -3567,8 +3567,8 @@ STAGE PLANS: alias: src2 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key < 10) and key is not null) and (key > 10)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 10) and (key > 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 {value} @@ -3586,8 +3586,8 @@ STAGE PLANS: alias: src3 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > 10) and key is not null) and (key < 10)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > 10) and (key < 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -3601,25 +3601,25 @@ STAGE PLANS: 1 key (type: string) 2 key (type: string) outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) sort order: ++++++ - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE Local Work: Map Reduce Local Work Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/auto_join_without_localtask.q.out b/ql/src/test/results/clientpositive/auto_join_without_localtask.q.out index 8762242519a8..318b5485f2c6 100644 --- a/ql/src/test/results/clientpositive/auto_join_without_localtask.q.out +++ b/ql/src/test/results/clientpositive/auto_join_without_localtask.q.out @@ -613,7 +613,7 @@ STAGE PLANS: TableScan alias: b Filter Operator - predicate: (key is not null and (key > 100)) (type: boolean) + predicate: (key > 100) (type: boolean) HashTable Sink Operator condition expressions: 0 {key} {value} @@ -745,7 +745,7 @@ STAGE PLANS: key expressions: _col1 (type: string) sort order: + Map-reduce partition columns: _col1 (type: string) - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) TableScan alias: c @@ -808,7 +808,7 @@ STAGE PLANS: TableScan alias: b Filter Operator - predicate: (key is not null and (key > 100)) (type: boolean) + predicate: (key > 100) (type: boolean) Map Join Operator condition map: Inner Join 0 to 1 @@ -835,13 +835,13 @@ STAGE PLANS: alias: b Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key > 100)) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE TableScan alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE @@ -862,7 +862,7 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 outputColumnNames: _col0, _col1 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: diff --git a/ql/src/test/results/clientpositive/auto_smb_mapjoin_14.q.out b/ql/src/test/results/clientpositive/auto_smb_mapjoin_14.q.out index 011f7bfabfb7..2583d9a50d4a 100644 --- a/ql/src/test/results/clientpositive/auto_smb_mapjoin_14.q.out +++ b/ql/src/test/results/clientpositive/auto_smb_mapjoin_14.q.out @@ -506,12 +506,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -853,12 +853,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 8) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -1072,12 +1072,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -1167,12 +1167,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 diff --git a/ql/src/test/results/clientpositive/auto_sortmerge_join_10.q.out b/ql/src/test/results/clientpositive/auto_sortmerge_join_10.q.out index 488fc50c0114..7606dd2adcd4 100644 --- a/ql/src/test/results/clientpositive/auto_sortmerge_join_10.q.out +++ b/ql/src/test/results/clientpositive/auto_sortmerge_join_10.q.out @@ -83,12 +83,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 @@ -104,18 +104,18 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 42 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 42 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -125,9 +125,9 @@ STAGE PLANS: keys: 0 _col0 (type: int) 1 _col0 (type: int) - Statistics: Num rows: 4 Data size: 30 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 46 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 4 Data size: 30 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 46 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -143,18 +143,18 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 42 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 4 Data size: 28 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 42 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -164,9 +164,9 @@ STAGE PLANS: keys: 0 _col0 (type: int) 1 _col0 (type: int) - Statistics: Num rows: 4 Data size: 30 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 46 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 4 Data size: 30 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 46 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -272,24 +272,24 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: key - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() bucketGroup: true keys: key (type: int) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -321,12 +321,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 @@ -348,9 +348,9 @@ STAGE PLANS: keys: 0 _col0 (type: int) 1 _col0 (type: int) - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash diff --git a/ql/src/test/results/clientpositive/auto_sortmerge_join_9.q.out b/ql/src/test/results/clientpositive/auto_sortmerge_join_9.q.out index 95b264f8c234..1a7fdf9650f3 100644 --- a/ql/src/test/results/clientpositive/auto_sortmerge_join_9.q.out +++ b/ql/src/test/results/clientpositive/auto_sortmerge_join_9.q.out @@ -699,12 +699,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -1046,12 +1046,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 8) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -1264,12 +1264,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -1444,12 +1444,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -3012,7 +3012,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -3030,7 +3030,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -3079,7 +3079,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -3097,7 +3097,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -3142,12 +3142,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -3779,7 +3779,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) + predicate: (key < 8) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -3797,7 +3797,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) + predicate: (key < 8) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -3846,7 +3846,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) + predicate: (key < 8) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -3864,7 +3864,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) + predicate: (key < 8) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -3909,12 +3909,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 8) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -4025,7 +4025,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4074,7 +4074,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4134,12 +4134,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -4233,7 +4233,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4312,7 +4312,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4467,7 +4467,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4484,7 +4484,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4504,7 +4504,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4559,7 +4559,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4576,7 +4576,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4596,7 +4596,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4651,7 +4651,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4668,7 +4668,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4688,7 +4688,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -4736,12 +4736,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 diff --git a/ql/src/test/results/clientpositive/cluster.q.out b/ql/src/test/results/clientpositive/cluster.q.out index 5808c7418fb8..f5573c90e00b 100644 --- a/ql/src/test/results/clientpositive/cluster.q.out +++ b/ql/src/test/results/clientpositive/cluster.q.out @@ -473,22 +473,22 @@ STAGE PLANS: alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -498,11 +498,11 @@ STAGE PLANS: 0 {VALUE._col0} 1 outputColumnNames: _col1 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string) outputColumnNames: _col1 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -518,15 +518,15 @@ STAGE PLANS: key expressions: _col1 (type: string) sort order: + Map-reduce partition columns: _col1 (type: string) - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Select Operator expressions: '20' (type: string), KEY.reducesinkkey0 (type: string), '20' (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -566,23 +566,23 @@ STAGE PLANS: alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -592,11 +592,11 @@ STAGE PLANS: 0 {VALUE._col0} 1 {VALUE._col0} outputColumnNames: _col1, _col6 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string), _col6 (type: string) outputColumnNames: _col1, _col3 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -612,16 +612,16 @@ STAGE PLANS: key expressions: _col1 (type: string) sort order: + Map-reduce partition columns: _col1 (type: string) - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE value expressions: _col3 (type: string) Reduce Operator Tree: Select Operator expressions: '20' (type: string), KEY.reducesinkkey0 (type: string), '20' (type: string), VALUE._col2 (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -661,23 +661,23 @@ STAGE PLANS: alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -687,11 +687,11 @@ STAGE PLANS: 0 {VALUE._col0} 1 {VALUE._col0} outputColumnNames: _col1, _col6 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string), _col6 (type: string) outputColumnNames: _col1, _col3 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -706,16 +706,16 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string), _col3 (type: string) Reduce Operator Tree: Select Operator expressions: '20' (type: string), VALUE._col0 (type: string), '20' (type: string), VALUE._col2 (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -755,22 +755,22 @@ STAGE PLANS: alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -780,11 +780,11 @@ STAGE PLANS: 0 {VALUE._col0} 1 outputColumnNames: _col1 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string), '20' (type: string) outputColumnNames: _col1, _col2 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -799,16 +799,16 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string), _col2 (type: string) Reduce Operator Tree: Select Operator expressions: '20' (type: string), VALUE._col0 (type: string), VALUE._col1 (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/constprog2.q.out b/ql/src/test/results/clientpositive/constprog2.q.out index 50ff890d6091..71a44f32208d 100644 --- a/ql/src/test/results/clientpositive/constprog2.q.out +++ b/ql/src/test/results/clientpositive/constprog2.q.out @@ -18,23 +18,23 @@ STAGE PLANS: alias: src2 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key = 86) and key is not null) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 86) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '86' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan alias: src1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key = 86) and key is not null) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 86) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '86' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -43,14 +43,14 @@ STAGE PLANS: 0 1 {VALUE._col0} outputColumnNames: _col6 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: '86' (type: string), 87.0 (type: double), _col6 (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -93,23 +93,23 @@ STAGE PLANS: alias: src2 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((UDFToDouble(key) = 86) and key is not null) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (UDFToDouble(key) = 86) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '86' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan alias: src1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((UDFToDouble(key) = 86) and key is not null) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (UDFToDouble(key) = 86) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '86' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -118,14 +118,14 @@ STAGE PLANS: 0 1 {VALUE._col0} outputColumnNames: _col6 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: '86' (type: string), 87.0 (type: double), _col6 (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/correlationoptimizer10.q.out b/ql/src/test/results/clientpositive/correlationoptimizer10.q.out index 27c573b17602..6e7904a2469a 100644 --- a/ql/src/test/results/clientpositive/correlationoptimizer10.q.out +++ b/ql/src/test/results/clientpositive/correlationoptimizer10.q.out @@ -432,24 +432,24 @@ STAGE PLANS: alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key is not null and (key < 200)) and (key > 20)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 200) and (key > 20)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE TableScan alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key is not null and (key > 20)) and (key < 200)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > 20) and (key < 200)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -458,16 +458,16 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col0 - Statistics: Num rows: 29 Data size: 314 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 29 Data size: 314 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 29 Data size: 314 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -483,7 +483,7 @@ STAGE PLANS: key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 29 Data size: 314 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE Column stats: NONE TableScan alias: xx Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE Column stats: NONE @@ -504,14 +504,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 outputColumnNames: _col0, _col1 - Statistics: Num rows: 31 Data size: 345 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 66 Data size: 706 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 31 Data size: 345 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 66 Data size: 706 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 345 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 66 Data size: 706 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -589,24 +589,24 @@ STAGE PLANS: alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key is not null and (key < 200)) and (key > 20)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 200) and (key > 20)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE TableScan alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key is not null and (key > 20)) and (key < 200)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > 20) and (key < 200)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE TableScan alias: xx Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE Column stats: NONE @@ -621,9 +621,9 @@ STAGE PLANS: value expressions: value (type: string) Reduce Operator Tree: Demux Operator - Statistics: Num rows: 67 Data size: 671 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 123 Data size: 1267 Basic stats: COMPLETE Column stats: NONE Mux Operator - Statistics: Num rows: 67 Data size: 671 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 123 Data size: 1267 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Left Semi Join 0 to 1 @@ -656,7 +656,7 @@ STAGE PLANS: outputColumnNames: _col0 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Mux Operator - Statistics: Num rows: 67 Data size: 671 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 123 Data size: 1267 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Left Semi Join 0 to 1 @@ -756,24 +756,24 @@ STAGE PLANS: alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key is not null and (key < 200)) and (key > 180)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 200) and (key > 180)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE TableScan alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key is not null and (key < 200)) and (key > 180)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 200) and (key > 180)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -782,16 +782,16 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col0 - Statistics: Num rows: 29 Data size: 314 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 29 Data size: 314 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 29 Data size: 314 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -807,7 +807,7 @@ STAGE PLANS: key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 29 Data size: 314 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE Column stats: NONE TableScan alias: xx Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE @@ -925,24 +925,24 @@ STAGE PLANS: alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key is not null and (key < 200)) and (key > 180)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 200) and (key > 180)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE TableScan alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key is not null and (key < 200)) and (key > 180)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 200) and (key > 180)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE TableScan alias: xx Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE @@ -957,9 +957,9 @@ STAGE PLANS: value expressions: value (type: string) Reduce Operator Tree: Demux Operator - Statistics: Num rows: 304 Data size: 3228 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 360 Data size: 3824 Basic stats: COMPLETE Column stats: NONE Mux Operator - Statistics: Num rows: 304 Data size: 3228 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 360 Data size: 3824 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Left Semi Join 0 to 1 @@ -992,7 +992,7 @@ STAGE PLANS: outputColumnNames: _col0 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Mux Operator - Statistics: Num rows: 304 Data size: 3228 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 360 Data size: 3824 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Left Semi Join 0 to 1 diff --git a/ql/src/test/results/clientpositive/correlationoptimizer13.q.out b/ql/src/test/results/clientpositive/correlationoptimizer13.q.out index f2a217bcf235..29001f17366d 100644 --- a/ql/src/test/results/clientpositive/correlationoptimizer13.q.out +++ b/ql/src/test/results/clientpositive/correlationoptimizer13.q.out @@ -112,7 +112,7 @@ STAGE PLANS: key expressions: _col0 (type: int), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: int), _col1 (type: string) - Statistics: Num rows: 43 Data size: 960 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Join Operator @@ -122,11 +122,11 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {KEY.reducesinkkey1} {VALUE._col0} 1 {KEY.reducesinkkey0} {KEY.reducesinkkey1} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 - Statistics: Num rows: 47 Data size: 1056 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col3 (type: int), _col4 (type: string), _col2 (type: bigint), _col5 (type: bigint) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 - Statistics: Num rows: 47 Data size: 1056 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -141,15 +141,15 @@ STAGE PLANS: Reduce Output Operator key expressions: _col0 (type: int), _col1 (type: string), _col2 (type: int), _col3 (type: string), _col4 (type: bigint), _col5 (type: bigint) sort order: ++++++ - Statistics: Num rows: 47 Data size: 1056 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: int), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: bigint), KEY.reducesinkkey5 (type: bigint) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 - Statistics: Num rows: 47 Data size: 1056 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 47 Data size: 1056 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -162,23 +162,23 @@ STAGE PLANS: alias: x Statistics: Num rows: 1028 Data size: 22964 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((c1 < 120) and c1 is not null) and c3 is not null) (type: boolean) - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + predicate: ((c1 < 120) and c3 is not null) (type: boolean) + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c3 (type: string), c1 (type: int) outputColumnNames: c3, c1 - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: c3 (type: string), c1 (type: int) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: int) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: int) - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Group By Operator @@ -186,11 +186,11 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: int) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 43 Data size: 960 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: int), _col0 (type: string), _col2 (type: bigint) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 43 Data size: 960 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: diff --git a/ql/src/test/results/clientpositive/correlationoptimizer8.q.out b/ql/src/test/results/clientpositive/correlationoptimizer8.q.out index 9e34fe12aaaf..3c737d5e94cb 100644 --- a/ql/src/test/results/clientpositive/correlationoptimizer8.q.out +++ b/ql/src/test/results/clientpositive/correlationoptimizer8.q.out @@ -46,23 +46,23 @@ STAGE PLANS: alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 20) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 20) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: key - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: key (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -70,11 +70,11 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -87,21 +87,21 @@ STAGE PLANS: Map Operator Tree: TableScan Union - Statistics: Num rows: 82 Data size: 870 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1762 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 82 Data size: 870 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1762 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) TableScan Union - Statistics: Num rows: 82 Data size: 870 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1762 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 82 Data size: 870 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1762 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) TableScan alias: x @@ -123,14 +123,14 @@ STAGE PLANS: 0 {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col1, _col2, _col3 - Statistics: Num rows: 90 Data size: 957 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1938 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col2 (type: string), _col3 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 90 Data size: 957 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1938 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 90 Data size: 957 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1938 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -143,23 +143,23 @@ STAGE PLANS: alias: x1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: key - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: key (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -167,11 +167,11 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -250,45 +250,45 @@ STAGE PLANS: alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 20) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 20) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: key - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: key (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) TableScan alias: x1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: key - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: key (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) TableScan alias: x @@ -304,21 +304,21 @@ STAGE PLANS: value expressions: value (type: string) Reduce Operator Tree: Demux Operator - Statistics: Num rows: 179 Data size: 1861 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 345 Data size: 3625 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(VALUE._col0) keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 89 Data size: 925 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 172 Data size: 1807 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 89 Data size: 925 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 172 Data size: 1807 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 178 Data size: 1850 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 344 Data size: 3614 Basic stats: COMPLETE Column stats: NONE Mux Operator - Statistics: Num rows: 357 Data size: 3711 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 689 Data size: 7239 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Inner Join 0 to 1 @@ -343,15 +343,15 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 89 Data size: 925 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 172 Data size: 1807 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 89 Data size: 925 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 172 Data size: 1807 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 178 Data size: 1850 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 344 Data size: 3614 Basic stats: COMPLETE Column stats: NONE Mux Operator - Statistics: Num rows: 357 Data size: 3711 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 689 Data size: 7239 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Inner Join 0 to 1 @@ -372,7 +372,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Mux Operator - Statistics: Num rows: 357 Data size: 3711 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 689 Data size: 7239 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Inner Join 0 to 1 @@ -938,23 +938,23 @@ STAGE PLANS: alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 20) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 20) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: key - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: key (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -962,11 +962,11 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -979,21 +979,21 @@ STAGE PLANS: Map Operator Tree: TableScan Union - Statistics: Num rows: 82 Data size: 870 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1762 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 82 Data size: 870 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1762 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) TableScan Union - Statistics: Num rows: 82 Data size: 870 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1762 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 82 Data size: 870 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1762 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) TableScan alias: x @@ -1015,14 +1015,14 @@ STAGE PLANS: 0 {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col1, _col2, _col3 - Statistics: Num rows: 90 Data size: 957 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1938 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col2 (type: string), _col3 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 90 Data size: 957 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1938 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 90 Data size: 957 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1938 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -1035,23 +1035,23 @@ STAGE PLANS: alias: x1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: key, value - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: key (type: string), value (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Group By Operator @@ -1059,11 +1059,11 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col2 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: diff --git a/ql/src/test/results/clientpositive/correlationoptimizer9.q.out b/ql/src/test/results/clientpositive/correlationoptimizer9.q.out index 38da3c38ba81..864bb21c91fa 100644 --- a/ql/src/test/results/clientpositive/correlationoptimizer9.q.out +++ b/ql/src/test/results/clientpositive/correlationoptimizer9.q.out @@ -54,23 +54,23 @@ STAGE PLANS: alias: x1 Statistics: Num rows: 1028 Data size: 22964 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((c2 > 100) and c2 is not null) (type: boolean) - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + predicate: (c2 > 100) (type: boolean) + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c2 (type: int) outputColumnNames: c2 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: c2 (type: int) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -78,11 +78,11 @@ STAGE PLANS: keys: KEY._col0 (type: int) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -98,14 +98,14 @@ STAGE PLANS: key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) TableScan Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reduce Operator Tree: Join Operator @@ -115,14 +115,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 188 Data size: 4200 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col2 (type: int), _col1 (type: bigint), _col3 (type: bigint) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 188 Data size: 4200 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 188 Data size: 4200 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -135,23 +135,23 @@ STAGE PLANS: alias: x Statistics: Num rows: 1028 Data size: 22964 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((c1 < 120) and c1 is not null) (type: boolean) - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + predicate: (c1 < 120) (type: boolean) + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c1 (type: int) outputColumnNames: c1 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: c1 (type: int) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -159,11 +159,11 @@ STAGE PLANS: keys: KEY._col0 (type: int) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -234,61 +234,61 @@ STAGE PLANS: alias: x1 Statistics: Num rows: 1028 Data size: 22964 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((c2 > 100) and c2 is not null) (type: boolean) - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + predicate: (c2 > 100) (type: boolean) + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c2 (type: int) outputColumnNames: c2 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: c2 (type: int) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) TableScan alias: x Statistics: Num rows: 1028 Data size: 22964 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((c1 < 120) and c1 is not null) (type: boolean) - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + predicate: (c1 < 120) (type: boolean) + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c1 (type: int) outputColumnNames: c1 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: c1 (type: int) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reduce Operator Tree: Demux Operator - Statistics: Num rows: 342 Data size: 7638 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 684 Data size: 15278 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(VALUE._col0) keys: KEY._col0 (type: int) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Mux Operator - Statistics: Num rows: 342 Data size: 7638 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 684 Data size: 15278 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Inner Join 0 to 1 @@ -313,13 +313,13 @@ STAGE PLANS: keys: KEY._col0 (type: int) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 342 Data size: 7639 Basic stats: COMPLETE Column stats: NONE Mux Operator - Statistics: Num rows: 342 Data size: 7638 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 684 Data size: 15278 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Inner Join 0 to 1 @@ -454,7 +454,7 @@ STAGE PLANS: key expressions: _col0 (type: int), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: int), _col1 (type: string) - Statistics: Num rows: 43 Data size: 960 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Join Operator @@ -464,14 +464,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {KEY.reducesinkkey1} {VALUE._col0} 1 {KEY.reducesinkkey0} {KEY.reducesinkkey1} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 - Statistics: Num rows: 47 Data size: 1056 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col3 (type: int), _col4 (type: string), _col2 (type: bigint), _col5 (type: bigint) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 - Statistics: Num rows: 47 Data size: 1056 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 47 Data size: 1056 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 2087 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -484,23 +484,23 @@ STAGE PLANS: alias: x Statistics: Num rows: 1028 Data size: 22964 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((c1 < 120) and c1 is not null) and c3 is not null) (type: boolean) - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + predicate: ((c1 < 120) and c3 is not null) (type: boolean) + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c1 (type: int), c3 (type: string) outputColumnNames: c1, c3 - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: c1 (type: int), c3 (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: int), _col1 (type: string) - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Group By Operator @@ -508,11 +508,11 @@ STAGE PLANS: keys: KEY._col0 (type: int), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 43 Data size: 960 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: bigint) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 43 Data size: 960 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 85 Data size: 1898 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -603,39 +603,39 @@ STAGE PLANS: alias: x Statistics: Num rows: 1028 Data size: 22964 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((c1 < 120) and c1 is not null) and c3 is not null) (type: boolean) - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + predicate: ((c1 < 120) and c3 is not null) (type: boolean) + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: c1 (type: int), c3 (type: string) outputColumnNames: c1, c3 - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: c1 (type: int), c3 (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: int), _col1 (type: string) - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 171 Data size: 3819 Basic stats: COMPLETE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Demux Operator - Statistics: Num rows: 172 Data size: 3842 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 257 Data size: 5740 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(VALUE._col0) keys: KEY._col0 (type: int), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 128 Data size: 2858 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: bigint) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 128 Data size: 2858 Basic stats: COMPLETE Column stats: NONE Mux Operator - Statistics: Num rows: 172 Data size: 3842 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 256 Data size: 5716 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Inner Join 0 to 1 @@ -660,13 +660,13 @@ STAGE PLANS: keys: KEY._col0 (type: int), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 128 Data size: 2858 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: bigint) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 86 Data size: 1921 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 128 Data size: 2858 Basic stats: COMPLETE Column stats: NONE Mux Operator - Statistics: Num rows: 172 Data size: 3842 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 256 Data size: 5716 Basic stats: COMPLETE Column stats: NONE Join Operator condition map: Inner Join 0 to 1 diff --git a/ql/src/test/results/clientpositive/decimal_udf.q.out b/ql/src/test/results/clientpositive/decimal_udf.q.out index 8fda14cd2ded..6bd876a5a2f8 100644 --- a/ql/src/test/results/clientpositive/decimal_udf.q.out +++ b/ql/src/test/results/clientpositive/decimal_udf.q.out @@ -973,12 +973,12 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key <> 0)) (type: boolean) - Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE + predicate: (key <> 0) (type: boolean) + Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (key / key) (type: decimal(38,24)) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0 @@ -1039,12 +1039,12 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (value is not null and (value <> 0)) (type: boolean) - Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE + predicate: (value <> 0) (type: boolean) + Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (key / value) (type: decimal(31,21)) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0 @@ -1095,12 +1095,12 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (value is not null and (value <> 0)) (type: boolean) - Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE + predicate: (value <> 0) (type: boolean) + Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (key / (value / 2)) (type: double) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out index c545506a22c5..3bbd36fd46a1 100644 --- a/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out +++ b/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out @@ -52,7 +52,7 @@ STAGE PLANS: alias: t1 Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE Filter Operator - predicate: ((a < 3) and a is not null) (type: boolean) + predicate: (a < 3) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: a (type: string), b (type: string) @@ -133,7 +133,7 @@ STAGE PLANS: alias: t1 Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE Filter Operator - predicate: ((a < 3) and a is not null) (type: boolean) + predicate: (a < 3) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: a (type: string), b (type: string) @@ -238,7 +238,7 @@ STAGE PLANS: alias: t1 Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE Filter Operator - predicate: ((a < 3) and a is not null) (type: boolean) + predicate: (a < 3) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: a (type: string), b (type: string) @@ -343,7 +343,7 @@ STAGE PLANS: alias: t1 Statistics: Num rows: 0 Data size: 36 Basic stats: PARTIAL Column stats: NONE Filter Operator - predicate: ((a < 3) and a is not null) (type: boolean) + predicate: (a < 3) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: a (type: string), b (type: string) diff --git a/ql/src/test/results/clientpositive/index_auto_mult_tables.q.out b/ql/src/test/results/clientpositive/index_auto_mult_tables.q.out index ab0f06f072b1..cd7335ad3823 100644 --- a/ql/src/test/results/clientpositive/index_auto_mult_tables.q.out +++ b/ql/src/test/results/clientpositive/index_auto_mult_tables.q.out @@ -22,24 +22,24 @@ STAGE PLANS: alias: b Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((key is not null and (key > 70)) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) - Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > 70) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) + Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE TableScan alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((key is not null and (key > 80)) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > 80) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -49,14 +49,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -247,28 +247,28 @@ STAGE PLANS: Map Operator Tree: TableScan alias: b - filterExpr: ((((key is not null and (key > 70)) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) + filterExpr: ((((key > 70) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((key is not null and (key > 70)) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) - Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > 70) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) + Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE TableScan alias: a - filterExpr: ((((key is not null and (key > 80)) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) + filterExpr: ((((key > 80) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((key is not null and (key > 80)) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > 80) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -278,14 +278,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/index_auto_mult_tables_compact.q.out b/ql/src/test/results/clientpositive/index_auto_mult_tables_compact.q.out index 20fa238b14f8..9e87f1fbceb6 100644 --- a/ql/src/test/results/clientpositive/index_auto_mult_tables_compact.q.out +++ b/ql/src/test/results/clientpositive/index_auto_mult_tables_compact.q.out @@ -22,24 +22,24 @@ STAGE PLANS: alias: b Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((key is not null and (key > 70)) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) - Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > 70) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) + Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE TableScan alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((key is not null and (key > 80)) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > 80) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -49,14 +49,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -247,28 +247,28 @@ STAGE PLANS: Map Operator Tree: TableScan alias: b - filterExpr: ((((key is not null and (key > 70)) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) + filterExpr: ((((key > 70) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((key is not null and (key > 70)) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) - Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > 70) and (key < 90)) and (key > 80)) and (key < 100)) (type: boolean) + Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE TableScan alias: a - filterExpr: ((((key is not null and (key > 80)) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) + filterExpr: ((((key > 80) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((key is not null and (key > 80)) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > 80) and (key < 100)) and (key > 70)) and (key < 90)) (type: boolean) + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -278,14 +278,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 279 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/join11.q.out b/ql/src/test/results/clientpositive/join11.q.out index 3c8e7425a7f0..9e77bb7d245d 100644 --- a/ql/src/test/results/clientpositive/join11.q.out +++ b/ql/src/test/results/clientpositive/join11.q.out @@ -26,33 +26,33 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -61,14 +61,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 {VALUE._col0} outputColumnNames: _col0, _col3 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col3 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/join12.q.out b/ql/src/test/results/clientpositive/join12.q.out index 860565e11db4..ee4b6ac1f245 100644 --- a/ql/src/test/results/clientpositive/join12.q.out +++ b/ql/src/test/results/clientpositive/join12.q.out @@ -32,48 +32,48 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key < 100) and key is not null) and (key < 80)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: (((key < 100) and (key < 80)) and key is not null) (type: boolean) + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key < 80) and key is not null) and (key < 100)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 80) and (key < 100)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key < 100) and key is not null) and (key < 80)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 100) and (key < 80)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -84,14 +84,14 @@ STAGE PLANS: 1 {VALUE._col0} 2 outputColumnNames: _col0, _col3 - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col3 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/join13.q.out b/ql/src/test/results/clientpositive/join13.q.out index 753e2923eabb..f5f3e086f4d7 100644 --- a/ql/src/test/results/clientpositive/join13.q.out +++ b/ql/src/test/results/clientpositive/join13.q.out @@ -33,33 +33,33 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -68,10 +68,10 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col2, _col3 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (_col0 + _col2) is not null (type: boolean) - Statistics: Num rows: 46 Data size: 489 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -87,7 +87,7 @@ STAGE PLANS: key expressions: (_col0 + _col2) (type: double) sort order: + Map-reduce partition columns: (_col0 + _col2) (type: double) - Statistics: Num rows: 46 Data size: 489 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string), _col3 (type: string) TableScan alias: src @@ -112,14 +112,14 @@ STAGE PLANS: 0 {VALUE._col0} {VALUE._col3} 1 outputColumnNames: _col0, _col3 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 100 Data size: 1065 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col3 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 100 Data size: 1065 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 100 Data size: 1065 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/join14.q.out b/ql/src/test/results/clientpositive/join14.q.out index 4d4f3e0ea46e..f30345b6ab30 100644 --- a/ql/src/test/results/clientpositive/join14.q.out +++ b/ql/src/test/results/clientpositive/join14.q.out @@ -43,13 +43,13 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > 100) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 100) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: diff --git a/ql/src/test/results/clientpositive/join16.q.out b/ql/src/test/results/clientpositive/join16.q.out index 8463837f4711..4573cb6062dd 100644 --- a/ql/src/test/results/clientpositive/join16.q.out +++ b/ql/src/test/results/clientpositive/join16.q.out @@ -14,22 +14,22 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((key > 10) and (key > 20)) and key is not null) and value is not null) and (value < 200)) (type: boolean) - Statistics: Num rows: 4 Data size: 42 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > 10) and value is not null) and (key > 20)) and (value < 200)) (type: boolean) + Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 4 Data size: 42 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 4 Data size: 42 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE TableScan alias: tab Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((key > 20) and key is not null) and value is not null) and (value < 200)) (type: boolean) + predicate: ((((key > 20) and value is not null) and key is not null) and (value < 200)) (type: boolean) Statistics: Num rows: 14 Data size: 148 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string), value (type: string) diff --git a/ql/src/test/results/clientpositive/join34.q.out b/ql/src/test/results/clientpositive/join34.q.out index 20038d7e9fe6a025343dba13df84b020dc65652e..36aad356e653489e5c8596690db181a690bf5d44 100644 GIT binary patch delta 325 zcmX@!&$zgsaf6m9XLf3(f{lWaf#&2KA+yPE#RM6RCvOz8n4F`kF!{M?&*V2^LO_u~ zDXYo*#Po!Xjg1ss5=#;liZiQHtrUz+jm&^@Hk+-*uQCc5o0+0WT9{7`kg^AwbQg=% n<^U-zMqx}X7C_szHgA`%W#s}n%}&A4V9>d(k!7>9PKz`E0H$M} delta 396 zcmZ47&v?9_af6nqyhe6vrGkxuk%6W{VqS^@h?iNcke6SgkXM?Mqd7T8$W+k6SivQ+ zBvGL_vntg}!NS6D@jhywRxU;Bg>MJ`GU$DW-Qu_Ha|3c2sF>a2*sh6#uh;Htbh)^gG0_{vU;5I}6)oGC9{Uc_3^~mgEFQhMj_;!2rfaQ*b$YY)Eke0OX>ph5!Hn delta 521 zcmdmbj`83*#tnYLavIsGl?pZrMh2P+iFqjsAYNv%LSBA}LSAW3&g32bW|QB>xK4hp zr7~I9gm-dUKmwSrXUaBNIPfl%%`w?N=n0IySwOssQ_#dv!6mUIQK2}qD%DEC#MpH5 zLQ#{+=M@%Vl`-2a9mmDI`H;#RWG z$#<)yps(9N*fR@ delta 72 zcmV-O0Js19`2mso0kF7AlV%MNlXOo>5jZm-L}7GcAaiMYWjY`@I5Cq^2R4&%O;(ef eP>Pd?Nf49#Ng$KE32T!cPbrf-VnnklP0=p}S{s@G diff --git a/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out b/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out index bc8d242f80b7..359d4ac3c2d8 100644 --- a/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out +++ b/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out @@ -321,12 +321,12 @@ STAGE PLANS: alias: orc_pred Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((t is not null and (t < 0)) and (t > -2)) (type: boolean) - Statistics: Num rows: 58 Data size: 17204 Basic stats: COMPLETE Column stats: NONE + predicate: ((t < 0) and (t > -2)) (type: boolean) + Statistics: Num rows: 116 Data size: 34409 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: t (type: tinyint) outputColumnNames: t - Statistics: Num rows: 58 Data size: 17204 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 116 Data size: 34409 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: sum(hash(t)) mode: hash @@ -380,15 +380,15 @@ STAGE PLANS: Map Operator Tree: TableScan alias: orc_pred - filterExpr: ((t is not null and (t < 0)) and (t > -2)) (type: boolean) + filterExpr: ((t < 0) and (t > -2)) (type: boolean) Statistics: Num rows: 1049 Data size: 311170 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((t is not null and (t < 0)) and (t > -2)) (type: boolean) - Statistics: Num rows: 58 Data size: 17204 Basic stats: COMPLETE Column stats: NONE + predicate: ((t < 0) and (t > -2)) (type: boolean) + Statistics: Num rows: 116 Data size: 34409 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: t (type: tinyint) outputColumnNames: t - Statistics: Num rows: 58 Data size: 17204 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 116 Data size: 34409 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: sum(hash(t)) mode: hash diff --git a/ql/src/test/results/clientpositive/ppd2.q.out b/ql/src/test/results/clientpositive/ppd2.q.out index 64fe191de82e..618a545a0ca0 100644 --- a/ql/src/test/results/clientpositive/ppd2.q.out +++ b/ql/src/test/results/clientpositive/ppd2.q.out @@ -350,22 +350,22 @@ STAGE PLANS: alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -375,11 +375,11 @@ STAGE PLANS: 0 {VALUE._col0} 1 outputColumnNames: _col1 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string) outputColumnNames: _col1 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -395,15 +395,15 @@ STAGE PLANS: key expressions: _col1 (type: string) sort order: + Map-reduce partition columns: _col1 (type: string) - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Select Operator expressions: '20' (type: string), KEY.reducesinkkey0 (type: string), '20' (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/ppd_clusterby.q.out b/ql/src/test/results/clientpositive/ppd_clusterby.q.out index 7b1abddaa94e..e3643f1019d0 100644 --- a/ql/src/test/results/clientpositive/ppd_clusterby.q.out +++ b/ql/src/test/results/clientpositive/ppd_clusterby.q.out @@ -74,22 +74,22 @@ STAGE PLANS: alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -99,11 +99,11 @@ STAGE PLANS: 0 {VALUE._col0} 1 outputColumnNames: _col1 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string) outputColumnNames: _col1 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -119,15 +119,15 @@ STAGE PLANS: key expressions: _col1 (type: string) sort order: + Map-reduce partition columns: _col1 (type: string) - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Select Operator expressions: '20' (type: string), KEY.reducesinkkey0 (type: string), '20' (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -224,22 +224,22 @@ STAGE PLANS: alias: y Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 20)) (type: boolean) - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 20) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '20' (type: string) sort order: + - Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: Join Operator @@ -249,11 +249,11 @@ STAGE PLANS: 0 {VALUE._col0} 1 outputColumnNames: _col1 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string) outputColumnNames: _col1 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -269,15 +269,15 @@ STAGE PLANS: key expressions: _col1 (type: string) sort order: + Map-reduce partition columns: _col1 (type: string) - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Select Operator expressions: '20' (type: string), KEY.reducesinkkey0 (type: string), '20' (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/ppd_gby_join.q.out b/ql/src/test/results/clientpositive/ppd_gby_join.q.out index a9d84916b3f0..01e9466832bf 100644 --- a/ql/src/test/results/clientpositive/ppd_gby_join.q.out +++ b/ql/src/test/results/clientpositive/ppd_gby_join.q.out @@ -38,31 +38,31 @@ STAGE PLANS: outputColumnNames: _col0 Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col0 < '400') and _col0 is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 21 Basic stats: COMPLETE Column stats: NONE + predicate: (_col0 < '400') (type: boolean) + Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2 Data size: 21 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((((key > '1') and (key < '400')) and key is not null) and (key > '20')) and ((value < 'val_50') or (key > '2'))) and (key <> '4')) (type: boolean) - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + predicate: (((((key > '1') and (key < '400')) and (key > '20')) and ((value < 'val_50') or (key > '2'))) and (key <> '4')) (type: boolean) + Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col0 < '400') and _col0 is not null) (type: boolean) - Statistics: Num rows: 1 Data size: 10 Basic stats: COMPLETE Column stats: NONE + predicate: (_col0 < '400') (type: boolean) + Statistics: Num rows: 4 Data size: 42 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1 Data size: 10 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 42 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: Join Operator @@ -72,7 +72,7 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 2 Data size: 23 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 46 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((((_col0 > '20') and ((_col1 < 'val_50') or (_col0 > '2'))) and ((_col2 > '50') or (_col0 < '50'))) and (_col2 <> '4')) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE @@ -176,17 +176,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((((key > '1') and (key < '400')) and key is not null) and (key > '20')) and ((value < 'val_50') or (key > '2'))) and (key <> '4')) (type: boolean) - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + predicate: (((((key > '1') and (key < '400')) and (key > '20')) and ((value < 'val_50') or (key > '2'))) and (key <> '4')) (type: boolean) + Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: Join Operator @@ -196,7 +196,7 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 9 Data size: 104 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((((_col0 > '20') and ((_col1 < 'val_50') or (_col0 > '2'))) and ((_col2 > '50') or (_col0 < '50'))) and (_col2 <> '4')) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE diff --git a/ql/src/test/results/clientpositive/ppd_join.q.out b/ql/src/test/results/clientpositive/ppd_join.q.out index a689b0985905..dd2531a09749 100644 --- a/ql/src/test/results/clientpositive/ppd_join.q.out +++ b/ql/src/test/results/clientpositive/ppd_join.q.out @@ -35,32 +35,32 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col0 < '400') and _col0 is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 21 Basic stats: COMPLETE Column stats: NONE + predicate: (_col0 < '400') (type: boolean) + Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 2 Data size: 21 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((((key > '1') and (key < '400')) and key is not null) and (key > '20')) and ((value < 'val_50') or (key > '2'))) and (key <> '4')) (type: boolean) - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + predicate: (((((key > '1') and (key < '400')) and (key > '20')) and ((value < 'val_50') or (key > '2'))) and (key <> '4')) (type: boolean) + Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col0 < '400') and _col0 is not null) (type: boolean) - Statistics: Num rows: 1 Data size: 10 Basic stats: COMPLETE Column stats: NONE + predicate: (_col0 < '400') (type: boolean) + Statistics: Num rows: 4 Data size: 42 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1 Data size: 10 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 42 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: Join Operator @@ -70,7 +70,7 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 2 Data size: 23 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 46 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((((_col0 > '20') and ((_col1 < 'val_50') or (_col0 > '2'))) and ((_col2 > '50') or (_col0 < '50'))) and (_col2 <> '4')) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE @@ -576,17 +576,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((((key > '1') and (key < '400')) and key is not null) and (key > '20')) and ((value < 'val_50') or (key > '2'))) and (key <> '4')) (type: boolean) - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + predicate: (((((key > '1') and (key < '400')) and (key > '20')) and ((value < 'val_50') or (key > '2'))) and (key <> '4')) (type: boolean) + Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: Join Operator @@ -596,7 +596,7 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 9 Data size: 104 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((((_col0 > '20') and ((_col1 < 'val_50') or (_col0 > '2'))) and ((_col2 > '50') or (_col0 < '50'))) and (_col2 <> '4')) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE diff --git a/ql/src/test/results/clientpositive/ppd_join2.q.out b/ql/src/test/results/clientpositive/ppd_join2.q.out index 39c48befed57..4e8a80314c02 100644 --- a/ql/src/test/results/clientpositive/ppd_join2.q.out +++ b/ql/src/test/results/clientpositive/ppd_join2.q.out @@ -42,32 +42,32 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col0 < '400') and _col0 is not null) (type: boolean) - Statistics: Num rows: 14 Data size: 148 Basic stats: COMPLETE Column stats: NONE + predicate: (_col0 < '400') (type: boolean) + Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 14 Data size: 148 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((((key <> '302') and (key < '400')) and key is not null) and value is not null) and (key <> '311')) and ((value <> 'val_50') or (key > '1'))) and (key <> '14')) (type: boolean) - Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE + predicate: ((((((key <> '302') and (key < '400')) and value is not null) and (key <> '311')) and ((value <> 'val_50') or (key > '1'))) and (key <> '14')) (type: boolean) + Statistics: Num rows: 110 Data size: 1168 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 110 Data size: 1168 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col0 < '400') and _col0 is not null) (type: boolean) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + predicate: (_col0 < '400') (type: boolean) + Statistics: Num rows: 36 Data size: 382 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 36 Data size: 382 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: Join Operator @@ -77,10 +77,10 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 15 Data size: 162 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 39 Data size: 420 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: _col1 is not null (type: boolean) - Statistics: Num rows: 8 Data size: 86 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 20 Data size: 215 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -96,7 +96,7 @@ STAGE PLANS: key expressions: _col1 (type: string) sort order: + Map-reduce partition columns: _col1 (type: string) - Statistics: Num rows: 8 Data size: 86 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 20 Data size: 215 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string), _col2 (type: string), _col3 (type: string) TableScan alias: src @@ -1744,17 +1744,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((((key <> '302') and (key < '400')) and key is not null) and value is not null) and (key <> '311')) and ((value <> 'val_50') or (key > '1'))) and (key <> '14')) (type: boolean) - Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE + predicate: ((((((key <> '302') and (key < '400')) and value is not null) and (key <> '311')) and ((value <> 'val_50') or (key > '1'))) and (key <> '14')) (type: boolean) + Statistics: Num rows: 110 Data size: 1168 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 110 Data size: 1168 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 110 Data size: 1168 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: Join Operator @@ -1764,7 +1764,7 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -1780,7 +1780,7 @@ STAGE PLANS: key expressions: _col1 (type: string) sort order: + Map-reduce partition columns: _col1 (type: string) - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string), _col2 (type: string), _col3 (type: string) TableScan alias: src diff --git a/ql/src/test/results/clientpositive/ppd_join3.q.out b/ql/src/test/results/clientpositive/ppd_join3.q.out index fb4b30617bac..314e00261a18 100644 --- a/ql/src/test/results/clientpositive/ppd_join3.q.out +++ b/ql/src/test/results/clientpositive/ppd_join3.q.out @@ -41,32 +41,32 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col0 < '400') and _col0 is not null) (type: boolean) - Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE + predicate: (_col0 < '400') (type: boolean) + Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((((key <> '11') and (key < '400')) and key is not null) and (key > '0')) and ((value <> 'val_500') or (key > '1'))) and (key <> '4')) and (key <> '1')) (type: boolean) - Statistics: Num rows: 36 Data size: 382 Basic stats: COMPLETE Column stats: NONE + predicate: ((((((key <> '11') and (key < '400')) and (key > '0')) and ((value <> 'val_500') or (key > '1'))) and (key <> '4')) and (key <> '1')) (type: boolean) + Statistics: Num rows: 73 Data size: 775 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 36 Data size: 382 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 73 Data size: 775 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col0 < '400') and _col0 is not null) (type: boolean) - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + predicate: (_col0 < '400') (type: boolean) + Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src @@ -79,13 +79,13 @@ STAGE PLANS: outputColumnNames: _col0 Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col0 < '400') and _col0 is not null) (type: boolean) - Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE + predicate: (_col0 < '400') (type: boolean) + Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -96,17 +96,17 @@ STAGE PLANS: 1 {KEY.reducesinkkey0} {VALUE._col0} 2 {KEY.reducesinkkey0} outputColumnNames: _col0, _col1, _col2, _col3, _col4 - Statistics: Num rows: 13 Data size: 138 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 52 Data size: 558 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (((((_col0 > '0') and ((_col1 <> 'val_500') or (_col0 > '1'))) and ((_col2 > '10') or (_col0 <> '10'))) and (_col2 <> '4')) and (_col4 <> '1')) (type: boolean) - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 29 Data size: 311 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col3 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 29 Data size: 311 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 29 Data size: 311 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -1771,17 +1771,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((((key <> '11') and (key < '400')) and key is not null) and (key > '0')) and ((value <> 'val_500') or (key > '1'))) and (key <> '4')) and (key <> '1')) (type: boolean) - Statistics: Num rows: 36 Data size: 382 Basic stats: COMPLETE Column stats: NONE + predicate: ((((((key <> '11') and (key < '400')) and (key > '0')) and ((value <> 'val_500') or (key > '1'))) and (key <> '4')) and (key <> '1')) (type: boolean) + Statistics: Num rows: 73 Data size: 775 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 36 Data size: 382 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 73 Data size: 775 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 36 Data size: 382 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 73 Data size: 775 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src @@ -1808,17 +1808,17 @@ STAGE PLANS: 1 {KEY.reducesinkkey0} {VALUE._col0} 2 {KEY.reducesinkkey0} outputColumnNames: _col0, _col1, _col2, _col3, _col4 - Statistics: Num rows: 79 Data size: 840 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 160 Data size: 1705 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (((((_col0 > '0') and ((_col1 <> 'val_500') or (_col0 > '1'))) and ((_col2 > '10') or (_col0 <> '10'))) and (_col2 <> '4')) and (_col4 <> '1')) (type: boolean) - Statistics: Num rows: 45 Data size: 478 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 991 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col3 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 45 Data size: 478 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 991 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 45 Data size: 478 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 93 Data size: 991 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/ppd_join4.q.out b/ql/src/test/results/clientpositive/ppd_join4.q.out index c995f603c3ea..de7923ac8ac2 100644 --- a/ql/src/test/results/clientpositive/ppd_join4.q.out +++ b/ql/src/test/results/clientpositive/ppd_join4.q.out @@ -82,7 +82,7 @@ STAGE PLANS: alias: t3 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Filter Operator - predicate: (id is not null and (id = 'a')) (type: boolean) + predicate: (id = 'a') (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator key expressions: 'a' (type: string) diff --git a/ql/src/test/results/clientpositive/ppd_random.q.out b/ql/src/test/results/clientpositive/ppd_random.q.out index 9463fd874bf8..f21054a1c375 100644 --- a/ql/src/test/results/clientpositive/ppd_random.q.out +++ b/ql/src/test/results/clientpositive/ppd_random.q.out @@ -28,20 +28,20 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > '2') and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > '2') (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: _col0 is not null (type: boolean) - Statistics: Num rows: 42 Data size: 445 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 42 Data size: 445 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src @@ -121,17 +121,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > '2') and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > '2') (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src diff --git a/ql/src/test/results/clientpositive/regex_col.q.out b/ql/src/test/results/clientpositive/regex_col.q.out index c42ba6604773..abb6aa72d994 100644 --- a/ql/src/test/results/clientpositive/regex_col.q.out +++ b/ql/src/test/results/clientpositive/regex_col.q.out @@ -157,24 +157,24 @@ STAGE PLANS: alias: b Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key = 103) and key is not null) (type: boolean) - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 103) (type: boolean) + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '103' (type: string), hr (type: string), ds (type: string) sort order: +++ Map-reduce partition columns: hr (type: string), ds (type: string) - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE TableScan alias: a Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key = 103) and key is not null) (type: boolean) - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 103) (type: boolean) + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '103' (type: string), hr (type: string), ds (type: string) sort order: +++ Map-reduce partition columns: hr (type: string), ds (type: string) - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -183,11 +183,11 @@ STAGE PLANS: 0 1 {KEY.reducesinkkey2} {KEY.reducesinkkey1} outputColumnNames: _col9, _col10 - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col9 (type: string), _col10 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -202,15 +202,15 @@ STAGE PLANS: Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/sample8.q.out b/ql/src/test/results/clientpositive/sample8.q.out index e647d0534b64fa8bfbfccd0e147b3f24cbf87f7e..f42c2d4ab218a2eaacf992d4380314dda14a853e 100644 GIT binary patch delta 198 zcmcb4nQ`r9#tmFtlN))ZSv3`G6$~aja8*oR8|*##ZjjexU+&F7w(sQq{H&XUc=Q;7 z%G4*jahXp3#A_pHW~AVfSdyqvoLQA>rC?@iG5KR`6G#gd8AcO}&3pM}lqTziyH8dy pS}0&=~+LL~qI delta 307 zcmZ2`nepaj#tmFtlUMO7i6|uIr6^>lRw`r`E9B*uDCCvqrC?}mWHI@Gp~>X6L4K3ha;r~{MqZimE5>h=U YhnO^BlhmHPN!ehsXSnR 5) and key is not null) (type: boolean) - Statistics: Num rows: 4 Data size: 29 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 5) (type: boolean) + Statistics: Num rows: 7 Data size: 51 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 4 Data size: 29 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 51 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: int) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 4 Data size: 29 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 51 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 4 Data size: 29 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 51 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -705,11 +705,11 @@ STAGE PLANS: 0 {VALUE._col0} 1 outputColumnNames: _col1 - Statistics: Num rows: 6 Data size: 47 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 56 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 6 Data size: 47 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 56 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -724,15 +724,15 @@ STAGE PLANS: Reduce Output Operator key expressions: _col0 (type: string) sort order: + - Statistics: Num rows: 6 Data size: 47 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 56 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 6 Data size: 47 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 56 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 6 Data size: 47 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 56 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -876,22 +876,22 @@ STAGE PLANS: alias: t1 Statistics: Num rows: 11 Data size: 79 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > 2) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 2) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: int) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE TableScan alias: a Statistics: Num rows: 11 Data size: 84 Basic stats: COMPLETE Column stats: NONE diff --git a/ql/src/test/results/clientpositive/skewjoin.q.out b/ql/src/test/results/clientpositive/skewjoin.q.out index 4b3070818b0d..deb0a8fcf84a 100644 --- a/ql/src/test/results/clientpositive/skewjoin.q.out +++ b/ql/src/test/results/clientpositive/skewjoin.q.out @@ -970,48 +970,48 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key < 100) and key is not null) and (key < 80)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: (((key < 100) and (key < 80)) and key is not null) (type: boolean) + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key < 80) and key is not null) and (key < 100)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 80) and (key < 100)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key < 100) and key is not null) and (key < 80)) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: ((key < 100) and (key < 80)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -1023,11 +1023,11 @@ STAGE PLANS: 2 handleSkewJoin: true outputColumnNames: _col0, _col3 - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col3 (type: string) outputColumnNames: _col0, _col3 - Statistics: Num rows: 59 Data size: 629 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: sum(hash(_col0)), sum(hash(_col3)) mode: hash diff --git a/ql/src/test/results/clientpositive/smb_mapjoin_14.q.out b/ql/src/test/results/clientpositive/smb_mapjoin_14.q.out index 05f5e00a196e..48fd95d6b0bd 100644 --- a/ql/src/test/results/clientpositive/smb_mapjoin_14.q.out +++ b/ql/src/test/results/clientpositive/smb_mapjoin_14.q.out @@ -403,12 +403,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -746,12 +746,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 8) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -1045,12 +1045,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -1140,12 +1140,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 diff --git a/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out b/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out index 140c46c5dc66..937b2845e940 100644 --- a/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out +++ b/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out @@ -66,22 +66,22 @@ STAGE PLANS: alias: b Statistics: Num rows: 51 Data size: 206 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 5)) (type: boolean) - Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 5) (type: boolean) + Statistics: Num rows: 25 Data size: 100 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: 5 (type: int) sort order: + - Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 25 Data size: 100 Basic stats: COMPLETE Column stats: NONE TableScan alias: a Statistics: Num rows: 52 Data size: 208 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 5)) (type: boolean) - Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 5) (type: boolean) + Statistics: Num rows: 26 Data size: 104 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: 5 (type: int) sort order: + - Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 26 Data size: 104 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -89,11 +89,11 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 14 Data size: 57 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 28 Data size: 114 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: 5 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 14 Data size: 57 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 28 Data size: 114 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -109,13 +109,13 @@ STAGE PLANS: key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 14 Data size: 57 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 28 Data size: 114 Basic stats: COMPLETE Column stats: NONE TableScan Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 15 Data size: 61 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 29 Data size: 118 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -124,17 +124,17 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 {KEY.reducesinkkey0} outputColumnNames: _col0, _col1 - Statistics: Num rows: 16 Data size: 67 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 31 Data size: 129 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (_col1 = 5) (type: boolean) - Statistics: Num rows: 8 Data size: 33 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 62 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), 5 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 8 Data size: 33 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 62 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 8 Data size: 33 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 62 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -147,22 +147,22 @@ STAGE PLANS: alias: d Statistics: Num rows: 55 Data size: 222 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 5)) (type: boolean) - Statistics: Num rows: 14 Data size: 56 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 5) (type: boolean) + Statistics: Num rows: 27 Data size: 108 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: 5 (type: int) sort order: + - Statistics: Num rows: 14 Data size: 56 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 27 Data size: 108 Basic stats: COMPLETE Column stats: NONE TableScan alias: c Statistics: Num rows: 51 Data size: 206 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 5)) (type: boolean) - Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 5) (type: boolean) + Statistics: Num rows: 25 Data size: 100 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: 5 (type: int) sort order: + - Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 25 Data size: 100 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -170,11 +170,11 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 15 Data size: 61 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 29 Data size: 118 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: 5 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 15 Data size: 61 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 29 Data size: 118 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -216,8 +216,8 @@ STAGE PLANS: alias: a Statistics: Num rows: 52 Data size: 208 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 5)) (type: boolean) - Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 5) (type: boolean) + Statistics: Num rows: 26 Data size: 104 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -238,8 +238,8 @@ STAGE PLANS: alias: c Statistics: Num rows: 51 Data size: 206 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key = 5)) (type: boolean) - Statistics: Num rows: 13 Data size: 52 Basic stats: COMPLETE Column stats: NONE + predicate: (key = 5) (type: boolean) + Statistics: Num rows: 25 Data size: 100 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 diff --git a/ql/src/test/results/clientpositive/smb_mapjoin_6.q.out b/ql/src/test/results/clientpositive/smb_mapjoin_6.q.out index 17e3d87c20e4..ba6b107db521 100644 --- a/ql/src/test/results/clientpositive/smb_mapjoin_6.q.out +++ b/ql/src/test/results/clientpositive/smb_mapjoin_6.q.out @@ -2466,8 +2466,8 @@ STAGE PLANS: alias: b Statistics: Num rows: 500 Data size: 4812 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key > 1000)) (type: boolean) - Statistics: Num rows: 83 Data size: 798 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 1000) (type: boolean) + Statistics: Num rows: 166 Data size: 1597 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -2583,8 +2583,8 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 4812 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key > 1000)) (type: boolean) - Statistics: Num rows: 83 Data size: 798 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 1000) (type: boolean) + Statistics: Num rows: 166 Data size: 1597 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 @@ -2692,8 +2692,8 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 4812 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key > 1000)) (type: boolean) - Statistics: Num rows: 83 Data size: 798 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 1000) (type: boolean) + Statistics: Num rows: 166 Data size: 1597 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 diff --git a/ql/src/test/results/clientpositive/sort_merge_join_desc_1.q.out b/ql/src/test/results/clientpositive/sort_merge_join_desc_1.q.out index 539f2476343a..55ee521f525e 100644 --- a/ql/src/test/results/clientpositive/sort_merge_join_desc_1.q.out +++ b/ql/src/test/results/clientpositive/sort_merge_join_desc_1.q.out @@ -66,8 +66,8 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key < 10)) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 diff --git a/ql/src/test/results/clientpositive/sort_merge_join_desc_8.q.out b/ql/src/test/results/clientpositive/sort_merge_join_desc_8.q.out index b59432578715..3f23f5ab05e6 100644 --- a/ql/src/test/results/clientpositive/sort_merge_join_desc_8.q.out +++ b/ql/src/test/results/clientpositive/sort_merge_join_desc_8.q.out @@ -119,8 +119,8 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key is not null and (key < 10)) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Sorted Merge Bucket Map Join Operator condition map: Inner Join 0 to 1 diff --git a/ql/src/test/results/clientpositive/subquery_exists.q.out b/ql/src/test/results/clientpositive/subquery_exists.q.out index b7f4cb9c1428..f939c7d27e16 100644 --- a/ql/src/test/results/clientpositive/subquery_exists.q.out +++ b/ql/src/test/results/clientpositive/subquery_exists.q.out @@ -41,22 +41,22 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((value > 'val_9') and value is not null) and key is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((value > 'val_9') and key is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: value (type: string), key (type: string) outputColumnNames: _col1, _col2 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col1 (type: string), _col2 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: diff --git a/ql/src/test/results/clientpositive/subquery_in.q.out b/ql/src/test/results/clientpositive/subquery_in.q.out index 769beda3b699..84d316f5c6dc 100644 --- a/ql/src/test/results/clientpositive/subquery_in.q.out +++ b/ql/src/test/results/clientpositive/subquery_in.q.out @@ -122,22 +122,22 @@ STAGE PLANS: alias: s1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > '9') and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > '9') (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE @@ -243,22 +243,22 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > '9') and key is not null) and value is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > '9') and value is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -686,37 +686,37 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > '9') and key is not null) and value is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > '9') and value is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: key, value - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: key (type: string), value (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -743,7 +743,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: diff --git a/ql/src/test/results/clientpositive/subquery_in_having.q.out b/ql/src/test/results/clientpositive/subquery_in_having.q.out index ca3513e0f8f7..163b0d11dac7 100644 --- a/ql/src/test/results/clientpositive/subquery_in_having.q.out +++ b/ql/src/test/results/clientpositive/subquery_in_having.q.out @@ -802,22 +802,22 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > '8') and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > '8') (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -1150,17 +1150,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > '8') and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > '8') (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 {key} {value} diff --git a/ql/src/test/results/clientpositive/subquery_multiinsert.q.out b/ql/src/test/results/clientpositive/subquery_multiinsert.q.out index ebd47cacaa82..b48e1c46782b 100644 --- a/ql/src/test/results/clientpositive/subquery_multiinsert.q.out +++ b/ql/src/test/results/clientpositive/subquery_multiinsert.q.out @@ -247,22 +247,22 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > '9') and key is not null) and value is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > '9') and value is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -643,17 +643,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > '9') and key is not null) and value is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > '9') and value is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE HashTable Sink Operator condition expressions: 0 {key} {value} diff --git a/ql/src/test/results/clientpositive/subquery_unqualcolumnrefs.q.out b/ql/src/test/results/clientpositive/subquery_unqualcolumnrefs.q.out index 273037a40297..027c1950fbd2 100644 --- a/ql/src/test/results/clientpositive/subquery_unqualcolumnrefs.q.out +++ b/ql/src/test/results/clientpositive/subquery_unqualcolumnrefs.q.out @@ -86,22 +86,22 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > '9') and key is not null) and value is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > '9') and value is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE TableScan alias: src11 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE @@ -121,14 +121,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {KEY.reducesinkkey1} 1 outputColumnNames: _col0, _col1 - Statistics: Num rows: 46 Data size: 490 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 46 Data size: 490 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 46 Data size: 490 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -167,22 +167,22 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > '9') and key is not null) and value is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > '9') and value is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -533,37 +533,37 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > '9') and key is not null) and value is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > '9') and value is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: key, value - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: key (type: string), value (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -590,7 +590,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: diff --git a/ql/src/test/results/clientpositive/subquery_views.q.out b/ql/src/test/results/clientpositive/subquery_views.q.out index 50a5e291aa98..c928db4cefda 100644 --- a/ql/src/test/results/clientpositive/subquery_views.q.out +++ b/ql/src/test/results/clientpositive/subquery_views.q.out @@ -146,11 +146,11 @@ STAGE PLANS: alias: b Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < '11') and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < '11') (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: string), value (type: string) Reduce Operator Tree: Join Operator @@ -160,7 +160,7 @@ STAGE PLANS: 0 {VALUE._col0} {VALUE._col1} 1 outputColumnNames: _col0, _col1 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -176,7 +176,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string), _col0 (type: string) sort order: +++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col0 (type: string) - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE TableScan alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE @@ -200,19 +200,19 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 {KEY.reducesinkkey0} outputColumnNames: _col0, _col5 - Statistics: Num rows: 100 Data size: 1065 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 200 Data size: 2132 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: _col5 is null (type: boolean) - Statistics: Num rows: 50 Data size: 532 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 100 Data size: 1066 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 50 Data size: 532 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 100 Data size: 1066 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 50 Data size: 532 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 100 Data size: 1066 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -235,7 +235,7 @@ STAGE PLANS: key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 50 Data size: 532 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 100 Data size: 1066 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: diff --git a/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_10.q.out b/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_10.q.out index d661eef4b934..38722917a3b6 100644 --- a/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_10.q.out +++ b/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_10.q.out @@ -82,7 +82,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -113,7 +113,7 @@ STAGE PLANS: TableScan alias: a Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) + predicate: (key < 6) (type: boolean) Select Operator expressions: key (type: int) outputColumnNames: _col0 @@ -145,22 +145,22 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: Group By Operator @@ -252,24 +252,24 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: key - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() bucketGroup: true keys: key (type: int) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Map 3 Map Operator Tree: @@ -277,12 +277,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -294,9 +294,9 @@ STAGE PLANS: 1 _col0 (type: int) input vertices: 0 Reducer 2 - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash diff --git a/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_9.q.out b/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_9.q.out index 571ea0a08d84..fb44d5fdc742 100644 --- a/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_9.q.out +++ b/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_9.q.out @@ -725,12 +725,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -742,9 +742,9 @@ STAGE PLANS: 1 _col0 (type: int) input vertices: 1 Map 3 - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -760,17 +760,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Group By Operator @@ -1167,12 +1167,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 8) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -1184,9 +1184,9 @@ STAGE PLANS: 1 _col0 (type: int) input vertices: 1 Map 3 - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -1202,17 +1202,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 8) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Group By Operator @@ -1415,17 +1415,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map 2 Map Operator Tree: TableScan @@ -1531,17 +1531,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map 2 Map Operator Tree: TableScan @@ -1657,29 +1657,29 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map 2 Map Operator Tree: TableScan alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -1695,9 +1695,9 @@ STAGE PLANS: input vertices: 1 Map 4 2 Map 1 - Statistics: Num rows: 4 Data size: 30 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 46 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 4 Data size: 30 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 46 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -1713,17 +1713,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: Group By Operator @@ -2603,12 +2603,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -2620,9 +2620,9 @@ STAGE PLANS: 1 _col0 (type: int) input vertices: 1 Map 3 - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -2638,17 +2638,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Group By Operator @@ -3045,12 +3045,12 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 8) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -3062,9 +3062,9 @@ STAGE PLANS: 1 _col0 (type: int) input vertices: 1 Map 3 - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 23 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -3080,17 +3080,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 8) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 8) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Group By Operator @@ -3167,17 +3167,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map 2 Map Operator Tree: TableScan @@ -3283,17 +3283,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map 2 Map Operator Tree: TableScan @@ -3409,29 +3409,29 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map 2 Map Operator Tree: TableScan alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -3447,9 +3447,9 @@ STAGE PLANS: input vertices: 1 Map 4 2 Map 1 - Statistics: Num rows: 4 Data size: 30 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 46 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 4 Data size: 30 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 46 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -3465,17 +3465,17 @@ STAGE PLANS: alias: a Statistics: Num rows: 10 Data size: 70 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 6) and key is not null) (type: boolean) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 6) (type: boolean) + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 2 Data size: 14 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 21 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: Group By Operator diff --git a/ql/src/test/results/clientpositive/tez/bucket_map_join_tez2.q.out b/ql/src/test/results/clientpositive/tez/bucket_map_join_tez2.q.out index a5388395fabf..240decc4752e 100644 --- a/ql/src/test/results/clientpositive/tez/bucket_map_join_tez2.q.out +++ b/ql/src/test/results/clientpositive/tez/bucket_map_join_tez2.q.out @@ -320,12 +320,12 @@ STAGE PLANS: alias: tab_part Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > 1) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 1) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -338,14 +338,14 @@ STAGE PLANS: outputColumnNames: _col0, _col1 input vertices: 1 Map 2 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -356,17 +356,17 @@ STAGE PLANS: alias: tab_part Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > 2) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > 2) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: int) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) sort order: + Map-reduce partition columns: _col0 (type: int) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Stage: Stage-0 Fetch Operator diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out index 7a4c23dbdadf..9a3315f9600a 100644 --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out @@ -1900,7 +1900,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - filterExpr: (ds is not null and (ds = '2008-04-08')) (type: boolean) + filterExpr: (ds = '2008-04-08') (type: boolean) Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: '2008-04-08' (type: string) @@ -2723,15 +2723,15 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart_hour - filterExpr: (hr is not null and (hr = 13)) (type: boolean) + filterExpr: (hr = 13) (type: boolean) Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (hr is not null and (hr = 13)) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + predicate: (hr = 13) (type: boolean) + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '13' (type: string) sort order: + - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Map 6 Map Operator Tree: TableScan @@ -2767,9 +2767,9 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -4357,7 +4357,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - filterExpr: (ds is not null and (ds = '2008-04-08')) (type: boolean) + filterExpr: (ds = '2008-04-08') (type: boolean) Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: '2008-04-08' (type: string) @@ -4892,24 +4892,44 @@ STAGE PLANS: Stage: Stage-1 Tez Edges: - Map 1 <- Map 3 (BROADCAST_EDGE), Map 4 (BROADCAST_EDGE) - Reducer 2 <- Map 1 (SIMPLE_EDGE) + Map 1 <- Map 4 (BROADCAST_EDGE) + Map 2 <- Map 1 (BROADCAST_EDGE) + Reducer 3 <- Map 2 (SIMPLE_EDGE) #### A masked pattern was here #### Vertices: Map 1 - Map 3 + Map 2 Map Operator Tree: TableScan alias: srcpart_hour - filterExpr: (hr is not null and (hr = 13)) (type: boolean) + filterExpr: (hr = 13) (type: boolean) Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (hr is not null and (hr = 13)) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE - Reduce Output Operator - key expressions: '13' (type: string) - sort order: + - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + predicate: (hr = 13) (type: boolean) + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 + keys: + 0 '13' (type: string) + 1 '13' (type: string) + input vertices: + 0 Map 1 + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Select Operator + Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + 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) Map 4 Map Operator Tree: TableScan @@ -4924,7 +4944,7 @@ STAGE PLANS: sort order: + Map-reduce partition columns: ds (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE - Reducer 2 + Reducer 3 Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out index 06248221b007..ed94ee807a79 100644 --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out @@ -584,10 +584,10 @@ STAGE PLANS: Map Operator Tree: TableScan alias: d1 - filterExpr: (id is not null and (id = 1)) (type: boolean) + filterExpr: (id = 1) (type: boolean) Statistics: Num rows: 3 Data size: 15 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (id is not null and (id = 1)) (type: boolean) + predicate: (id = 1) (type: boolean) Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: 1 (type: int) @@ -597,7 +597,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: agg - filterExpr: (dim_shops_id is not null and (dim_shops_id = 1)) (type: boolean) + filterExpr: (dim_shops_id = 1) (type: boolean) Statistics: Num rows: 3 Data size: 9 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: diff --git a/ql/src/test/results/clientpositive/tez/filter_join_breaktask.q.out b/ql/src/test/results/clientpositive/tez/filter_join_breaktask.q.out index b94ffe2197b3367d8f2d301d00bdfee530ccb8b1..e48cf7c62dfa11c2bcfaed0d767a0b634d4d3c4a 100644 GIT binary patch delta 126 zcmeB}%=lpv;|4)Rp0dQ8(o_W-I|X%h&B?YR)|1_JeJAf#d&nQ850rVV!zCcg~fnUrWf*)TM4a($uQ 'val_9') and value is not null) and key is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((value > 'val_9') and key is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: value (type: string), key (type: string) outputColumnNames: _col1, _col2 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col1 (type: string), _col2 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Merge Join Operator diff --git a/ql/src/test/results/clientpositive/tez/subquery_in.q.out b/ql/src/test/results/clientpositive/tez/subquery_in.q.out index d983c112c22a..b35a26641dc6 100644 --- a/ql/src/test/results/clientpositive/tez/subquery_in.q.out +++ b/ql/src/test/results/clientpositive/tez/subquery_in.q.out @@ -127,22 +127,22 @@ STAGE PLANS: alias: s1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key > '9') and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key > '9') (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Map 3 Map Operator Tree: TableScan @@ -258,22 +258,22 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > '9') and key is not null) and value is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > '9') and value is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Merge Join Operator @@ -696,22 +696,22 @@ STAGE PLANS: alias: a Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((key > '9') and key is not null) and value is not null) (type: boolean) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + predicate: ((key > '9') and value is not null) (type: boolean) + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: key, value - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: key (type: string), value (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Merge Join Operator @@ -739,21 +739,21 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 21 Data size: 223 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE Stage: Stage-0 Fetch Operator diff --git a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out index 7e187115539b..5cf41f0868c2 100644 --- a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out +++ b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out @@ -1920,7 +1920,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - filterExpr: (ds is not null and (ds = '2008-04-08')) (type: boolean) + filterExpr: (ds = '2008-04-08') (type: boolean) Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: '2008-04-08' (type: string) @@ -2755,15 +2755,15 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart_hour - filterExpr: (hr is not null and (hr = 13)) (type: boolean) + filterExpr: (hr = 13) (type: boolean) Statistics: Num rows: 2 Data size: 344 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (hr is not null and (hr = 13)) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + predicate: (hr = 13) (type: boolean) + Statistics: Num rows: 1 Data size: 172 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: '13' (type: string) sort order: + - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 172 Basic stats: COMPLETE Column stats: NONE Map 6 Map Operator Tree: TableScan @@ -2800,9 +2800,9 @@ STAGE PLANS: condition expressions: 0 1 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 189 Basic stats: COMPLETE Column stats: NONE Select Operator - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 189 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() mode: hash @@ -4404,7 +4404,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - filterExpr: (ds is not null and (ds = '2008-04-08')) (type: boolean) + filterExpr: (ds = '2008-04-08') (type: boolean) Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: '2008-04-08' (type: string) @@ -4948,24 +4948,44 @@ STAGE PLANS: Stage: Stage-1 Tez Edges: - Map 1 <- Map 3 (BROADCAST_EDGE), Map 4 (BROADCAST_EDGE) - Reducer 2 <- Map 1 (SIMPLE_EDGE) + Map 1 <- Map 4 (BROADCAST_EDGE) + Map 2 <- Map 1 (BROADCAST_EDGE) + Reducer 3 <- Map 2 (SIMPLE_EDGE) #### A masked pattern was here #### Vertices: Map 1 - Map 3 + Map 2 Map Operator Tree: TableScan alias: srcpart_hour - filterExpr: (hr is not null and (hr = 13)) (type: boolean) + filterExpr: (hr = 13) (type: boolean) Statistics: Num rows: 2 Data size: 344 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (hr is not null and (hr = 13)) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE - Reduce Output Operator - key expressions: '13' (type: string) - sort order: + - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + predicate: (hr = 13) (type: boolean) + Statistics: Num rows: 1 Data size: 172 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 + keys: + 0 '13' (type: string) + 1 '13' (type: string) + input vertices: + 0 Map 1 + Statistics: Num rows: 1 Data size: 189 Basic stats: COMPLETE Column stats: NONE + Select Operator + Statistics: Num rows: 1 Data size: 189 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + 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) Map 4 Map Operator Tree: TableScan @@ -4981,7 +5001,7 @@ STAGE PLANS: Map-reduce partition columns: ds (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Execution mode: vectorized - Reducer 2 + Reducer 3 Reduce Operator Tree: Group By Operator aggregations: count(VALUE._col0) diff --git a/ql/src/test/results/clientpositive/union20.q.out b/ql/src/test/results/clientpositive/union20.q.out index d66c7a6e8f1e..1aa82e5baf5a 100644 --- a/ql/src/test/results/clientpositive/union20.q.out +++ b/ql/src/test/results/clientpositive/union20.q.out @@ -72,57 +72,57 @@ STAGE PLANS: Map Operator Tree: TableScan Union - Statistics: Num rows: 84 Data size: 1153 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 167 Data size: 2035 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 84 Data size: 1153 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 167 Data size: 2035 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: string) TableScan alias: s4 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 10) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 84 Data size: 1153 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 167 Data size: 2035 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 84 Data size: 1153 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 167 Data size: 2035 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: string) TableScan alias: s2 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((key < 10) and key is not null) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: (key < 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 84 Data size: 1153 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 167 Data size: 2035 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 84 Data size: 1153 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 167 Data size: 2035 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: string) TableScan Union - Statistics: Num rows: 84 Data size: 1153 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 167 Data size: 2035 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 84 Data size: 1153 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 167 Data size: 2035 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: string) Reduce Operator Tree: Join Operator @@ -132,14 +132,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 7056 Data size: 1919232 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 27889 Data size: 7585808 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 7056 Data size: 1919232 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 27889 Data size: 7585808 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 7056 Data size: 1919232 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 27889 Data size: 7585808 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union24.q.out b/ql/src/test/results/clientpositive/union24.q.out index 77ae01816839cdf22afd8faecfc9ac521340edbb..1decd2453893244b5de3a77a2d545ef02fc96683 100644 GIT binary patch delta 752 zcmbPziRI!&mJLrTr(fV?Y?&N?{ler4l0KVfROc|Fid5YQ5}3@@A0cFDXsqCpSdyqv zoLQA>rC@4eJX!H&;bebZw#l#hfvQ|S=W5dZ0e?7x0ZfI>a zJ%EK#eX@g|%H;SzZ8#KZZJsdg3M&rD??PBCG_6FM%?ZmBn75zfU|hq5 zLkYRY*6E-G>Es#J;*-zU$xR2^r8xP;)q5zio2zb26TlXliZ6F!6ApAVpL|zRe)4k_ zk;$R2rejlLXl*fh-&|E-h$>C?cXgfoV43>l22<(DefsK?3)ZS_4tNvDj7y)jjM%0R zUsxv#ycA%xghsgXL)i;b8enmw^U&As;>f!7LyIFO(r+=FM{*TCfk@OPv(EEFxlVLdGm(} zYRuCOxEX~eGn!aVKL6{$W=0bpMwp29=B#N~SYbTt>9yR9=YR^WCqLk1nf%A)AxuVl zvy@u`^Atvv%~p##m|&v#)f0ACTsq z?Eg(-a@I>_s7#=v`Q*Ej@{@ml5t+>SYC2rK1u)E1Cp+jV0mIC7@;MXr$qlB`)9YCo z)i>XNUCxY9w|T*PE;a!p3k8?Nl0=2#%&Jr?1w-S>3nfi~HabsMP>aVVX^s{plbI&_ zihE7wlaQa>t0OY`fsvT7k+BJinTAG2z?iiF#@KoxtWs7$GcV%MrUi~x9FpH~h}%s5 a Date: Wed, 22 Oct 2014 20:29:23 +0000 Subject: [PATCH 152/339] HIVE-8558 : CBO: enable n-way joins after CBO join reordering (Harish Butani via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633712 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 511103bc1c34..d8c50e3ad122 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -8263,7 +8263,8 @@ private void mergeJoinTree(QB qb) { continue; } JoinType prevType = null; // save join type - for (int j = i - 1; j >= 0; j--) { + boolean continueScanning = true; + for (int j = i - 1; j >= 0 && continueScanning; j--) { QBJoinTree node = trees.get(j); if (node == null) { continue; @@ -8279,6 +8280,7 @@ private void mergeJoinTree(QB qb) { if (!node.getNoOuterJoin() || !target.getNoOuterJoin()) { if (node.getRightAliases().length + target.getRightAliases().length + 1 > 16) { LOG.info(ErrorMsg.JOINNODE_OUTERJOIN_MORETHAN_16); + continueScanning = !runCBO; continue; } } @@ -8286,6 +8288,11 @@ private void mergeJoinTree(QB qb) { trees.set(j, null); continue; // continue merging with next alias } + /* + * for CBO provided orderings, don't attempt to reorder joins. + * only convert consecutive joins into n-way joins. + */ + continueScanning = !runCBO; if (prevType == null) { prevType = currType; } @@ -9937,7 +9944,7 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { //prunedPartitions = ImmutableMap.copyOf(prunedPartitions); getMetaData(qb); - disableJoinMerge = true; + disableJoinMerge = false; sinkOp = genPlan(qb); LOG.info("CBO Succeeded; optimized logical plan."); LOG.debug(newAST.dump()); From a8846cb4b9fda7c0e36df9122e57820e24dce9a2 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 22 Oct 2014 20:34:58 +0000 Subject: [PATCH 153/339] HIVE-8522 : CBO: Update Calcite Version to 0.9.2-incubating-SNAPSHOT (John Pullokkaran via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633715 13f79535-47bb-0310-9956-ffa450edef68 --- ql/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/pom.xml b/ql/pom.xml index 2243f1c7c0bf..47e9ec0c00f5 100644 --- a/ql/pom.xml +++ b/ql/pom.xml @@ -28,7 +28,7 @@ Hive Query Language - 0.9.1-incubating-SNAPSHOT + 0.9.2-incubating-SNAPSHOT .. From 19e1bdad2c9b9830a6f0a38094d9d8deb007afd3 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Wed, 22 Oct 2014 20:39:00 +0000 Subject: [PATCH 154/339] HIVE-8547 : CBO and/or constant propagation breaks partition_varchar2 test (Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633716 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/optimizer/ConstantPropagateProcFactory.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index e035201ebae8..524b7a36c07c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -361,13 +361,10 @@ private static void propagate(GenericUDF udf, List newExprs, RowRe } private static ExprNodeColumnDesc getColumnExpr(ExprNodeDesc expr) { - if (expr instanceof ExprNodeColumnDesc) { - return (ExprNodeColumnDesc)expr; + while (FunctionRegistry.isOpCast(expr)) { + expr = expr.getChildren().get(0); } - if (FunctionRegistry.isOpCast(expr)) { - return (ExprNodeColumnDesc)expr.getChildren().get(0); - } - return null; + return (expr instanceof ExprNodeColumnDesc) ? (ExprNodeColumnDesc)expr : null; } private static ExprNodeDesc shortcutFunction(GenericUDF udf, List newExprs) { From f4d2de8bb95c2145fea6f8759aa0b2f1afa8fb5f Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 23 Oct 2014 02:23:05 +0000 Subject: [PATCH 155/339] HIVE-7985: With CBO enabled cross product is generated when a subquery is present (Laljo John Pullokkaran, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633734 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/optimizer/optiq/HiveOptiqUtil.java | 54 +-- .../rules/HivePushFilterPastJoinRule.java | 362 ++++++------------ .../stats/FilterSelectivityEstimator.java | 32 +- .../optiq/translator/RexNodeConverter.java | 74 ++-- .../translator/SqlFunctionConverter.java | 89 +++-- 5 files changed, 236 insertions(+), 375 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java index 4bb99d908633..a14770ed2cb4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java @@ -242,7 +242,7 @@ public static RexNode projectNonColumnEquiConditions(ProjectFactory factory, Rel *

* JoinPredicateInfo:
* 1. preserves the order of conjuctive elements for - * equi-join(m_equiJoinPredicateElements)
+ * equi-join(equiJoinPredicateElements)
* 2. Stores set of projection indexes from left and right child which is part * of equi join keys; the indexes are both in child and Join node schema.
* 3. Keeps a map of projection indexes that are part of join keys to list of @@ -276,19 +276,19 @@ public JoinPredicateInfo(List nonEquiJoinPredicateElement } public List getNonEquiJoinPredicateElements() { - return nonEquiJoinPredicateElements; + return this.nonEquiJoinPredicateElements; } public List getEquiJoinPredicateElements() { - return equiJoinPredicateElements; + return this.equiJoinPredicateElements; } public Set getProjsFromLeftPartOfJoinKeysInChildSchema() { - return projsFromLeftPartOfJoinKeysInChildSchema; + return this.projsFromLeftPartOfJoinKeysInChildSchema; } public Set getProjsFromRightPartOfJoinKeysInChildSchema() { - return projsFromRightPartOfJoinKeysInChildSchema; + return this.projsFromRightPartOfJoinKeysInChildSchema; } /** @@ -297,15 +297,15 @@ public Set getProjsFromRightPartOfJoinKeysInChildSchema() { * schema. */ public Set getProjsFromLeftPartOfJoinKeysInJoinSchema() { - return projsFromLeftPartOfJoinKeysInChildSchema; + return this.projsFromLeftPartOfJoinKeysInChildSchema; } public Set getProjsFromRightPartOfJoinKeysInJoinSchema() { - return projsFromRightPartOfJoinKeysInJoinSchema; + return this.projsFromRightPartOfJoinKeysInJoinSchema; } public Map> getMapOfProjIndxToLeafPInfo() { - return mapOfProjIndxInJoinSchemaToLeafPInfo; + return this.mapOfProjIndxInJoinSchemaToLeafPInfo; } public static JoinPredicateInfo constructJoinPredicateInfo(HiveJoinRel j) { @@ -337,7 +337,7 @@ public static JoinPredicateInfo constructJoinPredicateInfo(HiveJoinRel j, RexNod jlpi = JoinLeafPredicateInfo.constructJoinLeafPredicateInfo(j, ce); // 2.2 Classify leaf predicate as Equi vs Non Equi - if (jlpi.m_comparisonType.equals(SqlKind.EQUALS)) { + if (jlpi.comparisonType.equals(SqlKind.EQUALS)) { equiLPIList.add(jlpi); } else { nonEquiLPIList.add(jlpi); @@ -399,38 +399,38 @@ public static JoinPredicateInfo constructJoinPredicateInfo(HiveJoinRel j, RexNod * of equi join keys; the indexes are both in child and Join node schema.
*/ public static class JoinLeafPredicateInfo { - private final SqlKind m_comparisonType; - private final ImmutableList m_joinKeyExprsFromLeft; - private final ImmutableList m_joinKeyExprsFromRight; - private final ImmutableSet m_projsFromLeftPartOfJoinKeysInChildSchema; - private final ImmutableSet m_projsFromRightPartOfJoinKeysInChildSchema; - private final ImmutableSet m_projsFromRightPartOfJoinKeysInJoinSchema; + private final SqlKind comparisonType; + private final ImmutableList joinKeyExprsFromLeft; + private final ImmutableList joinKeyExprsFromRight; + private final ImmutableSet projsFromLeftPartOfJoinKeysInChildSchema; + private final ImmutableSet projsFromRightPartOfJoinKeysInChildSchema; + private final ImmutableSet projsFromRightPartOfJoinKeysInJoinSchema; public JoinLeafPredicateInfo(SqlKind comparisonType, List joinKeyExprsFromLeft, List joinKeyExprsFromRight, Set projsFromLeftPartOfJoinKeysInChildSchema, Set projsFromRightPartOfJoinKeysInChildSchema, Set projsFromRightPartOfJoinKeysInJoinSchema) { - m_comparisonType = comparisonType; - m_joinKeyExprsFromLeft = ImmutableList.copyOf(joinKeyExprsFromLeft); - m_joinKeyExprsFromRight = ImmutableList.copyOf(joinKeyExprsFromRight); - m_projsFromLeftPartOfJoinKeysInChildSchema = ImmutableSet + this.comparisonType = comparisonType; + this.joinKeyExprsFromLeft = ImmutableList.copyOf(joinKeyExprsFromLeft); + this.joinKeyExprsFromRight = ImmutableList.copyOf(joinKeyExprsFromRight); + this.projsFromLeftPartOfJoinKeysInChildSchema = ImmutableSet .copyOf(projsFromLeftPartOfJoinKeysInChildSchema); - m_projsFromRightPartOfJoinKeysInChildSchema = ImmutableSet + this.projsFromRightPartOfJoinKeysInChildSchema = ImmutableSet .copyOf(projsFromRightPartOfJoinKeysInChildSchema); - m_projsFromRightPartOfJoinKeysInJoinSchema = ImmutableSet + this.projsFromRightPartOfJoinKeysInJoinSchema = ImmutableSet .copyOf(projsFromRightPartOfJoinKeysInJoinSchema); } public List getJoinKeyExprsFromLeft() { - return m_joinKeyExprsFromLeft; + return this.joinKeyExprsFromLeft; } public List getJoinKeyExprsFromRight() { - return m_joinKeyExprsFromRight; + return this.joinKeyExprsFromRight; } public Set getProjsFromLeftPartOfJoinKeysInChildSchema() { - return m_projsFromLeftPartOfJoinKeysInChildSchema; + return this.projsFromLeftPartOfJoinKeysInChildSchema; } /** @@ -439,15 +439,15 @@ public Set getProjsFromLeftPartOfJoinKeysInChildSchema() { * schema. */ public Set getProjsFromLeftPartOfJoinKeysInJoinSchema() { - return m_projsFromLeftPartOfJoinKeysInChildSchema; + return this.projsFromLeftPartOfJoinKeysInChildSchema; } public Set getProjsFromRightPartOfJoinKeysInChildSchema() { - return m_projsFromRightPartOfJoinKeysInChildSchema; + return this.projsFromRightPartOfJoinKeysInChildSchema; } public Set getProjsFromRightPartOfJoinKeysInJoinSchema() { - return m_projsFromRightPartOfJoinKeysInJoinSchema; + return this.projsFromRightPartOfJoinKeysInJoinSchema; } private static JoinLeafPredicateInfo constructJoinLeafPredicateInfo(HiveJoinRel j, RexNode pe) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java index da0f7a4c5b97..cda4bae66e20 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java @@ -17,274 +17,132 @@ */ package org.apache.hadoop.hive.ql.optimizer.optiq.rules; -import java.util.ArrayList; import java.util.BitSet; import java.util.List; import java.util.ListIterator; import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveFilterRel; -import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveJoinRel; -import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveRel; +import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveProjectRel; import org.eigenbase.rel.FilterRelBase; import org.eigenbase.rel.JoinRelBase; -import org.eigenbase.rel.JoinRelType; -import org.eigenbase.rel.RelNode; +import org.eigenbase.rel.RelFactories; +import org.eigenbase.rel.rules.PushFilterPastJoinRule; import org.eigenbase.relopt.RelOptRule; import org.eigenbase.relopt.RelOptRuleCall; import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.relopt.RelOptUtil; import org.eigenbase.relopt.RelOptUtil.InputFinder; import org.eigenbase.rex.RexBuilder; import org.eigenbase.rex.RexCall; import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexUtil; import org.eigenbase.sql.SqlKind; -import org.eigenbase.util.Holder; -public abstract class HivePushFilterPastJoinRule extends RelOptRule { - - public static final HivePushFilterPastJoinRule FILTER_ON_JOIN = new HivePushFilterPastJoinRule( - operand(FilterRelBase.class, operand(HiveJoinRel.class, any())), - "HivePushFilterPastJoinRule:filter", true) { - @Override - public void onMatch(RelOptRuleCall call) { - HiveFilterRel filter = call.rel(0); - HiveJoinRel join = call.rel(1); - perform(call, filter, join); - } - }; - - public static final HivePushFilterPastJoinRule JOIN = new HivePushFilterPastJoinRule( - operand(HiveJoinRel.class, any()), "HivePushFilterPastJoinRule:no-filter", false) { - @Override - public void onMatch(RelOptRuleCall call) { - HiveJoinRel join = call.rel(0); - perform(call, null, join); - } - }; - - /** Whether to try to strengthen join-type. */ - private final boolean smart; - - // ~ Constructors ----------------------------------------------------------- - - /** - * Creates a PushFilterPastJoinRule with an explicit root operand. - */ - private HivePushFilterPastJoinRule(RelOptRuleOperand operand, String id, boolean smart) { - super(operand, "PushFilterRule: " + id); - this.smart = smart; - } - - // ~ Methods ---------------------------------------------------------------- - - protected void perform(RelOptRuleCall call, FilterRelBase filter, - JoinRelBase join) { - final List joinFilters = RelOptUtil.conjunctions(join - .getCondition()); - - /* - * todo: hb 6/26/14 for left SemiJoin we cannot push predicates yet. The - * assertion that num(JoinRel columns) = num(leftSrc) + num(rightSrc) - * doesn't hold. So RelOptUtil.classifyFilters fails. - */ - if (((HiveJoinRel) join).isLeftSemiJoin()) { - return; - } - - if (filter == null) { - // There is only the joinRel - // make sure it does not match a cartesian product joinRel - // (with "true" condition) otherwise this rule will be applied - // again on the new cartesian product joinRel. - boolean onlyTrueFilter = true; - for (RexNode joinFilter : joinFilters) { - if (!joinFilter.isAlwaysTrue()) { - onlyTrueFilter = false; - break; - } - } - - if (onlyTrueFilter) { - return; - } - } - - final List aboveFilters = filter != null ? RelOptUtil - .conjunctions(filter.getCondition()) : new ArrayList(); - - List leftFilters = new ArrayList(); - List rightFilters = new ArrayList(); - int origJoinFiltersSz = joinFilters.size(); - - // TODO - add logic to derive additional filters. E.g., from - // (t1.a = 1 AND t2.a = 2) OR (t1.b = 3 AND t2.b = 4), you can - // derive table filters: - // (t1.a = 1 OR t1.b = 3) - // (t2.a = 2 OR t2.b = 4) - - // Try to push down above filters. These are typically where clause - // filters. They can be pushed down if they are not on the NULL - // generating side. - boolean filterPushed = false; - final Holder joinTypeHolder = Holder.of(join.getJoinType()); - if (RelOptUtil.classifyFilters(join, aboveFilters, - join.getJoinType(), true, !join.getJoinType().generatesNullsOnLeft(), !join.getJoinType() - .generatesNullsOnRight(), joinFilters, leftFilters, rightFilters, joinTypeHolder, smart)) { - filterPushed = true; - } - - /* - * Any predicates pushed down to joinFilters that aren't equality - * conditions: put them back as aboveFilters because Hive doesn't support - * not equi join conditions. - */ - ListIterator filterIter = joinFilters.listIterator(); - while (filterIter.hasNext()) { - RexNode exp = filterIter.next(); - if (exp instanceof RexCall) { - RexCall c = (RexCall) exp; - if (c.getOperator().getKind() == SqlKind.EQUALS) { - boolean validHiveJoinFilter = true; - for (RexNode rn : c.getOperands()) { - // NOTE: Hive dis-allows projections from both left & right side - // of join condition. Example: Hive disallows - // (r1.x=r2.x)=(r1.y=r2.y) on join condition. - if (filterRefersToBothSidesOfJoin(rn, join)) { - validHiveJoinFilter = false; - break; - } - } - if (validHiveJoinFilter) - continue; - } - } - aboveFilters.add(exp); - filterIter.remove(); - } - - /* - * if all pushed filters where put back then set filterPushed to false - */ - if (leftFilters.size() == 0 && rightFilters.size() == 0 - && joinFilters.size() == origJoinFiltersSz) { - filterPushed = false; - } - - // Try to push down filters in ON clause. A ON clause filter can only be - // pushed down if it does not affect the non-matching set, i.e. it is - // not on the side which is preserved. - if (RelOptUtil.classifyFilters(join, joinFilters, null, false, !join - .getJoinType().generatesNullsOnRight(), !join.getJoinType() - .generatesNullsOnLeft(), joinFilters, leftFilters, rightFilters, joinTypeHolder, false)) { - filterPushed = true; - } - - if (!filterPushed) { - return; - } - - /* - * Remove always true conditions that got pushed down. - */ - removeAlwaysTruePredicates(leftFilters); - removeAlwaysTruePredicates(rightFilters); - removeAlwaysTruePredicates(joinFilters); - - // create FilterRels on top of the children if any filters were - // pushed to them - RexBuilder rexBuilder = join.getCluster().getRexBuilder(); - RelNode leftRel = createFilterOnRel(rexBuilder, join.getLeft(), leftFilters); - RelNode rightRel = createFilterOnRel(rexBuilder, join.getRight(), - rightFilters); - - // create the new join node referencing the new children and - // containing its new join filters (if there are any) - RexNode joinFilter; - - if (joinFilters.size() == 0) { - // if nothing actually got pushed and there is nothing leftover, - // then this rule is a no-op - if (leftFilters.isEmpty() - && rightFilters.isEmpty() - && joinTypeHolder.get() == join.getJoinType()) { - return; - } - joinFilter = rexBuilder.makeLiteral(true); - } else { - joinFilter = RexUtil.composeConjunction(rexBuilder, joinFilters, true); - } - RelNode newJoinRel = HiveJoinRel.getJoin(join.getCluster(), leftRel, - rightRel, joinFilter, join.getJoinType(), false); - - // create a FilterRel on top of the join if needed - RelNode newRel = createFilterOnRel(rexBuilder, newJoinRel, aboveFilters); - - call.transformTo(newRel); - } - - /** - * If the filter list passed in is non-empty, creates a FilterRel on top of - * the existing RelNode; otherwise, just returns the RelNode - * - * @param rexBuilder - * rex builder - * @param rel - * the RelNode that the filter will be put on top of - * @param filters - * list of filters - * @return new RelNode or existing one if no filters - */ - private RelNode createFilterOnRel(RexBuilder rexBuilder, RelNode rel, - List filters) { - RexNode andFilters = RexUtil.composeConjunction(rexBuilder, filters, false); - if (andFilters.isAlwaysTrue()) { - return rel; - } - return new HiveFilterRel(rel.getCluster(), rel.getCluster().traitSetOf( - HiveRel.CONVENTION), rel, andFilters); - } - - private void removeAlwaysTruePredicates(List predicates) { - - ListIterator iter = predicates.listIterator(); - while (iter.hasNext()) { - RexNode exp = iter.next(); - if (isAlwaysTrue(exp)) { - iter.remove(); - } - } - } - - private boolean isAlwaysTrue(RexNode predicate) { - if (predicate instanceof RexCall) { - RexCall c = (RexCall) predicate; - if (c.getOperator().getKind() == SqlKind.EQUALS) { - return isAlwaysTrue(c.getOperands().get(0)) - && isAlwaysTrue(c.getOperands().get(1)); - } - } - return predicate.isAlwaysTrue(); - } - - private boolean filterRefersToBothSidesOfJoin(RexNode filter, JoinRelBase j) { - boolean refersToBothSides = false; - - int joinNoOfProjects = j.getRowType().getFieldCount(); - BitSet filterProjs = new BitSet(joinNoOfProjects); - BitSet allLeftProjs = new BitSet(joinNoOfProjects); - BitSet allRightProjs = new BitSet(joinNoOfProjects); - allLeftProjs.set(0, j.getInput(0).getRowType().getFieldCount(), true); - allRightProjs.set(j.getInput(0).getRowType().getFieldCount(), joinNoOfProjects, true); - - InputFinder inputFinder = new InputFinder(filterProjs); - filter.accept(inputFinder); - - if (allLeftProjs.intersects(filterProjs) && allRightProjs.intersects(filterProjs)) - refersToBothSides = true; - - return refersToBothSides; - } +public abstract class HivePushFilterPastJoinRule extends PushFilterPastJoinRule { + + public static final HivePushFilterPastJoinRule FILTER_ON_JOIN = new HivePushFilterIntoJoinRule(); + + public static final HivePushFilterPastJoinRule JOIN = new HivePushDownJoinConditionRule(); + + /** + * Creates a PushFilterPastJoinRule with an explicit root operand. + */ + protected HivePushFilterPastJoinRule(RelOptRuleOperand operand, String id, + boolean smart, RelFactories.FilterFactory filterFactory, + RelFactories.ProjectFactory projectFactory) { + super(operand, id, smart, filterFactory, projectFactory); + } + + /** + * Rule that tries to push filter expressions into a join condition and into + * the inputs of the join. + */ + public static class HivePushFilterIntoJoinRule extends + HivePushFilterPastJoinRule { + public HivePushFilterIntoJoinRule() { + super(RelOptRule.operand(FilterRelBase.class, + RelOptRule.operand(JoinRelBase.class, RelOptRule.any())), + "HivePushFilterPastJoinRule:filter", true, + HiveFilterRel.DEFAULT_FILTER_FACTORY, + HiveProjectRel.DEFAULT_PROJECT_FACTORY); + } + + @Override + public void onMatch(RelOptRuleCall call) { + FilterRelBase filter = call.rel(0); + JoinRelBase join = call.rel(1); + super.perform(call, filter, join); + } + } + + public static class HivePushDownJoinConditionRule extends + HivePushFilterPastJoinRule { + public HivePushDownJoinConditionRule() { + super(RelOptRule.operand(JoinRelBase.class, RelOptRule.any()), + "HivePushFilterPastJoinRule:no-filter", true, + HiveFilterRel.DEFAULT_FILTER_FACTORY, + HiveProjectRel.DEFAULT_PROJECT_FACTORY); + } + + @Override + public void onMatch(RelOptRuleCall call) { + JoinRelBase join = call.rel(0); + super.perform(call, null, join); + } + } + + /* + * Any predicates pushed down to joinFilters that aren't equality + * conditions: put them back as aboveFilters because Hive doesn't support + * not equi join conditions. + */ + @Override + protected void validateJoinFilters(List aboveFilters, + List joinFilters, JoinRelBase join) { + ListIterator filterIter = joinFilters.listIterator(); + while (filterIter.hasNext()) { + RexNode exp = filterIter.next(); + if (exp instanceof RexCall) { + RexCall c = (RexCall) exp; + if (c.getOperator().getKind() == SqlKind.EQUALS) { + boolean validHiveJoinFilter = true; + for (RexNode rn : c.getOperands()) { + // NOTE: Hive dis-allows projections from both left & + // right side + // of join condition. Example: Hive disallows + // (r1.x=r2.x)=(r1.y=r2.y) on join condition. + if (filterRefersToBothSidesOfJoin(rn, join)) { + validHiveJoinFilter = false; + break; + } + } + if (validHiveJoinFilter) + continue; + } + } + aboveFilters.add(exp); + filterIter.remove(); + } + } + + private boolean filterRefersToBothSidesOfJoin(RexNode filter, JoinRelBase j) { + boolean refersToBothSides = false; + + int joinNoOfProjects = j.getRowType().getFieldCount(); + BitSet filterProjs = new BitSet(joinNoOfProjects); + BitSet allLeftProjs = new BitSet(joinNoOfProjects); + BitSet allRightProjs = new BitSet(joinNoOfProjects); + allLeftProjs.set(0, j.getInput(0).getRowType().getFieldCount(), true); + allRightProjs.set(j.getInput(0).getRowType().getFieldCount(), + joinNoOfProjects, true); + + InputFinder inputFinder = new InputFinder(filterProjs); + filter.accept(inputFinder); + + if (allLeftProjs.intersects(filterProjs) + && allRightProjs.intersects(filterProjs)) + refersToBothSides = true; + + return refersToBothSides; + } } // End PushFilterPastJoinRule.java diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/FilterSelectivityEstimator.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/FilterSelectivityEstimator.java index 214a29f5f878..ba07363c09d3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/FilterSelectivityEstimator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/FilterSelectivityEstimator.java @@ -34,13 +34,13 @@ import org.eigenbase.sql.SqlKind; public class FilterSelectivityEstimator extends RexVisitorImpl { - private final RelNode m_childRel; - private final double m_childCardinality; + private final RelNode childRel; + private final double childCardinality; protected FilterSelectivityEstimator(RelNode childRel) { super(true); - m_childRel = childRel; - m_childCardinality = RelMetadataQuery.getRowCount(m_childRel); + this.childRel = childRel; + this.childCardinality = RelMetadataQuery.getRowCount(childRel); } public Double estimateSelectivity(RexNode predicate) { @@ -53,11 +53,10 @@ public Double visitCall(RexCall call) { } /* - * Ignore any predicates on partition columns - * because we have already accounted for these in - * the Table row count. + * Ignore any predicates on partition columns because we have already + * accounted for these in the Table row count. */ - if (isPartitionPredicate(call, m_childRel)) { + if (isPartitionPredicate(call, this.childRel)) { return 1.0; } @@ -151,10 +150,10 @@ private Double computeDisjunctionSelectivity(RexCall call) { if (tmpSelectivity == null) { tmpSelectivity = 0.99; } - tmpCardinality = m_childCardinality * tmpSelectivity; + tmpCardinality = childCardinality * tmpSelectivity; if (tmpCardinality > 1) - tmpSelectivity = (1 - tmpCardinality / m_childCardinality); + tmpSelectivity = (1 - tmpCardinality / childCardinality); else tmpSelectivity = 1.0; @@ -195,7 +194,7 @@ private Double getMaxNDV(RexCall call) { for (RexNode op : call.getOperands()) { if (op instanceof RexInputRef) { - tmpNDV = HiveRelMdDistinctRowCount.getDistinctRowCount(m_childRel, + tmpNDV = HiveRelMdDistinctRowCount.getDistinctRowCount(this.childRel, ((RexInputRef) op).getIndex()); if (tmpNDV > maxNDV) maxNDV = tmpNDV; @@ -203,7 +202,7 @@ private Double getMaxNDV(RexCall call) { irv = new InputReferencedVisitor(); irv.apply(op); for (Integer childProjIndx : irv.inputPosReferenced) { - tmpNDV = HiveRelMdDistinctRowCount.getDistinctRowCount(m_childRel, childProjIndx); + tmpNDV = HiveRelMdDistinctRowCount.getDistinctRowCount(this.childRel, childProjIndx); if (tmpNDV > maxNDV) maxNDV = tmpNDV; } @@ -214,14 +213,13 @@ private Double getMaxNDV(RexCall call) { } private boolean isPartitionPredicate(RexNode expr, RelNode r) { - if ( r instanceof ProjectRelBase ) { + if (r instanceof ProjectRelBase) { expr = RelOptUtil.pushFilterPastProject(expr, (ProjectRelBase) r); return isPartitionPredicate(expr, ((ProjectRelBase) r).getChild()); - } else if ( r instanceof FilterRelBase ) { + } else if (r instanceof FilterRelBase) { return isPartitionPredicate(expr, ((FilterRelBase) r).getChild()); - } else if ( r instanceof HiveTableScanRel ) { - RelOptHiveTable table = (RelOptHiveTable) - ((HiveTableScanRel)r).getTable(); + } else if (r instanceof HiveTableScanRel) { + RelOptHiveTable table = (RelOptHiveTable) ((HiveTableScanRel) r).getTable(); BitSet cols = RelOptUtil.InputFinder.bits(expr); return table.containsPartitionColumnsOnly(cols); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java index 7b97eca7c9b4..e6052e754589 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java @@ -82,35 +82,35 @@ public class RexNodeConverter { private static final Log LOG = LogFactory.getLog(RexNodeConverter.class); private static class InputCtx { - private final RelDataType m_optiqInpDataType; - private final ImmutableMap m_hiveNameToPosMap; - private final RowResolver m_hiveRR; - private final int m_offsetInOptiqSchema; + private final RelDataType optiqInpDataType; + private final ImmutableMap hiveNameToPosMap; + private final RowResolver hiveRR; + private final int offsetInOptiqSchema; private InputCtx(RelDataType optiqInpDataType, ImmutableMap hiveNameToPosMap, RowResolver hiveRR, int offsetInOptiqSchema) { - m_optiqInpDataType = optiqInpDataType; - m_hiveNameToPosMap = hiveNameToPosMap; - m_hiveRR = hiveRR; - m_offsetInOptiqSchema = offsetInOptiqSchema; + this.optiqInpDataType = optiqInpDataType; + this.hiveNameToPosMap = hiveNameToPosMap; + this.hiveRR = hiveRR; + this.offsetInOptiqSchema = offsetInOptiqSchema; } }; - private final RelOptCluster m_cluster; - private final ImmutableList m_inputCtxs; - private final boolean m_flattenExpr; + private final RelOptCluster cluster; + private final ImmutableList inputCtxs; + private final boolean flattenExpr; public RexNodeConverter(RelOptCluster cluster, RelDataType inpDataType, ImmutableMap nameToPosMap, int offset, boolean flattenExpr) { - this.m_cluster = cluster; - m_inputCtxs = ImmutableList.of(new InputCtx(inpDataType, nameToPosMap, null, offset)); - m_flattenExpr = flattenExpr; + this.cluster = cluster; + this.inputCtxs = ImmutableList.of(new InputCtx(inpDataType, nameToPosMap, null, offset)); + this.flattenExpr = flattenExpr; } public RexNodeConverter(RelOptCluster cluster, List inpCtxLst, boolean flattenExpr) { - this.m_cluster = cluster; - m_inputCtxs = ImmutableList. builder().addAll(inpCtxLst).build(); - m_flattenExpr = flattenExpr; + this.cluster = cluster; + this.inputCtxs = ImmutableList. builder().addAll(inpCtxLst).build(); + this.flattenExpr = flattenExpr; } public RexNode convert(ExprNodeDesc expr) throws SemanticException { @@ -134,7 +134,7 @@ private RexNode convert(final ExprNodeFieldDesc fieldDesc) throws SemanticExcept RexNode rexNode = convert(fieldDesc.getDesc()); if (rexNode instanceof RexCall) { // regular case of accessing nested field in a column - return m_cluster.getRexBuilder().makeFieldAccess(rexNode, fieldDesc.getFieldName(), true); + return cluster.getRexBuilder().makeFieldAccess(rexNode, fieldDesc.getFieldName(), true); } else { // This may happen for schema-less tables, where columns are dynamically // supplied by serdes. @@ -184,7 +184,7 @@ private RexNode convert(final ExprNodeGenericFuncDesc func) throws SemanticExcep } } - argTypeBldr.add(TypeConverter.convert(tmpExprNode.getTypeInfo(), m_cluster.getTypeFactory())); + argTypeBldr.add(TypeConverter.convert(tmpExprNode.getTypeInfo(), cluster.getTypeFactory())); tmpRN = convert(tmpExprNode); childRexNodeLst.add(tmpRN); } @@ -196,20 +196,20 @@ private RexNode convert(final ExprNodeGenericFuncDesc func) throws SemanticExcep if (expr == null) { // This is not a cast; process the function. - retType = TypeConverter.convert(func.getTypeInfo(), m_cluster.getTypeFactory()); + retType = TypeConverter.convert(func.getTypeInfo(), cluster.getTypeFactory()); SqlOperator optiqOp = SqlFunctionConverter.getOptiqOperator(func.getFuncText(), func.getGenericUDF(), argTypeBldr.build(), retType); - expr = m_cluster.getRexBuilder().makeCall(optiqOp, childRexNodeLst); + expr = cluster.getRexBuilder().makeCall(optiqOp, childRexNodeLst); } else { retType = expr.getType(); } // TODO: Cast Function in Optiq have a bug where it infertype on cast throws // an exception - if (m_flattenExpr && (expr instanceof RexCall) + if (flattenExpr && (expr instanceof RexCall) && !(((RexCall) expr).getOperator() instanceof SqlCastFunction)) { RexCall call = (RexCall) expr; - expr = m_cluster.getRexBuilder().makeCall(retType, call.getOperator(), + expr = cluster.getRexBuilder().makeCall(retType, call.getOperator(), RexUtil.flatten(call.getOperands(), call.getOperator())); } @@ -246,8 +246,8 @@ private RexNode handleExplicitCast(ExprNodeGenericFuncDesc func, List c if ((udf instanceof GenericUDFToChar) || (udf instanceof GenericUDFToVarchar) || (udf instanceof GenericUDFToDecimal) || (udf instanceof GenericUDFToDate) || (udf instanceof GenericUDFToBinary) || castExprUsingUDFBridge(udf)) { - castExpr = m_cluster.getRexBuilder().makeAbstractCast( - TypeConverter.convert(func.getTypeInfo(), m_cluster.getTypeFactory()), + castExpr = cluster.getRexBuilder().makeAbstractCast( + TypeConverter.convert(func.getTypeInfo(), cluster.getTypeFactory()), childRexNodeLst.get(0)); } } @@ -258,15 +258,15 @@ private RexNode handleExplicitCast(ExprNodeGenericFuncDesc func, List c private InputCtx getInputCtx(ExprNodeColumnDesc col) throws SemanticException { InputCtx ctxLookingFor = null; - if (m_inputCtxs.size() == 1) { - ctxLookingFor = m_inputCtxs.get(0); + if (inputCtxs.size() == 1) { + ctxLookingFor = inputCtxs.get(0); } else { String tableAlias = col.getTabAlias(); String colAlias = col.getColumn(); int noInp = 0; - for (InputCtx ic : m_inputCtxs) { - if (tableAlias == null || ic.m_hiveRR.hasTableAlias(tableAlias)) { - if (ic.m_hiveRR.getPosition(colAlias) >= 0) { + for (InputCtx ic : inputCtxs) { + if (tableAlias == null || ic.hiveRR.hasTableAlias(tableAlias)) { + if (ic.hiveRR.getPosition(colAlias) >= 0) { ctxLookingFor = ic; noInp++; } @@ -282,16 +282,16 @@ private InputCtx getInputCtx(ExprNodeColumnDesc col) throws SemanticException { protected RexNode convert(ExprNodeColumnDesc col) throws SemanticException { InputCtx ic = getInputCtx(col); - int pos = ic.m_hiveNameToPosMap.get(col.getColumn()); - return m_cluster.getRexBuilder().makeInputRef( - ic.m_optiqInpDataType.getFieldList().get(pos).getType(), pos + ic.m_offsetInOptiqSchema); + int pos = ic.hiveNameToPosMap.get(col.getColumn()); + return cluster.getRexBuilder().makeInputRef( + ic.optiqInpDataType.getFieldList().get(pos).getType(), pos + ic.offsetInOptiqSchema); } private static final BigInteger MIN_LONG_BI = BigInteger.valueOf(Long.MIN_VALUE), MAX_LONG_BI = BigInteger.valueOf(Long.MAX_VALUE); protected RexNode convert(ExprNodeConstantDesc literal) throws OptiqSemanticException { - RexBuilder rexBuilder = m_cluster.getRexBuilder(); + RexBuilder rexBuilder = cluster.getRexBuilder(); RelDataTypeFactory dtFactory = rexBuilder.getTypeFactory(); PrimitiveTypeInfo hiveType = (PrimitiveTypeInfo) literal.getTypeInfo(); RelDataType optiqDataType = TypeConverter.convert(hiveType, dtFactory); @@ -353,7 +353,7 @@ protected RexNode convert(ExprNodeConstantDesc literal) throws OptiqSemanticExce // will work... // An alternative would be to throw CboSemanticException and fall back // to no CBO. - RelDataType relType = m_cluster.getTypeFactory().createSqlType(SqlTypeName.DECIMAL, + RelDataType relType = cluster.getTypeFactory().createSqlType(SqlTypeName.DECIMAL, bd.scale(), unscaled.toString().length()); optiqLiteral = rexBuilder.makeExactLiteral(bd, relType); } @@ -397,8 +397,8 @@ protected RexNode convert(ExprNodeConstantDesc literal) throws OptiqSemanticExce } private RexNode createNullLiteral(ExprNodeDesc expr) throws OptiqSemanticException { - return m_cluster.getRexBuilder().makeNullLiteral( - TypeConverter.convert(expr.getTypeInfo(), m_cluster.getTypeFactory()).getSqlTypeName()); + return cluster.getRexBuilder().makeNullLiteral( + TypeConverter.convert(expr.getTypeInfo(), cluster.getTypeFactory()).getSqlTypeName()); } public static RexNode convert(RelOptCluster cluster, ExprNodeDesc joinCondnExprNode, diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java index 31f906a57570..793f11784418 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java @@ -64,7 +64,7 @@ import com.google.common.collect.Maps; public class SqlFunctionConverter { - private static final Log LOG = LogFactory.getLog(SqlFunctionConverter.class); + private static final Log LOG = LogFactory.getLog(SqlFunctionConverter.class); static final Map hiveToOptiq; static final Map optiqToHiveToken; @@ -87,10 +87,12 @@ public static SqlOperator getOptiqOperator(String funcTextName, GenericUDF hiveU } // do generic lookup String name = null; if (StringUtils.isEmpty(funcTextName)) { - name = getName(hiveUDF); // this should probably never happen, see getName comment + name = getName(hiveUDF); // this should probably never happen, see getName + // comment LOG.warn("The function text was empty, name from annotation is " + name); } else { - // We could just do toLowerCase here and let SA qualify it, but let's be proper... + // We could just do toLowerCase here and let SA qualify it, but let's be + // proper... name = FunctionRegistry.getNormalizedFunctionName(funcTextName); } return getOptiqFn(name, optiqArgTypes, retType); @@ -115,11 +117,10 @@ private static FunctionInfo handleExplicitCast(SqlOperator op, RelDataType dt) { if (castType.equals(TypeInfoFactory.byteTypeInfo)) { castUDF = FunctionRegistry.getFunctionInfo("tinyint"); } else if (castType instanceof CharTypeInfo) { - castUDF = handleCastForParameterizedType(castType, - FunctionRegistry.getFunctionInfo("char")); + castUDF = handleCastForParameterizedType(castType, FunctionRegistry.getFunctionInfo("char")); } else if (castType instanceof VarcharTypeInfo) { castUDF = handleCastForParameterizedType(castType, - FunctionRegistry.getFunctionInfo("varchar")); + FunctionRegistry.getFunctionInfo("varchar")); } else if (castType.equals(TypeInfoFactory.stringTypeInfo)) { castUDF = FunctionRegistry.getFunctionInfo("string"); } else if (castType.equals(TypeInfoFactory.booleanTypeInfo)) { @@ -140,24 +141,24 @@ private static FunctionInfo handleExplicitCast(SqlOperator op, RelDataType dt) { castUDF = FunctionRegistry.getFunctionInfo("datetime"); } else if (castType instanceof DecimalTypeInfo) { castUDF = handleCastForParameterizedType(castType, - FunctionRegistry.getFunctionInfo("decimal")); + FunctionRegistry.getFunctionInfo("decimal")); } else if (castType.equals(TypeInfoFactory.binaryTypeInfo)) { castUDF = FunctionRegistry.getFunctionInfo("binary"); - } else throw new IllegalStateException("Unexpected type : " + - castType.getQualifiedName()); + } else + throw new IllegalStateException("Unexpected type : " + castType.getQualifiedName()); } return castUDF; } private static FunctionInfo handleCastForParameterizedType(TypeInfo ti, FunctionInfo fi) { - SettableUDF udf = (SettableUDF)fi.getGenericUDF(); + SettableUDF udf = (SettableUDF) fi.getGenericUDF(); try { udf.setTypeInfo(ti); } catch (UDFArgumentException e) { throw new RuntimeException(e); } - return new FunctionInfo(fi.isNative(),fi.getDisplayName(),(GenericUDF)udf); + return new FunctionInfo(fi.isNative(), fi.getDisplayName(), (GenericUDF) udf); } // TODO: 1) handle Agg Func Name translation 2) is it correct to add func args @@ -175,11 +176,10 @@ public static ASTNode buildAST(SqlOperator op, List children) { } else if (op.kind == SqlKind.PLUS_PREFIX) { node = (ASTNode) ParseDriver.adaptor.create(HiveParser.PLUS, "PLUS"); } else { - if (op.getName().toUpperCase() - .equals(SqlStdOperatorTable.COUNT.getName()) + if (op.getName().toUpperCase().equals(SqlStdOperatorTable.COUNT.getName()) && children.size() == 0) { - node = (ASTNode) ParseDriver.adaptor.create( - HiveParser.TOK_FUNCTIONSTAR, "TOK_FUNCTIONSTAR"); + node = (ASTNode) ParseDriver.adaptor.create(HiveParser.TOK_FUNCTIONSTAR, + "TOK_FUNCTIONSTAR"); } node.addChild((ASTNode) ParseDriver.adaptor.create(HiveParser.Identifier, op.getName())); } @@ -210,9 +210,12 @@ public static ASTNode buildAST(SqlOperator op, List children, int i) { } - // TODO: this is not valid. Function names for built-in UDFs are specified in FunctionRegistry, - // and only happen to match annotations. For user UDFs, the name is what user specifies at - // creation time (annotation can be absent, different, or duplicate some other function). + // TODO: this is not valid. Function names for built-in UDFs are specified in + // FunctionRegistry, + // and only happen to match annotations. For user UDFs, the name is what user + // specifies at + // creation time (annotation can be absent, different, or duplicate some other + // function). private static String getName(GenericUDF hiveUDF) { String udfName = null; if (hiveUDF instanceof GenericUDFBridge) { @@ -287,70 +290,72 @@ private static HiveToken hToken(int type, String text) { } public static class OptiqUDAF extends SqlAggFunction { - final ImmutableList m_argTypes; - final RelDataType m_retType; + final ImmutableList argTypes; + final RelDataType retType; public OptiqUDAF(String opName, SqlReturnTypeInference returnTypeInference, SqlOperandTypeInference operandTypeInference, SqlOperandTypeChecker operandTypeChecker, ImmutableList argTypes, RelDataType retType) { super(opName, SqlKind.OTHER_FUNCTION, returnTypeInference, operandTypeInference, operandTypeChecker, SqlFunctionCategory.USER_DEFINED_FUNCTION); - m_argTypes = argTypes; - m_retType = retType; + this.argTypes = argTypes; + this.retType = retType; } @Override public List getParameterTypes(final RelDataTypeFactory typeFactory) { - return m_argTypes; + return this.argTypes; } @Override public RelDataType getReturnType(final RelDataTypeFactory typeFactory) { - return m_retType; + return this.retType; } } private static class OptiqUDFInfo { - private String m_udfName; - private SqlReturnTypeInference m_returnTypeInference; - private SqlOperandTypeInference m_operandTypeInference; - private SqlOperandTypeChecker m_operandTypeChecker; - private ImmutableList m_argTypes; - private RelDataType m_retType; + private String udfName; + private SqlReturnTypeInference returnTypeInference; + private SqlOperandTypeInference operandTypeInference; + private SqlOperandTypeChecker operandTypeChecker; + private ImmutableList argTypes; + private RelDataType retType; } private static OptiqUDFInfo getUDFInfo(String hiveUdfName, ImmutableList optiqArgTypes, RelDataType optiqRetType) { OptiqUDFInfo udfInfo = new OptiqUDFInfo(); - udfInfo.m_udfName = hiveUdfName; - udfInfo.m_returnTypeInference = ReturnTypes.explicit(optiqRetType); - udfInfo.m_operandTypeInference = InferTypes.explicit(optiqArgTypes); + udfInfo.udfName = hiveUdfName; + udfInfo.returnTypeInference = ReturnTypes.explicit(optiqRetType); + udfInfo.operandTypeInference = InferTypes.explicit(optiqArgTypes); ImmutableList.Builder typeFamilyBuilder = new ImmutableList.Builder(); for (RelDataType at : optiqArgTypes) { typeFamilyBuilder.add(Util.first(at.getSqlTypeName().getFamily(), SqlTypeFamily.ANY)); } - udfInfo.m_operandTypeChecker = OperandTypes.family(typeFamilyBuilder.build()); + udfInfo.operandTypeChecker = OperandTypes.family(typeFamilyBuilder.build()); - udfInfo.m_argTypes = ImmutableList. copyOf(optiqArgTypes); - udfInfo.m_retType = optiqRetType; + udfInfo.argTypes = ImmutableList. copyOf(optiqArgTypes); + udfInfo.retType = optiqRetType; return udfInfo; } public static SqlOperator getOptiqFn(String hiveUdfName, - ImmutableList optiqArgTypes, RelDataType optiqRetType) throws OptiqSemanticException{ + ImmutableList optiqArgTypes, RelDataType optiqRetType) + throws OptiqSemanticException { if (hiveUdfName != null && hiveUdfName.trim().equals("<=>")) { // We can create Optiq IS_DISTINCT_FROM operator for this. But since our - // join reordering algo cant handle this anyway there is no advantage of this. + // join reordering algo cant handle this anyway there is no advantage of + // this. // So, bail out for now. throw new OptiqSemanticException("<=> is not yet supported for cbo."); } SqlOperator optiqOp = hiveToOptiq.get(hiveUdfName); if (optiqOp == null) { OptiqUDFInfo uInf = getUDFInfo(hiveUdfName, optiqArgTypes, optiqRetType); - optiqOp = new SqlFunction(uInf.m_udfName, SqlKind.OTHER_FUNCTION, uInf.m_returnTypeInference, - uInf.m_operandTypeInference, uInf.m_operandTypeChecker, + optiqOp = new SqlFunction(uInf.udfName, SqlKind.OTHER_FUNCTION, uInf.returnTypeInference, + uInf.operandTypeInference, uInf.operandTypeChecker, SqlFunctionCategory.USER_DEFINED_FUNCTION); } @@ -363,8 +368,8 @@ public static SqlAggFunction getOptiqAggFn(String hiveUdfName, if (optiqAggFn == null) { OptiqUDFInfo uInf = getUDFInfo(hiveUdfName, optiqArgTypes, optiqRetType); - optiqAggFn = new OptiqUDAF(uInf.m_udfName, uInf.m_returnTypeInference, - uInf.m_operandTypeInference, uInf.m_operandTypeChecker, uInf.m_argTypes, uInf.m_retType); + optiqAggFn = new OptiqUDAF(uInf.udfName, uInf.returnTypeInference, uInf.operandTypeInference, + uInf.operandTypeChecker, uInf.argTypes, uInf.retType); } return optiqAggFn; From 17b4213a2a64358d5285211545a895d62272f0ef Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 23 Oct 2014 02:43:54 +0000 Subject: [PATCH 156/339] HIVE-8549: NPE in PK-FK inference when one side of join is complex tree (Prasanth J via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633737 13f79535-47bb-0310-9956-ffa450edef68 --- .../annotation/StatsRulesProcFactory.java | 56 +++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java index 1feb1fd361d3..4b9f2927f7f6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java @@ -1293,13 +1293,61 @@ private List getSelectivity(List> ops, List result = Lists.newArrayList(); for (Integer idx : opsWithPK) { Operator op = ops.get(idx); - TableScanOperator tsOp = OperatorUtils - .findSingleOperatorUpstream(op, TableScanOperator.class); + float selectivity = getSelectivitySimpleTree(op); + result.add(selectivity); + } + return result; + } + + private float getSelectivitySimpleTree(Operator op) { + TableScanOperator tsOp = OperatorUtils + .findSingleOperatorUpstream(op, TableScanOperator.class); + if (tsOp == null) { + // complex tree with multiple parents + return getSelectivityComplexTree(op); + } else { + // simple tree with single parent long inputRow = tsOp.getStatistics().getNumRows(); long outputRow = op.getStatistics().getNumRows(); - result.add((float) outputRow / (float) inputRow); + return (float) outputRow / (float) inputRow; } - return result; + } + + private float getSelectivityComplexTree(Operator op) { + Operator multiParentOp = null; + Operator currentOp = op; + + // TS-1 TS-2 + // | | + // RS-1 RS-2 + // \ / + // JOIN + // | + // FIL + // | + // RS-3 + // + // For the above complex operator tree, + // selectivity(JOIN) = selectivity(RS-1) * selectivity(RS-2) and + // selectivity(RS-3) = numRows(RS-3)/numRows(JOIN) * selectivity(JOIN) + while(multiParentOp == null) { + if (op.getParentOperators().size() > 1) { + multiParentOp = op; + } else { + op = op.getParentOperators().get(0); + } + } + + float selMultiParent = 1.0f; + for(Operator parent : multiParentOp.getParentOperators()) { + // In the above example, TS-1 -> RS-1 and TS-2 -> RS-2 are simple trees + selMultiParent *= getSelectivitySimpleTree(parent); + } + + float selCurrOp = ((float) currentOp.getStatistics().getNumRows() / + (float) multiParentOp.getStatistics().getNumRows()) * selMultiParent; + + return selCurrOp; } /** From 8fb009ac72e7c40b965ba6b778dfa8c052cadf82 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Thu, 23 Oct 2014 15:25:07 +0000 Subject: [PATCH 157/339] HIVE-8555 : Too many casts results in loss of original string representation for constant (Ashutosh Chauhan via Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633841 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/FunctionRegistry.java | 14 ++-- .../ConstantPropagateProcFactory.java | 11 +++- .../hive/ql/plan/ExprNodeConstantDesc.java | 11 ++++ .../queries/clientpositive/constprog_type.q | 25 +++++++ .../clientpositive/constprog_type.q.out | 66 +++++++++++++++++++ 5 files changed, 119 insertions(+), 8 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java index 62400dd0bf43..4e20ce01384c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java @@ -1711,13 +1711,13 @@ public static boolean isOpCast(ExprNodeDesc desc) { if (!(desc instanceof ExprNodeGenericFuncDesc)) { return false; } - GenericUDF genericUDF = ((ExprNodeGenericFuncDesc)desc).getGenericUDF(); - Class udfClass; - if (genericUDF instanceof GenericUDFBridge) { - udfClass = ((GenericUDFBridge)genericUDF).getUdfClass(); - } else { - udfClass = genericUDF.getClass(); - } + return isOpCast(((ExprNodeGenericFuncDesc)desc).getGenericUDF()); + } + + public static boolean isOpCast(GenericUDF genericUDF) { + Class udfClass = (genericUDF instanceof GenericUDFBridge) ? + ((GenericUDFBridge)genericUDF).getUdfClass() : genericUDF.getClass(); + return udfClass == UDFToBoolean.class || udfClass == UDFToByte.class || udfClass == UDFToDouble.class || udfClass == UDFToFloat.class || udfClass == UDFToInteger.class || udfClass == UDFToLong.class || diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index 524b7a36c07c..daf28c1d783a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -166,6 +166,10 @@ private static ExprNodeConstantDesc typeCast(ExprNodeDesc desc, TypeInfo ti) { } LOG.debug("Casting " + desc + " to type " + ti); ExprNodeConstantDesc c = (ExprNodeConstantDesc) desc; + if (null != c.getFoldedFromVal() && priti.getTypeName().equals(serdeConstants.STRING_TYPE_NAME)) { + // avoid double casting to preserve original string representation of constant. + return new ExprNodeConstantDesc(c.getFoldedFromVal()); + } ObjectInspector origOI = TypeInfoUtils.getStandardJavaObjectInspectorFromTypeInfo(desc.getTypeInfo()); ObjectInspector oi = @@ -550,7 +554,12 @@ private static ExprNodeDesc evaluateFunction(GenericUDF udf, List LOG.error("Unable to evaluate " + udf + ". Return value unrecoginizable."); return null; } - return new ExprNodeConstantDesc(o); + String constStr = null; + if(arguments.length == 1 && FunctionRegistry.isOpCast(udf)) { + // remember original string representation of constant. + constStr = arguments[0].get().toString(); + } + return new ExprNodeConstantDesc(o).setFoldedFromVal(constStr); } catch (HiveException e) { LOG.error("Evaluation function " + udf.getClass() + " failed in Constant Propagatation Optimizer."); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeConstantDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeConstantDesc.java index 8a41577e103d..b15df0f31e9c 100755 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeConstantDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeConstantDesc.java @@ -40,6 +40,17 @@ public class ExprNodeConstantDesc extends ExprNodeDesc implements Serializable { // If this constant was created while doing constant folding, foldedFromCol holds the name of // original column from which it was folded. private transient String foldedFromCol; + // string representation of folding constant. + private transient String foldedFromVal; + + public ExprNodeConstantDesc setFoldedFromVal(String foldedFromVal) { + this.foldedFromVal = foldedFromVal; + return this; + } + + public String getFoldedFromVal() { + return foldedFromVal; + } public String getFoldedFromCol() { return foldedFromCol; diff --git a/ql/src/test/queries/clientpositive/constprog_type.q b/ql/src/test/queries/clientpositive/constprog_type.q index 93249adffa03..5683a48b77eb 100644 --- a/ql/src/test/queries/clientpositive/constprog_type.q +++ b/ql/src/test/queries/clientpositive/constprog_type.q @@ -12,3 +12,28 @@ SELECT cast('2013-11-17' as date), cast(cast('1.3041352164485E9' as double) as t FROM src tablesample (1 rows); SELECT * FROM dest1; + +SELECT key, value FROM src WHERE key = cast(86 as double); + +CREATE TABLE primitives1 ( + id INT , + bool_col BOOLEAN , + tinyint_col TINYINT , + smallint_col SMALLINT , + int_col INT , + bigint_col BIGINT , + float_col FLOAT , + double_col DOUBLE , + date_string_col STRING , + string_col STRING , + timestamp_col TIMESTAMP ) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ',' + ESCAPED BY '\\' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/types/primitives/090101.txt' +OVERWRITE INTO TABLE primitives1 ; + + +select id,bool_col,tinyint_col,smallint_col,int_col,bigint_col,float_col,double_col from primitives1 where id = cast (0 as float) and bool_col = cast('true' as boolean) and tinyint_col = cast(0 as double) and smallint_col = cast(0 as bigint) and int_col = cast (0 as double) and bigint_col = cast(0 as tinyint) and float_col = cast(0.0 as string) and double_col = cast (0.0 as float); diff --git a/ql/src/test/results/clientpositive/constprog_type.q.out b/ql/src/test/results/clientpositive/constprog_type.q.out index 176418471dc7..d145d37a3bb2 100644 --- a/ql/src/test/results/clientpositive/constprog_type.q.out +++ b/ql/src/test/results/clientpositive/constprog_type.q.out @@ -122,3 +122,69 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@dest1 #### A masked pattern was here #### 2013-11-17 2011-04-29 20:46:56.4485 +PREHOOK: query: SELECT key, value FROM src WHERE key = cast(86 as double) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT key, value FROM src WHERE key = cast(86 as double) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +86 val_86 +PREHOOK: query: CREATE TABLE primitives1 ( + id INT , + bool_col BOOLEAN , + tinyint_col TINYINT , + smallint_col SMALLINT , + int_col INT , + bigint_col BIGINT , + float_col FLOAT , + double_col DOUBLE , + date_string_col STRING , + string_col STRING , + timestamp_col TIMESTAMP ) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ',' + ESCAPED BY '\\' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@primitives1 +POSTHOOK: query: CREATE TABLE primitives1 ( + id INT , + bool_col BOOLEAN , + tinyint_col TINYINT , + smallint_col SMALLINT , + int_col INT , + bigint_col BIGINT , + float_col FLOAT , + double_col DOUBLE , + date_string_col STRING , + string_col STRING , + timestamp_col TIMESTAMP ) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ',' + ESCAPED BY '\\' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@primitives1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/types/primitives/090101.txt' +OVERWRITE INTO TABLE primitives1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@primitives1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/types/primitives/090101.txt' +OVERWRITE INTO TABLE primitives1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@primitives1 +PREHOOK: query: select id,bool_col,tinyint_col,smallint_col,int_col,bigint_col,float_col,double_col from primitives1 where id = cast (0 as float) and bool_col = cast('true' as boolean) and tinyint_col = cast(0 as double) and smallint_col = cast(0 as bigint) and int_col = cast (0 as double) and bigint_col = cast(0 as tinyint) and float_col = cast(0.0 as string) and double_col = cast (0.0 as float) +PREHOOK: type: QUERY +PREHOOK: Input: default@primitives1 +#### A masked pattern was here #### +POSTHOOK: query: select id,bool_col,tinyint_col,smallint_col,int_col,bigint_col,float_col,double_col from primitives1 where id = cast (0 as float) and bool_col = cast('true' as boolean) and tinyint_col = cast(0 as double) and smallint_col = cast(0 as bigint) and int_col = cast (0 as double) and bigint_col = cast(0 as tinyint) and float_col = cast(0.0 as string) and double_col = cast (0.0 as float) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@primitives1 +#### A masked pattern was here #### +0 true 0 0 0 0 0.0 0.0 From 4f1119ba646d502abff142e1610d174abc35b87d Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Thu, 23 Oct 2014 18:09:04 +0000 Subject: [PATCH 158/339] HIVE-8534 : sql std auth : update configuration whitelist for 0.14 (Thejas Nair, reviewed by Gunther Hagleitner, Lefty Leverenz) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633906 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 184 +++++++++++++++--- .../SQLStdHiveAccessControllerForTest.java | 5 +- .../plugin/HiveAccessController.java | 2 +- .../authorization/plugin/HiveAuthorizer.java | 3 +- .../plugin/HiveAuthorizerImpl.java | 2 +- .../plugin/SettableConfigUpdater.java | 63 ++++++ .../sqlstd/SQLStdHiveAccessController.java | 87 +-------- .../SQLStdHiveAccessControllerWrapper.java | 2 +- .../TestSQLStdHiveAccessControllerCLI.java | 7 +- .../TestSQLStdHiveAccessControllerHS2.java | 85 ++++++-- .../authorization_disallow_transform.q | 4 +- .../authorization_set_invalidconf.q | 8 + .../authorization_disallow_transform.q.out | 12 +- .../authorization_set_invalidconf.q.out | 9 + 14 files changed, 342 insertions(+), 131 deletions(-) create mode 100644 ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/SettableConfigUpdater.java create mode 100644 ql/src/test/queries/clientnegative/authorization_set_invalidconf.q create mode 100644 ql/src/test/results/clientnegative/authorization_set_invalidconf.q.out diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index b4deba764768..f83626652680 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -53,6 +53,8 @@ import org.apache.hadoop.util.Shell; import org.apache.hive.common.HiveCompat; +import com.google.common.base.Joiner; + /** * Hive Configuration. */ @@ -75,9 +77,7 @@ public class HiveConf extends Configuration { private static final Map metaConfs = new HashMap(); private final List restrictList = new ArrayList(); - private boolean isWhiteListRestrictionEnabled = false; - private final List modWhiteList = new ArrayList(); - + private Pattern modWhiteListPattern = null; static { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); @@ -1402,11 +1402,23 @@ public static enum ConfVars { "the privileges automatically granted to the owner whenever a table gets created.\n" + "An example like \"select,drop\" will grant select and drop privilege to the owner of the table"), - // if this is not set default value is added by sql standard authorizer. + // if this is not set default value is set during config initialization // Default value can't be set in this constructor as it would refer names in other ConfVars // whose constructor would not have been called - HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST("hive.security.authorization.sqlstd.confwhitelist", "", - "interal variable. List of modifiable configurations by user."), + HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST( + "hive.security.authorization.sqlstd.confwhitelist", "", + "List of comma separated Java regexes. Configurations parameters that match these\n" + + "regexes can be modified by user when SQL standard authorization is enabled.\n" + + "To get the default value, use the 'set ' command.\n" + + "Note that the hive.conf.restricted.list checks are still enforced after the white list\n" + + "check"), + + HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST_APPEND( + "hive.security.authorization.sqlstd.confwhitelist.append", "", + "List of comma separated Java regexes, to be appended to list set in\n" + + "hive.security.authorization.sqlstd.confwhitelist. Using this list instead\n" + + "of updating the original list means that you can append to the defaults\n" + + "set by SQL standard authorization instead of replacing it entirely."), HIVE_CLI_PRINT_HEADER("hive.cli.print.header", false, "Whether to print the names of the columns in query output."), @@ -2031,8 +2043,9 @@ private static synchronized InputStream getConfVarInputStream() { } public void verifyAndSet(String name, String value) throws IllegalArgumentException { - if (isWhiteListRestrictionEnabled) { - if (!modWhiteList.contains(name)) { + if (modWhiteListPattern != null) { + Matcher wlMatcher = modWhiteListPattern.matcher(name); + if (!wlMatcher.matches()) { throw new IllegalArgumentException("Cannot modify " + name + " at runtime. " + "It is not in list of params that are allowed to be modified at runtime"); } @@ -2369,10 +2382,145 @@ private void initialize(Class cls) { unset(key); } } + + setupSQLStdAuthWhiteList(); + // setup list of conf vars that are not allowed to change runtime setupRestrictList(); + + } + + /** + * If the config whitelist param for sql standard authorization is not set, set it up here. + */ + private void setupSQLStdAuthWhiteList() { + String whiteListParamsStr = getVar(ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST); + if (whiteListParamsStr == null || whiteListParamsStr.trim().isEmpty()) { + // set the default configs in whitelist + whiteListParamsStr = getSQLStdAuthDefaultWhiteListPattern(); + } + setVar(ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST, whiteListParamsStr); + } + + private static String getSQLStdAuthDefaultWhiteListPattern() { + // create the default white list from list of safe config params + // and regex list + String confVarPatternStr = Joiner.on("|").join(convertVarsToRegex(sqlStdAuthSafeVarNames)); + String regexPatternStr = Joiner.on("|").join(sqlStdAuthSafeVarNameRegexes); + return regexPatternStr + "|" + confVarPatternStr; + } + + /** + * @param paramList list of parameter strings + * @return list of parameter strings with "." replaced by "\." + */ + private static String[] convertVarsToRegex(String[] paramList) { + String[] regexes = new String[paramList.length]; + for(int i=0; i getPrincipalGrantInfoForRole(String roleName) throws HiveAut List getRoleGrantInfoForPrincipal(HivePrincipal principal) throws HiveAuthzPluginException, HiveAccessControlException; - void applyAuthorizationConfigPolicy(HiveConf hiveConf); + void applyAuthorizationConfigPolicy(HiveConf hiveConf) throws HiveAuthzPluginException; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizer.java index 911a94338675..fc880634865c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizer.java @@ -191,8 +191,9 @@ List showPrivileges(HivePrincipal principal, HivePrivilegeObj * Modify the given HiveConf object to configure authorization related parameters * or other parameters related to hive security * @param hiveConf + * @throws HiveAuthzPluginException */ - public void applyAuthorizationConfigPolicy(HiveConf hiveConf); + public void applyAuthorizationConfigPolicy(HiveConf hiveConf) throws HiveAuthzPluginException; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizerImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizerImpl.java index 69b803a286ea..e615049388e0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizerImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizerImpl.java @@ -124,7 +124,7 @@ public List getRoleGrantInfoForPrincipal(HivePrincipal principal) } @Override - public void applyAuthorizationConfigPolicy(HiveConf hiveConf) { + public void applyAuthorizationConfigPolicy(HiveConf hiveConf) throws HiveAuthzPluginException { accessController.applyAuthorizationConfigPolicy(hiveConf); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/SettableConfigUpdater.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/SettableConfigUpdater.java new file mode 100644 index 000000000000..3de9782101b5 --- /dev/null +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/SettableConfigUpdater.java @@ -0,0 +1,63 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hive.ql.security.authorization.plugin; + +import org.apache.hadoop.hive.common.classification.InterfaceAudience.LimitedPrivate; +import org.apache.hadoop.hive.common.classification.InterfaceStability.Evolving; +import org.apache.hadoop.hive.common.classification.InterfaceStability.Unstable; +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; + +/** + * Helper class that can be used by authorization implementations to set a + * default list of 'safe' HiveConf parameters that can be edited by user. It + * uses HiveConf white list parameters to enforce this. This can be called from + * HiveAuthorizer.applyAuthorizationConfigPolicy + * + * The set of config parameters that can be set is restricted to parameters that + * don't allow for any code injection, and config parameters that are not + * considered an 'admin config' option. + * + */ +@LimitedPrivate(value = { "Apache Argus (incubating)" }) +@Evolving +@Unstable +public class SettableConfigUpdater { + + public static void setHiveConfWhiteList(HiveConf hiveConf) throws HiveAuthzPluginException { + + String whiteListParamsStr = hiveConf + .getVar(ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST); + + if(whiteListParamsStr == null && whiteListParamsStr.trim().isEmpty()) { + throw new HiveAuthzPluginException("Configuration parameter " + + ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST.varname + + " is not iniatialized."); + } + + // append regexes that user wanted to add + String whiteListAppend = hiveConf + .getVar(ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST_APPEND); + if (whiteListAppend != null && !whiteListAppend.trim().equals("")) { + whiteListParamsStr = whiteListParamsStr + "|" + whiteListAppend; + } + + hiveConf.setModifiableWhiteListRegex(whiteListParamsStr); + } + +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java index 658ff76e4932..9c78876c903d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessController.java @@ -60,9 +60,9 @@ import org.apache.hadoop.hive.ql.security.authorization.plugin.HivePrivilegeObject; import org.apache.hadoop.hive.ql.security.authorization.plugin.HivePrivilegeObject.HivePrivilegeObjectType; import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveRoleGrant; +import org.apache.hadoop.hive.ql.security.authorization.plugin.SettableConfigUpdater; import org.apache.thrift.TException; -import com.google.common.base.Joiner; import com.google.common.collect.ImmutableSet; /** @@ -610,72 +610,8 @@ public List getRoleGrantInfoForPrincipal(HivePrincipal principal) } } - - /** - * Default list of modifiable config parameters for sql standard authorization - */ - static final String [] defaultModWhiteListSqlStdAuth = new String [] { - ConfVars.BYTESPERREDUCER.varname, - ConfVars.MAXREDUCERS.varname, - ConfVars.HIVEMAPSIDEAGGREGATE.varname, - ConfVars.HIVEMAPAGGRHASHMEMORY.varname, - ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD.varname, - ConfVars.HIVEMAPAGGRHASHMINREDUCTION.varname, - ConfVars.HIVEGROUPBYSKEW.varname, - ConfVars.HIVE_OPTIMIZE_MULTI_GROUPBY_COMMON_DISTINCTS.varname, - ConfVars.HIVEOPTGBYUSINGINDEX.varname, - ConfVars.HIVEOPTPPD.varname, - ConfVars.HIVEOPTPPD_STORAGE.varname, - ConfVars.HIVEOPTPPD_STORAGE.varname, - ConfVars.HIVEPPDRECOGNIZETRANSITIVITY.varname, - ConfVars.HIVEOPTGROUPBY.varname, - ConfVars.HIVEOPTSORTDYNAMICPARTITION.varname, - ConfVars.HIVE_OPTIMIZE_SKEWJOIN_COMPILETIME.varname, - ConfVars.HIVE_OPTIMIZE_UNION_REMOVE.varname, - ConfVars.HIVEMULTIGROUPBYSINGLEREDUCER.varname, - ConfVars.HIVE_MAP_GROUPBY_SORT.varname, - ConfVars.HIVE_MAP_GROUPBY_SORT_TESTMODE.varname, - ConfVars.HIVESKEWJOIN.varname, - ConfVars.HIVE_OPTIMIZE_SKEWJOIN_COMPILETIME.varname, - ConfVars.HIVEMAPREDMODE.varname, - ConfVars.HIVEENFORCEBUCKETMAPJOIN.varname, - ConfVars.COMPRESSRESULT.varname, - ConfVars.COMPRESSINTERMEDIATE.varname, - ConfVars.EXECPARALLEL.varname, - ConfVars.EXECPARALLETHREADNUMBER.varname, - ConfVars.EXECPARALLETHREADNUMBER.varname, - ConfVars.HIVEROWOFFSET.varname, - ConfVars.HIVEMERGEMAPFILES.varname, - ConfVars.HIVEMERGEMAPREDFILES.varname, - ConfVars.HIVEMERGETEZFILES.varname, - ConfVars.HIVEIGNOREMAPJOINHINT.varname, - ConfVars.HIVECONVERTJOIN.varname, - ConfVars.HIVECONVERTJOINNOCONDITIONALTASK.varname, - ConfVars.HIVECONVERTJOINNOCONDITIONALTASKTHRESHOLD.varname, - ConfVars.HIVECONVERTJOINUSENONSTAGED.varname, - ConfVars.HIVECONVERTJOINNOCONDITIONALTASK.varname, - ConfVars.HIVECONVERTJOINNOCONDITIONALTASKTHRESHOLD.varname, - ConfVars.HIVECONVERTJOINUSENONSTAGED.varname, - ConfVars.HIVEENFORCEBUCKETING.varname, - ConfVars.HIVEENFORCESORTING.varname, - ConfVars.HIVEENFORCESORTMERGEBUCKETMAPJOIN.varname, - ConfVars.HIVE_AUTO_SORTMERGE_JOIN.varname, - ConfVars.HIVE_EXECUTION_ENGINE.varname, - ConfVars.HIVE_VECTORIZATION_ENABLED.varname, - ConfVars.HIVEMAPJOINUSEOPTIMIZEDKEYS.varname, - ConfVars.HIVEMAPJOINLAZYHASHTABLE.varname, - ConfVars.HIVE_CHECK_CROSS_PRODUCT.varname, - ConfVars.HIVE_COMPAT.varname, - ConfVars.DYNAMICPARTITIONINGMODE.varname, - "mapred.reduce.tasks", - "mapred.output.compression.codec", - "mapred.map.output.compression.codec", - "mapreduce.job.reduce.slowstart.completedmaps", - "mapreduce.job.queuename", - }; - @Override - public void applyAuthorizationConfigPolicy(HiveConf hiveConf) { + public void applyAuthorizationConfigPolicy(HiveConf hiveConf) throws HiveAuthzPluginException { // First apply configuration applicable to both Hive Cli and HiveServer2 // Not adding any authorization related restrictions to hive cli // grant all privileges for table to its owner - set this in cli as well so that owner @@ -683,28 +619,21 @@ public void applyAuthorizationConfigPolicy(HiveConf hiveConf) { hiveConf.setVar(ConfVars.HIVE_AUTHORIZATION_TABLE_OWNER_GRANTS, "INSERT,SELECT,UPDATE,DELETE"); // Apply rest of the configuration only to HiveServer2 - if(sessionCtx.getClientType() == CLIENT_TYPE.HIVESERVER2) { + if (sessionCtx.getClientType() == CLIENT_TYPE.HIVESERVER2 + && hiveConf.getBoolVar(ConfVars.HIVE_AUTHORIZATION_ENABLED)) { + // Configure PREEXECHOOKS with DisallowTransformHook to disallow transform queries String hooks = hiveConf.getVar(ConfVars.PREEXECHOOKS).trim(); if (hooks.isEmpty()) { hooks = DisallowTransformHook.class.getName(); } else { - hooks = hooks + "," +DisallowTransformHook.class.getName(); + hooks = hooks + "," + DisallowTransformHook.class.getName(); } LOG.debug("Configuring hooks : " + hooks); hiveConf.setVar(ConfVars.PREEXECHOOKS, hooks); - // restrict the variables that can be set using set command to a list in whitelist - hiveConf.setIsModWhiteListEnabled(true); - String whiteListParamsStr = hiveConf.getVar(ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST); - if (whiteListParamsStr == null || whiteListParamsStr.trim().equals("")){ - // set the default configs in whitelist - whiteListParamsStr = Joiner.on(",").join(defaultModWhiteListSqlStdAuth); - hiveConf.setVar(ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST, whiteListParamsStr); - } - for(String whiteListParam : whiteListParamsStr.split(",")){ - hiveConf.addToModifiableWhiteList(whiteListParam); - } + SettableConfigUpdater.setHiveConfWhiteList(hiveConf); + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessControllerWrapper.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessControllerWrapper.java index 29c1034b3be2..a7f47ce524e1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessControllerWrapper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAccessControllerWrapper.java @@ -174,7 +174,7 @@ public List getRoleGrantInfoForPrincipal(HivePrincipal principal) } @Override - public void applyAuthorizationConfigPolicy(HiveConf hiveConf) { + public void applyAuthorizationConfigPolicy(HiveConf hiveConf) throws HiveAuthzPluginException { hiveAccessController.applyAuthorizationConfigPolicy(hiveConf); } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerCLI.java b/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerCLI.java index 5c4d71396c89..ac862c591a1f 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerCLI.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerCLI.java @@ -55,13 +55,10 @@ processedConf, new HadoopDefaultAuthenticator(), getCLISessionCtx() assertFalse("Check for transform query disabling hook", processedConf.getVar(ConfVars.PREEXECHOOKS).contains(DisallowTransformHook.class.getName())); - // check that set param whitelist is not set - assertTrue(processedConf.getVar(ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST) == null - || processedConf.getVar(ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST).trim() - .equals("")); - // verify that some dummy param can be set processedConf.verifyAndSet("dummy.param", "dummy.val"); + processedConf.verifyAndSet(ConfVars.HIVE_AUTHORIZATION_ENABLED.varname, "true"); + } private HiveAuthzSessionContext getCLISessionCtx() { diff --git a/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerHS2.java b/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerHS2.java index f13cf7e9f017..d6872a03bb24 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerHS2.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerHS2.java @@ -20,6 +20,11 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.ql.security.HadoopDefaultAuthenticator; @@ -42,20 +47,53 @@ public class TestSQLStdHiveAccessControllerHS2 { * policy on hiveconf correctly * * @throws HiveAuthzPluginException + * @throws IllegalAccessException + * @throws NoSuchFieldException + * @throws IllegalArgumentException + * @throws SecurityException */ @Test - public void testConfigProcessing() throws HiveAuthzPluginException { - HiveConf processedConf = new HiveConf(); + public void testConfigProcessing() throws HiveAuthzPluginException, SecurityException, + IllegalArgumentException, NoSuchFieldException, IllegalAccessException { + HiveConf processedConf = newAuthEnabledConf(); SQLStdHiveAccessController accessController = new SQLStdHiveAccessController(null, - processedConf, new HadoopDefaultAuthenticator(), getHS2SessionCtx() - ); + processedConf, new HadoopDefaultAuthenticator(), getHS2SessionCtx()); accessController.applyAuthorizationConfigPolicy(processedConf); // check that hook to disable transforms has been added assertTrue("Check for transform query disabling hook", processedConf.getVar(ConfVars.PREEXECHOOKS).contains(DisallowTransformHook.class.getName())); - verifyParamSettability(SQLStdHiveAccessController.defaultModWhiteListSqlStdAuth, processedConf); + List settableParams = getSettableParams(); + verifyParamSettability(settableParams, processedConf); + + } + + private HiveConf newAuthEnabledConf() { + HiveConf conf = new HiveConf(); + conf.setBoolVar(ConfVars.HIVE_AUTHORIZATION_ENABLED, true); + return conf; + } + + /** + * @return list of parameters that should be possible to set + */ + private List getSettableParams() throws SecurityException, NoSuchFieldException, + IllegalArgumentException, IllegalAccessException { + // get all the variable names being converted to regex in HiveConf, using reflection + Field varNameField = HiveConf.class.getDeclaredField("sqlStdAuthSafeVarNames"); + varNameField.setAccessible(true); + List confVarList = Arrays.asList((String[]) varNameField.get(null)); + + // create list with variables that match some of the regexes + List confVarRegexList = Arrays.asList("hive.convert.join.bucket.mapjoin.tez", + "hive.optimize.index.filter.compact.maxsize", "hive.tez.dummy", "tez.task.dummy"); + + // combine two lists + List varList = new ArrayList(); + varList.addAll(confVarList); + varList.addAll(confVarRegexList); + return varList; } @@ -70,7 +108,7 @@ private HiveAuthzSessionContext getHS2SessionCtx() { * @param settableParams * @param processedConf */ - private void verifyParamSettability(String [] settableParams, HiveConf processedConf) { + private void verifyParamSettability(List settableParams, HiveConf processedConf) { // verify that the whitlelist params can be set for (String param : settableParams) { try { @@ -90,24 +128,42 @@ private void verifyParamSettability(String [] settableParams, HiveConf processed } /** - * Test that modifying HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST config works + * Test that setting HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST_APPEND config works + * @throws HiveAuthzPluginException + */ + @Test + public void testConfigProcessingCustomSetWhitelistAppend() throws HiveAuthzPluginException { + // append new config params to whitelist + List paramRegexes = Arrays.asList("hive.ctest.param", "hive.abc..*"); + List settableParams = Arrays.asList("hive.ctest.param", "hive.abc.def"); + verifySettability(paramRegexes, settableParams, + ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST_APPEND); + } + + /** + * Test that setting HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST config works * @throws HiveAuthzPluginException */ @Test public void testConfigProcessingCustomSetWhitelist() throws HiveAuthzPluginException { + // append new config params to whitelist + List paramRegexes = Arrays.asList("hive.ctest.param", "hive.abc..*"); + List settableParams = Arrays.asList("hive.ctest.param", "hive.abc.def"); + verifySettability(paramRegexes, settableParams, + ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST); + } - HiveConf processedConf = new HiveConf(); - // add custom value, including one from the default, one new one - String[] settableParams = { SQLStdHiveAccessController.defaultModWhiteListSqlStdAuth[0], - "abcs.dummy.test.param" }; - processedConf.setVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_SQL_STD_AUTH_CONFIG_WHITELIST, - Joiner.on(",").join(settableParams)); + private void verifySettability(List paramRegexes, List settableParams, + ConfVars whiteListParam) throws HiveAuthzPluginException { + HiveConf processedConf = newAuthEnabledConf(); + processedConf.setVar(whiteListParam, + Joiner.on("|").join(paramRegexes)); SQLStdHiveAccessController accessController = new SQLStdHiveAccessController(null, processedConf, new HadoopDefaultAuthenticator(), getHS2SessionCtx()); accessController.applyAuthorizationConfigPolicy(processedConf); - verifyParamSettability(settableParams, processedConf); + verifyParamSettability(settableParams, processedConf); } private void assertConfModificationException(HiveConf processedConf, String param) { @@ -120,4 +176,5 @@ private void assertConfModificationException(HiveConf processedConf, String para assertTrue("Exception should be thrown while modifying the param " + param, caughtEx); } + } diff --git a/ql/src/test/queries/clientnegative/authorization_disallow_transform.q b/ql/src/test/queries/clientnegative/authorization_disallow_transform.q index 342c29a17262..1702bcf09291 100644 --- a/ql/src/test/queries/clientnegative/authorization_disallow_transform.q +++ b/ql/src/test/queries/clientnegative/authorization_disallow_transform.q @@ -1,4 +1,6 @@ set hive.test.authz.sstd.hs2.mode=true; set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest; +set hive.security.authorization.enabled=true; set role ALL; -SELECT TRANSFORM (*) USING 'cat' AS (key, value) FROM src; +create table t1(i int); +SELECT TRANSFORM (*) USING 'cat' AS (key, value) FROM t1; diff --git a/ql/src/test/queries/clientnegative/authorization_set_invalidconf.q b/ql/src/test/queries/clientnegative/authorization_set_invalidconf.q new file mode 100644 index 000000000000..8dbb3e767dfc --- /dev/null +++ b/ql/src/test/queries/clientnegative/authorization_set_invalidconf.q @@ -0,0 +1,8 @@ +set hive.test.authz.sstd.hs2.mode=true; +set hive.security.authorization.enabled=true; +set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory; + +-- run a sql query to initialize authorization, then try setting a allowed config and then a disallowed config param +use default; +set hive.optimize.listbucketing=true; +set hive.security.authorization.enabled=true; diff --git a/ql/src/test/results/clientnegative/authorization_disallow_transform.q.out b/ql/src/test/results/clientnegative/authorization_disallow_transform.q.out index 39819b6c0a76..812c1a29369f 100644 --- a/ql/src/test/results/clientnegative/authorization_disallow_transform.q.out +++ b/ql/src/test/results/clientnegative/authorization_disallow_transform.q.out @@ -2,9 +2,17 @@ PREHOOK: query: set role ALL PREHOOK: type: SHOW_ROLES POSTHOOK: query: set role ALL POSTHOOK: type: SHOW_ROLES -PREHOOK: query: SELECT TRANSFORM (*) USING 'cat' AS (key, value) FROM src +PREHOOK: query: create table t1(i int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@t1 +POSTHOOK: query: create table t1(i int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@t1 +PREHOOK: query: SELECT TRANSFORM (*) USING 'cat' AS (key, value) FROM t1 PREHOOK: type: QUERY -PREHOOK: Input: default@src +PREHOOK: Input: default@t1 #### A masked pattern was here #### FAILED: Hive Internal Error: org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAccessControlException(Query with transform clause is disallowed in current configuration.) org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAccessControlException: Query with transform clause is disallowed in current configuration. diff --git a/ql/src/test/results/clientnegative/authorization_set_invalidconf.q.out b/ql/src/test/results/clientnegative/authorization_set_invalidconf.q.out new file mode 100644 index 000000000000..2a58c723504d --- /dev/null +++ b/ql/src/test/results/clientnegative/authorization_set_invalidconf.q.out @@ -0,0 +1,9 @@ +PREHOOK: query: -- run a sql query to initialize authorization, then try setting a allowed config and then a disallowed config param +use default +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:default +POSTHOOK: query: -- run a sql query to initialize authorization, then try setting a allowed config and then a disallowed config param +use default +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:default +Query returned non-zero code: 1, cause: Cannot modify hive.security.authorization.enabled at runtime. It is not in list of params that are allowed to be modified at runtime From 0d2df766b575192a959118bfac024f1c4fedc0a4 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Thu, 23 Oct 2014 21:20:09 +0000 Subject: [PATCH 159/339] HIVE-8581: annotate_stats_join_pfk.q fails on trunk (Prasanth J reviewed by Ashutosh Chuhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633951 13f79535-47bb-0310-9956-ffa450edef68 --- .../annotate_stats_join_pkfk.q.out | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out b/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out index 040dd4efca28..c91e2f359df3 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out @@ -337,7 +337,7 @@ STAGE PLANS: alias: s Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: (s_store_sk is not null and (s_store_sk > 0)) (type: boolean) + predicate: (s_store_sk > 0) (type: boolean) Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: s_store_sk (type: int) @@ -348,13 +348,13 @@ STAGE PLANS: alias: ss Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: (ss_store_sk is not null and (ss_store_sk > 0)) (type: boolean) - Statistics: Num rows: 321 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE + predicate: (ss_store_sk > 0) (type: boolean) + Statistics: Num rows: 333 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: ss_store_sk (type: int) sort order: + Map-reduce partition columns: ss_store_sk (type: int) - Statistics: Num rows: 321 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 333 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Join Operator condition map: @@ -363,14 +363,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col0 - Statistics: Num rows: 107 Data size: 428 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 111 Data size: 444 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 107 Data size: 428 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 111 Data size: 444 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 107 Data size: 428 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 111 Data size: 444 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -655,7 +655,7 @@ STAGE PLANS: alias: s1 Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: (s_store_sk is not null and (s_store_sk > 1000)) (type: boolean) + predicate: (s_store_sk > 1000) (type: boolean) Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: s_store_sk (type: int) @@ -666,7 +666,7 @@ STAGE PLANS: alias: s Statistics: Num rows: 12 Data size: 3143 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: (s_store_sk is not null and (s_store_sk > 1000)) (type: boolean) + predicate: (s_store_sk > 1000) (type: boolean) Statistics: Num rows: 4 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: s_store_sk (type: int) @@ -677,13 +677,13 @@ STAGE PLANS: alias: ss Statistics: Num rows: 1000 Data size: 130523 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: (ss_store_sk is not null and (ss_store_sk > 1000)) (type: boolean) - Statistics: Num rows: 321 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE + predicate: (ss_store_sk > 1000) (type: boolean) + Statistics: Num rows: 333 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: ss_store_sk (type: int) sort order: + Map-reduce partition columns: ss_store_sk (type: int) - Statistics: Num rows: 321 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 333 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE Reduce Operator Tree: Join Operator condition map: @@ -694,14 +694,14 @@ STAGE PLANS: 1 2 outputColumnNames: _col0 - Statistics: Num rows: 35 Data size: 140 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 37 Data size: 148 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 35 Data size: 140 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 37 Data size: 148 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 35 Data size: 140 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 37 Data size: 148 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat From 8fd6eb76285418ff2aebe166d4c136f31c6f31b0 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Thu, 23 Oct 2014 22:48:36 +0000 Subject: [PATCH 160/339] HIVE-8543 Compactions fail on metastore using postgres (Damien Carol and Alan Gates, reviewed by Eugene Koifman) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633976 13f79535-47bb-0310-9956-ffa450edef68 --- .../metastore/txn/CompactionTxnHandler.java | 21 +++++++++++++++++-- .../hadoop/hive/metastore/txn/TxnHandler.java | 15 +++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java index d3aa66f357e4..c4a95812aad2 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java @@ -547,10 +547,27 @@ public List findColumnsWithStats(CompactionInfo ci) throws MetaException Statement stmt = null; ResultSet rs = null; try { + String quote = getIdentifierQuoteString(dbConn); stmt = dbConn.createStatement(); - String s = "SELECT COLUMN_NAME FROM " + (ci.partName == null ? "TAB_COL_STATS" : "PART_COL_STATS") + StringBuilder bldr = new StringBuilder(); + bldr.append("SELECT ").append(quote).append("COLUMN_NAME").append(quote) + .append(" FROM ") + .append(quote).append((ci.partName == null ? "TAB_COL_STATS" : "PART_COL_STATS")) + .append(quote) + .append(" WHERE ") + .append(quote).append("DB_NAME").append(quote).append(" = '").append(ci.dbname) + .append("' AND ").append(quote).append("TABLE_NAME").append(quote) + .append(" = '").append(ci.tableName).append("'"); + if (ci.partName != null) { + bldr.append(" AND ").append(quote).append("PARTITION_NAME").append(quote).append(" = '") + .append(ci.partName).append("'"); + } + String s = bldr.toString(); + + /*String s = "SELECT COLUMN_NAME FROM " + (ci.partName == null ? "TAB_COL_STATS" : + "PART_COL_STATS") + " WHERE DB_NAME='" + ci.dbname + "' AND TABLE_NAME='" + ci.tableName + "'" - + (ci.partName == null ? "" : " AND PARTITION_NAME='" + ci.partName + "'"); + + (ci.partName == null ? "" : " AND PARTITION_NAME='" + ci.partName + "'");*/ LOG.debug("Going to execute <" + s + ">"); rs = stmt.executeQuery(s); List columns = new ArrayList(); diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java index 6f44169af90e..567e2e6b8d9c 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java @@ -90,6 +90,8 @@ public class TxnHandler { // Transaction timeout, in milliseconds. private long timeout; + private String identifierQuoteString; // quotes to use for quoting tables, where necessary + // DEADLOCK DETECTION AND HANDLING // A note to developers of this class. ALWAYS access HIVE_LOCKS before TXNS to avoid deadlock // between simultaneous accesses. ALWAYS access TXN_COMPONENTS before HIVE_LOCKS . @@ -960,6 +962,19 @@ protected long getDbTime(Connection conn) throws MetaException { } } + /** + * Determine the String that should be used to quote identifiers. + * @param conn Active connection + * @return quotes + * @throws SQLException + */ + protected String getIdentifierQuoteString(Connection conn) throws SQLException { + if (identifierQuoteString == null) { + identifierQuoteString = conn.getMetaData().getIdentifierQuoteString(); + } + return identifierQuoteString; + } + protected enum DatabaseProduct { DERBY, MYSQL, POSTGRES, ORACLE, SQLSERVER} /** From fbc864f0633ba0ac4ca38b73d4e19aa55efa4961 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Thu, 23 Oct 2014 23:06:12 +0000 Subject: [PATCH 161/339] HIVE-8576: Guaranteed NPE in StatsRulesProcFactory (Lars Francke via Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633979 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/optimizer/stats/annotation/StatsRulesProcFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java index 4b9f2927f7f6..357a47467685 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java @@ -1394,7 +1394,7 @@ private List getForeignKeyCandidates(List getPrimaryKeyCandidates(List> ops) { List result = Lists.newArrayList(); - if (ops != null || !ops.isEmpty()) { + if (ops != null && !ops.isEmpty()) { for (int i = 0; i < ops.size(); i++) { Operator op = ops.get(i); if (op instanceof ReduceSinkOperator) { From b4734dd1a7a88b22947c7e1c27b18088f6d9cca0 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Fri, 24 Oct 2014 00:12:20 +0000 Subject: [PATCH 162/339] HIVE-8560: SerDes that do not inherit AbstractSerDe do not get table properties during initialize() (Jason Dere, reviewed by Xuefu Zhang) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633982 13f79535-47bb-0310-9956-ffa450edef68 --- serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java b/serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java index 274d4680fd87..934ff984b1b4 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java @@ -497,7 +497,8 @@ public static boolean hasAnyNullObject(Object o, ObjectInspector oi) { * @return the overlayed properties */ public static Properties createOverlayedProperties(Properties tblProps, Properties partProps) { - Properties props = new Properties(tblProps); + Properties props = new Properties(); + props.putAll(tblProps); if (partProps != null) { props.putAll(partProps); } From 0ac205caa0e7fc3f7bebe640322cfd3a8b514bb0 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 24 Oct 2014 01:05:24 +0000 Subject: [PATCH 163/339] HIVE-8582: Outer Join Simplification is broken (Laljo John Pullokkaran via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633984 13f79535-47bb-0310-9956-ffa450edef68 --- .../rules/HivePushFilterPastJoinRule.java | 45 ++++++++++--------- .../optiq/stats/HiveRelMdRowCount.java | 2 +- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java index cda4bae66e20..ec720478a16a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java @@ -25,13 +25,13 @@ import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveProjectRel; import org.eigenbase.rel.FilterRelBase; import org.eigenbase.rel.JoinRelBase; +import org.eigenbase.rel.JoinRelType; import org.eigenbase.rel.RelFactories; import org.eigenbase.rel.rules.PushFilterPastJoinRule; import org.eigenbase.relopt.RelOptRule; import org.eigenbase.relopt.RelOptRuleCall; import org.eigenbase.relopt.RelOptRuleOperand; import org.eigenbase.relopt.RelOptUtil.InputFinder; -import org.eigenbase.rex.RexBuilder; import org.eigenbase.rex.RexCall; import org.eigenbase.rex.RexNode; import org.eigenbase.sql.SqlKind; @@ -96,30 +96,33 @@ public void onMatch(RelOptRuleCall call) { */ @Override protected void validateJoinFilters(List aboveFilters, - List joinFilters, JoinRelBase join) { - ListIterator filterIter = joinFilters.listIterator(); - while (filterIter.hasNext()) { - RexNode exp = filterIter.next(); - if (exp instanceof RexCall) { - RexCall c = (RexCall) exp; - if (c.getOperator().getKind() == SqlKind.EQUALS) { - boolean validHiveJoinFilter = true; - for (RexNode rn : c.getOperands()) { - // NOTE: Hive dis-allows projections from both left & - // right side - // of join condition. Example: Hive disallows - // (r1.x=r2.x)=(r1.y=r2.y) on join condition. - if (filterRefersToBothSidesOfJoin(rn, join)) { - validHiveJoinFilter = false; - break; + List joinFilters, JoinRelBase join, JoinRelType joinType) { + if (joinType.equals(JoinRelType.INNER)) { + ListIterator filterIter = joinFilters.listIterator(); + while (filterIter.hasNext()) { + RexNode exp = filterIter.next(); + if (exp instanceof RexCall) { + RexCall c = (RexCall) exp; + if (c.getOperator().getKind() == SqlKind.EQUALS) { + boolean validHiveJoinFilter = true; + for (RexNode rn : c.getOperands()) { + // NOTE: Hive dis-allows projections from both left + // & + // right side + // of join condition. Example: Hive disallows + // (r1.x=r2.x)=(r1.y=r2.y) on join condition. + if (filterRefersToBothSidesOfJoin(rn, join)) { + validHiveJoinFilter = false; + break; + } } + if (validHiveJoinFilter) + continue; } - if (validHiveJoinFilter) - continue; } + aboveFilters.add(exp); + filterIter.remove(); } - aboveFilters.add(exp); - filterIter.remove(); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java index a9fe98a6b67e..8c7f643940b7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/HiveRelMdRowCount.java @@ -192,7 +192,7 @@ public static PKFKRelationInfo analyzeJoinForPKFK(JoinRelBase joinRel) { RelOptUtil.classifyFilters(joinRel, joinFilters, joinRel.getJoinType(), false, !joinRel.getJoinType().generatesNullsOnRight(), !joinRel .getJoinType().generatesNullsOnLeft(), joinFilters, leftFilters, - rightFilters, joinTypeHolder, false); + rightFilters); Pair joinCols = canHandleJoin(joinRel, leftFilters, rightFilters, joinFilters); From c86c4c1339d3f47d93eefb4a8e770c40f27a02c4 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 24 Oct 2014 02:21:12 +0000 Subject: [PATCH 164/339] HIVE-8563: Running annotate_stats_join_pkfk.q in TestMiniTezCliDriver is causing NPE (Vikram Dixit K via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633987 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/optimizer/ConvertJoinMapJoin.java | 2 +- .../hive/ql/optimizer/MergeJoinProc.java | 21 +++---------------- .../hadoop/hive/ql/parse/GenTezWork.java | 19 ++++++++++------- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java index 7a3280c79097..f231b0655454 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java @@ -228,7 +228,7 @@ private void convertJoinSMBJoin(JoinOperator joinOp, OptimizeTezProcContext cont @SuppressWarnings("unchecked") CommonMergeJoinOperator mergeJoinOp = (CommonMergeJoinOperator) OperatorFactory.get(new CommonMergeJoinDesc(numBuckets, - isSubQuery, mapJoinConversionPos, mapJoinDesc)); + isSubQuery, mapJoinConversionPos, mapJoinDesc), joinOp.getSchema()); OpTraits opTraits = new OpTraits(joinOp.getOpTraits().getBucketColNames(), numBuckets, joinOp.getOpTraits() .getSortCols()); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java index 85166436edef..e3c87277c1c3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java @@ -22,21 +22,6 @@ import org.apache.hadoop.hive.ql.plan.TezWork.VertexType; public class MergeJoinProc implements NodeProcessor { - - public Operator getLeafOperator(Operator op) { - for (Operator childOp : op.getChildOperators()) { - // FileSink or ReduceSink operators are used to create vertices. See - // TezCompiler. - if ((childOp instanceof ReduceSinkOperator) || (childOp instanceof FileSinkOperator)) { - return childOp; - } else { - return getLeafOperator(childOp); - } - } - - return null; - } - @Override public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, Object... nodeOutputs) @@ -60,13 +45,13 @@ public Operator getLeafOperator(Operator stack, // we are currently walking the big table side of the merge join. we need to create or hook up // merge join work. MergeJoinWork mergeJoinWork = null; - if (context.opMergeJoinWorkMap.containsKey(operator)) { + if (context.opMergeJoinWorkMap.containsKey(context.currentMergeJoinOperator)) { // we have found a merge work corresponding to this closing operator. Hook up this work. - mergeJoinWork = context.opMergeJoinWorkMap.get(operator); + mergeJoinWork = context.opMergeJoinWorkMap.get(context.currentMergeJoinOperator); } else { // we need to create the merge join work mergeJoinWork = new MergeJoinWork(); mergeJoinWork.setMergeJoinOperator(context.currentMergeJoinOperator); tezWork.add(mergeJoinWork); - context.opMergeJoinWorkMap.put(operator, mergeJoinWork); + context.opMergeJoinWorkMap.put(context.currentMergeJoinOperator, mergeJoinWork); } // connect the work correctly. mergeJoinWork.addMergedWork(work, null); @@ -334,10 +334,15 @@ public Object process(Node nd, Stack stack, UnionWork unionWork = (UnionWork) followingWork; int index = getMergeIndex(tezWork, unionWork, rs); // guaranteed to be instance of MergeJoinWork if index is valid - MergeJoinWork mergeJoinWork = (MergeJoinWork) tezWork.getChildren(unionWork).get(index); - // disconnect the connection to union work and connect to merge work - followingWork = mergeJoinWork; - rWork = (ReduceWork) mergeJoinWork.getMainWork(); + BaseWork baseWork = tezWork.getChildren(unionWork).get(index); + if (baseWork instanceof MergeJoinWork) { + MergeJoinWork mergeJoinWork = (MergeJoinWork) baseWork; + // disconnect the connection to union work and connect to merge work + followingWork = mergeJoinWork; + rWork = (ReduceWork) mergeJoinWork.getMainWork(); + } else { + rWork = (ReduceWork) baseWork; + } } else { rWork = (ReduceWork) followingWork; } From 1e9613e04737d097f7cd899ef72880fc9683cc0e Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 24 Oct 2014 02:43:09 +0000 Subject: [PATCH 165/339] HIVE-8409: SMB joins fail intermittently on tez (Vikram Dixit K via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1633990 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 6 +- .../hive/ql/exec/CommonMergeJoinOperator.java | 3 - .../hadoop/hive/ql/exec/MapOperator.java | 14 +- .../apache/hadoop/hive/ql/exec/Utilities.java | 14 +- .../ql/exec/tez/CustomPartitionVertex.java | 237 ++++++++++++++---- .../exec/tez/CustomVertexConfiguration.java | 21 +- .../hadoop/hive/ql/exec/tez/DagUtils.java | 35 ++- .../hive/ql/exec/tez/HiveSplitGenerator.java | 105 +++++--- .../hive/ql/exec/tez/MapRecordProcessor.java | 60 +++-- .../hive/ql/exec/tez/MapRecordSource.java | 2 - .../ql/exec/tez/MergeFileRecordProcessor.java | 1 + .../hadoop/hive/ql/exec/tez/SplitGrouper.java | 14 ++ .../hadoop/hive/ql/exec/tez/TezProcessor.java | 16 +- .../exec/tez/tools/KeyValueInputMerger.java | 82 +++++- .../apache/hadoop/hive/ql/io/IOContext.java | 8 +- .../hive/ql/optimizer/ConvertJoinMapJoin.java | 121 +++++---- .../hive/ql/optimizer/MergeJoinProc.java | 2 - .../hadoop/hive/ql/parse/GenTezWork.java | 6 + .../apache/hadoop/hive/ql/plan/BaseWork.java | 10 + 19 files changed, 548 insertions(+), 209 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index f83626652680..97b704866e41 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1817,7 +1817,11 @@ public static enum ConfVars { TEZ_DYNAMIC_PARTITION_PRUNING_MAX_EVENT_SIZE("hive.tez.dynamic.partition.pruning.max.event.size", 1*1024*1024L, "Maximum size of events sent by processors in dynamic pruning. If this size is crossed no pruning will take place."), TEZ_DYNAMIC_PARTITION_PRUNING_MAX_DATA_SIZE("hive.tez.dynamic.partition.pruning.max.data.size", 100*1024*1024L, - "Maximum total data size of events in dynamic pruning.") + "Maximum total data size of events in dynamic pruning."), + TEZ_SMB_NUMBER_WAVES( + "hive.tez.smb.number.waves", + (float) 0.5, + "The number of waves in which to run the SMB join. Account for cluster being occupied. Ideally should be 1 wave.") ; public final String varname; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java index 1d1405ea08be..55c0d8b27c1d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java @@ -20,7 +20,6 @@ import java.io.Serializable; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -36,7 +35,6 @@ import org.apache.hadoop.hive.ql.plan.CommonMergeJoinDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.api.OperatorType; -import org.apache.hadoop.hive.serde2.objectinspector.InspectableObject; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils.ObjectInspectorCopyOption; import org.apache.hadoop.hive.serde2.objectinspector.StructField; @@ -64,7 +62,6 @@ public class CommonMergeJoinOperator extends AbstractMapJoinOperator aliasToInputNameMap; transient List[] keyWritables; transient List[] nextKeyWritables; transient RowContainer>[] nextGroupStorage; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java index 8e8e9f6fa51f..00ee5278d524 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java @@ -67,6 +67,7 @@ * different from regular operators in that it starts off by processing a * Writable data structure from a Table (instead of a Hive Object). **/ +@SuppressWarnings("deprecation") public class MapOperator extends Operator implements Serializable, Cloneable { private static final long serialVersionUID = 1L; @@ -177,7 +178,6 @@ void initializeAsRoot(JobConf hconf, MapWork mapWork) throws Exception { private MapOpCtx initObjectInspector(Configuration hconf, MapOpCtx opCtx, StructObjectInspector tableRowOI) throws Exception { - PartitionDesc pd = opCtx.partDesc; TableDesc td = pd.getTableDesc(); @@ -616,4 +616,16 @@ public OperatorType getType() { public Map getTagToOperatorTree() { return MapRecordProcessor.getConnectOps(); } + + public void initializeContexts() { + Path fpath = getExecContext().getCurrentInputPath(); + String nominalPath = getNominalPath(fpath); + Map, MapOpCtx> contexts = opCtxMap.get(nominalPath); + currentCtxs = contexts.values().toArray(new MapOpCtx[contexts.size()]); + } + + public Deserializer getCurrentDeserializer() { + + return currentCtxs[0].deserializer; + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 7443f8ae351f..5bdeb92b46b0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -409,7 +409,7 @@ private static BaseWork getBaseWork(Configuration conf, String name) { } gWorkMap.put(path, gWork); } else { - LOG.debug("Found plan in cache."); + LOG.debug("Found plan in cache for name: " + name); gWork = gWorkMap.get(path); } return gWork; @@ -1610,12 +1610,13 @@ public static void renameOrMoveFiles(FileSystem fs, Path src, Path dst) throws I * Group 6: copy [copy keyword] * Group 8: 2 [copy file index] */ + private static final String COPY_KEYWORD = "_copy_"; // copy keyword private static final Pattern COPY_FILE_NAME_TO_TASK_ID_REGEX = Pattern.compile("^.*?"+ // any prefix "([0-9]+)"+ // taskId "(_)"+ // separator "([0-9]{1,6})?"+ // attemptId (limited to 6 digits) - "((_)(\\Bcopy\\B)(_)"+ // copy keyword + "((_)(\\Bcopy\\B)(_)" + "([0-9]{1,6})$)?"+ // copy file index "(\\..*)?$"); // any suffix/file extension @@ -2010,6 +2011,15 @@ public static boolean isCopyFile(String filename) { return false; } + public static String getBucketFileNameFromPathSubString(String bucketName) { + try { + return bucketName.split(COPY_KEYWORD)[0]; + } catch (Exception e) { + e.printStackTrace(); + return bucketName; + } + } + public static String getNameMessage(Exception e) { return e.getClass().getName() + "(" + e.getMessage() + ")"; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java index 848be263bd78..3ec6a80f3871 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java @@ -21,16 +21,22 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.TreeMap; +import java.util.TreeSet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.plan.TezWork.VertexType; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.io.DataOutputBuffer; @@ -38,6 +44,7 @@ import org.apache.hadoop.mapred.FileSplit; import org.apache.hadoop.mapred.InputSplit; import org.apache.hadoop.mapred.JobConf; +import org.apache.hadoop.mapred.split.TezGroupedSplit; import org.apache.hadoop.mapreduce.split.TezMapReduceSplitsGrouper; import org.apache.tez.common.TezUtils; import org.apache.tez.dag.api.EdgeProperty; @@ -67,11 +74,36 @@ import com.google.protobuf.ByteString; /* - * Only works with old mapred API - * Will only work with a single MRInput for now. + * This is the central piece for Bucket Map Join and SMB join. It has the following + * responsibilities: + * 1. Group incoming splits based on bucketing. + * 2. Generate new serialized events for the grouped splits. + * 3. Create a routing table for the bucket map join and send a serialized version as payload + * for the EdgeManager. + * 4. For SMB join, generate a grouping according to bucketing for the "small" table side. */ public class CustomPartitionVertex extends VertexManagerPlugin { + public class PathComparatorForSplit implements Comparator { + + @Override + public int compare(InputSplit inp1, InputSplit inp2) { + FileSplit fs1 = (FileSplit) inp1; + FileSplit fs2 = (FileSplit) inp2; + + int retval = fs1.getPath().compareTo(fs2.getPath()); + if (retval != 0) { + return retval; + } + + if (fs1.getStart() != fs2.getStart()) { + return (int) (fs1.getStart() - fs2.getStart()); + } + + return 0; + } + } + private static final Log LOG = LogFactory.getLog(CustomPartitionVertex.class.getName()); VertexManagerPluginContext context; @@ -89,6 +121,13 @@ public class CustomPartitionVertex extends VertexManagerPlugin { private final Map> inputToGroupedSplitMap = new HashMap>(); + private int numInputsAffectingRootInputSpecUpdate = 1; + private int numInputsSeenSoFar = 0; + private final Map emMap = Maps.newHashMap(); + private final List finalSplits = Lists.newLinkedList(); + private final Map inputNameInputSpecMap = + new HashMap(); + public CustomPartitionVertex(VertexManagerPluginContext context) { super(context); } @@ -108,12 +147,13 @@ public void initialize() { this.numBuckets = vertexConf.getNumBuckets(); this.mainWorkName = vertexConf.getInputName(); this.vertexType = vertexConf.getVertexType(); + this.numInputsAffectingRootInputSpecUpdate = vertexConf.getNumInputs(); } @Override public void onVertexStarted(Map> completions) { int numTasks = context.getVertexNumTasks(context.getVertexName()); - List scheduledTasks = + List scheduledTasks = new ArrayList(numTasks); for (int i = 0; i < numTasks; ++i) { scheduledTasks.add(new VertexManagerPluginContext.TaskWithLocationHint(new Integer(i), null)); @@ -133,8 +173,8 @@ public void onVertexManagerEventReceived(VertexManagerEvent vmEvent) { @Override public void onRootVertexInitialized(String inputName, InputDescriptor inputDescriptor, List events) { + numInputsSeenSoFar++; LOG.info("On root vertex initialized " + inputName); - try { // This is using the payload from the RootVertexInitializer corresponding // to InputName. Ideally it should be using it's own configuration class - @@ -168,18 +208,21 @@ public void onRootVertexInitialized(String inputName, InputDescriptor inputDescr } boolean dataInformationEventSeen = false; - Map> pathFileSplitsMap = new TreeMap>(); + Map> pathFileSplitsMap = new TreeMap>(); for (Event event : events) { if (event instanceof InputConfigureVertexTasksEvent) { // No tasks should have been started yet. Checked by initial state // check. + LOG.info("Got a input configure vertex event for input: " + inputName); Preconditions.checkState(dataInformationEventSeen == false); InputConfigureVertexTasksEvent cEvent = (InputConfigureVertexTasksEvent) event; // The vertex cannot be configured until all DataEvents are seen - to // build the routing table. configureVertexTaskEvent = cEvent; + LOG.info("Configure task for input name: " + inputName + " num tasks: " + + configureVertexTaskEvent.getNumTasks()); dataInformationEvents = Lists.newArrayListWithCapacity(configureVertexTaskEvent.getNumTasks()); } @@ -196,15 +239,20 @@ public void onRootVertexInitialized(String inputName, InputDescriptor inputDescr } catch (IOException e) { throw new RuntimeException("Failed to get file split for event: " + diEvent); } - List fsList = pathFileSplitsMap.get(fileSplit.getPath().getName()); + Set fsList = + pathFileSplitsMap.get(Utilities.getBucketFileNameFromPathSubString(fileSplit.getPath() + .getName())); if (fsList == null) { - fsList = new ArrayList(); - pathFileSplitsMap.put(fileSplit.getPath().getName(), fsList); + fsList = new TreeSet(new PathComparatorForSplit()); + pathFileSplitsMap.put( + Utilities.getBucketFileNameFromPathSubString(fileSplit.getPath().getName()), fsList); } fsList.add(fileSplit); } } + LOG.info("Path file splits map for input name: " + inputName + " is " + pathFileSplitsMap); + Multimap bucketToInitialSplitMap = getBucketSplitMapForPath(pathFileSplitsMap); @@ -217,50 +265,88 @@ public void onRootVertexInitialized(String inputName, InputDescriptor inputDescr int availableSlots = totalResource / taskResource; - LOG.info("Grouping splits. " + availableSlots + " available slots, " + waves + " waves."); + LOG.info("Grouping splits. " + availableSlots + " available slots, " + waves + + " waves. Bucket initial splits map: " + bucketToInitialSplitMap); JobConf jobConf = new JobConf(conf); ShimLoader.getHadoopShims().getMergedCredentials(jobConf); Multimap bucketToGroupedSplitMap = HashMultimap. create(); - for (Integer key : bucketToInitialSplitMap.keySet()) { - InputSplit[] inputSplitArray = - (bucketToInitialSplitMap.get(key).toArray(new InputSplit[0])); - Multimap groupedSplit = - HiveSplitGenerator.generateGroupedSplits(jobConf, conf, inputSplitArray, waves, - availableSlots, inputName); - bucketToGroupedSplitMap.putAll(key, groupedSplit.values()); - } - - LOG.info("We have grouped the splits into " + bucketToGroupedSplitMap); - if ((mainWorkName.isEmpty() == false) && (mainWorkName.compareTo(inputName) != 0)) { + boolean secondLevelGroupingDone = false; + if ((mainWorkName.isEmpty()) || (inputName.compareTo(mainWorkName) == 0)) { + for (Integer key : bucketToInitialSplitMap.keySet()) { + InputSplit[] inputSplitArray = + (bucketToInitialSplitMap.get(key).toArray(new InputSplit[0])); + HiveSplitGenerator hiveSplitGenerator = new HiveSplitGenerator(); + Multimap groupedSplit = + hiveSplitGenerator.generateGroupedSplits(jobConf, conf, inputSplitArray, waves, + availableSlots, inputName, mainWorkName.isEmpty()); + if (mainWorkName.isEmpty() == false) { + Multimap singleBucketToGroupedSplit = + HashMultimap. create(); + singleBucketToGroupedSplit.putAll(key, groupedSplit.values()); + groupedSplit = + grouper.group(jobConf, singleBucketToGroupedSplit, availableSlots, + HiveConf.getFloatVar(conf, HiveConf.ConfVars.TEZ_SMB_NUMBER_WAVES)); + secondLevelGroupingDone = true; + } + bucketToGroupedSplitMap.putAll(key, groupedSplit.values()); + } + processAllEvents(inputName, bucketToGroupedSplitMap, secondLevelGroupingDone); + } else { + // do not group across files in case of side work because there is only 1 KV reader per + // grouped split. This would affect SMB joins where we want to find the smallest key in + // all the bucket files. + for (Integer key : bucketToInitialSplitMap.keySet()) { + HiveSplitGenerator hiveSplitGenerator = new HiveSplitGenerator(); + InputSplit[] inputSplitArray = + (bucketToInitialSplitMap.get(key).toArray(new InputSplit[0])); + Multimap groupedSplit = + hiveSplitGenerator.generateGroupedSplits(jobConf, conf, inputSplitArray, waves, + availableSlots, inputName, false); + bucketToGroupedSplitMap.putAll(key, groupedSplit.values()); + } /* - * this is the small table side. In case of SMB join, we may need to send each split to the + * this is the small table side. In case of SMB join, we need to send each split to the * corresponding bucket-based task on the other side. In case a split needs to go to * multiple downstream tasks, we need to clone the event and send it to the right * destination. */ - processAllSideEvents(inputName, bucketToGroupedSplitMap); - } else { - processAllEvents(inputName, bucketToGroupedSplitMap); + LOG.info("This is the side work - multi-mr work."); + processAllSideEventsSetParallelism(inputName, bucketToGroupedSplitMap); } } catch (Exception e) { throw new RuntimeException(e); } } - private void processAllSideEvents(String inputName, + private void processAllSideEventsSetParallelism(String inputName, Multimap bucketToGroupedSplitMap) throws IOException { // the bucket to task map should have been setup by the big table. + LOG.info("Processing events for input " + inputName); if (bucketToTaskMap.isEmpty()) { + LOG.info("We don't have a routing table yet. Will need to wait for the main input" + + " initialization"); inputToGroupedSplitMap.put(inputName, bucketToGroupedSplitMap); return; } + processAllSideEvents(inputName, bucketToGroupedSplitMap); + setVertexParallelismAndRootInputSpec(inputNameInputSpecMap); + } + + private void processAllSideEvents(String inputName, + Multimap bucketToGroupedSplitMap) throws IOException { List taskEvents = new ArrayList(); + LOG.info("We have a routing table and we are going to set the destination tasks for the" + + " multi mr inputs. " + bucketToTaskMap); + + Integer[] numSplitsForTask = new Integer[taskCount]; for (Entry> entry : bucketToGroupedSplitMap.asMap().entrySet()) { Collection destTasks = bucketToTaskMap.get(entry.getKey()); for (Integer task : destTasks) { + int count = 0; for (InputSplit split : entry.getValue()) { + count++; MRSplitProto serializedSplit = MRInputHelpers.createSplitProto(split); InputDataInformationEvent diEvent = InputDataInformationEvent.createWithSerializedPayload(task, serializedSplit @@ -268,26 +354,45 @@ private void processAllSideEvents(String inputName, diEvent.setTargetIndex(task); taskEvents.add(diEvent); } + numSplitsForTask[task] = count; } } + inputNameInputSpecMap.put(inputName, + InputSpecUpdate.createPerTaskInputSpecUpdate(Arrays.asList(numSplitsForTask))); + + LOG.info("For input name: " + inputName + " task events size is " + taskEvents.size()); + context.addRootInputEvents(inputName, taskEvents); } private void processAllEvents(String inputName, - Multimap bucketToGroupedSplitMap) throws IOException { + Multimap bucketToGroupedSplitMap, boolean secondLevelGroupingDone) + throws IOException { - List finalSplits = Lists.newLinkedList(); + int totalInputsCount = 0; + List numSplitsForTask = new ArrayList(); for (Entry> entry : bucketToGroupedSplitMap.asMap().entrySet()) { int bucketNum = entry.getKey(); Collection initialSplits = entry.getValue(); finalSplits.addAll(initialSplits); - for (int i = 0; i < initialSplits.size(); i++) { + for (InputSplit inputSplit : initialSplits) { bucketToTaskMap.put(bucketNum, taskCount); + if (secondLevelGroupingDone) { + TezGroupedSplit groupedSplit = (TezGroupedSplit) inputSplit; + numSplitsForTask.add(groupedSplit.getGroupedSplits().size()); + totalInputsCount += groupedSplit.getGroupedSplits().size(); + } else { + numSplitsForTask.add(1); + totalInputsCount += 1; + } taskCount++; } } + inputNameInputSpecMap.put(inputName, + InputSpecUpdate.createPerTaskInputSpecUpdate(numSplitsForTask)); + // Construct the EdgeManager descriptor to be used by all edges which need // the routing table. EdgeManagerPluginDescriptor hiveEdgeManagerDesc = null; @@ -297,7 +402,6 @@ private void processAllEvents(String inputName, UserPayload payload = getBytePayload(bucketToTaskMap); hiveEdgeManagerDesc.setUserPayload(payload); } - Map emMap = Maps.newHashMap(); // Replace the edge manager for all vertices which have routing type custom. for (Entry edgeEntry : context.getInputVertexEdgeProperties().entrySet()) { @@ -308,42 +412,66 @@ private void processAllEvents(String inputName, } } - LOG.info("Task count is " + taskCount); + LOG.info("Task count is " + taskCount + " for input name: " + inputName); - List taskEvents = - Lists.newArrayListWithCapacity(finalSplits.size()); + List taskEvents = Lists.newArrayListWithCapacity(totalInputsCount); // Re-serialize the splits after grouping. int count = 0; for (InputSplit inputSplit : finalSplits) { - MRSplitProto serializedSplit = MRInputHelpers.createSplitProto(inputSplit); - InputDataInformationEvent diEvent = InputDataInformationEvent.createWithSerializedPayload( - count, serializedSplit.toByteString().asReadOnlyByteBuffer()); - diEvent.setTargetIndex(count); + if (secondLevelGroupingDone) { + TezGroupedSplit tezGroupedSplit = (TezGroupedSplit)inputSplit; + for (InputSplit subSplit : tezGroupedSplit.getGroupedSplits()) { + if ((subSplit instanceof TezGroupedSplit) == false) { + throw new IOException("Unexpected split type found: " + + subSplit.getClass().getCanonicalName()); + } + MRSplitProto serializedSplit = MRInputHelpers.createSplitProto(subSplit); + InputDataInformationEvent diEvent = + InputDataInformationEvent.createWithSerializedPayload(count, serializedSplit + .toByteString().asReadOnlyByteBuffer()); + diEvent.setTargetIndex(count); + taskEvents.add(diEvent); + } + } else { + MRSplitProto serializedSplit = MRInputHelpers.createSplitProto(inputSplit); + InputDataInformationEvent diEvent = + InputDataInformationEvent.createWithSerializedPayload(count, serializedSplit + .toByteString().asReadOnlyByteBuffer()); + diEvent.setTargetIndex(count); + taskEvents.add(diEvent); + } count++; - taskEvents.add(diEvent); - } - - // Replace the Edge Managers - Map rootInputSpecUpdate = - new HashMap(); - rootInputSpecUpdate.put( - inputName, - InputSpecUpdate.getDefaultSinglePhysicalInputSpecUpdate()); - if ((mainWorkName.compareTo(inputName) == 0) || (mainWorkName.isEmpty())) { - context.setVertexParallelism( - taskCount, - VertexLocationHint.create(grouper.createTaskLocationHints(finalSplits - .toArray(new InputSplit[finalSplits.size()]))), emMap, rootInputSpecUpdate); } // Set the actual events for the tasks. + LOG.info("For input name: " + inputName + " task events size is " + taskEvents.size()); context.addRootInputEvents(inputName, taskEvents); if (inputToGroupedSplitMap.isEmpty() == false) { for (Entry> entry : inputToGroupedSplitMap.entrySet()) { processAllSideEvents(entry.getKey(), entry.getValue()); } + setVertexParallelismAndRootInputSpec(inputNameInputSpecMap); inputToGroupedSplitMap.clear(); } + + // Only done when it is a bucket map join only no SMB. + if (numInputsAffectingRootInputSpecUpdate == 1) { + setVertexParallelismAndRootInputSpec(inputNameInputSpecMap); + } + } + + private void + setVertexParallelismAndRootInputSpec(Map rootInputSpecUpdate) + throws IOException { + if (numInputsAffectingRootInputSpecUpdate != numInputsSeenSoFar) { + return; + } + + LOG.info("Setting vertex parallelism since we have seen all inputs."); + + context.setVertexParallelism(taskCount, VertexLocationHint.create(grouper + .createTaskLocationHints(finalSplits.toArray(new InputSplit[finalSplits.size()]))), emMap, + rootInputSpecUpdate); } UserPayload getBytePayload(Multimap routingTable) throws IOException { @@ -377,14 +505,14 @@ private FileSplit getFileSplitFromEvent(InputDataInformationEvent event) throws * This method generates the map of bucket to file splits. */ private Multimap getBucketSplitMapForPath( - Map> pathFileSplitsMap) { + Map> pathFileSplitsMap) { int bucketNum = 0; Multimap bucketToInitialSplitMap = ArrayListMultimap. create(); - for (Map.Entry> entry : pathFileSplitsMap.entrySet()) { + for (Map.Entry> entry : pathFileSplitsMap.entrySet()) { int bucketId = bucketNum % numBuckets; for (FileSplit fsplit : entry.getValue()) { bucketToInitialSplitMap.put(bucketId, fsplit); @@ -392,6 +520,11 @@ private Multimap getBucketSplitMapForPath( bucketNum++; } + // this is just for SMB join use-case. The numBuckets would be equal to that of the big table + // and the small table could have lesser number of buckets. In this case, we want to send the + // data from the right buckets to the big table side. For e.g. Big table has 8 buckets and small + // table has 4 buckets, bucket 0 of small table needs to be sent to bucket 4 of the big table as + // well. if (bucketNum < numBuckets) { int loopedBucketId = 0; for (; bucketNum < numBuckets; bucketNum++) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomVertexConfiguration.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomVertexConfiguration.java index 4829f9292cea..5dd7bf3f1c33 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomVertexConfiguration.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomVertexConfiguration.java @@ -29,20 +29,31 @@ * This class is the payload for custom vertex. It serializes and de-serializes * @numBuckets: the number of buckets of the "big table" * @vertexType: this is the type of vertex and differentiates between bucket map join and SMB joins - * @inputName: This is the name of the input. Used in case of SMB joins + * @numInputs: The number of inputs that are directly connected to the vertex (MRInput/MultiMRInput). + * In case of bucket map join, it is always 1. + * @inputName: This is the name of the input. Used in case of SMB joins. Empty in case of BucketMapJoin */ public class CustomVertexConfiguration implements Writable { private int numBuckets; private VertexType vertexType = VertexType.AUTO_INITIALIZED_EDGES; + private int numInputs; private String inputName; public CustomVertexConfiguration() { } - public CustomVertexConfiguration(int numBuckets, VertexType vertexType, String inputName) { + // this is the constructor to use for the Bucket map join case. + public CustomVertexConfiguration(int numBuckets, VertexType vertexType) { + this(numBuckets, vertexType, "", 1); + } + + // this is the constructor to use for SMB. + public CustomVertexConfiguration(int numBuckets, VertexType vertexType, String inputName, + int numInputs) { this.numBuckets = numBuckets; this.vertexType = vertexType; + this.numInputs = numInputs; this.inputName = inputName; } @@ -50,6 +61,7 @@ public CustomVertexConfiguration(int numBuckets, VertexType vertexType, String i public void write(DataOutput out) throws IOException { out.writeInt(this.vertexType.ordinal()); out.writeInt(this.numBuckets); + out.writeInt(numInputs); out.writeUTF(inputName); } @@ -57,6 +69,7 @@ public void write(DataOutput out) throws IOException { public void readFields(DataInput in) throws IOException { this.vertexType = VertexType.values()[in.readInt()]; this.numBuckets = in.readInt(); + this.numInputs = in.readInt(); this.inputName = in.readUTF(); } @@ -71,4 +84,8 @@ public VertexType getVertexType() { public String getInputName() { return inputName; } + + public int getNumInputs() { + return numInputs; + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java index acf2d3197c46..0d3c29db204f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java @@ -20,8 +20,6 @@ import com.google.common.base.Function; import com.google.common.collect.Iterators; import com.google.common.collect.Lists; -import com.google.protobuf.ByteString; - import javax.security.auth.login.LoginException; import java.io.FileNotFoundException; import java.io.IOException; @@ -49,7 +47,6 @@ import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.ql.Context; import org.apache.hadoop.hive.ql.ErrorMsg; -import org.apache.hadoop.hive.ql.exec.CommonMergeJoinOperator; import org.apache.hadoop.hive.ql.exec.Operator; import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.exec.mr.ExecMapper; @@ -111,16 +108,13 @@ import org.apache.tez.dag.api.VertexGroup; import org.apache.tez.dag.api.VertexManagerPluginDescriptor; import org.apache.tez.dag.library.vertexmanager.ShuffleVertexManager; -import org.apache.tez.mapreduce.common.MRInputAMSplitGenerator; import org.apache.tez.mapreduce.hadoop.MRHelpers; import org.apache.tez.mapreduce.hadoop.MRInputHelpers; import org.apache.tez.mapreduce.hadoop.MRJobConfig; -import org.apache.tez.mapreduce.input.MRInput; import org.apache.tez.mapreduce.input.MRInputLegacy; import org.apache.tez.mapreduce.input.MultiMRInput; import org.apache.tez.mapreduce.output.MROutput; import org.apache.tez.mapreduce.partition.MRPartitioner; -import org.apache.tez.mapreduce.protos.MRRuntimeProtos; import org.apache.tez.runtime.library.api.TezRuntimeConfiguration; import org.apache.tez.runtime.library.common.comparator.TezBytesComparator; import org.apache.tez.runtime.library.common.serializer.TezBytesWritableSerialization; @@ -271,8 +265,7 @@ public GroupInputEdge createEdge(VertexGroup group, JobConf vConf, Vertex w, case CUSTOM_EDGE: { mergeInputClass = ConcatenatedMergedKeyValueInput.class; int numBuckets = edgeProp.getNumBuckets(); - CustomVertexConfiguration vertexConf = - new CustomVertexConfiguration(numBuckets, vertexType, ""); + CustomVertexConfiguration vertexConf = new CustomVertexConfiguration(numBuckets, vertexType); DataOutputBuffer dob = new DataOutputBuffer(); vertexConf.write(dob); VertexManagerPluginDescriptor desc = @@ -317,8 +310,7 @@ public Edge createEdge(JobConf vConf, Vertex v, Vertex w, TezEdgeProperty edgePr switch(edgeProp.getEdgeType()) { case CUSTOM_EDGE: { int numBuckets = edgeProp.getNumBuckets(); - CustomVertexConfiguration vertexConf = - new CustomVertexConfiguration(numBuckets, vertexType, ""); + CustomVertexConfiguration vertexConf = new CustomVertexConfiguration(numBuckets, vertexType); DataOutputBuffer dob = new DataOutputBuffer(); vertexConf.write(dob); VertexManagerPluginDescriptor desc = VertexManagerPluginDescriptor.create( @@ -343,7 +335,6 @@ public Edge createEdge(JobConf vConf, Vertex v, Vertex w, TezEdgeProperty edgePr /* * Helper function to create an edge property from an edge type. */ - @SuppressWarnings("rawtypes") private EdgeProperty createEdgeProperty(TezEdgeProperty edgeProp, Configuration conf) throws IOException { MRHelpers.translateMRConfToTez(conf); @@ -435,7 +426,7 @@ public static Resource getContainerResource(Configuration conf) { HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCONTAINERSIZE) : conf.getInt(MRJobConfig.MAP_MEMORY_MB, MRJobConfig.DEFAULT_MAP_MEMORY_MB); int cpus = HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCPUVCORES) > 0 ? - HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCPUVCORES) : + HiveConf.getIntVar(conf, HiveConf.ConfVars.HIVETEZCPUVCORES) : conf.getInt(MRJobConfig.MAP_CPU_VCORES, MRJobConfig.DEFAULT_MAP_CPU_VCORES); return Resource.newInstance(memory, cpus); } @@ -489,13 +480,9 @@ private Vertex createVertex(JobConf conf, MergeJoinWork mergeJoinWork, LocalReso if (mergeJoinWork.getMainWork() instanceof MapWork) { List mapWorkList = mergeJoinWork.getBaseWorkList(); MapWork mapWork = (MapWork) (mergeJoinWork.getMainWork()); - CommonMergeJoinOperator mergeJoinOp = mergeJoinWork.getMergeJoinOperator(); Vertex mergeVx = createVertex(conf, mapWork, appJarLr, additionalLr, fs, mrScratchDir, ctx, vertexType); - // grouping happens in execution phase. Setting the class to TezGroupedSplitsInputFormat - // here would cause pre-mature grouping which would be incorrect. - Class inputFormatClass = HiveInputFormat.class; conf.setClass("mapred.input.format.class", HiveInputFormat.class, InputFormat.class); // mapreduce.tez.input.initializer.serialize.event.payload should be set // to false when using this plug-in to avoid getting a serialized event at run-time. @@ -512,9 +499,11 @@ private Vertex createVertex(JobConf conf, MergeJoinWork mergeJoinWork, LocalReso VertexManagerPluginDescriptor desc = VertexManagerPluginDescriptor.create(CustomPartitionVertex.class.getName()); + // the +1 to the size is because of the main work. CustomVertexConfiguration vertexConf = new CustomVertexConfiguration(mergeJoinWork.getMergeJoinOperator().getConf() - .getNumBuckets(), vertexType, mergeJoinWork.getBigTableAlias()); + .getNumBuckets(), vertexType, mergeJoinWork.getBigTableAlias(), + mapWorkList.size() + 1); DataOutputBuffer dob = new DataOutputBuffer(); vertexConf.write(dob); byte[] userPayload = dob.getData(); @@ -554,6 +543,7 @@ private Vertex createVertex(JobConf conf, MapWork mapWork, DataSourceDescriptor dataSource; int numTasks = -1; + @SuppressWarnings("rawtypes") Class inputFormatClass = conf.getClass("mapred.input.format.class", InputFormat.class); @@ -611,7 +601,13 @@ private Vertex createVertex(JobConf conf, MapWork mapWork, .setCustomInitializerDescriptor(descriptor).build(); } else { // Not HiveInputFormat, or a custom VertexManager will take care of grouping splits - dataSource = MRInputLegacy.createConfigBuilder(conf, inputFormatClass).groupSplits(false).build(); + if (vertexHasCustomInput) { + dataSource = + MultiMRInput.createConfigBuilder(conf, inputFormatClass).groupSplits(false).build(); + } else { + dataSource = + MRInputLegacy.createConfigBuilder(conf, inputFormatClass).groupSplits(false).build(); + } } } else { // Setup client side split generation. @@ -763,6 +759,7 @@ public PreWarmVertex createPreWarmVertex(TezConfiguration conf, * @throws LoginException if we are unable to figure user information * @throws IOException when any dfs operation fails. */ + @SuppressWarnings("deprecation") public Path getDefaultDestDir(Configuration conf) throws LoginException, IOException { UserGroupInformation ugi = ShimLoader.getHadoopShims().getUGIForConf(conf); String userName = ShimLoader.getHadoopShims().getShortUserName(ugi); @@ -875,6 +872,7 @@ public FileStatus getHiveJarDirectory(Configuration conf) throws IOException, Lo return fstatus; } + @SuppressWarnings("deprecation") public static FileStatus validateTargetDir(Path path, Configuration conf) throws IOException { FileSystem fs = path.getFileSystem(conf); FileStatus fstatus = null; @@ -1051,6 +1049,7 @@ private JobConf initializeVertexConf(JobConf conf, Context context, MergeJoinWor * @param ctx This query's context * @return Vertex */ + @SuppressWarnings("deprecation") public Vertex createVertex(JobConf conf, BaseWork work, Path scratchDir, LocalResource appJarLr, List additionalLr, FileSystem fileSystem, Context ctx, boolean hasChildren, diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HiveSplitGenerator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HiveSplitGenerator.java index c45479fe6a0b..afe83d9fd992 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HiveSplitGenerator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HiveSplitGenerator.java @@ -18,6 +18,8 @@ package org.apache.hadoop.hive.ql.exec.tez; +import java.io.IOException; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -64,7 +66,6 @@ * making sure that splits from different partitions are only grouped if they * are of the same schema, format and serde */ -@SuppressWarnings("deprecation") public class HiveSplitGenerator extends InputInitializer { private static final Log LOG = LogFactory.getLog(HiveSplitGenerator.class); @@ -72,11 +73,17 @@ public class HiveSplitGenerator extends InputInitializer { private static final SplitGrouper grouper = new SplitGrouper(); private final DynamicPartitionPruner pruner = new DynamicPartitionPruner(); private InputInitializerContext context; + private static Map, Map> cache = + new HashMap, Map>(); public HiveSplitGenerator(InputInitializerContext initializerContext) { super(initializerContext); } + public HiveSplitGenerator() { + this(null); + } + @Override public List initialize() throws Exception { InputInitializerContext rootInputContext = getContext(); @@ -150,58 +157,28 @@ public List initialize() throws Exception { } - public static Multimap generateGroupedSplits(JobConf jobConf, + public Multimap generateGroupedSplits(JobConf jobConf, Configuration conf, InputSplit[] splits, float waves, int availableSlots) throws Exception { - return generateGroupedSplits(jobConf, conf, splits, waves, availableSlots, null); + return generateGroupedSplits(jobConf, conf, splits, waves, availableSlots, null, true); } - public static Multimap generateGroupedSplits(JobConf jobConf, - Configuration conf, InputSplit[] splits, float waves, int availableSlots, - String inputName) throws Exception { - - MapWork work = null; - if (inputName != null) { - work = (MapWork) Utilities.getMergeWork(jobConf, inputName); - // work can still be null if there is no merge work for this input - } - if (work == null) { - work = Utilities.getMapWork(jobConf); - } + public Multimap generateGroupedSplits(JobConf jobConf, + Configuration conf, InputSplit[] splits, float waves, int availableSlots, String inputName, + boolean groupAcrossFiles) throws Exception { + MapWork work = populateMapWork(jobConf, inputName); Multimap bucketSplitMultiMap = ArrayListMultimap. create(); - Class previousInputFormatClass = null; - String previousDeserializerClass = null; - Map, Map> cache = - new HashMap, Map>(); - int i = 0; - + InputSplit prevSplit = null; for (InputSplit s : splits) { // this is the bit where we make sure we don't group across partition // schema boundaries - - Path path = ((FileSplit) s).getPath(); - - PartitionDesc pd = - HiveFileFormatUtils.getPartitionDescFromPathRecursively(work.getPathToPartitionInfo(), - path, cache); - - String currentDeserializerClass = pd.getDeserializerClassName(); - Class currentInputFormatClass = pd.getInputFileFormatClass(); - - if ((currentInputFormatClass != previousInputFormatClass) - || (!currentDeserializerClass.equals(previousDeserializerClass))) { + if (schemaEvolved(s, prevSplit, groupAcrossFiles, work)) { ++i; - } - - previousInputFormatClass = currentInputFormatClass; - previousDeserializerClass = currentDeserializerClass; - - if (LOG.isDebugEnabled()) { - LOG.debug("Adding split " + path + " to src group " + i); + prevSplit = s; } bucketSplitMultiMap.put(i, s); } @@ -214,6 +191,54 @@ public static Multimap generateGroupedSplits(JobConf jobCon return groupedSplits; } + private MapWork populateMapWork(JobConf jobConf, String inputName) { + MapWork work = null; + if (inputName != null) { + work = (MapWork) Utilities.getMergeWork(jobConf, inputName); + // work can still be null if there is no merge work for this input + } + if (work == null) { + work = Utilities.getMapWork(jobConf); + } + + return work; + } + + public boolean schemaEvolved(InputSplit s, InputSplit prevSplit, boolean groupAcrossFiles, + MapWork work) throws IOException { + boolean retval = false; + Path path = ((FileSplit) s).getPath(); + PartitionDesc pd = + HiveFileFormatUtils.getPartitionDescFromPathRecursively(work.getPathToPartitionInfo(), + path, cache); + String currentDeserializerClass = pd.getDeserializerClassName(); + Class currentInputFormatClass = pd.getInputFileFormatClass(); + + Class previousInputFormatClass = null; + String previousDeserializerClass = null; + if (prevSplit != null) { + Path prevPath = ((FileSplit) prevSplit).getPath(); + if (!groupAcrossFiles) { + return !path.equals(prevPath); + } + PartitionDesc prevPD = + HiveFileFormatUtils.getPartitionDescFromPathRecursively(work.getPathToPartitionInfo(), + prevPath, cache); + previousDeserializerClass = prevPD.getDeserializerClassName(); + previousInputFormatClass = prevPD.getInputFileFormatClass(); + } + + if ((currentInputFormatClass != previousInputFormatClass) + || (!currentDeserializerClass.equals(previousDeserializerClass))) { + retval = true; + } + + if (LOG.isDebugEnabled()) { + LOG.debug("Adding split " + path + " to src new group? " + retval); + } + return retval; + } + private List createEventList(boolean sendSerializedEvents, InputSplitInfoMem inputSplitInfo) { List events = Lists.newArrayListWithCapacity(inputSplitInfo.getNumTasks() + 1); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java index 579d65deba4b..bc7603ee4b59 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java @@ -17,10 +17,10 @@ */ package org.apache.hadoop.hive.ql.exec.tez; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,15 +44,15 @@ import org.apache.hadoop.hive.ql.exec.tez.TezProcessor.TezKVOutputCollector; import org.apache.hadoop.hive.ql.exec.tez.tools.KeyValueInputMerger; import org.apache.hadoop.hive.ql.exec.vector.VectorMapOperator; -import org.apache.hadoop.hive.ql.io.IOContext; import org.apache.hadoop.hive.ql.log.PerfLogger; import org.apache.hadoop.hive.ql.plan.MapWork; import org.apache.hadoop.hive.ql.plan.OperatorDesc; +import org.apache.hadoop.hive.serde2.Deserializer; +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.mapred.JobConf; import org.apache.tez.mapreduce.input.MRInputLegacy; import org.apache.tez.mapreduce.input.MultiMRInput; import org.apache.tez.mapreduce.processor.MRTaskReporter; -import org.apache.tez.runtime.api.Input; import org.apache.tez.runtime.api.LogicalInput; import org.apache.tez.runtime.api.LogicalOutput; import org.apache.tez.runtime.api.ProcessorContext; @@ -73,6 +73,7 @@ public class MapRecordProcessor extends RecordProcessor { private int position = 0; private boolean foundCachedMergeWork = false; MRInputLegacy legacyMRInput = null; + MultiMRInput mainWorkMultiMRInput = null; private ExecMapperContext execContext = null; private boolean abort = false; protected static final String MAP_PLAN_KEY = "__MAP_PLAN__"; @@ -129,12 +130,14 @@ void init(JobConf jconf, ProcessorContext processorContext, MRTaskReporter mrRep perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.TEZ_INIT_OPERATORS); super.init(jconf, processorContext, mrReporter, inputs, outputs); - //Update JobConf using MRInput, info like filename comes via this + // Update JobConf using MRInput, info like filename comes via this legacyMRInput = getMRInput(inputs); - Configuration updatedConf = legacyMRInput.getConfigUpdates(); - if (updatedConf != null) { - for (Entry entry : updatedConf) { - jconf.set(entry.getKey(), entry.getValue()); + if (legacyMRInput != null) { + Configuration updatedConf = legacyMRInput.getConfigUpdates(); + if (updatedConf != null) { + for (Entry entry : updatedConf) { + jconf.set(entry.getKey(), entry.getValue()); + } } } @@ -158,8 +161,6 @@ void init(JobConf jconf, ProcessorContext processorContext, MRTaskReporter mrRep if (mergeWorkList != null) { MapOperator mergeMapOp = null; for (MapWork mergeMapWork : mergeWorkList) { - processorContext.waitForAnyInputReady(Collections.singletonList((Input) (inputs - .get(mergeMapWork.getName())))); if (mergeMapWork.getVectorMode()) { mergeMapOp = new VectorMapOperator(); } else { @@ -235,11 +236,17 @@ void init(JobConf jconf, ProcessorContext processorContext, MRTaskReporter mrRep } private void initializeMapRecordSources() throws Exception { + int size = mergeMapOpList.size() + 1; // the +1 is for the main map operator itself sources = new MapRecordSource[size]; - KeyValueReader reader = legacyMRInput.getReader(); position = mapOp.getConf().getTag(); sources[position] = new MapRecordSource(); + KeyValueReader reader = null; + if (mainWorkMultiMRInput != null) { + reader = getKeyValueReader(mainWorkMultiMRInput.getKeyValueReaders(), mapOp); + } else { + reader = legacyMRInput.getReader(); + } sources[position].init(jconf, mapOp, reader); for (MapOperator mapOp : mergeMapOpList) { int tag = mapOp.getConf().getTag(); @@ -248,13 +255,28 @@ private void initializeMapRecordSources() throws Exception { MultiMRInput multiMRInput = multiMRInputMap.get(inputName); Collection kvReaders = multiMRInput.getKeyValueReaders(); l4j.debug("There are " + kvReaders.size() + " key-value readers for input " + inputName); - List kvReaderList = new ArrayList(kvReaders); - reader = new KeyValueInputMerger(kvReaderList); + reader = getKeyValueReader(kvReaders, mapOp); sources[tag].init(jconf, mapOp, reader); } ((TezContext) MapredContext.get()).setRecordSources(sources); } + @SuppressWarnings("deprecation") + private KeyValueReader getKeyValueReader(Collection keyValueReaders, + MapOperator mapOp) + throws Exception { + List kvReaderList = new ArrayList(keyValueReaders); + // this sets up the map operator contexts correctly + mapOp.initializeContexts(); + Deserializer deserializer = mapOp.getCurrentDeserializer(); + KeyValueReader reader = + new KeyValueInputMerger(kvReaderList, deserializer, + new ObjectInspector[] { deserializer.getObjectInspector() }, mapOp + .getConf() + .getSortCols()); + return reader; + } + private DummyStoreOperator getJoinParentOp(Operator mergeMapOp) { for (Operator childOp : mergeMapOp.getChildOperators()) { if ((childOp.getChildOperators() == null) || (childOp.getChildOperators().isEmpty())) { @@ -335,7 +357,17 @@ private MRInputLegacy getMRInput(Map inputs) throws Except multiMRInputMap.put(inp.getKey(), (MultiMRInput) inp.getValue()); } } - theMRInput.init(); + if (theMRInput != null) { + theMRInput.init(); + } else { + String alias = mapWork.getAliasToWork().keySet().iterator().next(); + if (inputs.get(alias) instanceof MultiMRInput) { + mainWorkMultiMRInput = (MultiMRInput) inputs.get(alias); + } else { + throw new IOException("Unexpected input type found: " + + inputs.get(alias).getClass().getCanonicalName()); + } + } return theMRInput; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java index 6d075e86dc40..f7d2661dacdb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java @@ -19,7 +19,6 @@ package org.apache.hadoop.hive.ql.exec.tez; import java.io.IOException; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.MapOperator; @@ -28,7 +27,6 @@ import org.apache.hadoop.io.Writable; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.util.StringUtils; -import org.apache.tez.mapreduce.input.MRInput; import org.apache.tez.runtime.library.api.KeyValueReader; /** diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MergeFileRecordProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MergeFileRecordProcessor.java index 2b38d79f45c1..2998ae7754a2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MergeFileRecordProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MergeFileRecordProcessor.java @@ -204,6 +204,7 @@ private boolean processRow(Object key, Object value) { private MRInputLegacy getMRInput(Map inputs) throws Exception { // there should be only one MRInput MRInputLegacy theMRInput = null; + LOG.info("VDK: the inputs are: " + inputs); for (Entry inp : inputs.entrySet()) { if (inp.getValue() instanceof MRInputLegacy) { if (theMRInput != null) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java index 38d74d599566..f9c80c29a6bd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/SplitGrouper.java @@ -102,9 +102,19 @@ private Map estimateBucketSizes(int availableSlots, float wave // compute the total size per bucket long totalSize = 0; + boolean earlyExit = false; for (int bucketId : bucketSplitMap.keySet()) { long size = 0; for (InputSplit s : bucketSplitMap.get(bucketId)) { + // the incoming split may not be a file split when we are re-grouping TezGroupedSplits in + // the case of SMB join. So in this case, we can do an early exit by not doing the + // calculation for bucketSizeMap. Each bucket will assume it can fill availableSlots * waves + // (preset to 0.5) for SMB join. + if (!(s instanceof FileSplit)) { + bucketTaskMap.put(bucketId, (int) (availableSlots * waves)); + earlyExit = true; + continue; + } FileSplit fsplit = (FileSplit) s; size += fsplit.getLength(); totalSize += fsplit.getLength(); @@ -112,6 +122,10 @@ private Map estimateBucketSizes(int availableSlots, float wave bucketSizeMap.put(bucketId, size); } + if (earlyExit) { + return bucketTaskMap; + } + // compute the number of tasks for (int bucketId : bucketSizeMap.keySet()) { int numEstimatedTasks = 0; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezProcessor.java index 42c7d37aaab4..1e528a9a1ef2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezProcessor.java @@ -19,12 +19,9 @@ import java.io.IOException; import java.text.NumberFormat; -import java.util.Arrays; -import java.util.HashMap; +import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.Map.Entry; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; @@ -33,11 +30,10 @@ import org.apache.hadoop.mapred.OutputCollector; import org.apache.hadoop.util.StringUtils; import org.apache.tez.common.TezUtils; -import org.apache.tez.mapreduce.input.MRInputLegacy; -import org.apache.tez.mapreduce.input.MultiMRInput; import org.apache.tez.mapreduce.processor.MRTaskReporter; import org.apache.tez.runtime.api.AbstractLogicalIOProcessor; import org.apache.tez.runtime.api.Event; +import org.apache.tez.runtime.api.Input; import org.apache.tez.runtime.api.LogicalInput; import org.apache.tez.runtime.api.LogicalOutput; import org.apache.tez.runtime.api.ProcessorContext; @@ -152,10 +148,13 @@ protected void initializeAndRunProcessor(Map inputs, // Start the actual Inputs. After MRInput initialization. for (Map.Entry inputEntry : inputs.entrySet()) { if (!cacheAccess.isInputCached(inputEntry.getKey())) { - LOG.info("Input: " + inputEntry.getKey() + " is not cached"); + LOG.info("Starting input " + inputEntry.getKey()); inputEntry.getValue().start(); + processorContext.waitForAnyInputReady(Collections.singletonList((Input) (inputEntry + .getValue()))); } else { - LOG.info("Input: " + inputEntry.getKey() + " is already cached. Skipping start"); + LOG.info("Input: " + inputEntry.getKey() + + " is already cached. Skipping start and wait for ready"); } } @@ -194,6 +193,7 @@ protected void initializeAndRunProcessor(Map inputs, * Must be initialized before it is used. * */ + @SuppressWarnings("rawtypes") static class TezKVOutputCollector implements OutputCollector { private KeyValueWriter writer; private final LogicalOutput output; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/tools/KeyValueInputMerger.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/tools/KeyValueInputMerger.java index 516722d7f488..c8e9606689e1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/tools/KeyValueInputMerger.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/tools/KeyValueInputMerger.java @@ -18,13 +18,23 @@ package org.apache.hadoop.hive.ql.exec.tez.tools; import java.io.IOException; +import java.util.ArrayList; import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.PriorityQueue; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.hadoop.io.BinaryComparable; +import org.apache.hadoop.hive.serde2.Deserializer; +import org.apache.hadoop.hive.serde2.SerDeException; +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; +import org.apache.hadoop.hive.serde2.objectinspector.StructField; +import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils.ObjectInspectorCopyOption; +import org.apache.hadoop.io.Writable; import org.apache.tez.runtime.library.api.KeyValueReader; /** @@ -34,16 +44,36 @@ * Uses a priority queue to pick the KeyValuesReader of the input that is next in * sort order. */ +@SuppressWarnings("deprecation") public class KeyValueInputMerger extends KeyValueReader { public static final Log l4j = LogFactory.getLog(KeyValueInputMerger.class); private PriorityQueue pQueue = null; private KeyValueReader nextKVReader = null; + private ObjectInspector[] inputObjInspectors = null; + private Deserializer deserializer = null; + private List structFields = null; + private List fieldOIs = null; + private final Map> kvReaderStandardObjMap = + new HashMap>(); - public KeyValueInputMerger(List multiMRInputs) throws Exception { + public KeyValueInputMerger(List multiMRInputs, Deserializer deserializer, + ObjectInspector[] inputObjInspectors, List sortCols) throws Exception { //get KeyValuesReaders from the LogicalInput and add them to priority queue int initialCapacity = multiMRInputs.size(); pQueue = new PriorityQueue(initialCapacity, new KVReaderComparator()); + this.inputObjInspectors = inputObjInspectors; + this.deserializer = deserializer; + fieldOIs = new ArrayList(); + structFields = new ArrayList(); + StructObjectInspector structOI = (StructObjectInspector) inputObjInspectors[0]; + for (String field : sortCols) { + StructField sf = structOI.getStructFieldRef(field); + structFields.add(sf); + ObjectInspector stdOI = + ObjectInspectorUtils.getStandardObjectInspector(sf.getFieldObjectInspector()); + fieldOIs.add(stdOI); + } l4j.info("Initialized the priority queue with multi mr inputs: " + multiMRInputs.size()); for (KeyValueReader input : multiMRInputs) { addToQueue(input); @@ -58,6 +88,7 @@ public KeyValueInputMerger(List multiMRInputs) throws Exception */ private void addToQueue(KeyValueReader kvReader) throws IOException { if (kvReader.next()) { + kvReaderStandardObjMap.remove(kvReader); pQueue.add(kvReader); } } @@ -93,12 +124,53 @@ public Object getCurrentValue() throws IOException { */ class KVReaderComparator implements Comparator { + @SuppressWarnings({ "unchecked" }) @Override public int compare(KeyValueReader kvReadr1, KeyValueReader kvReadr2) { try { - BinaryComparable key1 = (BinaryComparable) kvReadr1.getCurrentValue(); - BinaryComparable key2 = (BinaryComparable) kvReadr2.getCurrentValue(); - return key1.compareTo(key2); + ObjectInspector oi = inputObjInspectors[0]; + List row1, row2; + try { + if (kvReaderStandardObjMap.containsKey(kvReadr1)) { + row1 = kvReaderStandardObjMap.get(kvReadr1); + } else { + // we need to copy to standard object otherwise deserializer overwrites the values + row1 = + (List) ObjectInspectorUtils.copyToStandardObject( + deserializer.deserialize((Writable) kvReadr1.getCurrentValue()), oi, + ObjectInspectorCopyOption.WRITABLE); + kvReaderStandardObjMap.put(kvReadr1, row1); + } + + if (kvReaderStandardObjMap.containsKey(kvReadr2)) { + row2 = kvReaderStandardObjMap.get(kvReadr2); + } else { + row2 = + (List) ObjectInspectorUtils.copyToStandardObject( + deserializer.deserialize((Writable) kvReadr2.getCurrentValue()), oi, + ObjectInspectorCopyOption.WRITABLE); + kvReaderStandardObjMap.put(kvReadr2, row2); + } + } catch (SerDeException e) { + throw new IOException(e); + } + + StructObjectInspector structOI = (StructObjectInspector) oi; + int compare = 0; + int index = 0; + for (StructField sf : structFields) { + int pos = structOI.getAllStructFieldRefs().indexOf(sf); + Object key1 = row1.get(pos); + Object key2 = row2.get(pos); + ObjectInspector stdOI = fieldOIs.get(index); + compare = ObjectInspectorUtils.compare(key1, stdOI, key2, stdOI); + index++; + if (compare != 0) { + return compare; + } + } + + return compare; } catch (IOException e) { l4j.error("Caught exception while reading shuffle input", e); //die! diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/IOContext.java b/ql/src/java/org/apache/hadoop/hive/ql/io/IOContext.java index cad567aeb75d..d42f56898e8f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/IOContext.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/IOContext.java @@ -21,11 +21,7 @@ import java.util.HashMap; import java.util.Map; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.Path; -import org.apache.hadoop.hive.ql.optimizer.ConvertJoinMapJoin; -import org.apache.hadoop.hive.ql.session.SessionState; /** @@ -44,8 +40,6 @@ public class IOContext { }; private static Map inputNameIOContextMap = new HashMap(); - private static IOContext ioContext = new IOContext(); - public static Map getMap() { return inputNameIOContextMap; } @@ -61,7 +55,7 @@ public static IOContext get(String inputName) { public static void clear() { IOContext.threadLocal.remove(); - ioContext = new IOContext(); + inputNameIOContextMap.clear(); } long currentBlockStart; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java index f231b0655454..438d70a3cadb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java @@ -85,13 +85,18 @@ public class ConvertJoinMapJoin implements NodeProcessor { JoinOperator joinOp = (JoinOperator) nd; - if (!context.conf.getBoolVar(HiveConf.ConfVars.HIVECONVERTJOIN) - && !(context.conf.getBoolVar(HiveConf.ConfVars.HIVE_AUTO_SORTMERGE_JOIN))) { + TezBucketJoinProcCtx tezBucketJoinProcCtx = new TezBucketJoinProcCtx(context.conf); + if (!context.conf.getBoolVar(HiveConf.ConfVars.HIVECONVERTJOIN)) { // we are just converting to a common merge join operator. The shuffle // join in map-reduce case. - int pos = 0; // it doesn't matter which position we use in this case. - convertJoinSMBJoin(joinOp, context, pos, 0, false, false); - return null; + Object retval = checkAndConvertSMBJoin(context, joinOp, tezBucketJoinProcCtx); + if (retval == null) { + return retval; + } else { + int pos = 0; // it doesn't matter which position we use in this case. + convertJoinSMBJoin(joinOp, context, pos, 0, false, false); + return null; + } } // if we have traits, and table info is present in the traits, we know the @@ -99,7 +104,6 @@ public class ConvertJoinMapJoin implements NodeProcessor { // reducers from the parent operators. int numBuckets = -1; int estimatedBuckets = -1; - TezBucketJoinProcCtx tezBucketJoinProcCtx = new TezBucketJoinProcCtx(context.conf); if (context.conf.getBoolVar(HiveConf.ConfVars.HIVE_CONVERT_JOIN_BUCKET_MAPJOIN_TEZ)) { for (OperatorparentOp : joinOp.getParentOperators()) { if (parentOp.getOpTraits().getNumBuckets() > 0) { @@ -126,53 +130,15 @@ public class ConvertJoinMapJoin implements NodeProcessor { LOG.info("Estimated number of buckets " + numBuckets); int mapJoinConversionPos = getMapJoinConversionPos(joinOp, context, numBuckets); if (mapJoinConversionPos < 0) { - // we cannot convert to bucket map join, we cannot convert to - // map join either based on the size. Check if we can convert to SMB join. - if (context.conf.getBoolVar(HiveConf.ConfVars.HIVE_AUTO_SORTMERGE_JOIN) == false) { - convertJoinSMBJoin(joinOp, context, 0, 0, false, false); - return null; - } - Class bigTableMatcherClass = null; - try { - bigTableMatcherClass = - (Class) (Class.forName(HiveConf.getVar( - context.parseContext.getConf(), - HiveConf.ConfVars.HIVE_AUTO_SORTMERGE_JOIN_BIGTABLE_SELECTOR))); - } catch (ClassNotFoundException e) { - throw new SemanticException(e.getMessage()); - } - - BigTableSelectorForAutoSMJ bigTableMatcher = - ReflectionUtils.newInstance(bigTableMatcherClass, null); - JoinDesc joinDesc = joinOp.getConf(); - JoinCondDesc[] joinCondns = joinDesc.getConds(); - Set joinCandidates = MapJoinProcessor.getBigTableCandidates(joinCondns); - if (joinCandidates.isEmpty()) { - // This is a full outer join. This can never be a map-join - // of any type. So return false. - return false; - } - mapJoinConversionPos = - bigTableMatcher.getBigTablePosition(context.parseContext, joinOp, joinCandidates); - if (mapJoinConversionPos < 0) { - // contains aliases from sub-query - // we are just converting to a common merge join operator. The shuffle - // join in map-reduce case. - int pos = 0; // it doesn't matter which position we use in this case. - convertJoinSMBJoin(joinOp, context, pos, 0, false, false); - return null; - } - - if (checkConvertJoinSMBJoin(joinOp, context, mapJoinConversionPos, tezBucketJoinProcCtx)) { - convertJoinSMBJoin(joinOp, context, mapJoinConversionPos, - tezBucketJoinProcCtx.getNumBuckets(), tezBucketJoinProcCtx.isSubQuery(), true); + Object retval = checkAndConvertSMBJoin(context, joinOp, tezBucketJoinProcCtx); + if (retval == null) { + return retval; } else { - // we are just converting to a common merge join operator. The shuffle - // join in map-reduce case. - int pos = 0; // it doesn't matter which position we use in this case. - convertJoinSMBJoin(joinOp, context, pos, 0, false, false); + // only case is full outer join with SMB enabled which is not possible. Convert to regular + // join. + convertJoinSMBJoin(joinOp, context, 0, 0, false, false); + return null; } - return null; } if (numBuckets > 1) { @@ -206,6 +172,57 @@ public class ConvertJoinMapJoin implements NodeProcessor { return null; } + private Object checkAndConvertSMBJoin(OptimizeTezProcContext context, JoinOperator joinOp, + TezBucketJoinProcCtx tezBucketJoinProcCtx) throws SemanticException { + // we cannot convert to bucket map join, we cannot convert to + // map join either based on the size. Check if we can convert to SMB join. + if (context.conf.getBoolVar(HiveConf.ConfVars.HIVE_AUTO_SORTMERGE_JOIN) == false) { + convertJoinSMBJoin(joinOp, context, 0, 0, false, false); + return null; + } + Class bigTableMatcherClass = null; + try { + bigTableMatcherClass = + (Class) (Class.forName(HiveConf.getVar( + context.parseContext.getConf(), + HiveConf.ConfVars.HIVE_AUTO_SORTMERGE_JOIN_BIGTABLE_SELECTOR))); + } catch (ClassNotFoundException e) { + throw new SemanticException(e.getMessage()); + } + + BigTableSelectorForAutoSMJ bigTableMatcher = + ReflectionUtils.newInstance(bigTableMatcherClass, null); + JoinDesc joinDesc = joinOp.getConf(); + JoinCondDesc[] joinCondns = joinDesc.getConds(); + Set joinCandidates = MapJoinProcessor.getBigTableCandidates(joinCondns); + if (joinCandidates.isEmpty()) { + // This is a full outer join. This can never be a map-join + // of any type. So return false. + return false; + } + int mapJoinConversionPos = + bigTableMatcher.getBigTablePosition(context.parseContext, joinOp, joinCandidates); + if (mapJoinConversionPos < 0) { + // contains aliases from sub-query + // we are just converting to a common merge join operator. The shuffle + // join in map-reduce case. + int pos = 0; // it doesn't matter which position we use in this case. + convertJoinSMBJoin(joinOp, context, pos, 0, false, false); + return null; + } + + if (checkConvertJoinSMBJoin(joinOp, context, mapJoinConversionPos, tezBucketJoinProcCtx)) { + convertJoinSMBJoin(joinOp, context, mapJoinConversionPos, + tezBucketJoinProcCtx.getNumBuckets(), tezBucketJoinProcCtx.isSubQuery(), true); + } else { + // we are just converting to a common merge join operator. The shuffle + // join in map-reduce case. + int pos = 0; // it doesn't matter which position we use in this case. + convertJoinSMBJoin(joinOp, context, pos, 0, false, false); + } + return null; +} + // replaces the join operator with a new CommonJoinOperator, removes the // parent reduce sinks private void convertJoinSMBJoin(JoinOperator joinOp, OptimizeTezProcContext context, @@ -630,7 +647,7 @@ private boolean hasDynamicPartitionBroadcast(Operator parent) { hasDynamicPartitionPruning = true; break; } - + if (op instanceof ReduceSinkOperator || op instanceof FileSinkOperator) { // crossing reduce sink or file sink means the pruning isn't for this parent. break; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java index e3c87277c1c3..e6444813ec87 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java @@ -1,7 +1,5 @@ package org.apache.hadoop.hive.ql.optimizer; -import java.util.HashMap; -import java.util.Map; import java.util.Stack; import org.apache.hadoop.hive.ql.exec.CommonMergeJoinOperator; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java index 59a632776f81..2c0585542b69 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java @@ -123,6 +123,11 @@ public Object process(Node nd, Stack stack, context.rootToWorkMap.put(root, work); } + // this is where we set the sort columns that we will be using for KeyValueInputMerge + if (operator instanceof DummyStoreOperator) { + work.addSortCols(root.getOpTraits().getSortCols().get(0)); + } + if (!context.childToWorkMap.containsKey(operator)) { List workItems = new LinkedList(); workItems.add(work); @@ -148,6 +153,7 @@ public Object process(Node nd, Stack stack, context.opMergeJoinWorkMap.put(context.currentMergeJoinOperator, mergeJoinWork); } // connect the work correctly. + work.addSortCols(root.getOpTraits().getSortCols().get(0)); mergeJoinWork.addMergedWork(work, null); Operator parentOp = getParentFromStack(context.currentMergeJoinOperator, stack); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java index 05be1f1b08f5..9d8d52dfd509 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.plan; +import java.util.ArrayList; import java.util.LinkedList; import java.util.LinkedHashSet; import java.util.List; @@ -42,6 +43,7 @@ public abstract class BaseWork extends AbstractOperatorDesc { // schema info. List dummyOps; int tag; + private final List sortColNames = new ArrayList(); public BaseWork() {} @@ -148,4 +150,12 @@ public void setTag(int tag) { public int getTag() { return tag; } + + public void addSortCols(List sortCols) { + this.sortColNames.addAll(sortCols); + } + + public List getSortCols() { + return sortColNames; + } } From fdf3cde43d2f04b86636b37b5d9f4f61c655b589 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 24 Oct 2014 06:20:54 +0000 Subject: [PATCH 166/339] HIVE-8586: Record counters aren't updated correctly for vectorized queries (Gunther Hagleitner, reviewed by Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634003 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/exec/MapOperator.java | 14 ++++++++------ .../hive/ql/exec/vector/VectorMapOperator.java | 3 ++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java index 00ee5278d524..910d6520f8d4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java @@ -499,14 +499,16 @@ public void process(Writable value) throws HiveException { throw new HiveException("Hive Runtime Error while processing row " + message, e); } } - rowForwarded(childrenDone); + rowsForwarded(childrenDone, 1); } - protected final void rowForwarded(int childrenDone) { - numRows++; - if (isLogInfoEnabled && numRows == cntr) { - cntr *= 10; - LOG.info(toString() + ": records read - " + numRows); + protected final void rowsForwarded(int childrenDone, int rows) { + numRows += rows; + if (isLogInfoEnabled) { + while (numRows >= cntr) { + cntr *= 10; + LOG.info(toString() + ": records read - " + numRows); + } } if (childrenDone == currentCtxs.length) { setDone(true); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java index 250533ce7eb0..aa0d5a571580 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java @@ -46,7 +46,8 @@ public void process(Writable value) throws HiveException { childrenDone++; } } - rowForwarded(childrenDone); + + rowsForwarded(childrenDone, ((VectorizedRowBatch)value).size); } catch (Exception e) { throw new HiveException("Hive Runtime Error while processing row ", e); } From a1eb470e7c1de152b711508bf82cb9605d7615f6 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 24 Oct 2014 06:30:46 +0000 Subject: [PATCH 167/339] HIVE-8517: When joining on partition column NDV gets overridden by StatsUtils.getColStatisticsFromExpression (Mostafa Mokhtar, reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634005 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/stats/StatsUtils.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java index d42ede4f6d0c..d10eddf01443 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java @@ -249,7 +249,7 @@ public static Statistics collectStatistics(HiveConf conf, PrunedPartitionList pa List emptyStats = Lists.newArrayList(); // add partition column stats - addParitionColumnStats(neededColumns, referencedColumns, schema, table, partList, + addParitionColumnStats(conf, neededColumns, referencedColumns, schema, table, partList, emptyStats); stats.addToColumnStats(emptyStats); @@ -263,7 +263,7 @@ public static Statistics collectStatistics(HiveConf conf, PrunedPartitionList pa List columnStats = convertColStats(colStats, table.getTableName(), colToTabAlias); - addParitionColumnStats(neededColumns, referencedColumns, schema, table, partList, + addParitionColumnStats(conf, neededColumns, referencedColumns, schema, table, partList, columnStats); // infer if any column can be primary key based on column statistics @@ -335,7 +335,7 @@ private static boolean isWithin(ColStatistics.Range range1, ColStatistics.Range return false; } - private static void addParitionColumnStats(List neededColumns, + private static void addParitionColumnStats(HiveConf conf, List neededColumns, List referencedColumns, List schema, Table table, PrunedPartitionList partList, List colStats) throws HiveException { @@ -358,6 +358,8 @@ private static void addParitionColumnStats(List neededColumns, long numPartitions = getNDVPartitionColumn(partList.getPartitions(), ci.getInternalName()); partCS.setCountDistint(numPartitions); + partCS.setAvgColLen(StatsUtils.getAvgColLenOfVariableLengthTypes(conf, + ci.getObjectInspector(), partCS.getColumnType())); colStats.add(partCS); } } @@ -1059,7 +1061,13 @@ public static ColStatistics getColStatisticsFromExpression(HiveConf conf, Statis if (encd.getIsPartitionColOrVirtualCol()) { - // vitual columns + ColStatistics colStats = parentStats.getColumnStatisticsFromColName(colName); + if (colStats != null) { + /* If statistics for the column already exist use it. */ + return colStats; + } + + // virtual columns colType = encd.getTypeInfo().getTypeName(); countDistincts = numRows; oi = encd.getWritableObjectInspector(); From 52eaf3e5135917fae1c6043c0a6ea77346a7c1b6 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 24 Oct 2014 06:56:52 +0000 Subject: [PATCH 168/339] HIVE-8567: Vectorized queries output extra stuff for Binary columns (Matt McCline via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634007 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/vector/VectorizedBatchUtil.java | 2 +- .../tez/vector_data_types.q.out | 40 +++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java index 514c6d68aad8..7b9c0a709d8e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java @@ -401,7 +401,7 @@ private static void setVector(Object row, BytesWritable bw = (BytesWritable) writableCol; byte[] bytes = bw.getBytes(); int start = buffer.getLength(); - int length = bytes.length; + int length = bw.getLength(); try { buffer.write(bytes, 0, length); } catch (IOException ioe) { diff --git a/ql/src/test/results/clientpositive/tez/vector_data_types.q.out b/ql/src/test/results/clientpositive/tez/vector_data_types.q.out index a3bf59d2e545..0e7663dabc51 100644 --- a/ql/src/test/results/clientpositive/tez/vector_data_types.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_data_types.q.out @@ -239,23 +239,23 @@ POSTHOOK: query: SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc OR POSTHOOK: type: QUERY POSTHOOK: Input: default@over1korc #### A masked pattern was here #### -108 301 65536 4294967357 90.05 17.59 true ethan johnson 1860-11-12 20:05:55.011470936 75.70 undecided -118 497 65536 4294967381 50.32 12.72 false david nixon 1860-11-12 20:05:55.011484936 83.48 values clariffication -18 280 65536 4294967320 32.92 45.94 false holly white 1860-11-12 20:05:55.011285936 58.86 topologyariffication -69 489 65536 4294967404 33.52 17.99 false oscar ichabod 1860-11-12 20:05:55.011446936 32.68 topologyariffication -27 405 65536 4294967508 82.24 29.41 true oscar ovid 1860-11-12 20:05:55.011365936 16.85 biologyariffication -42 495 65536 4294967431 43.57 46.81 false tom johnson 1860-11-12 20:05:55.011444936 62.25 american historytion -NULL 409 65536 4294967490 46.97 25.92 false fred miller 1860-11-12 20:05:55.011315936 33.45 history historytion -59 431 65537 4294967326 11.34 2.9 true oscar robinson 1860-11-12 20:05:55.011360936 81.04 zync studiesorytion -63 458 65537 4294967463 21.94 49.71 true fred van buren 1860-11-12 20:05:55.011477936 99.34 wind surfingorytion -121 355 65537 4294967437 85.9 10.99 true calvin brown 1860-11-12 20:05:55.011453936 4.49 yard dutyngorytion -72 267 65537 4294967460 55.2 42.89 false oscar carson 1860-11-12 20:05:55.011352936 51.91 topologyngorytion -22 264 65537 4294967419 8.07 10.71 false david xylophone 1860-11-12 20:05:55.011335936 11.87 undecidedngorytion -101 283 65538 4294967527 84.03 27.29 true yuri brown 1860-11-12 20:05:55.011505936 44.24 biologydngorytion -109 376 65538 4294967453 59.61 35.62 true priscilla xylophone 1860-11-12 20:05:55.011485936 9.53 study skillsorytion -83 353 65538 4294967339 0.08 23.91 true holly thompson 1860-11-12 20:05:55.011356936 30.27 quiet hoursorytion -29 331 65539 4294967420 73.18 28.96 true ethan brown 1860-11-12 20:05:55.011293936 58.85 zync studiesorytion -70 430 65539 4294967534 18.89 43.84 true tom carson 1860-11-12 20:05:55.011381936 21.93 joggyingiesorytion -120 331 65539 4294967324 88.02 40.94 true holly nixon 1860-11-12 20:05:55.011461936 96.64 yard dutyesorytion -71 298 65540 4294967510 91.63 9.6 false gabriella zipper 1860-11-12 20:05:55.011339936 68.14 geologyyesorytion -114 385 65541 4294967458 73.48 34.97 true oscar quirinius 1860-11-12 20:05:55.011342936 72.33 xylophone bandytion +108 301 65536 4294967357 90.05 17.59 true ethan johnson 1860-11-12 20:05:55.011470936 75.70 undecided +118 497 65536 4294967381 50.32 12.72 false david nixon 1860-11-12 20:05:55.011484936 83.48 values clariffication +18 280 65536 4294967320 32.92 45.94 false holly white 1860-11-12 20:05:55.011285936 58.86 topology +69 489 65536 4294967404 33.52 17.99 false oscar ichabod 1860-11-12 20:05:55.011446936 32.68 topology +27 405 65536 4294967508 82.24 29.41 true oscar ovid 1860-11-12 20:05:55.011365936 16.85 biology +42 495 65536 4294967431 43.57 46.81 false tom johnson 1860-11-12 20:05:55.011444936 62.25 american history +NULL 409 65536 4294967490 46.97 25.92 false fred miller 1860-11-12 20:05:55.011315936 33.45 history +59 431 65537 4294967326 11.34 2.9 true oscar robinson 1860-11-12 20:05:55.011360936 81.04 zync studies +63 458 65537 4294967463 21.94 49.71 true fred van buren 1860-11-12 20:05:55.011477936 99.34 wind surfing +121 355 65537 4294967437 85.9 10.99 true calvin brown 1860-11-12 20:05:55.011453936 4.49 yard duty +72 267 65537 4294967460 55.2 42.89 false oscar carson 1860-11-12 20:05:55.011352936 51.91 topology +22 264 65537 4294967419 8.07 10.71 false david xylophone 1860-11-12 20:05:55.011335936 11.87 undecided +101 283 65538 4294967527 84.03 27.29 true yuri brown 1860-11-12 20:05:55.011505936 44.24 biology +109 376 65538 4294967453 59.61 35.62 true priscilla xylophone 1860-11-12 20:05:55.011485936 9.53 study skills +83 353 65538 4294967339 0.08 23.91 true holly thompson 1860-11-12 20:05:55.011356936 30.27 quiet hour +29 331 65539 4294967420 73.18 28.96 true ethan brown 1860-11-12 20:05:55.011293936 58.85 zync studies +70 430 65539 4294967534 18.89 43.84 true tom carson 1860-11-12 20:05:55.011381936 21.93 joggying +120 331 65539 4294967324 88.02 40.94 true holly nixon 1860-11-12 20:05:55.011461936 96.64 yard duty +71 298 65540 4294967510 91.63 9.6 false gabriella zipper 1860-11-12 20:05:55.011339936 68.14 geology +114 385 65541 4294967458 73.48 34.97 true oscar quirinius 1860-11-12 20:05:55.011342936 72.33 xylophone band From 5ad01ded1a12faf9c045f8e8817452c09bc77ce7 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Fri, 24 Oct 2014 22:59:43 +0000 Subject: [PATCH 169/339] HIVE-6915 : Hive Hbase queries fail on secure Tez cluster (Siddharth Seth, reviewed by Sergey Shelukhin, Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634153 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/hbase/HBaseStorageHandler.java | 5 +++++ .../apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java | 5 ++++- .../apache/hadoop/hive/hbase/HiveHBaseTableOutputFormat.java | 5 ++++- ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java | 2 ++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java b/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java index feb3cd122b67..330bc266bb23 100644 --- a/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java +++ b/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java @@ -475,6 +475,11 @@ public void configureJobConf(TableDesc tableDesc, JobConf jobConf) { TableMapReduceUtil.addDependencyJars(copy); merged.addAll(copy.getConfiguration().getStringCollection("tmpjars")); jobConf.set("tmpjars", StringUtils.arrayToString(merged.toArray(new String[0]))); + + // Get credentials using the configuration instance which has HBase properties + JobConf hbaseJobConf = new JobConf(getConf()); + org.apache.hadoop.hbase.mapred.TableMapReduceUtil.initCredentials(hbaseJobConf); + jobConf.getCredentials().mergeAll(hbaseJobConf.getCredentials()); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java b/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java index 4ac0803031ab..08b63b49fda2 100644 --- a/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java +++ b/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java @@ -69,6 +69,7 @@ import org.apache.hadoop.mapreduce.JobContext; import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; +import org.apache.hadoop.security.UserGroupInformation; /** * HiveHBaseTableInputFormat implements InputFormat for HBase storage handler @@ -355,7 +356,9 @@ static IndexPredicateAnalyzer newIndexPredicateAnalyzer( public InputSplit[] getSplits(JobConf jobConf, int numSplits) throws IOException { //obtain delegation tokens for the job - TableMapReduceUtil.initCredentials(jobConf); + if (UserGroupInformation.getCurrentUser().hasKerberosCredentials()) { + TableMapReduceUtil.initCredentials(jobConf); + } String hbaseTableName = jobConf.get(HBaseSerDe.HBASE_TABLE_NAME); setHTable(new HTable(HBaseConfiguration.create(jobConf), Bytes.toBytes(hbaseTableName))); diff --git a/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableOutputFormat.java b/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableOutputFormat.java index e5ac9d3c7d21..3100885d2886 100644 --- a/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableOutputFormat.java +++ b/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableOutputFormat.java @@ -42,6 +42,7 @@ import org.apache.hadoop.mapreduce.OutputCommitter; import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.hadoop.util.Progressable; +import org.apache.hadoop.security.UserGroupInformation; /** * HiveHBaseTableOutputFormat implements HiveOutputFormat for HBase tables. @@ -72,7 +73,9 @@ public class HiveHBaseTableOutputFormat extends public void checkOutputSpecs(FileSystem fs, JobConf jc) throws IOException { //obtain delegation tokens for the job - TableMapReduceUtil.initCredentials(jc); + if (UserGroupInformation.getCurrentUser().hasKerberosCredentials()) { + TableMapReduceUtil.initCredentials(jc); + } String hbaseTableName = jc.get(HBaseSerDe.HBASE_TABLE_NAME); jc.set(TableOutputFormat.OUTPUT_TABLE, hbaseTableName); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java index 93e0fac4e0eb..337f2f430350 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java @@ -47,6 +47,7 @@ import org.apache.hadoop.hive.ql.plan.api.StageType; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.mapred.JobConf; +import org.apache.hadoop.security.token.Token; import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.tez.common.counters.CounterGroup; @@ -272,6 +273,7 @@ DAG build(JobConf conf, TezWork work, Path scratchDir, // the name of the dag is what is displayed in the AM/Job UI DAG dag = DAG.create(work.getName()); + dag.setCredentials(conf.getCredentials()); for (BaseWork w: ws) { From 2447ba1a325a7cf7507edeafe8f378227a276aad Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 25 Oct 2014 01:41:03 +0000 Subject: [PATCH 170/339] HIVE-8433: CBO loses a column during AST conversion (Sergey Shelukhin via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634172 13f79535-47bb-0310-9956-ffa450edef68 --- .../optiq/translator/ASTConverter.java | 3 + .../translator/PlanModifierForASTConv.java | 108 ++++--- .../hadoop/hive/ql/parse/RowResolver.java | 130 +++++--- .../hive/ql/parse/SemanticAnalyzer.java | 87 ++++-- .../queries/clientpositive/cbo_correctness.q | 4 +- .../queries/clientpositive/select_same_col.q | 19 ++ .../clientpositive/cbo_correctness.q.out | 12 +- .../clientpositive/select_same_col.q.out | 120 ++++++++ .../clientpositive/tez/cbo_correctness.q.out | 278 +++++++++--------- 9 files changed, 506 insertions(+), 255 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/select_same_col.q create mode 100644 ql/src/test/results/clientpositive/select_same_col.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java index 04282636f748..a217d70e48da 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java @@ -25,6 +25,8 @@ import net.hydromatic.optiq.util.BitSets; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.optimizer.optiq.OptiqSemanticException; import org.apache.hadoop.hive.ql.optimizer.optiq.RelOptHiveTable; @@ -63,6 +65,7 @@ import com.google.common.collect.Iterables; public class ASTConverter { + private static final Log LOG = LogFactory.getLog(ASTConverter.class); private RelNode root; private HiveAST hiveAST; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java index 4f96d026908b..57f030b2e4f0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/PlanModifierForASTConv.java @@ -22,6 +22,8 @@ import java.util.List; import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.optimizer.optiq.HiveOptiqUtil; import org.apache.hadoop.hive.ql.optimizer.optiq.OptiqSemanticException; @@ -43,6 +45,7 @@ import org.eigenbase.rel.SingleRel; import org.eigenbase.rel.SortRel; import org.eigenbase.rel.rules.MultiJoinRel; +import org.eigenbase.relopt.RelOptUtil; import org.eigenbase.relopt.hep.HepRelVertex; import org.eigenbase.relopt.volcano.RelSubset; import org.eigenbase.reltype.RelDataType; @@ -55,22 +58,39 @@ import com.google.common.collect.ImmutableMap; public class PlanModifierForASTConv { + private static final Log LOG = LogFactory.getLog(PlanModifierForASTConv.class); public static RelNode convertOpTree(RelNode rel, List resultSchema) throws OptiqSemanticException { RelNode newTopNode = rel; + if (LOG.isDebugEnabled()) { + LOG.debug("Original plan for PlanModifier\n " + RelOptUtil.toString(newTopNode)); + } if (!(newTopNode instanceof ProjectRelBase) && !(newTopNode instanceof SortRel)) { newTopNode = introduceDerivedTable(newTopNode); + if (LOG.isDebugEnabled()) { + LOG.debug("Plan after top-level introduceDerivedTable\n " + + RelOptUtil.toString(newTopNode)); + } } convertOpTree(newTopNode, (RelNode) null); + if (LOG.isDebugEnabled()) { + LOG.debug("Plan after nested convertOpTree\n " + RelOptUtil.toString(newTopNode)); + } Pair topSelparentPair = HiveOptiqUtil.getTopLevelSelect(newTopNode); fixTopOBSchema(newTopNode, topSelparentPair, resultSchema); + if (LOG.isDebugEnabled()) { + LOG.debug("Plan after fixTopOBSchema\n " + RelOptUtil.toString(newTopNode)); + } + topSelparentPair = HiveOptiqUtil.getTopLevelSelect(newTopNode); newTopNode = renameTopLevelSelectInResultSchema(newTopNode, topSelparentPair, resultSchema); - + if (LOG.isDebugEnabled()) { + LOG.debug("Final plan after modifier\n " + RelOptUtil.toString(newTopNode)); + } return newTopNode; } @@ -137,36 +157,54 @@ private static void convertOpTree(RelNode rel, RelNode parent) { private static void fixTopOBSchema(final RelNode rootRel, Pair topSelparentPair, List resultSchema) throws OptiqSemanticException { - if (topSelparentPair.getKey() instanceof SortRel - && HiveOptiqUtil.orderRelNode(topSelparentPair.getKey())) { - HiveSortRel obRel = (HiveSortRel) topSelparentPair.getKey(); - ProjectRelBase obChild = (ProjectRelBase) topSelparentPair.getValue(); - - if (obChild.getRowType().getFieldCount() > resultSchema.size()) { - RelDataType rt = obChild.getRowType(); - Set collationInputRefs = new HashSet(RelCollationImpl.ordinals(obRel - .getCollation())); - ImmutableMap.Builder inputRefToCallMapBldr = ImmutableMap.builder(); - for (int i = resultSchema.size(); i < rt.getFieldCount(); i++) { - if (collationInputRefs.contains(i)) { - inputRefToCallMapBldr.put(i, obChild.getChildExps().get(i)); - } - } + if (!(topSelparentPair.getKey() instanceof SortRel) + || !HiveOptiqUtil.orderRelNode(topSelparentPair.getKey())) { + return; + } + HiveSortRel obRel = (HiveSortRel) topSelparentPair.getKey(); + ProjectRelBase obChild = (ProjectRelBase) topSelparentPair.getValue(); + if (obChild.getRowType().getFieldCount() <= resultSchema.size()) { + return; + } - ImmutableMap inputRefToCallMap = inputRefToCallMapBldr.build(); - if ((obChild.getRowType().getFieldCount() - inputRefToCallMap.size()) == resultSchema - .size()) { - HiveProjectRel replacementProjectRel = HiveProjectRel.create(obChild.getChild(), obChild - .getChildExps().subList(0, resultSchema.size()), obChild.getRowType().getFieldNames() - .subList(0, resultSchema.size())); - obRel.replaceInput(0, replacementProjectRel); - obRel.setInputRefToCallMap(inputRefToCallMap); - } else { - throw new OptiqSemanticException( - "Result Schema didn't match Optiq Optimized Op Tree Schema"); - } + RelDataType rt = obChild.getRowType(); + @SuppressWarnings({ "unchecked", "rawtypes" }) + Set collationInputRefs = new HashSet( + RelCollationImpl.ordinals(obRel.getCollation())); + ImmutableMap.Builder inputRefToCallMapBldr = ImmutableMap.builder(); + for (int i = resultSchema.size(); i < rt.getFieldCount(); i++) { + if (collationInputRefs.contains(i)) { + inputRefToCallMapBldr.put(i, obChild.getChildExps().get(i)); } } + ImmutableMap inputRefToCallMap = inputRefToCallMapBldr.build(); + + if ((obChild.getRowType().getFieldCount() - inputRefToCallMap.size()) != resultSchema.size()) { + LOG.error(generateInvalidSchemaMessage(obChild, resultSchema, inputRefToCallMap.size())); + throw new OptiqSemanticException("Result Schema didn't match Optimized Op Tree Schema"); + } + // This removes order-by only expressions from the projections. + HiveProjectRel replacementProjectRel = HiveProjectRel.create(obChild.getChild(), obChild + .getChildExps().subList(0, resultSchema.size()), obChild.getRowType().getFieldNames() + .subList(0, resultSchema.size())); + obRel.replaceInput(0, replacementProjectRel); + obRel.setInputRefToCallMap(inputRefToCallMap); + } + + private static String generateInvalidSchemaMessage(ProjectRelBase topLevelProj, + List resultSchema, int fieldsForOB) { + String errorDesc = "Result Schema didn't match Optiq Optimized Op Tree; schema: "; + for (FieldSchema fs : resultSchema) { + errorDesc += "[" + fs.getName() + ":" + fs.getType() + "], "; + } + errorDesc += " projection fields: "; + for (RexNode exp : topLevelProj.getChildExps()) { + errorDesc += "[" + exp.toString() + ":" + exp.getType() + "], "; + } + if (fieldsForOB != 0) { + errorDesc += fieldsForOB + " fields removed due to ORDER BY "; + } + return errorDesc.substring(0, errorDesc.length() - 2); } private static RelNode renameTopLevelSelectInResultSchema(final RelNode rootRel, @@ -179,22 +217,18 @@ private static RelNode renameTopLevelSelectInResultSchema(final RelNode rootRel, // (limit)?(OB)?(ProjectRelBase).... List rootChildExps = originalProjRel.getChildExps(); if (resultSchema.size() != rootChildExps.size()) { - // this is a bug in Hive where for queries like select key,value,value - // convertRowSchemaToResultSetSchema() only returns schema containing - // key,value - // Underlying issue is much deeper because it seems like RowResolver - // itself doesnt have - // those mappings. see limit_pushdown.q & limit_pushdown_negative.q - // Till Hive issue is fixed, disable CBO for such queries. - throw new OptiqSemanticException("Result Schema didn't match Optiq Optimized Op Tree Schema"); + // Safeguard against potential issues in CBO RowResolver construction. Disable CBO for now. + LOG.error(generateInvalidSchemaMessage(originalProjRel, resultSchema, 0)); + throw new OptiqSemanticException("Result Schema didn't match Optimized Op Tree Schema"); } List newSelAliases = new ArrayList(); String colAlias; for (int i = 0; i < rootChildExps.size(); i++) { colAlias = resultSchema.get(i).getName(); - if (colAlias.startsWith("_")) + if (colAlias.startsWith("_")) { colAlias = colAlias.substring(1); + } newSelAliases.add(colAlias); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java index 10ac4b2e8906..82315eb0d3a8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java @@ -119,7 +119,11 @@ public boolean addMappingOnly(String tab_alias, String col_alias, ColumnInfo col f_map = new LinkedHashMap(); rslvMap.put(tab_alias, f_map); } - f_map.put(col_alias, colInfo); + ColumnInfo oldColInfo = f_map.put(col_alias, colInfo); + if (oldColInfo != null) { + LOG.warn("Duplicate column info for " + tab_alias + "." + col_alias + + " was overwritten in RowResolver map: " + oldColInfo + " by " + colInfo); + } String[] qualifiedAlias = new String[2]; qualifiedAlias[0] = tab_alias; @@ -339,40 +343,44 @@ public void setExpressionMap(Map expressionMap) { this.expressionMap = expressionMap; } + private static class IntRef { + public int val = 0; + } + + public static boolean add(RowResolver rrToAddTo, RowResolver rrToAddFrom, int numColumns) + throws SemanticException { + return add(rrToAddTo, rrToAddFrom, null, numColumns); + } - // TODO: 1) How to handle collisions? 2) Should we be cloning ColumnInfo or - // not? - public static int add(RowResolver rrToAddTo, RowResolver rrToAddFrom, - int outputColPos, int numColumns) throws SemanticException { + // TODO: 1) How to handle collisions? 2) Should we be cloning ColumnInfo or not? + private static boolean add(RowResolver rrToAddTo, RowResolver rrToAddFrom, + IntRef outputColPosRef, int numColumns) throws SemanticException { + boolean hasDuplicates = false; String tabAlias; String colAlias; String[] qualifiedColName; int i = 0; + int outputColPos = outputColPosRef == null ? 0 : outputColPosRef.val; for (ColumnInfo cInfoFrmInput : rrToAddFrom.getRowSchema().getSignature()) { if ( numColumns >= 0 && i == numColumns ) { break; } ColumnInfo newCI = null; - qualifiedColName = rrToAddFrom.getInvRslvMap().get( - cInfoFrmInput.getInternalName()); + String internalName = cInfoFrmInput.getInternalName(); + qualifiedColName = rrToAddFrom.reverseLookup(internalName); tabAlias = qualifiedColName[0]; colAlias = qualifiedColName[1]; newCI = new ColumnInfo(cInfoFrmInput); - newCI.setInternalName(SemanticAnalyzer - .getColumnInternalName(outputColPos)); + newCI.setInternalName(SemanticAnalyzer.getColumnInternalName(outputColPos)); outputColPos++; - if (rrToAddTo.get(tabAlias, colAlias) != null) { - LOG.debug("Found duplicate column alias in RR: " + rrToAddTo.get(tabAlias, colAlias)); - } else { - rrToAddTo.put(tabAlias, colAlias, newCI); - } + boolean isUnique = rrToAddTo.putWithCheck(tabAlias, colAlias, internalName, newCI); + hasDuplicates |= (!isUnique); - qualifiedColName = rrToAddFrom.getAlternateMappings(cInfoFrmInput - .getInternalName()); + qualifiedColName = rrToAddFrom.getAlternateMappings(internalName); if (qualifiedColName != null) { tabAlias = qualifiedColName[0]; colAlias = qualifiedColName[1]; @@ -381,31 +389,67 @@ public static int add(RowResolver rrToAddTo, RowResolver rrToAddFrom, i++; } - return outputColPos; - } - - public static int add(RowResolver rrToAddTo, RowResolver rrToAddFrom, - int outputColPos) throws SemanticException { - return add(rrToAddTo, rrToAddFrom, outputColPos, -1); - } - - /** - * Return a new row resolver that is combination of left RR and right RR. - * The schema will be schema of left, schema of right - * - * @param leftRR - * @param rightRR - * @return - * @throws SemanticException - */ - public static RowResolver getCombinedRR(RowResolver leftRR, - RowResolver rightRR) throws SemanticException { - int outputColPos = 0; - - RowResolver combinedRR = new RowResolver(); - outputColPos = add(combinedRR, leftRR, outputColPos); - outputColPos = add(combinedRR, rightRR, outputColPos); - - return combinedRR; - } + if (outputColPosRef != null) { + outputColPosRef.val = outputColPos; + } + return !hasDuplicates; + } + + /** + * Adds column to RR, checking for duplicate columns. Needed because CBO cannot handle the Hive + * behavior of blindly overwriting old mapping in RR and still somehow working after that. + * @return True if mapping was added without duplicates. + */ + public boolean putWithCheck(String tabAlias, String colAlias, + String internalName, ColumnInfo newCI) throws SemanticException { + ColumnInfo existing = get(tabAlias, colAlias); + if (existing == null) { + put(tabAlias, colAlias, newCI); + return true; + } + LOG.warn("Found duplicate column alias in RR: " + existing + " for " + + tabAlias + "." + colAlias + " and " + internalName); + if (internalName != null) { + existing = get(tabAlias, internalName); + if (existing == null) { + put(tabAlias, internalName, newCI); + return true; + } + } + LOG.warn("Failed to use internal name after finding a duplicate: " + existing + + " for " + tabAlias + "." + internalName); + return false; + } + + private static boolean add(RowResolver rrToAddTo, RowResolver rrToAddFrom, + IntRef outputColPosRef) throws SemanticException { + return add(rrToAddTo, rrToAddFrom, outputColPosRef, -1); + } + + public static boolean add(RowResolver rrToAddTo, RowResolver rrToAddFrom) + throws SemanticException { + return add(rrToAddTo, rrToAddFrom, null, -1); + } + + /** + * Return a new row resolver that is combination of left RR and right RR. + * The schema will be schema of left, schema of right + * + * @param leftRR + * @param rightRR + * @return + * @throws SemanticException + */ + public static RowResolver getCombinedRR(RowResolver leftRR, + RowResolver rightRR) throws SemanticException { + RowResolver combinedRR = new RowResolver(); + IntRef outputColPos = new IntRef(); + if (!add(combinedRR, leftRR, outputColPos)) { + LOG.warn("Duplicates detected when adding columns to RR: see previous message"); + } + if (!add(combinedRR, rightRR, outputColPos)) { + LOG.warn("Duplicates detected when adding columns to RR: see previous message"); + } + return combinedRR; + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index d8c50e3ad122..974f03b9c1a4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -1255,8 +1255,9 @@ public boolean doPhase1(ASTNode ast, QB qb, Phase1Ctx ctx_1) } qbp.setDestForClause(ctx_1.dest, (ASTNode) ast.getChild(0)); - if (qbp.getClauseNamesForDest().size() > 1) + if (qbp.getClauseNamesForDest().size() > 1) { queryProperties.setMultiDestQuery(true); + } break; case HiveParser.TOK_FROM: @@ -2716,9 +2717,10 @@ private Operator genNotNullFilterForJoinSourcePlan(QB qb, Operator input, } @SuppressWarnings("nls") - private Integer genColListRegex(String colRegex, String tabAlias, - ASTNode sel, ArrayList col_list, HashSet excludeCols, - RowResolver input, Integer pos, RowResolver output, List aliases) + // TODO: make aliases unique, otherwise needless rewriting takes place + private Integer genColListRegex(String colRegex, String tabAlias, ASTNode sel, + ArrayList col_list, HashSet excludeCols, RowResolver input, + Integer pos, RowResolver output, List aliases, boolean ensureUniqueCols) throws SemanticException { // The table alias should exist @@ -2790,7 +2792,14 @@ private Integer genColListRegex(String colRegex, String tabAlias, colInfo.getIsVirtualCol(), colInfo.isHiddenVirtualCol()); inputColsProcessed.put(colInfo, oColInfo); } - output.put(tmp[0], tmp[1], oColInfo); + if (ensureUniqueCols) { + if (!output.putWithCheck(tmp[0], tmp[1], null, oColInfo)) { + throw new OptiqSemanticException("Cannot add column to RR: " + tmp[0] + "." + tmp[1] + + " => " + oColInfo + " due to duplication, see previous warnings"); + } + } else { + output.put(tmp[0], tmp[1], oColInfo); + } pos = Integer.valueOf(pos.intValue() + 1); matched++; @@ -3441,7 +3450,7 @@ private Operator genSelectPlan(ASTNode selExprList, QB qb, } if (isUDTF && (selectStar = udtfExprType == HiveParser.TOK_FUNCTIONSTAR)) { genColListRegex(".*", null, (ASTNode) udtfExpr.getChild(0), - col_list, null, inputRR, pos, out_rwsch, qb.getAliases()); + col_list, null, inputRR, pos, out_rwsch, qb.getAliases(), false); } } @@ -3563,7 +3572,7 @@ private Operator genSelectPlan(ASTNode selExprList, QB qb, if (expr.getType() == HiveParser.TOK_ALLCOLREF) { pos = genColListRegex(".*", expr.getChildCount() == 0 ? null : getUnescapedName((ASTNode) expr.getChild(0)).toLowerCase(), - expr, col_list, null, inputRR, pos, out_rwsch, qb.getAliases()); + expr, col_list, null, inputRR, pos, out_rwsch, qb.getAliases(), false); selectStar = true; } else if (expr.getType() == HiveParser.TOK_TABLE_OR_COL && !hasAsClause && !inputRR.getIsExprResolver() @@ -3572,7 +3581,7 @@ && isRegex(unescapeIdentifier(expr.getChild(0).getText()), conf)) { // This can only happen without AS clause // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(0).getText()), - null, expr, col_list, null, inputRR, pos, out_rwsch, qb.getAliases()); + null, expr, col_list, null, inputRR, pos, out_rwsch, qb.getAliases(), false); } else if (expr.getType() == HiveParser.DOT && expr.getChild(0).getType() == HiveParser.TOK_TABLE_OR_COL && inputRR.hasTableAlias(unescapeIdentifier(expr.getChild(0) @@ -3584,7 +3593,7 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(1).getText()), unescapeIdentifier(expr.getChild(0).getChild(0).getText().toLowerCase()), - expr, col_list, null, inputRR, pos, out_rwsch, qb.getAliases()); + expr, col_list, null, inputRR, pos, out_rwsch, qb.getAliases(), false); } else { // Case when this is an expression TypeCheckCtx tcCtx = new TypeCheckCtx(inputRR); @@ -12383,12 +12392,11 @@ public RelNode apply(RelOptCluster cluster, RelOptSchema relOptSchema, SchemaPlu if (LOG.isDebugEnabled() && !conf.getBoolVar(ConfVars.HIVE_IN_TEST)) { LOG.debug("CBO Planning details:\n"); - LOG.debug("Original Plan:\n"); - LOG.debug(RelOptUtil.toString(optiqGenPlan)); - LOG.debug("Plan After PPD, PartPruning, ColumnPruning:\n"); - LOG.debug(RelOptUtil.toString(optiqPreCboPlan)); - LOG.debug("Plan After Join Reordering:\n"); - LOG.debug(RelOptUtil.toString(optiqOptimizedPlan, SqlExplainLevel.ALL_ATTRIBUTES)); + LOG.debug("Original Plan:\n" + RelOptUtil.toString(optiqGenPlan)); + LOG.debug("Plan After PPD, PartPruning, ColumnPruning:\n" + + RelOptUtil.toString(optiqPreCboPlan)); + LOG.debug("Plan After Join Reordering:\n" + + RelOptUtil.toString(optiqOptimizedPlan, SqlExplainLevel.ALL_ATTRIBUTES)); } return optiqOptimizedPlan; @@ -12602,7 +12610,9 @@ private RelNode genJoinRelNode(RelNode leftRel, RelNode rightRel, JoinType hiveJ joinRR = RowResolver.getCombinedRR(leftRR, rightRR); } else { joinRR = new RowResolver(); - RowResolver.add(joinRR, leftRR, 0); + if (!RowResolver.add(joinRR, leftRR)) { + LOG.warn("Duplicates detected when adding columns to RR: see previous message"); + } } // 2. Construct ExpressionNodeDesc representing Join Condition @@ -13046,7 +13056,7 @@ private RelNode genFilterRelNode(QB qb, ASTNode searchCond, RelNode srcRel, private RelNode projectLeftOuterSide(RelNode srcRel, int numColumns) throws SemanticException { RowResolver iRR = relToHiveRR.get(srcRel); RowResolver oRR = new RowResolver(); - RowResolver.add(oRR, iRR, 0, numColumns); + RowResolver.add(oRR, iRR, numColumns); List optiqColLst = new ArrayList(); List oFieldNames = new ArrayList(); @@ -13506,7 +13516,10 @@ public RexNode apply(RelDataTypeField input) { } }); RowResolver obSyntheticProjectRR = new RowResolver(); - RowResolver.add(obSyntheticProjectRR, inputRR, 0); + if (!RowResolver.add(obSyntheticProjectRR, inputRR)) { + throw new OptiqSemanticException( + "Duplicates detected when adding columns to RR: see previous message"); + } int vcolPos = inputRR.getRowSchema().getSignature().size(); for (Pair astTypePair : vcASTTypePairs) { obSyntheticProjectRR.putExpression(astTypePair.getKey(), new ColumnInfo( @@ -13517,14 +13530,23 @@ public RexNode apply(RelDataTypeField input) { obSyntheticProjectRR, srcRel); if (outermostOB) { - RowResolver.add(outputRR, inputRR, 0); + if (!RowResolver.add(outputRR, inputRR)) { + throw new OptiqSemanticException( + "Duplicates detected when adding columns to RR: see previous message"); + } } else { - RowResolver.add(outputRR, obSyntheticProjectRR, 0); + if (!RowResolver.add(outputRR, obSyntheticProjectRR)) { + throw new OptiqSemanticException( + "Duplicates detected when adding columns to RR: see previous message"); + } originalOBChild = srcRel; } } else { - RowResolver.add(outputRR, inputRR, 0); + if (!RowResolver.add(outputRR, inputRR)) { + throw new OptiqSemanticException( + "Duplicates detected when adding columns to RR: see previous message"); + } } // 4. Construct SortRel @@ -13559,7 +13581,10 @@ private RelNode genLimitLogicalPlan(QB qb, RelNode srcRel) throws SemanticExcept sortRel = new HiveSortRel(cluster, traitSet, srcRel, canonizedCollation, null, fetch); RowResolver outputRR = new RowResolver(); - RowResolver.add(outputRR, relToHiveRR.get(srcRel), 0); + if (!RowResolver.add(outputRR, relToHiveRR.get(srcRel))) { + throw new OptiqSemanticException( + "Duplicates detected when adding columns to RR: see previous message"); + } ImmutableMap hiveColNameOptiqPosMap = buildHiveToOptiqColumnMap(outputRR, sortRel); relToHiveRR.put(sortRel, outputRR); @@ -13739,7 +13764,9 @@ private RelNode genSelectForWindowing( // 3. Construct new Row Resolver with everything from below. RowResolver out_rwsch = new RowResolver(); - RowResolver.add(out_rwsch, inputRR, 0); + if (!RowResolver.add(out_rwsch, inputRR)) { + LOG.warn("Duplicates detected when adding columns to RR: see previous message"); + } // 4. Walk through Window Expressions & Construct RexNodes for those, // Update out_rwsch @@ -13863,6 +13890,7 @@ private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel) throws SemanticExcep QBParseInfo qbp = getQBParseInfo(qb); String selClauseName = qbp.getClauseNames().iterator().next(); ASTNode selExprList = qbp.getSelForClause(selClauseName); + LOG.error("TODO# for select clause, got " + selExprList.dump()); // 2.Row resolvers for input, output RowResolver out_rwsch = new RowResolver(); @@ -13944,7 +13972,7 @@ private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel) throws SemanticExcep pos = genColListRegex(".*", expr.getChildCount() == 0 ? null : getUnescapedName((ASTNode) expr.getChild(0)) .toLowerCase(), expr, col_list, excludedColumns, inputRR, pos, out_rwsch, - tabAliasesForAllProjs); + tabAliasesForAllProjs, true); selectStar = true; } else if (expr.getType() == HiveParser.TOK_TABLE_OR_COL && !hasAsClause && !inputRR.getIsExprResolver() @@ -13953,7 +13981,7 @@ && isRegex(unescapeIdentifier(expr.getChild(0).getText()), conf)) { // This can only happen without AS clause // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(0).getText()), null, expr, - col_list, excludedColumns, inputRR, pos, out_rwsch, tabAliasesForAllProjs); + col_list, excludedColumns, inputRR, pos, out_rwsch, tabAliasesForAllProjs, true); } else if (expr.getType() == HiveParser.DOT && expr.getChild(0).getType() == HiveParser.TOK_TABLE_OR_COL && inputRR.hasTableAlias(unescapeIdentifier(expr.getChild(0).getChild(0).getText() @@ -13964,7 +13992,7 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(1).getText()), unescapeIdentifier(expr.getChild(0).getChild(0).getText().toLowerCase()), expr, - col_list, excludedColumns, inputRR, pos, out_rwsch, tabAliasesForAllProjs); + col_list, excludedColumns, inputRR, pos, out_rwsch, tabAliasesForAllProjs, true); } else if (expr.toStringTree().contains("TOK_FUNCTIONDI") && !(srcRel instanceof HiveAggregateRel)) { // Likely a malformed query eg, select hash(distinct c1) from t1; throw new OptiqSemanticException("Distinct without an aggreggation."); @@ -14136,7 +14164,10 @@ public RexNode apply(RelDataTypeField input) { } }); RowResolver topConstrainingProjRR = new RowResolver(); - RowResolver.add(topConstrainingProjRR, this.relToHiveRR.get(topConstrainingProjArgsRel), 0); + if (!RowResolver.add( + topConstrainingProjRR, this.relToHiveRR.get(topConstrainingProjArgsRel))) { + LOG.warn("Duplicates detected when adding columns to RR: see previous message"); + } srcRel = genSelectRelNode(originalInputRefs, topConstrainingProjRR, srcRel); } @@ -14290,7 +14321,7 @@ private QBParseInfo getQBParseInfo(QB qb) throws OptiqSemanticException { } private List getTabAliases(RowResolver inputRR) { - List tabAliases = new ArrayList(); + List tabAliases = new ArrayList(); // TODO: this should be unique for (ColumnInfo ci : inputRR.getColumnInfos()) { tabAliases.add(ci.getTabAlias()); } diff --git a/ql/src/test/queries/clientpositive/cbo_correctness.q b/ql/src/test/queries/clientpositive/cbo_correctness.q index 4d8f156787ef..4e44ba15b10b 100644 --- a/ql/src/test/queries/clientpositive/cbo_correctness.q +++ b/ql/src/test/queries/clientpositive/cbo_correctness.q @@ -251,7 +251,7 @@ drop view v3; drop view v4; -- 11. Union All -select * from t1 union all select * from t2 order by key; +select * from t1 union all select * from t2 order by key, c_boolean, value, dt; select key from (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r2 where key >=0 order by key; select r2.key from (select key, c_int from (select key, c_int from t1 union all select key, c_int from t3 )r1 union all select key, c_int from t3)r2 join (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r3 on r2.key=r3.key where r3.key >=0 order by r2.key; @@ -281,7 +281,7 @@ from src_cbo where src_cbo.key not in ( select key from src_cbo s1 where s1.key > '2' - ) + ) order by key ; -- non agg, corr diff --git a/ql/src/test/queries/clientpositive/select_same_col.q b/ql/src/test/queries/clientpositive/select_same_col.q new file mode 100644 index 000000000000..d6902c2473fb --- /dev/null +++ b/ql/src/test/queries/clientpositive/select_same_col.q @@ -0,0 +1,19 @@ + +set hive.cbo.enable=true; + +drop table srclimit; +create table srclimit as select * from src limit 10; + +select cast(value as binary), value from srclimit; + +select cast(value as binary), value from srclimit order by value; + +select cast(value as binary), value from srclimit order by value limit 5; + +select cast(value as binary), value, key from srclimit order by value limit 5; + +select *, key, value from srclimit; + +select * from (select *, key, value from srclimit) t; + +drop table srclimit; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/cbo_correctness.q.out b/ql/src/test/results/clientpositive/cbo_correctness.q.out index 7c25e1f1c1a6..d98cb5b95e1f 100644 --- a/ql/src/test/results/clientpositive/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/cbo_correctness.q.out @@ -16719,7 +16719,7 @@ POSTHOOK: type: DROPVIEW POSTHOOK: Input: default@v4 POSTHOOK: Output: default@v4 PREHOOK: query: -- 11. Union All -select * from t1 union all select * from t2 order by key +select * from t1 union all select * from t2 order by key, c_boolean, value, dt PREHOOK: type: QUERY PREHOOK: Input: default@t1 PREHOOK: Input: default@t1@dt=2014 @@ -16727,7 +16727,7 @@ PREHOOK: Input: default@t2 PREHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### POSTHOOK: query: -- 11. Union All -select * from t1 union all select * from t2 order by key +select * from t1 union all select * from t2 order by key, c_boolean, value, dt POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t1@dt=2014 @@ -16738,13 +16738,13 @@ POSTHOOK: Input: default@t2@dt=2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 1 1 1 1.0 false 2014 -1 1 1 1.0 true 2014 1 1 1 1.0 false 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 2 2 2 2.0 true 2014 @@ -18142,7 +18142,7 @@ from src_cbo where src_cbo.key not in ( select key from src_cbo s1 where s1.key > '2' - ) + ) order by key PREHOOK: type: QUERY PREHOOK: Input: default@src_cbo #### A masked pattern was here #### @@ -18153,7 +18153,7 @@ from src_cbo where src_cbo.key not in ( select key from src_cbo s1 where s1.key > '2' - ) + ) order by key POSTHOOK: type: QUERY POSTHOOK: Input: default@src_cbo #### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/select_same_col.q.out b/ql/src/test/results/clientpositive/select_same_col.q.out new file mode 100644 index 000000000000..426f7167c722 --- /dev/null +++ b/ql/src/test/results/clientpositive/select_same_col.q.out @@ -0,0 +1,120 @@ +PREHOOK: query: drop table srclimit +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table srclimit +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table srclimit as select * from src limit 10 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@src +PREHOOK: Output: database:default +PREHOOK: Output: default@srclimit +POSTHOOK: query: create table srclimit as select * from src limit 10 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@src +POSTHOOK: Output: database:default +POSTHOOK: Output: default@srclimit +PREHOOK: query: select cast(value as binary), value from srclimit +PREHOOK: type: QUERY +PREHOOK: Input: default@srclimit +#### A masked pattern was here #### +POSTHOOK: query: select cast(value as binary), value from srclimit +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srclimit +#### A masked pattern was here #### +val_484 val_484 +val_98 val_98 +val_278 val_278 +val_255 val_255 +val_409 val_409 +val_165 val_165 +val_27 val_27 +val_311 val_311 +val_86 val_86 +val_238 val_238 +PREHOOK: query: select cast(value as binary), value from srclimit order by value +PREHOOK: type: QUERY +PREHOOK: Input: default@srclimit +#### A masked pattern was here #### +POSTHOOK: query: select cast(value as binary), value from srclimit order by value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srclimit +#### A masked pattern was here #### +val_165 val_165 +val_238 val_238 +val_255 val_255 +val_27 val_27 +val_278 val_278 +val_311 val_311 +val_409 val_409 +val_484 val_484 +val_86 val_86 +val_98 val_98 +PREHOOK: query: select cast(value as binary), value from srclimit order by value limit 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@srclimit +#### A masked pattern was here #### +POSTHOOK: query: select cast(value as binary), value from srclimit order by value limit 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srclimit +#### A masked pattern was here #### +val_165 val_165 +val_238 val_238 +val_255 val_255 +val_27 val_27 +val_278 val_278 +PREHOOK: query: select cast(value as binary), value, key from srclimit order by value limit 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@srclimit +#### A masked pattern was here #### +POSTHOOK: query: select cast(value as binary), value, key from srclimit order by value limit 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srclimit +#### A masked pattern was here #### +val_165 val_165 165 +val_238 val_238 238 +val_255 val_255 255 +val_27 val_27 27 +val_278 val_278 278 +PREHOOK: query: select *, key, value from srclimit +PREHOOK: type: QUERY +PREHOOK: Input: default@srclimit +#### A masked pattern was here #### +POSTHOOK: query: select *, key, value from srclimit +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srclimit +#### A masked pattern was here #### +484 val_484 484 val_484 +98 val_98 98 val_98 +278 val_278 278 val_278 +255 val_255 255 val_255 +409 val_409 409 val_409 +165 val_165 165 val_165 +27 val_27 27 val_27 +311 val_311 311 val_311 +86 val_86 86 val_86 +238 val_238 238 val_238 +PREHOOK: query: select * from (select *, key, value from srclimit) t +PREHOOK: type: QUERY +PREHOOK: Input: default@srclimit +#### A masked pattern was here #### +POSTHOOK: query: select * from (select *, key, value from srclimit) t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srclimit +#### A masked pattern was here #### +484 val_484 484 val_484 +98 val_98 98 val_98 +278 val_278 278 val_278 +255 val_255 255 val_255 +409 val_409 409 val_409 +165 val_165 165 val_165 +27 val_27 27 val_27 +311 val_311 311 val_311 +86 val_86 86 val_86 +238 val_238 238 val_238 +PREHOOK: query: drop table srclimit +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@srclimit +PREHOOK: Output: default@srclimit +POSTHOOK: query: drop table srclimit +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@srclimit +POSTHOOK: Output: default@srclimit diff --git a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out index e467773bf99b..d98cb5b95e1f 100644 --- a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out @@ -16719,7 +16719,7 @@ POSTHOOK: type: DROPVIEW POSTHOOK: Input: default@v4 POSTHOOK: Output: default@v4 PREHOOK: query: -- 11. Union All -select * from t1 union all select * from t2 order by key +select * from t1 union all select * from t2 order by key, c_boolean, value, dt PREHOOK: type: QUERY PREHOOK: Input: default@t1 PREHOOK: Input: default@t1@dt=2014 @@ -16727,41 +16727,21 @@ PREHOOK: Input: default@t2 PREHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### POSTHOOK: query: -- 11. Union All -select * from t1 union all select * from t2 order by key +select * from t1 union all select * from t2 order by key, c_boolean, value, dt POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t1@dt=2014 POSTHOOK: Input: default@t2 POSTHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 1 1 1 1.0 false 2014 1 1 1 1.0 false 2014 -null null NULL NULL NULL 2014 -null null NULL NULL NULL 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 -1 1 1 1.0 false 2014 1 1 1 1.0 true 2014 -1 1 1 1.0 false 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 @@ -16774,6 +16754,26 @@ null null NULL NULL NULL 2014 2 2 2 2.0 true 2014 null null NULL NULL NULL 2014 null null NULL NULL NULL 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 false 2014 +1 1 1 1.0 false 2014 +null null NULL NULL NULL 2014 +null null NULL NULL NULL 2014 PREHOOK: query: select key from (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r2 where key >=0 order by key PREHOOK: type: QUERY PREHOOK: Input: default@t1 @@ -18142,7 +18142,7 @@ from src_cbo where src_cbo.key not in ( select key from src_cbo s1 where s1.key > '2' - ) + ) order by key PREHOOK: type: QUERY PREHOOK: Input: default@src_cbo #### A masked pattern was here #### @@ -18153,129 +18153,129 @@ from src_cbo where src_cbo.key not in ( select key from src_cbo s1 where s1.key > '2' - ) + ) order by key POSTHOOK: type: QUERY POSTHOOK: Input: default@src_cbo #### A masked pattern was here #### -2 val_2 -199 val_199 -199 val_199 -199 val_199 -197 val_197 -197 val_197 -196 val_196 -195 val_195 -195 val_195 -194 val_194 -193 val_193 -193 val_193 -193 val_193 -192 val_192 -191 val_191 -191 val_191 -190 val_190 -19 val_19 -189 val_189 -187 val_187 -187 val_187 -187 val_187 -186 val_186 -183 val_183 -181 val_181 -180 val_180 -18 val_18 -18 val_18 -179 val_179 -179 val_179 -178 val_178 -177 val_177 -176 val_176 -176 val_176 -175 val_175 -175 val_175 -174 val_174 -174 val_174 -172 val_172 -172 val_172 -170 val_170 -17 val_17 -169 val_169 -169 val_169 -169 val_169 -169 val_169 -168 val_168 -167 val_167 -167 val_167 -167 val_167 -166 val_166 -165 val_165 -165 val_165 -164 val_164 -164 val_164 -163 val_163 -162 val_162 -160 val_160 -158 val_158 -157 val_157 -156 val_156 -155 val_155 -153 val_153 -152 val_152 -152 val_152 -150 val_150 -15 val_15 -15 val_15 -149 val_149 -149 val_149 -146 val_146 -146 val_146 -145 val_145 -143 val_143 +0 val_0 +0 val_0 +0 val_0 +10 val_10 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +11 val_11 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +12 val_12 +12 val_12 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 138 val_138 138 val_138 138 val_138 138 val_138 -137 val_137 -137 val_137 -136 val_136 -134 val_134 -134 val_134 -133 val_133 -131 val_131 -129 val_129 -129 val_129 -128 val_128 -128 val_128 -128 val_128 -126 val_126 -125 val_125 -125 val_125 -120 val_120 -120 val_120 -12 val_12 -12 val_12 -119 val_119 -119 val_119 -119 val_119 -118 val_118 -118 val_118 -116 val_116 -114 val_114 -113 val_113 -113 val_113 -111 val_111 -11 val_11 -105 val_105 -104 val_104 -104 val_104 -103 val_103 -103 val_103 -100 val_100 -100 val_100 -10 val_10 -0 val_0 -0 val_0 -0 val_0 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +15 val_15 +15 val_15 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +17 val_17 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +18 val_18 +18 val_18 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +19 val_19 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +2 val_2 PREHOOK: query: -- non agg, corr select p_mfgr, b.p_name, p_size from part b From ed530c16ba9661e78163a7b50e546eef396828c4 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 25 Oct 2014 05:13:52 +0000 Subject: [PATCH 171/339] HIVE-8589: TPCDS query 75 fails with tez (Vikram Dixit K via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634178 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java | 1 - ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java index 438d70a3cadb..bedc3acb756e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java @@ -647,7 +647,6 @@ private boolean hasDynamicPartitionBroadcast(Operator parent) { hasDynamicPartitionPruning = true; break; } - if (op instanceof ReduceSinkOperator || op instanceof FileSinkOperator) { // crossing reduce sink or file sink means the pruning isn't for this parent. break; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java index 2c0585542b69..364e8c9f1d10 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java @@ -347,7 +347,8 @@ public Object process(Node nd, Stack stack, followingWork = mergeJoinWork; rWork = (ReduceWork) mergeJoinWork.getMainWork(); } else { - rWork = (ReduceWork) baseWork; + throw new SemanticException("Unknown work type found: " + + baseWork.getClass().getCanonicalName()); } } else { rWork = (ReduceWork) followingWork; @@ -402,6 +403,8 @@ private int getMergeIndex(TezWork tezWork, UnionWork unionWork, ReduceSinkOperat } else { index++; } + } else { + index++; } } From c2ec15879a43504b5a165799f541b1e3a7024ba6 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 25 Oct 2014 07:41:09 +0000 Subject: [PATCH 172/339] HIVE-8603: auto_sortmerge_join_5 is getting stuck on tez (Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634191 13f79535-47bb-0310-9956-ffa450edef68 --- itests/src/test/resources/testconfiguration.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 9b5845b706fa..36dc95a9d1d8 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -223,7 +223,6 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ auto_sortmerge_join_2.q,\ auto_sortmerge_join_3.q,\ auto_sortmerge_join_4.q,\ - auto_sortmerge_join_5.q,\ auto_sortmerge_join_7.q,\ auto_sortmerge_join_8.q,\ auto_sortmerge_join_9.q From 728e99fbe3b98abd7e5cb8d149807b1605bd0ed0 Mon Sep 17 00:00:00 2001 From: Eugene Koifman Date: Sat, 25 Oct 2014 19:21:33 +0000 Subject: [PATCH 173/339] HIVE-8588 sqoop REST endpoint fails to send appropriate JDBC driver to the cluster git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634245 13f79535-47bb-0310-9956-ffa450edef68 --- hcatalog/src/test/e2e/templeton/README.txt | 5 +- .../templeton/deployers/clean_file_system.sh | 2 +- .../deployers/config/webhcat/webhcat-site.xml | 14 ++++- .../deployers/deploy_e2e_artifacts.sh | 7 ++- .../src/test/e2e/templeton/deployers/env.sh | 3 +- .../e2e/templeton/tests/jobsubmission.conf | 8 +-- .../hive/hcatalog/templeton/AppConfig.java | 2 + .../hive/hcatalog/templeton/JarDelegator.java | 3 ++ .../hcatalog/templeton/LauncherDelegator.java | 3 ++ .../hive/hcatalog/templeton/Server.java | 7 ++- .../hcatalog/templeton/SqoopDelegator.java | 54 +++++++++++++++---- .../tool/JobSubmissionConstants.java | 6 +++ .../hcatalog/templeton/tool/LaunchMapper.java | 21 ++++++++ .../templeton/tool/TempletonUtils.java | 28 +++++++++- 14 files changed, 136 insertions(+), 27 deletions(-) diff --git a/hcatalog/src/test/e2e/templeton/README.txt b/hcatalog/src/test/e2e/templeton/README.txt index bf2843c48716..d272985d1642 100644 --- a/hcatalog/src/test/e2e/templeton/README.txt +++ b/hcatalog/src/test/e2e/templeton/README.txt @@ -101,7 +101,7 @@ For Hadoop 2.x you would need to upload hadoop-mapreduce-client-jobclient.jar to Also see https://cwiki.apache.org/confluence/display/Hive/WebHCat+InstallWebHCat#WebHCatInstallWebHCat-HadoopDistributedCache for notes on additional JAR files to copy to HDFS. -5. Make sure TEMPLETON_HOME evnironment variable is set +5. Make sure TEMPLETON_HOME environment variable is set 6. hadoop/conf/core-site.xml should have items described in https://cwiki.apache.org/confluence/display/Hive/WebHCat+InstallWebHCat#WebHCatInstallWebHCat-Permissions @@ -124,6 +124,9 @@ You may also need to adjust the following in Pig's build.xml as needed: true +8.Sqoop test require JDBC jar to be placed on HDFS for whichever DB the test is configured with, +for example mysql-connector-java-5.1.30-bin.jar. + **** **** See deployers/ for scripts that automate a lot of the set up. **** diff --git a/hcatalog/src/test/e2e/templeton/deployers/clean_file_system.sh b/hcatalog/src/test/e2e/templeton/deployers/clean_file_system.sh index be3bbf5b415c..d1fd613394a7 100755 --- a/hcatalog/src/test/e2e/templeton/deployers/clean_file_system.sh +++ b/hcatalog/src/test/e2e/templeton/deployers/clean_file_system.sh @@ -28,6 +28,6 @@ echo "Deleting artifacts from HDFS..." ${HADOOP_HOME}/bin/hdfs dfs -rm -r /user/hive/ /user/${USER}/ /user/templeton /apps /tmp /sqoopoutputdir -${HADOOP_HOME}/bin/hdfs dfs -mkdir -p /tmp/hadoop-${USER} /user/hive/warehouse /user/${USER}/ /user/templeton /apps/templeton /tmp/hadoop-yarn /tmp/templeton_test_out +${HADOOP_HOME}/bin/hdfs dfs -mkdir -p /tmp/hadoop-${USER} /user/hive/warehouse /user/${USER}/ /user/templeton /apps/templeton/jdbc /tmp/hadoop-yarn /tmp/templeton_test_out ${HADOOP_HOME}/bin/hdfs dfs -chmod -R a+rwx /user /tmp/ ${HADOOP_HOME}/bin/hdfs dfs -chmod g+rwx /user/hive/warehouse diff --git a/hcatalog/src/test/e2e/templeton/deployers/config/webhcat/webhcat-site.xml b/hcatalog/src/test/e2e/templeton/deployers/config/webhcat/webhcat-site.xml index d8a5df1d546a..89845032ec27 100644 --- a/hcatalog/src/test/e2e/templeton/deployers/config/webhcat/webhcat-site.xml +++ b/hcatalog/src/test/e2e/templeton/deployers/config/webhcat/webhcat-site.xml @@ -77,11 +77,23 @@ shipped to the target node in the cluster to execute Pig job which uses HCat, Hive query, etc. + + templeton.sqoop.archive + hdfs:///apps/templeton/sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz + This should point to Sqoop tar that will be shipped to target node executing + the actual sqoop command. If not set, Sqoop is expected to be installed on every node of the + cluster. + templeton.sqoop.path - ${env.SQOOP_HOME}/bin/sqoop + sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz/sqoop-1.4.5.bin__hadoop-2.0.4-alpha/bin/sqoop The path to the Sqoop executable. + + templeton.sqoop.home + sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz/sqoop-1.4.5.bin__hadoop-2.0.4-alpha + The path to the Sqoop home in the exploded archive. + templeton.controller.mr.child.opts diff --git a/hcatalog/src/test/e2e/templeton/deployers/deploy_e2e_artifacts.sh b/hcatalog/src/test/e2e/templeton/deployers/deploy_e2e_artifacts.sh index 29c3f3e68df1..8a4621f0851a 100755 --- a/hcatalog/src/test/e2e/templeton/deployers/deploy_e2e_artifacts.sh +++ b/hcatalog/src/test/e2e/templeton/deployers/deploy_e2e_artifacts.sh @@ -35,7 +35,6 @@ ${HADOOP_HOME}/bin/hdfs dfs -put ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-ma ${HADOOP_HOME}/bin/hdfs dfs -put ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-${HADOOP_VERSION}.jar webhcate2e/hclient.jar ${HADOOP_HOME}/bin/hdfs dfs -put ${HADOOP_HOME}/share/hadoop/tools/lib/hadoop-streaming-${HADOOP_VERSION}.jar /user/templeton/hadoop-streaming.jar - #must match config/webhcat/webhcat-stie.xml ${HADOOP_HOME}/bin/hdfs dfs -put ${PROJ_HOME}/packaging/target/apache-hive-${HIVE_VERSION}-bin.tar.gz /apps/templeton/apache-hive-${HIVE_VERSION}-bin.tar.gz # To run against Hadoop2 cluster, you have to build Pig tar yourself with @@ -47,7 +46,7 @@ ${HADOOP_HOME}/bin/hadoop fs -put ${PIG_PIGGYBANK_PATH} webhcate2e/ #${HADOOP_HOME}/bin/hadoop fs -put /Users/ekoifman/dev/data/jarsForTmplte2e/pig-0.12.0/contrib/piggybank/java/piggybank.jar webhcate2e/ -${HADOOP_HOME}/bin/hadoop fs -put ${HIVE_HOME}/lib/zookeeper-3.4.5.jar /apps/templeton/zookeeper-3.4.5.jar - +${HADOOP_HOME}/bin/hadoop fs -put /Users/ekoifman/dev/sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz /apps/templeton/sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz +${HADOOP_HOME}/bin/hadoop fs -put /Users/ekoifman/dev/mysql-connector-java-5.1.30/mysql-connector-java-5.1.30-bin.jar /apps/templeton/jdbc/mysql-connector-java.jar #check what got deployed -${HADOOP_HOME}/bin/hdfs dfs -ls /apps/templeton webhcate2e /user/templeton /user/hive/warehouse +${HADOOP_HOME}/bin/hdfs dfs -ls -R /apps/templeton webhcate2e /user/templeton /user/hive/warehouse diff --git a/hcatalog/src/test/e2e/templeton/deployers/env.sh b/hcatalog/src/test/e2e/templeton/deployers/env.sh index d66dd94d1bb6..4a5f286c096f 100755 --- a/hcatalog/src/test/e2e/templeton/deployers/env.sh +++ b/hcatalog/src/test/e2e/templeton/deployers/env.sh @@ -23,14 +23,13 @@ # define necessary env vars here and source it in other files export HADOOP_VERSION=2.4.1-SNAPSHOT -export HIVE_VERSION=0.14.0-SNAPSHOT +#export HIVE_VERSION=0.14.0-SNAPSHOT export PIG_VERSION=0.12.2-SNAPSHOT #Root of project source tree export PROJ_HOME=/Users/${USER}/dev/hive export HIVE_HOME=${PROJ_HOME}/packaging/target/apache-hive-${HIVE_VERSION}-bin/apache-hive-${HIVE_VERSION}-bin export HADOOP_HOME=/Users/${USER}/dev/hwxhadoop/hadoop-dist/target/hadoop-${HADOOP_VERSION} -export SQOOP_HOME=/Users/${USER}/dev/sqoop-1.4.4.bin__hadoop-2.0.4-alpha #Make sure Pig is built for the Hadoop version you are running export PIG_TAR_PATH=/Users/${USER}/dev/pig-${PIG_VERSION}-src/build diff --git a/hcatalog/src/test/e2e/templeton/tests/jobsubmission.conf b/hcatalog/src/test/e2e/templeton/tests/jobsubmission.conf index 0fcc95c41562..f04ea31782c4 100644 --- a/hcatalog/src/test/e2e/templeton/tests/jobsubmission.conf +++ b/hcatalog/src/test/e2e/templeton/tests/jobsubmission.conf @@ -524,7 +524,7 @@ $cfg = 'num' => 1, 'method' => 'POST', 'url' => ':TEMPLETON_URL:/templeton/v1/sqoop?user.name=:UNAME:', - 'post_options' => ['command=export --connect :DB_CONNECTION_STRING: --username :DB_USER_NAME: --password :DB_PASSWORD: --export-dir :INPDIR_HDFS:/sqoop --table person','statusdir=sqoop.output' ], + 'post_options' => ['libdir=hdfs:///apps/templeton/jdbc', 'command=export --connect :DB_CONNECTION_STRING: --username :DB_USER_NAME: --password :DB_PASSWORD: --export-dir :INPDIR_HDFS:/sqoop --table person','statusdir=TestSqoop_:TNUM:' ], 'json_field_substr_match' => { 'id' => '\d+'}, #results 'status_code' => 200, @@ -539,7 +539,7 @@ $cfg = 'num' => 2, 'method' => 'POST', 'url' => ':TEMPLETON_URL:/templeton/v1/sqoop?user.name=:UNAME:', - 'post_options' => ['files=:INPDIR_HDFS:/sqoopcommand.txt','command=import --connect :DB_CONNECTION_STRING: --username :DB_USER_NAME: --password :DB_PASSWORD: --options-file sqoopcommand.txt','statusdir=sqoop.output' ], + 'post_options' => ['libdir=hdfs:///apps/templeton/jdbc', 'files=:INPDIR_HDFS:/sqoopcommand.txt','command=import --connect :DB_CONNECTION_STRING: --username :DB_USER_NAME: --password :DB_PASSWORD: --options-file sqoopcommand.txt','statusdir=TestSqoop_:TNUM:' ], 'json_field_substr_match' => { 'id' => '\d+'}, #results 'status_code' => 200, @@ -554,7 +554,7 @@ $cfg = 'num' => 3, 'method' => 'POST', 'url' => ':TEMPLETON_URL:/templeton/v1/sqoop?user.name=:UNAME:', - 'post_options' => ['files=:INPDIR_HDFS:/sqoopcommand.txt','statusdir=sqoop.output' ], + 'post_options' => ['files=:INPDIR_HDFS:/sqoopcommand.txt','statusdir=TestSqoop_:TNUM:' ], 'json_field_substr_match' => { 'error' => 'Must define Sqoop command or a optionsfile contains Sqoop command to run Sqoop job.'}, #results 'status_code' => 400, @@ -564,7 +564,7 @@ $cfg = 'num' => 4, 'method' => 'POST', 'url' => ':TEMPLETON_URL:/templeton/v1/sqoop?user.name=:UNAME:', - 'post_options' => ['optionsfile=:INPDIR_HDFS:/sqoopcommand.txt','command=import --connect :DB_CONNECTION_STRING: --username :DB_USER_NAME: --password :DB_PASSWORD: --options-file sqoopcommand.txt','statusdir=sqoop.output' ], + 'post_options' => ['optionsfile=:INPDIR_HDFS:/sqoopcommand.txt','command=import --connect :DB_CONNECTION_STRING: --username :DB_USER_NAME: --password :DB_PASSWORD: --options-file sqoopcommand.txt','statusdir=TestSqoop_:TNUM:' ], 'json_field_substr_match' => { 'error' => 'Cannot set command and optionsfile at the same time.'}, #results 'status_code' => 400, diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/AppConfig.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/AppConfig.java index 034208088f83..77952bef4912 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/AppConfig.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/AppConfig.java @@ -119,6 +119,7 @@ public class AppConfig extends Configuration { public static final String HIVE_PROPS_NAME = "templeton.hive.properties"; public static final String SQOOP_ARCHIVE_NAME = "templeton.sqoop.archive"; public static final String SQOOP_PATH_NAME = "templeton.sqoop.path"; + public static final String SQOOP_HOME_PATH = "templeton.sqoop.home"; public static final String LIB_JARS_NAME = "templeton.libjars"; public static final String PIG_ARCHIVE_NAME = "templeton.pig.archive"; public static final String PIG_PATH_NAME = "templeton.pig.path"; @@ -297,6 +298,7 @@ private boolean loadOneClasspathConfig(String fname) { public String hiveArchive() { return get(HIVE_ARCHIVE_NAME); } public String sqoopPath() { return get(SQOOP_PATH_NAME); } public String sqoopArchive() { return get(SQOOP_ARCHIVE_NAME); } + public String sqoopHome() { return get(SQOOP_HOME_PATH); } public String streamingJar() { return get(STREAMING_JAR_NAME); } public String kerberosSecret() { return get(KERBEROS_SECRET); } public String kerberosPrincipal(){ return get(KERBEROS_PRINCIPAL); } diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/JarDelegator.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/JarDelegator.java index ebe117911786..e5832a876650 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/JarDelegator.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/JarDelegator.java @@ -85,6 +85,9 @@ private List makeArgs(String jar, String mainClass, if (TempletonUtils.isset(libjars)) { String libjarsListAsString = TempletonUtils.hadoopFsListAsString(libjars, appConf, runAs); + //This will work only if the files are local files on webhcat server + // (which is not very useful since users might not have access to that file system). + //This is likely the HIVE-5188 issue args.add("-libjars"); args.add(TempletonUtils.quoteForWindows(libjarsListAsString)); } diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/LauncherDelegator.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/LauncherDelegator.java index c7e92cf6400f..71a310700996 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/LauncherDelegator.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/LauncherDelegator.java @@ -121,6 +121,8 @@ public List makeLauncherArgs(AppConfig appConf, String statusdir, JobType jobType) { ArrayList args = new ArrayList(); + //note that in ToolRunner this is expected to be a local FS path + //see GenericOptionsParser.getLibJars() args.add("-libjars"); // Include shim and admin specified libjars @@ -136,6 +138,7 @@ public List makeLauncherArgs(AppConfig appConf, String statusdir, // Internal vars addDef(args, TempletonControllerJob.STATUSDIR_NAME, statusdir); + //Use of ToolRunner "-files" option could be considered here addDef(args, TempletonControllerJob.COPY_NAME, TempletonUtils.encodeArray(copyFiles)); addDef(args, TempletonControllerJob.OVERRIDE_CLASSPATH, diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/Server.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/Server.java index 9b18a4c196ea..a28e04d7fcad 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/Server.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/Server.java @@ -778,6 +778,7 @@ public EnqueueBean pig(@FormParam("execute") String execute, * @param optionsFile name of option file which contains Sqoop command to run * @param otherFiles additional files to be shipped to the launcher, such as option files which contain part of the Sqoop command + * @param libdir dir containing JDBC jars that Sqoop will need to interact with the database * @param statusdir where the stderr/stdout of templeton controller job goes * @param callback URL which WebHCat will call when the sqoop job finishes * @param enablelog whether to collect mapreduce log into statusdir/logs @@ -787,12 +788,13 @@ public EnqueueBean pig(@FormParam("execute") String execute, @Produces({MediaType.APPLICATION_JSON}) public EnqueueBean sqoop(@FormParam("command") String command, @FormParam("optionsfile") String optionsFile, + @FormParam("libdir") String libdir, @FormParam("files") String otherFiles, @FormParam("statusdir") String statusdir, @FormParam("callback") String callback, @FormParam("enablelog") boolean enablelog) throws NotAuthorizedException, BusyException, BadParam, QueueException, - ExecuteException, IOException, InterruptedException { + IOException, InterruptedException { verifyUser(); if (command == null && optionsFile == null) throw new BadParam("Must define Sqoop command or a optionsfile contains Sqoop command to run Sqoop job."); @@ -805,13 +807,14 @@ public EnqueueBean sqoop(@FormParam("command") String command, userArgs.put("user.name", getDoAsUser()); userArgs.put("command", command); userArgs.put("optionsfile", optionsFile); + userArgs.put("libdir", libdir); userArgs.put("files", otherFiles); userArgs.put("statusdir", statusdir); userArgs.put("callback", callback); userArgs.put("enablelog", Boolean.toString(enablelog)); SqoopDelegator d = new SqoopDelegator(appConf); return d.run(getDoAsUser(), userArgs, command, optionsFile, otherFiles, - statusdir, callback, getCompletedUrl(), enablelog); + statusdir, callback, getCompletedUrl(), enablelog, libdir); } /** diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SqoopDelegator.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SqoopDelegator.java index 24b45efced5c..292f69585e1c 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SqoopDelegator.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SqoopDelegator.java @@ -25,7 +25,10 @@ import java.util.List; import java.util.Map; -import org.apache.commons.exec.ExecuteException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.fs.Path; +import org.apache.hive.hcatalog.templeton.tool.JobSubmissionConstants; import org.apache.hive.hcatalog.templeton.tool.TempletonControllerJob; import org.apache.hive.hcatalog.templeton.tool.TempletonUtils; @@ -35,6 +38,7 @@ * This is the backend of the Sqoop web service. */ public class SqoopDelegator extends LauncherDelegator { + private static final Log LOG = LogFactory.getLog(SqoopDelegator.class); public SqoopDelegator(AppConfig appConf) { super(appConf); @@ -43,24 +47,29 @@ public SqoopDelegator(AppConfig appConf) { public EnqueueBean run(String user, Map userArgs, String command, String optionsFile, String otherFiles, String statusdir, - String callback, String completedUrl, boolean enablelog) + String callback, String completedUrl, boolean enablelog, String libdir) throws NotAuthorizedException, BadParam, BusyException, QueueException, - ExecuteException, IOException, InterruptedException + IOException, InterruptedException { + if(TempletonUtils.isset(appConf.sqoopArchive())) { + if(!TempletonUtils.isset(appConf.sqoopPath()) && !TempletonUtils.isset(appConf.sqoopHome())) { + throw new IllegalStateException("If '" + AppConfig.SQOOP_ARCHIVE_NAME + "' is defined, '" + + AppConfig.SQOOP_PATH_NAME + "' and '" + AppConfig.SQOOP_HOME_PATH + "' must be defined"); + } + } runAs = user; List args = makeArgs(command, optionsFile, otherFiles, statusdir, - completedUrl, enablelog); + completedUrl, enablelog, libdir); return enqueueController(user, userArgs, callback, args); } - - List makeArgs(String command, String optionsFile, String otherFiles, - String statusdir, String completedUrl, boolean enablelog) + private List makeArgs(String command, String optionsFile, String otherFiles, + String statusdir, String completedUrl, boolean enablelog, String libdir) throws BadParam, IOException, InterruptedException { ArrayList args = new ArrayList(); try { - args.addAll(makeBasicArgs(optionsFile, otherFiles, statusdir, completedUrl, enablelog)); + args.addAll(makeBasicArgs(optionsFile, otherFiles, statusdir, completedUrl, enablelog, libdir)); args.add("--"); TempletonUtils.addCmdForWindows(args); args.add(appConf.sqoopPath()); @@ -89,7 +98,7 @@ List makeArgs(String command, String optionsFile, String otherFiles, } private List makeBasicArgs(String optionsFile, String otherFiles, - String statusdir, String completedUrl, boolean enablelog) + String statusdir, String completedUrl, boolean enablelog, String libdir) throws URISyntaxException, FileNotFoundException, IOException, InterruptedException { @@ -101,9 +110,34 @@ private List makeBasicArgs(String optionsFile, String otherFiles, String[] ofs = TempletonUtils.hadoopFsListAsArray(otherFiles, appConf, runAs); allFiles.addAll(Arrays.asList(ofs)); } + if(TempletonUtils.isset(libdir) && TempletonUtils.isset(appConf.sqoopArchive())) { + /**Sqoop accesses databases via JDBC. This means it needs to have appropriate JDBC + drivers available. Normally, the user would install Sqoop and place these jars + into SQOOP_HOME/lib. When WebHCat is configured to auto-ship the Sqoop tar file, we + need to make sure that relevant JDBC jars are available on target node. + The user is expected to place any JDBC jars into an HDFS directory and specify this + dir in "libdir" parameter. All the files in this dir will be copied to lib/ of the + exploded Sqoop tar ball on target node. + {@link org.apache.hive.hcatalog.templeton.tool.LaunchMapper#handleSqoop(org.apache.hadoop.conf.Configuration, java.util.Map)} + */ + LOG.debug("libdir=" + libdir); + List jarList = TempletonUtils.hadoopFsListChildren(libdir, appConf, runAs); + if(TempletonUtils.isset(jarList)) { + StringBuilder sb = new StringBuilder(); + for(Path jar : jarList) { + allFiles.add(jar.toString()); + sb.append(jar.getName()).append(','); + } + sb.setLength(sb.length() - 1); + //we use the same mechanism to copy "files"/"otherFiles" and "libdir", but we only want to put + //contents of "libdir" in Sqoop/lib, thus we pass the list of names here + addDef(args, JobSubmissionConstants.Sqoop.LIB_JARS, sb.toString()); + addDef(args, AppConfig.SQOOP_HOME_PATH, appConf.get(AppConfig.SQOOP_HOME_PATH)); + } + } args.addAll(makeLauncherArgs(appConf, statusdir, completedUrl, allFiles, enablelog, JobType.SQOOP)); - if (appConf.sqoopArchive() != null && !appConf.sqoopArchive().equals("")) { + if(TempletonUtils.isset(appConf.sqoopArchive())) { args.add("-archives"); args.add(appConf.sqoopArchive()); } diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobSubmissionConstants.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobSubmissionConstants.java index ccf6107d7ea6..1252105c297c 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobSubmissionConstants.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobSubmissionConstants.java @@ -58,4 +58,10 @@ public static interface PigConstants { public static final String HCAT_HOME = "HCAT_HOME"; public static final String PIG_OPTS = "PIG_OPTS"; } + public static interface Sqoop { + /** + * comma-separated list of jar names (short name) which are needed for Sqoop JDBC access + */ + public static final String LIB_JARS = "templeton.sqoop.lib.jar"; + } } diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java index fb9d767f781f..557d1dac9ad0 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java @@ -18,6 +18,7 @@ */ package org.apache.hive.hcatalog.templeton.tool; +import com.google.common.io.Files; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; @@ -33,6 +34,7 @@ import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.Shell; import org.apache.hadoop.util.StringUtils; +import org.apache.hive.hcatalog.templeton.AppConfig; import org.apache.hive.hcatalog.templeton.BadParam; import org.apache.hive.hcatalog.templeton.LauncherDelegator; @@ -89,6 +91,24 @@ private static void handlePigEnvVars(Configuration conf, Map env env.put(PigConstants.PIG_OPTS, pigOpts.toString()); } } + + /** + * {@link #copyLocal(String, org.apache.hadoop.conf.Configuration)} should be called before this + * See {@link org.apache.hive.hcatalog.templeton.SqoopDelegator#makeBasicArgs(String, String, String, String, boolean, String)} + * for more comments + */ + private static void handleSqoop(Configuration conf, Map env) throws IOException { + if(TempletonUtils.isset(conf.get(Sqoop.LIB_JARS))) { + //LIB_JARS should only be set if Sqoop is auto-shipped + LOG.debug(Sqoop.LIB_JARS + "=" + conf.get(Sqoop.LIB_JARS)); + //copy these (which have now been localized) jars to sqoop/lib + String destDir = conf.get(AppConfig.SQOOP_HOME_PATH) + File.separator + "lib"; + String[] files = conf.getStrings(Sqoop.LIB_JARS); + for(String f : files) { + Files.copy(new File(f), new File(destDir + File.separator + f)); + } + } + } protected Process startJob(Context context, String user, String overrideClasspath) throws IOException, InterruptedException { Configuration conf = context.getConfiguration(); @@ -108,6 +128,7 @@ protected Process startJob(Context context, String user, String overrideClasspat removeEnv.add("mapredcommand"); Map env = TempletonUtils.hadoopUserEnv(user, overrideClasspath); handlePigEnvVars(conf, env); + handleSqoop(conf, env); List jarArgsList = new LinkedList(Arrays.asList(jarArgs)); handleTokenFile(jarArgsList, JobSubmissionConstants.TOKEN_FILE_ARG_PLACEHOLDER, "mapreduce.job.credentials.binary"); handleTokenFile(jarArgsList, JobSubmissionConstants.TOKEN_FILE_ARG_PLACEHOLDER_TEZ, "tez.credentials.path"); diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java index d2dec5488809..902d786d71bc 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java @@ -29,6 +29,7 @@ import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.List; @@ -39,8 +40,10 @@ import javax.ws.rs.core.UriBuilder; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.Shell; import org.apache.hadoop.util.StringUtils; @@ -210,6 +213,28 @@ public static String hadoopFsFilename(String fname, Configuration conf, String u return p.toString(); } + /** + * Returns all files (non-recursive) in {@code dirName} + */ + public static List hadoopFsListChildren(String dirName, Configuration conf, String user) + throws URISyntaxException, IOException, InterruptedException { + + Path p = hadoopFsPath(dirName, conf, user); + FileSystem fs = p.getFileSystem(conf); + if(!fs.exists(p)) { + return Collections.emptyList(); + } + List children = ShimLoader.getHadoopShims().listLocatedStatus(fs, p, null); + if(!isset(children)) { + return Collections.emptyList(); + } + List files = new ArrayList(); + for(FileStatus stat : children) { + files.add(stat.getPath()); + } + return files; + } + /** * @return true iff we are sure the file is not there. */ @@ -239,8 +264,7 @@ public static String addUserHomeDirectoryIfApplicable(String origPathStr, String } public static Path hadoopFsPath(String fname, final Configuration conf, String user) - throws URISyntaxException, IOException, - InterruptedException { + throws URISyntaxException, IOException, InterruptedException { if (fname == null || conf == null) { return null; } From 2a9c6615fa5e13ecdd6e271e124b598537592d3e Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Sun, 26 Oct 2014 23:53:48 +0000 Subject: [PATCH 174/339] HIVE-8596: HiveServer2 dynamic service discovery: ZK throws too many connections error (Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634409 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hive/jdbc/ZooKeeperHiveClientHelper.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java b/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java index 55524b3a1420..3e4f4e54c280 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java +++ b/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java @@ -59,9 +59,10 @@ static String getNextServerUriFromZooKeeper(JdbcConnectionParams connParams) List serverHosts; Random randomizer = new Random(); String serverNode; + ZooKeeper zooKeeperClient = null; // Pick a random HiveServer2 host from the ZooKeeper namspace try { - ZooKeeper zooKeeperClient = + zooKeeperClient = new ZooKeeper(zooKeeperEnsemble, JdbcConnectionParams.ZOOKEEPER_SESSION_TIMEOUT, new ZooKeeperHiveClientHelper.DummyWatcher()); // All the HiveServer2 host nodes that are in ZooKeeper currently @@ -83,7 +84,15 @@ static String getNextServerUriFromZooKeeper(JdbcConnectionParams connParams) return serverUri; } catch (Exception e) { throw new ZooKeeperHiveClientException("Unable to read HiveServer2 uri from ZooKeeper", e); + } finally { + // Try to close the client connection with ZooKeeper + if (zooKeeperClient != null) { + try { + zooKeeperClient.close(); + } catch (Exception e) { + // No-op + } + } } } - } From 6fab5f29183b55f48bf4e72a8cef818cfe0afc4d Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Mon, 27 Oct 2014 18:07:57 +0000 Subject: [PATCH 175/339] HIVE-8566: Vectorized queries output wrong timestamps (Matt McCline reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634630 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/io/orc/RecordReaderImpl.java | 42 ++++--------- .../clientpositive/vector_data_types.q | 8 ++- .../tez/vector_data_types.q.out | 62 +++++++++++++------ .../clientpositive/vector_data_types.q.out | 62 +++++++++++++------ 4 files changed, 102 insertions(+), 72 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java index 67c19ad6eb49..bdc2806895a4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java @@ -47,6 +47,7 @@ import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector; import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr; import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf; @@ -1074,41 +1075,20 @@ Object nextVector(Object previousVector, long batchSize) throws IOException { result = (LongColumnVector) previousVector; } - // Read present/isNull stream - super.nextVector(result, batchSize); - - data.nextVector(result, batchSize); - nanoVector.isNull = result.isNull; - nanos.nextVector(nanoVector, batchSize); - - if(result.isRepeating && nanoVector.isRepeating) { - batchSize = 1; - } - - // Non repeating values preset in the vector. Iterate thru the vector and populate the time + result.reset(); + Object obj = null; for (int i = 0; i < batchSize; i++) { - if (!result.isNull[i]) { - long ms = (result.vector[result.isRepeating ? 0 : i] + WriterImpl.BASE_TIMESTAMP) - * WriterImpl.MILLIS_PER_SECOND; - long ns = parseNanos(nanoVector.vector[nanoVector.isRepeating ? 0 : i]); - // the rounding error exists because java always rounds up when dividing integers - // -42001/1000 = -42; and -42001 % 1000 = -1 (+ 1000) - // to get the correct value we need - // (-42 - 1)*1000 + 999 = -42001 - // (42)*1000 + 1 = 42001 - if(ms < 0 && ns != 0) { - ms -= 1000; - } - // Convert millis into nanos and add the nano vector value to it - result.vector[i] = (ms * 1000000) + ns; + obj = next(obj); + if (obj == null) { + result.noNulls = false; + result.isNull[i] = true; + } else { + TimestampWritable writable = (TimestampWritable) obj; + Timestamp timestamp = writable.getTimestamp(); + result.vector[i] = TimestampUtils.getTimeNanoSec(timestamp); } } - if(!(result.isRepeating && nanoVector.isRepeating)) { - // both have to repeat for the result to be repeating - result.isRepeating = false; - } - return result; } diff --git a/ql/src/test/queries/clientpositive/vector_data_types.q b/ql/src/test/queries/clientpositive/vector_data_types.q index 4c38968b0ae0..61356fa661c2 100644 --- a/ql/src/test/queries/clientpositive/vector_data_types.q +++ b/ql/src/test/queries/clientpositive/vector_data_types.q @@ -40,8 +40,14 @@ EXPLAIN SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i LIMIT 20; +SELECT SUM(HASH(*)) +FROM (SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i) as q; + SET hive.vectorized.execution.enabled=true; EXPLAIN select t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i LIMIT 20; -SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i LIMIT 20; \ No newline at end of file +SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i LIMIT 20; + +SELECT SUM(HASH(*)) +FROM (SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i) as q; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/tez/vector_data_types.q.out b/ql/src/test/results/clientpositive/tez/vector_data_types.q.out index 0e7663dabc51..3f38a45170e5 100644 --- a/ql/src/test/results/clientpositive/tez/vector_data_types.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_data_types.q.out @@ -177,6 +177,17 @@ NULL 409 65536 4294967490 46.97 25.92 false fred miller 2013-03-01 09:11:58.7031 120 331 65539 4294967324 88.02 40.94 true holly nixon 2013-03-01 09:11:58.703262 96.64 yard duty 71 298 65540 4294967510 91.63 9.6 false gabriella zipper 2013-03-01 09:11:58.70314 68.14 geology 114 385 65541 4294967458 73.48 34.97 true oscar quirinius 2013-03-01 09:11:58.703143 72.33 xylophone band +PREHOOK: query: SELECT SUM(HASH(*)) +FROM (SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i) as q +PREHOOK: type: QUERY +PREHOOK: Input: default@over1korc +#### A masked pattern was here #### +POSTHOOK: query: SELECT SUM(HASH(*)) +FROM (SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i) as q +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over1korc +#### A masked pattern was here #### +-17045922556 PREHOOK: query: EXPLAIN select t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i LIMIT 20 PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN select t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i LIMIT 20 @@ -239,23 +250,34 @@ POSTHOOK: query: SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc OR POSTHOOK: type: QUERY POSTHOOK: Input: default@over1korc #### A masked pattern was here #### -108 301 65536 4294967357 90.05 17.59 true ethan johnson 1860-11-12 20:05:55.011470936 75.70 undecided -118 497 65536 4294967381 50.32 12.72 false david nixon 1860-11-12 20:05:55.011484936 83.48 values clariffication -18 280 65536 4294967320 32.92 45.94 false holly white 1860-11-12 20:05:55.011285936 58.86 topology -69 489 65536 4294967404 33.52 17.99 false oscar ichabod 1860-11-12 20:05:55.011446936 32.68 topology -27 405 65536 4294967508 82.24 29.41 true oscar ovid 1860-11-12 20:05:55.011365936 16.85 biology -42 495 65536 4294967431 43.57 46.81 false tom johnson 1860-11-12 20:05:55.011444936 62.25 american history -NULL 409 65536 4294967490 46.97 25.92 false fred miller 1860-11-12 20:05:55.011315936 33.45 history -59 431 65537 4294967326 11.34 2.9 true oscar robinson 1860-11-12 20:05:55.011360936 81.04 zync studies -63 458 65537 4294967463 21.94 49.71 true fred van buren 1860-11-12 20:05:55.011477936 99.34 wind surfing -121 355 65537 4294967437 85.9 10.99 true calvin brown 1860-11-12 20:05:55.011453936 4.49 yard duty -72 267 65537 4294967460 55.2 42.89 false oscar carson 1860-11-12 20:05:55.011352936 51.91 topology -22 264 65537 4294967419 8.07 10.71 false david xylophone 1860-11-12 20:05:55.011335936 11.87 undecided -101 283 65538 4294967527 84.03 27.29 true yuri brown 1860-11-12 20:05:55.011505936 44.24 biology -109 376 65538 4294967453 59.61 35.62 true priscilla xylophone 1860-11-12 20:05:55.011485936 9.53 study skills -83 353 65538 4294967339 0.08 23.91 true holly thompson 1860-11-12 20:05:55.011356936 30.27 quiet hour -29 331 65539 4294967420 73.18 28.96 true ethan brown 1860-11-12 20:05:55.011293936 58.85 zync studies -70 430 65539 4294967534 18.89 43.84 true tom carson 1860-11-12 20:05:55.011381936 21.93 joggying -120 331 65539 4294967324 88.02 40.94 true holly nixon 1860-11-12 20:05:55.011461936 96.64 yard duty -71 298 65540 4294967510 91.63 9.6 false gabriella zipper 1860-11-12 20:05:55.011339936 68.14 geology -114 385 65541 4294967458 73.48 34.97 true oscar quirinius 1860-11-12 20:05:55.011342936 72.33 xylophone band +108 301 65536 4294967357 90.05 17.59 true ethan johnson 2013-03-01 09:11:58.703271 75.70 undecided +118 497 65536 4294967381 50.32 12.72 false david nixon 2013-03-01 09:11:58.703285 83.48 values clariffication +18 280 65536 4294967320 32.92 45.94 false holly white 2013-03-01 09:11:58.703086 58.86 topology +69 489 65536 4294967404 33.52 17.99 false oscar ichabod 2013-03-01 09:11:58.703247 32.68 topology +27 405 65536 4294967508 82.24 29.41 true oscar ovid 2013-03-01 09:11:58.703166 16.85 biology +42 495 65536 4294967431 43.57 46.81 false tom johnson 2013-03-01 09:11:58.703245 62.25 american history +NULL 409 65536 4294967490 46.97 25.92 false fred miller 2013-03-01 09:11:58.703116 33.45 history +59 431 65537 4294967326 11.34 2.9 true oscar robinson 2013-03-01 09:11:58.703161 81.04 zync studies +63 458 65537 4294967463 21.94 49.71 true fred van buren 2013-03-01 09:11:58.703278 99.34 wind surfing +121 355 65537 4294967437 85.9 10.99 true calvin brown 2013-03-01 09:11:58.703254 4.49 yard duty +72 267 65537 4294967460 55.2 42.89 false oscar carson 2013-03-01 09:11:58.703153 51.91 topology +22 264 65537 4294967419 8.07 10.71 false david xylophone 2013-03-01 09:11:58.703136 11.87 undecided +101 283 65538 4294967527 84.03 27.29 true yuri brown 2013-03-01 09:11:58.703306 44.24 biology +109 376 65538 4294967453 59.61 35.62 true priscilla xylophone 2013-03-01 09:11:58.703286 9.53 study skills +83 353 65538 4294967339 0.08 23.91 true holly thompson 2013-03-01 09:11:58.703157 30.27 quiet hour +29 331 65539 4294967420 73.18 28.96 true ethan brown 2013-03-01 09:11:58.703094 58.85 zync studies +70 430 65539 4294967534 18.89 43.84 true tom carson 2013-03-01 09:11:58.703182 21.93 joggying +120 331 65539 4294967324 88.02 40.94 true holly nixon 2013-03-01 09:11:58.703262 96.64 yard duty +71 298 65540 4294967510 91.63 9.6 false gabriella zipper 2013-03-01 09:11:58.70314 68.14 geology +114 385 65541 4294967458 73.48 34.97 true oscar quirinius 2013-03-01 09:11:58.703143 72.33 xylophone band +PREHOOK: query: SELECT SUM(HASH(*)) +FROM (SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i) as q +PREHOOK: type: QUERY +PREHOOK: Input: default@over1korc +#### A masked pattern was here #### +POSTHOOK: query: SELECT SUM(HASH(*)) +FROM (SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i) as q +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over1korc +#### A masked pattern was here #### +-17045922556 diff --git a/ql/src/test/results/clientpositive/vector_data_types.q.out b/ql/src/test/results/clientpositive/vector_data_types.q.out index 6b0598c2a522..07d58ed124d6 100644 --- a/ql/src/test/results/clientpositive/vector_data_types.q.out +++ b/ql/src/test/results/clientpositive/vector_data_types.q.out @@ -171,6 +171,17 @@ NULL 409 65536 4294967490 46.97 25.92 false fred miller 2013-03-01 09:11:58.7031 120 331 65539 4294967324 88.02 40.94 true holly nixon 2013-03-01 09:11:58.703262 96.64 yard duty 71 298 65540 4294967510 91.63 9.6 false gabriella zipper 2013-03-01 09:11:58.70314 68.14 geology 114 385 65541 4294967458 73.48 34.97 true oscar quirinius 2013-03-01 09:11:58.703143 72.33 xylophone band +PREHOOK: query: SELECT SUM(HASH(*)) +FROM (SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i) as q +PREHOOK: type: QUERY +PREHOOK: Input: default@over1korc +#### A masked pattern was here #### +POSTHOOK: query: SELECT SUM(HASH(*)) +FROM (SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i) as q +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over1korc +#### A masked pattern was here #### +-17045922556 PREHOOK: query: EXPLAIN select t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i LIMIT 20 PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN select t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i LIMIT 20 @@ -226,23 +237,34 @@ POSTHOOK: query: SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc OR POSTHOOK: type: QUERY POSTHOOK: Input: default@over1korc #### A masked pattern was here #### -108 301 65536 4294967357 90.05 17.59 true ethan johnson 1860-11-12 20:05:55.011470936 75.70 undecided -118 497 65536 4294967381 50.32 12.72 false david nixon 1860-11-12 20:05:55.011484936 83.48 values clariffication -18 280 65536 4294967320 32.92 45.94 false holly white 1860-11-12 20:05:55.011285936 58.86 topology -69 489 65536 4294967404 33.52 17.99 false oscar ichabod 1860-11-12 20:05:55.011446936 32.68 topology -27 405 65536 4294967508 82.24 29.41 true oscar ovid 1860-11-12 20:05:55.011365936 16.85 biology -42 495 65536 4294967431 43.57 46.81 false tom johnson 1860-11-12 20:05:55.011444936 62.25 american history -NULL 409 65536 4294967490 46.97 25.92 false fred miller 1860-11-12 20:05:55.011315936 33.45 history -59 431 65537 4294967326 11.34 2.9 true oscar robinson 1860-11-12 20:05:55.011360936 81.04 zync studies -63 458 65537 4294967463 21.94 49.71 true fred van buren 1860-11-12 20:05:55.011477936 99.34 wind surfing -121 355 65537 4294967437 85.9 10.99 true calvin brown 1860-11-12 20:05:55.011453936 4.49 yard duty -72 267 65537 4294967460 55.2 42.89 false oscar carson 1860-11-12 20:05:55.011352936 51.91 topology -22 264 65537 4294967419 8.07 10.71 false david xylophone 1860-11-12 20:05:55.011335936 11.87 undecided -101 283 65538 4294967527 84.03 27.29 true yuri brown 1860-11-12 20:05:55.011505936 44.24 biology -109 376 65538 4294967453 59.61 35.62 true priscilla xylophone 1860-11-12 20:05:55.011485936 9.53 study skills -83 353 65538 4294967339 0.08 23.91 true holly thompson 1860-11-12 20:05:55.011356936 30.27 quiet hour -29 331 65539 4294967420 73.18 28.96 true ethan brown 1860-11-12 20:05:55.011293936 58.85 zync studies -70 430 65539 4294967534 18.89 43.84 true tom carson 1860-11-12 20:05:55.011381936 21.93 joggying -120 331 65539 4294967324 88.02 40.94 true holly nixon 1860-11-12 20:05:55.011461936 96.64 yard duty -71 298 65540 4294967510 91.63 9.6 false gabriella zipper 1860-11-12 20:05:55.011339936 68.14 geology -114 385 65541 4294967458 73.48 34.97 true oscar quirinius 1860-11-12 20:05:55.011342936 72.33 xylophone band +108 301 65536 4294967357 90.05 17.59 true ethan johnson 2013-03-01 09:11:58.703271 75.70 undecided +118 497 65536 4294967381 50.32 12.72 false david nixon 2013-03-01 09:11:58.703285 83.48 values clariffication +18 280 65536 4294967320 32.92 45.94 false holly white 2013-03-01 09:11:58.703086 58.86 topology +69 489 65536 4294967404 33.52 17.99 false oscar ichabod 2013-03-01 09:11:58.703247 32.68 topology +27 405 65536 4294967508 82.24 29.41 true oscar ovid 2013-03-01 09:11:58.703166 16.85 biology +42 495 65536 4294967431 43.57 46.81 false tom johnson 2013-03-01 09:11:58.703245 62.25 american history +NULL 409 65536 4294967490 46.97 25.92 false fred miller 2013-03-01 09:11:58.703116 33.45 history +59 431 65537 4294967326 11.34 2.9 true oscar robinson 2013-03-01 09:11:58.703161 81.04 zync studies +63 458 65537 4294967463 21.94 49.71 true fred van buren 2013-03-01 09:11:58.703278 99.34 wind surfing +121 355 65537 4294967437 85.9 10.99 true calvin brown 2013-03-01 09:11:58.703254 4.49 yard duty +72 267 65537 4294967460 55.2 42.89 false oscar carson 2013-03-01 09:11:58.703153 51.91 topology +22 264 65537 4294967419 8.07 10.71 false david xylophone 2013-03-01 09:11:58.703136 11.87 undecided +101 283 65538 4294967527 84.03 27.29 true yuri brown 2013-03-01 09:11:58.703306 44.24 biology +109 376 65538 4294967453 59.61 35.62 true priscilla xylophone 2013-03-01 09:11:58.703286 9.53 study skills +83 353 65538 4294967339 0.08 23.91 true holly thompson 2013-03-01 09:11:58.703157 30.27 quiet hour +29 331 65539 4294967420 73.18 28.96 true ethan brown 2013-03-01 09:11:58.703094 58.85 zync studies +70 430 65539 4294967534 18.89 43.84 true tom carson 2013-03-01 09:11:58.703182 21.93 joggying +120 331 65539 4294967324 88.02 40.94 true holly nixon 2013-03-01 09:11:58.703262 96.64 yard duty +71 298 65540 4294967510 91.63 9.6 false gabriella zipper 2013-03-01 09:11:58.70314 68.14 geology +114 385 65541 4294967458 73.48 34.97 true oscar quirinius 2013-03-01 09:11:58.703143 72.33 xylophone band +PREHOOK: query: SELECT SUM(HASH(*)) +FROM (SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i) as q +PREHOOK: type: QUERY +PREHOOK: Input: default@over1korc +#### A masked pattern was here #### +POSTHOOK: query: SELECT SUM(HASH(*)) +FROM (SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc ORDER BY i) as q +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over1korc +#### A masked pattern was here #### +-17045922556 From 3f07a7de0afee28fb503b81b08b5a2a297f397bc Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Mon, 27 Oct 2014 22:29:12 +0000 Subject: [PATCH 176/339] HIVE-8575 : CBO: decimal_udf is broken by recent changes (and other tests have type changes) (Sergey Shelukhin, reviewed by Laljo John Pullokkaran) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634710 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java index 276ce894a1f1..acb1edfbb5e0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java @@ -167,6 +167,9 @@ static ASTNode literal(RexLiteral literal, boolean useTypeQualInLiteral) { type = HiveParser.SmallintLiteral; break; case INTEGER: + val = literal.getValue3(); + type = HiveParser.BigintLiteral; + break; case BIGINT: if (useTypeQualInLiteral) { val = literal.getValue3() + "L"; From 1ec9cd9babccecb5f793863604505f54d74a8bfd Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 27 Oct 2014 22:53:37 +0000 Subject: [PATCH 177/339] HIVE-8598 : Push constant filters through joins (Ashutosh Chauhan via Harish Butani) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634722 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/ppd/OpProcFactory.java | 103 +++++++++++------- .../clientpositive/optimize_nullscan.q | 4 + .../clientpositive/optimize_nullscan.q.out | Bin 92394 -> 90097 bytes .../tez/optimize_nullscan.q.out | Bin 85727 -> 85609 bytes 4 files changed, 65 insertions(+), 42 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java index c6894b397a4d..ffaf5ccd2270 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java @@ -149,17 +149,17 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, } } - + public static class PTFPPD extends ScriptPPD { - + /* * For WindowingTableFunction if: - * a. there is a Rank/DenseRank function: if there are unpushedPred of the form + * a. there is a Rank/DenseRank function: if there are unpushedPred of the form * rnkValue < Constant; then use the smallest Constant val as the 'rankLimit' * on the WindowingTablFn. - * b. If there are no Wdw Fns with an End Boundary past the current row, the + * b. If there are no Wdw Fns with an End Boundary past the current row, the * condition can be pushed down as a limit pushdown(mapGroupBy=true) - * + * * (non-Javadoc) * @see org.apache.hadoop.hive.ql.ppd.OpProcFactory.ScriptPPD#process(org.apache.hadoop.hive.ql.lib.Node, java.util.Stack, org.apache.hadoop.hive.ql.lib.NodeProcessorCtx, java.lang.Object[]) */ @@ -170,30 +170,30 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, + ((Operator) nd).getIdentifier() + ")"); OpWalkerInfo owi = (OpWalkerInfo) procCtx; PTFOperator ptfOp = (PTFOperator) nd; - + pushRankLimit(ptfOp, owi); return super.process(nd, stack, procCtx, nodeOutputs); } - + private void pushRankLimit(PTFOperator ptfOp, OpWalkerInfo owi) throws SemanticException { PTFDesc conf = ptfOp.getConf(); - + if ( !conf.forWindowing() ) { return; } - + float threshold = owi.getParseContext().getConf().getFloatVar(HiveConf.ConfVars.HIVELIMITPUSHDOWNMEMORYUSAGE); if (threshold <= 0 || threshold >= 1) { return; } - + WindowTableFunctionDef wTFn = (WindowTableFunctionDef) conf.getFuncDef(); List rFnIdxs = rankingFunctions(wTFn); - + if ( rFnIdxs.size() == 0 ) { return; } - + ExprWalkerInfo childInfo = getChildWalkerInfo(ptfOp, owi); if (childInfo == null) { @@ -207,7 +207,7 @@ private void pushRankLimit(PTFOperator ptfOp, OpWalkerInfo owi) throws SemanticE preds = ExprNodeDescUtils.split(pred, preds); } } - + int rLimit = -1; int fnIdx = -1; for(ExprNodeDesc pred : preds) { @@ -219,7 +219,7 @@ private void pushRankLimit(PTFOperator ptfOp, OpWalkerInfo owi) throws SemanticE } } } - + if ( rLimit != -1 ) { wTFn.setRankLimit(rLimit); wTFn.setRankLimitFunction(fnIdx); @@ -228,68 +228,68 @@ private void pushRankLimit(PTFOperator ptfOp, OpWalkerInfo owi) throws SemanticE } } } - + private List rankingFunctions(WindowTableFunctionDef wTFn) { List rFns = new ArrayList(); for(int i=0; i < wTFn.getWindowFunctions().size(); i++ ) { WindowFunctionDef wFnDef = wTFn.getWindowFunctions().get(i); - if ( (wFnDef.getWFnEval() instanceof GenericUDAFRankEvaluator) || + if ( (wFnDef.getWFnEval() instanceof GenericUDAFRankEvaluator) || (wFnDef.getWFnEval() instanceof GenericUDAFDenseRankEvaluator ) ) { rFns.add(i); } } return rFns; } - + /* * For a predicate check if it is a candidate for pushing down as limit optimization. * The expression must be of the form rankFn <|<= constant. */ private int[] getLimit(WindowTableFunctionDef wTFn, List rFnIdxs, ExprNodeDesc expr) { - + if ( !(expr instanceof ExprNodeGenericFuncDesc) ) { return null; } - + ExprNodeGenericFuncDesc fExpr = (ExprNodeGenericFuncDesc) expr; - - if ( !(fExpr.getGenericUDF() instanceof GenericUDFOPLessThan) && + + if ( !(fExpr.getGenericUDF() instanceof GenericUDFOPLessThan) && !(fExpr.getGenericUDF() instanceof GenericUDFOPEqualOrLessThan) ) { return null; } - + if ( !(fExpr.getChildren().get(0) instanceof ExprNodeColumnDesc) ) { return null; } - + if ( !(fExpr.getChildren().get(1) instanceof ExprNodeConstantDesc) ) { return null; } - + ExprNodeConstantDesc constantExpr = (ExprNodeConstantDesc) fExpr.getChildren().get(1) ; - + if ( constantExpr.getTypeInfo() != TypeInfoFactory.intTypeInfo ) { return null; } - + int limit = (Integer) constantExpr.getValue(); if ( fExpr.getGenericUDF() instanceof GenericUDFOPEqualOrLessThan ) { limit = limit + 1; } String colName = ((ExprNodeColumnDesc)fExpr.getChildren().get(0)).getColumn(); - + for(int i=0; i < rFnIdxs.size(); i++ ) { String fAlias = wTFn.getWindowFunctions().get(i).getAlias(); if ( fAlias.equals(colName)) { return new int[] {limit,i}; } } - + return null; } - + /* - * Limit can be pushed down to Map-side if all Window Functions need access + * Limit can be pushed down to Map-side if all Window Functions need access * to rows before the current row. This is true for: * 1. Rank, DenseRank and Lead Fns. (the window doesn't matter for lead fn). * 2. If the Window for the function is Row based and the End Boundary doesn't @@ -298,8 +298,8 @@ private int[] getLimit(WindowTableFunctionDef wTFn, List rFnIdxs, ExprN private boolean canPushLimitToReduceSink(WindowTableFunctionDef wTFn) { for(WindowFunctionDef wFnDef : wTFn.getWindowFunctions() ) { - if ( (wFnDef.getWFnEval() instanceof GenericUDAFRankEvaluator) || - (wFnDef.getWFnEval() instanceof GenericUDAFDenseRankEvaluator ) || + if ( (wFnDef.getWFnEval() instanceof GenericUDAFRankEvaluator) || + (wFnDef.getWFnEval() instanceof GenericUDAFDenseRankEvaluator ) || (wFnDef.getWFnEval() instanceof GenericUDAFLeadEvaluator ) ) { continue; } @@ -314,18 +314,18 @@ private boolean canPushLimitToReduceSink(WindowTableFunctionDef wTFn) { } return true; } - + private void pushRankLimitToRedSink(PTFOperator ptfOp, HiveConf conf, int rLimit) throws SemanticException { - + Operator parent = ptfOp.getParentOperators().get(0); Operator gP = parent == null ? null : parent.getParentOperators().get(0); - + if ( gP == null || !(gP instanceof ReduceSinkOperator )) { return; } - + float threshold = conf.getFloatVar(HiveConf.ConfVars.HIVELIMITPUSHDOWNMEMORYUSAGE); - + ReduceSinkOperator rSink = (ReduceSinkOperator) gP; ReduceSinkDesc rDesc = rSink.getConf(); rDesc.setTopN(rLimit); @@ -543,7 +543,7 @@ protected Object handlePredicates(Node nd, ExprWalkerInfo prunePreds, OpWalkerIn private void applyFilterTransitivity(JoinOperator nd, OpWalkerInfo owi) throws SemanticException { ExprWalkerInfo prunePreds = - owi.getPrunedPreds((Operator) nd); + owi.getPrunedPreds(nd); if (prunePreds != null) { // We want to use the row resolvers of the parents of the join op // because the rowresolver refers to the output columns of an operator @@ -579,9 +579,6 @@ private void applyFilterTransitivity(JoinOperator nd, OpWalkerInfo owi) int numColumns = eqExpressions.size(); int numEqualities = eqExpressions.get(0).size(); - // joins[i] is the join between table i and i+1 in the JoinOperator - JoinCondDesc[] joins = (nd).getConf().getConds(); - // oldFilters contains the filters to be pushed down Map> oldFilters = prunePreds.getFinalCandidates(); @@ -632,10 +629,32 @@ private void applyFilterTransitivity(JoinOperator nd, OpWalkerInfo owi) } } } + // Push where false filter transitively + Map> candidates = prunePreds.getNonFinalCandidates(); + List exprs; + // where false is not associated with any alias in candidates + if (null != candidates && candidates.get(null) != null && ((exprs = candidates.get(null)) != null)) { + Iterator itr = exprs.iterator(); + while (itr.hasNext()) { + ExprNodeDesc expr = itr.next(); + if (expr instanceof ExprNodeConstantDesc && Boolean.FALSE.equals(((ExprNodeConstantDesc)expr).getValue())) { + // push this 'where false' expr to all aliases + for (String alias : aliasToRR.keySet()) { + List pushedFilters = newFilters.get(alias); + if (null == pushedFilters) { + newFilters.put(alias, new ArrayList()); + } + newFilters.get(alias).add(expr); + } + // this filter is pushed, we can remove it from non-final candidates. + itr.remove(); + } + } + } for (Entry> aliasToFilters : newFilters.entrySet()){ - owi.getPrunedPreds((Operator) nd) + owi.getPrunedPreds(nd) .addPushDowns(aliasToFilters.getKey(), aliasToFilters.getValue()); } } diff --git a/ql/src/test/queries/clientpositive/optimize_nullscan.q b/ql/src/test/queries/clientpositive/optimize_nullscan.q index 61a71a284a7a..f3b896b7414a 100644 --- a/ql/src/test/queries/clientpositive/optimize_nullscan.q +++ b/ql/src/test/queries/clientpositive/optimize_nullscan.q @@ -23,3 +23,7 @@ select * from (select key from src where false) a left outer join (select value explain extended select * from (select key from src union all select src.key from src left outer join srcpart on src.key = srcpart.key) a where false; select * from (select key from src union all select src.key from src left outer join srcpart on src.key = srcpart.key) a where false; + +explain extended +select * from src s1, src s2 where false and s1.value = s2.value; +select * from src s1, src s2 where false and s1.value = s2.value; diff --git a/ql/src/test/results/clientpositive/optimize_nullscan.q.out b/ql/src/test/results/clientpositive/optimize_nullscan.q.out index fd77ad222ee8175e9794b798ee9332080ea2d195..173cb7bc278298e9e2f80a253608d98adb9ca805 100644 GIT binary patch delta 986 zcmbVKT}YE*6z1r*FRkXcA2&bL?R9IZWaTDF8J6ZxILetCMc~hJUng09vg^Q> z5A=2sWl`isAh9SCNpA|FAC;~}y9>pfbRpeT-=>*$mpA9-oq|;$YGgX@OLXR^9KWJY2PJ( z_eGhNGR2b!`GiavJS0+~=f7uV(3?7~*H=@U%BM`ku*5R?xQWDM#r+SGq< zfk&LA!z(dgMMPn(p$Wa|mbknv+iQYBIn2DF&LHFOwN$~6R?#kQ)6vd&#Q2Q{%D|9c z&=;_lwovzhHCK#N-j*k^Dk8{!OZIw=<@H_ZkxQ7;7w!zU=dZW&&(&1Ci9%g5&Qyf! zF4y4dF)V9bsO1c^502yN-CXz{S}>vQz|R#4%MVYY>`vj}tvvKgIxM#_eyxmB!33?b zAkN}WSWm(h!C<#y;;aBRV5Sm2lR^$mNiIZ$YD~}S5qV_iLk>EPm`;O{Z~5pymxGb} dHs0c;8a@}GuC0A*5lW34uPeTo6AKnt zA$8TH6!`9UNVpkYD)@+-z+$= zCqd^b#_FgAL0d15UAO-oGPz4n4e-3iv%7_KxNw;fY)i)bz6Afg22X8i5O&)+U?K;e zW~LQyVqy%uI;$csG*S34m+oWurkdI@vKWVrxhv&lvd_%1Cd$V^CGYQ#q< z3$r2pZ_7dC4=efE3%Ez19X_zqK!z+k9Adq1!Y7UoP4`!cveQ{E<9VzU8}4lObkH3~ zn<*J;P{Zy5vV_%6(h^5yGU1V1+3h45BWp#h7LkPLo_QrfgR_o!R_&CBh`|Q`whrDG z*H;QSoU$X@W8**>iHK}k*`p;pDx^kyNV(WrFI;&W=8{fI|CXkpc1;uhlGYfN?7@8E P>pJR#HdR)-&kghmr=p+k diff --git a/ql/src/test/results/clientpositive/tez/optimize_nullscan.q.out b/ql/src/test/results/clientpositive/tez/optimize_nullscan.q.out index 2af613403346d019d28184620007d3e84cf3ec1f..d8b4a58461a6834ecbc6d9ee4c1222ae50231c8d 100644 GIT binary patch delta 973 zcmbW0OH5Ny5Qa0Qyb6*kElNtuu{_dCi>6nRhk=DiEKPaTl>`eSZM6~G+KU=v5J=p( zk;<<*8-%)3g90f@jfoLgx*-tb)~HJZ3JV`m33_h}Cb|+gXU@#z|IZ}zoj14B-;bpa z&C&}>JhG5S%UuFp1uODk;h2>-)KVQL4duK(jhfJQvMME&_ZdYA+RmrMCj1=XZ7MKPxlF!xH$O;#$8501YitiI0R(+)E71qWH<6ERMS z2`2@J7Zy+{Uvtq?@`iae!_#kCQHu03$!=rGD6)&EeGwn?_w-3V))Vx~tvwfd`p)}U zJ(I-L7544biqyVkDZkM|yWsg=o9=9DZq;C}o53?}z{;97O|t)yt0WPNKkusL88mo4 zWm45^KzN%C>fMWMe1voPg3uNK8CfYBf*D2FvRsbr&7k7biL&7Zm zm%_d}CiO=G!BfJf!?3>^i%Yp1#$u|x4{oMM%+mD-co-Z%iBOJC=GcY#oEkj%xEl|h zEi%&?{Ou9)B7Df4Ou`P@w!@}OYEPbG@|0bBjiWAu{3YJ4SopkyDrIm-2+OxAaWR8l)K7%}cy)N03kXaO3c> zj|FnG#whvFN~M`~mK>-#=h&`5b+mLNq@{VZq5-w|m@}wKLFZt8va7?{tR0)SD@`Au zRm(rY;^_ejPFJs|b$c&@mT}QBF>#IZtSe5UEt{AmlCN|kpjerLQkU^2TlycGcVRS# z0!)%<8o7&jsbgagMv9=(5pgzVgc6N)S3okc*XPW#r_Ze;0bdCYg2~a7d4v{6*alA` zJLG8w)mpT)VnuD;#dMy=%T9_j#Y2M#g=5J4a;TXndcCqhK~%rpn!!tHQj Date: Mon, 27 Oct 2014 23:02:37 +0000 Subject: [PATCH 178/339] HIVE-8021 : CBO: support CTAS and insert ... select (Sergey Shelukhin, reviewed by Laljo John Pullokkaran) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634728 13f79535-47bb-0310-9956-ffa450edef68 --- .../index/RewriteParseContextGenerator.java | 2 +- .../hive/ql/parse/BaseSemanticAnalyzer.java | 2 +- .../hive/ql/parse/SemanticAnalyzer.java | 306 ++++++++++++++---- .../queries/clientpositive/cbo_correctness.q | 2 +- .../queries/clientpositive/ctas_colname.q | 6 +- .../queries/clientpositive/decimal_serde.q | 3 + ql/src/test/queries/clientpositive/insert0.q | 38 +++ .../results/clientpositive/ctas_colname.q.out | 81 +++-- .../clientpositive/decimal_serde.q.out | 72 +++++ .../test/results/clientpositive/insert0.q.out | 208 ++++++++++++ 10 files changed, 627 insertions(+), 93 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/insert0.q create mode 100644 ql/src/test/results/clientpositive/insert0.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteParseContextGenerator.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteParseContextGenerator.java index dee7d7e147eb..3097385b92d4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteParseContextGenerator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteParseContextGenerator.java @@ -112,7 +112,7 @@ private static void doSemanticAnalysis(SemanticAnalyzer sem, ((SemanticAnalyzer) sem).initParseCtx(subPCtx); LOG.info("Starting Sub-query Semantic Analysis"); - sem.doPhase1(child, qb, sem.initPhase1Ctx()); + sem.doPhase1(child, qb, sem.initPhase1Ctx(), null); LOG.info("Completed phase 1 of Sub-query Semantic Analysis"); sem.getMetaData(qb); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java index 37cbf7f7523b..becbc38b749a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java @@ -79,7 +79,7 @@ * */ public abstract class BaseSemanticAnalyzer { - private static final Log STATIC_LOG = LogFactory.getLog(BaseSemanticAnalyzer.class.getName()); + protected static final Log STATIC_LOG = LogFactory.getLog(BaseSemanticAnalyzer.class.getName()); protected final Hive db; protected final HiveConf conf; protected List> rootTasks; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 974f03b9c1a4..05a46f826570 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -33,6 +33,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -368,7 +369,7 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer { //flag for partial scan during analyze ... compute statistics protected boolean partialscan; - private volatile boolean runCBO = true; + private volatile boolean runCBO = true; // TODO: why is this volatile? private volatile boolean disableJoinMerge = false; /* @@ -380,6 +381,9 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer { */ private ArrayList ctesExpanded; + /** Not thread-safe. */ + private ASTSearcher astSearcher = new ASTSearcher(); + private static class Phase1Ctx { String dest; int nextNum; @@ -512,7 +516,7 @@ public void doPhase1QBExpr(ASTNode ast, QBExpr qbexpr, String id, String alias) case HiveParser.TOK_QUERY: { QB qb = new QB(id, alias, true); Phase1Ctx ctx_1 = initPhase1Ctx(); - doPhase1(ast, qb, ctx_1); + doPhase1(ast, qb, ctx_1, null); qbexpr.setOpcode(QBExpr.Opcode.NULLOP); qbexpr.setQB(qb); @@ -1177,6 +1181,30 @@ private String processLateralView(QB qb, ASTNode lateralView) return alias; } + /** The context that doPhase1 uses to populate information pertaining + * to CBO (currently, this is used for CTAS and insert-as-select). */ + private static class PreCboCtx { + enum Type { + NONE, + INSERT, + CTAS, + + UNEXPECTED + } + public ASTNode nodeOfInterest; + public Type type = Type.NONE; + public void set(Type type, ASTNode ast) { + if (this.type != Type.NONE) { + STATIC_LOG.warn("Setting " + type + " when already " + this.type + + "; node " + ast.dump() + " vs old node " + nodeOfInterest.dump()); + this.type = Type.UNEXPECTED; + return; + } + this.type = type; + this.nodeOfInterest = ast; + } + } + /** * Phase 1: (including, but not limited to): * @@ -1194,7 +1222,7 @@ private String processLateralView(QB qb, ASTNode lateralView) * @throws SemanticException */ @SuppressWarnings({"fallthrough", "nls"}) - public boolean doPhase1(ASTNode ast, QB qb, Phase1Ctx ctx_1) + public boolean doPhase1(ASTNode ast, QB qb, Phase1Ctx ctx_1, PreCboCtx cboCtx) throws SemanticException { boolean phase1Result = true; @@ -1238,20 +1266,26 @@ public boolean doPhase1(ASTNode ast, QB qb, Phase1Ctx ctx_1) String currentDatabase = SessionState.get().getCurrentDatabase(); String tab_name = getUnescapedName((ASTNode) ast.getChild(0).getChild(0), currentDatabase); qbp.addInsertIntoTable(tab_name); - // TODO: is this supposed to fall thru? case HiveParser.TOK_DESTINATION: ctx_1.dest = "insclause-" + ctx_1.nextNum; ctx_1.nextNum++; + boolean isTmpFileDest = false; + if (ast.getChildCount() > 0 && ast.getChild(0) instanceof ASTNode) { + ASTNode ch = (ASTNode)ast.getChild(0); + if (ch.getToken().getType() == HiveParser.TOK_DIR + && ch.getChildCount() > 0 && ch.getChild(0) instanceof ASTNode) { + ch = (ASTNode)ch.getChild(0); + isTmpFileDest = ch.getToken().getType() == HiveParser.TOK_TMP_FILE; + } + } // is there a insert in the subquery - if (qbp.getIsSubQ()) { - ASTNode ch = (ASTNode) ast.getChild(0); - if ((ch.getToken().getType() != HiveParser.TOK_DIR) - || (((ASTNode) ch.getChild(0)).getToken().getType() != HiveParser.TOK_TMP_FILE)) { - throw new SemanticException(ErrorMsg.NO_INSERT_INSUBQUERY - .getMsg(ast)); - } + if (qbp.getIsSubQ() && !isTmpFileDest) { + throw new SemanticException(ErrorMsg.NO_INSERT_INSUBQUERY.getMsg(ast)); + } + if (cboCtx != null && !isTmpFileDest) { + cboCtx.set(PreCboCtx.Type.INSERT, ast); } qbp.setDestForClause(ctx_1.dest, (ASTNode) ast.getChild(0)); @@ -1480,12 +1514,18 @@ public boolean doPhase1(ASTNode ast, QB qb, Phase1Ctx ctx_1) int child_count = ast.getChildCount(); for (int child_pos = 0; child_pos < child_count && phase1Result; ++child_pos) { // Recurse - phase1Result = phase1Result && doPhase1((ASTNode) ast.getChild(child_pos), qb, ctx_1); + phase1Result = phase1Result && doPhase1( + (ASTNode)ast.getChild(child_pos), qb, ctx_1, cboCtx); } } return phase1Result; } + private void traceLogAst(ASTNode ast, String what) { + if (!LOG.isTraceEnabled()) return; + LOG.trace(what + ast.dump()); + } + private void getMetaData(QBExpr qbexpr, ReadEntity parentInput) throws SemanticException { if (qbexpr.getOpcode() == QBExpr.Opcode.NULLOP) { @@ -1760,6 +1800,7 @@ public void getMetaData(QB qb, ReadEntity parentInput) throws SemanticException qb.getParseInfo().addTableSpec(ts.tableName.toLowerCase(), ts); } } else { + // This is the only place where isQuery is set to true; it defaults to false. qb.setIsQuery(true); fname = ctx.getMRTmpPath().toString(); ctx.setResDir(new Path(fname)); @@ -2464,7 +2505,7 @@ private Operator genPlanForSubQueryPredicate( ISubQueryJoinInfo subQueryPredicate) throws SemanticException { qbSQ.setSubQueryDef(subQueryPredicate.getSubQuery()); Phase1Ctx ctx_1 = initPhase1Ctx(); - doPhase1(subQueryPredicate.getSubQueryAST(), qbSQ, ctx_1); + doPhase1(subQueryPredicate.getSubQueryAST(), qbSQ, ctx_1, null); getMetaData(qbSQ); Operator op = genPlan(qbSQ); return op; @@ -6197,8 +6238,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) ArrayList colInfos = inputRR.getColumnInfos(); // CTAS case: the file output format and serde are defined by the create - // table command - // rather than taking the default value + // table command rather than taking the default value List field_schemas = null; CreateTableDesc tblDesc = qb.getTableDesc(); if (tblDesc != null) { @@ -6219,7 +6259,8 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) if (!("".equals(nm[0])) && nm[1] != null) { colName = unescapeIdentifier(colInfo.getAlias()).toLowerCase(); // remove `` } - col.setName(colName);; + String ctasColName = fixCtasColumnName(colName, colInfo, inputRR); + col.setName(ctasColName); col.setType(colInfo.getType().getTypeName()); field_schemas.add(col); } @@ -6397,6 +6438,14 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) return output; } + private static String fixCtasColumnName(String colName, ColumnInfo colInfo, RowResolver rr) { + int lastDot = colName.lastIndexOf('.'); + if (lastDot < 0) return colName; // alias is not fully qualified + String nqColumnName = colName.substring(lastDot + 1); + STATIC_LOG.debug("Replacing " + colName + " (produced by CBO) by " + nqColumnName); + return nqColumnName; + } + // Check constraints on acid tables. This includes // * no insert overwrites // * no use of vectorization @@ -9875,11 +9924,14 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { // analyze and process the position alias processPositionAlias(ast); + // Check configuration for CBO first. + runCBO = runCBO && HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_CBO_ENABLED); // analyze create table command + PreCboCtx cboCtx = runCBO ? new PreCboCtx() : null; if (ast.getToken().getType() == HiveParser.TOK_CREATETABLE) { // if it is not CTAS, we don't need to go further and just return - if ((child = analyzeCreateTable(ast, qb)) == null) { + if ((child = analyzeCreateTable(ast, qb, cboCtx)) == null) { return; } } else { @@ -9888,7 +9940,8 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { // analyze create view command if (ast.getToken().getType() == HiveParser.TOK_CREATEVIEW || - (ast.getToken().getType() == HiveParser.TOK_ALTERVIEW && ast.getChild(1).getType() == HiveParser.TOK_QUERY)) { + (ast.getToken().getType() == HiveParser.TOK_ALTERVIEW + && ast.getChild(1).getType() == HiveParser.TOK_QUERY)) { child = analyzeCreateView(ast, qb); SessionState.get().setCommandType(HiveOperation.CREATEVIEW); if (child == null) { @@ -9901,7 +9954,7 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { // continue analyzing from the child ASTNode. Phase1Ctx ctx_1 = initPhase1Ctx(); - if (!doPhase1(child, qb, ctx_1)) { + if (!doPhase1(child, qb, ctx_1, cboCtx)) { // if phase1Result false return return; } @@ -9911,19 +9964,16 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { getMetaData(qb); LOG.info("Completed getting MetaData in Semantic Analysis"); - + // Note: for now, we don't actually pass the queryForCbo to CBO, because it accepts qb, not + // AST, and can also access all the private stuff in SA. We rely on the fact that CBO + // ignores the unknown tokens (create table, destination), so if the query is otherwise ok, + // it is as if we did remove those and gave CBO the proper AST. That is kinda hacky. if (runCBO) { - boolean tokenTypeIsQuery = ast.getToken().getType() == HiveParser.TOK_QUERY - || ast.getToken().getType() == HiveParser.TOK_EXPLAIN; - if (!tokenTypeIsQuery || createVwDesc != null - || !HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_CBO_ENABLED) - || !canHandleQuery(qb, true) || !HiveOptiqUtil.validateASTForCBO(ast)) { - runCBO = false; - } - - if (runCBO) { - disableJoinMerge = true; + ASTNode queryForCbo = ast; + if (cboCtx.type == PreCboCtx.Type.CTAS) { + queryForCbo = cboCtx.nodeOfInterest; // nodeOfInterest is the query } + runCBO = canHandleAstForCbo(queryForCbo, qb, cboCtx); } // Save the result schema derived from the sink operator produced @@ -9933,6 +9983,7 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { Operator sinkOp = null; if (runCBO) { + disableJoinMerge = true; OptiqBasedPlanner optiqPlanner = new OptiqBasedPlanner(); boolean reAnalyzeAST = false; @@ -9940,10 +9991,17 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { // 1. Gen Optimized AST ASTNode newAST = optiqPlanner.getOptimizedAST(prunedPartitions); + // 1.1. Fix up the query for insert/ctas + newAST = fixUpCtasAndInsertAfterCbo(ast, newAST, cboCtx); + // 2. Regen OP plan from optimized AST init(false); + if (cboCtx.type == PreCboCtx.Type.CTAS) { + // Redo create-table analysis, because it's not part of doPhase1. + newAST = reAnalyzeCtasAfterCbo(newAST); + } ctx_1 = initPhase1Ctx(); - if (!doPhase1(newAST, qb, ctx_1)) { + if (!doPhase1(newAST, qb, ctx_1, null)) { throw new RuntimeException( "Couldn't do phase1 on CBO optimized query plan"); } @@ -10089,6 +10147,118 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { return; } + private ASTNode fixUpCtasAndInsertAfterCbo( + ASTNode originalAst, ASTNode newAst, PreCboCtx cboCtx) throws SemanticException { + switch (cboCtx.type) { + case NONE: return newAst; // nothing to do + case CTAS: { + // Patch the optimized query back into original CTAS AST, replacing the original query. + replaceASTChild(cboCtx.nodeOfInterest, newAst); + return originalAst; + } + case INSERT: { + // We need to patch the dest back to original into new query. + // This makes assumptions about the structure of the AST. + ASTNode newDest = astSearcher.simpleBreadthFirstSearch( + newAst, HiveParser.TOK_QUERY, HiveParser.TOK_INSERT, HiveParser.TOK_DESTINATION); + if (newDest == null) { + LOG.error("Cannot find destination after CBO; new ast is "+ newAst.dump()); + throw new SemanticException("Cannot find destination after CBO"); + } + replaceASTChild(newDest, cboCtx.nodeOfInterest); + return newAst; + } + default: throw new AssertionError("Unexpected type " + cboCtx.type); + } + } + + private ASTNode reAnalyzeCtasAfterCbo(ASTNode newAst) throws SemanticException { + // analyzeCreateTable uses this.ast, but doPhase1 doesn't, so only reset it here. + this.ast = newAst; + newAst = analyzeCreateTable(newAst, qb, null); + if (newAst == null) { + LOG.error("analyzeCreateTable failed to initialize CTAS after CBO;" + + " new ast is " + this.ast.dump()); + throw new SemanticException("analyzeCreateTable failed to initialize CTAS after CBO"); + } + return newAst; + } + + private boolean canHandleAstForCbo(ASTNode ast, QB qb, PreCboCtx cboCtx) { + int root = ast.getToken().getType(); + boolean needToLogMessage = LOG.isInfoEnabled(); + boolean isSupportedRoot = + root == HiveParser.TOK_QUERY || root == HiveParser.TOK_EXPLAIN || qb.isCTAS(); + // Check AST. + // Assumption: If top level QB is query then everything below it must also be Query + // Can there be an insert or CTAS that wouldn't + // be supported and would require additional checks similar to IsQuery? + boolean isSupportedType = + qb.getIsQuery() || qb.isCTAS() || cboCtx.type == PreCboCtx.Type.INSERT; + boolean result = isSupportedRoot && isSupportedType && createVwDesc == null; + if (!result) { + if (needToLogMessage) { + String msg = ""; + if (!isSupportedRoot) msg += "doesn't have QUERY or EXPLAIN as root and not a CTAS; "; + if (!isSupportedType) msg += "is not a query, CTAS, or insert; "; + if (createVwDesc != null) msg += "has create view; "; + + if (msg.isEmpty()) msg += "has some unspecified limitations; "; + LOG.info("Not invoking CBO because the statement " + msg.substring(0, msg.length() - 2)); + } + return false; + } + // Now check QB in more detail. canHandleQbForCbo returns null if query can be handled. + String msg = canHandleQbForCbo(qb, true, needToLogMessage); + if (msg == null) { + return true; + } + if (needToLogMessage) { + LOG.info("Not invoking CBO because the statement " + msg.substring(0, msg.length() - 2)); + } + return false; + } + + private class ASTSearcher { + private final LinkedList searchQueue = new LinkedList(); + /** + * Performs breadth-first search of the AST for a nested set of tokens. Tokens don't have to be + * each others' direct children, they can be separated by layers of other tokens. For each token + * in the list, the first one found is matched and there's no backtracking; thus, if AST has + * multiple instances of some token, of which only one matches, it is not guaranteed to be found. + * We use this for simple things. + * Not thread-safe - reuses searchQueue. + */ + public ASTNode simpleBreadthFirstSearch(ASTNode ast, int... tokens) { + searchQueue.clear(); + searchQueue.add(ast); + for (int i = 0; i < tokens.length; ++i) { + boolean found = false; + int token = tokens[i]; + while (!searchQueue.isEmpty() && !found) { + ASTNode next = searchQueue.poll(); + found = next.getType() == token; + if (found) { + if (i == tokens.length - 1) return next; + searchQueue.clear(); + } + for (int j = 0; j < next.getChildCount(); ++j) { + searchQueue.add((ASTNode)next.getChild(j)); + } + } + if (!found) return null; + } + return null; + } + } + + private void replaceASTChild(ASTNode child, ASTNode newChild) { + ASTNode parent = (ASTNode)child.parent; + int childIndex = child.childIndex; + parent.deleteChild(childIndex); + parent.insertChild(childIndex, newChild); + } + private void putAccessedColumnsToReadEntity(HashSet inputs, ColumnAccessInfo columnAccessInfo) { Map> tableToColumnAccessMap = columnAccessInfo.getTableToColumnAccessMap(); if (tableToColumnAccessMap != null && !tableToColumnAccessMap.isEmpty()) { @@ -10585,8 +10755,8 @@ private Map addDefaultProperties(Map tblProp) { * the semantic analyzer need to deal with the select statement with respect * to the SerDe and Storage Format. */ - private ASTNode analyzeCreateTable(ASTNode ast, QB qb) - throws SemanticException { + private ASTNode analyzeCreateTable( + ASTNode ast, QB qb, PreCboCtx cboCtx) throws SemanticException { String[] qualifiedTabName = getQualifiedTableName((ASTNode) ast.getChild(0)); String dbDotTab = getDotName(qualifiedTabName); @@ -10676,6 +10846,9 @@ private ASTNode analyzeCreateTable(ASTNode ast, QB qb) throw new SemanticException(ErrorMsg.CTAS_EXTTBL_COEXISTENCE.getMsg()); } command_type = CTAS; + if (cboCtx != null) { + cboCtx.set(PreCboCtx.Type.CTAS, child); + } selectStmt = child; break; case HiveParser.TOK_TABCOLLIST: @@ -12247,27 +12420,43 @@ protected boolean deleting() { /**** Temporary Place Holder For Optiq plan Gen, Optimizer ****/ - /* - * Entry point to Optimizations using Optiq. + /** + * Entry point to Optimizations using Optiq. Checks whether Optiq can handle the query. + * @param qbToChk Query block to check. + * @param verbose Whether return value should be verbose in case of failure. + * @return null if the query can be handled; non-null reason string if it cannot be. */ - private boolean canHandleQuery(QB qbToChk, boolean topLevelQB) { - boolean runOptiqPlanner = false; + private String canHandleQbForCbo(QB qbToChk, boolean topLevelQB, boolean verbose) { // Assumption: // 1. If top level QB is query then everything below it must also be Query // 2. Nested Subquery will return false for qbToChk.getIsQuery() - if ((!topLevelQB || qbToChk.getIsQuery()) - && (!conf.getBoolVar(ConfVars.HIVE_IN_TEST) || conf.getVar(ConfVars.HIVEMAPREDMODE).equalsIgnoreCase("nonstrict")) - && (!topLevelQB || (queryProperties.getJoinCount() > 1) || conf.getBoolVar(ConfVars.HIVE_IN_TEST)) - && !queryProperties.hasClusterBy() && !queryProperties.hasDistributeBy() - && !queryProperties.hasSortBy() && !queryProperties.hasPTF() - && !queryProperties.usesScript() && !queryProperties.hasMultiDestQuery() - && !queryProperties.hasLateralViews()) { - runOptiqPlanner = true; - } else { - LOG.info("Can not invoke CBO; query contains operators not supported for CBO."); - } - - return runOptiqPlanner; + boolean isInTest = conf.getBoolVar(ConfVars.HIVE_IN_TEST); + boolean isStrictTest = isInTest + && !conf.getVar(ConfVars.HIVEMAPREDMODE).equalsIgnoreCase("nonstrict"); + boolean hasEnoughJoins = !topLevelQB || (queryProperties.getJoinCount() > 1) || isInTest; + if (!isStrictTest && hasEnoughJoins && !queryProperties.hasClusterBy() + && !queryProperties.hasDistributeBy() && !queryProperties.hasSortBy() + && !queryProperties.hasPTF() && !queryProperties.usesScript() + && !queryProperties.hasMultiDestQuery() && !queryProperties.hasLateralViews()) { + return null; // Ok to run CBO. + } + + // Not ok to run CBO, build error message. + String msg = ""; + if (verbose) { + if (isStrictTest) msg += "is in test running in mode other than nonstrict; "; + if (!hasEnoughJoins) msg += "has too few joins; "; + if (queryProperties.hasClusterBy()) msg += "has cluster by; "; + if (queryProperties.hasDistributeBy()) msg += "has distribute by; "; + if (queryProperties.hasSortBy()) msg += "has sort by; "; + if (queryProperties.hasPTF()) msg += "has PTF; "; + if (queryProperties.usesScript()) msg += "uses scripts; "; + if (queryProperties.hasMultiDestQuery()) msg += "is a multi-destination query; "; + if (queryProperties.hasLateralViews()) msg += "has lateral views; "; + + if (msg.isEmpty()) msg += "has some unspecified limitations; "; + } + return msg; } private class OptiqBasedPlanner implements Frameworks.PlannerAction { @@ -12984,7 +13173,7 @@ private RelNode genFilterRelNode(QB qb, ASTNode searchCond, RelNode srcRel, QB qbSQ = new QB(subQuery.getOuterQueryId(), subQuery.getAlias(), true); qbSQ.setSubQueryDef(subQuery.getSubQuery()); Phase1Ctx ctx_1 = initPhase1Ctx(); - doPhase1(subQuery.getSubQueryAST(), qbSQ, ctx_1); + doPhase1(subQuery.getSubQueryAST(), qbSQ, ctx_1, null); getMetaData(qbSQ); RelNode subQueryRelNode = genLogicalPlan(qbSQ, false); aliasToRel.put(subQuery.getAlias(), subQueryRelNode); @@ -13012,7 +13201,7 @@ private RelNode genFilterRelNode(QB qb, ASTNode searchCond, RelNode srcRel, QB qbSQ_nic = new QB(subQuery.getOuterQueryId(), notInCheck.getAlias(), true); qbSQ_nic.setSubQueryDef(notInCheck.getSubQuery()); ctx_1 = initPhase1Ctx(); - doPhase1(notInCheck.getSubQueryAST(), qbSQ_nic, ctx_1); + doPhase1(notInCheck.getSubQueryAST(), qbSQ_nic, ctx_1, null); getMetaData(qbSQ_nic); RelNode subQueryNICRelNode = genLogicalPlan(qbSQ_nic, false); aliasToRel.put(notInCheck.getAlias(), subQueryNICRelNode); @@ -14069,11 +14258,14 @@ private RelNode genLogicalPlan(QB qb, boolean outerMostQB) throws SemanticExcept // First generate all the opInfos for the elements in the from clause Map aliasToRel = new HashMap(); - // 0. Check if we can handle the query - // This check is needed here because of SubQuery - if (!canHandleQuery(qb, false)) { - String msg = String.format("CBO Can not handle Sub Query"); - LOG.debug(msg); + // 0. Check if we can handle the SubQuery; + // canHandleQbForCbo returns null if the query can be handled. + String reason = canHandleQbForCbo(qb, false, LOG.isDebugEnabled()); + if (reason != null) { + String msg = "CBO can not handle Sub Query"; + if (LOG.isDebugEnabled()) { + LOG.debug(msg + " because it: " + reason); + } throw new OptiqSemanticException(msg); } diff --git a/ql/src/test/queries/clientpositive/cbo_correctness.q b/ql/src/test/queries/clientpositive/cbo_correctness.q index 4e44ba15b10b..bb328f658e0e 100644 --- a/ql/src/test/queries/clientpositive/cbo_correctness.q +++ b/ql/src/test/queries/clientpositive/cbo_correctness.q @@ -485,4 +485,4 @@ select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value fro -- Windowing select *, rank() over(partition by key order by value) as rr from src1; -select *, rank() over(partition by key order by value) from src1; \ No newline at end of file +select *, rank() over(partition by key order by value) from src1; diff --git a/ql/src/test/queries/clientpositive/ctas_colname.q b/ql/src/test/queries/clientpositive/ctas_colname.q index 53226265f60f..890971ec4a67 100644 --- a/ql/src/test/queries/clientpositive/ctas_colname.q +++ b/ql/src/test/queries/clientpositive/ctas_colname.q @@ -3,9 +3,11 @@ -- HIVE-4392, column aliases from expressionRR (GBY, etc.) are not valid name for table -- group by + + explain -create table summary as select *, sum(key), count(value) from src; -create table summary as select *, sum(key), count(value) from src; +create table summary as select *, key + 1, concat(value, value) from src limit 20; +create table summary as select *, key + 1, concat(value, value) from src limit 20; describe formatted summary; select * from summary; diff --git a/ql/src/test/queries/clientpositive/decimal_serde.q b/ql/src/test/queries/clientpositive/decimal_serde.q index cf3a86cd4d78..be7a4ac47cc2 100644 --- a/ql/src/test/queries/clientpositive/decimal_serde.q +++ b/ql/src/test/queries/clientpositive/decimal_serde.q @@ -15,12 +15,15 @@ SELECT * FROM DECIMAL_TEXT ORDER BY key, value; CREATE TABLE DECIMAL_RC STORED AS RCFile AS SELECT * FROM DECIMAL_TEXT; +describe formatted DECIMAL_RC; CREATE TABLE DECIMAL_LAZY_COL ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" STORED AS RCFile AS SELECT * FROM DECIMAL_RC; +describe formatted DECIMAL_LAZY_COL; + CREATE TABLE DECIMAL_SEQUENCE ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' diff --git a/ql/src/test/queries/clientpositive/insert0.q b/ql/src/test/queries/clientpositive/insert0.q new file mode 100644 index 000000000000..36d01b6669ed --- /dev/null +++ b/ql/src/test/queries/clientpositive/insert0.q @@ -0,0 +1,38 @@ +set hive.cbo.enable=true; + +DROP TABLE insert_into1; +DROP TABLE ctas_table; +DROP TABLE ctas_part; + +CREATE TABLE insert_into1 (key int, value string); + +INSERT OVERWRITE TABLE insert_into1 SELECT * from src ORDER BY key LIMIT 10; + +select * from insert_into1 order by key; + +INSERT INTO TABLE insert_into1 SELECT * from src ORDER BY key DESC LIMIT 10; + +select * from insert_into1 order by key; + +create table ctas_table as SELECT key, count(value) as foo from src GROUP BY key LIMIT 10; + +describe extended ctas_table; + +select * from ctas_table order by key; + + +set hive.exec.dynamic.partition=true; +SET hive.exec.dynamic.partition.mode=nonstrict; + +create table ctas_part (key int, value string) partitioned by (modkey bigint); + +insert overwrite table ctas_part partition (modkey) +select key, value, ceil(key / 100) from src where key is not null limit 10; + +select * from ctas_part order by key; + + + +DROP TABLE insert_into1; +DROP TABLE ctas_table; +DROP TABLE ctas_part; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/ctas_colname.q.out b/ql/src/test/results/clientpositive/ctas_colname.q.out index 97dacf6b601d..c26a66d209f8 100644 --- a/ql/src/test/results/clientpositive/ctas_colname.q.out +++ b/ql/src/test/results/clientpositive/ctas_colname.q.out @@ -3,16 +3,20 @@ PREHOOK: query: -- SORT_QUERY_RESULTS -- HIVE-4392, column aliases from expressionRR (GBY, etc.) are not valid name for table -- group by + + explain -create table summary as select *, sum(key), count(value) from src +create table summary as select *, key + 1, concat(value, value) from src limit 20 PREHOOK: type: CREATETABLE_AS_SELECT POSTHOOK: query: -- SORT_QUERY_RESULTS -- HIVE-4392, column aliases from expressionRR (GBY, etc.) are not valid name for table -- group by + + explain -create table summary as select *, sum(key), count(value) from src +create table summary as select *, key + 1, concat(value, value) from src limit 20 POSTHOOK: type: CREATETABLE_AS_SELECT STAGE DEPENDENCIES: Stage-1 is a root stage @@ -28,31 +32,27 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: key (type: string), value (type: string) - outputColumnNames: key, value + expressions: key (type: string), value (type: string), (key + 1) (type: double), concat(value, value) (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Group By Operator - aggregations: sum(key), count(value) - mode: hash - outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE - value expressions: _col0 (type: double), _col1 (type: bigint) + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: double), _col3 (type: string) Reduce Operator Tree: - Group By Operator - aggregations: sum(VALUE._col0), count(VALUE._col1) - mode: mergepartial - outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: double), _col1 (type: bigint), _col0 (type: double), _col1 (type: bigint) - outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: double), VALUE._col3 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -68,7 +68,7 @@ STAGE PLANS: Stage: Stage-3 Create Table Operator: Create Table - columns: _col0 double, _col1 bigint, _c1 double, _c2 bigint + columns: key string, value string, _c1 double, _c2 string input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat serde name: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe @@ -77,12 +77,12 @@ STAGE PLANS: Stage: Stage-2 Stats-Aggr Operator -PREHOOK: query: create table summary as select *, sum(key), count(value) from src +PREHOOK: query: create table summary as select *, key + 1, concat(value, value) from src limit 20 PREHOOK: type: CREATETABLE_AS_SELECT PREHOOK: Input: default@src PREHOOK: Output: database:default PREHOOK: Output: default@summary -POSTHOOK: query: create table summary as select *, sum(key), count(value) from src +POSTHOOK: query: create table summary as select *, key + 1, concat(value, value) from src limit 20 POSTHOOK: type: CREATETABLE_AS_SELECT POSTHOOK: Input: default@src POSTHOOK: Output: database:default @@ -95,10 +95,10 @@ POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@summary # col_name data_type comment -_col0 double -_col1 bigint +key string +value string _c1 double -_c2 bigint +_c2 string # Detailed Table Information Database: default @@ -110,9 +110,9 @@ Table Type: MANAGED_TABLE Table Parameters: COLUMN_STATS_ACCURATE true numFiles 1 - numRows 1 - rawDataSize 25 - totalSize 26 + numRows 20 + rawDataSize 620 + totalSize 640 #### A masked pattern was here #### # Storage Information @@ -133,7 +133,26 @@ POSTHOOK: query: select * from summary POSTHOOK: type: QUERY POSTHOOK: Input: default@summary #### A masked pattern was here #### -130091.0 500 130091.0 500 +128 val_128 129.0 val_128val_128 +150 val_150 151.0 val_150val_150 +165 val_165 166.0 val_165val_165 +193 val_193 194.0 val_193val_193 +213 val_213 214.0 val_213val_213 +224 val_224 225.0 val_224val_224 +238 val_238 239.0 val_238val_238 +255 val_255 256.0 val_255val_255 +265 val_265 266.0 val_265val_265 +27 val_27 28.0 val_27val_27 +273 val_273 274.0 val_273val_273 +278 val_278 279.0 val_278val_278 +311 val_311 312.0 val_311val_311 +369 val_369 370.0 val_369val_369 +401 val_401 402.0 val_401val_401 +409 val_409 410.0 val_409val_409 +484 val_484 485.0 val_484val_484 +66 val_66 67.0 val_66val_66 +86 val_86 87.0 val_86val_86 +98 val_98 99.0 val_98val_98 PREHOOK: query: -- window functions explain create table x4 as select *, rank() over(partition by key order by value) as rr from src1 diff --git a/ql/src/test/results/clientpositive/decimal_serde.q.out b/ql/src/test/results/clientpositive/decimal_serde.q.out index e461c2ef648f..d65179969586 100644 --- a/ql/src/test/results/clientpositive/decimal_serde.q.out +++ b/ql/src/test/results/clientpositive/decimal_serde.q.out @@ -96,6 +96,42 @@ POSTHOOK: type: CREATETABLE_AS_SELECT POSTHOOK: Input: default@decimal_text POSTHOOK: Output: database:default POSTHOOK: Output: default@DECIMAL_RC +PREHOOK: query: describe formatted DECIMAL_RC +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@decimal_rc +POSTHOOK: query: describe formatted DECIMAL_RC +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@decimal_rc +# col_name data_type comment + +key decimal(10,0) +value int + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Protect Mode: None +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 38 + rawDataSize 157 + totalSize 278 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 PREHOOK: query: CREATE TABLE DECIMAL_LAZY_COL ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" STORED AS RCFile AS @@ -112,6 +148,42 @@ POSTHOOK: type: CREATETABLE_AS_SELECT POSTHOOK: Input: default@decimal_rc POSTHOOK: Output: database:default POSTHOOK: Output: default@DECIMAL_LAZY_COL +PREHOOK: query: describe formatted DECIMAL_LAZY_COL +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@decimal_lazy_col +POSTHOOK: query: describe formatted DECIMAL_LAZY_COL +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@decimal_lazy_col +# col_name data_type comment + +key decimal(10,0) +value int + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Protect Mode: None +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: + COLUMN_STATS_ACCURATE true + numFiles 1 + numRows 38 + rawDataSize 157 + totalSize 278 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 PREHOOK: query: CREATE TABLE DECIMAL_SEQUENCE ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' diff --git a/ql/src/test/results/clientpositive/insert0.q.out b/ql/src/test/results/clientpositive/insert0.q.out new file mode 100644 index 000000000000..e83bae136cf2 --- /dev/null +++ b/ql/src/test/results/clientpositive/insert0.q.out @@ -0,0 +1,208 @@ +PREHOOK: query: DROP TABLE insert_into1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE insert_into1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE ctas_table +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE ctas_table +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE ctas_part +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE ctas_part +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE insert_into1 (key int, value string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@insert_into1 +POSTHOOK: query: CREATE TABLE insert_into1 (key int, value string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@insert_into1 +PREHOOK: query: INSERT OVERWRITE TABLE insert_into1 SELECT * from src ORDER BY key LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@insert_into1 +POSTHOOK: query: INSERT OVERWRITE TABLE insert_into1 SELECT * from src ORDER BY key LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@insert_into1 +POSTHOOK: Lineage: insert_into1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: insert_into1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select * from insert_into1 order by key +PREHOOK: type: QUERY +PREHOOK: Input: default@insert_into1 +#### A masked pattern was here #### +POSTHOOK: query: select * from insert_into1 order by key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@insert_into1 +#### A masked pattern was here #### +0 val_0 +0 val_0 +0 val_0 +10 val_10 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +PREHOOK: query: INSERT INTO TABLE insert_into1 SELECT * from src ORDER BY key DESC LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@insert_into1 +POSTHOOK: query: INSERT INTO TABLE insert_into1 SELECT * from src ORDER BY key DESC LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@insert_into1 +POSTHOOK: Lineage: insert_into1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: insert_into1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select * from insert_into1 order by key +PREHOOK: type: QUERY +PREHOOK: Input: default@insert_into1 +#### A masked pattern was here #### +POSTHOOK: query: select * from insert_into1 order by key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@insert_into1 +#### A masked pattern was here #### +0 val_0 +0 val_0 +0 val_0 +10 val_10 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +PREHOOK: query: create table ctas_table as SELECT key, count(value) as foo from src GROUP BY key LIMIT 10 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@src +PREHOOK: Output: database:default +PREHOOK: Output: default@ctas_table +POSTHOOK: query: create table ctas_table as SELECT key, count(value) as foo from src GROUP BY key LIMIT 10 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@src +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ctas_table +PREHOOK: query: describe extended ctas_table +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@ctas_table +POSTHOOK: query: describe extended ctas_table +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@ctas_table +key string +foo bigint + +#### A masked pattern was here #### +PREHOOK: query: select * from ctas_table order by key +PREHOOK: type: QUERY +PREHOOK: Input: default@ctas_table +#### A masked pattern was here #### +POSTHOOK: query: select * from ctas_table order by key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ctas_table +#### A masked pattern was here #### +0 3 +10 1 +100 2 +103 2 +104 2 +105 1 +11 1 +111 1 +113 2 +114 1 +PREHOOK: query: create table ctas_part (key int, value string) partitioned by (modkey bigint) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ctas_part +POSTHOOK: query: create table ctas_part (key int, value string) partitioned by (modkey bigint) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ctas_part +PREHOOK: query: insert overwrite table ctas_part partition (modkey) +select key, value, ceil(key / 100) from src where key is not null limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@ctas_part +POSTHOOK: query: insert overwrite table ctas_part partition (modkey) +select key, value, ceil(key / 100) from src where key is not null limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@ctas_part@modkey=1 +POSTHOOK: Output: default@ctas_part@modkey=2 +POSTHOOK: Output: default@ctas_part@modkey=3 +POSTHOOK: Output: default@ctas_part@modkey=4 +POSTHOOK: Output: default@ctas_part@modkey=5 +POSTHOOK: Lineage: ctas_part PARTITION(modkey=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: ctas_part PARTITION(modkey=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: ctas_part PARTITION(modkey=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: ctas_part PARTITION(modkey=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: ctas_part PARTITION(modkey=3).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: ctas_part PARTITION(modkey=3).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: ctas_part PARTITION(modkey=4).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: ctas_part PARTITION(modkey=4).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: ctas_part PARTITION(modkey=5).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: ctas_part PARTITION(modkey=5).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select * from ctas_part order by key +PREHOOK: type: QUERY +PREHOOK: Input: default@ctas_part +PREHOOK: Input: default@ctas_part@modkey=1 +PREHOOK: Input: default@ctas_part@modkey=2 +PREHOOK: Input: default@ctas_part@modkey=3 +PREHOOK: Input: default@ctas_part@modkey=4 +PREHOOK: Input: default@ctas_part@modkey=5 +#### A masked pattern was here #### +POSTHOOK: query: select * from ctas_part order by key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ctas_part +POSTHOOK: Input: default@ctas_part@modkey=1 +POSTHOOK: Input: default@ctas_part@modkey=2 +POSTHOOK: Input: default@ctas_part@modkey=3 +POSTHOOK: Input: default@ctas_part@modkey=4 +POSTHOOK: Input: default@ctas_part@modkey=5 +#### A masked pattern was here #### +27 val_27 1 +86 val_86 1 +98 val_98 1 +165 val_165 2 +238 val_238 3 +255 val_255 3 +278 val_278 3 +311 val_311 4 +409 val_409 5 +484 val_484 5 +PREHOOK: query: DROP TABLE insert_into1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@insert_into1 +PREHOOK: Output: default@insert_into1 +POSTHOOK: query: DROP TABLE insert_into1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@insert_into1 +POSTHOOK: Output: default@insert_into1 +PREHOOK: query: DROP TABLE ctas_table +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ctas_table +PREHOOK: Output: default@ctas_table +POSTHOOK: query: DROP TABLE ctas_table +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ctas_table +POSTHOOK: Output: default@ctas_table +PREHOOK: query: DROP TABLE ctas_part +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ctas_part +PREHOOK: Output: default@ctas_part +POSTHOOK: query: DROP TABLE ctas_part +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ctas_part +POSTHOOK: Output: default@ctas_part From 1adced8228c089a3b32d0516c5f69605b75aef75 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Mon, 27 Oct 2014 23:46:05 +0000 Subject: [PATCH 179/339] HIVE-8320 : Error in MetaException(message:Got exception: org.apache.thrift.transport.TTransportException java.net.SocketTimeoutException: Read timed out) (Gavin Kim via Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634743 13f79535-47bb-0310-9956-ffa450edef68 --- .../service/cli/session/HiveSessionImpl.java | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java index f021870cf48c..7206a1d2f61b 100644 --- a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java +++ b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java @@ -35,12 +35,13 @@ import org.apache.hadoop.hive.common.cli.IHiveFileProcessor; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; -import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.IMetaStoreClient; import org.apache.hadoop.hive.metastore.api.MetaException; import org.apache.hadoop.hive.ql.exec.FetchFormatter; import org.apache.hadoop.hive.ql.exec.ListSinkOperator; import org.apache.hadoop.hive.ql.history.HiveHistory; +import org.apache.hadoop.hive.ql.metadata.Hive; +import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.processors.SetProcessor; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hive.common.util.HiveVersionInfo; @@ -80,7 +81,6 @@ public class HiveSessionImpl implements HiveSession { private SessionManager sessionManager; private OperationManager operationManager; - private IMetaStoreClient metastoreClient = null; private final Set opHandleSet = new HashSet(); private boolean isOperationLogEnabled; private File sessionLogDir; @@ -315,14 +315,13 @@ public HiveConf getHiveConf() { @Override public IMetaStoreClient getMetaStoreClient() throws HiveSQLException { - if (metastoreClient == null) { - try { - metastoreClient = new HiveMetaStoreClient(getHiveConf()); - } catch (MetaException e) { - throw new HiveSQLException(e); - } + try { + return Hive.get(getHiveConf()).getMSC(); + } catch (HiveException e) { + throw new HiveSQLException("Failed to get metastore connection", e); + } catch (MetaException e) { + throw new HiveSQLException("Failed to get metastore connection", e); } - return metastoreClient; } @Override @@ -538,14 +537,6 @@ public OperationHandle getFunctions(String catalogName, String schemaName, Strin public void close() throws HiveSQLException { try { acquire(true); - /** - * For metadata operations like getTables(), getColumns() etc, - * the session allocates a private metastore handler which should be - * closed at the end of the session - */ - if (metastoreClient != null) { - metastoreClient.close(); - } // Iterate through the opHandles and close their operations for (OperationHandle opHandle : opHandleSet) { operationManager.closeOperation(opHandle); From 81de203a691058d70521731388ad5165ad188d64 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Tue, 28 Oct 2014 00:18:34 +0000 Subject: [PATCH 180/339] HIVE-8454: Select Operator does not rename column stats properly in case of select star (Prasanth J reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634752 13f79535-47bb-0310-9956-ffa450edef68 --- .../annotation/StatsRulesProcFactory.java | 39 +++--- .../hive/ql/parse/SemanticAnalyzer.java | 16 ++- .../hadoop/hive/ql/stats/StatsUtils.java | 15 ++- .../annotate_stats_groupby.q.out | 20 +-- .../annotate_stats_groupby2.q.out | 10 +- .../annotate_stats_join_pkfk.q.out | 24 ++-- .../results/clientpositive/lateral_view.q.out | 40 +++--- .../clientpositive/lateral_view_noalias.q.out | 8 +- .../clientpositive/lateral_view_ppd.q.out | 75 ++++++----- .../clientpositive/skewjoinopt10.q.out | 4 + .../results/clientpositive/tez/union7.q.out | 6 +- .../test/results/clientpositive/union15.q.out | 18 +-- .../test/results/clientpositive/union17.q.out | 12 +- .../test/results/clientpositive/union19.q.out | 14 +-- .../test/results/clientpositive/union21.q.out | 26 ++-- .../test/results/clientpositive/union26.q.out | 119 ++++++++++-------- .../test/results/clientpositive/union7.q.out | 14 +-- 17 files changed, 260 insertions(+), 200 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java index 357a47467685..d49eddbd6c0c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java @@ -150,28 +150,28 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, Statistics parentStats = parent.getStatistics(); AnnotateStatsProcCtx aspCtx = (AnnotateStatsProcCtx) procCtx; HiveConf conf = aspCtx.getConf(); + Statistics stats = null; - // SELECT (*) does not change the statistics. Just pass on the parent statistics - if (sop.getConf().isSelectStar()) { + if (parentStats != null) { try { - if (parentStats != null) { - sop.setStatistics(parentStats.clone()); - } + stats = parentStats.clone(); } catch (CloneNotSupportedException e) { throw new SemanticException(ErrorMsg.STATISTICS_CLONING_FAILED.getMsg()); } - return null; } try { if (satisfyPrecondition(parentStats)) { - Statistics stats = parentStats.clone(); - List colStats = - StatsUtils.getColStatisticsFromExprMap(conf, parentStats, sop.getColumnExprMap(), - sop.getSchema()); - long dataSize = StatsUtils.getDataSizeFromColumnStats(stats.getNumRows(), colStats); + // this will take care of mapping between input column names and output column names. The + // returned column stats will have the output column names. + List colStats = StatsUtils.getColStatisticsFromExprMap(conf, parentStats, + sop.getColumnExprMap(), sop.getSchema()); stats.setColumnStats(colStats); - stats.setDataSize(setMaxIfInvalid(dataSize)); + // in case of select(*) the data size does not change + if (!sop.getConf().isSelectStar() && !sop.getConf().isSelStarNoCompute()) { + long dataSize = StatsUtils.getDataSizeFromColumnStats(stats.getNumRows(), colStats); + stats.setDataSize(setMaxIfInvalid(dataSize)); + } sop.setStatistics(stats); if (isDebugEnabled) { @@ -1069,6 +1069,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, numAttr = keyExprs.size(); // infer PK-FK relationship in single attribute join case + pkfkInferred = false; inferPKFKRelationship(); // get the join keys from parent ReduceSink operators @@ -1183,7 +1184,6 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // update join statistics stats.setColumnStats(outColStats); long newRowCount = pkfkInferred ? newNumRows : computeNewRowCount(rowCounts, denom); - updateStatsForJoinType(stats, newRowCount, jop, rowCountParents,outInTabAlias); jop.setStatistics(stats); @@ -1257,7 +1257,8 @@ private void inferPKFKRelationship() { for (Float selectivity : parentsSel) { prodSelectivity *= selectivity; } - newNumRows = (long) (parentWithFK.getStatistics().getNumRows() * prodSelectivity); + newNumRows = (long) Math.ceil( + parentWithFK.getStatistics().getNumRows() * prodSelectivity); pkfkInferred = true; // some debug information @@ -1436,7 +1437,7 @@ private void updateStatsForJoinType(Statistics stats, long newNumRows, Map rowCountParents, Map outInTabAlias) { - if (newNumRows <= 0) { + if (newNumRows < 0) { LOG.info("STATS-" + jop.toString() + ": Overflow in number of rows." + newNumRows + " rows will be set to Long.MAX_VALUE"); } @@ -1711,6 +1712,8 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, Object... nodeOutputs) throws SemanticException { Operator op = (Operator) nd; OperatorDesc conf = op.getConf(); + AnnotateStatsProcCtx aspCtx = (AnnotateStatsProcCtx) procCtx; + HiveConf hconf = aspCtx.getConf(); if (conf != null) { Statistics stats = conf.getStatistics(); @@ -1727,7 +1730,9 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, stats.addToNumRows(parentStats.getNumRows()); stats.addToDataSize(parentStats.getDataSize()); stats.updateColumnStatsState(parentStats.getColumnStatsState()); - stats.addToColumnStats(parentStats.getColumnStats()); + List colStats = StatsUtils.getColStatisticsFromExprMap(hconf, + parentStats, op.getColumnExprMap(), op.getSchema()); + stats.addToColumnStats(colStats); op.getConf().setStatistics(stats); if (isDebugEnabled) { @@ -1805,7 +1810,7 @@ static void updateStats(Statistics stats, long newNumRows, boolean useColStats, Operator op, boolean updateNDV) { - if (newNumRows <= 0) { + if (newNumRows < 0) { LOG.info("STATS-" + op.toString() + ": Overflow in number of rows." + newNumRows + " rows will be set to Long.MAX_VALUE"); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 05a46f826570..d615aa336da8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -9804,14 +9804,25 @@ private Operator genLateralViewPlan(QB qb, Operator op, ASTNode lateralViewTree) throws SemanticException { RowResolver lvForwardRR = new RowResolver(); RowResolver source = opParseCtx.get(op).getRowResolver(); + Map lvfColExprMap = new HashMap(); + Map selColExprMap = new HashMap(); + List colList = new ArrayList(); + List colNames = new ArrayList(); for (ColumnInfo col : source.getColumnInfos()) { String[] tabCol = source.reverseLookup(col.getInternalName()); lvForwardRR.put(tabCol[0], tabCol[1], col); + ExprNodeDesc colExpr = new ExprNodeColumnDesc(col.getType(), col.getInternalName(), + col.getTabAlias(), false); + colList.add(colExpr); + colNames.add(colExpr.getName()); + lvfColExprMap.put(col.getInternalName(), colExpr); + selColExprMap.put(col.getInternalName(), colExpr.clone()); } Operator lvForward = putOpInsertMap(OperatorFactory.getAndMakeChild( new LateralViewForwardDesc(), new RowSchema(lvForwardRR.getColumnInfos()), op), lvForwardRR); + lvForward.setColumnExprMap(lvfColExprMap); // The order in which the two paths are added is important. The // lateral view join operator depends on having the select operator @@ -9820,9 +9831,12 @@ private Operator genLateralViewPlan(QB qb, Operator op, ASTNode lateralViewTree) // Get the all path by making a select(*). RowResolver allPathRR = opParseCtx.get(lvForward).getRowResolver(); // Operator allPath = op; + SelectDesc sDesc = new SelectDesc(colList, colNames, false); + sDesc.setSelStarNoCompute(true); Operator allPath = putOpInsertMap(OperatorFactory.getAndMakeChild( - new SelectDesc(true), new RowSchema(allPathRR.getColumnInfos()), + sDesc, new RowSchema(allPathRR.getColumnInfos()), lvForward), allPathRR); + allPath.setColumnExprMap(selColExprMap); int allColumns = allPathRR.getColumnInfos().size(); // Get the UDTF Path QB blankQb = new QB(null, null, false); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java index d10eddf01443..1b27c31916c1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java @@ -1020,7 +1020,20 @@ public static List getColStatisticsFromExprMap(HiveConf conf, colStat.setColumnName(outColName); colStat.setTableAlias(outTabAlias); } - cs.add(colStat); + if (colStat != null) { + cs.add(colStat); + } + } + + return cs; + } + + // In cases where column expression map or row schema is missing, just pass on the parent column + // stats. This could happen in cases like TS -> FIL where FIL does not map input column names to + // internal names. + if (colExprMap == null || rowSchema == null) { + if (parentStats.getColumnStats() != null) { + cs.addAll(parentStats.getColumnStats()); } } return cs; diff --git a/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out b/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out index 1459b44d1c9e..41a008336093 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out @@ -177,17 +177,17 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: int) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 4 Data size: 400 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 800 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 4 Data size: 400 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 800 Basic stats: COMPLETE Column stats: PARTIAL Group By Operator aggregations: min(_col1) keys: _col0 (type: string), _col2 (type: bigint) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 4 Data size: 416 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 832 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false table: @@ -203,7 +203,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: bigint) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: bigint) - Statistics: Num rows: 4 Data size: 416 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 832 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col2 (type: int) Reduce Operator Tree: Group By Operator @@ -211,14 +211,14 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: bigint) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 2 Data size: 208 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 832 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint), _col2 (type: int) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 2 Data size: 208 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 832 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 208 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 832 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -852,14 +852,14 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: bigint) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 2 Data size: 172 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 4 Data size: 344 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 2 Data size: 172 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 4 Data size: 344 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 172 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 4 Data size: 344 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out b/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out index f991191e9c09..2f85c928e433 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out @@ -274,25 +274,25 @@ STAGE PLANS: keys: state (type: string), votes (type: bigint) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 10 Data size: 860 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 688 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: bigint) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: bigint) - Statistics: Num rows: 10 Data size: 860 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 688 Basic stats: COMPLETE Column stats: PARTIAL Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string), KEY._col1 (type: bigint) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 2 Data size: 172 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 2 Data size: 172 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 2 Data size: 172 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out b/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out index c91e2f359df3..ea800a20aef5 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out @@ -485,14 +485,14 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col0 - Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 322 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 322 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 322 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -694,14 +694,14 @@ STAGE PLANS: 1 2 outputColumnNames: _col0 - Statistics: Num rows: 37 Data size: 148 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 38 Data size: 152 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 37 Data size: 148 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 38 Data size: 152 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 37 Data size: 148 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 38 Data size: 152 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -768,14 +768,14 @@ STAGE PLANS: 1 2 outputColumnNames: _col0 - Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 322 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 322 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 321 Data size: 1284 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 322 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -942,14 +942,14 @@ STAGE PLANS: 0 {VALUE._col0} 1 outputColumnNames: _col0 - Statistics: Num rows: 916 Data size: 3664 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 210 Data size: 840 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 916 Data size: 3664 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 210 Data size: 840 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 916 Data size: 3664 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 210 Data size: 840 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/lateral_view.q.out b/ql/src/test/results/clientpositive/lateral_view.q.out index 8b87c377bc9d..66c296831d79 100644 --- a/ql/src/test/results/clientpositive/lateral_view.q.out +++ b/ql/src/test/results/clientpositive/lateral_view.q.out @@ -142,10 +142,10 @@ STAGE PLANS: Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 3 - Statistics: Num rows: 3 Data size: 168 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 3 Data size: 168 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -166,10 +166,10 @@ STAGE PLANS: Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 3 - Statistics: Num rows: 3 Data size: 168 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 3 Data size: 168 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 3 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -208,10 +208,10 @@ STAGE PLANS: Select Operator expressions: _col5 (type: int) outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: int), _col6 (type: string) outputColumnNames: _col0, _col1 @@ -235,7 +235,7 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: int), _col6 (type: string) outputColumnNames: _col0, _col1 @@ -265,10 +265,10 @@ STAGE PLANS: Select Operator expressions: _col5 (type: int) outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: int), _col6 (type: string) outputColumnNames: _col0, _col1 @@ -292,7 +292,7 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: int), _col6 (type: string) outputColumnNames: _col0, _col1 @@ -339,14 +339,14 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col6 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col6 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 3 Statistics: Num rows: 3 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE @@ -366,11 +366,11 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col6 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col6 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 3 Statistics: Num rows: 3 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE @@ -394,14 +394,14 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 1000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col6 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col6 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 3 Statistics: Num rows: 3 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE @@ -421,11 +421,11 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col6 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col6 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 2000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 3 Statistics: Num rows: 3 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE diff --git a/ql/src/test/results/clientpositive/lateral_view_noalias.q.out b/ql/src/test/results/clientpositive/lateral_view_noalias.q.out index 9b6e9c46763b..e1445bf3a43b 100644 --- a/ql/src/test/results/clientpositive/lateral_view_noalias.q.out +++ b/ql/src/test/results/clientpositive/lateral_view_noalias.q.out @@ -28,10 +28,10 @@ STAGE PLANS: Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 2 - Statistics: Num rows: 2 Data size: 768 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 768 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -52,10 +52,10 @@ STAGE PLANS: Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 2 - Statistics: Num rows: 2 Data size: 768 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 768 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/lateral_view_ppd.q.out b/ql/src/test/results/clientpositive/lateral_view_ppd.q.out index b186192c2be2..12200302d03d 100644 --- a/ql/src/test/results/clientpositive/lateral_view_ppd.q.out +++ b/ql/src/test/results/clientpositive/lateral_view_ppd.q.out @@ -175,44 +175,23 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Lateral View Forward - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: value (type: string) - outputColumnNames: value - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Lateral View Join Operator - outputColumnNames: _col1, _col7 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col1 (type: string), _col7 (type: int) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Limit - Number of rows: 12 - Statistics: Num rows: 12 Data size: 120 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 12 Data size: 120 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - Select Operator - expressions: array(1,2,3) (type: array) - outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - UDTF Operator - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - function name: explode + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ds = '2008-04-08') and (hr = '12')) (type: boolean) + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Lateral View Forward + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: string) + outputColumnNames: value + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Lateral View Join Operator outputColumnNames: _col1, _col7 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string), _col7 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 12 Statistics: Num rows: 12 Data size: 120 Basic stats: COMPLETE Column stats: NONE @@ -223,6 +202,30 @@ STAGE PLANS: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Select Operator + expressions: array(1,2,3) (type: array) + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + UDTF Operator + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + function name: explode + Lateral View Join Operator + outputColumnNames: _col1, _col7 + Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: string), _col7 (type: int) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 12 + Statistics: Num rows: 12 Data size: 120 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 12 Data size: 120 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Stage: Stage-0 Fetch Operator @@ -233,12 +236,18 @@ STAGE PLANS: PREHOOK: query: SELECT value, myCol FROM (SELECT * FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol) a WHERE ds='2008-04-08' AND hr="12" LIMIT 12 PREHOOK: type: QUERY PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### POSTHOOK: query: SELECT value, myCol FROM (SELECT * FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol) a WHERE ds='2008-04-08' AND hr="12" LIMIT 12 POSTHOOK: type: QUERY POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### val_238 1 val_238 2 diff --git a/ql/src/test/results/clientpositive/skewjoinopt10.q.out b/ql/src/test/results/clientpositive/skewjoinopt10.q.out index 7ff82356559c..01a2cd202cfb 100644 --- a/ql/src/test/results/clientpositive/skewjoinopt10.q.out +++ b/ql/src/test/results/clientpositive/skewjoinopt10.q.out @@ -114,6 +114,8 @@ STAGE PLANS: Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: NONE Select Operator SELECT * : (no compute) + expressions: _col0 (type: string), _col1 (type: array) + outputColumnNames: org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc, org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: NONE Lateral View Join Operator outputColumnNames: _col0, _col1, _col2 @@ -160,6 +162,8 @@ STAGE PLANS: Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: NONE Select Operator SELECT * : (no compute) + expressions: _col0 (type: string), _col1 (type: array) + outputColumnNames: org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc, org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: NONE Lateral View Join Operator outputColumnNames: _col0, _col1, _col2 diff --git a/ql/src/test/results/clientpositive/tez/union7.q.out b/ql/src/test/results/clientpositive/tez/union7.q.out index 2971029c2544..91dc8885d4e9 100644 --- a/ql/src/test/results/clientpositive/tez/union7.q.out +++ b/ql/src/test/results/clientpositive/tez/union7.q.out @@ -92,14 +92,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 6 Data size: 600 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 6 Data size: 600 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 6 Data size: 600 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union15.q.out b/ql/src/test/results/clientpositive/union15.q.out index 9cac42bb8458..0e940fd25409 100644 --- a/ql/src/test/results/clientpositive/union15.q.out +++ b/ql/src/test/results/clientpositive/union15.q.out @@ -73,12 +73,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 25 Data size: 2400 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 25 Data size: 2400 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) TableScan alias: s2 @@ -98,12 +98,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 25 Data size: 2400 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 25 Data size: 2400 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) TableScan alias: s3 @@ -123,12 +123,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 25 Data size: 2400 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 25 Data size: 2400 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -136,14 +136,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 12 Data size: 1200 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 12 Data size: 1200 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 12 Data size: 1200 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union17.q.out b/ql/src/test/results/clientpositive/union17.q.out index 699fc7c98c58..2c2aa4a5d7a2 100644 --- a/ql/src/test/results/clientpositive/union17.q.out +++ b/ql/src/test/results/clientpositive/union17.q.out @@ -150,14 +150,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: final outputColumnNames: _col0, _col1 - Statistics: Num rows: 125 Data size: 24000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 250 Data size: 48000 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 125 Data size: 24000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 250 Data size: 48000 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 125 Data size: 24000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 250 Data size: 48000 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -193,14 +193,14 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string) mode: final outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 125 Data size: 47000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 250 Data size: 94000 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: string), _col2 (type: bigint) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 125 Data size: 47000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 250 Data size: 94000 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 125 Data size: 47000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 250 Data size: 94000 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union19.q.out b/ql/src/test/results/clientpositive/union19.q.out index 3e8fea3204c0..1d83ab4f9207 100644 --- a/ql/src/test/results/clientpositive/union19.q.out +++ b/ql/src/test/results/clientpositive/union19.q.out @@ -90,12 +90,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 250 Data size: 24000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 250 Data size: 24000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) Select Operator expressions: _col0 (type: string), _col1 (type: string), _col1 (type: string) @@ -127,12 +127,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 250 Data size: 24000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 250 Data size: 24000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) Select Operator expressions: _col0 (type: string), _col1 (type: string), _col1 (type: string) @@ -152,14 +152,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 125 Data size: 12500 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 125 Data size: 12500 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 125 Data size: 12500 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union21.q.out b/ql/src/test/results/clientpositive/union21.q.out index fb2328d17aee..a754e0577db4 100644 --- a/ql/src/test/results/clientpositive/union21.q.out +++ b/ql/src/test/results/clientpositive/union21.q.out @@ -60,12 +60,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 761 Data size: 70773 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 761 Data size: 70773 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) TableScan alias: src_thrift @@ -85,12 +85,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 761 Data size: 70773 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 761 Data size: 70773 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) TableScan alias: src @@ -110,12 +110,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 761 Data size: 70773 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 761 Data size: 70773 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) TableScan alias: src @@ -135,12 +135,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 761 Data size: 70773 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 761 Data size: 70773 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) TableScan alias: src @@ -160,12 +160,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 761 Data size: 70773 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 761 Data size: 70773 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -173,14 +173,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 380 Data size: 38000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 380 Data size: 38000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 380 Data size: 38000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union26.q.out b/ql/src/test/results/clientpositive/union26.q.out index 4f9e0d4fb118..cdc558a0b266 100644 --- a/ql/src/test/results/clientpositive/union26.q.out +++ b/ql/src/test/results/clientpositive/union26.q.out @@ -103,88 +103,91 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Lateral View Forward - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: key (type: string), value (type: string) - outputColumnNames: key, value - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Lateral View Join Operator - outputColumnNames: _col0, _col1, _col7 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Union - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE - Group By Operator - aggregations: count(1) - keys: _col0 (type: string), _col1 (type: string) - mode: hash - outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: string), _col1 (type: string) - sort order: ++ - Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE - value expressions: _col2 (type: bigint) - Select Operator - expressions: array(1,2,3) (type: array) - outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - UDTF Operator - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - function name: explode + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((ds = '2008-04-08') and (hr = '11')) (type: boolean) + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Lateral View Forward + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: key, value + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE Lateral View Join Operator outputColumnNames: _col0, _col1, _col7 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE value expressions: _col2 (type: bigint) + Select Operator + expressions: array(1,2,3) (type: array) + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + UDTF Operator + Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + function name: explode + Lateral View Join Operator + outputColumnNames: _col0, _col1, _col7 + Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE + Union + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(1) + keys: _col0 (type: string), _col1 (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string) + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + value expressions: _col2 (type: bigint) TableScan Union - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Group By Operator @@ -192,14 +195,14 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 637 Data size: 6767 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2137 Data size: 22703 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col2 (type: bigint), _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 637 Data size: 6767 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2137 Data size: 22703 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 637 Data size: 6767 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2137 Data size: 22703 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -235,6 +238,8 @@ PREHOOK: type: QUERY PREHOOK: Input: default@srcpart PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### POSTHOOK: query: SELECT count(1) as counts, @@ -260,6 +265,8 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@srcpart POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### 10 100 val_100 10 103 val_103 @@ -594,6 +601,8 @@ PREHOOK: type: QUERY PREHOOK: Input: default@srcpart PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### POSTHOOK: query: SELECT count(1) as counts, @@ -619,6 +628,8 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@srcpart POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### 10 100 val_100 10 103 val_103 @@ -953,6 +964,8 @@ PREHOOK: type: QUERY PREHOOK: Input: default@srcpart PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### POSTHOOK: query: SELECT count(1) as counts, @@ -978,6 +991,8 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@srcpart POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### 10 100 val_100 10 103 val_103 diff --git a/ql/src/test/results/clientpositive/union7.q.out b/ql/src/test/results/clientpositive/union7.q.out index 46ed3db60335..727ff5760985 100644 --- a/ql/src/test/results/clientpositive/union7.q.out +++ b/ql/src/test/results/clientpositive/union7.q.out @@ -69,12 +69,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 1248 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 13 Data size: 1248 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) TableScan alias: s2 @@ -94,12 +94,12 @@ STAGE PLANS: keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 13 Data size: 1248 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 13 Data size: 1248 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -107,14 +107,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 6 Data size: 600 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 6 Data size: 600 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 6 Data size: 600 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat From 1d32c39115d0d029adcca156d55993b9be2c3052 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Tue, 28 Oct 2014 02:51:57 +0000 Subject: [PATCH 181/339] HIVE-8624: Record counters don't work with Tez container reuse (Gunther Hagleitner, reviewed by Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634768 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java | 2 ++ ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java | 2 ++ .../org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java | 3 +++ 3 files changed, 7 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java index 45c056748bdb..4a8ca4716f61 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java @@ -391,6 +391,8 @@ protected void initializeOp(Configuration hconf) throws HiveException { bucketInspector = (IntObjectInspector)bucketField.getFieldObjectInspector(); } + numRows = 0; + String context = jc.get(Operator.CONTEXT_NAME_KEY, ""); if (context != null && !context.isEmpty()) { context = "_" + context.replace(" ","_"); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java index 910d6520f8d4..62aa5745e50d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java @@ -412,6 +412,8 @@ public void initializeOp(Configuration hconf) throws HiveException { state = State.INIT; statsMap.put(Counter.DESERIALIZE_ERRORS.toString(), deserialize_error_count); + numRows = 0; + String context = hconf.get(Operator.CONTEXT_NAME_KEY, ""); if (context != null && !context.isEmpty()) { context = "_" + context.replace(" ","_"); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java index 73e77ff4538e..bc915294f62d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java @@ -155,6 +155,9 @@ public static enum Counter { @Override protected void initializeOp(Configuration hconf) throws HiveException { try { + + numRows = 0; + String context = hconf.get(Operator.CONTEXT_NAME_KEY, ""); if (context != null && !context.isEmpty()) { context = "_" + context.replace(" ","_"); From 977938d3b47a47f80e1bd59c768a99926a0b8246 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Tue, 28 Oct 2014 06:40:15 +0000 Subject: [PATCH 182/339] HIVE-7623 : hive partition rename fails if filesystem cache is disabled (Navis via Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634788 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java index 963b184912df..fc6215a8b1ba 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java @@ -354,7 +354,7 @@ public Partition alterPartition(final RawStore msdb, Warehouse wh, final String srcFs = wh.getFs(srcPath); destFs = wh.getFs(destPath); // check that src and dest are on the same file system - if (srcFs != destFs) { + if (!FileUtils.equalsFileSystem(srcFs, destFs)) { throw new InvalidOperationException("table new location " + destPath + " is on a different file system than the old location " + srcPath + ". This operation is not supported"); From 0b834046499438207b2641ce9a328b0a8582be46 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Tue, 28 Oct 2014 17:02:06 +0000 Subject: [PATCH 183/339] HIVE-6669 sourcing txn-script from schema script results in failure for mysql & oracle (Alan Gates, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634918 13f79535-47bb-0310-9956-ffa450edef68 --- .../derby/hive-schema-0.14.0.derby.sql | 69 +++++++++++++- .../derby/hive-txn-schema-0.14.0.derby.sql | 88 ++++++++++++++++++ .../mssql/hive-txn-schema-0.14.0.mssql.sql | 1 + .../mysql/hive-schema-0.14.0.mysql.sql | 71 ++++++++++++++- .../mysql/hive-txn-schema-0.14.0.mysql.sql | 90 +++++++++++++++++++ .../oracle/hive-schema-0.14.0.oracle.sql | 69 +++++++++++++- .../oracle/hive-txn-schema-0.14.0.oracle.sql | 88 ++++++++++++++++++ .../postgres/hive-schema-0.14.0.postgres.sql | 69 +++++++++++++- .../hive-txn-schema-0.14.0.postgres.sql | 87 ++++++++++++++++++ 9 files changed, 628 insertions(+), 4 deletions(-) create mode 100644 metastore/scripts/upgrade/derby/hive-txn-schema-0.14.0.derby.sql create mode 100644 metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql create mode 100644 metastore/scripts/upgrade/mysql/hive-txn-schema-0.14.0.mysql.sql create mode 100644 metastore/scripts/upgrade/oracle/hive-txn-schema-0.14.0.oracle.sql create mode 100644 metastore/scripts/upgrade/postgres/hive-txn-schema-0.14.0.postgres.sql diff --git a/metastore/scripts/upgrade/derby/hive-schema-0.14.0.derby.sql b/metastore/scripts/upgrade/derby/hive-schema-0.14.0.derby.sql index 90d5e9b79750..1d0a63b74894 100644 --- a/metastore/scripts/upgrade/derby/hive-schema-0.14.0.derby.sql +++ b/metastore/scripts/upgrade/derby/hive-schema-0.14.0.derby.sql @@ -318,8 +318,75 @@ ALTER TABLE "APP"."SDS" ADD CONSTRAINT "SQL110318025505550" CHECK (IS_COMPRESSED -- ---------------------------- -- Transaction and Lock Tables +-- These are not part of package jdo, so if you are going to regenerate this file you need to manually add the following section back to the file. -- ---------------------------- -RUN 'hive-txn-schema-0.13.0.derby.sql'; +CREATE TABLE TXNS ( + TXN_ID bigint PRIMARY KEY, + TXN_STATE char(1) NOT NULL, + TXN_STARTED bigint NOT NULL, + TXN_LAST_HEARTBEAT bigint NOT NULL, + TXN_USER varchar(128) NOT NULL, + TXN_HOST varchar(128) NOT NULL +); + +CREATE TABLE TXN_COMPONENTS ( + TC_TXNID bigint REFERENCES TXNS (TXN_ID), + TC_DATABASE varchar(128) NOT NULL, + TC_TABLE varchar(128), + TC_PARTITION varchar(767) +); + +CREATE TABLE COMPLETED_TXN_COMPONENTS ( + CTC_TXNID bigint, + CTC_DATABASE varchar(128) NOT NULL, + CTC_TABLE varchar(128), + CTC_PARTITION varchar(767) +); + +CREATE TABLE NEXT_TXN_ID ( + NTXN_NEXT bigint NOT NULL +); +INSERT INTO NEXT_TXN_ID VALUES(1); + +CREATE TABLE HIVE_LOCKS ( + HL_LOCK_EXT_ID bigint NOT NULL, + HL_LOCK_INT_ID bigint NOT NULL, + HL_TXNID bigint, + HL_DB varchar(128) NOT NULL, + HL_TABLE varchar(128), + HL_PARTITION varchar(767), + HL_LOCK_STATE char(1) NOT NULL, + HL_LOCK_TYPE char(1) NOT NULL, + HL_LAST_HEARTBEAT bigint NOT NULL, + HL_ACQUIRED_AT bigint, + HL_USER varchar(128) NOT NULL, + HL_HOST varchar(128) NOT NULL, + PRIMARY KEY(HL_LOCK_EXT_ID, HL_LOCK_INT_ID) +); + +CREATE INDEX HL_TXNID_INDEX ON HIVE_LOCKS (HL_TXNID); + +CREATE TABLE NEXT_LOCK_ID ( + NL_NEXT bigint NOT NULL +); +INSERT INTO NEXT_LOCK_ID VALUES(1); + +CREATE TABLE COMPACTION_QUEUE ( + CQ_ID bigint PRIMARY KEY, + CQ_DATABASE varchar(128) NOT NULL, + CQ_TABLE varchar(128) NOT NULL, + CQ_PARTITION varchar(767), + CQ_STATE char(1) NOT NULL, + CQ_TYPE char(1) NOT NULL, + CQ_WORKER_ID varchar(128), + CQ_START bigint, + CQ_RUN_AS varchar(128) +); + +CREATE TABLE NEXT_COMPACTION_QUEUE_ID ( + NCQ_NEXT bigint NOT NULL +); +INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); -- ----------------------------------------------------------------- -- Record schema version. Should be the last step in the init script diff --git a/metastore/scripts/upgrade/derby/hive-txn-schema-0.14.0.derby.sql b/metastore/scripts/upgrade/derby/hive-txn-schema-0.14.0.derby.sql new file mode 100644 index 000000000000..d6c01b6bae2b --- /dev/null +++ b/metastore/scripts/upgrade/derby/hive-txn-schema-0.14.0.derby.sql @@ -0,0 +1,88 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the License); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an AS IS BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- +-- Tables for transaction management +-- +CREATE TABLE TXNS ( + TXN_ID bigint PRIMARY KEY, + TXN_STATE char(1) NOT NULL, + TXN_STARTED bigint NOT NULL, + TXN_LAST_HEARTBEAT bigint NOT NULL, + TXN_USER varchar(128) NOT NULL, + TXN_HOST varchar(128) NOT NULL +); + +CREATE TABLE TXN_COMPONENTS ( + TC_TXNID bigint REFERENCES TXNS (TXN_ID), + TC_DATABASE varchar(128) NOT NULL, + TC_TABLE varchar(128), + TC_PARTITION varchar(767) +); + +CREATE TABLE COMPLETED_TXN_COMPONENTS ( + CTC_TXNID bigint, + CTC_DATABASE varchar(128) NOT NULL, + CTC_TABLE varchar(128), + CTC_PARTITION varchar(767) +); + +CREATE TABLE NEXT_TXN_ID ( + NTXN_NEXT bigint NOT NULL +); +INSERT INTO NEXT_TXN_ID VALUES(1); + +CREATE TABLE HIVE_LOCKS ( + HL_LOCK_EXT_ID bigint NOT NULL, + HL_LOCK_INT_ID bigint NOT NULL, + HL_TXNID bigint, + HL_DB varchar(128) NOT NULL, + HL_TABLE varchar(128), + HL_PARTITION varchar(767), + HL_LOCK_STATE char(1) NOT NULL, + HL_LOCK_TYPE char(1) NOT NULL, + HL_LAST_HEARTBEAT bigint NOT NULL, + HL_ACQUIRED_AT bigint, + HL_USER varchar(128) NOT NULL, + HL_HOST varchar(128) NOT NULL, + PRIMARY KEY(HL_LOCK_EXT_ID, HL_LOCK_INT_ID) +); + +CREATE INDEX HL_TXNID_INDEX ON HIVE_LOCKS (HL_TXNID); + +CREATE TABLE NEXT_LOCK_ID ( + NL_NEXT bigint NOT NULL +); +INSERT INTO NEXT_LOCK_ID VALUES(1); + +CREATE TABLE COMPACTION_QUEUE ( + CQ_ID bigint PRIMARY KEY, + CQ_DATABASE varchar(128) NOT NULL, + CQ_TABLE varchar(128) NOT NULL, + CQ_PARTITION varchar(767), + CQ_STATE char(1) NOT NULL, + CQ_TYPE char(1) NOT NULL, + CQ_WORKER_ID varchar(128), + CQ_START bigint, + CQ_RUN_AS varchar(128) +); + +CREATE TABLE NEXT_COMPACTION_QUEUE_ID ( + NCQ_NEXT bigint NOT NULL +); +INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); + + + diff --git a/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql b/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql new file mode 100644 index 000000000000..933c9d59f655 --- /dev/null +++ b/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql @@ -0,0 +1 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more -- contributor license agreements. See the NOTICE file distributed with -- this work for additional information regarding copyright ownership. -- The ASF licenses this file to You under the Apache License, Version 2.0 -- (the License); you may not use this file except in compliance with -- the License. You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an AS IS BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- -- Tables for transaction management -- CREATE TABLE COMPACTION_QUEUE( CQ_ID int NOT NULL, CQ_DATABASE varchar(128) NOT NULL, CQ_TABLE varchar(128) NOT NULL, CQ_PARTITION varchar(767) NULL, CQ_STATE char(1) NOT NULL, CQ_TYPE char(1) NOT NULL, CQ_WORKER_ID varchar(128) NULL, CQ_START int NULL, CQ_RUN_AS varchar(128) NULL, PRIMARY KEY CLUSTERED ( CQ_ID ASC ) ); CREATE TABLE COMPLETED_TXN_COMPONENTS( CTC_TXNID int NULL, CTC_DATABASE varchar(128) NOT NULL, CTC_TABLE varchar(128) NULL, CTC_PARTITION varchar(767) NULL ); CREATE TABLE HIVE_LOCKS( HL_LOCK_EXT_ID int NOT NULL, HL_LOCK_INT_ID int NOT NULL, HL_TXNID int NULL, HL_DB varchar(128) NOT NULL, HL_TABLE varchar(128) NULL, HL_PARTITION varchar(767) NULL, HL_LOCK_STATE char(1) NOT NULL, HL_LOCK_TYPE char(1) NOT NULL, HL_LAST_HEARTBEAT int NOT NULL, HL_ACQUIRED_AT int NULL, HL_USER varchar(128) NOT NULL, HL_HOST varchar(128) NOT NULL, PRIMARY KEY CLUSTERED ( HL_LOCK_EXT_ID ASC, HL_LOCK_INT_ID ASC ) ); CREATE TABLE NEXT_COMPACTION_QUEUE_ID( NCQ_NEXT int NOT NULL ); INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); CREATE TABLE NEXT_LOCK_ID( NL_NEXT int NOT NULL ); INSERT INTO NEXT_LOCK_ID VALUES(1); CREATE TABLE NEXT_TXN_ID( NTXN_NEXT int NOT NULL ); INSERT INTO NEXT_TXN_ID VALUES(1); CREATE TABLE TXNS( TXN_ID int NOT NULL, TXN_STATE char(1) NOT NULL, TXN_STARTED int NOT NULL, TXN_LAST_HEARTBEAT int NOT NULL, TXN_USER varchar(128) NOT NULL, TXN_HOST varchar(128) NOT NULL, PRIMARY KEY CLUSTERED ( TXN_ID ASC ) ); CREATE TABLE TXN_COMPONENTS( TC_TXNID int NULL, TC_DATABASE varchar(128) NOT NULL, TC_TABLE varchar(128) NULL, TC_PARTITION varchar(767) NULL ); ALTER TABLE TXN_COMPONENTS WITH CHECK ADD FOREIGN KEY(TC_TXNID) REFERENCES TXNS (TXN_ID); \ No newline at end of file diff --git a/metastore/scripts/upgrade/mysql/hive-schema-0.14.0.mysql.sql b/metastore/scripts/upgrade/mysql/hive-schema-0.14.0.mysql.sql index b479aa2a902d..e44e7c22033c 100644 --- a/metastore/scripts/upgrade/mysql/hive-schema-0.14.0.mysql.sql +++ b/metastore/scripts/upgrade/mysql/hive-schema-0.14.0.mysql.sql @@ -798,8 +798,77 @@ CREATE TABLE IF NOT EXISTS `FUNC_RU` ( -- ---------------------------- -- Transaction and Lock Tables +-- These are not part of package jdo, so if you are going to regenerate this file you need to manually add the following section back to the file. -- ---------------------------- -SOURCE hive-txn-schema-0.13.0.mysql.sql; +CREATE TABLE TXNS ( + TXN_ID bigint PRIMARY KEY, + TXN_STATE char(1) NOT NULL, + TXN_STARTED bigint NOT NULL, + TXN_LAST_HEARTBEAT bigint NOT NULL, + TXN_USER varchar(128) NOT NULL, + TXN_HOST varchar(128) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE TXN_COMPONENTS ( + TC_TXNID bigint, + TC_DATABASE varchar(128) NOT NULL, + TC_TABLE varchar(128), + TC_PARTITION varchar(767), + FOREIGN KEY (TC_TXNID) REFERENCES TXNS (TXN_ID) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE COMPLETED_TXN_COMPONENTS ( + CTC_TXNID bigint, + CTC_DATABASE varchar(128) NOT NULL, + CTC_TABLE varchar(128), + CTC_PARTITION varchar(767) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE NEXT_TXN_ID ( + NTXN_NEXT bigint NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO NEXT_TXN_ID VALUES(1); + +CREATE TABLE HIVE_LOCKS ( + HL_LOCK_EXT_ID bigint NOT NULL, + HL_LOCK_INT_ID bigint NOT NULL, + HL_TXNID bigint, + HL_DB varchar(128) NOT NULL, + HL_TABLE varchar(128), + HL_PARTITION varchar(767), + HL_LOCK_STATE char(1) not null, + HL_LOCK_TYPE char(1) not null, + HL_LAST_HEARTBEAT bigint NOT NULL, + HL_ACQUIRED_AT bigint, + HL_USER varchar(128) NOT NULL, + HL_HOST varchar(128) NOT NULL, + PRIMARY KEY(HL_LOCK_EXT_ID, HL_LOCK_INT_ID), + KEY HIVE_LOCK_TXNID_INDEX (HL_TXNID) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE INDEX HL_TXNID_IDX ON HIVE_LOCKS (HL_TXNID); + +CREATE TABLE NEXT_LOCK_ID ( + NL_NEXT bigint NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO NEXT_LOCK_ID VALUES(1); + +CREATE TABLE COMPACTION_QUEUE ( + CQ_ID bigint PRIMARY KEY, + CQ_DATABASE varchar(128) NOT NULL, + CQ_TABLE varchar(128) NOT NULL, + CQ_PARTITION varchar(767), + CQ_STATE char(1) NOT NULL, + CQ_TYPE char(1) NOT NULL, + CQ_WORKER_ID varchar(128), + CQ_START bigint, + CQ_RUN_AS varchar(128) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE NEXT_COMPACTION_QUEUE_ID ( + NCQ_NEXT bigint NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); -- ----------------------------------------------------------------- -- Record schema version. Should be the last step in the init script diff --git a/metastore/scripts/upgrade/mysql/hive-txn-schema-0.14.0.mysql.sql b/metastore/scripts/upgrade/mysql/hive-txn-schema-0.14.0.mysql.sql new file mode 100644 index 000000000000..dfb97f40b575 --- /dev/null +++ b/metastore/scripts/upgrade/mysql/hive-txn-schema-0.14.0.mysql.sql @@ -0,0 +1,90 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- +-- Tables for transaction management +-- + +CREATE TABLE TXNS ( + TXN_ID bigint PRIMARY KEY, + TXN_STATE char(1) NOT NULL, + TXN_STARTED bigint NOT NULL, + TXN_LAST_HEARTBEAT bigint NOT NULL, + TXN_USER varchar(128) NOT NULL, + TXN_HOST varchar(128) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE TXN_COMPONENTS ( + TC_TXNID bigint, + TC_DATABASE varchar(128) NOT NULL, + TC_TABLE varchar(128), + TC_PARTITION varchar(767), + FOREIGN KEY (TC_TXNID) REFERENCES TXNS (TXN_ID) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE COMPLETED_TXN_COMPONENTS ( + CTC_TXNID bigint, + CTC_DATABASE varchar(128) NOT NULL, + CTC_TABLE varchar(128), + CTC_PARTITION varchar(767) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE NEXT_TXN_ID ( + NTXN_NEXT bigint NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO NEXT_TXN_ID VALUES(1); + +CREATE TABLE HIVE_LOCKS ( + HL_LOCK_EXT_ID bigint NOT NULL, + HL_LOCK_INT_ID bigint NOT NULL, + HL_TXNID bigint, + HL_DB varchar(128) NOT NULL, + HL_TABLE varchar(128), + HL_PARTITION varchar(767), + HL_LOCK_STATE char(1) not null, + HL_LOCK_TYPE char(1) not null, + HL_LAST_HEARTBEAT bigint NOT NULL, + HL_ACQUIRED_AT bigint, + HL_USER varchar(128) NOT NULL, + HL_HOST varchar(128) NOT NULL, + PRIMARY KEY(HL_LOCK_EXT_ID, HL_LOCK_INT_ID), + KEY HIVE_LOCK_TXNID_INDEX (HL_TXNID) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE INDEX HL_TXNID_IDX ON HIVE_LOCKS (HL_TXNID); + +CREATE TABLE NEXT_LOCK_ID ( + NL_NEXT bigint NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO NEXT_LOCK_ID VALUES(1); + +CREATE TABLE COMPACTION_QUEUE ( + CQ_ID bigint PRIMARY KEY, + CQ_DATABASE varchar(128) NOT NULL, + CQ_TABLE varchar(128) NOT NULL, + CQ_PARTITION varchar(767), + CQ_STATE char(1) NOT NULL, + CQ_TYPE char(1) NOT NULL, + CQ_WORKER_ID varchar(128), + CQ_START bigint, + CQ_RUN_AS varchar(128) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE NEXT_COMPACTION_QUEUE_ID ( + NCQ_NEXT bigint NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); + + diff --git a/metastore/scripts/upgrade/oracle/hive-schema-0.14.0.oracle.sql b/metastore/scripts/upgrade/oracle/hive-schema-0.14.0.oracle.sql index b810b3df0bd0..f1f71ce7d417 100644 --- a/metastore/scripts/upgrade/oracle/hive-schema-0.14.0.oracle.sql +++ b/metastore/scripts/upgrade/oracle/hive-schema-0.14.0.oracle.sql @@ -757,8 +757,75 @@ CREATE INDEX FUNC_RU_N49 ON FUNC_RU (FUNC_ID); ------------------------------ -- Transaction and lock tables +-- These are not part of package jdo, so if you are going to regenerate this file you need to manually add the following section back to the file. ------------------------------ -@hive-txn-schema-0.13.0.oracle.sql; +CREATE TABLE TXNS ( + TXN_ID NUMBER(19) PRIMARY KEY, + TXN_STATE char(1) NOT NULL, + TXN_STARTED NUMBER(19) NOT NULL, + TXN_LAST_HEARTBEAT NUMBER(19) NOT NULL, + TXN_USER varchar(128) NOT NULL, + TXN_HOST varchar(128) NOT NULL +); + +CREATE TABLE TXN_COMPONENTS ( + TC_TXNID NUMBER(19) REFERENCES TXNS (TXN_ID), + TC_DATABASE VARCHAR2(128) NOT NULL, + TC_TABLE VARCHAR2(128), + TC_PARTITION VARCHAR2(767) NULL +); + +CREATE TABLE COMPLETED_TXN_COMPONENTS ( + CTC_TXNID NUMBER(19), + CTC_DATABASE varchar(128) NOT NULL, + CTC_TABLE varchar(128), + CTC_PARTITION varchar(767) +); + +CREATE TABLE NEXT_TXN_ID ( + NTXN_NEXT NUMBER(19) NOT NULL +); +INSERT INTO NEXT_TXN_ID VALUES(1); + +CREATE TABLE HIVE_LOCKS ( + HL_LOCK_EXT_ID NUMBER(19) NOT NULL, + HL_LOCK_INT_ID NUMBER(19) NOT NULL, + HL_TXNID NUMBER(19), + HL_DB VARCHAR2(128) NOT NULL, + HL_TABLE VARCHAR2(128), + HL_PARTITION VARCHAR2(767), + HL_LOCK_STATE CHAR(1) NOT NULL, + HL_LOCK_TYPE CHAR(1) NOT NULL, + HL_LAST_HEARTBEAT NUMBER(19) NOT NULL, + HL_ACQUIRED_AT NUMBER(19), + HL_USER varchar(128) NOT NULL, + HL_HOST varchar(128) NOT NULL, + PRIMARY KEY(HL_LOCK_EXT_ID, HL_LOCK_INT_ID) +); + +CREATE INDEX HL_TXNID_INDEX ON HIVE_LOCKS (HL_TXNID); + +CREATE TABLE NEXT_LOCK_ID ( + NL_NEXT NUMBER(19) NOT NULL +); +INSERT INTO NEXT_LOCK_ID VALUES(1); + +CREATE TABLE COMPACTION_QUEUE ( + CQ_ID NUMBER(19) PRIMARY KEY, + CQ_DATABASE varchar(128) NOT NULL, + CQ_TABLE varchar(128) NOT NULL, + CQ_PARTITION varchar(767), + CQ_STATE char(1) NOT NULL, + CQ_TYPE char(1) NOT NULL, + CQ_WORKER_ID varchar(128), + CQ_START NUMBER(19), + CQ_RUN_AS varchar(128) +); + +CREATE TABLE NEXT_COMPACTION_QUEUE_ID ( + NCQ_NEXT NUMBER(19) NOT NULL +); +INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); -- ----------------------------------------------------------------- -- Record schema version. Should be the last step in the init script diff --git a/metastore/scripts/upgrade/oracle/hive-txn-schema-0.14.0.oracle.sql b/metastore/scripts/upgrade/oracle/hive-txn-schema-0.14.0.oracle.sql new file mode 100644 index 000000000000..7435ea862c94 --- /dev/null +++ b/metastore/scripts/upgrade/oracle/hive-txn-schema-0.14.0.oracle.sql @@ -0,0 +1,88 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the License); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an AS IS BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- +-- Tables for transaction management +-- + +CREATE TABLE TXNS ( + TXN_ID NUMBER(19) PRIMARY KEY, + TXN_STATE char(1) NOT NULL, + TXN_STARTED NUMBER(19) NOT NULL, + TXN_LAST_HEARTBEAT NUMBER(19) NOT NULL, + TXN_USER varchar(128) NOT NULL, + TXN_HOST varchar(128) NOT NULL +); + +CREATE TABLE TXN_COMPONENTS ( + TC_TXNID NUMBER(19) REFERENCES TXNS (TXN_ID), + TC_DATABASE VARCHAR2(128) NOT NULL, + TC_TABLE VARCHAR2(128), + TC_PARTITION VARCHAR2(767) NULL +); + +CREATE TABLE COMPLETED_TXN_COMPONENTS ( + CTC_TXNID NUMBER(19), + CTC_DATABASE varchar(128) NOT NULL, + CTC_TABLE varchar(128), + CTC_PARTITION varchar(767) +); + +CREATE TABLE NEXT_TXN_ID ( + NTXN_NEXT NUMBER(19) NOT NULL +); +INSERT INTO NEXT_TXN_ID VALUES(1); + +CREATE TABLE HIVE_LOCKS ( + HL_LOCK_EXT_ID NUMBER(19) NOT NULL, + HL_LOCK_INT_ID NUMBER(19) NOT NULL, + HL_TXNID NUMBER(19), + HL_DB VARCHAR2(128) NOT NULL, + HL_TABLE VARCHAR2(128), + HL_PARTITION VARCHAR2(767), + HL_LOCK_STATE CHAR(1) NOT NULL, + HL_LOCK_TYPE CHAR(1) NOT NULL, + HL_LAST_HEARTBEAT NUMBER(19) NOT NULL, + HL_ACQUIRED_AT NUMBER(19), + HL_USER varchar(128) NOT NULL, + HL_HOST varchar(128) NOT NULL, + PRIMARY KEY(HL_LOCK_EXT_ID, HL_LOCK_INT_ID) +); + +CREATE INDEX HL_TXNID_INDEX ON HIVE_LOCKS (HL_TXNID); + +CREATE TABLE NEXT_LOCK_ID ( + NL_NEXT NUMBER(19) NOT NULL +); +INSERT INTO NEXT_LOCK_ID VALUES(1); + +CREATE TABLE COMPACTION_QUEUE ( + CQ_ID NUMBER(19) PRIMARY KEY, + CQ_DATABASE varchar(128) NOT NULL, + CQ_TABLE varchar(128) NOT NULL, + CQ_PARTITION varchar(767), + CQ_STATE char(1) NOT NULL, + CQ_TYPE char(1) NOT NULL, + CQ_WORKER_ID varchar(128), + CQ_START NUMBER(19), + CQ_RUN_AS varchar(128) +); + +CREATE TABLE NEXT_COMPACTION_QUEUE_ID ( + NCQ_NEXT NUMBER(19) NOT NULL +); +INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); + + diff --git a/metastore/scripts/upgrade/postgres/hive-schema-0.14.0.postgres.sql b/metastore/scripts/upgrade/postgres/hive-schema-0.14.0.postgres.sql index 5358f50d3b83..22347c845719 100644 --- a/metastore/scripts/upgrade/postgres/hive-schema-0.14.0.postgres.sql +++ b/metastore/scripts/upgrade/postgres/hive-schema-0.14.0.postgres.sql @@ -1465,8 +1465,75 @@ GRANT ALL ON SCHEMA public TO PUBLIC; ------------------------------ -- Transaction and lock tables +-- These are not part of package jdo, so if you are going to regenerate this file you need to manually add the following section back to the file. ------------------------------ -\i hive-txn-schema-0.13.0.postgres.sql; +CREATE TABLE "txns" ( + "txn_id" bigint PRIMARY KEY, + "txn_state" char(1) NOT NULL, + "txn_started" bigint NOT NULL, + "txn_last_heartbeat" bigint NOT NULL, + "txn_user" varchar(128) NOT NULL, + "txn_host" varchar(128) NOT NULL +); + +CREATE TABLE "txn_components" ( + "tc_txnid" bigint REFERENCES "txns" ("txn_id"), + "tc_database" varchar(128) NOT NULL, + "tc_table" varchar(128), + "tc_partition" varchar(767) DEFAULT NULL +); + +CREATE TABLE "completed_txn_components" ( + "ctc_txnid" bigint, + "ctc_database" varchar(128) NOT NULL, + "ctc_table" varchar(128), + "ctc_partition" varchar(767) +); + +CREATE TABLE "next_txn_id" ( + "ntxn_next" bigint NOT NULL +); +INSERT INTO "next_txn_id" VALUES(1); + +CREATE TABLE "hive_locks" ( + "hl_lock_ext_id" bigint NOT NULL, + "hl_lock_int_id" bigint NOT NULL, + "hl_txnid" bigint, + "hl_db" varchar(128) NOT NULL, + "hl_table" varchar(128), + "hl_partition" varchar(767) DEFAULT NULL, + "hl_lock_state" char(1) NOT NULL, + "hl_lock_type" char(1) NOT NULL, + "hl_last_heartbeat" bigint NOT NULL, + "hl_acquired_at" bigint, + "hl_user" varchar(128) NOT NULL, + "hl_host" varchar(128) NOT NULL, + PRIMARY KEY("hl_lock_ext_id", "hl_lock_int_id") +); + +CREATE INDEX "hl_txnid_index" ON "hive_locks" USING hash ("hl_txnid"); + +CREATE TABLE "next_lock_id" ( + "nl_next" bigint NOT NULL +); +INSERT INTO "next_lock_id" VALUES(1); + +CREATE TABLE "compaction_queue" ( + "cq_id" bigint PRIMARY KEY, + "cq_database" varchar(128) NOT NULL, + "cq_table" varchar(128) NOT NULL, + "cq_partition" varchar(767), + "cq_state" char(1) NOT NULL, + "cq_type" char(1) NOT NULL, + "cq_worker_id" varchar(128), + "cq_start" bigint, + "cq_run_as" varchar(128) +); + +CREATE TABLE "next_compaction_queue_id" ( + "ncq_next" bigint NOT NULL +); +INSERT INTO "next_compaction_queue_id" VALUES(1); -- ----------------------------------------------------------------- -- Record schema version. Should be the last step in the init script diff --git a/metastore/scripts/upgrade/postgres/hive-txn-schema-0.14.0.postgres.sql b/metastore/scripts/upgrade/postgres/hive-txn-schema-0.14.0.postgres.sql new file mode 100644 index 000000000000..7676b8ce78aa --- /dev/null +++ b/metastore/scripts/upgrade/postgres/hive-txn-schema-0.14.0.postgres.sql @@ -0,0 +1,87 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- +-- Tables for transaction management +-- + +CREATE TABLE "txns" ( + "txn_id" bigint PRIMARY KEY, + "txn_state" char(1) NOT NULL, + "txn_started" bigint NOT NULL, + "txn_last_heartbeat" bigint NOT NULL, + "txn_user" varchar(128) NOT NULL, + "txn_host" varchar(128) NOT NULL +); + +CREATE TABLE "txn_components" ( + "tc_txnid" bigint REFERENCES "txns" ("txn_id"), + "tc_database" varchar(128) NOT NULL, + "tc_table" varchar(128), + "tc_partition" varchar(767) DEFAULT NULL +); + +CREATE TABLE "completed_txn_components" ( + "ctc_txnid" bigint, + "ctc_database" varchar(128) NOT NULL, + "ctc_table" varchar(128), + "ctc_partition" varchar(767) +); + +CREATE TABLE "next_txn_id" ( + "ntxn_next" bigint NOT NULL +); +INSERT INTO "next_txn_id" VALUES(1); + +CREATE TABLE "hive_locks" ( + "hl_lock_ext_id" bigint NOT NULL, + "hl_lock_int_id" bigint NOT NULL, + "hl_txnid" bigint, + "hl_db" varchar(128) NOT NULL, + "hl_table" varchar(128), + "hl_partition" varchar(767) DEFAULT NULL, + "hl_lock_state" char(1) NOT NULL, + "hl_lock_type" char(1) NOT NULL, + "hl_last_heartbeat" bigint NOT NULL, + "hl_acquired_at" bigint, + "hl_user" varchar(128) NOT NULL, + "hl_host" varchar(128) NOT NULL, + PRIMARY KEY("hl_lock_ext_id", "hl_lock_int_id") +); + +CREATE INDEX "hl_txnid_index" ON "hive_locks" USING hash ("hl_txnid"); + +CREATE TABLE "next_lock_id" ( + "nl_next" bigint NOT NULL +); +INSERT INTO "next_lock_id" VALUES(1); + +CREATE TABLE "compaction_queue" ( + "cq_id" bigint PRIMARY KEY, + "cq_database" varchar(128) NOT NULL, + "cq_table" varchar(128) NOT NULL, + "cq_partition" varchar(767), + "cq_state" char(1) NOT NULL, + "cq_type" char(1) NOT NULL, + "cq_worker_id" varchar(128), + "cq_start" bigint, + "cq_run_as" varchar(128) +); + +CREATE TABLE "next_compaction_queue_id" ( + "ncq_next" bigint NOT NULL +); +INSERT INTO "next_compaction_queue_id" VALUES(1); + From fb3dda2c5d88de027d5bdb0b4a08663e06410165 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Tue, 28 Oct 2014 17:20:10 +0000 Subject: [PATCH 184/339] HIVE-8628: NPE in case of shuffle join in tez (Vikram Dixit K via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634923 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/CommonMergeJoinOperator.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java index 55c0d8b27c1d..7487f7e061b0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java @@ -306,6 +306,10 @@ private void fetchNextGroup(Byte t) throws HiveException { public void closeOp(boolean abort) throws HiveException { joinFinalLeftData(); + if (!((joinKeysObjectInspectors != null) && (joinKeysObjectInspectors[alias] != null))) { + super.closeOp(abort); + } + // clean up for (int pos = 0; pos < order.length; pos++) { if (pos != posBigTable) { @@ -362,6 +366,9 @@ private void joinFinalLeftData() throws HiveException { joinOneGroup(); dataInCache = false; for (byte pos = 0; pos < order.length; pos++) { + if (candidateStorage[pos] == null) { + continue; + } if (this.candidateStorage[pos].rowCount() > 0) { dataInCache = true; break; From 229df44251ad58c8a3395b504585aa2094850f2d Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Tue, 28 Oct 2014 17:46:20 +0000 Subject: [PATCH 185/339] HIVE-8321: Fix serialization of TypeInfo for qualified types (Jason Dere, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634933 13f79535-47bb-0310-9956-ffa450edef68 --- .../clientpositive/cast_qualified_types.q | 9 ++++++++ .../clientpositive/cast_qualified_types.q.out | 21 +++++++++++++++++ .../serde2/typeinfo/BaseCharTypeInfo.java | 9 ++++++++ .../hive/serde2/typeinfo/CharTypeInfo.java | 1 + .../hive/serde2/typeinfo/DecimalTypeInfo.java | 23 +++++++++++++++++++ .../hive/serde2/typeinfo/VarcharTypeInfo.java | 1 + 6 files changed, 64 insertions(+) create mode 100644 ql/src/test/queries/clientpositive/cast_qualified_types.q create mode 100644 ql/src/test/results/clientpositive/cast_qualified_types.q.out diff --git a/ql/src/test/queries/clientpositive/cast_qualified_types.q b/ql/src/test/queries/clientpositive/cast_qualified_types.q new file mode 100644 index 000000000000..fe0abd494d81 --- /dev/null +++ b/ql/src/test/queries/clientpositive/cast_qualified_types.q @@ -0,0 +1,9 @@ +set hive.plan.serialization.format=javaXML; + +select + cast(key as decimal(10,2)) as c1, + cast(key as char(10)) as c2, + cast(key as varchar(10)) as c3 +from src +order by c1, c2, c3 +limit 1; diff --git a/ql/src/test/results/clientpositive/cast_qualified_types.q.out b/ql/src/test/results/clientpositive/cast_qualified_types.q.out new file mode 100644 index 000000000000..1924c5d04513 --- /dev/null +++ b/ql/src/test/results/clientpositive/cast_qualified_types.q.out @@ -0,0 +1,21 @@ +PREHOOK: query: select + cast(key as decimal(10,2)) as c1, + cast(key as char(10)) as c2, + cast(key as varchar(10)) as c3 +from src +order by c1, c2, c3 +limit 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: select + cast(key as decimal(10,2)) as c1, + cast(key as char(10)) as c2, + cast(key as varchar(10)) as c3 +from src +order by c1, c2, c3 +limit 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +0 0 0 diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/BaseCharTypeInfo.java b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/BaseCharTypeInfo.java index 132a79ae7d88..7e02f7ea73fa 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/BaseCharTypeInfo.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/BaseCharTypeInfo.java @@ -27,6 +27,10 @@ public abstract class BaseCharTypeInfo extends PrimitiveTypeInfo { public BaseCharTypeInfo() { } + public BaseCharTypeInfo(String typeName) { + super(typeName); + } + public BaseCharTypeInfo(String typeName, int length) { super(typeName); this.length = length; @@ -53,4 +57,9 @@ public static String getQualifiedName(String typeName, int length) { return sb.toString(); } + @Override + public void setTypeName(String typeName) { + // type name should already be set by subclass + return; + } } diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/CharTypeInfo.java b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/CharTypeInfo.java index 52fdac29bafc..610818e21be3 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/CharTypeInfo.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/CharTypeInfo.java @@ -25,6 +25,7 @@ public class CharTypeInfo extends BaseCharTypeInfo { // no-arg constructor to make kyro happy. public CharTypeInfo() { + super(serdeConstants.CHAR_TYPE_NAME); } public CharTypeInfo(int length) { diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/DecimalTypeInfo.java b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/DecimalTypeInfo.java index bd286092758a..cbe48029307a 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/DecimalTypeInfo.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/DecimalTypeInfo.java @@ -28,6 +28,7 @@ public class DecimalTypeInfo extends PrimitiveTypeInfo { // no-arg constructor to make kyro happy. public DecimalTypeInfo() { + super(serdeConstants.DECIMAL_TYPE_NAME); } public DecimalTypeInfo(int precision, int scale) { @@ -42,6 +43,12 @@ public String getTypeName() { return getQualifiedName(); } + @Override + public void setTypeName(String typeName) { + // No need to set type name, it should always be decimal + return; + } + @Override public boolean equals(Object other) { if (other == null || !(other instanceof DecimalTypeInfo)) { @@ -101,4 +108,20 @@ public boolean accept(TypeInfo other) { return this.precision() - this.scale() >= dti.precision() - dti.scale(); } + public int getPrecision() { + return precision; + } + + public void setPrecision(int precision) { + this.precision = precision; + } + + public int getScale() { + return scale; + } + + public void setScale(int scale) { + this.scale = scale; + } + } diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/VarcharTypeInfo.java b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/VarcharTypeInfo.java index 4550275a67b4..5ac2b46ac9ef 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/VarcharTypeInfo.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/VarcharTypeInfo.java @@ -25,6 +25,7 @@ public class VarcharTypeInfo extends BaseCharTypeInfo { // no-arg constructor to make kyro happy. public VarcharTypeInfo() { + super(serdeConstants.VARCHAR_TYPE_NAME); } public VarcharTypeInfo(int length) { From 91887535a80005d48020d3704f2e6aa831b97240 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Tue, 28 Oct 2014 20:39:13 +0000 Subject: [PATCH 186/339] HIVE-8631: Compressed transaction list cannot be parsed in job.xml (Alan Gates via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634973 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/common/ValidTxnListImpl.java | 64 ++----------------- .../hadoop/hive/common/TestValidTxnImpl.java | 2 - 2 files changed, 4 insertions(+), 62 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/common/ValidTxnListImpl.java b/common/src/java/org/apache/hadoop/hive/common/ValidTxnListImpl.java index 0a0e5d0a23cd..26528f9b31ae 100644 --- a/common/src/java/org/apache/hadoop/hive/common/ValidTxnListImpl.java +++ b/common/src/java/org/apache/hadoop/hive/common/ValidTxnListImpl.java @@ -18,23 +18,10 @@ package org.apache.hadoop.hive.common; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; import java.util.Arrays; -import java.util.zip.GZIPInputStream; -import java.util.zip.GZIPOutputStream; public class ValidTxnListImpl implements ValidTxnList { - static final private Log LOG = LogFactory.getLog(ValidTxnListImpl.class.getName()); - final static private int MAX_UNCOMPRESSED_LENGTH = 256; - final static private char COMPRESSION_MARKER = 'C'; - final static private String STRING_ENCODING = "ISO-8859-1"; - private long[] exceptions; private long highWatermark; @@ -108,25 +95,7 @@ public String writeToString() { buf.append(except); } } - if (buf.length() > MAX_UNCOMPRESSED_LENGTH) { - try { - ByteArrayOutputStream byteBuf = new ByteArrayOutputStream(); - GZIPOutputStream gzip = new GZIPOutputStream(byteBuf); - gzip.write(buf.toString().getBytes()); - gzip.close(); - StringBuilder buf2 = new StringBuilder(); - buf2.append(COMPRESSION_MARKER); - buf2.append(buf.length()); - buf2.append(':'); - buf2.append(byteBuf.toString(STRING_ENCODING)); - return buf2.toString(); - } catch (IOException e) { - LOG.error("Unable to compress transaction list, " + e.getMessage()); - throw new RuntimeException(e); - } - } else { - return buf.toString(); - } + return buf.toString(); } @Override @@ -135,36 +104,11 @@ public void readFromString(String src) { highWatermark = Long.MAX_VALUE; exceptions = new long[0]; } else { - String[] values; - if (src.charAt(0) == COMPRESSION_MARKER) { - try { - int colon = src.indexOf(':'); - int len = Integer.valueOf(src.substring(1, colon)); - ByteArrayInputStream byteBuf = - new ByteArrayInputStream(src.substring(colon + 1).getBytes(STRING_ENCODING)); - GZIPInputStream gzip = new GZIPInputStream(byteBuf); - byte[] buf = new byte[len]; - int bytesRead = 0; - int offset = 0; - int maxReadLen = len; - do { - bytesRead = gzip.read(buf, offset, maxReadLen); - offset += bytesRead; - maxReadLen -= bytesRead; - } while (maxReadLen > 0); - values = new String(buf).split(":"); - } catch (IOException e) { - LOG.error("Unable to decode compressed transaction list, " + e.getMessage()); - throw new RuntimeException(e); - } - - } else { - values = src.split(":"); - } + String[] values = src.split(":"); highWatermark = Long.parseLong(values[0]); exceptions = new long[values.length - 1]; - for (int i = 1; i < values.length; ++i) { - exceptions[i - 1] = Long.parseLong(values[i]); + for(int i = 1; i < values.length; ++i) { + exceptions[i-1] = Long.parseLong(values[i]); } } } diff --git a/common/src/test/org/apache/hadoop/hive/common/TestValidTxnImpl.java b/common/src/test/org/apache/hadoop/hive/common/TestValidTxnImpl.java index 7a4539da9c0e..8c14b20743f1 100644 --- a/common/src/test/org/apache/hadoop/hive/common/TestValidTxnImpl.java +++ b/common/src/test/org/apache/hadoop/hive/common/TestValidTxnImpl.java @@ -64,7 +64,6 @@ public void longEnoughToCompress() throws Exception { for (int i = 0; i < 1000; i++) exceptions[i] = i + 100; ValidTxnList txnList = new ValidTxnListImpl(exceptions, 2000); String str = txnList.writeToString(); - Assert.assertEquals('C', str.charAt(0)); ValidTxnList newList = new ValidTxnListImpl(); newList.readFromString(str); for (int i = 0; i < 100; i++) Assert.assertTrue(newList.isTxnCommitted(i)); @@ -79,7 +78,6 @@ public void readWriteConfig() throws Exception { for (int i = 0; i < 1000; i++) exceptions[i] = i + 100; ValidTxnList txnList = new ValidTxnListImpl(exceptions, 2000); String str = txnList.writeToString(); - Assert.assertEquals('C', str.charAt(0)); Configuration conf = new Configuration(); conf.set(ValidTxnList.VALID_TXNS_KEY, str); File tmpFile = File.createTempFile("TestValidTxnImpl", "readWriteConfig"); From df216662c9f891fcdca0a29f4268822284c2e64b Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Tue, 28 Oct 2014 20:42:55 +0000 Subject: [PATCH 187/339] HIVE-8605: HIVE-5799 breaks backward compatibility for time values in config (Alan Gates via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1634975 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 2 +- .../apache/hadoop/hive/conf/TestHiveConf.java | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 97b704866e41..519b1d6cec4e 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -2119,7 +2119,7 @@ private static String[] parseTime(String value) { public static TimeUnit unitFor(String unit, TimeUnit defaultUnit) { unit = unit.trim().toLowerCase(); - if (unit.isEmpty()) { + if (unit.isEmpty() || unit.equals("l")) { if (defaultUnit == null) { throw new IllegalArgumentException("Time unit is not specified"); } diff --git a/common/src/test/org/apache/hadoop/hive/conf/TestHiveConf.java b/common/src/test/org/apache/hadoop/hive/conf/TestHiveConf.java index fce46def2c1d..e9bde218e3ae 100644 --- a/common/src/test/org/apache/hadoop/hive/conf/TestHiveConf.java +++ b/common/src/test/org/apache/hadoop/hive/conf/TestHiveConf.java @@ -24,6 +24,8 @@ import org.junit.Assert; import org.junit.Test; +import java.util.concurrent.TimeUnit; + /** * TestHiveConf @@ -95,4 +97,24 @@ public void testColumnNameMapping() throws Exception { Assert.assertTrue(i == HiveConf.getPositionFromInternalName(HiveConf.getColumnInternalName(i))); } } + + @Test + public void testUnitFor() throws Exception { + Assert.assertEquals(TimeUnit.SECONDS, HiveConf.unitFor("L", TimeUnit.SECONDS)); + Assert.assertEquals(TimeUnit.MICROSECONDS, HiveConf.unitFor("", TimeUnit.MICROSECONDS)); + Assert.assertEquals(TimeUnit.DAYS, HiveConf.unitFor("d", null)); + Assert.assertEquals(TimeUnit.DAYS, HiveConf.unitFor("days", null)); + Assert.assertEquals(TimeUnit.HOURS, HiveConf.unitFor("h", null)); + Assert.assertEquals(TimeUnit.HOURS, HiveConf.unitFor("hours", null)); + Assert.assertEquals(TimeUnit.MINUTES, HiveConf.unitFor("m", null)); + Assert.assertEquals(TimeUnit.MINUTES, HiveConf.unitFor("minutes", null)); + Assert.assertEquals(TimeUnit.SECONDS, HiveConf.unitFor("s", null)); + Assert.assertEquals(TimeUnit.SECONDS, HiveConf.unitFor("seconds", null)); + Assert.assertEquals(TimeUnit.MILLISECONDS, HiveConf.unitFor("ms", null)); + Assert.assertEquals(TimeUnit.MILLISECONDS, HiveConf.unitFor("msecs", null)); + Assert.assertEquals(TimeUnit.MICROSECONDS, HiveConf.unitFor("us", null)); + Assert.assertEquals(TimeUnit.MICROSECONDS, HiveConf.unitFor("useconds", null)); + Assert.assertEquals(TimeUnit.NANOSECONDS, HiveConf.unitFor("ns", null)); + Assert.assertEquals(TimeUnit.NANOSECONDS, HiveConf.unitFor("nsecs", null)); + } } From ad25256fe56b85fb0f5a56490d9ff504ed84b6e3 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Wed, 29 Oct 2014 00:40:53 +0000 Subject: [PATCH 188/339] HIVE-8148: HDFS Path named with file:// instead of file:/// results in Unit test failures in Windows (Hari Subramaniyan via Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635015 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/cli/TestRCFileCat.java | 13 ++++++++----- .../hive/hcatalog/streaming/TestStreaming.java | 2 +- .../apache/hive/hcatalog/api/TestHCatClient.java | 2 +- ...eBasedMetastoreAuthorizationProviderWithACL.java | 4 ++++ .../java/org/apache/hive/jdbc/miniHS2/MiniHS2.java | 2 +- .../hive/ql/security/FolderPermissionBase.java | 7 ++++++- .../src/test/java/org/apache/hive/jdbc/TestSSL.java | 5 +++-- .../java/org/apache/hadoop/hive/ql/QTestUtil.java | 2 +- 8 files changed, 25 insertions(+), 12 deletions(-) diff --git a/cli/src/test/org/apache/hadoop/hive/cli/TestRCFileCat.java b/cli/src/test/org/apache/hadoop/hive/cli/TestRCFileCat.java index 7ee02e85bf2e..11ceb310ec09 100644 --- a/cli/src/test/org/apache/hadoop/hive/cli/TestRCFileCat.java +++ b/cli/src/test/org/apache/hadoop/hive/cli/TestRCFileCat.java @@ -25,6 +25,7 @@ import java.io.File; import java.io.IOException; import java.io.PrintStream; +import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; @@ -89,19 +90,19 @@ public void testRCFileCat() throws Exception { try { - String[] params = {"--verbose","file://" + template.getAbsolutePath() }; + String[] params = {"--verbose","file://" + template.toURI().getPath() }; assertEquals(0, fileCat.run(params)); assertTrue(dataOut.toString().contains("123\t456\t789\t1000\t5.3\thive and hadoop\t\tNULL")); assertTrue(dataOut.toString().contains("100\t200\t123\t1000\t5.3\thive and hadoop\t\tNULL")); assertTrue(dataOut.toString().contains("200\t400\t678\t1000\t4.8\thive and hadoop\t\tTEST")); dataOut.reset(); - params = new String[] { "--start=-10","--file-sizes","file://" + template.getAbsolutePath() }; + params = new String[] { "--start=-10","--file-sizes", "file://" + template.toURI().getPath() }; assertEquals(0, fileCat.run(params)); assertTrue(dataOut.toString().contains("File size (uncompressed): 105. File size (compressed): 134. Number of rows: 3.")); dataOut.reset(); - params = new String[] {"--start=0", "--column-sizes","file://" + template.getAbsolutePath() }; + params = new String[] {"--start=0", "--column-sizes","file://" + template.toURI().getPath() }; assertEquals(0, fileCat.run(params)); assertTrue(dataOut.toString().contains("0\t9\t17")); assertTrue(dataOut.toString().contains("1\t9\t17")); @@ -112,7 +113,8 @@ public void testRCFileCat() throws Exception { dataOut.reset(); - params = new String[] {"--start=0", "--column-sizes-pretty","file://" + template.getAbsolutePath() }; + params = new String[] {"--start=0", "--column-sizes-pretty", + "file://" + template.toURI().getPath() }; assertEquals(0, fileCat.run(params)); assertTrue(dataOut.toString().contains("Column 0: Uncompressed size: 9 Compressed size: 17")); assertTrue(dataOut.toString().contains("Column 1: Uncompressed size: 9 Compressed size: 17")); @@ -127,7 +129,8 @@ public void testRCFileCat() throws Exception { "[--column-sizes | --column-sizes-pretty] [--file-sizes] fileName")); dataErr.reset(); - params = new String[] { "--fakeParameter","file://" + template.getAbsolutePath()}; + params = new String[] { "--fakeParameter", + "file://" + template.toURI().getPath()}; assertEquals(-1, fileCat.run(params)); assertTrue(dataErr.toString().contains("RCFileCat [--start=start_offet] [--length=len] [--verbose] " + "[--column-sizes | --column-sizes-pretty] [--file-sizes] fileName")); diff --git a/hcatalog/streaming/src/test/org/apache/hive/hcatalog/streaming/TestStreaming.java b/hcatalog/streaming/src/test/org/apache/hive/hcatalog/streaming/TestStreaming.java index ec99728658fd..6d332be62748 100644 --- a/hcatalog/streaming/src/test/org/apache/hive/hcatalog/streaming/TestStreaming.java +++ b/hcatalog/streaming/src/test/org/apache/hive/hcatalog/streaming/TestStreaming.java @@ -731,7 +731,7 @@ public void createDbAndTable(IMetaStoreClient client, String databaseName, throws Exception { Database db = new Database(); db.setName(databaseName); - String dbLocation = "raw://" + dbFolder.newFolder(databaseName + ".db").getCanonicalPath(); + String dbLocation = "raw://" + dbFolder.newFolder(databaseName + ".db").toURI().getPath(); db.setLocationUri(dbLocation); client.createDatabase(db); diff --git a/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java b/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java index f9f7b04c313a..5ed66eda6069 100644 --- a/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java +++ b/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java @@ -157,7 +157,7 @@ public void testBasicDDLCommands() throws Exception { assertTrue(testDb.getProperties().size() == 0); String warehouseDir = System .getProperty("test.warehouse.dir", "/user/hive/warehouse"); - String expectedDir = fixPath(warehouseDir).replaceFirst("pfile:///", "pfile:/"); + String expectedDir = warehouseDir.replaceFirst("pfile:///", "pfile:/"); assertEquals(expectedDir + "/" + db + ".db", testDb.getLocation()); ArrayList cols = new ArrayList(); cols.add(new HCatFieldSchema("id", Type.INT, "id comment")); diff --git a/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProviderWithACL.java b/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProviderWithACL.java index a0d1023c0af9..99821955ef37 100644 --- a/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProviderWithACL.java +++ b/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProviderWithACL.java @@ -68,6 +68,10 @@ protected HiveConf createHiveConf() throws Exception { conf.setVar(HiveConf.ConfVars.METASTOREWAREHOUSE, warehouseDir.toString()); conf.setBoolVar(HiveConf.ConfVars.HIVE_WAREHOUSE_SUBDIR_INHERIT_PERMS, true); + // Set up scratch directory + Path scratchDir = new Path(new Path(fs.getUri()), "/scratchdir"); + conf.setVar(HiveConf.ConfVars.SCRATCHDIR, scratchDir.toString()); + return conf; } diff --git a/itests/hive-unit/src/main/java/org/apache/hive/jdbc/miniHS2/MiniHS2.java b/itests/hive-unit/src/main/java/org/apache/hive/jdbc/miniHS2/MiniHS2.java index ffad413de925..32b971cd9216 100644 --- a/itests/hive-unit/src/main/java/org/apache/hive/jdbc/miniHS2/MiniHS2.java +++ b/itests/hive-unit/src/main/java/org/apache/hive/jdbc/miniHS2/MiniHS2.java @@ -176,7 +176,7 @@ private MiniHS2(HiveConf hiveConf, boolean useMiniMR, boolean useMiniKdc, baseDfsDir = new Path(new Path(fs.getUri()), "/base"); } else { fs = FileSystem.getLocal(hiveConf); - baseDfsDir = new Path("file://"+ baseDir.getPath()); + baseDfsDir = new Path("file://"+ baseDir.toURI().getPath()); } if (useMiniKdc) { hiveConf.setVar(ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL, serverPrincipal); diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java index 7f8ca8764320..2bfb310289a4 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java @@ -83,10 +83,15 @@ public static void baseSetup() throws Exception { fs.mkdirs(warehouseDir); conf.setVar(ConfVars.METASTOREWAREHOUSE, warehouseDir.toString()); + // Assuming the tests are run either in C or D drive in Windows OS! dataFileDir = conf.get("test.data.files").replace('\\', '/') - .replace("c:", ""); + .replace("c:", "").replace("C:", "").replace("D:", "").replace("d:", ""); dataFilePath = new Path(dataFileDir, "kv1.txt"); + // Set up scratch directory + Path scratchDir = new Path(baseDfsDir, "scratchdir"); + conf.setVar(HiveConf.ConfVars.SCRATCHDIR, scratchDir.toString()); + //set hive conf vars conf.setBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY, false); conf.setBoolVar(HiveConf.ConfVars.HIVE_WAREHOUSE_SUBDIR_INHERIT_PERMS, true); diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestSSL.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestSSL.java index 0058cd3d621c..2bc8d73d81cd 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestSSL.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestSSL.java @@ -21,6 +21,7 @@ import static org.junit.Assert.fail; import java.io.File; +import java.net.URLEncoder; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; @@ -55,8 +56,8 @@ public class TestSSL { private Connection hs2Conn = null; private String dataFileDir = conf.get("test.data.files"); private Map confOverlay; - private final String SSL_CONN_PARAMS = ";ssl=true;sslTrustStore=" + dataFileDir + File.separator + - TRUST_STORE_NAME + ";trustStorePassword=" + KEY_STORE_PASSWORD; + private final String SSL_CONN_PARAMS = ";ssl=true;sslTrustStore=" + URLEncoder.encode(dataFileDir + File.separator + + TRUST_STORE_NAME) + ";trustStorePassword=" + KEY_STORE_PASSWORD; @BeforeClass public static void beforeTest() throws Exception { diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java index f5e35b806469..61bbc0aa966d 100644 --- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java @@ -305,7 +305,7 @@ public QTestUtil(String outDir, String logDir, MiniClusterType clusterType, this.outDir = outDir; this.logDir = logDir; if (confDir != null && !confDir.isEmpty()) { - HiveConf.setHiveSiteLocation(new URL("file://"+confDir+"/hive-site.xml")); + HiveConf.setHiveSiteLocation(new URL("file://"+ new File(confDir).toURI().getPath() + "/hive-site.xml")); System.out.println("Setting hive-site: "+HiveConf.getHiveSiteLocation()); } conf = new HiveConf(Driver.class); From e338f0c6e8ed392c1d4607e8d39e99d08e084564 Mon Sep 17 00:00:00 2001 From: Vikram Dixit K Date: Wed, 29 Oct 2014 00:41:41 +0000 Subject: [PATCH 189/339] HIVE-8597: SMB join small table side should use the same set of serialized payloads across tasks (Siddharth Seth via Vikram Dixit) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635016 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/tez/CustomPartitionVertex.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java index 3ec6a80f3871..297ce44c06dd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/CustomPartitionVertex.java @@ -32,6 +32,7 @@ import java.util.TreeMap; import java.util.TreeSet; +import com.google.common.collect.LinkedListMultimap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; @@ -109,7 +110,6 @@ public int compare(InputSplit inp1, InputSplit inp2) { VertexManagerPluginContext context; private InputConfigureVertexTasksEvent configureVertexTaskEvent; - private List dataInformationEvents; private int numBuckets = -1; private Configuration conf = null; private final SplitGrouper grouper = new SplitGrouper(); @@ -223,8 +223,6 @@ public void onRootVertexInitialized(String inputName, InputDescriptor inputDescr configureVertexTaskEvent = cEvent; LOG.info("Configure task for input name: " + inputName + " num tasks: " + configureVertexTaskEvent.getNumTasks()); - dataInformationEvents = - Lists.newArrayListWithCapacity(configureVertexTaskEvent.getNumTasks()); } if (event instanceof InputUpdatePayloadEvent) { // this event can never occur. If it does, fail. @@ -232,7 +230,6 @@ public void onRootVertexInitialized(String inputName, InputDescriptor inputDescr } else if (event instanceof InputDataInformationEvent) { dataInformationEventSeen = true; InputDataInformationEvent diEvent = (InputDataInformationEvent) event; - dataInformationEvents.add(diEvent); FileSplit fileSplit; try { fileSplit = getFileSplitFromEvent(diEvent); @@ -341,16 +338,26 @@ private void processAllSideEvents(String inputName, + " multi mr inputs. " + bucketToTaskMap); Integer[] numSplitsForTask = new Integer[taskCount]; + + Multimap bucketToSerializedSplitMap = LinkedListMultimap.create(); + + // Create the list of serialized splits for each bucket. for (Entry> entry : bucketToGroupedSplitMap.asMap().entrySet()) { + for (InputSplit split : entry.getValue()) { + MRSplitProto serializedSplit = MRInputHelpers.createSplitProto(split); + ByteBuffer bs = serializedSplit.toByteString().asReadOnlyByteBuffer(); + bucketToSerializedSplitMap.put(entry.getKey(), bs); + } + } + + for (Entry> entry : bucketToSerializedSplitMap.asMap().entrySet()) { Collection destTasks = bucketToTaskMap.get(entry.getKey()); for (Integer task : destTasks) { int count = 0; - for (InputSplit split : entry.getValue()) { + for (ByteBuffer buf : entry.getValue()) { count++; - MRSplitProto serializedSplit = MRInputHelpers.createSplitProto(split); InputDataInformationEvent diEvent = - InputDataInformationEvent.createWithSerializedPayload(task, serializedSplit - .toByteString().asReadOnlyByteBuffer()); + InputDataInformationEvent.createWithSerializedPayload(count, buf); diEvent.setTargetIndex(task); taskEvents.add(diEvent); } @@ -472,6 +479,7 @@ private void processAllEvents(String inputName, context.setVertexParallelism(taskCount, VertexLocationHint.create(grouper .createTaskLocationHints(finalSplits.toArray(new InputSplit[finalSplits.size()]))), emMap, rootInputSpecUpdate); + finalSplits.clear(); } UserPayload getBytePayload(Multimap routingTable) throws IOException { From 42ea996a8dee634631570c726c24643ef1fd08cc Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Wed, 29 Oct 2014 00:46:47 +0000 Subject: [PATCH 190/339] HIVE-8635 : CBO: ambiguous_col negative test no longer fails (Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635019 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index d615aa336da8..355bc1f814af 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -14093,7 +14093,6 @@ private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel) throws SemanticExcep QBParseInfo qbp = getQBParseInfo(qb); String selClauseName = qbp.getClauseNames().iterator().next(); ASTNode selExprList = qbp.getSelForClause(selClauseName); - LOG.error("TODO# for select clause, got " + selExprList.dump()); // 2.Row resolvers for input, output RowResolver out_rwsch = new RowResolver(); @@ -14215,7 +14214,10 @@ && isRegex(unescapeIdentifier(expr.getChild(1).getText()), conf)) { exp.getWritableObjectInspector(), tabAlias, false); colInfo.setSkewedCol((exp instanceof ExprNodeColumnDesc) ? ((ExprNodeColumnDesc) exp) .isSkewedCol() : false); - out_rwsch.put(tabAlias, colAlias, colInfo); + if (!out_rwsch.putWithCheck(tabAlias, colAlias, null, colInfo)) { + throw new OptiqSemanticException("Cannot add column to RR: " + tabAlias + "." + + colAlias + " => " + colInfo + " due to duplication, see previous warnings"); + } if (exp instanceof ExprNodeColumnDesc) { ExprNodeColumnDesc colExp = (ExprNodeColumnDesc) exp; From eee3ff33ad7dc933097c3844b59e5ea235b97ddb Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 29 Oct 2014 01:41:33 +0000 Subject: [PATCH 191/339] HIVE-8614: Upgrade hive to use tez version 0.5.2-SNAPSHOT (Vikram Dixit K via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635022 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 1 + pom.xml | 2 +- .../hive/ql/exec/CommonMergeJoinOperator.java | 4 +--- .../tez/auto_sortmerge_join_5.q.out | Bin 35840 -> 34532 bytes 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 36dc95a9d1d8..9b5845b706fa 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -223,6 +223,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ auto_sortmerge_join_2.q,\ auto_sortmerge_join_3.q,\ auto_sortmerge_join_4.q,\ + auto_sortmerge_join_5.q,\ auto_sortmerge_join_7.q,\ auto_sortmerge_join_8.q,\ auto_sortmerge_join_9.q diff --git a/pom.xml b/pom.xml index 8a63eb1e124c..8333a0dda018 100644 --- a/pom.xml +++ b/pom.xml @@ -151,7 +151,7 @@ 1.0.1 1.7.5 4.0.4 - 0.5.1 + 0.5.2-SNAPSHOT 2.2.0 1.1 0.2 diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java index 7487f7e061b0..7a4e7cafd4c1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java @@ -306,9 +306,7 @@ private void fetchNextGroup(Byte t) throws HiveException { public void closeOp(boolean abort) throws HiveException { joinFinalLeftData(); - if (!((joinKeysObjectInspectors != null) && (joinKeysObjectInspectors[alias] != null))) { - super.closeOp(abort); - } + super.closeOp(abort); // clean up for (int pos = 0; pos < order.length; pos++) { diff --git a/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_5.q.out b/ql/src/test/results/clientpositive/tez/auto_sortmerge_join_5.q.out index d2385926656f61a2832a1af0c36ee6b4e5ed54ce..b42bac78780444d8be48a66d57d754cbab20166b 100644 GIT binary patch delta 182 zcmZpe!Stk;X@j58J&i_%jke=NB*`GRQKdtWaxf-s-ld<#GkI1d r*JPcv@X4ITp_6rl37f9THu+Z(H_!&J&2hyOQEk|~ugnr;`X(y?@K{N& delta 138 zcmaFT%hWJ~X@j2-pKoG;f}w(qt^$Z*Jo!z6(&R9qb(_z~PGp>XIsY4rv4XALvFS#P1?Lc=mz6vhh$eq iMuW*fb(`m=IC4%d4iVmLryIeu`CbB>+Gf7kYnlKKJ1?IA From 7ca03cd1ae77f643b8f6efc814c3c47b9a6ecacb Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 29 Oct 2014 04:35:33 +0000 Subject: [PATCH 192/339] HIVE-6586: Update parameters in HiveConf.java after commit HIVE-6037 (Lefty Leverenz via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635039 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 212 ++++++++++++------ 1 file changed, 142 insertions(+), 70 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 519b1d6cec4e..d6db1fc76a0f 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -272,8 +272,9 @@ public static enum ConfVars { DYNAMICPARTITIONING("hive.exec.dynamic.partition", true, "Whether or not to allow dynamic partitions in DML/DDL."), DYNAMICPARTITIONINGMODE("hive.exec.dynamic.partition.mode", "strict", - "In strict mode, the user must specify at least one static partition \n" + - "in case the user accidentally overwrites all partitions."), + "In strict mode, the user must specify at least one static partition\n" + + "in case the user accidentally overwrites all partitions.\n" + + "In nonstrict mode all partitions are allowed to be dynamic."), DYNAMICPARTITIONMAXPARTS("hive.exec.max.dynamic.partitions", 1000, "Maximum number of dynamic partitions allowed to be created in total."), DYNAMICPARTITIONMAXPARTSPERNODE("hive.exec.max.dynamic.partitions.pernode", 100, @@ -492,20 +493,33 @@ public static enum ConfVars { "However, it doesn't work correctly with integral values that are not normalized (e.g. have\n" + "leading zeroes, like 0012). If metastore direct SQL is enabled and works, this optimization\n" + "is also irrelevant."), - METASTORE_TRY_DIRECT_SQL("hive.metastore.try.direct.sql", true, ""), - METASTORE_TRY_DIRECT_SQL_DDL("hive.metastore.try.direct.sql.ddl", true, ""), + METASTORE_TRY_DIRECT_SQL("hive.metastore.try.direct.sql", true, + "Whether the Hive metastore should try to use direct SQL queries instead of the\n" + + "DataNucleus for certain read paths. This can improve metastore performance when\n" + + "fetching many partitions or column statistics by orders of magnitude; however, it\n" + + "is not guaranteed to work on all RDBMS-es and all versions. In case of SQL failures,\n" + + "the metastore will fall back to the DataNucleus, so it's safe even if SQL doesn't\n" + + "work for all queries on your datastore. If all SQL queries fail (for example, your\n" + + "metastore is backed by MongoDB), you might want to disable this to save the\n" + + "try-and-fall-back cost."), + METASTORE_TRY_DIRECT_SQL_DDL("hive.metastore.try.direct.sql.ddl", true, + "Same as hive.metastore.try.direct.sql, for read statements within a transaction that\n" + + "modifies metastore data. Due to non-standard behavior in Postgres, if a direct SQL\n" + + "select query has incorrect syntax or something similar inside a transaction, the\n" + + "entire transaction will fail and fall-back to DataNucleus will not be possible. You\n" + + "should disable the usage of direct SQL inside transactions if that happens in your case."), METASTORE_DISALLOW_INCOMPATIBLE_COL_TYPE_CHANGES( "hive.metastore.disallow.incompatible.col.type.changes", false, - "If true (default is false), ALTER TABLE operations which change the type of \n" + - "a column (say STRING) to an incompatible type (say MAP) are disallowed. \n" + + "If true (default is false), ALTER TABLE operations which change the type of a\n" + + "column (say STRING) to an incompatible type (say MAP) are disallowed.\n" + "RCFile default SerDe (ColumnarSerDe) serializes the values in such a way that the\n" + "datatypes can be converted from string to any type. The map is also serialized as\n" + - "a string, which can be read as a string as well. However, with any binary \n" + + "a string, which can be read as a string as well. However, with any binary\n" + "serialization, this is not true. Blocking the ALTER TABLE prevents ClassCastExceptions\n" + - "when subsequently trying to access old partitions. \n" + + "when subsequently trying to access old partitions.\n" + "\n" + - "Primitive types like INT, STRING, BIGINT, etc are compatible with each other and are \n" + - "not blocked. \n" + + "Primitive types like INT, STRING, BIGINT, etc., are compatible with each other and are\n" + + "not blocked.\n" + "\n" + "See HIVE-4409 for more details."), @@ -578,8 +592,10 @@ public static enum ConfVars { HIVEJOBNAMELENGTH("hive.jobname.length", 50, "max jobname length"), // hive jar - HIVEJAR("hive.jar.path", "", ""), - HIVEAUXJARS("hive.aux.jars.path", "", ""), + HIVEJAR("hive.jar.path", "", + "The location of hive_cli.jar that is used when submitting jobs in a separate jvm."), + HIVEAUXJARS("hive.aux.jars.path", "", + "The location of the plugin jars that contain implementations of user defined functions and serdes."), // reloadable jars HIVERELOADABLEJARS("hive.reloadable.aux.jars.path", "", @@ -587,9 +603,9 @@ public static enum ConfVars { + "used as the auxiliary classes like creating a UDF or SerDe."), // hive added files and jars - HIVEADDEDFILES("hive.added.files.path", "", ""), - HIVEADDEDJARS("hive.added.jars.path", "", ""), - HIVEADDEDARCHIVES("hive.added.archives.path", "", ""), + HIVEADDEDFILES("hive.added.files.path", "", "This an internal parameter."), + HIVEADDEDJARS("hive.added.jars.path", "", "This an internal parameter."), + HIVEADDEDARCHIVES("hive.added.archives.path", "", "This an internal parameter."), HIVE_CURRENT_DATABASE("hive.current.database", "", "Database name used by current session. Internal usage only.", true), @@ -812,10 +828,10 @@ public static enum ConfVars { "if hive.merge.mapfiles is true, and for map-reduce jobs if hive.merge.mapredfiles is true."), HIVEMERGERCFILEBLOCKLEVEL("hive.merge.rcfile.block.level", true, ""), HIVEMERGEORCFILESTRIPELEVEL("hive.merge.orcfile.stripe.level", true, - "When hive.merge.mapfiles or hive.merge.mapredfiles is enabled while writing a\n" + - " table with ORC file format, enabling this config will do stripe level fast merge\n" + - " for small ORC files. Note that enabling this config will not honor padding tolerance\n" + - " config (hive.exec.orc.block.padding.tolerance)."), + "When hive.merge.mapfiles, hive.merge.mapredfiles or hive.merge.tezfiles is enabled\n" + + "while writing a table with ORC file format, enabling this config will do stripe-level\n" + + "fast merge for small ORC files. Note that enabling this config will not honor the\n" + + "padding tolerance config (hive.exec.orc.block.padding.tolerance)."), HIVEUSEEXPLICITRCFILEHEADER("hive.exec.rcfile.use.explicit.header", true, "If this is set the header for RCFiles will simply be RCF. If this is not\n" + @@ -831,28 +847,37 @@ public static enum ConfVars { HIVE_ORC_FILE_MEMORY_POOL("hive.exec.orc.memory.pool", 0.5f, "Maximum fraction of heap that can be used by ORC file writers"), HIVE_ORC_WRITE_FORMAT("hive.exec.orc.write.format", null, - "Define the version of the file to write"), + "Define the version of the file to write. Possible values are 0.11 and 0.12.\n" + + "If this parameter is not defined, ORC will use the run length encoding (RLE)\n" + + "introduced in Hive 0.12. Any value other than 0.11 results in the 0.12 encoding."), HIVE_ORC_DEFAULT_STRIPE_SIZE("hive.exec.orc.default.stripe.size", 64L * 1024 * 1024, - "Define the default ORC stripe size"), + "Define the default ORC stripe size, in bytes."), HIVE_ORC_DEFAULT_BLOCK_SIZE("hive.exec.orc.default.block.size", 256L * 1024 * 1024, "Define the default file system block size for ORC files."), HIVE_ORC_DICTIONARY_KEY_SIZE_THRESHOLD("hive.exec.orc.dictionary.key.size.threshold", 0.8f, "If the number of keys in a dictionary is greater than this fraction of the total number of\n" + "non-null rows, turn off dictionary encoding. Use 1 to always use dictionary encoding."), - HIVE_ORC_DEFAULT_ROW_INDEX_STRIDE("hive.exec.orc.default.row.index.stride", 10000, "Define the default ORC index stride"), + HIVE_ORC_DEFAULT_ROW_INDEX_STRIDE("hive.exec.orc.default.row.index.stride", 10000, + "Define the default ORC index stride in number of rows. (Stride is the number of rows\n" + + "an index entry represents.)"), HIVE_ORC_ROW_INDEX_STRIDE_DICTIONARY_CHECK("hive.orc.row.index.stride.dictionary.check", true, "If enabled dictionary check will happen after first row index stride (default 10000 rows)\n" + "else dictionary check will happen before writing first stripe. In both cases, the decision\n" + "to use dictionary or not will be retained thereafter."), - HIVE_ORC_DEFAULT_BUFFER_SIZE("hive.exec.orc.default.buffer.size", 256 * 1024, "Define the default ORC buffer size"), - HIVE_ORC_DEFAULT_BLOCK_PADDING("hive.exec.orc.default.block.padding", true, "Define the default block padding"), + HIVE_ORC_DEFAULT_BUFFER_SIZE("hive.exec.orc.default.buffer.size", 256 * 1024, + "Define the default ORC buffer size, in bytes."), + HIVE_ORC_DEFAULT_BLOCK_PADDING("hive.exec.orc.default.block.padding", true, + "Define the default block padding, which pads stripes to the HDFS block boundaries."), HIVE_ORC_BLOCK_PADDING_TOLERANCE("hive.exec.orc.block.padding.tolerance", 0.05f, - "Define the tolerance for block padding as a percentage of stripe size.\n" + - "For the defaults of 64Mb ORC stripe and 256Mb HDFS blocks, a maximum of 3.2Mb will be reserved for padding within the 256Mb block. \n" + - "In that case, if the available size within the block is more than 3.2Mb, a new smaller stripe will be inserted to fit within that space. \n" + - "This will make sure that no stripe written will cross block boundaries and cause remote reads within a node local task."), + "Define the tolerance for block padding as a decimal fraction of stripe size (for\n" + + "example, the default value 0.05 is 5% of the stripe size). For the defaults of 64Mb\n" + + "ORC stripe and 256Mb HDFS blocks, the default block padding tolerance of 5% will\n" + + "reserve a maximum of 3.2Mb for padding within the 256Mb block. In that case, if the\n" + + "available size within the block is more than 3.2Mb, a new smaller stripe will be\n" + + "inserted to fit within that space. This will make sure that no stripe written will\n" + + "cross block boundaries and cause remote reads within a node local task."), HIVE_ORC_DEFAULT_COMPRESS("hive.exec.orc.default.compress", "ZLIB", "Define the default compression codec for ORC file"), HIVE_ORC_ENCODING_STRATEGY("hive.exec.orc.encoding.strategy", "SPEED", new StringSet("SPEED", "COMPRESSION"), @@ -875,7 +900,8 @@ public static enum ConfVars { "If ORC reader encounters corrupt data, this value will be used to determine\n" + "whether to skip the corrupt data or throw exception. The default behavior is to throw exception."), - HIVE_ORC_ZEROCOPY("hive.exec.orc.zerocopy", false, "Use zerocopy reads with ORC."), + HIVE_ORC_ZEROCOPY("hive.exec.orc.zerocopy", false, + "Use zerocopy reads with ORC. (This requires Hadoop 2.3 or later.)"), HIVE_LAZYSIMPLE_EXTENDED_BOOLEAN_LITERAL("hive.lazysimple.extended_boolean_literal", false, "LazySimpleSerde uses this property to determine if it treats 'T', 't', 'F', 'f',\n" + @@ -961,8 +987,8 @@ public static enum ConfVars { HIVETEZCONTAINERSIZE("hive.tez.container.size", -1, "By default Tez will spawn containers of the size of a mapper. This can be used to overwrite."), HIVETEZCPUVCORES("hive.tez.cpu.vcores", -1, - "By default Tez will ask for however many cpus map-reduce is configured to use per container. " - +"This can be used to overwrite."), + "By default Tez will ask for however many cpus map-reduce is configured to use per container.\n" + + "This can be used to overwrite."), HIVETEZJAVAOPTS("hive.tez.java.opts", null, "By default Tez will use the Java options from map tasks. This can be used to overwrite."), HIVETEZLOGLEVEL("hive.tez.log.level", "INFO", @@ -1112,8 +1138,10 @@ public static enum ConfVars { HIVESTATSAUTOGATHER("hive.stats.autogather", true, "A flag to gather statistics automatically during the INSERT OVERWRITE command."), HIVESTATSDBCLASS("hive.stats.dbclass", "fs", new PatternSet("jdbc(:.*)", "hbase", "counter", "custom", "fs"), - "The storage that stores temporary Hive statistics. Currently, jdbc, hbase, counter and custom type are supported." - ), // StatsSetupConst.StatDB + "The storage that stores temporary Hive statistics. In filesystem based statistics collection ('fs'), \n" + + "each task writes statistics it has collected in a file on the filesystem, which will be aggregated \n" + + "after the job has finished. Supported values are fs (filesystem), jdbc:database (where database \n" + + "can be derby, mysql, etc.), hbase, counter, and custom as defined in StatsSetupConst.java."), // StatsSetupConst.StatDB HIVESTATSJDBCDRIVER("hive.stats.jdbcdriver", "org.apache.derby.jdbc.EmbeddedDriver", "The JDBC driver for the database that stores temporary Hive statistics."), @@ -1251,8 +1279,8 @@ public static enum ConfVars { "org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager, " + "2. When HiveServer2 supports service discovery via Zookeeper."), HIVE_ZOOKEEPER_CLIENT_PORT("hive.zookeeper.client.port", "2181", - "The port of ZooKeeper servers to talk to. " + - "If the list of Zookeeper servers specified in hive.zookeeper.quorum," + + "The port of ZooKeeper servers to talk to.\n" + + "If the list of Zookeeper servers specified in hive.zookeeper.quorum\n" + "does not contain port numbers, this value is used."), HIVE_ZOOKEEPER_SESSION_TIMEOUT("hive.zookeeper.session.timeout", 600*1000, "ZooKeeper client's session timeout. The client is disconnected, and as a result, all locks released, \n" + @@ -1264,42 +1292,69 @@ public static enum ConfVars { // Transactions HIVE_TXN_MANAGER("hive.txn.manager", - "org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager", ""), + "org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager", + "Set to org.apache.hadoop.hive.ql.lockmgr.DbTxnManager as part of turning on Hive\n" + + "transactions, which also requires appropriate settings for hive.compactor.initiator.on,\n" + + "hive.compactor.worker.threads, hive.support.concurrency (true), hive.enforce.bucketing\n" + + "(true), and hive.exec.dynamic.partition.mode (nonstrict).\n" + + "The default DummyTxnManager replicates pre-Hive-0.13 behavior and provides\n" + + "no transactions."), HIVE_TXN_TIMEOUT("hive.txn.timeout", "300s", new TimeValidator(TimeUnit.SECONDS), "time after which transactions are declared aborted if the client has not sent a heartbeat."), HIVE_TXN_MAX_OPEN_BATCH("hive.txn.max.open.batch", 1000, "Maximum number of transactions that can be fetched in one call to open_txns().\n" + - "Increasing this will decrease the number of delta files created when\n" + - "streaming data into Hive. But it will also increase the number of\n" + - "open transactions at any given time, possibly impacting read performance."), + "This controls how many transactions streaming agents such as Flume or Storm open\n" + + "simultaneously. The streaming agent then writes that number of entries into a single\n" + + "file (per Flume agent or Storm bolt). Thus increasing this value decreases the number\n" + + "of delta files created by streaming agents. But it also increases the number of open\n" + + "transactions that Hive has to track at any given time, which may negatively affect\n" + + "read performance."), HIVE_COMPACTOR_INITIATOR_ON("hive.compactor.initiator.on", false, - "Whether to run the compactor's initiator thread in this metastore instance or not."), + "Whether to run the initiator and cleaner threads on this metastore instance or not.\n" + + "Set this to true on one instance of the Thrift metastore service as part of turning\n" + + "on Hive transactions. For a complete list of parameters required for turning on\n" + + "transactions, see hive.txn.manager."), HIVE_COMPACTOR_WORKER_THREADS("hive.compactor.worker.threads", 0, - "Number of compactor worker threads to run on this metastore instance."), + "How many compactor worker threads to run on this metastore instance. Set this to a\n" + + "positive number on one or more instances of the Thrift metastore service as part of\n" + + "turning on Hive transactions. For a complete list of parameters required for turning\n" + + "on transactions, see hive.txn.manager.\n" + + "Worker threads spawn MapReduce jobs to do compactions. They do not do the compactions\n" + + "themselves. Increasing the number of worker threads will decrease the time it takes\n" + + "tables or partitions to be compacted once they are determined to need compaction.\n" + + "It will also increase the background load on the Hadoop cluster as more MapReduce jobs\n" + + "will be running in the background."), HIVE_COMPACTOR_WORKER_TIMEOUT("hive.compactor.worker.timeout", "86400s", new TimeValidator(TimeUnit.SECONDS), - "Time before a given compaction in working state is declared a failure\n" + - "and returned to the initiated state."), + "Time in seconds after which a compaction job will be declared failed and the\n" + + "compaction re-queued."), HIVE_COMPACTOR_CHECK_INTERVAL("hive.compactor.check.interval", "300s", new TimeValidator(TimeUnit.SECONDS), - "Time between checks to see if any partitions need compacted.\n" + - "This should be kept high because each check for compaction requires many calls against the NameNode."), + "Time in seconds between checks to see if any tables or partitions need to be\n" + + "compacted. This should be kept high because each check for compaction requires\n" + + "many calls against the NameNode.\n" + + "Decreasing this value will reduce the time it takes for compaction to be started\n" + + "for a table or partition that requires compaction. However, checking if compaction\n" + + "is needed requires several calls to the NameNode for each table or partition that\n" + + "has had a transaction done on it since the last major compaction. So decreasing this\n" + + "value will increase the load on the NameNode."), HIVE_COMPACTOR_DELTA_NUM_THRESHOLD("hive.compactor.delta.num.threshold", 10, - "Number of delta files that must exist in a directory before the compactor will attempt\n" + - "a minor compaction."), + "Number of delta directories in a table or partition that will trigger a minor\n" + + "compaction."), HIVE_COMPACTOR_DELTA_PCT_THRESHOLD("hive.compactor.delta.pct.threshold", 0.1f, - "Percentage (by size) of base that deltas can be before major compaction is initiated."), + "Percentage (fractional) size of the delta files relative to the base that will trigger\n" + + "a major compaction. (1.0 = 100%, so the default 0.1 = 10%.)"), HIVE_COMPACTOR_ABORTEDTXN_THRESHOLD("hive.compactor.abortedtxn.threshold", 1000, - "Number of aborted transactions involving a particular table or partition before major\n" + - "compaction is initiated."), + "Number of aborted transactions involving a given table or partition that will trigger\n" + + "a major compaction."), HIVE_COMPACTOR_CLEANER_RUN_INTERVAL("hive.compactor.cleaner.run.interval", "5000ms", new TimeValidator(TimeUnit.MILLISECONDS), "Time between runs of the cleaner thread"), @@ -1350,7 +1405,12 @@ public static enum ConfVars { "The SerDe used by FetchTask to serialize the fetch output."), HIVEEXPREVALUATIONCACHE("hive.cache.expr.evaluation", true, - "If true, evaluation result of deterministic expression referenced twice or more will be cached."), + "If true, the evaluation result of a deterministic expression referenced twice or more\n" + + "will be cached.\n" + + "For example, in a filter condition like '.. where key + 10 = 100 or key + 10 = 0'\n" + + "the expression 'key + 10' will be evaluated/cached once and reused for the following\n" + + "expression ('key + 10 = 0'). Currently, this is applied only to expressions in select\n" + + "or filter operators."), // Hive Variables HIVEVARIABLESUBSTITUTE("hive.variable.substitute", true, @@ -1376,9 +1436,11 @@ public static enum ConfVars { "interface org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider."), HIVE_METASTORE_AUTHORIZATION_MANAGER("hive.security.metastore.authorization.manager", "org.apache.hadoop.hive.ql.security.authorization.DefaultHiveMetastoreAuthorizationProvider", - "authorization manager class name to be used in the metastore for authorization.\n" + - "The user defined authorization class should implement interface \n" + - "org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider. "), + "Names of authorization manager classes (comma separated) to be used in the metastore\n" + + "for authorization. The user defined authorization class should implement interface\n" + + "org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider.\n" + + "All authorization manager classes have to successfully authorize the metastore API\n" + + "call for the command execution to be allowed."), HIVE_METASTORE_AUTHORIZATION_AUTH_READS("hive.security.metastore.authorization.auth.reads", true, "If this is true, metastore authorizer authorizes read actions on database, table"), HIVE_METASTORE_AUTHENTICATOR_MANAGER("hive.security.metastore.authenticator.manager", @@ -1398,9 +1460,12 @@ public static enum ConfVars { "the privileges automatically granted to some roles whenever a table gets created.\n" + "An example like \"roleX,roleY:select;roleZ:create\" will grant select privilege to roleX and roleY,\n" + "and grant create privilege to roleZ whenever a new table created."), - HIVE_AUTHORIZATION_TABLE_OWNER_GRANTS("hive.security.authorization.createtable.owner.grants", "", - "the privileges automatically granted to the owner whenever a table gets created.\n" + - "An example like \"select,drop\" will grant select and drop privilege to the owner of the table"), + HIVE_AUTHORIZATION_TABLE_OWNER_GRANTS("hive.security.authorization.createtable.owner.grants", + "", + "The privileges automatically granted to the owner whenever a table gets created.\n" + + "An example like \"select,drop\" will grant select and drop privilege to the owner\n" + + "of the table. Note that the default gives the creator of a table no access to the\n" + + "table (but see HIVE-8067)."), // if this is not set default value is set during config initialization // Default value can't be set in this constructor as it would refer names in other ConfVars @@ -1549,12 +1614,13 @@ public static enum ConfVars { // binary transport settings HIVE_SERVER2_THRIFT_PORT("hive.server2.thrift.port", 10000, "Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'."), - // hadoop.rpc.protection being set to a higher level than HiveServer2 - // does not make sense in most situations. - // HiveServer2 ignores hadoop.rpc.protection in favor of hive.server2.thrift.sasl.qop. - HIVE_SERVER2_THRIFT_SASL_QOP("hive.server2.thrift.sasl.qop", "auth", new StringSet("auth", "auth-int", "auth-conf"), - "Sasl QOP value; Set it to one of following values to enable higher levels of\n" + - " protection for HiveServer2 communication with clients.\n" + + HIVE_SERVER2_THRIFT_SASL_QOP("hive.server2.thrift.sasl.qop", "auth", + new StringSet("auth", "auth-int", "auth-conf"), + "Sasl QOP value; set it to one of following values to enable higher levels of\n" + + "protection for HiveServer2 communication with clients.\n" + + "Setting hadoop.rpc.protection to a higher level than HiveServer2 does not\n" + + "make sense in most situations. HiveServer2 ignores hadoop.rpc.protection in favor\n" + + "of hive.server2.thrift.sasl.qop.\n" + " \"auth\" - authentication only (default)\n" + " \"auth-int\" - authentication plus integrity protection\n" + " \"auth-conf\" - authentication plus integrity and confidentiality protection\n" + @@ -1572,7 +1638,7 @@ public static enum ConfVars { "Number of threads in the async thread pool for HiveServer2"), HIVE_SERVER2_ASYNC_EXEC_SHUTDOWN_TIMEOUT("hive.server2.async.exec.shutdown.timeout", "10s", new TimeValidator(TimeUnit.SECONDS), - "Maximum time for which HiveServer2 shutdown will wait for async"), + "How long HiveServer2 shutdown will wait for async threads to terminate."), HIVE_SERVER2_ASYNC_EXEC_WAIT_QUEUE_SIZE("hive.server2.async.exec.wait.queue.size", 100, "Size of the wait queue for async thread pool in HiveServer2.\n" + "After hitting this limit, the async thread pool will reject new requests."), @@ -1592,7 +1658,9 @@ public static enum ConfVars { " LDAP: LDAP/AD based authentication\n" + " KERBEROS: Kerberos/GSSAPI authentication\n" + " CUSTOM: Custom authentication provider\n" + - " (Use with property hive.server2.custom.authentication.class)"), + " (Use with property hive.server2.custom.authentication.class)\n" + + " PAM: Pluggable authentication module\n" + + " NOSASL: Raw transport"), HIVE_SERVER2_ALLOW_USER_SUBSTITUTION("hive.server2.allow.user.substitution", true, "Allow alternate user to be specified as part of HiveServer2 open connection request."), HIVE_SERVER2_KERBEROS_KEYTAB("hive.server2.authentication.kerberos.keytab", "", @@ -1640,9 +1708,12 @@ public static enum ConfVars { " HIVE : Exposes Hive's native table types like MANAGED_TABLE, EXTERNAL_TABLE, VIRTUAL_VIEW\n" + " CLASSIC : More generic types like TABLE and VIEW"), HIVE_SERVER2_SESSION_HOOK("hive.server2.session.hook", "", ""), - HIVE_SERVER2_USE_SSL("hive.server2.use.SSL", false, ""), - HIVE_SERVER2_SSL_KEYSTORE_PATH("hive.server2.keystore.path", "", ""), - HIVE_SERVER2_SSL_KEYSTORE_PASSWORD("hive.server2.keystore.password", "", ""), + HIVE_SERVER2_USE_SSL("hive.server2.use.SSL", false, + "Set this to true for using SSL encryption in HiveServer2."), + HIVE_SERVER2_SSL_KEYSTORE_PATH("hive.server2.keystore.path", "", + "SSL certificate keystore location."), + HIVE_SERVER2_SSL_KEYSTORE_PASSWORD("hive.server2.keystore.password", "", + "SSL certificate keystore password."), HIVE_SECURITY_COMMAND_WHITELIST("hive.security.command.whitelist", "set,reset,dfs,add,list,delete,reload,compile", "Comma separated list of non-SQL Hive commands users are authorized to execute"), @@ -1812,8 +1883,9 @@ public static enum ConfVars { "of reducers that tez specifies."), TEZ_DYNAMIC_PARTITION_PRUNING( "hive.tez.dynamic.partition.pruning", true, - "When dynamic pruning is enabled, joins on partition keys will be processed by sending events from the processing " + - "vertices to the tez application master. These events will be used to prune unnecessary partitions."), + "When dynamic pruning is enabled, joins on partition keys will be processed by sending\n" + + "events from the processing vertices to the Tez application master. These events will be\n" + + "used to prune unnecessary partitions."), TEZ_DYNAMIC_PARTITION_PRUNING_MAX_EVENT_SIZE("hive.tez.dynamic.partition.pruning.max.event.size", 1*1024*1024L, "Maximum size of events sent by processors in dynamic pruning. If this size is crossed no pruning will take place."), TEZ_DYNAMIC_PARTITION_PRUNING_MAX_DATA_SIZE("hive.tez.dynamic.partition.pruning.max.data.size", 100*1024*1024L, From d001bc5ad4d2805a20649f2bbcc2c7bcc441d559 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Wed, 29 Oct 2014 05:51:37 +0000 Subject: [PATCH 193/339] HIVE-8615 : beeline csv,tsv outputformat needs backward compatibility mode (Thejas Nair, reviewed by Szehon Ho, Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635054 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hive/beeline/BeeLine.java | 6 +- .../org/apache/hive/beeline/BeeLineOpts.java | 3 + ...DeprecatedSeparatedValuesOutputFormat.java | 73 ++++++ .../beeline/SeparatedValuesOutputFormat.java | 3 + beeline/src/main/resources/BeeLine.properties | 5 +- .../hive/beeline/TestBeeLineWithArgs.java | 223 +++++++++++------- 6 files changed, 218 insertions(+), 95 deletions(-) create mode 100644 beeline/src/java/org/apache/hive/beeline/DeprecatedSeparatedValuesOutputFormat.java diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java index e3c2449ee0d5..8539a415b288 100644 --- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java +++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java @@ -145,9 +145,11 @@ public class BeeLine implements Closeable { private final Map formats = map(new Object[] { "vertical", new VerticalOutputFormat(this), "table", new TableOutputFormat(this), - "csv", new SeparatedValuesOutputFormat(this, ','), - "tsv", new SeparatedValuesOutputFormat(this, '\t'), + "csv2", new SeparatedValuesOutputFormat(this, ','), + "tsv2", new SeparatedValuesOutputFormat(this, '\t'), "dsv", new SeparatedValuesOutputFormat(this, BeeLineOpts.DEFAULT_DELIMITER_FOR_DSV), + "csv", new DeprecatedSeparatedValuesOutputFormat(this, ','), + "tsv", new DeprecatedSeparatedValuesOutputFormat(this, '\t'), "xmlattr", new XMLAttributeOutputFormat(this), "xmlelements", new XMLElementOutputFormat(this), }); diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java index 2a0e9b54802d..f73fb445aeff 100644 --- a/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java +++ b/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java @@ -427,6 +427,9 @@ public boolean getAutosave() { } public void setOutputFormat(String outputFormat) { + if(outputFormat.equalsIgnoreCase("csv") || outputFormat.equalsIgnoreCase("tsv")) { + beeLine.info("Format " + outputFormat + " is deprecated, please use " + outputFormat + "2"); + } this.outputFormat = outputFormat; } diff --git a/beeline/src/java/org/apache/hive/beeline/DeprecatedSeparatedValuesOutputFormat.java b/beeline/src/java/org/apache/hive/beeline/DeprecatedSeparatedValuesOutputFormat.java new file mode 100644 index 000000000000..f49daee00584 --- /dev/null +++ b/beeline/src/java/org/apache/hive/beeline/DeprecatedSeparatedValuesOutputFormat.java @@ -0,0 +1,73 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source file is based on code taken from SQLLine 1.0.2 + * See SQLLine notice in LICENSE + */ +package org.apache.hive.beeline; + + +/** + * OutputFormat for values separated by a delimiter. + * + * Note this does not handle escaping of the quote char. + * The new SeparatedValuesOutputFormat supports that. The formats supported by + * this class are deprecated. + * + */ +class DeprecatedSeparatedValuesOutputFormat implements OutputFormat { + + private final BeeLine beeLine; + private char separator; + + public DeprecatedSeparatedValuesOutputFormat(BeeLine beeLine, char separator) { + this.beeLine = beeLine; + setSeparator(separator); + } + + @Override + public int print(Rows rows) { + int count = 0; + while (rows.hasNext()) { + printRow(rows, (Rows.Row) rows.next()); + count++; + } + return count - 1; // sans header row + } + + public void printRow(Rows rows, Rows.Row row) { + String[] vals = row.values; + StringBuilder buf = new StringBuilder(); + for (int i = 0; i < vals.length; i++) { + buf.append(buf.length() == 0 ? "" : "" + getSeparator()) + .append('\'') + .append(vals[i] == null ? "" : vals[i]) + .append('\''); + } + beeLine.output(buf.toString()); + } + + public void setSeparator(char separator) { + this.separator = separator; + } + + public char getSeparator() { + return this.separator; + } +} diff --git a/beeline/src/java/org/apache/hive/beeline/SeparatedValuesOutputFormat.java b/beeline/src/java/org/apache/hive/beeline/SeparatedValuesOutputFormat.java index 6bbb046d4a1b..a2c18c77a4e9 100644 --- a/beeline/src/java/org/apache/hive/beeline/SeparatedValuesOutputFormat.java +++ b/beeline/src/java/org/apache/hive/beeline/SeparatedValuesOutputFormat.java @@ -51,11 +51,14 @@ private void updateCsvPreference() { char newDel = beeLine.getOpts().getDelimiterForDSV(); // if delimiter changed, rebuild the csv preference if (newDel != curDel) { + // "" is passed as the end of line symbol in following function, as + // beeline itself adds newline csvPreference = new CsvPreference.Builder('"', newDel, "").build(); } } } + @Override public int print(Rows rows) { updateCsvPreference(); diff --git a/beeline/src/main/resources/BeeLine.properties b/beeline/src/main/resources/BeeLine.properties index d40c0dcbb36e..d038d461c5cb 100644 --- a/beeline/src/main/resources/BeeLine.properties +++ b/beeline/src/main/resources/BeeLine.properties @@ -68,7 +68,7 @@ help-procedures: List all the procedures help-tables: List all the tables in the database help-columns: List all the columns for the specified table help-properties: Connect to the database specified in the properties file(s) -help-outputformat: Set the output format for displaying results (table,vertical,csv,dsv,tsv,xmlattrs,xmlelements) +help-outputformat: Set the output format for displaying results (table,vertical,csv2,dsv,tsv2,xmlattrs,xmlelements, and deprecated formats(csv, tsv)) help-delimiterForDSV: Set the delimiter for dsv output format help-nullemptystring: Set to true to get historic behavior of printing null as empty string. Default is false. @@ -167,7 +167,8 @@ cmd-usage: Usage: java org.apache.hive.cli.beeline.BeeLine \n \ \ --maxColumnWidth=MAXCOLWIDTH the maximum width to use when displaying columns\n \ \ --silent=[true/false] be more silent\n \ \ --autosave=[true/false] automatically save preferences\n \ -\ --outputformat=[table/vertical/csv/tsv/dsv] format mode for result display\n \ +\ --outputformat=[table/vertical/csv2/tsv2/dsv/csv/tsv] format mode for result display\n \ +\ Note that csv, and tsv are deprecated - use csv2, tsv2 instead\n\ \ --truncateTable=[true/false] truncate table column when it exceeds length\n \ \ --delimiterForDSV=DELIMITER specify the delimiter for delimiter-separated values output format (default: |)\n \ \ --isolation=LEVEL set the transaction isolation level\n \ diff --git a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java index 9180a1a2cc08..8126cdfa5e16 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java @@ -34,11 +34,12 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.conf.HiveConf; -import org.apache.hive.service.server.HiveServer2; +import org.apache.hive.jdbc.miniHS2.MiniHS2; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; @@ -48,15 +49,12 @@ * TestBeeLineWithArgs - executes tests of the command-line arguments to BeeLine * */ -//public class TestBeeLineWithArgs extends TestCase { public class TestBeeLineWithArgs { // Default location of HiveServer2 - final private static String JDBC_URL = BeeLine.BEELINE_DEFAULT_JDBC_URL + "localhost:10000"; private static final String tableName = "TestBeelineTable1"; private static final String tableComment = "Test table comment"; - - private static HiveServer2 hiveServer2; + private static MiniHS2 miniHS2; private List getBaseArgs(String jdbcUrl) { List argList = new ArrayList(8); @@ -74,17 +72,9 @@ public static void preTests() throws Exception { HiveConf hiveConf = new HiveConf(); // Set to non-zk lock manager to prevent HS2 from trying to connect hiveConf.setVar(HiveConf.ConfVars.HIVE_LOCK_MANAGER, "org.apache.hadoop.hive.ql.lockmgr.EmbeddedLockManager"); - - // hiveConf.logVars(System.err); - // System.err.flush(); - - hiveServer2 = new HiveServer2(); - hiveServer2.init(hiveConf); - System.err.println("Starting HiveServer2..."); - hiveServer2.start(); - Thread.sleep(1000); + miniHS2 = new MiniHS2(hiveConf); + miniHS2.start(new HashMap()); createTable(); - } /** @@ -94,7 +84,7 @@ public static void preTests() throws Exception { */ private static void createTable() throws ClassNotFoundException, SQLException { Class.forName(BeeLine.BEELINE_DEFAULT_JDBC_DRIVER); - Connection con = DriverManager.getConnection(JDBC_URL,"", ""); + Connection con = DriverManager.getConnection(miniHS2.getBaseJdbcURL(),"", ""); assertNotNull("Connection is null", con); assertFalse("Connection should not be closed", con.isClosed()); @@ -129,13 +119,8 @@ private static void createTable() throws ClassNotFoundException, SQLException { */ @AfterClass public static void postTests() { - try { - if (hiveServer2 != null) { - System.err.println("Stopping HiveServer2..."); - hiveServer2.stop(); - } - } catch (Throwable t) { - t.printStackTrace(); + if (miniHS2.isStarted()) { + miniHS2.stop(); } } @@ -164,22 +149,20 @@ private String testCommandLineScript(List argList, InputStream inputStre * Test for presence of an expected pattern * in the output (stdout or stderr), fail if not found * Print PASSED or FAILED - * @paramm testName Name of test to print * @param expectedPattern Text to look for in command output/error * @param shouldMatch true if the pattern should be found, false if it should not * @throws Exception on command execution error */ - private void testScriptFile(String testName, String scriptText, String expectedPattern, + private void testScriptFile(String scriptText, String expectedPattern, boolean shouldMatch, List argList) throws Throwable { // Put the script content in a temp file - File scriptFile = File.createTempFile(testName, "temp"); + File scriptFile = File.createTempFile(this.getClass().getSimpleName(), "temp"); scriptFile.deleteOnExit(); PrintStream os = new PrintStream(new FileOutputStream(scriptFile)); os.print(scriptText); os.close(); - System.out.println(">>> STARTED -f " + testName); { List copy = new ArrayList(argList); copy.add("-f"); @@ -189,12 +172,11 @@ private void testScriptFile(String testName, String scriptText, String expectedP boolean matches = output.contains(expectedPattern); if (shouldMatch != matches) { //failed - fail(testName + ": Output" + output + " should" + (shouldMatch ? "" : " not") + + fail("Output" + output + " should" + (shouldMatch ? "" : " not") + " contain " + expectedPattern); } } - System.out.println(">>> STARTED -i " + testName); { List copy = new ArrayList(argList); copy.add("-i"); @@ -204,7 +186,7 @@ private void testScriptFile(String testName, String scriptText, String expectedP boolean matches = output.contains(expectedPattern); if (shouldMatch != matches) { //failed - fail(testName + ": Output" + output + " should" + (shouldMatch ? "" : " not") + + fail("Output" + output + " should" + (shouldMatch ? "" : " not") + " contain " + expectedPattern); } } @@ -217,11 +199,10 @@ private void testScriptFile(String testName, String scriptText, String expectedP */ @Test public void testWhitespaceBeforeCommentScriptFile() throws Throwable { - final String TEST_NAME = "testWhitespaceBeforeCommentScriptFile"; - final String SCRIPT_TEXT = " -- comment has spaces and tabs before it\n # comment has spaces and tabs before it\n"; - final String EXPECTED_PATTERN = "cannot recognize input near ''"; - List argList = getBaseArgs(JDBC_URL); - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, false, argList); + final String SCRIPT_TEXT = " -- comment has spaces and tabs before it\n # comment has spaces and tabs before it\n"; + final String EXPECTED_PATTERN = "cannot recognize input near ''"; + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, false, argList); } /** @@ -232,11 +213,10 @@ public void testWhitespaceBeforeCommentScriptFile() throws Throwable { */ @Test public void testPositiveScriptFile() throws Throwable { - final String TEST_NAME = "testPositiveScriptFile"; final String SCRIPT_TEXT = "show databases;\n"; final String EXPECTED_PATTERN = " default "; - List argList = getBaseArgs(JDBC_URL); - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); + testScriptFile( SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } /** @@ -247,24 +227,22 @@ public void testPositiveScriptFile() throws Throwable { */ @Test public void testBeelineHiveVariable() throws Throwable { - List argList = getBaseArgs(JDBC_URL); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); argList.add("--hivevar"); argList.add("DUMMY_TBL=dummy"); - final String TEST_NAME = "testHiveCommandLineHiveVariable"; final String SCRIPT_TEXT = "create table ${DUMMY_TBL} (d int);\nshow tables;\n"; final String EXPECTED_PATTERN = "dummy"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } @Test public void testBeelineHiveConfVariable() throws Throwable { - List argList = getBaseArgs(JDBC_URL); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); argList.add("--hiveconf"); argList.add("test.hive.table.name=dummy"); - final String TEST_NAME = "testBeelineHiveConfVariable"; final String SCRIPT_TEXT = "create table ${hiveconf:test.hive.table.name} (d int);\nshow tables;\n"; final String EXPECTED_PATTERN = "dummy"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } /** @@ -274,7 +252,7 @@ public void testBeelineHiveConfVariable() throws Throwable { */ @Test public void testBeelineMultiHiveVariable() throws Throwable { - List argList = getBaseArgs(JDBC_URL); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); argList.add("--hivevar"); argList.add("TABLE_NAME=dummy2"); @@ -289,10 +267,9 @@ public void testBeelineMultiHiveVariable() throws Throwable { argList.add("--hiveconf"); argList.add("COLUMN_TYPE=int"); - final String TEST_NAME = "testHiveCommandLineHiveVariable"; final String SCRIPT_TEXT = "${COMMAND} ${OBJECT} ${TABLE_NAME} (${hiveconf:COLUMN_NAME} ${hiveconf:COLUMN_TYPE});\nshow tables;\n"; final String EXPECTED_PATTERN = "dummy2"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } /** @@ -302,20 +279,18 @@ public void testBeelineMultiHiveVariable() throws Throwable { */ @Test public void testBreakOnErrorScriptFile() throws Throwable { - List argList = getBaseArgs(JDBC_URL); - final String TEST_NAME = "testBreakOnErrorScriptFile"; + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); final String SCRIPT_TEXT = "select * from abcdefg01;\nshow databases;\n"; final String EXPECTED_PATTERN = " default "; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, false, argList); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, false, argList); } @Test public void testBeelineShellCommand() throws Throwable { - List argList = getBaseArgs(JDBC_URL); - final String TEST_NAME = "testBeelineShellCommand"; + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); final String SCRIPT_TEXT = "!sh echo \"hello world.\" > hw.txt\n!sh cat hw.txt\n!rm hw.txt"; final String EXPECTED_PATTERN = "hello world"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } /** @@ -324,11 +299,10 @@ public void testBeelineShellCommand() throws Throwable { */ @Test public void testNullDefault() throws Throwable { - final String TEST_NAME = "testNullDefault"; final String SCRIPT_TEXT = "set hive.support.concurrency = false;\n" + "select null from " + tableName + " limit 1 ;\n"; final String EXPECTED_PATTERN = "NULL"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, getBaseArgs(JDBC_URL)); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, getBaseArgs(miniHS2.getBaseJdbcURL())); } /** @@ -337,39 +311,123 @@ public void testNullDefault() throws Throwable { */ @Test public void testNullNonEmpty() throws Throwable { - final String TEST_NAME = "testNullNonDefault"; final String SCRIPT_TEXT = "set hive.support.concurrency = false;\n" + "!set nullemptystring false\n select null from " + tableName + " limit 1 ;\n"; final String EXPECTED_PATTERN = "NULL"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, getBaseArgs(JDBC_URL)); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, getBaseArgs(miniHS2.getBaseJdbcURL())); } @Test public void testGetVariableValue() throws Throwable { - final String TEST_NAME = "testGetVariableValue"; final String SCRIPT_TEXT = "set env:TERM;"; final String EXPECTED_PATTERN = "env:TERM"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, getBaseArgs(JDBC_URL)); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, getBaseArgs(miniHS2.getBaseJdbcURL())); } /** * Select null from table , check if setting null to empty string works. - * Original beeline/sqlline used to print nulls as empty strings + * Original beeline/sqlline used to print nulls as empty strings. + * Also test csv2 output format * Print PASSED or FAILED */ @Test public void testNullEmpty() throws Throwable { - final String TEST_NAME = "testNullNonDefault"; final String SCRIPT_TEXT = "set hive.support.concurrency = false;\n" + "!set nullemptystring true\n select 'abc',null,'def' from " + tableName + " limit 1 ;\n"; final String EXPECTED_PATTERN = "abc,,def"; - List argList = getBaseArgs(JDBC_URL); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); + argList.add("--outputformat=csv2"); + + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + } + + /** + * Test writing output using DSV format, with custom delimiter ";" + */ + @Test + public void testDSVOutput() throws Throwable { + String SCRIPT_TEXT = getFormatTestQuery(); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); + argList.add("--outputformat=dsv"); + argList.add("--delimiterForDSV=;"); + + final String EXPECTED_PATTERN = "1;NULL;defg;\"ab\"\"c\";1.0"; + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + } + + /** + * Test writing output using TSV (new) format + */ + @Test + public void testTSV2Output() throws Throwable { + String SCRIPT_TEXT = getFormatTestQuery(); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); + argList.add("--outputformat=tsv2"); + + final String EXPECTED_PATTERN = "1\tNULL\tdefg\t\"ab\"\"c\"\t1.0"; + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + } + + /** + * Test writing output using TSV deprecated format + */ + @Test + public void testTSVOutput() throws Throwable { + String SCRIPT_TEXT = getFormatTestQuery(); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); + argList.add("--outputformat=tsv"); + + final String EXPECTED_PATTERN = "'1'\t'NULL'\t'defg'\t'ab\"c\'\t'1.0'"; + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + } + + + /** + * Test writing output using TSV deprecated format + * Check for deprecation message + */ + @Test + public void testTSVOutputDeprecation() throws Throwable { + String SCRIPT_TEXT = getFormatTestQuery(); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); + argList.add("--outputformat=tsv"); + + final String EXPECTED_PATTERN = "Format tsv is deprecated, please use tsv2"; + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + } + + /** + * Test writing output using CSV deprecated format + * Check for deprecation message + */ + @Test + public void testCSVOutputDeprecation() throws Throwable { + String SCRIPT_TEXT = getFormatTestQuery(); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); argList.add("--outputformat=csv"); - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + final String EXPECTED_PATTERN = "Format csv is deprecated, please use csv2"; + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + } + + /** + * Test writing output using CSV deprecated format + */ + @Test + public void testCSVOutput() throws Throwable { + String SCRIPT_TEXT = getFormatTestQuery(); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); + argList.add("--outputformat=csv"); + final String EXPECTED_PATTERN = "'1','NULL','defg','ab\"c\','1.0'"; + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } + + private String getFormatTestQuery() { + return "set hive.support.concurrency = false;\n" + + "select 1, null, 'defg', 'ab\"c', 1.0D from " + tableName + " limit 1 ;\n"; + } /** * Select null from table , check if setting null to empty string works - Using beeling cmd line * argument. @@ -378,49 +436,36 @@ public void testNullEmpty() throws Throwable { */ @Test public void testNullEmptyCmdArg() throws Throwable { - final String TEST_NAME = "testNullNonDefault"; final String SCRIPT_TEXT = "set hive.support.concurrency = false;\n" + "select 'abc',null,'def' from " + tableName + " limit 1 ;\n"; - //final String EXPECTED_PATTERN = "| abc | | def |"; - final String EXPECTED_PATTERN = "abc,,def"; + final String EXPECTED_PATTERN = "'abc','','def'"; - List argList = getBaseArgs(JDBC_URL); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); argList.add("--nullemptystring=true"); argList.add("--outputformat=csv"); - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } /** * Attempt to execute a missing script file with the -f option to BeeLine - * Print PASSED or FAILED */ @Test public void testNegativeScriptFile() throws Throwable { - final String TEST_NAME = "testNegativeScriptFile"; final String EXPECTED_PATTERN = " default "; - long startTime = System.currentTimeMillis(); - System.out.println(">>> STARTED " + TEST_NAME); - // Create and delete a temp file File scriptFile = File.createTempFile("beelinenegative", "temp"); scriptFile.delete(); - List argList = getBaseArgs(JDBC_URL); + List argList = getBaseArgs(miniHS2.getBaseJdbcURL()); argList.add("-f"); argList.add(scriptFile.getAbsolutePath()); try { - String output = testCommandLineScript(argList, null); - long elapsedTime = (System.currentTimeMillis() - startTime)/1000; - String time = "(" + elapsedTime + "s)"; + String output = testCommandLineScript(argList, null); if (output.contains(EXPECTED_PATTERN)) { - System.err.println("Output: " + output); - System.err.println(">>> FAILED " + TEST_NAME + " (ERROR) " + time); - fail(TEST_NAME); - } else { - System.out.println(">>> PASSED " + TEST_NAME + " " + time); + fail("Output: " + output + " Negative pattern: " + EXPECTED_PATTERN); } } catch (Throwable e) { e.printStackTrace(); @@ -456,11 +501,10 @@ public void testNPE() throws UnsupportedEncodingException { @Test public void testHiveVarSubstitution() throws Throwable { - List argList = getBaseArgs(JDBC_URL + "#D_TBL=dummy_t"); - final String TEST_NAME = "testHiveVarSubstitution"; + List argList = getBaseArgs(miniHS2.getBaseJdbcURL() + "#D_TBL=dummy_t"); final String SCRIPT_TEXT = "create table ${D_TBL} (d int);\nshow tables;\n"; final String EXPECTED_PATTERN = "dummy_t"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } @Test @@ -469,13 +513,12 @@ public void testEmbeddedBeelineConnection() throws Throwable{ List argList = getBaseArgs(embeddedJdbcURL); argList.add("--hivevar"); argList.add("DUMMY_TBL=embedded_table"); - final String TEST_NAME = "testEmbeddedBeelineConnection"; // Set to non-zk lock manager to avoid trying to connect to zookeeper final String SCRIPT_TEXT = "set hive.lock.manager=org.apache.hadoop.hive.ql.lockmgr.EmbeddedLockManager;\n" + "create table ${DUMMY_TBL} (d int);\nshow tables;\n"; final String EXPECTED_PATTERN = "embedded_table"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, argList); } /** @@ -484,11 +527,10 @@ public void testEmbeddedBeelineConnection() throws Throwable{ */ @Test public void testQueryProgress() throws Throwable { - final String TEST_NAME = "testQueryProgress"; final String SCRIPT_TEXT = "set hive.support.concurrency = false;\n" + "select count(*) from " + tableName + ";\n"; final String EXPECTED_PATTERN = "Parsing command"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, getBaseArgs(JDBC_URL)); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, getBaseArgs(miniHS2.getBaseJdbcURL())); } /** @@ -497,11 +539,10 @@ public void testQueryProgress() throws Throwable { */ @Test public void testQueryProgressHidden() throws Throwable { - final String TEST_NAME = "testQueryProgress"; final String SCRIPT_TEXT = "set hive.support.concurrency = false;\n" + "!set silent true\n" + "select count(*) from " + tableName + ";\n"; final String EXPECTED_PATTERN = "Parsing command"; - testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, false, getBaseArgs(JDBC_URL)); + testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, false, getBaseArgs(miniHS2.getBaseJdbcURL())); } } From 8f7da7e21d651a35afc0b364deb56b6fed333fde Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 29 Oct 2014 15:15:19 +0000 Subject: [PATCH 194/339] HIVE-8587 : Vectorized Extract operator needs to update the Vectorization Context column map (Matt McCline via Jitendra Nath Pandey) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635172 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 1 + .../apache/hadoop/hive/ql/exec/Utilities.java | 8 +- .../ql/exec/tez/ReduceRecordProcessor.java | 2 +- .../ql/exec/vector/VectorExtractOperator.java | 119 ++++++---- .../exec/vector/VectorFileSinkOperator.java | 19 +- .../ql/exec/vector/VectorGroupByOperator.java | 16 +- .../ql/exec/vector/VectorMapJoinOperator.java | 20 +- .../exec/vector/VectorSMBMapJoinOperator.java | 19 +- .../ql/exec/vector/VectorSelectOperator.java | 11 +- .../ql/exec/vector/VectorizationContext.java | 166 ++++++++++---- .../ql/exec/vector/VectorizedRowBatchCtx.java | 4 +- .../ql/optimizer/physical/Vectorizer.java | 183 ++++++++------- .../apache/hadoop/hive/ql/plan/BaseWork.java | 22 +- .../hadoop/hive/ql/plan/ReduceWork.java | 54 ----- .../exec/vector/TestVectorFilterOperator.java | 8 +- .../vector/TestVectorGroupByOperator.java | 71 +++--- .../exec/vector/TestVectorSelectOperator.java | 8 +- .../exec/vector/TestVectorizationContext.java | 214 +++++++++--------- .../hive/ql/io/orc/TestInputOutputFormat.java | 4 +- .../ql/optimizer/physical/TestVectorizer.java | 11 +- .../queries/clientpositive/vector_bucket.q | 11 + .../clientpositive/tez/vector_bucket.q.out | 105 +++++++++ .../clientpositive/tez/vector_char_2.q.out | 2 + .../clientpositive/vector_bucket.q.out | 94 ++++++++ 24 files changed, 724 insertions(+), 448 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/vector_bucket.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_bucket.q.out create mode 100644 ql/src/test/results/clientpositive/vector_bucket.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 9b5845b706fa..67a4381574f0 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -156,6 +156,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ update_where_partitioned.q,\ update_two_cols.q,\ vector_between_in.q,\ + vector_bucket.q,\ vector_cast_constant.q,\ vector_char_4.q,\ vector_char_simple.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 5bdeb92b46b0..b68de195f5c4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -429,20 +429,20 @@ private static BaseWork getBaseWork(Configuration conf, String name) { } } - public static Map> getScratchColumnVectorTypes(Configuration hiveConf) { + public static Map> getAllScratchColumnVectorTypeMaps(Configuration hiveConf) { BaseWork baseWork = getMapWork(hiveConf); if (baseWork == null) { baseWork = getReduceWork(hiveConf); } - return baseWork.getScratchColumnVectorTypes(); + return baseWork.getAllScratchColumnVectorTypeMaps(); } - public static Map> getScratchColumnMap(Configuration hiveConf) { + public static Map> getAllColumnVectorMaps(Configuration hiveConf) { BaseWork baseWork = getMapWork(hiveConf); if (baseWork == null) { baseWork = getReduceWork(hiveConf); } - return baseWork.getScratchColumnMap(); + return baseWork.getAllColumnVectorMaps(); } public static void setWorkflowAdjacencies(Configuration conf, QueryPlan plan) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java index 8e3c2febb924..8910af69da41 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordProcessor.java @@ -101,7 +101,7 @@ void init(JobConf jconf, ProcessorContext processorContext, MRTaskReporter mrRep sources[tag] = new ReduceRecordSource(); sources[tag].init(jconf, reducer, redWork.getVectorMode(), keyTableDesc, valueTableDesc, reader, tag == position, (byte) tag, - redWork.getScratchColumnVectorTypes()); + redWork.getAllScratchColumnVectorTypeMaps()); ois[tag] = sources[tag].getObjectInspector(); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractOperator.java index 1ddcbc6ca621..7f4bb647eec5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractOperator.java @@ -18,85 +18,118 @@ package org.apache.hadoop.hive.ql.exec.vector; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; +import java.util.ArrayList; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator; -import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluatorFactory; import org.apache.hadoop.hive.ql.exec.ExtractOperator; -import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.metadata.HiveException; -import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; import org.apache.hadoop.hive.ql.plan.ExtractDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory; -import org.apache.hadoop.hive.serde2.objectinspector.StructField; -import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils; /** - * Vectorized extract operator implementation. Consumes rows and outputs a - * vectorized batch of subobjects. + * Vectorized extract operator implementation. **/ -public class VectorExtractOperator extends ExtractOperator { +public class VectorExtractOperator extends ExtractOperator implements VectorizationContextRegion { private static final long serialVersionUID = 1L; - private int keyColCount; - private int valueColCount; - - private transient VectorizedRowBatch outputBatch; - private transient int remainingColCount; + private List reduceTypeInfos; + + // Create a new outgoing vectorization context because we will project just the values. + private VectorizationContext vOutContext; + + private int[] projectedColumns; + private String removeValueDotPrefix(String columnName) { + return columnName.substring("VALUE.".length()); + } public VectorExtractOperator(VectorizationContext vContext, OperatorDesc conf) throws HiveException { this(); this.conf = (ExtractDesc) conf; + + List reduceColumnNames = vContext.getProjectionColumnNames(); + int reduceColCount = reduceColumnNames.size(); + + /* + * Create a new vectorization context as projection of just the values columns, but + * keep same output column manager must be inherited to track the scratch the columns. + */ + vOutContext = new VectorizationContext(vContext); + + // Set a fileKey with vectorization context. + vOutContext.setFileKey(vContext.getFileKey() + "/_EXTRACT_"); + + // Remove "VALUE." prefix from value columns and create a new projection + vOutContext.resetProjectionColumns(); + for (int i = 0; i < reduceColCount; i++) { + String columnName = reduceColumnNames.get(i); + if (columnName.startsWith("VALUE.")) { + vOutContext.addProjectionColumn(removeValueDotPrefix(columnName), i); + } + } } public VectorExtractOperator() { super(); } + /* + * Called by the Vectorizer class to pass the types from reduce shuffle. + */ + public void setReduceTypeInfos(List reduceTypeInfos) { + this.reduceTypeInfos = reduceTypeInfos; + } + @Override protected void initializeOp(Configuration hconf) throws HiveException { - StructObjectInspector structInputObjInspector = (StructObjectInspector) inputObjInspectors[0]; - List fields = structInputObjInspector.getAllStructFieldRefs(); - ArrayList ois = new ArrayList(); - ArrayList colNames = new ArrayList(); - for (int i = keyColCount; i < fields.size(); i++) { - StructField field = fields.get(i); - String fieldName = field.getFieldName(); - - // Remove "VALUE." prefix. - int dotIndex = fieldName.indexOf("."); - colNames.add(fieldName.substring(dotIndex + 1)); - ois.add(field.getFieldObjectInspector()); + // Create the projection of the values and the output object inspector + // for just the value without their "VALUE." prefix. + int projectionSize = vOutContext.getProjectedColumns().size(); + projectedColumns = new int[projectionSize]; + List columnNames = new ArrayList(); + List ois = new ArrayList(); + for (int i = 0; i < projectionSize; i++) { + int projectedIndex = vOutContext.getProjectedColumns().get(i); + projectedColumns[i] = projectedIndex; + String colName = vOutContext.getProjectionColumnNames().get(i); + columnNames.add(colName); + TypeInfo typeInfo = reduceTypeInfos.get(projectedIndex); + ObjectInspector oi = TypeInfoUtils + .getStandardWritableObjectInspectorFromTypeInfo(typeInfo); + ois.add(oi); } - outputObjInspector = ObjectInspectorFactory - .getStandardStructObjectInspector(colNames, ois); - remainingColCount = fields.size() - keyColCount; - outputBatch = new VectorizedRowBatch(remainingColCount); + outputObjInspector = ObjectInspectorFactory. + getStandardStructObjectInspector(columnNames, ois); initializeChildren(hconf); } - public void setKeyAndValueColCounts(int keyColCount, int valueColCount) { - this.keyColCount = keyColCount; - this.valueColCount = valueColCount; - } @Override // Remove the key columns and forward the values (and scratch columns). public void processOp(Object row, int tag) throws HiveException { - VectorizedRowBatch inputBatch = (VectorizedRowBatch) row; + VectorizedRowBatch vrg = (VectorizedRowBatch) row; - // Copy references to the input columns array starting after the keys... - for (int i = 0; i < remainingColCount; i++) { - outputBatch.cols[i] = inputBatch.cols[keyColCount + i]; - } - outputBatch.size = inputBatch.size; + int[] originalProjections = vrg.projectedColumns; + int originalProjectionSize = vrg.projectionSize; - forward(outputBatch, outputObjInspector); + // Temporarily substitute our projection. + vrg.projectionSize = projectedColumns.length; + vrg.projectedColumns = projectedColumns; + + forward(vrg, null); + + // Revert the projected columns back, because vrg will be re-used. + vrg.projectionSize = originalProjectionSize; + vrg.projectedColumns = originalProjections; + } + + @Override + public VectorizationContext getOuputVectorizationContext() { + return vOutContext; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java index ea32f33a8d36..858604ca8289 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java @@ -25,6 +25,7 @@ import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.plan.FileSinkDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; /** @@ -50,10 +51,22 @@ public VectorFileSinkOperator() { @Override protected void initializeOp(Configuration hconf) throws HiveException { - super.initializeOp(hconf); - valueWriters = VectorExpressionWriterFactory.getExpressionWriters( - (StructObjectInspector) inputObjInspectors[0]); + // We need a input object inspector that is for the row we will extract out of the + // vectorized row batch, not for example, an original inspector for an ORC table, etc. + VectorExpressionWriterFactory.processVectorInspector( + (StructObjectInspector) inputObjInspectors[0], + new VectorExpressionWriterFactory.SingleOIDClosure() { + @Override + public void assign(VectorExpressionWriter[] writers, + ObjectInspector objectInspector) { + valueWriters = writers; + inputObjInspectors[0] = objectInspector; + } + }); singleRow = new Object[valueWriters.length]; + + // Call FileSinkOperator with new input inspector. + super.initializeOp(hconf); } @Override diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java index 86b60ab9b4cb..856ff200d8b4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java @@ -32,11 +32,8 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.conf.HiveConf; -import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator; -import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluatorFactory; import org.apache.hadoop.hive.ql.exec.GroupByOperator; import org.apache.hadoop.hive.ql.exec.KeyWrapper; -import org.apache.hadoop.hive.ql.exec.KeyWrapperFactory; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriter; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriterFactory; @@ -46,12 +43,9 @@ import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; import org.apache.hadoop.hive.ql.plan.GroupByDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; -import org.apache.hadoop.hive.ql.plan.api.OperatorType; import org.apache.hadoop.hive.ql.util.JavaDataModel; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory; -import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; -import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils.ObjectInspectorCopyOption; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; import org.apache.hadoop.io.DataOutputBuffer; @@ -760,13 +754,7 @@ public VectorGroupByOperator(VectorizationContext vContext, OperatorDesc conf) isVectorOutput = desc.getVectorDesc().isVectorOutput(); - List outColNames = desc.getOutputColumnNames(); - Map mapOutCols = new HashMap(outColNames.size()); - int outColIndex = 0; - for(String outCol: outColNames) { - mapOutCols.put(outCol, outColIndex++); - } - vOutContext = new VectorizationContext(mapOutCols, outColIndex); + vOutContext = new VectorizationContext(desc.getOutputColumnNames()); vOutContext.setFileKey(vContext.getFileKey() + "/_GROUPBY_"); fileKey = vOutContext.getFileKey(); } @@ -811,7 +799,7 @@ protected void initializeOp(Configuration hconf) throws HiveException { vrbCtx.init(hconf, fileKey, (StructObjectInspector) outputObjInspector); outputBatch = vrbCtx.createVectorizedRowBatch(); vectorColumnAssign = VectorColumnAssignFactory.buildAssigners( - outputBatch, outputObjInspector, vOutContext.getColumnMap(), conf.getOutputColumnNames()); + outputBatch, outputObjInspector, vOutContext.getProjectionColumnMap(), conf.getOutputColumnNames()); } } catch (HiveException he) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java index 30e36ac87d8b..5fda5ddf9fb2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java @@ -28,11 +28,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator; import org.apache.hadoop.hive.ql.exec.MapJoinOperator; -import org.apache.hadoop.hive.ql.exec.TableScanOperator; import org.apache.hadoop.hive.ql.exec.Utilities; -import org.apache.hadoop.hive.ql.exec.persistence.MapJoinKeyObject; -import org.apache.hadoop.hive.ql.exec.persistence.MapJoinKey; -import org.apache.hadoop.hive.ql.exec.persistence.MapJoinKey; import org.apache.hadoop.hive.ql.exec.persistence.MapJoinTableContainer.ReusableGetAdaptor; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriter; @@ -41,8 +37,6 @@ import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; import org.apache.hadoop.hive.ql.plan.MapJoinDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; -import org.apache.hadoop.hive.ql.plan.api.OperatorType; -import org.apache.hadoop.hive.serde2.ByteStream.Output; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; @@ -116,16 +110,8 @@ public VectorMapJoinOperator (VectorizationContext vContext, OperatorDesc conf) Map> exprs = desc.getExprs(); bigTableValueExpressions = vContext.getVectorExpressions(exprs.get(posBigTable)); - List outColNames = desc.getOutputColumnNames(); - - Map mapOutCols = new HashMap(outColNames.size()); - - int outColIndex = 0; - for(String outCol: outColNames) { - mapOutCols.put(outCol, outColIndex++); - } - - vOutContext = new VectorizationContext(mapOutCols, outColIndex); + // We are making a new output vectorized row batch. + vOutContext = new VectorizationContext(desc.getOutputColumnNames()); vOutContext.setFileKey(vContext.getFileKey() + "/MAP_JOIN_" + desc.getBigTableAlias()); this.fileKey = vOutContext.getFileKey(); } @@ -207,7 +193,7 @@ protected void internalForward(Object row, ObjectInspector outputOI) throws Hive Object[] values = (Object[]) row; VectorColumnAssign[] vcas = outputVectorAssigners.get(outputOI); if (null == vcas) { - Map> allColumnMaps = Utilities.getScratchColumnMap(hconf); + Map> allColumnMaps = Utilities.getAllColumnVectorMaps(hconf); Map columnMap = allColumnMaps.get(fileKey); vcas = VectorColumnAssignFactory.buildAssigners( outputBatch, outputOI, columnMap, conf.getOutputColumnNames()); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSMBMapJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSMBMapJoinOperator.java index 05915316b63f..22ffb6e9b95a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSMBMapJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSMBMapJoinOperator.java @@ -27,16 +27,13 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator; -import org.apache.hadoop.hive.ql.exec.JoinUtil; import org.apache.hadoop.hive.ql.exec.SMBMapJoinOperator; import org.apache.hadoop.hive.ql.exec.Utilities; -import org.apache.hadoop.hive.ql.exec.persistence.MapJoinKeyObject; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriter; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriterFactory; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; -import org.apache.hadoop.hive.ql.plan.GroupByDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.SMBJoinDesc; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; @@ -116,19 +113,9 @@ public VectorSMBMapJoinOperator(VectorizationContext vContext, OperatorDesc conf Map> exprs = desc.getExprs(); bigTableValueExpressions = vContext.getVectorExpressions(exprs.get(posBigTable)); - - // Vectorized join operators need to create a new vectorization region for child operators. - - List outColNames = desc.getOutputColumnNames(); - - Map mapOutCols = new HashMap(outColNames.size()); - - int outColIndex = 0; - for(String outCol: outColNames) { - mapOutCols.put(outCol, outColIndex++); - } - vOutContext = new VectorizationContext(mapOutCols, outColIndex); + // We are making a new output vectorized row batch. + vOutContext = new VectorizationContext(desc.getOutputColumnNames()); vOutContext.setFileKey(vContext.getFileKey() + "/SMB_JOIN_" + desc.getBigTableAlias()); this.fileKey = vOutContext.getFileKey(); } @@ -285,7 +272,7 @@ protected void internalForward(Object row, ObjectInspector outputOI) throws Hive Object[] values = (Object[]) row; VectorColumnAssign[] vcas = outputVectorAssigners.get(outputOI); if (null == vcas) { - Map> allColumnMaps = Utilities.getScratchColumnMap(hconf); + Map> allColumnMaps = Utilities.getAllColumnVectorMaps(hconf); Map columnMap = allColumnMaps.get(fileKey); vcas = VectorColumnAssignFactory.buildAssigners( outputBatch, outputOI, columnMap, conf.getOutputColumnNames()); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java index a65e59453e04..458dc5aafc07 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java @@ -31,7 +31,6 @@ import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.SelectDesc; -import org.apache.hadoop.hive.ql.plan.api.OperatorType; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory; @@ -63,20 +62,20 @@ public VectorSelectOperator(VectorizationContext vContext, OperatorDesc conf) } /** - * Create a new vectorization context to update the column map but same output column manager - * must be inherited to track the scratch the columns. + * Create a new vectorization context to create a new projection, but keep + * same output column manager must be inherited to track the scratch the columns. */ vOutContext = new VectorizationContext(vContext); // Set a fileKey, although this operator doesn't use it. vOutContext.setFileKey(vContext.getFileKey() + "/_SELECT_"); - // Update column map - vOutContext.getColumnMap().clear(); + vOutContext.resetProjectionColumns(); for (int i=0; i < colList.size(); ++i) { String columnName = this.conf.getOutputColumnNames().get(i); VectorExpression ve = vExpressions[i]; - vOutContext.addToColumnMap(columnName, ve.getOutputColumn()); + vOutContext.addProjectionColumn(columnName, + ve.getOutputColumn()); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java index fdd43e700089..42ad37d29a80 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java @@ -23,11 +23,13 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeMap; import java.util.regex.Pattern; import org.apache.commons.logging.Log; @@ -123,9 +125,98 @@ public class VectorizationContext { VectorExpressionDescriptor vMap; + private List projectedColumns; + private List projectionColumnNames; + private Map projectionColumnMap; + //columnName to column position map - private final Map columnMap; - private final int firstOutputColumnIndex; + // private final Map columnMap; + private int firstOutputColumnIndex; + + // Convenient constructor for initial batch creation takes + // a list of columns names and maps them to 0..n-1 indices. + public VectorizationContext(List initialColumnNames) { + this.projectionColumnNames = initialColumnNames; + + projectedColumns = new ArrayList(); + projectionColumnMap = new HashMap(); + for (int i = 0; i < this.projectionColumnNames.size(); i++) { + projectedColumns.add(i); + projectionColumnMap.put(projectionColumnNames.get(i), i); + } + int firstOutputColumnIndex = projectedColumns.size(); + this.ocm = new OutputColumnManager(firstOutputColumnIndex); + this.firstOutputColumnIndex = firstOutputColumnIndex; + vMap = new VectorExpressionDescriptor(); + } + + // Constructor to with the individual addInitialColumn method + // followed by a call to finishedAddingInitialColumns. + public VectorizationContext() { + projectedColumns = new ArrayList(); + projectionColumnNames = new ArrayList(); + projectionColumnMap = new HashMap(); + this.ocm = new OutputColumnManager(0); + this.firstOutputColumnIndex = 0; + vMap = new VectorExpressionDescriptor(); + } + + // Constructor useful making a projection vectorization context. + // Use with resetProjectionColumns and addProjectionColumn. + // Keeps existing output column map, etc. + public VectorizationContext(VectorizationContext vContext) { + this.projectedColumns = new ArrayList(); + this.projectionColumnNames = new ArrayList(); + this.projectionColumnMap = new HashMap(); + + this.ocm = vContext.ocm; + this.firstOutputColumnIndex = vContext.firstOutputColumnIndex; + vMap = new VectorExpressionDescriptor(); + } + + // Add an initial column to a vectorization context when + // a vectorized row batch is being created. + public void addInitialColumn(String columnName) { + int index = projectedColumns.size(); + projectedColumns.add(index); + projectionColumnNames.add(columnName); + projectionColumnMap.put(columnName, index); + } + + // Finishes the vectorization context after all the initial + // columns have been added. + public void finishedAddingInitialColumns() { + int firstOutputColumnIndex = projectedColumns.size(); + this.ocm = new OutputColumnManager(firstOutputColumnIndex); + this.firstOutputColumnIndex = firstOutputColumnIndex; + } + + // Empties the projection columns. + public void resetProjectionColumns() { + projectedColumns = new ArrayList(); + projectionColumnNames = new ArrayList(); + projectionColumnMap = new HashMap(); + } + + // Add a projection column to a projection vectorization context. + public void addProjectionColumn(String columnName, int vectorBatchColIndex) { + projectedColumns.add(vectorBatchColIndex); + projectionColumnNames.add(columnName); + projectionColumnMap.put(columnName, vectorBatchColIndex); + } + + public List getProjectedColumns() { + return projectedColumns; + } + + public List getProjectionColumnNames() { + return projectionColumnNames; + } + + public Map getProjectionColumnMap() { + return projectionColumnMap; + } + public static final Pattern decimalTypePattern = Pattern.compile("decimal.*", Pattern.CASE_INSENSITIVE); @@ -140,7 +231,7 @@ public class VectorizationContext { Pattern.CASE_INSENSITIVE); //Map column number to type - private final OutputColumnManager ocm; + private OutputColumnManager ocm; // File key is used by operators to retrieve the scratch vectors // from mapWork at runtime. The operators that modify the structure of @@ -170,27 +261,6 @@ public class VectorizationContext { castExpressionUdfs.add(UDFToShort.class); } - public VectorizationContext(Map columnMap, - int initialOutputCol) { - this.columnMap = columnMap; - this.ocm = new OutputColumnManager(initialOutputCol); - this.firstOutputColumnIndex = initialOutputCol; - vMap = new VectorExpressionDescriptor(); - } - - /** - * This constructor inherits the OutputColumnManger and from - * the 'parent' constructor, therefore this should be used only by operators - * that don't create a new vectorized row batch. This should be used only by - * operators that want to modify the columnName map without changing the row batch. - */ - public VectorizationContext(VectorizationContext parent) { - this.columnMap = new HashMap(parent.columnMap); - this.ocm = parent.ocm; - this.firstOutputColumnIndex = parent.firstOutputColumnIndex; - vMap = new VectorExpressionDescriptor(); - } - public String getFileKey() { return fileKey; } @@ -199,16 +269,19 @@ public void setFileKey(String fileKey) { this.fileKey = fileKey; } - protected int getInputColumnIndex(String name) { - if (!columnMap.containsKey(name)) { - LOG.error(String.format("The column %s is not in the vectorization context column map %s.", - name, columnMap.toString())); + protected int getInputColumnIndex(String name) throws HiveException { + if (name == null) { + throw new HiveException("Null column name"); + } + if (!projectionColumnMap.containsKey(name)) { + throw new HiveException(String.format("The column %s is not in the vectorization context column map %s.", + name, projectionColumnMap.toString())); } - return columnMap.get(name); + return projectionColumnMap.get(name); } protected int getInputColumnIndex(ExprNodeColumnDesc colExpr) { - return columnMap.get(colExpr.getColumn()); + return projectionColumnMap.get(colExpr.getColumn()); } private static class OutputColumnManager { @@ -280,7 +353,7 @@ void freeOutputColumn(int index) { } private VectorExpression getColumnVectorExpression(ExprNodeColumnDesc - exprDesc, Mode mode) { + exprDesc, Mode mode) throws HiveException { int columnNum = getInputColumnIndex(exprDesc.getColumn()); VectorExpression expr = null; switch (mode) { @@ -1988,7 +2061,7 @@ public VectorAggregateExpression getAggregatorExpression(AggregationDesc desc, b "\" for type: \"" + inputType.name() + " (reduce-side = " + isReduce + ")"); } - public Map getOutputColumnTypeMap() { + public Map getScratchColumnTypeMap() { Map map = new HashMap(); for (int i = 0; i < ocm.outputColCount; i++) { String type = ocm.outputColumnsTypes[i]; @@ -1997,15 +2070,26 @@ public Map getOutputColumnTypeMap() { return map; } - public Map getColumnMap() { - return columnMap; - } + public String toString() { + StringBuilder sb = new StringBuilder(32); + sb.append("Context key ").append(getFileKey()).append(", "); + + Comparator comparerInteger = new Comparator() { + @Override + public int compare(Integer o1, Integer o2) { + return o1.compareTo(o2); + }}; - public void addToColumnMap(String columnName, int outputColumn) throws HiveException { - if (columnMap.containsKey(columnName) && (columnMap.get(columnName) != outputColumn)) { - throw new HiveException(String.format("Column %s is already mapped to %d. Cannot remap to %d.", - columnName, columnMap.get(columnName), outputColumn)); + Map sortedColumnMap = new TreeMap(comparerInteger); + for (Map.Entry entry : projectionColumnMap.entrySet()) { + sortedColumnMap.put(entry.getValue(), entry.getKey()); } - columnMap.put(columnName, outputColumn); + sb.append("sortedProjectionColumnMap ").append(sortedColumnMap).append(", "); + + Map sortedScratchColumnTypeMap = new TreeMap(comparerInteger); + sortedScratchColumnTypeMap.putAll(getScratchColumnTypeMap()); + sb.append("sortedScratchColumnTypeMap ").append(sortedScratchColumnTypeMap); + + return sb.toString(); } - } +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java index 81a8ee73bca5..4f57aac88bcb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java @@ -139,7 +139,7 @@ public VectorizedRowBatchCtx() { public void init(Configuration hiveConf, String fileKey, StructObjectInspector rowOI) { Map> scratchColumnVectorTypes = - Utilities.getScratchColumnVectorTypes(hiveConf); + Utilities.getAllScratchColumnVectorTypeMaps(hiveConf); columnTypeMap = scratchColumnVectorTypes.get(fileKey); this.rowOI= rowOI; this.rawRowOI = rowOI; @@ -190,7 +190,7 @@ public void init(Configuration hiveConf, FileSplit split) throws ClassNotFoundEx String partitionPath = split.getPath().getParent().toString(); columnTypeMap = Utilities - .getScratchColumnVectorTypes(hiveConf) + .getAllScratchColumnVectorTypeMaps(hiveConf) .get(partitionPath); Properties partProps = diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java index 786d6b705688..2c02bd4718e1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java @@ -21,6 +21,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -28,6 +29,7 @@ import java.util.Map; import java.util.Set; import java.util.Stack; +import java.util.TreeMap; import java.util.regex.Pattern; import org.apache.commons.logging.Log; @@ -66,12 +68,10 @@ import org.apache.hadoop.hive.ql.plan.GroupByDesc; import org.apache.hadoop.hive.ql.plan.MapJoinDesc; import org.apache.hadoop.hive.ql.plan.MapWork; -import org.apache.hadoop.hive.ql.plan.MapredWork; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.PartitionDesc; import org.apache.hadoop.hive.ql.plan.ReduceWork; import org.apache.hadoop.hive.ql.plan.SMBJoinDesc; -import org.apache.hadoop.hive.ql.plan.TableDesc; import org.apache.hadoop.hive.ql.plan.TableScanDesc; import org.apache.hadoop.hive.ql.plan.TezWork; import org.apache.hadoop.hive.ql.plan.VectorGroupByDesc; @@ -119,7 +119,11 @@ import org.apache.hadoop.hive.serde2.SerDe; import org.apache.hadoop.hive.serde2.SerDeUtils; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; +import org.apache.hadoop.hive.serde2.objectinspector.StructField; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils; import org.apache.hadoop.util.ReflectionUtils; public class Vectorizer implements PhysicalPlanResolver { @@ -280,13 +284,13 @@ class VectorizationDispatcher implements Dispatcher { private PhysicalContext pctx; - private int keyColCount; - private int valueColCount; + private List reduceColumnNames; + private List reduceTypeInfos; public VectorizationDispatcher(PhysicalContext pctx) { this.pctx = pctx; - keyColCount = 0; - valueColCount = 0; + reduceColumnNames = null; + reduceTypeInfos = null; } @Override @@ -374,14 +378,13 @@ private void vectorizeMapWork(MapWork mapWork) throws SemanticException { HashMap nodeOutput = new HashMap(); ogw.startWalking(topNodes, nodeOutput); - Map> columnVectorTypes = vnp.getScratchColumnVectorTypes(); - mapWork.setScratchColumnVectorTypes(columnVectorTypes); - Map> columnMap = vnp.getScratchColumnMap(); - mapWork.setScratchColumnMap(columnMap); + Map> allScratchColumnVectorTypeMaps = vnp.getAllScratchColumnVectorTypeMaps(); + mapWork.setAllScratchColumnVectorTypeMaps(allScratchColumnVectorTypeMaps); + Map> allColumnVectorMaps = vnp.getAllColumnVectorMaps(); + mapWork.setAllColumnVectorMaps(allColumnVectorMaps); if (LOG.isDebugEnabled()) { - LOG.debug(String.format("vectorTypes: %s", columnVectorTypes.toString())); - LOG.debug(String.format("columnMap: %s", columnMap.toString())); + debugDisplayAllMaps(allColumnVectorMaps, allScratchColumnVectorTypeMaps); } return; @@ -402,7 +405,7 @@ private boolean getOnlyStructObjectInspectors(ReduceWork reduceWork) throws Sema return false; } StructObjectInspector keyStructObjectInspector = (StructObjectInspector)keyObjectInspector; - keyColCount = keyStructObjectInspector.getAllStructFieldRefs().size(); + List keyFields = keyStructObjectInspector.getAllStructFieldRefs(); // Tez doesn't use tagging... if (reduceWork.getNeedsTagging()) { @@ -415,9 +418,20 @@ private boolean getOnlyStructObjectInspectors(ReduceWork reduceWork) throws Sema !(valueObjectInspector instanceof StructObjectInspector)) { return false; } - StructObjectInspector valueStructObjectInspector = - (StructObjectInspector)valueObjectInspector; - valueColCount = valueStructObjectInspector.getAllStructFieldRefs().size(); + StructObjectInspector valueStructObjectInspector = (StructObjectInspector)valueObjectInspector; + List valueFields = valueStructObjectInspector.getAllStructFieldRefs(); + + reduceColumnNames = new ArrayList(); + reduceTypeInfos = new ArrayList(); + + for (StructField field: keyFields) { + reduceColumnNames.add(Utilities.ReduceField.KEY.toString() + "." + field.getFieldName()); + reduceTypeInfos.add(TypeInfoUtils.getTypeInfoFromTypeString(field.getFieldObjectInspector().getTypeName())); + } + for (StructField field: valueFields) { + reduceColumnNames.add(Utilities.ReduceField.VALUE.toString() + "." + field.getFieldName()); + reduceTypeInfos.add(TypeInfoUtils.getTypeInfoFromTypeString(field.getFieldObjectInspector().getTypeName())); + } } catch (Exception e) { throw new SemanticException(e); } @@ -467,7 +481,7 @@ private void vectorizeReduceWork(ReduceWork reduceWork) throws SemanticException // VectorizationContext... Do we use PreOrderWalker instead of DefaultGraphWalker. Map opRules = new LinkedHashMap(); ReduceWorkVectorizationNodeProcessor vnp = - new ReduceWorkVectorizationNodeProcessor(reduceWork, keyColCount, valueColCount); + new ReduceWorkVectorizationNodeProcessor(reduceColumnNames); addReduceWorkRules(opRules, vnp); Dispatcher disp = new DefaultRuleDispatcher(vnp, opRules, null); GraphWalker ogw = new PreOrderWalker(disp); @@ -484,18 +498,17 @@ private void vectorizeReduceWork(ReduceWork reduceWork) throws SemanticException Operator reducer = reduceWork.getReducer(); if (reducer.getType().equals(OperatorType.EXTRACT)) { - ((VectorExtractOperator)reducer).setKeyAndValueColCounts(keyColCount, valueColCount); + ((VectorExtractOperator)reducer).setReduceTypeInfos(reduceTypeInfos); } - Map> columnVectorTypes = vnp.getScratchColumnVectorTypes(); - reduceWork.setScratchColumnVectorTypes(columnVectorTypes); - Map> columnMap = vnp.getScratchColumnMap(); - reduceWork.setScratchColumnMap(columnMap); + Map> allScratchColumnVectorTypeMaps = vnp.getAllScratchColumnVectorTypeMaps(); + reduceWork.setAllScratchColumnVectorTypeMaps(allScratchColumnVectorTypeMaps); + Map> allColumnVectorMaps = vnp.getAllColumnVectorMaps(); + reduceWork.setAllColumnVectorMaps(allColumnVectorMaps); if (LOG.isDebugEnabled()) { - LOG.debug(String.format("vectorTypes: %s", columnVectorTypes.toString())); - LOG.debug(String.format("columnMap: %s", columnMap.toString())); + debugDisplayAllMaps(allColumnVectorMaps, allScratchColumnVectorTypeMaps); } } } @@ -560,26 +573,26 @@ class VectorizationNodeProcessor implements NodeProcessor { protected final Set> opsDone = new HashSet>(); - public Map> getScratchColumnVectorTypes() { - Map> scratchColumnVectorTypes = + public Map> getAllScratchColumnVectorTypeMaps() { + Map> allScratchColumnVectorTypeMaps = new HashMap>(); for (String onefile : scratchColumnContext.keySet()) { VectorizationContext vc = scratchColumnContext.get(onefile); - Map cmap = vc.getOutputColumnTypeMap(); - scratchColumnVectorTypes.put(onefile, cmap); + Map cmap = vc.getScratchColumnTypeMap(); + allScratchColumnVectorTypeMaps.put(onefile, cmap); } - return scratchColumnVectorTypes; + return allScratchColumnVectorTypeMaps; } - public Map> getScratchColumnMap() { - Map> scratchColumnMap = + public Map> getAllColumnVectorMaps() { + Map> allColumnVectorMaps = new HashMap>(); for(String oneFile: scratchColumnContext.keySet()) { VectorizationContext vc = scratchColumnContext.get(oneFile); - Map cmap = vc.getColumnMap(); - scratchColumnMap.put(oneFile, cmap); + Map cmap = vc.getProjectionColumnMap(); + allColumnVectorMaps.put(oneFile, cmap); } - return scratchColumnMap; + return allColumnVectorMaps; } public VectorizationContext walkStackToFindVectorizationContext(Stack stack, @@ -665,10 +678,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, vContext.setFileKey(onefile); scratchColumnContext.put(onefile, vContext); if (LOG.isDebugEnabled()) { - LOG.debug("Vectorized MapWork operator " + op.getName() + - " with vectorization context key=" + vContext.getFileKey() + - ", vectorTypes: " + vContext.getOutputColumnTypeMap().toString() + - ", columnMap: " + vContext.getColumnMap().toString()); + LOG.debug("Vectorized MapWork operator " + op.getName() + " vectorization context " + vContext.toString()); } break; } @@ -699,17 +709,11 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, Operator vectorOp = doVectorize(op, vContext); if (LOG.isDebugEnabled()) { - LOG.debug("Vectorized MapWork operator " + vectorOp.getName() + - " with vectorization context key=" + vContext.getFileKey() + - ", vectorTypes: " + vContext.getOutputColumnTypeMap().toString() + - ", columnMap: " + vContext.getColumnMap().toString()); + LOG.debug("Vectorized MapWork operator " + vectorOp.getName() + " vectorization context " + vContext.toString()); if (vectorOp instanceof VectorizationContextRegion) { VectorizationContextRegion vcRegion = (VectorizationContextRegion) vectorOp; VectorizationContext vOutContext = vcRegion.getOuputVectorizationContext(); - LOG.debug("Vectorized MapWork operator " + vectorOp.getName() + - " added new vectorization context key=" + vOutContext.getFileKey() + - ", vectorTypes: " + vOutContext.getOutputColumnTypeMap().toString() + - ", columnMap: " + vOutContext.getColumnMap().toString()); + LOG.debug("Vectorized MapWork operator " + vectorOp.getName() + " added vectorization context " + vContext.toString()); } } @@ -719,10 +723,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, class ReduceWorkVectorizationNodeProcessor extends VectorizationNodeProcessor { - private final ReduceWork rWork; - private int keyColCount; - private int valueColCount; - private Map reduceColumnNameMap; + private List reduceColumnNames; private VectorizationContext reduceShuffleVectorizationContext; @@ -732,12 +733,8 @@ public Operator getRootVectorOp() { return rootVectorOp; } - public ReduceWorkVectorizationNodeProcessor(ReduceWork rWork, int keyColCount, - int valueColCount) { - this.rWork = rWork; - reduceColumnNameMap = rWork.getReduceColumnNameMap(); - this.keyColCount = keyColCount; - this.valueColCount = valueColCount; + public ReduceWorkVectorizationNodeProcessor(List reduceColumnNames) { + this.reduceColumnNames = reduceColumnNames; rootVectorOp = null; reduceShuffleVectorizationContext = null; } @@ -755,17 +752,16 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, boolean saveRootVectorOp = false; if (op.getParentOperators().size() == 0) { - vContext = getReduceVectorizationContext(reduceColumnNameMap); + LOG.info("ReduceWorkVectorizationNodeProcessor process reduceColumnNames " + reduceColumnNames.toString()); + + vContext = new VectorizationContext(reduceColumnNames); vContext.setFileKey("_REDUCE_SHUFFLE_"); scratchColumnContext.put("_REDUCE_SHUFFLE_", vContext); reduceShuffleVectorizationContext = vContext; saveRootVectorOp = true; if (LOG.isDebugEnabled()) { - LOG.debug("Vectorized ReduceWork reduce shuffle vectorization context key=" + - vContext.getFileKey() + - ", vectorTypes: " + vContext.getOutputColumnTypeMap().toString() + - ", columnMap: " + vContext.getColumnMap().toString()); + LOG.debug("Vectorized ReduceWork reduce shuffle vectorization context " + vContext.toString()); } } else { vContext = walkStackToFindVectorizationContext(stack, op); @@ -791,17 +787,11 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, Operator vectorOp = doVectorize(op, vContext); if (LOG.isDebugEnabled()) { - LOG.debug("Vectorized ReduceWork operator " + vectorOp.getName() + - " with vectorization context key=" + vContext.getFileKey() + - ", vectorTypes: " + vContext.getOutputColumnTypeMap().toString() + - ", columnMap: " + vContext.getColumnMap().toString()); + LOG.debug("Vectorized ReduceWork operator " + vectorOp.getName() + " vectorization context " + vContext.toString()); if (vectorOp instanceof VectorizationContextRegion) { VectorizationContextRegion vcRegion = (VectorizationContextRegion) vectorOp; VectorizationContext vOutContext = vcRegion.getOuputVectorizationContext(); - LOG.debug("Vectorized ReduceWork operator " + vectorOp.getName() + - " added new vectorization context key=" + vOutContext.getFileKey() + - ", vectorTypes: " + vOutContext.getOutputColumnTypeMap().toString() + - ", columnMap: " + vOutContext.getColumnMap().toString()); + LOG.debug("Vectorized ReduceWork operator " + vectorOp.getName() + " added vectorization context " + vContext.toString()); } } if (vectorOp instanceof VectorGroupByOperator) { @@ -819,7 +809,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, private static class ValidatorVectorizationContext extends VectorizationContext { private ValidatorVectorizationContext() { - super(null, -1); + super(); } @Override @@ -1222,21 +1212,17 @@ private VectorizationContext getVectorizationContext(Operator op, PhysicalContext pctx) { RowSchema rs = op.getSchema(); - Map cmap = new HashMap(); - int columnCount = 0; + // Add all non-virtual columns to make a vectorization context for + // the TableScan operator. + VectorizationContext vContext = new VectorizationContext(); for (ColumnInfo c : rs.getSignature()) { // Earlier, validation code should have eliminated virtual columns usage (HIVE-5560). if (!isVirtualColumn(c)) { - cmap.put(c.getInternalName(), columnCount++); + vContext.addInitialColumn(c.getInternalName()); } } - - return new VectorizationContext(cmap, columnCount); - } - - private VectorizationContext getReduceVectorizationContext( - Map reduceColumnNameMap) { - return new VectorizationContext(reduceColumnNameMap, reduceColumnNameMap.size()); + vContext.finishedAddingInitialColumns(); + return vContext; } private void fixupParentChildOperators(Operator op, @@ -1292,4 +1278,41 @@ private boolean isVirtualColumn(ColumnInfo column) { } return false; } + + public void debugDisplayAllMaps(Map> allColumnVectorMaps, + Map> allScratchColumnVectorTypeMaps) { + + // Context keys grow in length since they are a path... + Comparator comparerShorterString = new Comparator() { + @Override + public int compare(String o1, String o2) { + Integer length1 = o1.length(); + Integer length2 = o2.length(); + return length1.compareTo(length2); + }}; + + Comparator comparerInteger = new Comparator() { + @Override + public int compare(Integer o1, Integer o2) { + return o1.compareTo(o2); + }}; + + Map> sortedAllColumnVectorMaps = new TreeMap>(comparerShorterString); + for (Map.Entry> entry : allColumnVectorMaps.entrySet()) { + Map sortedColumnMap = new TreeMap(comparerInteger); + for (Map.Entry innerEntry : entry.getValue().entrySet()) { + sortedColumnMap.put(innerEntry.getValue(), innerEntry.getKey()); + } + sortedAllColumnVectorMaps.put(entry.getKey(), sortedColumnMap); + } + LOG.debug("sortedAllColumnVectorMaps " + sortedAllColumnVectorMaps); + + Map> sortedAllScratchColumnVectorTypeMap = new TreeMap>(comparerShorterString); + for (Map.Entry> entry : allScratchColumnVectorTypeMaps.entrySet()) { + Map sortedScratchColumnTypeMap = new TreeMap(comparerInteger); + sortedScratchColumnTypeMap.putAll(entry.getValue()); + sortedAllScratchColumnVectorTypeMap.put(entry.getKey(), sortedScratchColumnTypeMap); + } + LOG.debug("sortedAllScratchColumnVectorTypeMap " + sortedAllScratchColumnVectorTypeMap); + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java index 9d8d52dfd509..a1cc90d06dd6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java @@ -56,8 +56,8 @@ public BaseWork(String name) { private String name; // Vectorization. - protected Map> scratchColumnVectorTypes = null; - protected Map> scratchColumnMap = null; + protected Map> allScratchColumnVectorTypeMaps = null; + protected Map> allColumnVectorMaps = null; protected boolean vectorMode = false; public void setGatheringStats(boolean gatherStats) { @@ -115,21 +115,21 @@ public Set> getAllOperators() { return returnSet; } - public Map> getScratchColumnVectorTypes() { - return scratchColumnVectorTypes; + public Map> getAllScratchColumnVectorTypeMaps() { + return allScratchColumnVectorTypeMaps; } - public void setScratchColumnVectorTypes( - Map> scratchColumnVectorTypes) { - this.scratchColumnVectorTypes = scratchColumnVectorTypes; + public void setAllScratchColumnVectorTypeMaps( + Map> allScratchColumnVectorTypeMaps) { + this.allScratchColumnVectorTypeMaps = allScratchColumnVectorTypeMaps; } - public Map> getScratchColumnMap() { - return scratchColumnMap; + public Map> getAllColumnVectorMaps() { + return allColumnVectorMaps; } - public void setScratchColumnMap(Map> scratchColumnMap) { - this.scratchColumnMap = scratchColumnMap; + public void setAllColumnVectorMaps(Map> allColumnVectorMaps) { + this.allColumnVectorMaps = allColumnVectorMaps; } @Override diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceWork.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceWork.java index 53ba03198186..c78184b4feed 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceWork.java @@ -95,8 +95,6 @@ public ReduceWork(String name) { private ObjectInspector keyObjectInspector = null; private ObjectInspector valueObjectInspector = null; - private final Map reduceColumnNameMap = new LinkedHashMap(); - /** * If the plan has a reducer and correspondingly a reduce-sink, then store the TableDesc pointing * to keySerializeInfo of the ReduceSink @@ -142,58 +140,6 @@ public ObjectInspector getValueObjectInspector() { return valueObjectInspector; } - private int addToReduceColumnNameMap(StructObjectInspector structObjectInspector, int startIndex, String prefix) { - List fields = structObjectInspector.getAllStructFieldRefs(); - int index = startIndex; - for (StructField field: fields) { - reduceColumnNameMap.put(prefix + "." + field.getFieldName(), index); - index++; - } - return index; - } - - public Boolean fillInReduceColumnNameMap() { - ObjectInspector keyObjectInspector = getKeyObjectInspector(); - if (keyObjectInspector == null || !(keyObjectInspector instanceof StructObjectInspector)) { - return false; - } - StructObjectInspector keyStructObjectInspector = (StructObjectInspector) keyObjectInspector; - - ObjectInspector valueObjectInspector = getValueObjectInspector(); - if (valueObjectInspector == null || !(valueObjectInspector instanceof StructObjectInspector)) { - return false; - } - StructObjectInspector valueStructObjectInspector = (StructObjectInspector) valueObjectInspector; - - int keyCount = addToReduceColumnNameMap(keyStructObjectInspector, 0, Utilities.ReduceField.KEY.toString()); - addToReduceColumnNameMap(valueStructObjectInspector, keyCount, Utilities.ReduceField.VALUE.toString()); - return true; - } - - public Map getReduceColumnNameMap() { - if (needsTagging) { - return null; - } - if (reduceColumnNameMap.size() == 0) { - if (!fillInReduceColumnNameMap()) { - return null; - } - } - return reduceColumnNameMap; - } - - public List getReduceColumnNames() { - if (needsTagging) { - return null; - } - if (reduceColumnNameMap.size() == 0) { - if (!fillInReduceColumnNameMap()) { - return null; - } - } - return new ArrayList(reduceColumnNameMap.keySet()); - } - public List getTagToValueDesc() { return tagToValueDesc; } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorFilterOperator.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorFilterOperator.java index 24a52a687419..27c1a849781b 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorFilterOperator.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorFilterOperator.java @@ -18,7 +18,9 @@ package org.apache.hadoop.hive.ql.exec.vector; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import junit.framework.Assert; @@ -83,9 +85,9 @@ private LongColumnVector getLongVector(int len) { private VectorFilterOperator getAVectorFilterOperator() throws HiveException { ExprNodeColumnDesc col1Expr = new ExprNodeColumnDesc(Long.class, "col1", "table", false); - Map columnMap = new HashMap(); - columnMap.put("col1", 1); - VectorizationContext vc = new VectorizationContext(columnMap, 1); + List columns = new ArrayList(); + columns.add("col1"); + VectorizationContext vc = new VectorizationContext(columns); FilterDesc fdesc = new FilterDesc(); fdesc.setPredicate(col1Expr); return new VectorFilterOperator(vc, fdesc); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorGroupByOperator.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorGroupByOperator.java index 525aa993634e..c147483e0fef 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorGroupByOperator.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorGroupByOperator.java @@ -170,10 +170,10 @@ private static GroupByDesc buildKeyGroupByDesc( @Test public void testMemoryPressureFlush() throws HiveException { - Map mapColumnNames = new HashMap(); - mapColumnNames.put("Key", 0); - mapColumnNames.put("Value", 1); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, 2); + List mapColumnNames = new ArrayList(); + mapColumnNames.add("Key"); + mapColumnNames.add("Value"); + VectorizationContext ctx = new VectorizationContext(mapColumnNames); GroupByDesc desc = buildKeyGroupByDesc (ctx, "max", "Value", TypeInfoFactory.longTypeInfo, @@ -1710,7 +1710,7 @@ private void testMultiKey( mapColumnNames.put("value", i); outputColumnNames.add("value"); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, i+1); + VectorizationContext ctx = new VectorizationContext(outputColumnNames); ArrayList aggs = new ArrayList(1); aggs.add( @@ -1818,10 +1818,10 @@ private void testKeyTypeAggregate( FakeVectorRowBatchFromObjectIterables data, Map expected) throws HiveException { - Map mapColumnNames = new HashMap(); - mapColumnNames.put("Key", 0); - mapColumnNames.put("Value", 1); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, 2); + List mapColumnNames = new ArrayList(); + mapColumnNames.add("Key"); + mapColumnNames.add("Value"); + VectorizationContext ctx = new VectorizationContext(mapColumnNames); Set keys = new HashSet(); AggregationDesc agg = buildAggregationDesc(ctx, aggregateName, @@ -2233,9 +2233,9 @@ public static Validator getValidator(String aggregate) throws HiveException { public void testAggregateCountStarIterable ( Iterable data, Object expected) throws HiveException { - Map mapColumnNames = new HashMap(); - mapColumnNames.put("A", 0); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, 1); + List mapColumnNames = new ArrayList(); + mapColumnNames.add("A"); + VectorizationContext ctx = new VectorizationContext(mapColumnNames); GroupByDesc desc = buildGroupByDescCountStar (ctx); @@ -2262,9 +2262,9 @@ public void testAggregateCountStarIterable ( public void testAggregateCountReduceIterable ( Iterable data, Object expected) throws HiveException { - Map mapColumnNames = new HashMap(); - mapColumnNames.put("A", 0); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, 1); + List mapColumnNames = new ArrayList(); + mapColumnNames.add("A"); + VectorizationContext ctx = new VectorizationContext(mapColumnNames); GroupByDesc desc = buildGroupByDescType(ctx, "count", "A", TypeInfoFactory.longTypeInfo); VectorGroupByDesc vectorDesc = desc.getVectorDesc(); @@ -2294,9 +2294,9 @@ public void testAggregateStringIterable ( String aggregateName, Iterable data, Object expected) throws HiveException { - Map mapColumnNames = new HashMap(); - mapColumnNames.put("A", 0); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, 1); + List mapColumnNames = new ArrayList(); + mapColumnNames.add("A"); + VectorizationContext ctx = new VectorizationContext(mapColumnNames); GroupByDesc desc = buildGroupByDescType(ctx, aggregateName, "A", TypeInfoFactory.stringTypeInfo); @@ -2325,9 +2325,9 @@ public void testAggregateDecimalIterable ( String aggregateName, Iterable data, Object expected) throws HiveException { - Map mapColumnNames = new HashMap(); - mapColumnNames.put("A", 0); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, 1); + List mapColumnNames = new ArrayList(); + mapColumnNames.add("A"); + VectorizationContext ctx = new VectorizationContext(mapColumnNames); GroupByDesc desc = buildGroupByDescType(ctx, aggregateName, "A", TypeInfoFactory.getDecimalTypeInfo(30, 4)); @@ -2357,9 +2357,9 @@ public void testAggregateDoubleIterable ( String aggregateName, Iterable data, Object expected) throws HiveException { - Map mapColumnNames = new HashMap(); - mapColumnNames.put("A", 0); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, 1); + List mapColumnNames = new ArrayList(); + mapColumnNames.add("A"); + VectorizationContext ctx = new VectorizationContext(mapColumnNames); GroupByDesc desc = buildGroupByDescType (ctx, aggregateName, "A", TypeInfoFactory.doubleTypeInfo); @@ -2388,9 +2388,9 @@ public void testAggregateLongIterable ( String aggregateName, Iterable data, Object expected) throws HiveException { - Map mapColumnNames = new HashMap(); - mapColumnNames.put("A", 0); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, 1); + List mapColumnNames = new ArrayList(); + mapColumnNames.add("A"); + VectorizationContext ctx = new VectorizationContext(mapColumnNames); GroupByDesc desc = buildGroupByDescType(ctx, aggregateName, "A", TypeInfoFactory.longTypeInfo); @@ -2418,10 +2418,11 @@ public void testAggregateLongKeyIterable ( String aggregateName, Iterable data, HashMap expected) throws HiveException { - Map mapColumnNames = new HashMap(); - mapColumnNames.put("Key", 0); - mapColumnNames.put("Value", 1); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, 2); + List mapColumnNames = new ArrayList(); + mapColumnNames.add("Key"); + mapColumnNames.add("Value"); + VectorizationContext ctx = new VectorizationContext(mapColumnNames); + Set keys = new HashSet(); GroupByDesc desc = buildKeyGroupByDesc (ctx, aggregateName, "Value", @@ -2484,10 +2485,10 @@ public void testAggregateStringKeyIterable ( Iterable data, TypeInfo dataTypeInfo, HashMap expected) throws HiveException { - Map mapColumnNames = new HashMap(); - mapColumnNames.put("Key", 0); - mapColumnNames.put("Value", 1); - VectorizationContext ctx = new VectorizationContext(mapColumnNames, 2); + List mapColumnNames = new ArrayList(); + mapColumnNames.add("Key"); + mapColumnNames.add("Value"); + VectorizationContext ctx = new VectorizationContext(mapColumnNames); Set keys = new HashSet(); GroupByDesc desc = buildKeyGroupByDesc (ctx, aggregateName, "Value", diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSelectOperator.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSelectOperator.java index 486089bdb28c..3c004a190405 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSelectOperator.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSelectOperator.java @@ -84,9 +84,11 @@ public void forward(Object row, ObjectInspector rowInspector) throws HiveExcepti @Test public void testSelectOperator() throws HiveException { - Map columnMap = new HashMap(); - columnMap.put("a", 0); columnMap.put("b", 1); columnMap.put("c", 2); - VectorizationContext vc = new VectorizationContext(columnMap, 3); + List columns = new ArrayList(); + columns.add("a"); + columns.add("b"); + columns.add("c"); + VectorizationContext vc = new VectorizationContext(columns); SelectDesc selDesc = new SelectDesc(false); List colList = new ArrayList(); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorizationContext.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorizationContext.java index 9e3628fd1013..efe2efe5dc11 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorizationContext.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorizationContext.java @@ -247,16 +247,16 @@ public void testArithmeticExpressionVectorization() throws HiveException { children5.add(col6Expr); modExpr.setChildren(children5); - Map columnMap = new HashMap(); - columnMap.put("col1", 1); - columnMap.put("col2", 2); - columnMap.put("col3", 3); - columnMap.put("col4", 4); - columnMap.put("col5", 5); - columnMap.put("col6", 6); + VectorizationContext vc = new VectorizationContext(); + vc.addInitialColumn("col1"); + vc.addInitialColumn("col2"); + vc.addInitialColumn("col3"); + vc.addInitialColumn("col4"); + vc.addInitialColumn("col5"); + vc.addInitialColumn("col6"); + vc.finishedAddingInitialColumns(); //Generate vectorized expression - VectorizationContext vc = new VectorizationContext(columnMap, 6); VectorExpression ve = vc.getVectorExpression(sumExpr, VectorExpressionDescriptor.Mode.PROJECTION); //Verify vectorized expression @@ -293,11 +293,11 @@ public void testStringFilterExpressions() throws HiveException { children1.add(constDesc); exprDesc.setChildren(children1); - Map columnMap = new HashMap(); - columnMap.put("col1", 1); - columnMap.put("col2", 2); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + columns.add("col2"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); @@ -318,11 +318,11 @@ public void testFilterStringColCompareStringColumnExpressions() throws HiveExcep children1.add(col2Expr); exprDesc.setChildren(children1); - Map columnMap = new HashMap(); - columnMap.put("col1", 1); - columnMap.put("col2", 2); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + columns.add("col2"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); @@ -341,7 +341,7 @@ public void testFilterStringColCompareStringColumnExpressions() throws HiveExcep children1.add(col2Expr); exprDesc.setChildren(children1); - vc = new VectorizationContext(columnMap, 2); + vc = new VectorizationContext(columns); ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); @@ -360,7 +360,7 @@ public void testFilterStringColCompareStringColumnExpressions() throws HiveExcep children1.add(col2Expr); exprDesc.setChildren(children1); - vc = new VectorizationContext(columnMap, 2); + vc = new VectorizationContext(columns); ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); @@ -378,7 +378,7 @@ public void testFilterStringColCompareStringColumnExpressions() throws HiveExcep children1.add(col2Expr); exprDesc.setChildren(children1); - vc = new VectorizationContext(columnMap, 2); + vc = new VectorizationContext(columns); ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); @@ -395,7 +395,7 @@ public void testFilterStringColCompareStringColumnExpressions() throws HiveExcep children1.add(col2Expr); exprDesc.setChildren(children1); - vc = new VectorizationContext(columnMap, 2); + vc = new VectorizationContext(columns); ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); @@ -412,7 +412,7 @@ public void testFilterStringColCompareStringColumnExpressions() throws HiveExcep children1.add(col2Expr); exprDesc.setChildren(children1); - vc = new VectorizationContext(columnMap, 2); + vc = new VectorizationContext(columns); ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); @@ -432,10 +432,9 @@ public void testFloatInExpressions() throws HiveException { ExprNodeGenericFuncDesc exprDesc = new ExprNodeGenericFuncDesc(TypeInfoFactory.doubleTypeInfo, udf, children1); - Map columnMap = new HashMap(); - columnMap.put("col1", 0); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col1"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.PROJECTION); @@ -477,11 +476,11 @@ public void testVectorizeFilterAndOrExpression() throws HiveException { children3.add(lessExprDesc); andExprDesc.setChildren(children3); - Map columnMap = new HashMap(); - columnMap.put("col1", 0); - columnMap.put("col2", 1); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + columns.add("col2"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(andExprDesc, VectorExpressionDescriptor.Mode.FILTER); @@ -528,11 +527,10 @@ public void testVectorizeAndOrProjectionExpression() throws HiveException { children3.add(col2Expr); andExprDesc.setChildren(children3); - Map columnMap = new HashMap(); - columnMap.put("col1", 0); - columnMap.put("col2", 1); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col1"); + columns.add("col2"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression veAnd = vc.getVectorExpression(andExprDesc, VectorExpressionDescriptor.Mode.FILTER); assertEquals(veAnd.getClass(), FilterExprAndExpr.class); assertEquals(veAnd.getChildExpressions()[0].getClass(), FilterLongColGreaterLongScalar.class); @@ -557,7 +555,7 @@ public void testVectorizeAndOrProjectionExpression() throws HiveException { orExprDesc.setChildren(children4); //Allocate new Vectorization context to reset the intermediate columns. - vc = new VectorizationContext(columnMap, 2); + vc = new VectorizationContext(columns); VectorExpression veOr = vc.getVectorExpression(orExprDesc, VectorExpressionDescriptor.Mode.FILTER); assertEquals(veOr.getClass(), FilterExprOrExpr.class); assertEquals(veOr.getChildExpressions()[0].getClass(), FilterLongColGreaterLongScalar.class); @@ -594,11 +592,11 @@ public void testNotExpression() throws HiveException { childOfNot.add(greaterExprDesc); notExpr.setChildren(childOfNot); - Map columnMap = new HashMap(); - columnMap.put("col1", 0); - columnMap.put("col2", 1); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + columns.add("col2"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(notExpr, VectorExpressionDescriptor.Mode.FILTER); @@ -632,11 +630,10 @@ public void testNullExpressions() throws HiveException { childOfIsNull.add(greaterExprDesc); isNullExpr.setChildren(childOfIsNull); - Map columnMap = new HashMap(); - columnMap.put("col1", 0); - columnMap.put("col2", 1); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col1"); + columns.add("col2"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(isNullExpr, VectorExpressionDescriptor.Mode.FILTER); @@ -674,11 +671,10 @@ public void testNotNullExpressions() throws HiveException { childOfNot.add(greaterExprDesc); isNotNullExpr.setChildren(childOfNot); - Map columnMap = new HashMap(); - columnMap.put("col1", 0); - columnMap.put("col2", 1); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col1"); + columns.add("col2"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(isNotNullExpr, VectorExpressionDescriptor.Mode.FILTER); @@ -705,10 +701,9 @@ public void testVectorizeScalarColumnExpression() throws HiveException { ExprNodeGenericFuncDesc scalarMinusConstant = new ExprNodeGenericFuncDesc(TypeInfoFactory.longTypeInfo, gudf, children); - Map columnMap = new HashMap(); - columnMap.put("a", 0); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("a"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(scalarMinusConstant, VectorExpressionDescriptor.Mode.PROJECTION); assertEquals(ve.getClass(), LongScalarSubtractLongColumn.class); @@ -727,11 +722,11 @@ public void testFilterWithNegativeScalar() throws HiveException { children1.add(constDesc); exprDesc.setChildren(children1); - Map columnMap = new HashMap(); - columnMap.put("col1", 1); - columnMap.put("col2", 2); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + columns.add("col2"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); @@ -746,9 +741,10 @@ public void testUnaryMinusColumnLong() throws HiveException { children.add(col1Expr); ExprNodeGenericFuncDesc negExprDesc = new ExprNodeGenericFuncDesc(TypeInfoFactory.longTypeInfo, gudf, children); - Map columnMap = new HashMap(); - columnMap.put("col1", 1); - VectorizationContext vc = new VectorizationContext(columnMap, 1); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(negExprDesc, VectorExpressionDescriptor.Mode.PROJECTION); @@ -763,9 +759,10 @@ public void testUnaryMinusColumnDouble() throws HiveException { children.add(col1Expr); ExprNodeGenericFuncDesc negExprDesc = new ExprNodeGenericFuncDesc(TypeInfoFactory.doubleTypeInfo, gudf, children); - Map columnMap = new HashMap(); - columnMap.put("col1", 1); - VectorizationContext vc = new VectorizationContext(columnMap, 1); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(negExprDesc, VectorExpressionDescriptor.Mode.PROJECTION); @@ -788,10 +785,9 @@ public void testFilterScalarCompareColumn() throws HiveException { scalarGreaterColExpr.setChildren(children); - Map columnMap = new HashMap(); - columnMap.put("a", 0); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("a"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(scalarGreaterColExpr, VectorExpressionDescriptor.Mode.FILTER); assertEquals(FilterLongScalarGreaterLongColumn.class, ve.getClass()); } @@ -812,10 +808,9 @@ public void testFilterBooleanColumnCompareBooleanScalar() throws HiveException { colEqualScalar.setChildren(children); - Map columnMap = new HashMap(); - columnMap.put("a", 0); - - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("a"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(colEqualScalar, VectorExpressionDescriptor.Mode.FILTER); assertEquals(FilterLongColEqualLongScalar.class, ve.getClass()); } @@ -836,9 +831,9 @@ public void testBooleanColumnCompareBooleanScalar() throws HiveException { colEqualScalar.setChildren(children); - Map columnMap = new HashMap(); - columnMap.put("a", 0); - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("a"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(colEqualScalar, VectorExpressionDescriptor.Mode.PROJECTION); assertEquals(LongColEqualLongScalar.class, ve.getClass()); } @@ -852,11 +847,10 @@ public void testUnaryStringExpressions() throws HiveException { children.add(colDesc); stringUnary.setChildren(children); - Map columnMap = new HashMap(); - columnMap.put("b", 0); - columnMap.put("a", 1); - VectorizationContext vc = new VectorizationContext(columnMap, 2); - + List columns = new ArrayList(); + columns.add("b"); + columns.add("a"); + VectorizationContext vc = new VectorizationContext(columns); GenericUDF stringLower = new GenericUDFLower(); stringUnary.setGenericUDF(stringLower); @@ -866,7 +860,7 @@ public void testUnaryStringExpressions() throws HiveException { assertEquals(1, ((StringLower) ve).getColNum()); assertEquals(2, ((StringLower) ve).getOutputColumn()); - vc = new VectorizationContext(columnMap, 2); + vc = new VectorizationContext(columns); ExprNodeGenericFuncDesc anotherUnary = new ExprNodeGenericFuncDesc(); anotherUnary.setTypeInfo(TypeInfoFactory.stringTypeInfo); @@ -898,10 +892,10 @@ public void testMathFunctions() throws HiveException { children1.add(colDesc1); children2.add(colDesc2); - Map columnMap = new HashMap(); - columnMap.put("b", 0); - columnMap.put("a", 1); - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("b"); + columns.add("a"); + VectorizationContext vc = new VectorizationContext(columns); // Sin(double) GenericUDFBridge gudfBridge = new GenericUDFBridge("sin", false, UDFSin.class.getName()); @@ -989,10 +983,10 @@ public void testTimeStampUdfs() throws HiveException { List children = new ArrayList(); children.add(colDesc1); - Map columnMap = new HashMap(); - columnMap.put("b", 0); - columnMap.put("a", 1); - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("b"); + columns.add("a"); + VectorizationContext vc = new VectorizationContext(columns); //UDFYear GenericUDFBridge gudfBridge = new GenericUDFBridge("year", false, UDFYear.class.getName()); @@ -1026,10 +1020,12 @@ public void testBetweenFilters() throws HiveException { ExprNodeGenericFuncDesc exprDesc = new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, udf, children1); - Map columnMap = new HashMap(); - columnMap.put("col1", 1); - columnMap.put("col2", 2); - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + columns.add("col2"); + VectorizationContext vc = new VectorizationContext(columns); + VectorExpression ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); assertTrue(ve instanceof FilterStringColumnBetween); @@ -1054,7 +1050,7 @@ public void testBetweenFilters() throws HiveException { exprDesc = new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, udf, children1); - vc = new VectorizationContext(columnMap, 2); + vc = new VectorizationContext(columns); ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); assertTrue(ve instanceof FilterCharColumnBetween); @@ -1079,7 +1075,7 @@ public void testBetweenFilters() throws HiveException { exprDesc = new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, udf, children1); - vc = new VectorizationContext(columnMap, 2); + vc = new VectorizationContext(columns); ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); assertTrue(ve instanceof FilterVarCharColumnBetween); @@ -1144,10 +1140,11 @@ public void testInFiltersAndExprs() throws HiveException { ExprNodeGenericFuncDesc exprDesc = new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, udf, children1); - Map columnMap = new HashMap(); - columnMap.put("col1", 1); - columnMap.put("col2", 2); - VectorizationContext vc = new VectorizationContext(columnMap, 2); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + columns.add("col2"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER); assertTrue(ve instanceof FilterStringColumnInList); ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.PROJECTION); @@ -1197,11 +1194,12 @@ public void testIfConditionalExprs() throws HiveException { ExprNodeGenericFuncDesc exprDesc = new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, udf, children1); - Map columnMap = new HashMap(); - columnMap.put("col1", 1); - columnMap.put("col2", 2); - columnMap.put("col3", 3); - VectorizationContext vc = new VectorizationContext(columnMap, 3); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + columns.add("col2"); + columns.add("col3"); + VectorizationContext vc = new VectorizationContext(columns); VectorExpression ve = vc.getVectorExpression(exprDesc); assertTrue(ve instanceof IfExprLongColumnLongColumn); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java index a15a7a7951b5..3635fc728cb7 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java @@ -1298,8 +1298,8 @@ JobConf createMockExecutionEnvironment(Path workDir, } mapWork.setPathToAliases(aliasMap); mapWork.setPathToPartitionInfo(partMap); - mapWork.setScratchColumnMap(new HashMap>()); - mapWork.setScratchColumnVectorTypes(new HashMap>()); + mapWork.setAllScratchColumnVectorTypeMaps(new HashMap>()); // write the plan out diff --git a/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java b/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java index fbab3affdfef..3271189f38ad 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java @@ -45,13 +45,14 @@ public class TestVectorizer { @Before public void setUp() { - Map columnMap = new HashMap(); - columnMap.put("col1", 0); - columnMap.put("col2", 1); - columnMap.put("col3", 2); + List columns = new ArrayList(); + columns.add("col0"); + columns.add("col1"); + columns.add("col2"); + columns.add("col3"); //Generate vectorized expression - vContext = new VectorizationContext(columnMap, 3); + vContext = new VectorizationContext(columns); } @Description(name = "fake", value = "FAKE") diff --git a/ql/src/test/queries/clientpositive/vector_bucket.q b/ql/src/test/queries/clientpositive/vector_bucket.q new file mode 100644 index 000000000000..19a09c44a701 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_bucket.q @@ -0,0 +1,11 @@ +SET hive.vectorized.execution.enabled=true; +set hive.support.concurrency=true; +set hive.enforce.bucketing=true; + +CREATE TABLE non_orc_table(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS sequencefile; + + +explain +insert into table non_orc_table values(1, 'one'),(1, 'one'), (2, 'two'),(3, 'three'); select a, b from non_orc_table order by a; + +insert into table non_orc_table values(1, 'one'),(1, 'one'), (2, 'two'),(3, 'three'); select a, b from non_orc_table order by a; diff --git a/ql/src/test/results/clientpositive/tez/vector_bucket.q.out b/ql/src/test/results/clientpositive/tez/vector_bucket.q.out new file mode 100644 index 000000000000..e4deb04120e5 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_bucket.q.out @@ -0,0 +1,105 @@ +PREHOOK: query: CREATE TABLE non_orc_table(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS sequencefile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@non_orc_table +POSTHOOK: query: CREATE TABLE non_orc_table(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS sequencefile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@non_orc_table +PREHOOK: query: explain +insert into table non_orc_table values(1, 'one'),(1, 'one'), (2, 'two'),(3, 'three') +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert into table non_orc_table values(1, 'one'),(1, 'one'), (2, 'two'),(3, 'three') +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: values__tmp__table__1 + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL Column stats: NONE + Select Operator + expressions: tmp_values_col1 (type: string), tmp_values_col2 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL Column stats: NONE + Reduce Output Operator + sort order: + Map-reduce partition columns: UDFToInteger(_col0) (type: int) + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string) + Reducer 2 + Reduce Operator Tree: + Extract + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL Column stats: NONE + Select Operator + expressions: UDFToInteger(_col0) (type: int), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL 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 + name: default.non_orc_table + Execution mode: vectorized + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + replace: false + 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 + name: default.non_orc_table + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: select a, b from non_orc_table order by a +PREHOOK: type: QUERY +PREHOOK: Input: default@non_orc_table +#### A masked pattern was here #### +POSTHOOK: query: select a, b from non_orc_table order by a +POSTHOOK: type: QUERY +POSTHOOK: Input: default@non_orc_table +#### A masked pattern was here #### +PREHOOK: query: insert into table non_orc_table values(1, 'one'),(1, 'one'), (2, 'two'),(3, 'three') +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__2 +PREHOOK: Output: default@non_orc_table +POSTHOOK: query: insert into table non_orc_table values(1, 'one'),(1, 'one'), (2, 'two'),(3, 'three') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__2 +POSTHOOK: Output: default@non_orc_table +POSTHOOK: Lineage: non_orc_table.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: non_orc_table.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: select a, b from non_orc_table order by a +PREHOOK: type: QUERY +PREHOOK: Input: default@non_orc_table +#### A masked pattern was here #### +POSTHOOK: query: select a, b from non_orc_table order by a +POSTHOOK: type: QUERY +POSTHOOK: Input: default@non_orc_table +#### A masked pattern was here #### +1 one +1 one +2 two +3 three diff --git a/ql/src/test/results/clientpositive/tez/vector_char_2.q.out b/ql/src/test/results/clientpositive/tez/vector_char_2.q.out index 2e6648595f23..59f872a4091b 100644 --- a/ql/src/test/results/clientpositive/tez/vector_char_2.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_char_2.q.out @@ -110,6 +110,7 @@ STAGE PLANS: sort order: + Statistics: Num rows: 250 Data size: 49500 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint), _col2 (type: bigint) + Execution mode: vectorized Reducer 3 Reduce Operator Tree: Select Operator @@ -241,6 +242,7 @@ STAGE PLANS: sort order: - Statistics: Num rows: 250 Data size: 49500 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint), _col2 (type: bigint) + Execution mode: vectorized Reducer 3 Reduce Operator Tree: Select Operator diff --git a/ql/src/test/results/clientpositive/vector_bucket.q.out b/ql/src/test/results/clientpositive/vector_bucket.q.out new file mode 100644 index 000000000000..952c033d5f67 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_bucket.q.out @@ -0,0 +1,94 @@ +PREHOOK: query: CREATE TABLE non_orc_table(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS sequencefile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@non_orc_table +POSTHOOK: query: CREATE TABLE non_orc_table(a INT, b STRING) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS sequencefile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@non_orc_table +PREHOOK: query: explain +insert into table non_orc_table values(1, 'one'),(1, 'one'), (2, 'two'),(3, 'three') +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert into table non_orc_table values(1, 'one'),(1, 'one'), (2, 'two'),(3, 'three') +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: values__tmp__table__1 + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL Column stats: NONE + Select Operator + expressions: tmp_values_col1 (type: string), tmp_values_col2 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL Column stats: NONE + Reduce Output Operator + sort order: + Map-reduce partition columns: UDFToInteger(_col0) (type: int) + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL Column stats: NONE + value expressions: _col0 (type: string), _col1 (type: string) + Reduce Operator Tree: + Extract + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL Column stats: NONE + Select Operator + expressions: UDFToInteger(_col0) (type: int), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 0 Data size: 26 Basic stats: PARTIAL 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 + name: default.non_orc_table + + Stage: Stage-0 + Move Operator + tables: + replace: false + 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 + name: default.non_orc_table + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: select a, b from non_orc_table order by a +PREHOOK: type: QUERY +PREHOOK: Input: default@non_orc_table +#### A masked pattern was here #### +POSTHOOK: query: select a, b from non_orc_table order by a +POSTHOOK: type: QUERY +POSTHOOK: Input: default@non_orc_table +#### A masked pattern was here #### +PREHOOK: query: insert into table non_orc_table values(1, 'one'),(1, 'one'), (2, 'two'),(3, 'three') +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__2 +PREHOOK: Output: default@non_orc_table +POSTHOOK: query: insert into table non_orc_table values(1, 'one'),(1, 'one'), (2, 'two'),(3, 'three') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__2 +POSTHOOK: Output: default@non_orc_table +POSTHOOK: Lineage: non_orc_table.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: non_orc_table.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: select a, b from non_orc_table order by a +PREHOOK: type: QUERY +PREHOOK: Input: default@non_orc_table +#### A masked pattern was here #### +POSTHOOK: query: select a, b from non_orc_table order by a +POSTHOOK: type: QUERY +POSTHOOK: Input: default@non_orc_table +#### A masked pattern was here #### +1 one +1 one +2 two +3 three From 0213ee1eb8fd0cae51a2aab37d3792927fed4aca Mon Sep 17 00:00:00 2001 From: Brock Noland Date: Wed, 29 Oct 2014 16:02:57 +0000 Subject: [PATCH 195/339] Merge HIVE-8189 - A select statement with a subquery is failing with HBaseSerde from trunk git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635186 13f79535-47bb-0310-9956-ffa450edef68 --- .../test/queries/positive/hbase_ppd_join.q | 61 +++++++ .../results/positive/hbase_ppd_join.q.out | 154 ++++++++++++++++++ .../hadoop/hive/ql/io/HiveInputFormat.java | 3 + 3 files changed, 218 insertions(+) create mode 100644 hbase-handler/src/test/queries/positive/hbase_ppd_join.q create mode 100644 hbase-handler/src/test/results/positive/hbase_ppd_join.q.out diff --git a/hbase-handler/src/test/queries/positive/hbase_ppd_join.q b/hbase-handler/src/test/queries/positive/hbase_ppd_join.q new file mode 100644 index 000000000000..2436c19fed93 --- /dev/null +++ b/hbase-handler/src/test/queries/positive/hbase_ppd_join.q @@ -0,0 +1,61 @@ +--create hive hbase table 1 +drop table if exists hive1_tbl_data_hbase1; +drop table if exists hive1_tbl_data_hbase2; +drop view if exists hive1_view_data_hbase1; +drop view if exists hive1_view_data_hbase2; + +CREATE TABLE hive1_tbl_data_hbase1 (COLUMID string,COLUMN_FN string,COLUMN_LN string,EMAIL string,COL_UPDATED_DATE timestamp, PK_COLUM string) +STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' +WITH SERDEPROPERTIES("hbase.columns.mapping" = "default:COLUMID,default:COLUMN_FN,default:COLUMN_LN,default:EMAIL,default:COL_UPDATED_DATE,:key" +) +; + +--create hive view for the above hive table 1 +CREATE VIEW hive1_view_data_hbase1 +AS +SELECT * +FROM hive1_tbl_data_hbase1 +WHERE PK_COLUM >='4000-00000' +and PK_COLUM <='4000-99999' +AND COL_UPDATED_DATE IS NOT NULL +; + + +--load data to hive table 1 +insert into table hive1_tbl_data_hbase1 select '00001','john','doe','john@hotmail.com','2014-01-01 12:01:02','4000-10000' from src where key = 100; + +--create hive hbase table 2 +CREATE TABLE hive1_tbl_data_hbase2 (COLUMID string,COLUMN_FN string,COLUMN_LN string,EMAIL string,COL_UPDATED_DATE timestamp, PK_COLUM string) +STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' +WITH SERDEPROPERTIES("hbase.columns.mapping" = "default:COLUMID,default:COLUMN_FN,default:COLUMN_LN,default:EMAIL,default:COL_UPDATED_DATE,:key" +) +; + +--create hive view for the above hive hbase table 2 +CREATE VIEW hive1_view_data_hbase2 +AS +SELECT * +FROM hive1_tbl_data_hbase2 +where COL_UPDATED_DATE IS NOT NULL +; + + +--load data to hive hbase table 2 +insert into table hive1_tbl_data_hbase2 select '00001','john','doe','john@hotmail.com','2014-01-01 12:01:02','00001' from src where key = 100; +; + +set hive.optimize.ppd = true; +set hive.auto.convert.join=false; + +-- do not return value without fix + +select x.FIRST_NAME1, x.EMAIL1 from ( +select p.COLUMN_FN as first_name1, a.EMAIL as email1 from hive1_view_data_hbase2 p inner join hive1_view_data_hbase1 a on p.COLUMID =a.COLUMID) x; + +set hive.auto.convert.join=true; + +-- return value with/without fix + +select x.FIRST_NAME1, x.EMAIL1 from ( +select p.COLUMN_FN as first_name1, a.EMAIL as email1 from hive1_view_data_hbase2 p inner join hive1_view_data_hbase1 a on p.COLUMID =a.COLUMID) x; + diff --git a/hbase-handler/src/test/results/positive/hbase_ppd_join.q.out b/hbase-handler/src/test/results/positive/hbase_ppd_join.q.out new file mode 100644 index 000000000000..83a301576fa8 --- /dev/null +++ b/hbase-handler/src/test/results/positive/hbase_ppd_join.q.out @@ -0,0 +1,154 @@ +PREHOOK: query: --create hive hbase table 1 +drop table if exists hive1_tbl_data_hbase1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: --create hive hbase table 1 +drop table if exists hive1_tbl_data_hbase1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists hive1_tbl_data_hbase2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists hive1_tbl_data_hbase2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop view if exists hive1_view_data_hbase1 +PREHOOK: type: DROPVIEW +POSTHOOK: query: drop view if exists hive1_view_data_hbase1 +POSTHOOK: type: DROPVIEW +PREHOOK: query: drop view if exists hive1_view_data_hbase2 +PREHOOK: type: DROPVIEW +POSTHOOK: query: drop view if exists hive1_view_data_hbase2 +POSTHOOK: type: DROPVIEW +PREHOOK: query: CREATE TABLE hive1_tbl_data_hbase1 (COLUMID string,COLUMN_FN string,COLUMN_LN string,EMAIL string,COL_UPDATED_DATE timestamp, PK_COLUM string) +STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' +WITH SERDEPROPERTIES("hbase.columns.mapping" = "default:COLUMID,default:COLUMN_FN,default:COLUMN_LN,default:EMAIL,default:COL_UPDATED_DATE,:key" +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@hive1_tbl_data_hbase1 +POSTHOOK: query: CREATE TABLE hive1_tbl_data_hbase1 (COLUMID string,COLUMN_FN string,COLUMN_LN string,EMAIL string,COL_UPDATED_DATE timestamp, PK_COLUM string) +STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' +WITH SERDEPROPERTIES("hbase.columns.mapping" = "default:COLUMID,default:COLUMN_FN,default:COLUMN_LN,default:EMAIL,default:COL_UPDATED_DATE,:key" +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive1_tbl_data_hbase1 +PREHOOK: query: --create hive view for the above hive table 1 +CREATE VIEW hive1_view_data_hbase1 +AS +SELECT * +FROM hive1_tbl_data_hbase1 +WHERE PK_COLUM >='4000-00000' +and PK_COLUM <='4000-99999' +AND COL_UPDATED_DATE IS NOT NULL +PREHOOK: type: CREATEVIEW +PREHOOK: Input: default@hive1_tbl_data_hbase1 +PREHOOK: Output: database:default +PREHOOK: Output: default@hive1_view_data_hbase1 +POSTHOOK: query: --create hive view for the above hive table 1 +CREATE VIEW hive1_view_data_hbase1 +AS +SELECT * +FROM hive1_tbl_data_hbase1 +WHERE PK_COLUM >='4000-00000' +and PK_COLUM <='4000-99999' +AND COL_UPDATED_DATE IS NOT NULL +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: default@hive1_tbl_data_hbase1 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive1_view_data_hbase1 +PREHOOK: query: --load data to hive table 1 +insert into table hive1_tbl_data_hbase1 select '00001','john','doe','john@hotmail.com','2014-01-01 12:01:02','4000-10000' from src where key = 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@hive1_tbl_data_hbase1 +POSTHOOK: query: --load data to hive table 1 +insert into table hive1_tbl_data_hbase1 select '00001','john','doe','john@hotmail.com','2014-01-01 12:01:02','4000-10000' from src where key = 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@hive1_tbl_data_hbase1 +PREHOOK: query: --create hive hbase table 2 +CREATE TABLE hive1_tbl_data_hbase2 (COLUMID string,COLUMN_FN string,COLUMN_LN string,EMAIL string,COL_UPDATED_DATE timestamp, PK_COLUM string) +STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' +WITH SERDEPROPERTIES("hbase.columns.mapping" = "default:COLUMID,default:COLUMN_FN,default:COLUMN_LN,default:EMAIL,default:COL_UPDATED_DATE,:key" +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@hive1_tbl_data_hbase2 +POSTHOOK: query: --create hive hbase table 2 +CREATE TABLE hive1_tbl_data_hbase2 (COLUMID string,COLUMN_FN string,COLUMN_LN string,EMAIL string,COL_UPDATED_DATE timestamp, PK_COLUM string) +STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' +WITH SERDEPROPERTIES("hbase.columns.mapping" = "default:COLUMID,default:COLUMN_FN,default:COLUMN_LN,default:EMAIL,default:COL_UPDATED_DATE,:key" +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive1_tbl_data_hbase2 +PREHOOK: query: --create hive view for the above hive hbase table 2 +CREATE VIEW hive1_view_data_hbase2 +AS +SELECT * +FROM hive1_tbl_data_hbase2 +where COL_UPDATED_DATE IS NOT NULL +PREHOOK: type: CREATEVIEW +PREHOOK: Input: default@hive1_tbl_data_hbase2 +PREHOOK: Output: database:default +PREHOOK: Output: default@hive1_view_data_hbase2 +POSTHOOK: query: --create hive view for the above hive hbase table 2 +CREATE VIEW hive1_view_data_hbase2 +AS +SELECT * +FROM hive1_tbl_data_hbase2 +where COL_UPDATED_DATE IS NOT NULL +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: default@hive1_tbl_data_hbase2 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive1_view_data_hbase2 +PREHOOK: query: --load data to hive hbase table 2 +insert into table hive1_tbl_data_hbase2 select '00001','john','doe','john@hotmail.com','2014-01-01 12:01:02','00001' from src where key = 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@hive1_tbl_data_hbase2 +POSTHOOK: query: --load data to hive hbase table 2 +insert into table hive1_tbl_data_hbase2 select '00001','john','doe','john@hotmail.com','2014-01-01 12:01:02','00001' from src where key = 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@hive1_tbl_data_hbase2 +PREHOOK: query: -- do not return value without fix + +select x.FIRST_NAME1, x.EMAIL1 from ( +select p.COLUMN_FN as first_name1, a.EMAIL as email1 from hive1_view_data_hbase2 p inner join hive1_view_data_hbase1 a on p.COLUMID =a.COLUMID) x +PREHOOK: type: QUERY +PREHOOK: Input: default@hive1_tbl_data_hbase1 +PREHOOK: Input: default@hive1_tbl_data_hbase2 +PREHOOK: Input: default@hive1_view_data_hbase1 +PREHOOK: Input: default@hive1_view_data_hbase2 +#### A masked pattern was here #### +POSTHOOK: query: -- do not return value without fix + +select x.FIRST_NAME1, x.EMAIL1 from ( +select p.COLUMN_FN as first_name1, a.EMAIL as email1 from hive1_view_data_hbase2 p inner join hive1_view_data_hbase1 a on p.COLUMID =a.COLUMID) x +POSTHOOK: type: QUERY +POSTHOOK: Input: default@hive1_tbl_data_hbase1 +POSTHOOK: Input: default@hive1_tbl_data_hbase2 +POSTHOOK: Input: default@hive1_view_data_hbase1 +POSTHOOK: Input: default@hive1_view_data_hbase2 +#### A masked pattern was here #### +john john@hotmail.com +PREHOOK: query: -- return value with/without fix + +select x.FIRST_NAME1, x.EMAIL1 from ( +select p.COLUMN_FN as first_name1, a.EMAIL as email1 from hive1_view_data_hbase2 p inner join hive1_view_data_hbase1 a on p.COLUMID =a.COLUMID) x +PREHOOK: type: QUERY +PREHOOK: Input: default@hive1_tbl_data_hbase1 +PREHOOK: Input: default@hive1_tbl_data_hbase2 +PREHOOK: Input: default@hive1_view_data_hbase1 +PREHOOK: Input: default@hive1_view_data_hbase2 +#### A masked pattern was here #### +POSTHOOK: query: -- return value with/without fix + +select x.FIRST_NAME1, x.EMAIL1 from ( +select p.COLUMN_FN as first_name1, a.EMAIL as email1 from hive1_view_data_hbase2 p inner join hive1_view_data_hbase1 a on p.COLUMID =a.COLUMID) x +POSTHOOK: type: QUERY +POSTHOOK: Input: default@hive1_tbl_data_hbase1 +POSTHOOK: Input: default@hive1_tbl_data_hbase2 +POSTHOOK: Input: default@hive1_view_data_hbase1 +POSTHOOK: Input: default@hive1_view_data_hbase2 +#### A masked pattern was here #### +john john@hotmail.com diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java index 116725cd43e5..13c9751056fc 100755 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java @@ -428,6 +428,9 @@ protected static PartitionDesc getPartitionDescFromPath( public static void pushFilters(JobConf jobConf, TableScanOperator tableScan) { + // ensure filters are not set from previous pushFilters + jobConf.unset(TableScanDesc.FILTER_TEXT_CONF_STR); + jobConf.unset(TableScanDesc.FILTER_EXPR_CONF_STR); TableScanDesc scanDesc = tableScan.getConf(); if (scanDesc == null) { return; From 590740882fad371f5a45c475e5c89dbd568d7c4b Mon Sep 17 00:00:00 2001 From: Brock Noland Date: Wed, 29 Oct 2014 16:05:28 +0000 Subject: [PATCH 196/339] Merge HIVE-7800 - Parquet Column Index Access Schema Size Checking from trunk git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635187 13f79535-47bb-0310-9956-ffa450edef68 --- .../parquet/read/DataWritableReadSupport.java | 67 ++++++++----------- 1 file changed, 27 insertions(+), 40 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/DataWritableReadSupport.java b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/DataWritableReadSupport.java index 2ad7330365b8..3f8e4d7b2250 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/DataWritableReadSupport.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/DataWritableReadSupport.java @@ -75,6 +75,7 @@ public parquet.hadoop.api.ReadSupport.ReadContext init(final Configuration confi final Map keyValueMetaData, final MessageType fileSchema) { final String columns = configuration.get(IOConstants.COLUMNS); final Map contextMetadata = new HashMap(); + final boolean indexAccess = configuration.getBoolean(PARQUET_COLUMN_INDEX_ACCESS, false); if (columns != null) { final List listColumns = getColumns(columns); final Map lowerCaseFileSchemaColumns = new HashMap(); @@ -82,45 +83,50 @@ public parquet.hadoop.api.ReadSupport.ReadContext init(final Configuration confi lowerCaseFileSchemaColumns.put(c.getPath()[0].toLowerCase(), c.getPath()[0]); } final List typeListTable = new ArrayList(); - for (String col : listColumns) { - col = col.toLowerCase(); - // listColumns contains partition columns which are metadata only - if (lowerCaseFileSchemaColumns.containsKey(col)) { - typeListTable.add(fileSchema.getType(lowerCaseFileSchemaColumns.get(col))); - } else { - // below allows schema evolution - typeListTable.add(new PrimitiveType(Repetition.OPTIONAL, PrimitiveTypeName.BINARY, col)); + if(indexAccess) { + for (int index = 0; index < listColumns.size(); index++) { + //Take columns based on index or pad the field + if(index < fileSchema.getFieldCount()) { + typeListTable.add(fileSchema.getType(index)); + } else { + //prefixing with '_mask_' to ensure no conflict with named + //columns in the file schema + typeListTable.add(new PrimitiveType(Repetition.OPTIONAL, PrimitiveTypeName.BINARY, "_mask_"+listColumns.get(index))); + } + } + } else { + for (String col : listColumns) { + col = col.toLowerCase(); + // listColumns contains partition columns which are metadata only + if (lowerCaseFileSchemaColumns.containsKey(col)) { + typeListTable.add(fileSchema.getType(lowerCaseFileSchemaColumns.get(col))); + } else { + // below allows schema evolution + typeListTable.add(new PrimitiveType(Repetition.OPTIONAL, PrimitiveTypeName.BINARY, col)); + } } } MessageType tableSchema = new MessageType(TABLE_SCHEMA, typeListTable); contextMetadata.put(HIVE_SCHEMA_KEY, tableSchema.toString()); - MessageType requestedSchemaByUser = tableSchema; final List indexColumnsWanted = ColumnProjectionUtils.getReadColumnIDs(configuration); final List typeListWanted = new ArrayList(); - final boolean indexAccess = configuration.getBoolean(PARQUET_COLUMN_INDEX_ACCESS, false); + for (final Integer idx : indexColumnsWanted) { if (idx < listColumns.size()) { String col = listColumns.get(idx); if (indexAccess) { - typeListWanted.add(tableSchema.getType(col)); + typeListWanted.add(fileSchema.getFields().get(idx)); } else { col = col.toLowerCase(); if (lowerCaseFileSchemaColumns.containsKey(col)) { typeListWanted.add(tableSchema.getType(lowerCaseFileSchemaColumns.get(col))); - } else { - // should never occur? - String msg = "Column " + col + " at index " + idx + " does not exist in " + - lowerCaseFileSchemaColumns; - throw new IllegalStateException(msg); } } } } - requestedSchemaByUser = resolveSchemaAccess(new MessageType(fileSchema.getName(), - typeListWanted), fileSchema, configuration); - + MessageType requestedSchemaByUser = new MessageType(fileSchema.getName(), typeListWanted); return new ReadContext(requestedSchemaByUser, contextMetadata); } else { contextMetadata.put(HIVE_SCHEMA_KEY, fileSchema.toString()); @@ -147,26 +153,7 @@ public RecordMaterializer prepareForRead(final Configuration conf throw new IllegalStateException("ReadContext not initialized properly. " + "Don't know the Hive Schema."); } - final MessageType tableSchema = resolveSchemaAccess(MessageTypeParser. - parseMessageType(metadata.get(HIVE_SCHEMA_KEY)), fileSchema, configuration); + final MessageType tableSchema = MessageTypeParser.parseMessageType(metadata.get(HIVE_SCHEMA_KEY)); return new DataWritableRecordConverter(readContext.getRequestedSchema(), tableSchema); } - - /** - * Determine the file column names based on the position within the requested columns and - * use that as the requested schema. - */ - private MessageType resolveSchemaAccess(MessageType requestedSchema, MessageType fileSchema, - Configuration configuration) { - if (configuration.getBoolean(PARQUET_COLUMN_INDEX_ACCESS, false)) { - final List listColumns = getColumns(configuration.get(IOConstants.COLUMNS)); - List requestedTypes = new ArrayList(); - for(Type t : requestedSchema.getFields()) { - int index = listColumns.indexOf(t.getName()); - requestedTypes.add(fileSchema.getType(index)); - } - requestedSchema = new MessageType(requestedSchema.getName(), requestedTypes); - } - return requestedSchema; - } -} \ No newline at end of file +} From d4f814ad6a112b2e5bd26fdc6ad5348eeaef5fbd Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 29 Oct 2014 18:11:26 +0000 Subject: [PATCH 197/339] HIVE-8585 : Constant folding should happen before ppd (Ashutosh Chauhan via Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635242 13f79535-47bb-0310-9956-ffa450edef68 --- .../results/positive/hbase_pushdown.q.out | 6 +-- .../hadoop/hive/ql/optimizer/Optimizer.java | 9 +++- .../cross_product_check_2.q.out | 10 ++-- .../results/clientpositive/groupby_ppd.q.out | 2 +- .../list_bucket_query_oneskew_2.q.out | 2 +- .../clientpositive/optimize_nullscan.q.out | Bin 90097 -> 89860 bytes .../results/clientpositive/ppd_gby_join.q.out | 36 +++++++------- .../results/clientpositive/ppd_join.q.out | 28 +++++------ .../results/clientpositive/ppd_join2.q.out | 28 +++++------ .../results/clientpositive/ppd_join3.q.out | 36 +++++++------- .../results/clientpositive/ppd_udf_col.q.out | 47 ++++++++---------- .../clientpositive/ppd_union_view.q.out | 42 ++++++++-------- .../clientpositive/ql_rewrite_gbtoidx.q.out | 2 +- .../clientpositive/quotedid_basic.q.out | 16 +++--- .../clientpositive/quotedid_partition.q.out | 2 +- .../clientpositive/subquery_multiinsert.q.out | 4 +- .../tez/cross_product_check_1.q.out | 8 +-- .../tez/cross_product_check_2.q.out | 8 +-- .../tez/optimize_nullscan.q.out | Bin 85609 -> 85348 bytes .../clientpositive/union_remove_19.q.out | 4 +- 20 files changed, 143 insertions(+), 147 deletions(-) diff --git a/hbase-handler/src/test/results/positive/hbase_pushdown.q.out b/hbase-handler/src/test/results/positive/hbase_pushdown.q.out index 520285adae29..8a979bfc424e 100644 --- a/hbase-handler/src/test/results/positive/hbase_pushdown.q.out +++ b/hbase-handler/src/test/results/positive/hbase_pushdown.q.out @@ -94,7 +94,7 @@ STAGE PLANS: predicate: (value like '%90%') (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: key (type: int), value (type: string) + expressions: 90 (type: int), value (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator @@ -142,7 +142,7 @@ STAGE PLANS: predicate: (value like '%90%') (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: key (type: int), value (type: string) + expressions: 90 (type: int), value (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator @@ -194,7 +194,7 @@ STAGE PLANS: predicate: ((value like '%90%') and (key = UDFToInteger(value))) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: key (type: int), value (type: string) + expressions: 90 (type: int), value (type: string) outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java index 3e325589b7ee..5bd47da6de7b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java @@ -60,11 +60,16 @@ public void initialize(HiveConf hiveConf) { // Add the transformation that computes the lineage information. transformations.add(new Generator()); if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTPPD)) { - transformations.add(new PredicateTransitivePropagate()); + transformations.add(new PredicateTransitivePropagate()); + if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTCONSTANTPROPAGATION)) { + transformations.add(new ConstantPropagate()); + } transformations.add(new SyntheticJoinPredicate()); transformations.add(new PredicatePushDown()); } if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTCONSTANTPROPAGATION)) { + // We run constant propagation twice because after predicate pushdown, filter expressions + // are combined and may become eligible for reduction (like is not null filter). transformations.add(new ConstantPropagate()); } if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTPPD)) { @@ -145,7 +150,7 @@ public void initialize(HiveConf hiveConf) { if (!HiveConf.getVar(hiveConf, HiveConf.ConfVars.HIVEFETCHTASKCONVERSION).equals("none")) { transformations.add(new SimpleFetchOptimizer()); // must be called last } - + if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEFETCHTASKAGGR)) { transformations.add(new SimpleFetchAggregation()); } diff --git a/ql/src/test/results/clientpositive/cross_product_check_2.q.out b/ql/src/test/results/clientpositive/cross_product_check_2.q.out index 32d94a654b20..7cf3e9c76ff5 100644 --- a/ql/src/test/results/clientpositive/cross_product_check_2.q.out +++ b/ql/src/test/results/clientpositive/cross_product_check_2.q.out @@ -189,7 +189,7 @@ STAGE PLANS: Processor Tree: ListSink -Warning: Map Join MAPJOIN[26][bigTable=?] in task 'Stage-6:MAPRED' is a cross product +Warning: Map Join MAPJOIN[25][bigTable=?] in task 'Stage-6:MAPRED' is a cross product PREHOOK: query: explain select * from A join (select d1.key from B d1 join B d2 on d1.key = d2.key @@ -337,8 +337,8 @@ STAGE PLANS: Processor Tree: ListSink -Warning: Map Join MAPJOIN[22][bigTable=?] in task 'Stage-6:MAPRED' is a cross product -Warning: Map Join MAPJOIN[23][bigTable=d2] in task 'Stage-2:MAPRED' is a cross product +Warning: Map Join MAPJOIN[21][bigTable=?] in task 'Stage-6:MAPRED' is a cross product +Warning: Map Join MAPJOIN[22][bigTable=d2] in task 'Stage-2:MAPRED' is a cross product PREHOOK: query: explain select * from A join (select d1.key from B d1 join B d2 where 1 = 1 group by d1.key) od1 PREHOOK: type: QUERY POSTHOOK: query: explain select * from A join (select d1.key from B d1 join B d2 where 1 = 1 group by d1.key) od1 @@ -474,8 +474,8 @@ STAGE PLANS: Processor Tree: ListSink -Warning: Map Join MAPJOIN[100][bigTable=?] in task 'Stage-7:MAPRED' is a cross product -Warning: Map Join MAPJOIN[66][bigTable=?] in task 'Stage-6:MAPRED' is a cross product +Warning: Map Join MAPJOIN[97][bigTable=?] in task 'Stage-7:MAPRED' is a cross product +Warning: Map Join MAPJOIN[64][bigTable=?] in task 'Stage-6:MAPRED' is a cross product Warning: Shuffle Join JOIN[21][tables = [ss, od1]] in Stage 'Stage-3:MAPRED' is a cross product PREHOOK: query: explain select * from (select A.key from A group by key) ss join diff --git a/ql/src/test/results/clientpositive/groupby_ppd.q.out b/ql/src/test/results/clientpositive/groupby_ppd.q.out index a0865271996e..403ebd3e1809 100644 --- a/ql/src/test/results/clientpositive/groupby_ppd.q.out +++ b/ql/src/test/results/clientpositive/groupby_ppd.q.out @@ -79,7 +79,7 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: _col0 (type: int), _col1 (type: int) + expressions: 1 (type: int), _col1 (type: int) outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/list_bucket_query_oneskew_2.q.out b/ql/src/test/results/clientpositive/list_bucket_query_oneskew_2.q.out index 85fc09247dca..0ef749aa7c27 100644 --- a/ql/src/test/results/clientpositive/list_bucket_query_oneskew_2.q.out +++ b/ql/src/test/results/clientpositive/list_bucket_query_oneskew_2.q.out @@ -836,7 +836,7 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: int), _col1 (type: bigint) + expressions: 484 (type: int), _col1 (type: bigint) outputColumnNames: _col0, _col1 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/optimize_nullscan.q.out b/ql/src/test/results/clientpositive/optimize_nullscan.q.out index 173cb7bc278298e9e2f80a253608d98adb9ca805..4e3640ef2b19b7ade300700bc7b2f63bd45b1c3f 100644 GIT binary patch delta 148 zcmeykpS5KlYr_^s=ZMLB#B`_Et1t>o&yQqeo1C2pVN8#YWHg@Kcb{$Yh6Ks!n(}Q9d6(=8vV4tkeCo+9P45RX7{m;tN3v?KrrY9&es!#sF z#xnWBUDxRoVi|>|JLoccOp-o6Jt3aadb+ABqv-U#JdDzlZG}`P2grzngeL+3`#v1m$O>|Ba0U(plpCgxF3juSJup1YbzCr;9muf`;G?xcn0sXRy BN*DkD diff --git a/ql/src/test/results/clientpositive/ppd_gby_join.q.out b/ql/src/test/results/clientpositive/ppd_gby_join.q.out index 01e9466832bf..a57272662bde 100644 --- a/ql/src/test/results/clientpositive/ppd_gby_join.q.out +++ b/ql/src/test/results/clientpositive/ppd_gby_join.q.out @@ -31,20 +31,20 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((key > '2') and (key < '400')) and key is not null) and (key <> '4')) and (key > '20')) (type: boolean) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > '2') and (key < '400')) and (key <> '4')) and (key > '20')) (type: boolean) + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (_col0 < '400') (type: boolean) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE @@ -72,7 +72,7 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 4 Data size: 46 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 69 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((((_col0 > '20') and ((_col1 < 'val_50') or (_col0 > '2'))) and ((_col2 > '50') or (_col0 < '50'))) and (_col2 <> '4')) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE @@ -161,17 +161,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((key > '2') and (key < '400')) and key is not null) and (key <> '4')) and (key > '20')) (type: boolean) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > '2') and (key < '400')) and (key <> '4')) and (key > '20')) (type: boolean) + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE @@ -196,20 +196,20 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 210 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((((_col0 > '20') and ((_col1 < 'val_50') or (_col0 > '2'))) and ((_col2 > '50') or (_col0 < '50'))) and (_col2 <> '4')) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: _col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -225,7 +225,7 @@ STAGE PLANS: key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -233,14 +233,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/ppd_join.q.out b/ql/src/test/results/clientpositive/ppd_join.q.out index dd2531a09749..413e899ee5ef 100644 --- a/ql/src/test/results/clientpositive/ppd_join.q.out +++ b/ql/src/test/results/clientpositive/ppd_join.q.out @@ -28,20 +28,20 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((key > '2') and (key < '400')) and key is not null) and (key <> '4')) and (key > '20')) (type: boolean) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > '2') and (key < '400')) and (key <> '4')) and (key > '20')) (type: boolean) + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (_col0 < '400') (type: boolean) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 63 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src @@ -70,7 +70,7 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 4 Data size: 46 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 6 Data size: 69 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((((_col0 > '20') and ((_col1 < 'val_50') or (_col0 > '2'))) and ((_col2 > '50') or (_col0 < '50'))) and (_col2 <> '4')) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE @@ -560,17 +560,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((key > '2') and (key < '400')) and key is not null) and (key <> '4')) and (key > '20')) (type: boolean) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key > '2') and (key < '400')) and (key <> '4')) and (key > '20')) (type: boolean) + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src @@ -596,17 +596,17 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 13 Data size: 139 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 210 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((((_col0 > '20') and ((_col1 < 'val_50') or (_col0 > '2'))) and ((_col2 > '50') or (_col0 < '50'))) and (_col2 <> '4')) (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col3 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/ppd_join2.q.out b/ql/src/test/results/clientpositive/ppd_join2.q.out index 4e8a80314c02..e5c1ee59919e 100644 --- a/ql/src/test/results/clientpositive/ppd_join2.q.out +++ b/ql/src/test/results/clientpositive/ppd_join2.q.out @@ -35,20 +35,20 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((key <> '305') and (key < '400')) and key is not null) and (key <> '14')) and (key <> '311')) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key <> '305') and (key < '400')) and (key <> '14')) and (key <> '311')) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (_col0 < '400') (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src @@ -77,10 +77,10 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 39 Data size: 420 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: _col1 is not null (type: boolean) - Statistics: Num rows: 20 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 30 Data size: 321 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -96,7 +96,7 @@ STAGE PLANS: key expressions: _col1 (type: string) sort order: + Map-reduce partition columns: _col1 (type: string) - Statistics: Num rows: 20 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 30 Data size: 321 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string), _col2 (type: string), _col3 (type: string) TableScan alias: src @@ -1728,17 +1728,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((((key <> '305') and (key < '400')) and key is not null) and (key <> '14')) and (key <> '311')) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + predicate: ((((key <> '305') and (key < '400')) and (key <> '14')) and (key <> '311')) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src @@ -1764,7 +1764,7 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false table: @@ -1780,7 +1780,7 @@ STAGE PLANS: key expressions: _col1 (type: string) sort order: + Map-reduce partition columns: _col1 (type: string) - Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 182 Data size: 1939 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string), _col2 (type: string), _col3 (type: string) TableScan alias: src diff --git a/ql/src/test/results/clientpositive/ppd_join3.q.out b/ql/src/test/results/clientpositive/ppd_join3.q.out index 314e00261a18..62b21c8f7626 100644 --- a/ql/src/test/results/clientpositive/ppd_join3.q.out +++ b/ql/src/test/results/clientpositive/ppd_join3.q.out @@ -34,20 +34,20 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((((key <> '12') and (key < '400')) and key is not null) and (key <> '4')) and (key > '0')) and (key <> '1')) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: (((((key <> '12') and (key < '400')) and (key <> '4')) and (key > '0')) and (key <> '1')) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (_col0 < '400') (type: boolean) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src @@ -72,20 +72,20 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((((key <> '13') and (key < '400')) and key is not null) and (key <> '1')) and (key > '0')) and (key <> '4')) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: (((((key <> '13') and (key < '400')) and (key <> '1')) and (key > '0')) and (key <> '4')) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (_col0 < '400') (type: boolean) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 9 Data size: 95 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -1755,17 +1755,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((((key <> '12') and (key < '400')) and key is not null) and (key <> '4')) and (key > '0')) and (key <> '1')) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: (((((key <> '12') and (key < '400')) and (key <> '4')) and (key > '0')) and (key <> '1')) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan alias: src @@ -1787,17 +1787,17 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((((((key <> '13') and (key < '400')) and key is not null) and (key <> '1')) and (key > '0')) and (key <> '4')) (type: boolean) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + predicate: (((((key <> '13') and (key < '400')) and (key <> '1')) and (key > '0')) and (key <> '4')) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: diff --git a/ql/src/test/results/clientpositive/ppd_udf_col.q.out b/ql/src/test/results/clientpositive/ppd_udf_col.q.out index 5c38154cf8b6..64ebd5b2a812 100644 --- a/ql/src/test/results/clientpositive/ppd_udf_col.q.out +++ b/ql/src/test/results/clientpositive/ppd_udf_col.q.out @@ -130,24 +130,24 @@ STAGE PLANS: Map Operator Tree: TableScan alias: src - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: (key = 100) (type: boolean) - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + predicate: false (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Select Operator expressions: rand() (type: double), '4' (type: string) outputColumnNames: _col2, _col3 - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Filter Operator predicate: (_col3 <= 3) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Select Operator expressions: '100' (type: string), _col2 (type: double), _col3 (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -333,28 +333,21 @@ STAGE PLANS: Map Operator Tree: TableScan alias: src - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: (key = 100) (type: boolean) - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + predicate: false (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE Select Operator - expressions: rand() (type: double), '4' (type: string) - outputColumnNames: _col2, _col3 - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE - Filter Operator - predicate: (_col3 <= 3) (type: boolean) - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: '100' (type: string), _col2 (type: double), _col3 (type: string) - outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + expressions: '100' (type: string), rand() (type: double), '4' (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Stage: Stage-0 Fetch Operator diff --git a/ql/src/test/results/clientpositive/ppd_union_view.q.out b/ql/src/test/results/clientpositive/ppd_union_view.q.out index 1aae964d9b71..d5863eff54b4 100644 --- a/ql/src/test/results/clientpositive/ppd_union_view.q.out +++ b/ql/src/test/results/clientpositive/ppd_union_view.q.out @@ -307,8 +307,8 @@ STAGE PLANS: outputColumnNames: _col1, _col6 Statistics: Num rows: 1 Data size: 15 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col6 (type: string), _col1 (type: string), '2011-10-13' (type: string) - outputColumnNames: _col0, _col1, _col2 + expressions: _col6 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 Statistics: Num rows: 1 Data size: 15 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false @@ -319,8 +319,8 @@ STAGE PLANS: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat properties: - columns _col0,_col1,_col2 - columns.types string,string,string + columns _col0,_col1 + columns.types string,string escape.delim \ serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe @@ -336,7 +336,7 @@ STAGE PLANS: Union Statistics: Num rows: 1 Data size: 15 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + expressions: _col0 (type: string), _col1 (type: string), '2011-10-13' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 1 Data size: 15 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -369,8 +369,8 @@ STAGE PLANS: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat properties: - columns _col0,_col1,_col2 - columns.types string,string,string + columns _col0,_col1 + columns.types string,string escape.delim \ serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe @@ -378,8 +378,8 @@ STAGE PLANS: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat properties: - columns _col0,_col1,_col2 - columns.types string,string,string + columns _col0,_col1 + columns.types string,string escape.delim \ serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe @@ -476,8 +476,8 @@ STAGE PLANS: outputColumnNames: _col1, _col6 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: _col6 (type: string), _col1 (type: string), '2011-10-15' (type: string) - outputColumnNames: _col0, _col1, _col2 + expressions: _col6 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false @@ -488,8 +488,8 @@ STAGE PLANS: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat properties: - columns _col0,_col1,_col2 - columns.types string,string,string + columns _col0,_col1 + columns.types string,string escape.delim \ serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe @@ -505,7 +505,7 @@ STAGE PLANS: Union Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + expressions: _col0 (type: string), _col1 (type: string), '2011-10-15' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -534,13 +534,13 @@ STAGE PLANS: Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE GatherStats: false Select Operator - expressions: key (type: string), value (type: string), '2011-10-15' (type: string) - outputColumnNames: _col0, _col1, _col2 + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE Union Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + expressions: _col0 (type: string), _col1 (type: string), '2011-10-15' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -573,8 +573,8 @@ STAGE PLANS: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat properties: - columns _col0,_col1,_col2 - columns.types string,string,string + columns _col0,_col1 + columns.types string,string escape.delim \ serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe @@ -582,8 +582,8 @@ STAGE PLANS: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat properties: - columns _col0,_col1,_col2 - columns.types string,string,string + columns _col0,_col1 + columns.types string,string escape.delim \ serialization.lib org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe diff --git a/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out b/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out index f7da06c1ce2a..98293297f0df 100644 --- a/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out +++ b/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out @@ -2148,7 +2148,7 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: _col0 (type: int), _col1 (type: int) + expressions: _col0 (type: int), 2 (type: int) outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/quotedid_basic.q.out b/ql/src/test/results/clientpositive/quotedid_basic.q.out index 46ec84b1a9b7..725a0fca8d43 100644 --- a/ql/src/test/results/clientpositive/quotedid_basic.q.out +++ b/ql/src/test/results/clientpositive/quotedid_basic.q.out @@ -121,7 +121,7 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + expressions: _col0 (type: string), _col1 (type: string), '1' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator @@ -191,18 +191,17 @@ STAGE PLANS: Map Operator Tree: TableScan Reduce Output Operator - key expressions: _col2 (type: string), _col1 (type: string) + key expressions: '1' (type: string), _col1 (type: string) sort order: ++ - Map-reduce partition columns: _col2 (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + value expressions: _col0 (type: string), _col1 (type: string), '1' (type: string) Reduce Operator Tree: Extract Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE PTF Operator Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _wcol0 (type: int) + expressions: _col0 (type: string), _col1 (type: string), '1' (type: string), _wcol0 (type: int) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator @@ -274,18 +273,17 @@ STAGE PLANS: Map Operator Tree: TableScan Reduce Output Operator - key expressions: _col2 (type: string), _col1 (type: string) + key expressions: '1' (type: string), _col1 (type: string) sort order: ++ - Map-reduce partition columns: _col2 (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE - value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + value expressions: _col0 (type: string), _col1 (type: string), '1' (type: string) Reduce Operator Tree: Extract Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE PTF Operator Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _wcol0 (type: int) + expressions: _col0 (type: string), _col1 (type: string), '1' (type: string), _wcol0 (type: int) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/quotedid_partition.q.out b/ql/src/test/results/clientpositive/quotedid_partition.q.out index 3972c5dce974..03db1b5d06a0 100644 --- a/ql/src/test/results/clientpositive/quotedid_partition.q.out +++ b/ql/src/test/results/clientpositive/quotedid_partition.q.out @@ -66,7 +66,7 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + expressions: _col0 (type: string), _col1 (type: string), 'a' (type: string) outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/subquery_multiinsert.q.out b/ql/src/test/results/clientpositive/subquery_multiinsert.q.out index b48e1c46782b..9d681390c173 100644 --- a/ql/src/test/results/clientpositive/subquery_multiinsert.q.out +++ b/ql/src/test/results/clientpositive/subquery_multiinsert.q.out @@ -490,7 +490,7 @@ POSTHOOK: Input: default@src_5 199 val_199 199 val_199 2 val_2 -Warning: Map Join MAPJOIN[109][bigTable=b] in task 'Stage-13:MAPRED' is a cross product +Warning: Map Join MAPJOIN[107][bigTable=b] in task 'Stage-13:MAPRED' is a cross product Warning: Shuffle Join JOIN[31][tables = [b, sq_2_notin_nullcheck]] in Stage 'Stage-2:MAPRED' is a cross product PREHOOK: query: explain from src b @@ -823,7 +823,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe -Warning: Map Join MAPJOIN[109][bigTable=b] in task 'Stage-13:MAPRED' is a cross product +Warning: Map Join MAPJOIN[107][bigTable=b] in task 'Stage-13:MAPRED' is a cross product Warning: Shuffle Join JOIN[31][tables = [b, sq_2_notin_nullcheck]] in Stage 'Stage-2:MAPRED' is a cross product PREHOOK: query: from src b INSERT OVERWRITE TABLE src_4 diff --git a/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out b/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out index 5286cac5f1ce..cc13e3714e9d 100644 --- a/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out +++ b/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out @@ -182,7 +182,7 @@ STAGE PLANS: Processor Tree: ListSink -Warning: Shuffle Join MERGEJOIN[25][tables = [a, od1]] in Stage 'Reducer 4' is a cross product +Warning: Shuffle Join MERGEJOIN[24][tables = [a, od1]] in Stage 'Reducer 4' is a cross product PREHOOK: query: explain select * from A join (select d1.key from B d1 join B d2 on d1.key = d2.key @@ -308,8 +308,8 @@ STAGE PLANS: Processor Tree: ListSink -Warning: Shuffle Join MERGEJOIN[18][tables = [d1, d2]] in Stage 'Reducer 2' is a cross product -Warning: Shuffle Join MERGEJOIN[19][tables = [a, od1]] in Stage 'Reducer 4' is a cross product +Warning: Shuffle Join MERGEJOIN[17][tables = [d1, d2]] in Stage 'Reducer 2' is a cross product +Warning: Shuffle Join MERGEJOIN[18][tables = [a, od1]] in Stage 'Reducer 4' is a cross product PREHOOK: query: explain select * from A join (select d1.key from B d1 join B d2 where 1 = 1 group by d1.key) od1 PREHOOK: type: QUERY POSTHOOK: query: explain select * from A join (select d1.key from B d1 join B d2 where 1 = 1 group by d1.key) od1 @@ -420,7 +420,7 @@ STAGE PLANS: Processor Tree: ListSink -Warning: Shuffle Join MERGEJOIN[30][tables = [ss, od1]] in Stage 'Reducer 4' is a cross product +Warning: Shuffle Join MERGEJOIN[29][tables = [ss, od1]] in Stage 'Reducer 4' is a cross product PREHOOK: query: explain select * from (select A.key from A group by key) ss join (select d1.key from B d1 join B d2 on d1.key = d2.key where 1 = 1 group by d1.key) od1 diff --git a/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out b/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out index 3a2d72599607..69c30017a63a 100644 --- a/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out +++ b/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out @@ -177,7 +177,7 @@ STAGE PLANS: Processor Tree: ListSink -Warning: Map Join MAPJOIN[25][bigTable=a] in task 'Map 4' is a cross product +Warning: Map Join MAPJOIN[24][bigTable=a] in task 'Map 4' is a cross product PREHOOK: query: explain select * from A join (select d1.key from B d1 join B d2 on d1.key = d2.key @@ -300,8 +300,8 @@ STAGE PLANS: Processor Tree: ListSink -Warning: Map Join MAPJOIN[18][bigTable=d1] in task 'Map 1' is a cross product -Warning: Map Join MAPJOIN[19][bigTable=a] in task 'Map 4' is a cross product +Warning: Map Join MAPJOIN[17][bigTable=d1] in task 'Map 1' is a cross product +Warning: Map Join MAPJOIN[18][bigTable=a] in task 'Map 4' is a cross product PREHOOK: query: explain select * from A join (select d1.key from B d1 join B d2 where 1 = 1 group by d1.key) od1 PREHOOK: type: QUERY POSTHOOK: query: explain select * from A join (select d1.key from B d1 join B d2 where 1 = 1 group by d1.key) od1 @@ -410,7 +410,7 @@ STAGE PLANS: Processor Tree: ListSink -Warning: Map Join MAPJOIN[30][bigTable=?] in task 'Reducer 5' is a cross product +Warning: Map Join MAPJOIN[29][bigTable=?] in task 'Reducer 5' is a cross product PREHOOK: query: explain select * from (select A.key from A group by key) ss join (select d1.key from B d1 join B d2 on d1.key = d2.key where 1 = 1 group by d1.key) od1 diff --git a/ql/src/test/results/clientpositive/tez/optimize_nullscan.q.out b/ql/src/test/results/clientpositive/tez/optimize_nullscan.q.out index d8b4a58461a6834ecbc6d9ee4c1222ae50231c8d..c45f0db603d52e228c69498ccff18be9839689ed 100644 GIT binary patch delta 143 zcmV;A0C4~5oCV~X1%R{xu`ZLZP7Ig5E&)B0uTBiJtdn2}ldnz;w{kZDzyp(@lMk0c zI{`Ygpp$(FxA;Q=Cjygj>{*vnM*%;QQ6HDHM*$&|peS6kzzRqLmySvSEs{(dm)J@H xDVJ>q0V$K8ph%MtBrTGE5|$hRO_D?flQ1(&lb;ULm&hgoP?PQT8<(6-0nPIZH;VuO delta 217 zcmaDdi}mFk)`l&N8}%kHn9M)@fF7gO<^_{$IkuOZGwx=dyxxyzx}7znEr_vs&Ey0Q z5M%piXGR^S=`l=YEI8)W7OR|e?dRv OxEf@jVlTbbY diff --git a/ql/src/test/results/clientpositive/union_remove_19.q.out b/ql/src/test/results/clientpositive/union_remove_19.q.out index fb4c192e352c..a030c245ab1e 100644 --- a/ql/src/test/results/clientpositive/union_remove_19.q.out +++ b/ql/src/test/results/clientpositive/union_remove_19.q.out @@ -299,7 +299,7 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 7 Data size: 7 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: bigint) + expressions: '7' (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 Statistics: Num rows: 7 Data size: 7 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -354,7 +354,7 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 7 Data size: 7 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: bigint) + expressions: '7' (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 Statistics: Num rows: 7 Data size: 7 Basic stats: COMPLETE Column stats: NONE File Output Operator From eaf078af805367195c4d3b772b434088ac19117a Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 29 Oct 2014 18:16:42 +0000 Subject: [PATCH 198/339] HIVE-8637: In insert into X select from Y, table properties from X are clobbering those from Y (Alan Gates via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635244 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/exec/Utilities.java | 26 +++++++++++++++++++ .../hadoop/hive/ql/io/HiveInputFormat.java | 2 +- .../hadoop/hive/ql/io/orc/OrcInputFormat.java | 1 + 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index b68de195f5c4..975e108d0a41 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -2354,6 +2354,32 @@ public static void copyTableJobPropertiesToConf(TableDesc tbl, JobConf job) { } } + /** + * Copies the storage handler proeprites configured for a table descriptor to a runtime job + * configuration. This differs from {@link #copyTablePropertiesToConf(org.apache.hadoop.hive.ql.plan.TableDesc, org.apache.hadoop.mapred.JobConf)} + * in that it does not allow parameters already set in the job to override the values from the + * table. This is important for setting the config up for reading, + * as the job may already have values in it from another table. + * @param tbl + * @param job + */ + public static void copyTablePropertiesToConf(TableDesc tbl, JobConf job) { + Properties tblProperties = tbl.getProperties(); + for(String name: tblProperties.stringPropertyNames()) { + String val = (String) tblProperties.get(name); + if (val != null) { + job.set(name, StringEscapeUtils.escapeJava(val)); + } + } + Map jobProperties = tbl.getJobProperties(); + if (jobProperties == null) { + return; + } + for (Map.Entry entry : jobProperties.entrySet()) { + job.set(entry.getKey(), entry.getValue()); + } + } + private static final Object INPUT_SUMMARY_LOCK = new Object(); /** diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java index 13c9751056fc..a6a8176285d0 100755 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java @@ -275,7 +275,7 @@ private void addSplitsForGroup(List dirs, TableScanOperator tableScan, Job InputFormat inputFormat, Class inputFormatClass, int splits, TableDesc table, List result) throws IOException { - Utilities.copyTableJobPropertiesToConf(table, conf); + Utilities.copyTablePropertiesToConf(table, conf); if (tableScan != null) { pushFilters(conf, tableScan); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java index 7c2def7df953..9340ce6db9f0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java @@ -388,6 +388,7 @@ static class Context { ConfVars.HIVE_ORC_INCLUDE_FILE_FOOTER_IN_SPLITS); numBuckets = Math.max(conf.getInt(hive_metastoreConstants.BUCKET_COUNT, 0), 0); + LOG.debug("Number of buckets specified by conf file is " + numBuckets); int cacheStripeDetailsSize = HiveConf.getIntVar(conf, ConfVars.HIVE_ORC_CACHE_STRIPE_DETAILS_SIZE); int numThreads = HiveConf.getIntVar(conf, From 4a36927429293197c6efb6c1fb9b1b4d2be62d8f Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 29 Oct 2014 18:24:50 +0000 Subject: [PATCH 199/339] =?UTF-8?q?HIVE-8625=20:=20Some=20union=20queries?= =?UTF-8?q?=20result=20in=20plans=20with=20many=20unions=20with=20CBO=20on?= =?UTF-8?q?=20(=20Jes=C3=BAs=20Camacho=20Rodr=C3=ADguez=20via=20Ashutosh?= =?UTF-8?q?=20Chauhan)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635247 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/OperatorUtils.java | 4 + .../apache/hadoop/hive/ql/exec/RowSchema.java | 46 ++++++++++ .../hadoop/hive/ql/exec/SelectOperator.java | 27 ++++++ .../hive/ql/parse/SemanticAnalyzer.java | 90 +++++++++++------- .../test/results/clientpositive/union29.q.out | 52 ++++------- .../test/results/clientpositive/union30.q.out | 88 ++++++++---------- .../test/results/clientpositive/union34.q.out | 72 +++++---------- .../clientpositive/union_remove_10.q.out | 92 ++++++++----------- .../clientpositive/union_remove_11.q.out | 52 ++++------- 9 files changed, 272 insertions(+), 251 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java index 2bd40fa67828..4d9d1da77394 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java @@ -143,4 +143,8 @@ private static void iterateParents(Operator operator, Function> f } } } + + public static boolean sameRowSchema(Operator operator1, Operator operator2) { + return operator1.getSchema().equals(operator2.getSchema()); + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/RowSchema.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/RowSchema.java index 71cc7eb409ad..450d7f364d1d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/RowSchema.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/RowSchema.java @@ -20,6 +20,7 @@ import java.io.Serializable; import java.util.ArrayList; +import java.util.Iterator; /** * RowSchema Implementation. @@ -48,6 +49,51 @@ public ArrayList getSignature() { return signature; } + @Override + public boolean equals(Object obj) { + if (!(obj instanceof RowSchema) || (obj == null)) { + return false; + } + if(this == obj) { + return true; + } + + RowSchema dest = (RowSchema)obj; + if(this.signature == null && dest.getSignature() == null) { + return true; + } + if((this.signature == null && dest.getSignature() != null) || + (this.signature != null && dest.getSignature() == null) ) { + return false; + } + + if(this.signature.size() != dest.getSignature().size()) { + return false; + } + + Iterator origIt = this.signature.iterator(); + Iterator destIt = dest.getSignature().iterator(); + while(origIt.hasNext()) { + ColumnInfo origColumn = origIt.next(); + ColumnInfo destColumn = destIt.next(); + + if(origColumn == null && destColumn == null) { + continue; + } + + if((origColumn == null && destColumn != null) || + (origColumn != null && destColumn == null) ) { + return false; + } + + if(!origColumn.equals(destColumn)) { + return false; + } + } + + return true; + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java index 42b546bdb2bf..95d2d76c80aa 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java @@ -125,4 +125,31 @@ public boolean supportUnionRemoveOptimization() { public boolean acceptLimitPushdown() { return true; } + + /** + * Checks whether this select operator does something to the + * input tuples. + * + * @return if it is an identity select operator or not + */ + public boolean isIdentitySelect() { + //Safety check + if(this.getNumParent() != 1) { + return false; + } + + //Select * + if(this.getConf().isSelStarNoCompute() || + this.getConf().isSelectStar()) { + return true; + } + + //Check whether the have the same schema + if(!OperatorUtils.sameRowSchema(this, this.getParentOperators().get(0))) { + return false; + } + + return true; + } + } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 355bc1f814af..5c165a296ef4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -93,6 +93,7 @@ import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator; import org.apache.hadoop.hive.ql.exec.RowSchema; import org.apache.hadoop.hive.ql.exec.SMBMapJoinOperator; +import org.apache.hadoop.hive.ql.exec.SelectOperator; import org.apache.hadoop.hive.ql.exec.TableScanOperator; import org.apache.hadoop.hive.ql.exec.Task; import org.apache.hadoop.hive.ql.exec.TaskFactory; @@ -9053,38 +9054,65 @@ private Operator genUnionPlan(String unionalias, String leftalias, rightOp = genInputSelectForUnion(rightOp, rightmap, rightalias, unionoutRR, unionalias); } - // If one of the children is a union, merge with it + // If one of the children (left or right) is: + // (i) a union, or + // (ii) an identity projection followed by a union, + // merge with it // else create a new one - if ((leftOp instanceof UnionOperator) || (rightOp instanceof UnionOperator)) { - if (leftOp instanceof UnionOperator) { - // make left a child of right - List> child = - new ArrayList>(); - child.add(leftOp); - rightOp.setChildOperators(child); - - List> parent = leftOp - .getParentOperators(); - parent.add(rightOp); - - UnionDesc uDesc = ((UnionOperator) leftOp).getConf(); - uDesc.setNumInputs(uDesc.getNumInputs() + 1); - return putOpInsertMap(leftOp, unionoutRR); - } else { - // make right a child of left - List> child = - new ArrayList>(); - child.add(rightOp); - leftOp.setChildOperators(child); - - List> parent = rightOp - .getParentOperators(); - parent.add(leftOp); - UnionDesc uDesc = ((UnionOperator) rightOp).getConf(); - uDesc.setNumInputs(uDesc.getNumInputs() + 1); - - return putOpInsertMap(rightOp, unionoutRR); - } + if (leftOp instanceof UnionOperator || + (leftOp instanceof SelectOperator && + leftOp.getParentOperators() != null && + !leftOp.getParentOperators().isEmpty() && + leftOp.getParentOperators().get(0) instanceof UnionOperator && + ((SelectOperator)leftOp).isIdentitySelect()) ) { + + if(!(leftOp instanceof UnionOperator)) { + Operator oldChild = leftOp; + leftOp = (Operator) leftOp.getParentOperators().get(0); + leftOp.removeChildAndAdoptItsChildren(oldChild); + } + + // make left a child of right + List> child = + new ArrayList>(); + child.add(leftOp); + rightOp.setChildOperators(child); + + List> parent = leftOp + .getParentOperators(); + parent.add(rightOp); + + UnionDesc uDesc = ((UnionOperator) leftOp).getConf(); + uDesc.setNumInputs(uDesc.getNumInputs() + 1); + return putOpInsertMap(leftOp, unionoutRR); + } + + if (rightOp instanceof UnionOperator || + (rightOp instanceof SelectOperator && + rightOp.getParentOperators() != null && + !rightOp.getParentOperators().isEmpty() && + rightOp.getParentOperators().get(0) instanceof UnionOperator && + ((SelectOperator)rightOp).isIdentitySelect()) ) { + + if(!(rightOp instanceof UnionOperator)) { + Operator oldChild = rightOp; + rightOp = (Operator) rightOp.getParentOperators().get(0); + rightOp.removeChildAndAdoptItsChildren(oldChild); + } + + // make right a child of left + List> child = + new ArrayList>(); + child.add(rightOp); + leftOp.setChildOperators(child); + + List> parent = rightOp + .getParentOperators(); + parent.add(leftOp); + UnionDesc uDesc = ((UnionOperator) rightOp).getConf(); + uDesc.setNumInputs(uDesc.getNumInputs() + 1); + + return putOpInsertMap(rightOp, unionoutRR); } // Create a new union operator diff --git a/ql/src/test/results/clientpositive/union29.q.out b/ql/src/test/results/clientpositive/union29.q.out index 41dde4e1ce5d..3a60d0a03669 100644 --- a/ql/src/test/results/clientpositive/union29.q.out +++ b/ql/src/test/results/clientpositive/union29.q.out @@ -75,25 +75,19 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string) + expressions: UDFToInteger(_col0) (type: int), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Union + Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: UDFToInteger(_col0) (type: int), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.union_subq_union + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.union_subq_union TableScan alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE @@ -102,25 +96,19 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string) + expressions: UDFToInteger(_col0) (type: int), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Union + Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: UDFToInteger(_col0) (type: int), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - name: default.union_subq_union + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.union_subq_union Stage: Stage-7 Conditional Operator diff --git a/ql/src/test/results/clientpositive/union30.q.out b/ql/src/test/results/clientpositive/union30.q.out index b5065368d3f2..59934c65b4d7 100644 --- a/ql/src/test/results/clientpositive/union30.q.out +++ b/ql/src/test/results/clientpositive/union30.q.out @@ -48,17 +48,16 @@ select key, value from src POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage - Stage-2 depends on stages: Stage-1, Stage-11 + Stage-2 depends on stages: Stage-1, Stage-10 Stage-3 depends on stages: Stage-2 - Stage-4 depends on stages: Stage-3 - Stage-10 depends on stages: Stage-4 , consists of Stage-7, Stage-6, Stage-8 - Stage-7 - Stage-0 depends on stages: Stage-7, Stage-6, Stage-9 - Stage-5 depends on stages: Stage-0 + Stage-9 depends on stages: Stage-3 , consists of Stage-6, Stage-5, Stage-7 Stage-6 - Stage-8 - Stage-9 depends on stages: Stage-8 - Stage-11 is a root stage + Stage-0 depends on stages: Stage-6, Stage-5, Stage-8 + Stage-4 depends on stages: Stage-0 + Stage-5 + Stage-7 + Stage-8 depends on stages: Stage-7 + Stage-10 is a root stage STAGE PLANS: Stage: Stage-1 @@ -132,42 +131,6 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe Stage: Stage-3 - Map Reduce - Map Operator Tree: - TableScan - alias: src - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: key (type: string), value (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Union - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - table: - input format: org.apache.hadoop.mapred.SequenceFileInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat - serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe - TableScan - Union - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - table: - input format: org.apache.hadoop.mapred.SequenceFileInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat - serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe - - Stage: Stage-4 Map Reduce Map Operator Tree: TableScan @@ -206,11 +169,32 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.union_subq_union + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Union + Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(_col0) (type: int), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.union_subq_union - Stage: Stage-10 + Stage: Stage-9 Conditional Operator - Stage: Stage-7 + Stage: Stage-6 Move Operator files: hdfs directory: true @@ -226,10 +210,10 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.union_subq_union - Stage: Stage-5 + Stage: Stage-4 Stats-Aggr Operator - Stage: Stage-6 + Stage: Stage-5 Map Reduce Map Operator Tree: TableScan @@ -241,7 +225,7 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.union_subq_union - Stage: Stage-8 + Stage: Stage-7 Map Reduce Map Operator Tree: TableScan @@ -253,13 +237,13 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.union_subq_union - Stage: Stage-9 + Stage: Stage-8 Move Operator files: hdfs directory: true #### A masked pattern was here #### - Stage: Stage-11 + Stage: Stage-10 Map Reduce Map Operator Tree: TableScan diff --git a/ql/src/test/results/clientpositive/union34.q.out b/ql/src/test/results/clientpositive/union34.q.out index dc46ac7b6c62..0ab57d6a27cd 100644 --- a/ql/src/test/results/clientpositive/union34.q.out +++ b/ql/src/test/results/clientpositive/union34.q.out @@ -121,22 +121,16 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 20 Data size: 208 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 20 Data size: 208 Basic stats: COMPLETE Column stats: NONE - Union + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: string) - sort order: + - Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - value expressions: _col1 (type: string) + value expressions: _col1 (type: string) TableScan alias: src10_4 Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE @@ -145,22 +139,16 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 20 Data size: 208 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 20 Data size: 208 Basic stats: COMPLETE Column stats: NONE - Union + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: string) - sort order: + - Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - value expressions: _col1 (type: string) + value expressions: _col1 (type: string) TableScan alias: src10_2 Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE @@ -375,22 +363,16 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 20 Data size: 208 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 20 Data size: 208 Basic stats: COMPLETE Column stats: NONE - Union + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: string) - sort order: + - Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - value expressions: _col1 (type: string) + value expressions: _col1 (type: string) TableScan alias: src10_4 Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE @@ -399,22 +381,16 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 20 Data size: 208 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 20 Data size: 208 Basic stats: COMPLETE Column stats: NONE - Union + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: string) - sort order: + - Statistics: Num rows: 25 Data size: 265 Basic stats: COMPLETE Column stats: NONE - value expressions: _col1 (type: string) + value expressions: _col1 (type: string) Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: string) diff --git a/ql/src/test/results/clientpositive/union_remove_10.q.out b/ql/src/test/results/clientpositive/union_remove_10.q.out index b078793cd216..344ed9c1ef60 100644 --- a/ql/src/test/results/clientpositive/union_remove_10.q.out +++ b/ql/src/test/results/clientpositive/union_remove_10.q.out @@ -78,13 +78,13 @@ select * FROM ( POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage - Stage-2 depends on stages: Stage-1 - Stage-7 depends on stages: Stage-2, Stage-8 , consists of Stage-4, Stage-3, Stage-5 - Stage-4 - Stage-0 depends on stages: Stage-4, Stage-3, Stage-6 + Stage-6 depends on stages: Stage-1, Stage-7, Stage-8 , consists of Stage-3, Stage-2, Stage-4 Stage-3 - Stage-5 - Stage-6 depends on stages: Stage-5 + Stage-0 depends on stages: Stage-3, Stage-2, Stage-5 + Stage-2 + Stage-4 + Stage-5 depends on stages: Stage-4 + Stage-7 is a root stage Stage-8 is a root stage STAGE PLANS: @@ -123,55 +123,17 @@ STAGE PLANS: Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator compressed: false + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE 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.lazybinary.LazyBinarySerDe + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe + name: default.outputtbl1 - Stage: Stage-2 - Map Reduce - Map Operator Tree: - TableScan - Union - Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: bigint) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE - table: - input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat - output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat - serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe - name: default.outputtbl1 - TableScan - alias: inputtbl1 - Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE - Select Operator - expressions: key (type: string), UDFToLong(2) (type: bigint) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE - Union - Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: bigint) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE - table: - input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat - output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat - serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe - name: default.outputtbl1 - - Stage: Stage-7 + Stage: Stage-6 Conditional Operator - Stage: Stage-4 + Stage: Stage-3 Move Operator files: hdfs directory: true @@ -187,27 +149,27 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe name: default.outputtbl1 - Stage: Stage-3 + Stage: Stage-2 Merge File Operator Map Operator Tree: RCFile Merge Operator merge level: block input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat - Stage: Stage-5 + Stage: Stage-4 Merge File Operator Map Operator Tree: RCFile Merge Operator merge level: block input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat - Stage: Stage-6 + Stage: Stage-5 Move Operator files: hdfs directory: true #### A masked pattern was here #### - Stage: Stage-8 + Stage: Stage-7 Map Reduce Map Operator Tree: TableScan @@ -226,6 +188,25 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe name: default.outputtbl1 + Stage: Stage-8 + Map Reduce + Map Operator Tree: + TableScan + alias: inputtbl1 + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Select Operator + expressions: key (type: string), UDFToLong(2) (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe + name: default.outputtbl1 + PREHOOK: query: insert overwrite table outputTbl1 SELECT * FROM ( @@ -255,7 +236,6 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@inputtbl1 POSTHOOK: Output: default@outputtbl1 POSTHOOK: Lineage: outputtbl1.key EXPRESSION [(inputtbl1)inputtbl1.FieldSchema(name:key, type:string, comment:null), (inputtbl1)inputtbl1.FieldSchema(name:key, type:string, comment:null), (inputtbl1)inputtbl1.FieldSchema(name:key, type:string, comment:null), ] -POSTHOOK: Lineage: outputtbl1.values EXPRESSION [(inputtbl1)inputtbl1.null, ] PREHOOK: query: desc formatted outputTbl1 PREHOOK: type: DESCTABLE PREHOOK: Input: default@outputtbl1 diff --git a/ql/src/test/results/clientpositive/union_remove_11.q.out b/ql/src/test/results/clientpositive/union_remove_11.q.out index 82d91a9d036b..6db85b61d063 100644 --- a/ql/src/test/results/clientpositive/union_remove_11.q.out +++ b/ql/src/test/results/clientpositive/union_remove_11.q.out @@ -97,25 +97,19 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE Union - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: int) + expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE - Union + Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + File Output Operator + compressed: false Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE - Select Operator - expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE - table: - input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat - output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat - serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe - name: default.outputtbl1 + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe + name: default.outputtbl1 TableScan alias: inputtbl1 Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE @@ -145,25 +139,19 @@ STAGE PLANS: outputColumnNames: _col0, _col1 Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE Union - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: int) + expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 60 Basic stats: PARTIAL Column stats: NONE - Union + Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE + File Output Operator + compressed: false Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE - Select Operator - expressions: _col0 (type: string), UDFToLong(_col1) (type: bigint) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 0 Data size: 90 Basic stats: PARTIAL Column stats: NONE - table: - input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat - output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat - serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe - name: default.outputtbl1 + table: + input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat + output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat + serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe + name: default.outputtbl1 Stage: Stage-6 Conditional Operator From dda32db512541f929b81c10fdc27506d1e37b16b Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Wed, 29 Oct 2014 19:23:59 +0000 Subject: [PATCH 200/339] HIVE-8620 : CBO: HIVE-8433 RowResolver check is too stringent (Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635265 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/ColumnInfo.java | 13 ++++++ .../hadoop/hive/ql/parse/RowResolver.java | 14 +++++-- .../clientpositive/tez/cbo_correctness.q.out | 40 +++++++++---------- 3 files changed, 43 insertions(+), 24 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ColumnInfo.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ColumnInfo.java index e40da12358cf..a34a31d5dde9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ColumnInfo.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ColumnInfo.java @@ -208,6 +208,7 @@ public boolean equals(Object obj) { return false; } + // TODO: why does this not compare tabAlias? ColumnInfo dest = (ColumnInfo)obj; if ((!checkEquals(internalName, dest.getInternalName())) || (!checkEquals(alias, dest.getAlias())) || @@ -221,6 +222,18 @@ public boolean equals(Object obj) { return true; } + public boolean isSameColumnForRR(ColumnInfo other) { + return checkEquals(tabAlias, other.tabAlias) + && checkEquals(alias, other.alias) + && checkEquals(internalName, other.internalName) + && checkEquals(getType(), other.getType()); + } + + public String toMappingString(String tab, String col) { + return tab + "." + col + " => {" + tabAlias + ", " + alias + ", " + + internalName + ": " + getType() + "}"; + } + public void setObjectinspector(ObjectInspector writableObjectInspector) { this.objectInspector = writableObjectInspector; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java index 82315eb0d3a8..469dc9f40623 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java @@ -403,21 +403,27 @@ private static boolean add(RowResolver rrToAddTo, RowResolver rrToAddFrom, public boolean putWithCheck(String tabAlias, String colAlias, String internalName, ColumnInfo newCI) throws SemanticException { ColumnInfo existing = get(tabAlias, colAlias); + // Hive adds the same mapping twice... I wish we could fix stuff like that. if (existing == null) { put(tabAlias, colAlias, newCI); return true; + } else if (existing.isSameColumnForRR(newCI)) { + return true; } - LOG.warn("Found duplicate column alias in RR: " + existing + " for " - + tabAlias + "." + colAlias + " and " + internalName); + LOG.warn("Found duplicate column alias in RR: " + + existing.toMappingString(tabAlias, colAlias) + " adding " + + newCI.toMappingString(tabAlias, colAlias)); if (internalName != null) { existing = get(tabAlias, internalName); if (existing == null) { put(tabAlias, internalName, newCI); return true; + } else if (existing.isSameColumnForRR(newCI)) { + return true; } + LOG.warn("Failed to use internal name after finding a duplicate: " + + existing.toMappingString(tabAlias, internalName)); } - LOG.warn("Failed to use internal name after finding a duplicate: " + existing - + " for " + tabAlias + "." + internalName); return false; } diff --git a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out index d98cb5b95e1f..2103d08da856 100644 --- a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out @@ -16734,26 +16734,6 @@ POSTHOOK: Input: default@t1@dt=2014 POSTHOOK: Input: default@t2 POSTHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 -1 1 1 1.0 false 2014 -1 1 1 1.0 false 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -null null NULL NULL NULL 2014 -null null NULL NULL NULL 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 @@ -16773,6 +16753,26 @@ null null NULL NULL NULL 2014 1 1 1 1.0 false 2014 1 1 1 1.0 false 2014 null null NULL NULL NULL 2014 +null null NULL NULL NULL 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 +1 1 1 1.0 false 2014 +1 1 1 1.0 false 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +null null NULL NULL NULL 2014 null null NULL NULL NULL 2014 PREHOOK: query: select key from (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r2 where key >=0 order by key PREHOOK: type: QUERY From e8ee8b881fe1bffb629b7513d6fd13790b38eb60 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 29 Oct 2014 19:34:14 +0000 Subject: [PATCH 201/339] HIVE-8619: CBO causes some more type problems (Laljo John Pullokkaran via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635271 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/optimizer/optiq/translator/ASTBuilder.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java index acb1edfbb5e0..58320c73aafb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTBuilder.java @@ -179,19 +179,11 @@ static ASTNode literal(RexLiteral literal, boolean useTypeQualInLiteral) { type = HiveParser.BigintLiteral; break; case DOUBLE: - if (useTypeQualInLiteral) { - val = literal.getValue3() + "D"; - } else { - val = literal.getValue3(); - } + val = literal.getValue3() + "D"; type = HiveParser.Number; break; case DECIMAL: - if (useTypeQualInLiteral) { - val = literal.getValue3() + "BD"; - } else { - val = literal.getValue3(); - } + val = literal.getValue3() + "BD"; type = HiveParser.DecimalLiteral; break; case FLOAT: From fc9a50963bf11ed043f6a8ba15fa37608df684a8 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 29 Oct 2014 20:59:36 +0000 Subject: [PATCH 202/339] HIVE-8647: HIVE-8186 causes addition of same child operator multiple times (Vikram Dixit K via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635300 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/exec/MapOperator.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java index 62aa5745e50d..6d06e9e2ef78 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java @@ -354,9 +354,11 @@ public void setChildren(Configuration hconf) throws Exception { StructObjectInspector tableRowOI = convertedOI.get(partDesc.getTableDesc()); contexts.put(op, initObjectInspector(hconf, context, tableRowOI)); - op.setParentOperators(new ArrayList>(1)); - op.getParentOperators().add(this); - children.add(op); + if (children.contains(op) == false) { + op.setParentOperators(new ArrayList>(1)); + op.getParentOperators().add(this); + children.add(op); + } } } @@ -378,8 +380,8 @@ private void initOperatorContext(List> children if (prev != null && !prev.equals(context.rowObjectInspector)) { throw new HiveException("Conflict on row inspector for " + context.alias); } - if (isLogInfoEnabled) { - LOG.info("dump " + context.op + " " + context.rowObjectInspector.getTypeName()); + if (isLogDebugEnabled) { + LOG.debug("dump " + context.op + " " + context.rowObjectInspector.getTypeName()); } } } From 8de742f644f1c516c3f49fc39b30e3494cb11355 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 29 Oct 2014 23:29:05 +0000 Subject: [PATCH 203/339] HIVE-8641: Disable skew joins in tez. (Vikram Dixit K via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635339 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 1 + .../hadoop/hive/ql/optimizer/Optimizer.java | 9 +- .../hive/ql/parse/SemanticAnalyzer.java | 10 +- .../results/clientpositive/tez/skewjoin.q.out | 1161 +++++++++++++++++ 4 files changed, 1177 insertions(+), 4 deletions(-) create mode 100644 ql/src/test/results/clientpositive/tez/skewjoin.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 67a4381574f0..2c84a360912d 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -127,6 +127,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ script_pipe.q,\ scriptfile1.q,\ select_dummy_source.q,\ + skewjoin.q,\ stats_counter.q,\ stats_counter_partitioned.q,\ stats_noscan_1.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java index 5bd47da6de7b..5be0e4540a68 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java @@ -21,6 +21,8 @@ import java.util.ArrayList; import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.optimizer.correlation.CorrelationOptimizer; import org.apache.hadoop.hive.ql.optimizer.correlation.ReduceSinkDeDuplication; @@ -44,6 +46,7 @@ public class Optimizer { private ParseContext pctx; private List transformations; + private static final Log LOG = LogFactory.getLog(Optimizer.class.getName()); /** * Create the list of transformations. @@ -87,7 +90,11 @@ public void initialize(HiveConf hiveConf) { } transformations.add(new ColumnPruner()); if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_OPTIMIZE_SKEWJOIN_COMPILETIME)) { - transformations.add(new SkewJoinOptimizer()); + if (!isTezExecEngine) { + transformations.add(new SkewJoinOptimizer()); + } else { + LOG.warn("Skew join is currently not supported in tez! Disabling the skew join optimization."); + } } if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTGBYUSINGINDEX)) { transformations.add(new RewriteGBUsingIndex()); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 5c165a296ef4..3afc071247f0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -383,7 +383,7 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer { private ArrayList ctesExpanded; /** Not thread-safe. */ - private ASTSearcher astSearcher = new ASTSearcher(); + private final ASTSearcher astSearcher = new ASTSearcher(); private static class Phase1Ctx { String dest; @@ -7760,7 +7760,9 @@ private QBJoinTree genUniqueJoinTree(QB qb, ASTNode joinParseTree, } joinTree.setJoinCond(condn); - if (qb.getParseInfo().getHints() != null) { + if ((qb.getParseInfo().getHints() != null) + && !(conf.getVar(HiveConf.ConfVars.HIVE_EXECUTION_ENGINE).equals("tez"))) { + LOG.info("STREAMTABLE hint honored."); parseStreamTables(joinTree, qb); } @@ -8043,7 +8045,9 @@ private QBJoinTree genJoinTree(QB qb, ASTNode joinParseTree, joinTree.setMapAliases(mapAliases); - parseStreamTables(joinTree, qb); + if ((conf.getVar(HiveConf.ConfVars.HIVE_EXECUTION_ENGINE).equals("tez")) == false) { + parseStreamTables(joinTree, qb); + } } return joinTree; diff --git a/ql/src/test/results/clientpositive/tez/skewjoin.q.out b/ql/src/test/results/clientpositive/tez/skewjoin.q.out new file mode 100644 index 000000000000..e42326b20cff --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/skewjoin.q.out @@ -0,0 +1,1161 @@ +PREHOOK: query: CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@T1 +POSTHOOK: query: CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@T1 +PREHOOK: query: CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@T2 +POSTHOOK: query: CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@T2 +PREHOOK: query: CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@T3 +POSTHOOK: query: CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@T3 +PREHOOK: query: CREATE TABLE T4(key STRING, val STRING) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@T4 +POSTHOOK: query: CREATE TABLE T4(key STRING, val STRING) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@T4 +PREHOOK: query: CREATE TABLE dest_j1(key INT, value STRING) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@dest_j1 +POSTHOOK: query: CREATE TABLE dest_j1(key INT, value STRING) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@dest_j1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T1.txt' INTO TABLE T1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@t1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T1.txt' INTO TABLE T1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@t1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T2.txt' INTO TABLE T2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@t2 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T2.txt' INTO TABLE T2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@t2 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T3.txt' INTO TABLE T3 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@t3 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T3.txt' INTO TABLE T3 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@t3 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T1.txt' INTO TABLE T4 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@t4 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T1.txt' INTO TABLE T4 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@t4 +PREHOOK: query: EXPLAIN +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 3 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 {VALUE._col0} + outputColumnNames: _col0, _col6 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(_col0) (type: int), _col6 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.dest_j1 + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.dest_j1 + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@dest_j1 +POSTHOOK: query: FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@dest_j1 +POSTHOOK: Lineage: dest_j1.key EXPRESSION [(src)src1.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: dest_j1.value SIMPLE [(src)src2.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: SELECT sum(hash(key)), sum(hash(value)) FROM dest_j1 +PREHOOK: type: QUERY +PREHOOK: Input: default@dest_j1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(key)), sum(hash(value)) FROM dest_j1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@dest_j1 +#### A masked pattern was here #### +278697 101852390308 +PREHOOK: query: EXPLAIN +SELECT /*+ STREAMTABLE(a) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT /*+ STREAMTABLE(a) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: d + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: val (type: string) + Map 3 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: val (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 0 Data size: 20 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: val (type: string) + Map 5 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: val (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + Inner Join 2 to 3 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {KEY.reducesinkkey0} {VALUE._col0} + 2 {KEY.reducesinkkey0} {VALUE._col0} + 3 {KEY.reducesinkkey0} {VALUE._col0} + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11, _col15, _col16 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string), _col15 (type: string), _col16 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT /*+ STREAMTABLE(a) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +PREHOOK: Input: default@t2 +PREHOOK: Input: default@t3 +PREHOOK: Input: default@t4 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ STREAMTABLE(a) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +POSTHOOK: Input: default@t2 +POSTHOOK: Input: default@t3 +POSTHOOK: Input: default@t4 +#### A masked pattern was here #### +2 12 2 22 2 12 2 12 +PREHOOK: query: EXPLAIN +SELECT /*+ STREAMTABLE(a,c) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT /*+ STREAMTABLE(a,c) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: d + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: val (type: string) + Map 3 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: val (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 0 Data size: 20 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: val (type: string) + Map 5 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: val (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + Inner Join 2 to 3 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {KEY.reducesinkkey0} {VALUE._col0} + 2 {KEY.reducesinkkey0} {VALUE._col0} + 3 {KEY.reducesinkkey0} {VALUE._col0} + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11, _col15, _col16 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string), _col15 (type: string), _col16 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT /*+ STREAMTABLE(a,c) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +PREHOOK: Input: default@t2 +PREHOOK: Input: default@t3 +PREHOOK: Input: default@t4 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ STREAMTABLE(a,c) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +POSTHOOK: Input: default@t2 +POSTHOOK: Input: default@t3 +POSTHOOK: Input: default@t4 +#### A masked pattern was here #### +2 12 2 22 2 12 2 12 +PREHOOK: query: EXPLAIN FROM T1 a JOIN src c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)) +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN FROM T1 a JOIN src c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key + 1) is not null (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: (key + 1) (type: double) + sort order: + + Map-reduce partition columns: (key + 1) (type: double) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: UDFToDouble(key) is not null (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: UDFToDouble(key) (type: double) + sort order: + + Map-reduce partition columns: UDFToDouble(key) (type: double) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: key (type: string), val (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {VALUE._col0} {VALUE._col1} + 1 {VALUE._col0} + outputColumnNames: _col0, _col1, _col5 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string) + outputColumnNames: _col0, _col1, _col5 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col0)), sum(hash(_col1)), sum(hash(_col5)) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: bigint), _col1 (type: bigint), _col2 (type: bigint) + Reducer 3 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0), sum(VALUE._col1), sum(VALUE._col2) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint), _col1 (type: bigint), _col2 (type: bigint) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM T1 a JOIN src c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Input: default@t1 +#### A masked pattern was here #### +POSTHOOK: query: FROM T1 a JOIN src c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Input: default@t1 +#### A masked pattern was here #### +198 6274 194 +PREHOOK: query: EXPLAIN FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key) +SELECT sum(hash(Y.key)), sum(hash(Y.value)) +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key) +SELECT sum(hash(Y.key)), sum(hash(Y.value)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Map 4 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 {KEY.reducesinkkey0} {VALUE._col0} + outputColumnNames: _col2, _col3 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col2 (type: string), _col3 (type: string) + outputColumnNames: _col2, _col3 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col2)), sum(hash(_col3)) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: bigint), _col1 (type: bigint) + Reducer 3 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0), sum(VALUE._col1) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key) +SELECT sum(hash(Y.key)), sum(hash(Y.value)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key) +SELECT sum(hash(Y.key)), sum(hash(Y.value)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +44481300 101852390308 +PREHOOK: query: EXPLAIN FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key and substring(x.value, 5)=substring(y.value, 5)+1) +SELECT sum(hash(Y.key)), sum(hash(Y.value)) +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key and substring(x.value, 5)=substring(y.value, 5)+1) +SELECT sum(hash(Y.key)), sum(hash(Y.value)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key is not null and UDFToDouble(substring(value, 5)) is not null) (type: boolean) + Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), UDFToDouble(substring(_col1, 5)) (type: double) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), UDFToDouble(substring(_col1, 5)) (type: double) + Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Map 4 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key is not null and (substring(value, 5) + 1) is not null) (type: boolean) + Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), (substring(_col1, 5) + 1) (type: double) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), (substring(_col1, 5) + 1) (type: double) + Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 {KEY.reducesinkkey0} {VALUE._col0} + outputColumnNames: _col2, _col3 + Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col2 (type: string), _col3 (type: string) + outputColumnNames: _col2, _col3 + Statistics: Num rows: 137 Data size: 1460 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col2)), sum(hash(_col3)) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: bigint), _col1 (type: bigint) + Reducer 3 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0), sum(VALUE._col1) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key and substring(x.value, 5)=substring(y.value, 5)+1) +SELECT sum(hash(Y.key)), sum(hash(Y.value)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key and substring(x.value, 5)=substring(y.value, 5)+1) +SELECT sum(hash(Y.key)), sum(hash(Y.value)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +NULL NULL +PREHOOK: query: EXPLAIN +SELECT sum(hash(src1.c1)), sum(hash(src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 = src3.c5 AND src3.c5 < 80 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT sum(hash(src1.c1)), sum(hash(src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 = src3.c5 AND src3.c5 < 80 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (((key < 100) and (key < 80)) and key is not null) (type: boolean) + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key < 80) and (key < 100)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Map 5 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key < 100) and (key < 80)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} + 1 {VALUE._col0} + 2 + outputColumnNames: _col0, _col3 + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col3 (type: string) + outputColumnNames: _col0, _col3 + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col0)), sum(hash(_col3)) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: bigint), _col1 (type: bigint) + Reducer 3 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0), sum(VALUE._col1) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT sum(hash(src1.c1)), sum(hash(src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 = src3.c5 AND src3.c5 < 80 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(src1.c1)), sum(hash(src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 = src3.c5 AND src3.c5 < 80 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +293143 -136853010385 +PREHOOK: query: EXPLAIN +SELECT /*+ mapjoin(v)*/ sum(hash(k.key)), sum(hash(v.val)) FROM T1 k LEFT OUTER JOIN T1 v ON k.key+1=v.key +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT /*+ mapjoin(v)*/ sum(hash(k.key)), sum(hash(v.val)) FROM T1 k LEFT OUTER JOIN T1 v ON k.key+1=v.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: v + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Reduce Output Operator + key expressions: UDFToDouble(key) (type: double) + sort order: + + Map-reduce partition columns: UDFToDouble(key) (type: double) + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + value expressions: val (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: k + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Reduce Output Operator + key expressions: (key + 1) (type: double) + sort order: + + Map-reduce partition columns: (key + 1) (type: double) + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + value expressions: key (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Left Outer Join0 to 1 + condition expressions: + 0 {VALUE._col0} + 1 {VALUE._col1} + outputColumnNames: _col0, _col6 + Statistics: Num rows: 0 Data size: 33 Basic stats: PARTIAL Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col6 (type: string) + outputColumnNames: _col0, _col6 + Statistics: Num rows: 0 Data size: 33 Basic stats: PARTIAL Column stats: NONE + Group By Operator + aggregations: sum(hash(_col0)), sum(hash(_col6)) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: bigint), _col1 (type: bigint) + Reducer 3 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0), sum(VALUE._col1) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT /*+ mapjoin(v)*/ sum(hash(k.key)), sum(hash(v.val)) FROM T1 k LEFT OUTER JOIN T1 v ON k.key+1=v.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ mapjoin(v)*/ sum(hash(k.key)), sum(hash(v.val)) FROM T1 k LEFT OUTER JOIN T1 v ON k.key+1=v.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +#### A masked pattern was here #### +372 6320 +PREHOOK: query: select /*+ mapjoin(k)*/ sum(hash(k.key)), sum(hash(v.val)) from T1 k join T1 v on k.key=v.val +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +#### A masked pattern was here #### +POSTHOOK: query: select /*+ mapjoin(k)*/ sum(hash(k.key)), sum(hash(v.val)) from T1 k join T1 v on k.key=v.val +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +#### A masked pattern was here #### +NULL NULL +PREHOOK: query: select /*+ mapjoin(k)*/ sum(hash(k.key)), sum(hash(v.val)) from T1 k join T1 v on k.key=v.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +#### A masked pattern was here #### +POSTHOOK: query: select /*+ mapjoin(k)*/ sum(hash(k.key)), sum(hash(v.val)) from T1 k join T1 v on k.key=v.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +#### A masked pattern was here #### +429 12643 +PREHOOK: query: select sum(hash(k.key)), sum(hash(v.val)) from T1 k join T1 v on k.key=v.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +#### A masked pattern was here #### +POSTHOOK: query: select sum(hash(k.key)), sum(hash(v.val)) from T1 k join T1 v on k.key=v.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +#### A masked pattern was here #### +429 12643 +PREHOOK: query: select count(1) from T1 a join T1 b on a.key = b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +#### A masked pattern was here #### +POSTHOOK: query: select count(1) from T1 a join T1 b on a.key = b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +#### A masked pattern was here #### +8 +PREHOOK: query: FROM T1 a LEFT OUTER JOIN T2 c ON c.key+1=a.key SELECT sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)) +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +PREHOOK: Input: default@t2 +#### A masked pattern was here #### +POSTHOOK: query: FROM T1 a LEFT OUTER JOIN T2 c ON c.key+1=a.key SELECT sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +POSTHOOK: Input: default@t2 +#### A masked pattern was here #### +317 9462 50 +PREHOOK: query: FROM T1 a RIGHT OUTER JOIN T2 c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)) +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +PREHOOK: Input: default@t2 +#### A masked pattern was here #### +POSTHOOK: query: FROM T1 a RIGHT OUTER JOIN T2 c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +POSTHOOK: Input: default@t2 +#### A masked pattern was here #### +51 1570 318 +PREHOOK: query: FROM T1 a FULL OUTER JOIN T2 c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)) +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +PREHOOK: Input: default@t2 +#### A masked pattern was here #### +POSTHOOK: query: FROM T1 a FULL OUTER JOIN T2 c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +POSTHOOK: Input: default@t2 +#### A masked pattern was here #### +317 9462 318 +PREHOOK: query: SELECT sum(hash(src1.key)), sum(hash(src1.val)), sum(hash(src2.key)) FROM T1 src1 LEFT OUTER JOIN T2 src2 ON src1.key+1 = src2.key RIGHT OUTER JOIN T2 src3 ON src2.key = src3.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +PREHOOK: Input: default@t2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(src1.key)), sum(hash(src1.val)), sum(hash(src2.key)) FROM T1 src1 LEFT OUTER JOIN T2 src2 ON src1.key+1 = src2.key RIGHT OUTER JOIN T2 src3 ON src2.key = src3.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +POSTHOOK: Input: default@t2 +#### A masked pattern was here #### +370 11003 377 +PREHOOK: query: SELECT sum(hash(src1.key)), sum(hash(src1.val)), sum(hash(src2.key)) FROM T1 src1 JOIN T2 src2 ON src1.key+1 = src2.key JOIN T2 src3 ON src2.key = src3.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +PREHOOK: Input: default@t2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(src1.key)), sum(hash(src1.val)), sum(hash(src2.key)) FROM T1 src1 JOIN T2 src2 ON src1.key+1 = src2.key JOIN T2 src3 ON src2.key = src3.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +POSTHOOK: Input: default@t2 +#### A masked pattern was here #### +370 11003 377 +PREHOOK: query: select /*+ mapjoin(v)*/ sum(hash(k.key)), sum(hash(v.val)) from T1 k left outer join T1 v on k.key+1=v.key +PREHOOK: type: QUERY +PREHOOK: Input: default@t1 +#### A masked pattern was here #### +POSTHOOK: query: select /*+ mapjoin(v)*/ sum(hash(k.key)), sum(hash(v.val)) from T1 k left outer join T1 v on k.key+1=v.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t1 +#### A masked pattern was here #### +372 6320 From 5422121422aa10cd3f5f20fe9ab0f1ef0d1dd370 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Wed, 29 Oct 2014 23:33:55 +0000 Subject: [PATCH 204/339] HIVE-8629 Streaming / ACID : hive cli session creation takes too long and times out if execution engine is tez (Roshan Naik via Alan Gates) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635341 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/hcatalog/streaming/HiveEndPoint.java | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java index aad73d00e3d4..a08f2f97e4e2 100644 --- a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java +++ b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/HiveEndPoint.java @@ -267,6 +267,9 @@ private ConnectionImpl(HiveEndPoint endPoint, UserGroupInformation ugi, if (conf==null) { conf = HiveEndPoint.createHiveConf(this.getClass(), endPoint.metaStoreUri); } + else { + overrideConfSettings(conf); + } this.secureMode = ugi==null ? false : ugi.hasKerberosCredentials(); this.msClient = getMetaStoreClient(endPoint, conf, secureMode); if (createPart && !endPoint.partitionVals.isEmpty()) { @@ -837,14 +840,35 @@ private static LockRequest createLockRequest(final HiveEndPoint hiveEndPoint, static HiveConf createHiveConf(Class clazz, String metaStoreUri) { HiveConf conf = new HiveConf(clazz); - conf.setVar(HiveConf.ConfVars.HIVE_TXN_MANAGER, - "org.apache.hadoop.hive.ql.lockmgr.DbTxnManager"); - conf.setBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY, true); - conf.setBoolVar(HiveConf.ConfVars.METASTORE_EXECUTE_SET_UGI, true); if (metaStoreUri!= null) { - conf.setVar(HiveConf.ConfVars.METASTOREURIS, metaStoreUri); + setHiveConf(conf, HiveConf.ConfVars.METASTOREURIS, metaStoreUri); } + HiveEndPoint.overrideConfSettings(conf); return conf; } + private static void overrideConfSettings(HiveConf conf) { + setHiveConf(conf, HiveConf.ConfVars.HIVE_TXN_MANAGER, + "org.apache.hadoop.hive.ql.lockmgr.DbTxnManager"); + setHiveConf(conf, HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY, true); + setHiveConf(conf, HiveConf.ConfVars.METASTORE_EXECUTE_SET_UGI, true); + // Avoids creating Tez Client sessions internally as it takes much longer currently + setHiveConf(conf, HiveConf.ConfVars.HIVE_EXECUTION_ENGINE, "mr"); + } + + private static void setHiveConf(HiveConf conf, HiveConf.ConfVars var, String value) { + if( LOG.isDebugEnabled() ) { + LOG.debug("Overriding HiveConf setting : " + var + " = " + value); + } + conf.setVar(var, value); + } + + private static void setHiveConf(HiveConf conf, HiveConf.ConfVars var, boolean value) { + if( LOG.isDebugEnabled() ) { + LOG.debug("Overriding HiveConf setting : " + var + " = " + value); + } + conf.setBoolVar(var, value); + } + + } // class HiveEndPoint From d743a1b6078f9dd7bdf4300406353e6381897aa9 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Thu, 30 Oct 2014 00:17:18 +0000 Subject: [PATCH 205/339] HIVE-8444: update pom to junit 4.11 (Jason Dere, reviewed by Brock Noland) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635350 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/security/FolderPermissionBase.java | 6 ++++++ pom.xml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java index 2bfb310289a4..8c870596bcb5 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/FolderPermissionBase.java @@ -37,6 +37,7 @@ import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.shims.HadoopShims.MiniDFSShim; import org.apache.hadoop.hive.shims.ShimLoader; +import org.junit.Before; import org.junit.Test; /** @@ -119,6 +120,11 @@ private static void setupDataTable() throws Exception { Assert.assertEquals(0,ret.getResponseCode()); } + @Before + public void setupBeforeTest() throws Exception { + driver.run("USE default"); + } + @Test public void testCreateDb() throws Exception { //see if db inherits permission from warehouse directory. diff --git a/pom.xml b/pom.xml index 8333a0dda018..e720a0c7638c 100644 --- a/pom.xml +++ b/pom.xml @@ -132,7 +132,7 @@ 1.1 3.5.2 20090211 - 4.10 + 4.11 2.22 0.9.0 0.9.0 From a3c250db0cab0cbcb45514b02b9a62e9578ededa Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Thu, 30 Oct 2014 00:23:40 +0000 Subject: [PATCH 206/339] HIVE-8557 : automatically setup ZooKeeperTokenStore to use kerberos authentication when kerberos is enabled (Thejas Nair, reviewed by Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635356 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 25 +- hcatalog/webhcat/svr/pom.xml | 36 +- .../hive/thrift/TestHadoop20SAuthBridge.java | 5 +- .../hadoop/hive/thrift/TestDBTokenStore.java | 2 +- .../hive/thrift/TestZooKeeperTokenStore.java | 45 +- .../hadoop/hive/metastore/HiveMetaStore.java | 3 +- pom.xml | 2 +- .../hive/ql/util/ZooKeeperHiveHelper.java | 60 +-- .../hive/service/auth/HiveAuthFactory.java | 3 +- .../hive/service/server/HiveServer2.java | 21 +- .../hadoop/hive/shims/Hadoop20Shims.java | 9 +- shims/common-secure/pom.xml | 5 + .../hadoop/hive/shims/HadoopShimsSecure.java | 76 +++- .../hadoop/hive/thrift/DBTokenStore.java | 4 +- .../hive/thrift/DelegationTokenStore.java | 7 +- .../thrift/HadoopThriftAuthBridge20S.java | 10 +- .../hadoop/hive/thrift/MemoryTokenStore.java | 4 +- ...okenStoreDelegationTokenSecretManager.java | 16 +- .../hive/thrift/ZooKeeperTokenStore.java | 409 +++++++++--------- .../apache/hadoop/hive/shims/HadoopShims.java | 10 +- .../hive/thrift/HadoopThriftAuthBridge.java | 5 +- 21 files changed, 395 insertions(+), 362 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index d6db1fc76a0f..b0ef70a79edc 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -414,13 +414,19 @@ public static enum ConfVars { "The delegation token store implementation. Set to org.apache.hadoop.hive.thrift.ZooKeeperTokenStore for load-balanced cluster."), METASTORE_CLUSTER_DELEGATION_TOKEN_STORE_ZK_CONNECTSTR( "hive.cluster.delegation.token.store.zookeeper.connectString", "", - "The ZooKeeper token store connect string."), + "The ZooKeeper token store connect string. You can re-use the configuration value\n" + + "set in hive.zookeeper.quorum, by leaving this parameter unset."), METASTORE_CLUSTER_DELEGATION_TOKEN_STORE_ZK_ZNODE( - "hive.cluster.delegation.token.store.zookeeper.znode", "/hive/cluster/delegation", - "The root path for token store data."), + "hive.cluster.delegation.token.store.zookeeper.znode", "/hivedelegation", + "The root path for token store data. Note that this is used by both HiveServer2 and\n" + + "MetaStore to store delegation Token. One directory gets created for each of them.\n" + + "The final directory names would have the servername appended to it (HIVESERVER2,\n" + + "METASTORE)."), METASTORE_CLUSTER_DELEGATION_TOKEN_STORE_ZK_ACL( "hive.cluster.delegation.token.store.zookeeper.acl", "", - "ACL for token store entries. List comma separated all server principals for the cluster."), + "ACL for token store entries. Comma separated list of ACL entries. For example:\n" + + "sasl:hive/host1@MY.DOMAIN:cdrwa,sasl:hive/host2@MY.DOMAIN:cdrwa\n" + + "Defaults to all permissions for the hiveserver2/metastore process user."), METASTORE_CACHE_PINOBJTYPES("hive.metastore.cache.pinobjtypes", "Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order", "List of comma separated metastore object types that should be pinned in the cache"), METASTORE_CONNECTION_POOLING_TYPE("datanucleus.connectionPoolingType", "BONECP", @@ -1274,10 +1280,13 @@ public static enum ConfVars { // Zookeeper related configs HIVE_ZOOKEEPER_QUORUM("hive.zookeeper.quorum", "", - "List of ZooKeeper servers to talk to. This is needed for: " + - "1. Read/write locks - when hive.lock.manager is set to " + - "org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager, " + - "2. When HiveServer2 supports service discovery via Zookeeper."), + "List of ZooKeeper servers to talk to. This is needed for: \n" + + "1. Read/write locks - when hive.lock.manager is set to \n" + + "org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager, \n" + + "2. When HiveServer2 supports service discovery via Zookeeper.\n" + + "3. For delegation token storage if zookeeper store is used, if\n" + + "hive.cluster.delegation.token.store.zookeeper.connectString is not set"), + HIVE_ZOOKEEPER_CLIENT_PORT("hive.zookeeper.client.port", "2181", "The port of ZooKeeper servers to talk to.\n" + "If the list of Zookeeper servers specified in hive.zookeeper.quorum\n" + diff --git a/hcatalog/webhcat/svr/pom.xml b/hcatalog/webhcat/svr/pom.xml index dc60414217f9..3cfc8d512423 100644 --- a/hcatalog/webhcat/svr/pom.xml +++ b/hcatalog/webhcat/svr/pom.xml @@ -67,14 +67,11 @@ commons-exec ${commons-exec.version} - - - + org.apache.curator curator-framework ${curator.version} - org.apache.zookeeper zookeeper @@ -198,37 +195,6 @@ - - org.apache.maven.plugins - maven-shade-plugin - - - include-curator - - package - - shade - - - true - - - org.apache.curator - - - - - org.apache.curator - webhcat.org.apache.curator - - - - - - diff --git a/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java b/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java index b81942a5ee31..b2bdafaefc97 100644 --- a/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java +++ b/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java @@ -41,6 +41,7 @@ import org.apache.hadoop.hive.metastore.MetaStoreUtils; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.MetaException; +import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server.ServerMode; import org.apache.hadoop.io.Text; import org.apache.hadoop.security.SaslRpcServer; import org.apache.hadoop.security.SaslRpcServer.AuthMethod; @@ -98,9 +99,9 @@ protected DelegationTokenStore getTokenStore(Configuration conf) throws IOExcept } @Override - public void startDelegationTokenSecretManager(Configuration conf, Object hms) + public void startDelegationTokenSecretManager(Configuration conf, Object hms, ServerMode sm) throws IOException{ - super.startDelegationTokenSecretManager(conf, hms); + super.startDelegationTokenSecretManager(conf, hms, sm); isMetastoreTokenManagerInited = true; } diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestDBTokenStore.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestDBTokenStore.java index 8860d302e60b..0b61a62bc36e 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestDBTokenStore.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestDBTokenStore.java @@ -37,7 +37,7 @@ public class TestDBTokenStore extends TestCase{ public void testDBTokenStore() throws TokenStoreException, MetaException, IOException { DelegationTokenStore ts = new DBTokenStore(); - ts.setStore(new HMSHandler("Test handler").getMS()); + ts.init(new HMSHandler("Test handler").getMS(), null); assertEquals(0, ts.getMasterKeys().length); assertEquals(false,ts.removeMasterKey(-1)); try{ diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestZooKeeperTokenStore.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestZooKeeperTokenStore.java index 83a80b46bd57..26d4d974ac8c 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestZooKeeperTokenStore.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestZooKeeperTokenStore.java @@ -24,25 +24,28 @@ import junit.framework.TestCase; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster; +import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server.ServerMode; import org.apache.hadoop.io.Text; import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecretManager.DelegationTokenInformation; import org.apache.hadoop.security.token.delegation.HiveDelegationTokenSupport; import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.ACL; -import org.apache.zookeeper.data.Stat; import org.junit.Assert; public class TestZooKeeperTokenStore extends TestCase { private MiniZooKeeperCluster zkCluster = null; - private ZooKeeper zkClient = null; + private CuratorFramework zkClient = null; private int zkPort = -1; private ZooKeeperTokenStore ts; // connect timeout large enough for slower test environments private final int connectTimeoutMillis = 30000; + private final int sessionTimeoutMillis = 3000; @Override protected void setUp() throws Exception { @@ -53,8 +56,10 @@ protected void setUp() throws Exception { this.zkCluster = new MiniZooKeeperCluster(); this.zkPort = this.zkCluster.startup(zkDataDir); - this.zkClient = ZooKeeperTokenStore.createConnectedClient("localhost:" + zkPort, 3000, - connectTimeoutMillis); + this.zkClient = CuratorFrameworkFactory.builder().connectString("localhost:" + zkPort) + .sessionTimeoutMs(sessionTimeoutMillis).connectionTimeoutMs(connectTimeoutMillis) + .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); + this.zkClient.start(); } @Override @@ -84,14 +89,16 @@ private Configuration createConf(String zkPath) { public void testTokenStorage() throws Exception { String ZK_PATH = "/zktokenstore-testTokenStorage"; ts = new ZooKeeperTokenStore(); - ts.setConf(createConf(ZK_PATH)); + Configuration conf = createConf(ZK_PATH); + conf.set(HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ACL, "world:anyone:cdrwa"); + ts.setConf(conf); + ts.init(null, ServerMode.METASTORE); + + String metastore_zk_path = ZK_PATH + ServerMode.METASTORE; int keySeq = ts.addMasterKey("key1Data"); - byte[] keyBytes = zkClient.getData( - ZK_PATH - + "/keys/" - + String.format(ZooKeeperTokenStore.ZK_SEQ_FORMAT, - keySeq), false, null); + byte[] keyBytes = zkClient.getData().forPath( + metastore_zk_path + "/keys/" + String.format(ZooKeeperTokenStore.ZK_SEQ_FORMAT, keySeq)); assertNotNull(keyBytes); assertEquals(new String(keyBytes), "key1Data"); @@ -116,8 +123,7 @@ public void testTokenStorage() throws Exception { HiveDelegationTokenSupport .encodeDelegationTokenInformation(tokenInfoRead)); - List allIds = ts - .getAllDelegationTokenIdentifiers(); + List allIds = ts.getAllDelegationTokenIdentifiers(); assertEquals(1, allIds.size()); Assert.assertEquals(TokenStoreDelegationTokenSecretManager .encodeWritable(tokenId), @@ -138,10 +144,10 @@ public void testAclNoAuth() throws Exception { ts = new ZooKeeperTokenStore(); try { ts.setConf(conf); + ts.init(null, ServerMode.METASTORE); fail("expected ACL exception"); } catch (DelegationTokenStore.TokenStoreException e) { - assertEquals(e.getCause().getClass(), - KeeperException.NoAuthException.class); + assertEquals(KeeperException.NoAuthException.class, e.getCause().getClass()); } } @@ -159,10 +165,10 @@ public void testAclInvalid() throws Exception { ts = new ZooKeeperTokenStore(); try { ts.setConf(conf); + ts.init(null, ServerMode.METASTORE); fail("expected ACL exception"); } catch (DelegationTokenStore.TokenStoreException e) { - assertEquals(e.getCause().getClass(), - KeeperException.InvalidACLException.class); + assertEquals(KeeperException.InvalidACLException.class, e.getCause().getClass()); } } @@ -171,10 +177,11 @@ public void testAclPositive() throws Exception { Configuration conf = createConf(ZK_PATH); conf.set( HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ACL, - "world:anyone:cdrwa,ip:127.0.0.1:cdrwa"); + "ip:127.0.0.1:cdrwa,world:anyone:cdrwa"); ts = new ZooKeeperTokenStore(); ts.setConf(conf); - List acl = zkClient.getACL(ZK_PATH, new Stat()); + ts.init(null, ServerMode.METASTORE); + List acl = zkClient.getACL().forPath(ZK_PATH + ServerMode.METASTORE); assertEquals(2, acl.size()); } diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index 69270cdf0189..d1ef3056611d 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -186,6 +186,7 @@ import org.apache.hadoop.hive.serde2.SerDeException; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge; +import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server.ServerMode; import org.apache.hadoop.hive.thrift.TUGIContainingTransport; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.ReflectionUtils; @@ -5771,7 +5772,7 @@ public static void startMetaStore(int port, HadoopThriftAuthBridge bridge, conf.getVar(HiveConf.ConfVars.METASTORE_KERBEROS_KEYTAB_FILE), conf.getVar(HiveConf.ConfVars.METASTORE_KERBEROS_PRINCIPAL)); // start delegation token manager - saslServer.startDelegationTokenSecretManager(conf, baseHandler.getMS()); + saslServer.startDelegationTokenSecretManager(conf, baseHandler.getMS(), ServerMode.METASTORE); transFactory = saslServer.createTransportFactory( MetaStoreUtils.getMetaStoreSaslProperties(conf)); processor = saslServer.wrapProcessor( diff --git a/pom.xml b/pom.xml index e720a0c7638c..0a9b4e4944a0 100644 --- a/pom.xml +++ b/pom.xml @@ -161,7 +161,7 @@ 3.4.5 1.1 2.4.0 - 2.5.0 + 2.6.0 diff --git a/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java b/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java index 11dd962eee59..29d05314ccc1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java @@ -18,18 +18,12 @@ package org.apache.hadoop.hive.ql.util; -import java.util.HashMap; import java.util.List; -import java.util.Map; - -import javax.security.auth.login.AppConfigurationEntry; -import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; -import org.apache.hadoop.security.authentication.util.KerberosUtil; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.Watcher; @@ -39,7 +33,7 @@ public class ZooKeeperHiveHelper { public static final Log LOG = LogFactory.getLog(ZooKeeperHiveHelper.class.getName()); public static final String ZOOKEEPER_PATH_SEPARATOR = "/"; - public static final String SASL_LOGIN_CONTEXT_NAME = "HiveZooKeeperClient"; + /** * Get the ensemble server addresses from the configuration. The format is: host1:port, * host2:port.. @@ -97,59 +91,9 @@ public static String createPathRecursively(ZooKeeper zooKeeperClient, String pat * A no-op watcher class */ public static class DummyWatcher implements Watcher { + @Override public void process(org.apache.zookeeper.WatchedEvent event) { } } - /** - * Dynamically sets up the JAAS configuration - * @param principal - * @param keyTabFile - */ - public static void setUpJaasConfiguration(String principal, String keyTabFile) { - JaasConfiguration jaasConf = - new JaasConfiguration(ZooKeeperHiveHelper.SASL_LOGIN_CONTEXT_NAME, principal, keyTabFile); - // Install the Configuration in the runtime. - javax.security.auth.login.Configuration.setConfiguration(jaasConf); - } - - /** - * A JAAS configuration for ZooKeeper clients intended to use for SASL Kerberos. - */ - private static class JaasConfiguration extends javax.security.auth.login.Configuration { - // Current installed Configuration - private javax.security.auth.login.Configuration baseConfig = - javax.security.auth.login.Configuration.getConfiguration(); - private final String loginContextName; - private final String principal; - private final String keyTabFile; - - public JaasConfiguration(String hiveLoginContextName, String principal, String keyTabFile) { - this.loginContextName = hiveLoginContextName; - this.principal = principal; - this.keyTabFile = keyTabFile; - } - - @Override - public AppConfigurationEntry[] getAppConfigurationEntry(String appName) { - if (loginContextName.equals(appName)) { - Map krbOptions = new HashMap(); - krbOptions.put("doNotPrompt", "true"); - krbOptions.put("storeKey", "true"); - krbOptions.put("useKeyTab", "true"); - krbOptions.put("principal", principal); - krbOptions.put("keyTab", keyTabFile); - krbOptions.put("refreshKrb5Config", "true"); - AppConfigurationEntry hiveZooKeeperClientEntry = - new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(), - LoginModuleControlFlag.REQUIRED, krbOptions); - return new AppConfigurationEntry[] { hiveZooKeeperClientEntry }; - } - // Try the base config - if (baseConfig != null) { - return baseConfig.getAppConfigurationEntry(appName); - } - return null; - } - } } diff --git a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index ab34d2d4759c..72bc724f6c16 100644 --- a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -32,6 +32,7 @@ import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge; +import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server.ServerMode; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hive.service.cli.HiveSQLException; import org.apache.hive.service.cli.thrift.ThriftCLIService; @@ -98,7 +99,7 @@ public HiveAuthFactory(HiveConf conf) throws TTransportException { conf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL)); // start delegation token manager try { - saslServer.startDelegationTokenSecretManager(conf, null); + saslServer.startDelegationTokenSecretManager(conf, null, ServerMode.HIVESERVER2); } catch (IOException e) { throw new TTransportException("Failed to start token manager", e); } diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java b/service/src/java/org/apache/hive/service/server/HiveServer2.java index 0aab3f942eb9..3c37f24c65b4 100644 --- a/service/src/java/org/apache/hive/service/server/HiveServer2.java +++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java @@ -53,7 +53,6 @@ import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooDefs.Perms; import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.client.ZooKeeperSaslClient; import org.apache.zookeeper.data.ACL; /** @@ -178,23 +177,19 @@ private void addServerInstanceToZooKeeper(HiveConf hiveConf) throws Exception { */ private void setUpAuthAndAcls(HiveConf hiveConf, List nodeAcls) throws Exception { if (ShimLoader.getHadoopShims().isSecurityEnabled()) { - String principal = - ShimLoader.getHadoopShims().getResolvedPrincipal( - hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL)); - String keyTabFile = hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_KEYTAB); + String principal = hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL); if (principal.isEmpty()) { throw new IOException( "HiveServer2 Kerberos principal is empty"); } + String keyTabFile = hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_KEYTAB); if (keyTabFile.isEmpty()) { throw new IOException( "HiveServer2 Kerberos keytab is empty"); } - // ZooKeeper property name to pick the correct JAAS conf section - System.setProperty(ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY, - ZooKeeperHiveHelper.SASL_LOGIN_CONTEXT_NAME); + // Install the JAAS Configuration for the runtime - ZooKeeperHiveHelper.setUpJaasConfiguration(principal, keyTabFile); + ShimLoader.getHadoopShims().setZookeeperClientKerberosJaasConfig(principal, keyTabFile); // Read all to the world nodeAcls.addAll(Ids.READ_ACL_UNSAFE); // Create/Delete/Write/Admin to the authenticated user @@ -212,6 +207,7 @@ private void setUpAuthAndAcls(HiveConf hiveConf, List nodeAcls) throws Exce * sessions at the time of receiving a 'NodeDeleted' notification from ZooKeeper. */ private class DeRegisterWatcher implements Watcher { + @Override public void process(WatchedEvent event) { if (event.getType().equals(Watcher.Event.EventType.NodeDeleted)) { HiveServer2.this.setRegisteredWithZooKeeper(false); @@ -389,7 +385,7 @@ static class ServerOptionsProcessor { private final Options options = new Options(); private org.apache.commons.cli.CommandLine commandLine; private final String serverName; - private StringBuilder debugMessage = new StringBuilder(); + private final StringBuilder debugMessage = new StringBuilder(); @SuppressWarnings("static-access") ServerOptionsProcessor(String serverName) { @@ -453,7 +449,7 @@ StringBuilder getDebugMessage() { * The response sent back from {@link ServerOptionsProcessor#parse(String[])} */ static class ServerOptionsProcessorResponse { - private ServerOptionsExecutor serverOptionsExecutor; + private final ServerOptionsExecutor serverOptionsExecutor; ServerOptionsProcessorResponse(ServerOptionsExecutor serverOptionsExecutor) { this.serverOptionsExecutor = serverOptionsExecutor; @@ -483,6 +479,7 @@ static class HelpOptionExecutor implements ServerOptionsExecutor { this.serverName = serverName; } + @Override public void execute() { new HelpFormatter().printHelp(serverName, options); System.exit(0); @@ -494,6 +491,7 @@ public void execute() { * This is the default executor, when no option is specified. */ static class StartOptionExecutor implements ServerOptionsExecutor { + @Override public void execute() { try { startHiveServer2(); @@ -515,6 +513,7 @@ static class DeregisterOptionExecutor implements ServerOptionsExecutor { this.versionNumber = versionNumber; } + @Override public void execute() { try { deleteServerInstancesFromZooKeeper(versionNumber); diff --git a/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java b/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java index 9f062ca85edf..569a939bde2a 100644 --- a/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java +++ b/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java @@ -59,7 +59,6 @@ import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil; -import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.mapred.ClusterStatus; import org.apache.hadoop.mapred.FileInputFormat; @@ -705,7 +704,7 @@ public void setFullFileStatus(Configuration conf, HdfsFileStatus sourceStatus, } public class Hadoop20FileStatus implements HdfsFileStatus { - private FileStatus fileStatus; + private final FileStatus fileStatus; public Hadoop20FileStatus(FileStatus fileStatus) { this.fileStatus = fileStatus; } @@ -713,6 +712,7 @@ public Hadoop20FileStatus(FileStatus fileStatus) { public FileStatus getFileStatus() { return fileStatus; } + @Override public void debugLog() { if (fileStatus != null) { LOG.debug(fileStatus.toString()); @@ -941,4 +941,9 @@ public KerberosNameShim getKerberosNameShim(String name) throws IOException { // Not supported return null; } + + @Override + public void setZookeeperClientKerberosJaasConfig(String principal, String keyTabFile) { + // Not supported + } } diff --git a/shims/common-secure/pom.xml b/shims/common-secure/pom.xml index 68ac80bd6056..1bc270ec1baa 100644 --- a/shims/common-secure/pom.xml +++ b/shims/common-secure/pom.xml @@ -73,6 +73,11 @@ libthrift ${libthrift.version} + + org.apache.curator + curator-framework + ${curator.version} + org.apache.zookeeper zookeeper diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java index 606f973eb51a..53341e07a45a 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java @@ -29,11 +29,14 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; -import javax.security.auth.login.LoginException; +import javax.security.auth.login.AppConfigurationEntry; +import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.logging.Log; @@ -66,6 +69,7 @@ import org.apache.hadoop.security.Credentials; import org.apache.hadoop.security.SecurityUtil; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.security.authentication.util.KerberosUtil; import org.apache.hadoop.security.authorize.ProxyUsers; import org.apache.hadoop.security.token.Token; import org.apache.hadoop.security.token.TokenIdentifier; @@ -73,6 +77,7 @@ import org.apache.hadoop.tools.HadoopArchives; import org.apache.hadoop.util.Progressable; import org.apache.hadoop.util.ToolRunner; +import org.apache.zookeeper.client.ZooKeeperSaslClient; import com.google.common.primitives.Longs; @@ -88,6 +93,7 @@ public String unquoteHtmlChars(String item) { return HtmlQuoting.unquoteHtmlChars(item); } + @Override public HadoopShims.CombineFileInputFormatShim getCombineFileInputFormat() { return new CombineFileInputFormatShim() { @Override @@ -171,6 +177,7 @@ public static class CombineFileRecordReader implements RecordReader protected boolean isShrinked; protected long shrinkedLength; + @Override public boolean next(K key, V value) throws IOException { while ((curReader == null) @@ -183,11 +190,13 @@ public boolean next(K key, V value) throws IOException { return true; } + @Override public K createKey() { K newKey = curReader.createKey(); return (K)(new CombineHiveKey(newKey)); } + @Override public V createValue() { return curReader.createValue(); } @@ -195,10 +204,12 @@ public V createValue() { /** * Return the amount of data processed. */ + @Override public long getPos() throws IOException { return progress; } + @Override public void close() throws IOException { if (curReader != null) { curReader.close(); @@ -209,6 +220,7 @@ public void close() throws IOException { /** * Return progress based on the amount of data processed so far. */ + @Override public float getProgress() throws IOException { return Math.min(1.0f, progress / (float) (split.getLength())); } @@ -309,6 +321,7 @@ public abstract static class CombineFileInputFormatShim extends CombineFileInputFormat implements HadoopShims.CombineFileInputFormatShim { + @Override public Path[] getInputPathsShim(JobConf conf) { try { return FileInputFormat.getInputPaths(conf); @@ -339,7 +352,7 @@ public InputSplitShim[] getSplits(JobConf job, int numSplits) throws IOException super.setMaxSplitSize(minSize); } - InputSplit[] splits = (InputSplit[]) super.getSplits(job, numSplits); + InputSplit[] splits = super.getSplits(job, numSplits); ArrayList inputSplitShims = new ArrayList(); for (int pos = 0; pos < splits.length; pos++) { @@ -359,10 +372,12 @@ public InputSplitShim[] getSplits(JobConf job, int numSplits) throws IOException return inputSplitShims.toArray(new InputSplitShim[inputSplitShims.size()]); } + @Override public InputSplitShim getInputSplitShim() throws IOException { return new InputSplitShim(); } + @Override public RecordReader getRecordReader(JobConf job, HadoopShims.InputSplitShim split, Reporter reporter, Class> rrClass) @@ -373,6 +388,7 @@ public RecordReader getRecordReader(JobConf job, HadoopShims.InputSplitShim spli } + @Override public String getInputFormatClassName() { return "org.apache.hadoop.hive.ql.io.CombineHiveInputFormat"; } @@ -401,6 +417,7 @@ public int createHadoopArchive(Configuration conf, Path sourceDir, Path destDir, * the archive as compared to the full path in case of earlier versions. * See this api in Hadoop20Shims for comparison. */ + @Override public URI getHarUri(URI original, URI base, URI originalBase) throws URISyntaxException { URI relative = originalBase.relativize(original); @@ -431,6 +448,7 @@ public void commitTask(TaskAttemptContext taskContext) { } public void abortTask(TaskAttemptContext taskContext) { } } + @Override public void prepareJobOutput(JobConf conf) { conf.setOutputCommitter(NullOutputCommitter.class); @@ -686,4 +704,58 @@ public void checkFileAccess(FileSystem fs, FileStatus stat, FsAction action) throws IOException, AccessControlException, Exception { DefaultFileAccess.checkFileAccess(fs, stat, action); } + + @Override + public void setZookeeperClientKerberosJaasConfig(String principal, String keyTabFile) throws IOException { + // ZooKeeper property name to pick the correct JAAS conf section + final String SASL_LOGIN_CONTEXT_NAME = "HiveZooKeeperClient"; + System.setProperty(ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY, SASL_LOGIN_CONTEXT_NAME); + + principal = getResolvedPrincipal(principal); + JaasConfiguration jaasConf = new JaasConfiguration(SASL_LOGIN_CONTEXT_NAME, principal, keyTabFile); + + // Install the Configuration in the runtime. + javax.security.auth.login.Configuration.setConfiguration(jaasConf); + } + + /** + * A JAAS configuration for ZooKeeper clients intended to use for SASL + * Kerberos. + */ + private static class JaasConfiguration extends javax.security.auth.login.Configuration { + // Current installed Configuration + private final javax.security.auth.login.Configuration baseConfig = javax.security.auth.login.Configuration + .getConfiguration(); + private final String loginContextName; + private final String principal; + private final String keyTabFile; + + public JaasConfiguration(String hiveLoginContextName, String principal, String keyTabFile) { + this.loginContextName = hiveLoginContextName; + this.principal = principal; + this.keyTabFile = keyTabFile; + } + + @Override + public AppConfigurationEntry[] getAppConfigurationEntry(String appName) { + if (loginContextName.equals(appName)) { + Map krbOptions = new HashMap(); + krbOptions.put("doNotPrompt", "true"); + krbOptions.put("storeKey", "true"); + krbOptions.put("useKeyTab", "true"); + krbOptions.put("principal", principal); + krbOptions.put("keyTab", keyTabFile); + krbOptions.put("refreshKrb5Config", "true"); + AppConfigurationEntry hiveZooKeeperClientEntry = new AppConfigurationEntry( + KerberosUtil.getKrb5LoginModuleName(), LoginModuleControlFlag.REQUIRED, krbOptions); + return new AppConfigurationEntry[] { hiveZooKeeperClientEntry }; + } + // Try the base config + if (baseConfig != null) { + return baseConfig.getAppConfigurationEntry(appName); + } + return null; + } + } + } diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/DBTokenStore.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/DBTokenStore.java index 0bb276323ec1..d86c5cb4a6f9 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/DBTokenStore.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/DBTokenStore.java @@ -25,6 +25,7 @@ import org.apache.commons.codec.binary.Base64; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server.ServerMode; import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecretManager.DelegationTokenInformation; import org.apache.hadoop.security.token.delegation.HiveDelegationTokenSupport; @@ -111,7 +112,7 @@ public List getAllDelegationTokenIdentifiers() throws private Object rawStore; @Override - public void setStore(Object rawStore) throws TokenStoreException { + public void init(Object rawStore, ServerMode smode) throws TokenStoreException { this.rawStore = rawStore; } @@ -148,5 +149,4 @@ public void close() throws IOException { // No-op. } - } diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/DelegationTokenStore.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/DelegationTokenStore.java index f3c2e48d789e..867b4ed98859 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/DelegationTokenStore.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/DelegationTokenStore.java @@ -21,6 +21,7 @@ import java.util.List; import org.apache.hadoop.conf.Configurable; +import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server.ServerMode; import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecretManager.DelegationTokenInformation; /** @@ -108,6 +109,10 @@ DelegationTokenInformation getToken(DelegationTokenIdentifier tokenIdentifier) */ List getAllDelegationTokenIdentifiers() throws TokenStoreException; - void setStore(Object hmsHandler) throws TokenStoreException; + /** + * @param hmsHandler ObjectStore used by DBTokenStore + * @param smode Indicate whether this is a metastore or hiveserver2 token store + */ + void init(Object hmsHandler, ServerMode smode); } diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge20S.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge20S.java index 56735d812ab1..624ac6b31400 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge20S.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge20S.java @@ -308,6 +308,10 @@ public static class Server extends HadoopThriftAuthBridge.Server { "hive.cluster.delegation.token.store.class"; public static final String DELEGATION_TOKEN_STORE_ZK_CONNECT_STR = "hive.cluster.delegation.token.store.zookeeper.connectString"; + // alternate connect string specification configuration + public static final String DELEGATION_TOKEN_STORE_ZK_CONNECT_STR_ALTERNATE = + "hive.zookeeper.quorum"; + public static final String DELEGATION_TOKEN_STORE_ZK_CONNECT_TIMEOUTMILLIS = "hive.cluster.delegation.token.store.zookeeper.connectTimeoutMillis"; public static final String DELEGATION_TOKEN_STORE_ZK_ZNODE = @@ -315,7 +319,7 @@ public static class Server extends HadoopThriftAuthBridge.Server { public static final String DELEGATION_TOKEN_STORE_ZK_ACL = "hive.cluster.delegation.token.store.zookeeper.acl"; public static final String DELEGATION_TOKEN_STORE_ZK_ZNODE_DEFAULT = - "/hive/cluster/delegation"; + "/hivedelegation"; public Server() throws TTransportException { try { @@ -417,7 +421,7 @@ protected DelegationTokenStore getTokenStore(Configuration conf) } @Override - public void startDelegationTokenSecretManager(Configuration conf, Object rawStore) + public void startDelegationTokenSecretManager(Configuration conf, Object rawStore, ServerMode smode) throws IOException{ long secretKeyInterval = conf.getLong(DELEGATION_KEY_UPDATE_INTERVAL_KEY, @@ -430,7 +434,7 @@ public void startDelegationTokenSecretManager(Configuration conf, Object rawStor DELEGATION_TOKEN_RENEW_INTERVAL_DEFAULT); DelegationTokenStore dts = getTokenStore(conf); - dts.setStore(rawStore); + dts.init(rawStore, smode); secretManager = new TokenStoreDelegationTokenSecretManager(secretKeyInterval, tokenMaxLifetime, tokenRenewInterval, diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/MemoryTokenStore.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/MemoryTokenStore.java index 9908aa408986..cf60b7c4a183 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/MemoryTokenStore.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/MemoryTokenStore.java @@ -26,6 +26,7 @@ import java.util.concurrent.atomic.AtomicInteger; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server.ServerMode; import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecretManager.DelegationTokenInformation; /** @@ -108,8 +109,7 @@ public void close() throws IOException { } @Override - public void setStore(Object hmsHandler) throws TokenStoreException { + public void init(Object hmsHandler, ServerMode smode) throws TokenStoreException { // no-op } - } diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/TokenStoreDelegationTokenSecretManager.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/TokenStoreDelegationTokenSecretManager.java index 4ccf89510ffc..8146d51ceeae 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/TokenStoreDelegationTokenSecretManager.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/TokenStoreDelegationTokenSecretManager.java @@ -265,6 +265,7 @@ protected void removeExpiredTokens() { /** * Extension of rollMasterKey to remove expired keys from store. + * * @throws IOException */ protected void rollMasterKeyExt() throws IOException { @@ -273,18 +274,21 @@ protected void rollMasterKeyExt() throws IOException { HiveDelegationTokenSupport.rollMasterKey(TokenStoreDelegationTokenSecretManager.this); List keysAfterRoll = Arrays.asList(getAllKeys()); for (DelegationKey key : keysAfterRoll) { - keys.remove(key.getKeyId()); - if (key.getKeyId() == currentKeyId) { - tokenStore.updateMasterKey(currentKeyId, encodeWritable(key)); - } + keys.remove(key.getKeyId()); + if (key.getKeyId() == currentKeyId) { + tokenStore.updateMasterKey(currentKeyId, encodeWritable(key)); + } } for (DelegationKey expiredKey : keys.values()) { LOGGER.info("Removing expired key id={}", expiredKey.getKeyId()); - tokenStore.removeMasterKey(expiredKey.getKeyId()); + try { + tokenStore.removeMasterKey(expiredKey.getKeyId()); + } catch (Exception e) { + LOGGER.error("Error removing expired key id={}", expiredKey.getKeyId(), e); + } } } - /** * Cloned from {@link AbstractDelegationTokenSecretManager} to deal with private access * restriction (there would not be an need to clone the remove thread if the remove logic was diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/ZooKeeperTokenStore.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/ZooKeeperTokenStore.java index 8683496cc038..16a52e44e731 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/ZooKeeperTokenStore.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/ZooKeeperTokenStore.java @@ -20,24 +20,28 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; import org.apache.commons.lang.StringUtils; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.framework.api.ACLProvider; +import org.apache.curator.framework.imps.CuratorFrameworkState; +import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.shims.ShimLoader; +import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server.ServerMode; +import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecretManager.DelegationTokenInformation; import org.apache.hadoop.security.token.delegation.HiveDelegationTokenSupport; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.WatchedEvent; -import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs; import org.apache.zookeeper.ZooDefs.Ids; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.ZooKeeper.States; +import org.apache.zookeeper.ZooDefs.Perms; import org.apache.zookeeper.data.ACL; import org.apache.zookeeper.data.Id; import org.slf4j.Logger; @@ -56,26 +60,35 @@ public class ZooKeeperTokenStore implements DelegationTokenStore { private static final String NODE_TOKENS = "/tokens"; private String rootNode = ""; - private volatile ZooKeeper zkSession; + private volatile CuratorFramework zkSession; private String zkConnectString; private final int zkSessionTimeout = 3000; - private long connectTimeoutMillis = -1; - private List newNodeAcl = Ids.OPEN_ACL_UNSAFE; - - private class ZooKeeperWatcher implements Watcher { - public void process(org.apache.zookeeper.WatchedEvent event) { - LOGGER.info(event.toString()); - if (event.getState() == Watcher.Event.KeeperState.Expired) { - LOGGER.warn("ZooKeeper session expired, discarding connection"); - try { - zkSession.close(); - } catch (Throwable e) { - LOGGER.warn("Failed to close connection on expired session", e); - } - } + private int connectTimeoutMillis = -1; + private List newNodeAcl = Arrays.asList(new ACL(Perms.ALL, Ids.AUTH_IDS)); + + /** + * ACLProvider permissions will be used in case parent dirs need to be created + */ + private final ACLProvider aclDefaultProvider = new ACLProvider() { + + @Override + public List getDefaultAcl() { + return newNodeAcl; } - } + @Override + public List getAclForPath(String path) { + return getDefaultAcl(); + } + }; + + + private ServerMode serverMode; + + private final String WHEN_ZK_DSTORE_MSG = "when zookeeper based delegation token storage is enabled" + + "(hive.cluster.delegation.token.store.class=" + ZooKeeperTokenStore.class.getName() + ")"; + + private Configuration conf; /** * Default constructor for dynamic instantiation w/ Configurable @@ -84,93 +97,74 @@ public void process(org.apache.zookeeper.WatchedEvent event) { protected ZooKeeperTokenStore() { } - public ZooKeeperTokenStore(String hostPort) { - this.zkConnectString = hostPort; - init(); - } - - private ZooKeeper getSession() { - if (zkSession == null || zkSession.getState() == States.CLOSED) { - synchronized (this) { - if (zkSession == null || zkSession.getState() == States.CLOSED) { - try { - zkSession = createConnectedClient(this.zkConnectString, this.zkSessionTimeout, - this.connectTimeoutMillis, new ZooKeeperWatcher()); - } catch (IOException ex) { - throw new TokenStoreException("Token store error.", ex); - } - } + private CuratorFramework getSession() { + if (zkSession == null || zkSession.getState() == CuratorFrameworkState.STOPPED) { + synchronized (this) { + if (zkSession == null || zkSession.getState() == CuratorFrameworkState.STOPPED) { + zkSession = CuratorFrameworkFactory.builder().connectString(zkConnectString) + .sessionTimeoutMs(zkSessionTimeout).connectionTimeoutMs(connectTimeoutMillis) + .aclProvider(aclDefaultProvider) + .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); + zkSession.start(); } + } } return zkSession; } - /** - * Create a ZooKeeper session that is in connected state. - * - * @param connectString ZooKeeper connect String - * @param sessionTimeout ZooKeeper session timeout - * @param connectTimeout milliseconds to wait for connection, 0 or negative value means no wait - * @param watchers - * @return - * @throws InterruptedException - * @throws IOException - */ - public static ZooKeeper createConnectedClient(String connectString, - int sessionTimeout, long connectTimeout, final Watcher... watchers) - throws IOException { - final CountDownLatch connected = new CountDownLatch(1); - Watcher connectWatcher = new Watcher() { - @Override - public void process(WatchedEvent event) { - switch (event.getState()) { - case SyncConnected: - connected.countDown(); - break; - } - for (Watcher w : watchers) { - w.process(event); - } - } - }; - ZooKeeper zk = new ZooKeeper(connectString, sessionTimeout, connectWatcher); - if (connectTimeout > 0) { - try { - if (!connected.await(connectTimeout, TimeUnit.MILLISECONDS)) { - zk.close(); - throw new IOException("Timeout waiting for connection after " - + connectTimeout + "ms"); - } - } catch (InterruptedException e) { - throw new IOException("Error waiting for connection.", e); - } + private void setupJAASConfig(Configuration conf) throws IOException { + if (!UserGroupInformation.getLoginUser().isFromKeytab()) { + // The process has not logged in using keytab + // this should be a test mode, can't use keytab to authenticate + // with zookeeper. + LOGGER.warn("Login is not from keytab"); + return; } - return zk; + + String principal; + String keytab; + switch (serverMode) { + case METASTORE: + principal = getNonEmptyConfVar(conf, "hive.metastore.kerberos.principal"); + keytab = getNonEmptyConfVar(conf, "hive.metastore.kerberos.keytab.file"); + break; + case HIVESERVER2: + principal = getNonEmptyConfVar(conf, "hive.server2.authentication.kerberos.principal"); + keytab = getNonEmptyConfVar(conf, "hive.server2.authentication.kerberos.keytab"); + break; + default: + throw new AssertionError("Unexpected server mode " + serverMode); + } + ShimLoader.getHadoopShims().setZookeeperClientKerberosJaasConfig(principal, keytab); + } + + private String getNonEmptyConfVar(Configuration conf, String param) throws IOException { + String val = conf.get(param); + if (val == null || val.trim().isEmpty()) { + throw new IOException("Configuration parameter " + param + " should be set, " + + WHEN_ZK_DSTORE_MSG); + } + return val; } /** * Create a path if it does not already exist ("mkdir -p") - * @param zk ZooKeeper session * @param path string with '/' separator * @param acl list of ACL entries - * @return - * @throws KeeperException - * @throws InterruptedException + * @throws TokenStoreException */ - public static String ensurePath(ZooKeeper zk, String path, List acl) throws KeeperException, - InterruptedException { - String[] pathComps = StringUtils.splitByWholeSeparator(path, "/"); - String currentPath = ""; - for (String pathComp : pathComps) { - currentPath += "/" + pathComp; - try { - String node = zk.create(currentPath, new byte[0], acl, - CreateMode.PERSISTENT); - LOGGER.info("Created path: " + node); - } catch (KeeperException.NodeExistsException e) { - } + public void ensurePath(String path, List acl) + throws TokenStoreException { + try { + CuratorFramework zk = getSession(); + String node = zk.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT) + .withACL(acl).forPath(path); + LOGGER.info("Created path: {} ", node); + } catch (KeeperException.NodeExistsException e) { + // node already exists + } catch (Exception e) { + throw new TokenStoreException("Error creating path " + path, e); } - return currentPath; } /** @@ -234,45 +228,24 @@ public static List parseACLs(String aclString) { return acl; } - private void init() { - if (this.zkConnectString == null) { - throw new IllegalStateException("Not initialized"); - } - + private void initClientAndPaths() { if (this.zkSession != null) { - try { - this.zkSession.close(); - } catch (InterruptedException ex) { - LOGGER.warn("Failed to close existing session.", ex); - } + this.zkSession.close(); } - ZooKeeper zk = getSession(); - try { - ensurePath(zk, rootNode + NODE_KEYS, newNodeAcl); - ensurePath(zk, rootNode + NODE_TOKENS, newNodeAcl); - } catch (Exception e) { - throw new TokenStoreException("Failed to validate token path.", e); - } + ensurePath(rootNode + NODE_KEYS, newNodeAcl); + ensurePath(rootNode + NODE_TOKENS, newNodeAcl); + } catch (TokenStoreException e) { + throw e; + } } @Override public void setConf(Configuration conf) { if (conf == null) { - throw new IllegalArgumentException("conf is null"); + throw new IllegalArgumentException("conf is null"); } - this.zkConnectString = conf.get( - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR, null); - this.connectTimeoutMillis = conf.getLong( - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_TIMEOUTMILLIS, -1); - this.rootNode = conf.get( - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ZNODE, - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ZNODE_DEFAULT); - String csv = conf.get(HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ACL, null); - if (StringUtils.isNotBlank(csv)) { - this.newNodeAcl = parseACLs(csv); - } - init(); + this.conf = conf; } @Override @@ -280,15 +253,18 @@ public Configuration getConf() { return null; // not required } - private Map getAllKeys() throws KeeperException, - InterruptedException { + private Map getAllKeys() throws KeeperException, InterruptedException { String masterKeyNode = rootNode + NODE_KEYS; - ZooKeeper zk = getSession(); - List nodes = zk.getChildren(masterKeyNode, false); + + // get children of key node + List nodes = zkGetChildren(masterKeyNode); + + // read each child node, add to results Map result = new HashMap(); for (String node : nodes) { - byte[] data = zk.getData(masterKeyNode + "/" + node, false, null); + String nodePath = masterKeyNode + "/" + node; + byte[] data = zkGetData(nodePath); if (data != null) { result.put(getSeq(node), data); } @@ -296,6 +272,26 @@ private Map getAllKeys() throws KeeperException, return result; } + private List zkGetChildren(String path) { + CuratorFramework zk = getSession(); + try { + return zk.getChildren().forPath(path); + } catch (Exception e) { + throw new TokenStoreException("Error getting children for " + path, e); + } + } + + private byte[] zkGetData(String nodePath) { + CuratorFramework zk = getSession(); + try { + return zk.getData().forPath(nodePath); + } catch (KeeperException.NoNodeException ex) { + return null; + } catch (Exception e) { + throw new TokenStoreException("Error reading " + nodePath, e); + } + } + private int getSeq(String path) { String[] pathComps = path.split("/"); return Integer.parseInt(pathComps[pathComps.length-1]); @@ -303,44 +299,45 @@ private int getSeq(String path) { @Override public int addMasterKey(String s) { + String keysPath = rootNode + NODE_KEYS + "/"; + CuratorFramework zk = getSession(); + String newNode; try { - ZooKeeper zk = getSession(); - String newNode = zk.create(rootNode + NODE_KEYS + "/", s.getBytes(), newNodeAcl, - CreateMode.PERSISTENT_SEQUENTIAL); - LOGGER.info("Added key {}", newNode); - return getSeq(newNode); - } catch (KeeperException ex) { - throw new TokenStoreException(ex); - } catch (InterruptedException ex) { - throw new TokenStoreException(ex); + newNode = zk.create().withMode(CreateMode.PERSISTENT_SEQUENTIAL).withACL(newNodeAcl) + .forPath(keysPath, s.getBytes()); + } catch (Exception e) { + throw new TokenStoreException("Error creating new node with path " + keysPath, e); } + LOGGER.info("Added key {}", newNode); + return getSeq(newNode); } @Override public void updateMasterKey(int keySeq, String s) { + CuratorFramework zk = getSession(); + String keyPath = rootNode + NODE_KEYS + "/" + String.format(ZK_SEQ_FORMAT, keySeq); try { - ZooKeeper zk = getSession(); - zk.setData(rootNode + NODE_KEYS + "/" + String.format(ZK_SEQ_FORMAT, keySeq), s.getBytes(), - -1); - } catch (KeeperException ex) { - throw new TokenStoreException(ex); - } catch (InterruptedException ex) { - throw new TokenStoreException(ex); + zk.setData().forPath(keyPath, s.getBytes()); + } catch (Exception e) { + throw new TokenStoreException("Error setting data in " + keyPath, e); } } @Override public boolean removeMasterKey(int keySeq) { + String keyPath = rootNode + NODE_KEYS + "/" + String.format(ZK_SEQ_FORMAT, keySeq); + zkDelete(keyPath); + return true; + } + + private void zkDelete(String path) { + CuratorFramework zk = getSession(); try { - ZooKeeper zk = getSession(); - zk.delete(rootNode + NODE_KEYS + "/" + String.format(ZK_SEQ_FORMAT, keySeq), -1); - return true; + zk.delete().forPath(path); } catch (KeeperException.NoNodeException ex) { - return false; - } catch (KeeperException ex) { - throw new TokenStoreException(ex); - } catch (InterruptedException ex) { - throw new TokenStoreException(ex); + // already deleted + } catch (Exception e) { + throw new TokenStoreException("Error deleting " + path, e); } } @@ -374,67 +371,42 @@ private String getTokenPath(DelegationTokenIdentifier tokenIdentifier) { @Override public boolean addToken(DelegationTokenIdentifier tokenIdentifier, DelegationTokenInformation token) { + byte[] tokenBytes = HiveDelegationTokenSupport.encodeDelegationTokenInformation(token); + String tokenPath = getTokenPath(tokenIdentifier); + CuratorFramework zk = getSession(); + String newNode; try { - ZooKeeper zk = getSession(); - byte[] tokenBytes = HiveDelegationTokenSupport.encodeDelegationTokenInformation(token); - String newNode = zk.create(getTokenPath(tokenIdentifier), - tokenBytes, newNodeAcl, CreateMode.PERSISTENT); - LOGGER.info("Added token: {}", newNode); - return true; - } catch (KeeperException.NodeExistsException ex) { - return false; - } catch (KeeperException ex) { - throw new TokenStoreException(ex); - } catch (InterruptedException ex) { - throw new TokenStoreException(ex); + newNode = zk.create().withMode(CreateMode.PERSISTENT).withACL(newNodeAcl) + .forPath(tokenPath, tokenBytes); + } catch (Exception e) { + throw new TokenStoreException("Error creating new node with path " + tokenPath, e); } + + LOGGER.info("Added token: {}", newNode); + return true; } @Override public boolean removeToken(DelegationTokenIdentifier tokenIdentifier) { - try { - ZooKeeper zk = getSession(); - zk.delete(getTokenPath(tokenIdentifier), -1); - return true; - } catch (KeeperException.NoNodeException ex) { - return false; - } catch (KeeperException ex) { - throw new TokenStoreException(ex); - } catch (InterruptedException ex) { - throw new TokenStoreException(ex); - } + String tokenPath = getTokenPath(tokenIdentifier); + zkDelete(tokenPath); + return true; } @Override public DelegationTokenInformation getToken(DelegationTokenIdentifier tokenIdentifier) { + byte[] tokenBytes = zkGetData(getTokenPath(tokenIdentifier)); try { - ZooKeeper zk = getSession(); - byte[] tokenBytes = zk.getData(getTokenPath(tokenIdentifier), false, null); - try { - return HiveDelegationTokenSupport.decodeDelegationTokenInformation(tokenBytes); - } catch (Exception ex) { - throw new TokenStoreException("Failed to decode token", ex); - } - } catch (KeeperException.NoNodeException ex) { - return null; - } catch (KeeperException ex) { - throw new TokenStoreException(ex); - } catch (InterruptedException ex) { - throw new TokenStoreException(ex); + return HiveDelegationTokenSupport.decodeDelegationTokenInformation(tokenBytes); + } catch (Exception ex) { + throw new TokenStoreException("Failed to decode token", ex); } } @Override public List getAllDelegationTokenIdentifiers() { String containerNode = rootNode + NODE_TOKENS; - final List nodes; - try { - nodes = getSession().getChildren(containerNode, false); - } catch (KeeperException ex) { - throw new TokenStoreException(ex); - } catch (InterruptedException ex) { - throw new TokenStoreException(ex); - } + final List nodes = zkGetChildren(containerNode); List result = new java.util.ArrayList( nodes.size()); for (String node : nodes) { @@ -452,17 +424,44 @@ public List getAllDelegationTokenIdentifiers() { @Override public void close() throws IOException { if (this.zkSession != null) { - try { - this.zkSession.close(); - } catch (InterruptedException ex) { - LOGGER.warn("Failed to close existing session.", ex); - } + this.zkSession.close(); } } @Override - public void setStore(Object hmsHandler) throws TokenStoreException { - // no-op. + public void init(Object objectStore, ServerMode smode) { + this.serverMode = smode; + zkConnectString = conf.get( + HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR, null); + if (zkConnectString == null || zkConnectString.trim().isEmpty()) { + // try alternate config param + zkConnectString = conf.get( + HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR_ALTERNATE, null); + if (zkConnectString == null || zkConnectString.trim().isEmpty()) { + throw new IllegalArgumentException("Zookeeper connect string has to be specifed through " + + "either " + HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR + + " or " + + HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR_ALTERNATE + + WHEN_ZK_DSTORE_MSG); + } + } + connectTimeoutMillis = conf.getInt( + HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_TIMEOUTMILLIS, -1); + String aclStr = conf.get(HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ACL, null); + if (StringUtils.isNotBlank(aclStr)) { + this.newNodeAcl = parseACLs(aclStr); + } + rootNode = conf.get(HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ZNODE, + HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ZNODE_DEFAULT) + serverMode; + + try { + // Install the JAAS Configuration for the runtime + setupJAASConfig(conf); + } catch (IOException e) { + throw new TokenStoreException("Error setting up JAAS configuration for zookeeper client " + + e.getMessage(), e); + } + initClientAndPaths(); } } diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java index 0a1a86ab93ec..3a652ca36e8b 100644 --- a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java +++ b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java @@ -61,7 +61,6 @@ import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.hadoop.mapreduce.TaskAttemptID; import org.apache.hadoop.mapreduce.TaskID; -import org.apache.hadoop.security.SecurityUtil; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.Progressable; @@ -239,6 +238,15 @@ public T doAs(UserGroupInformation ugi, PrivilegedExceptionAction pvea) t */ public String getTokenStrForm(String tokenSignature) throws IOException; + /** + * Dynamically sets up the JAAS configuration that uses kerberos + * @param principal + * @param keyTabFile + * @throws IOException + */ + public void setZookeeperClientKerberosJaasConfig(String principal, String keyTabFile) + throws IOException; + /** * Add a delegation token to the given ugi * @param ugi diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge.java b/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge.java index d0d6c7b8c9b6..d011c6733e03 100644 --- a/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge.java +++ b/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge.java @@ -99,12 +99,15 @@ public abstract TTransport createClientTransport( } public static abstract class Server { + public enum ServerMode { + HIVESERVER2, METASTORE + }; public abstract TTransportFactory createTransportFactory(Map saslProps) throws TTransportException; public abstract TProcessor wrapProcessor(TProcessor processor); public abstract TProcessor wrapNonAssumingProcessor(TProcessor processor); public abstract InetAddress getRemoteAddress(); public abstract void startDelegationTokenSecretManager(Configuration conf, - Object hmsHandler) throws IOException; + Object hmsHandler, ServerMode smode) throws IOException; public abstract String getDelegationToken(String owner, String renewer) throws IOException, InterruptedException; public abstract String getDelegationTokenWithService(String owner, String renewer, String service) From c326c30eda55a66c5857afadb4382efbeb73c323 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 30 Oct 2014 18:07:22 +0000 Subject: [PATCH 207/339] HIVE-8660: sql std auth: property missing from whitelist - hive.exec.dynamic.partition.mode (Thejas M Nair via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635571 13f79535-47bb-0310-9956-ffa450edef68 --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java | 1 + .../plugin/sqlstd/TestSQLStdHiveAccessControllerHS2.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index b0ef70a79edc..7161240b7758 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -2567,6 +2567,7 @@ private static String[] convertVarsToRegex(String[] paramList) { "hive\\.auto\\..*", "hive\\.cbo\\..*", "hive\\.convert\\..*", + "hive\\.exec\\.dynamic\\.partition.*", "hive\\.exec\\..*\\.dynamic\\.partitions\\..*", "hive\\.exec\\.compress\\..*", "hive\\.exec\\.infer\\..*", diff --git a/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerHS2.java b/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerHS2.java index d6872a03bb24..8f8b88a041a3 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerHS2.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/TestSQLStdHiveAccessControllerHS2.java @@ -87,7 +87,8 @@ private List getSettableParams() throws SecurityException, NoSuchFieldEx // create list with variables that match some of the regexes List confVarRegexList = Arrays.asList("hive.convert.join.bucket.mapjoin.tez", - "hive.optimize.index.filter.compact.maxsize", "hive.tez.dummy", "tez.task.dummy"); + "hive.optimize.index.filter.compact.maxsize", "hive.tez.dummy", "tez.task.dummy", + "hive.exec.dynamic.partition", "hive.exec.dynamic.partition.mode"); // combine two lists List varList = new ArrayList(); From 0692824585b24d79a08555202c1fc239ecf91afb Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 30 Oct 2014 18:28:01 +0000 Subject: [PATCH 208/339] HIVE-8655: CBO: ppr_pushdown, udf_substr produces incorrect results due to broken tablesample handling (Sergey Shelukhin via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635578 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java | 2 +- .../org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java index a14770ed2cb4..80f657e9b1e7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java @@ -75,7 +75,7 @@ public static List getVirtualCols(List exps) { return vCols; } - public static boolean validateASTForCBO(ASTNode ast) { + public static boolean validateASTForUnsupportedTokens(ASTNode ast) { String astTree = ast.toStringTree(); // if any of following tokens are present in AST, bail out String[] tokens = { "TOK_CHARSETLITERAL","TOK_TABLESPLITSAMPLE" }; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 3afc071247f0..ae61ee9172b1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -10241,13 +10241,15 @@ private boolean canHandleAstForCbo(ASTNode ast, QB qb, PreCboCtx cboCtx) { // be supported and would require additional checks similar to IsQuery? boolean isSupportedType = qb.getIsQuery() || qb.isCTAS() || cboCtx.type == PreCboCtx.Type.INSERT; - boolean result = isSupportedRoot && isSupportedType && createVwDesc == null; + boolean noBadTokens = HiveOptiqUtil.validateASTForUnsupportedTokens(ast); + boolean result = isSupportedRoot && isSupportedType && createVwDesc == null && noBadTokens; if (!result) { if (needToLogMessage) { String msg = ""; if (!isSupportedRoot) msg += "doesn't have QUERY or EXPLAIN as root and not a CTAS; "; if (!isSupportedType) msg += "is not a query, CTAS, or insert; "; if (createVwDesc != null) msg += "has create view; "; + if (!noBadTokens) msg += "has unsupported tokens; "; if (msg.isEmpty()) msg += "has some unspecified limitations; "; LOG.info("Not invoking CBO because the statement " + msg.substring(0, msg.length() - 2)); From 3e69edfb6be6adaad3c6572892aaa40b4f65d56e Mon Sep 17 00:00:00 2001 From: Jianyong Dai Date: Thu, 30 Oct 2014 18:29:35 +0000 Subject: [PATCH 209/339] HIVE-7282: HCatLoader fail to load Orc map with null key (Daniel Dai) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635579 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/hcatalog/data/HCatRecordSerDe.java | 4 +- .../apache/hive/hcatalog/pig/PigHCatUtil.java | 4 +- .../pig/TestHCatLoaderComplexSchema.java | 47 +++++++++++++++++-- 3 files changed, 48 insertions(+), 7 deletions(-) diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/HCatRecordSerDe.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/HCatRecordSerDe.java index ec5a94e789df..722e05d92402 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/HCatRecordSerDe.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/HCatRecordSerDe.java @@ -23,7 +23,7 @@ import java.util.List; import java.util.Map; import java.util.Properties; -import java.util.TreeMap; +import java.util.HashMap; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.serde.serdeConstants; @@ -212,7 +212,7 @@ public static Object serializeField(Object field, ObjectInspector fieldObjectIns private static Map serializeMap(Object f, MapObjectInspector moi) throws SerDeException { ObjectInspector koi = moi.getMapKeyObjectInspector(); ObjectInspector voi = moi.getMapValueObjectInspector(); - Map m = new TreeMap(); + Map m = new HashMap(); Map readMap = moi.getMap(f); if (readMap == null) { diff --git a/hcatalog/hcatalog-pig-adapter/src/main/java/org/apache/hive/hcatalog/pig/PigHCatUtil.java b/hcatalog/hcatalog-pig-adapter/src/main/java/org/apache/hive/hcatalog/pig/PigHCatUtil.java index 36221b77d524..48a40b1c11d4 100644 --- a/hcatalog/hcatalog-pig-adapter/src/main/java/org/apache/hive/hcatalog/pig/PigHCatUtil.java +++ b/hcatalog/hcatalog-pig-adapter/src/main/java/org/apache/hive/hcatalog/pig/PigHCatUtil.java @@ -480,7 +480,9 @@ private static Map transformToPigMap(Map map, HCatFieldSch Map result = new HashMap(); for (Entry entry : map.entrySet()) { // since map key for Pig has to be Strings - result.put(entry.getKey().toString(), extractPigObject(entry.getValue(), hfs.getMapValueSchema().get(0))); + if (entry.getKey()!=null) { + result.put(entry.getKey().toString(), extractPigObject(entry.getValue(), hfs.getMapValueSchema().get(0))); + } } return result; } diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java index 447f39fade0b..4983f13d878e 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java @@ -18,8 +18,6 @@ */ package org.apache.hive.hcatalog.pig; -import com.google.common.collect.ImmutableSet; - import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -52,7 +50,6 @@ import org.apache.pig.impl.logicalLayer.schema.Schema; import org.apache.pig.impl.logicalLayer.schema.Schema.FieldSchema; -import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -79,11 +76,13 @@ public class TestHCatLoaderComplexSchema { add("testSyntheticComplexSchema"); add("testTupleInBagInTupleInBag"); add("testMapWithComplexData"); + add("testMapNullKey"); }}); put(IOConstants.PARQUETFILE, new HashSet() {{ add("testSyntheticComplexSchema"); add("testTupleInBagInTupleInBag"); add("testMapWithComplexData"); + add("testMapNullKey"); }}); }}; @@ -222,6 +221,10 @@ public void testSyntheticComplexSchema() throws Exception { } private void verifyWriteRead(String tablename, String pigSchema, String tableSchema, List data, boolean provideSchemaToStorer) + throws IOException, CommandNeedRetryException, ExecException, FrontendException { + verifyWriteRead(tablename, pigSchema, tableSchema, data, data, provideSchemaToStorer); + } + private void verifyWriteRead(String tablename, String pigSchema, String tableSchema, List data, List result, boolean provideSchemaToStorer) throws IOException, CommandNeedRetryException, ExecException, FrontendException { MockLoader.setData(tablename + "Input", data); try { @@ -244,7 +247,7 @@ private void verifyWriteRead(String tablename, String pigSchema, String tableSch Iterator it = server.openIterator("X"); int i = 0; while (it.hasNext()) { - Tuple input = data.get(i++); + Tuple input = result.get(i++); Tuple output = it.next(); compareTuples(input, output); LOG.info("tuple : {} ", output); @@ -354,4 +357,40 @@ public void testMapWithComplexData() throws Exception { verifyWriteRead("testMapWithComplexData", pigSchema, tableSchema, data, true); verifyWriteRead("testMapWithComplexData2", pigSchema, tableSchema, data, false); } + + /** + * artificially complex nested schema to test nested schema conversion + * @throws Exception + */ + @Test + public void testMapNullKey() throws Exception { + assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); + String pigSchema = "m:map[]"; + + String tableSchema = "m map"; + + List data = new ArrayList(); + Tuple t = t( + new HashMap() { + { + put("ac test1", "test 1"); + put("ac test2", "test 2"); + put(null, "test 3"); + }; + }); + data.add(t); + + List result = new ArrayList(); + t = t( + new HashMap() { + { + put("ac test1", "test 1"); + put("ac test2", "test 2"); + }; + }); + result.add(t); + + verifyWriteRead("testSyntheticComplexSchema", pigSchema, tableSchema, data, result, true); + verifyWriteRead("testSyntheticComplexSchema", pigSchema, tableSchema, data, result, false); + } } From 0ebe6d0b58c31245653a4b8af4bcd576e775c5c0 Mon Sep 17 00:00:00 2001 From: Eugene Koifman Date: Thu, 30 Oct 2014 19:16:36 +0000 Subject: [PATCH 210/339] HIVE-8643 DDL operations via WebHCat with doAs parameter in secure cluster fail git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635593 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/hcatalog/templeton/SecureProxySupport.java | 5 +++-- .../hive/ql/security/ProxyUserAuthenticator.java | 2 ++ .../apache/hadoop/hive/shims/HadoopShimsSecure.java | 10 ++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java index d47f97ec8911..89668973c0cb 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java @@ -121,9 +121,9 @@ public void addArgs(List args) { if (isEnabled) { args.add("-D"); args.add("hive.metastore.token.signature=" + getHcatServiceStr()); - args.add("-D"); - args.add("proxy.user.name=" + user); } + args.add("-D"); + args.add("proxy.user.name=" + user); } class TokenWrapper { @@ -140,6 +140,7 @@ private Token getFSDelegationToken(String user, ugi.doAs(new PrivilegedExceptionAction() { public Object run() throws IOException { FileSystem fs = FileSystem.get(conf); + //todo: according to JavaDoc this seems like private API: addDelegationToken should be used twrapper.token = fs.getDelegationToken(ugi.getShortUserName()); return null; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/ProxyUserAuthenticator.java b/ql/src/java/org/apache/hadoop/hive/ql/security/ProxyUserAuthenticator.java index 7c89f966788f..95a98fe31db9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/ProxyUserAuthenticator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/ProxyUserAuthenticator.java @@ -30,6 +30,8 @@ * but honours a proxy config setting proxy.user.name instead of the * current user if set. This allows server processes like webhcat which * proxy other users to easily specify an override if allowed. + * + * It is no longer necessary to use this class with WebHCat as of Hive 0.14. */ public class ProxyUserAuthenticator extends HadoopDefaultAuthenticator { diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java index 53341e07a45a..b024472cb9df 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java @@ -463,6 +463,16 @@ public void prepareJobOutput(JobConf conf) { @Override public UserGroupInformation getUGIForConf(Configuration conf) throws IOException { + String doAs = conf.get("proxy.user.name"); + if(doAs != null && doAs.length() > 0) { + /* + * this allows doAs (proxy user) to be passed along across process boundary where + * delegation tokens are not supported. For example, a DDL stmt via WebHCat with + * a doAs parameter, forks to 'hcat' which needs to start a Session that + * proxies the end user + */ + return UserGroupInformation.createProxyUser(doAs, UserGroupInformation.getLoginUser()); + } return UserGroupInformation.getCurrentUser(); } From 59bec8380bb43531a4cd657ae15d5ef62ed7f772 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Thu, 30 Oct 2014 20:01:47 +0000 Subject: [PATCH 211/339] HIVE-8653 : CBO: Push Semi Join through, Project/Filter/Join (John Pullokkaran via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635599 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/parse/SemanticAnalyzer.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index ae61ee9172b1..59e0fe63ee2f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -259,6 +259,9 @@ import org.eigenbase.rel.rules.MergeFilterRule; import org.eigenbase.rel.rules.PushFilterPastProjectRule; import org.eigenbase.rel.rules.PushFilterPastSetOpRule; +import org.eigenbase.rel.rules.PushSemiJoinPastFilterRule; +import org.eigenbase.rel.rules.PushSemiJoinPastJoinRule; +import org.eigenbase.rel.rules.PushSemiJoinPastProjectRule; import org.eigenbase.rel.rules.SemiJoinRel; import org.eigenbase.rel.rules.TransitivePredicatesOnJoinRule; import org.eigenbase.relopt.RelOptCluster; @@ -12644,7 +12647,15 @@ public RelNode applyPreCBOTransforms(RelNode basePlan, RelMetadataProvider mdPro // TODO: Decorelation of subquery should be done before attempting // Partition Pruning; otherwise Expression evaluation may try to execute // corelated sub query. - basePlan = hepPlan(basePlan, true, mdProvider, new PushFilterPastProjectRule( + + // Push Down Semi Joins + basePlan = hepPlan(basePlan, true, mdProvider, + PushSemiJoinPastJoinRule.INSTANCE, + new PushSemiJoinPastFilterRule(HiveFilterRel.DEFAULT_FILTER_FACTORY), + new PushSemiJoinPastProjectRule(HiveProjectRel.DEFAULT_PROJECT_FACTORY)); + + basePlan = hepPlan(basePlan, true, mdProvider, + new PushFilterPastProjectRule( FilterRelBase.class, HiveFilterRel.DEFAULT_FILTER_FACTORY, HiveProjectRel.class, HiveProjectRel.DEFAULT_PROJECT_FACTORY), new PushFilterPastSetOpRule( HiveFilterRel.DEFAULT_FILTER_FACTORY), new MergeFilterRule( From dd452b84fdabdb5ed9874dce3a84f788b81563d1 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Thu, 30 Oct 2014 20:11:15 +0000 Subject: [PATCH 212/339] HIVE-8662 : CBO: tez_dml fails (Sergey Shelukhin, reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635601 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/FunctionRegistry.java | 6 ++++-- .../ql/optimizer/optiq/rules/PartitionPruner.java | 2 +- .../optiq/translator/ExprNodeConverter.java | 6 +++--- .../optiq/translator/SqlFunctionConverter.java | 13 +++++++++++-- .../hive/ql/udf/generic/GenericUDFBaseNumeric.java | 2 +- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java index 4e20ce01384c..48b23f0332e0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java @@ -170,6 +170,8 @@ public final class FunctionRegistry { public static final String LAG_FUNC_NAME = "lag"; public static final String LAST_VALUE_FUNC_NAME = "last_value"; + public static final String UNARY_PLUS_FUNC_NAME = "positive"; + public static final String UNARY_MINUS_FUNC_NAME = "negative"; public static final String WINDOWING_TABLE_FUNCTION = "windowingtablefunction"; private static final String NOOP_TABLE_FUNCTION = "noop"; @@ -252,8 +254,8 @@ public final class FunctionRegistry { registerGenericUDF("str_to_map", GenericUDFStringToMap.class); registerGenericUDF("translate", GenericUDFTranslate.class); - registerGenericUDF("positive", GenericUDFOPPositive.class); - registerGenericUDF("negative", GenericUDFOPNegative.class); + registerGenericUDF(UNARY_PLUS_FUNC_NAME, GenericUDFOPPositive.class); + registerGenericUDF(UNARY_MINUS_FUNC_NAME, GenericUDFOPNegative.class); registerUDF("day", UDFDayOfMonth.class, false); registerUDF("dayofmonth", UDFDayOfMonth.class, false); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/PartitionPruner.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/PartitionPruner.java index a218ecad0214..bdc8373877c1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/PartitionPruner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/PartitionPruner.java @@ -108,7 +108,7 @@ public RexNode visitCall(RexCall call) { boolean argsPruned = false; GenericUDF hiveUDF = SqlFunctionConverter.getHiveUDF(call.getOperator(), - call.getType()); + call.getType(), call.operands.size()); if (hiveUDF != null && !FunctionRegistry.isDeterministic(hiveUDF)) { return null; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ExprNodeConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ExprNodeConverter.java index e6e491f0b83d..65c6322d68ef 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ExprNodeConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ExprNodeConverter.java @@ -89,17 +89,17 @@ public ExprNodeDesc visitCall(RexCall call) { ArrayList tmpExprArgs = new ArrayList(); tmpExprArgs.addAll(args.subList(0, 2)); gfDesc = new ExprNodeGenericFuncDesc(TypeConverter.convert(call.getType()), - SqlFunctionConverter.getHiveUDF(call.getOperator(), call.getType()), tmpExprArgs); + SqlFunctionConverter.getHiveUDF(call.getOperator(), call.getType(), 2), tmpExprArgs); for (int i = 2; i < call.operands.size(); i++) { tmpExprArgs = new ArrayList(); tmpExprArgs.add(gfDesc); tmpExprArgs.add(args.get(i)); gfDesc = new ExprNodeGenericFuncDesc(TypeConverter.convert(call.getType()), - SqlFunctionConverter.getHiveUDF(call.getOperator(), call.getType()), tmpExprArgs); + SqlFunctionConverter.getHiveUDF(call.getOperator(), call.getType(), 2), tmpExprArgs); } } else { gfDesc = new ExprNodeGenericFuncDesc(TypeConverter.convert(call.getType()), - SqlFunctionConverter.getHiveUDF(call.getOperator(), call.getType()), args); + SqlFunctionConverter.getHiveUDF(call.getOperator(), call.getType(), args.size()), args); } return gfDesc; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java index 793f11784418..c6efff69ebba 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java @@ -98,10 +98,19 @@ public static SqlOperator getOptiqOperator(String funcTextName, GenericUDF hiveU return getOptiqFn(name, optiqArgTypes, retType); } - public static GenericUDF getHiveUDF(SqlOperator op, RelDataType dt) { + public static GenericUDF getHiveUDF(SqlOperator op, RelDataType dt, int argsLength) { String name = reverseOperatorMap.get(op); - if (name == null) + if (name == null) { name = op.getName(); + } + // Make sure we handle unary + and - correctly. + if (argsLength == 1) { + if (name == "+") { + name = FunctionRegistry.UNARY_PLUS_FUNC_NAME; + } else if (name == "-") { + name = FunctionRegistry.UNARY_MINUS_FUNC_NAME; + } + } FunctionInfo hFn = name != null ? FunctionRegistry.getFunctionInfo(name) : null; if (hFn == null) hFn = handleExplicitCast(op, dt); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java index 8399f26ef4a0..39875fcca4b7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java @@ -294,7 +294,7 @@ protected DecimalTypeInfo deriveResultDecimalTypeInfo() { @Override public String getDisplayString(String[] children) { - assert (children.length == 2); + assert (children.length == 2) : opDisplayName + " with " + children.length + " children"; return "(" + children[0] + " " + opDisplayName + " " + children[1] + ")"; } From fa004afae3dfe2d76b84231adf2ef6638dbb163b Mon Sep 17 00:00:00 2001 From: Brock Noland Date: Thu, 30 Oct 2014 20:20:30 +0000 Subject: [PATCH 213/339] Merge HIVE-8577 - Cannot deserialize Avro schema with a map with null values git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635602 13f79535-47bb-0310-9956-ffa450edef68 --- data/files/map_null_schema.avro | 1 + data/files/map_null_val.avro | Bin 0 -> 341 bytes .../avro_deserialize_map_null.q | 14 +++++ .../avro_deserialize_map_null.q.out | 55 ++++++++++++++++++ .../hive/serde2/avro/AvroDeserializer.java | 16 +++-- 5 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 data/files/map_null_schema.avro create mode 100644 data/files/map_null_val.avro create mode 100644 ql/src/test/queries/clientpositive/avro_deserialize_map_null.q create mode 100644 ql/src/test/results/clientpositive/avro_deserialize_map_null.q.out diff --git a/data/files/map_null_schema.avro b/data/files/map_null_schema.avro new file mode 100644 index 000000000000..d8ceaa7a10af --- /dev/null +++ b/data/files/map_null_schema.avro @@ -0,0 +1 @@ +{"type":"record","name":"dku_record_0","namespace":"com.dataiku.dss","doc":"","fields":[{"name":"avreau_col_1","type":["null",{"type":"map","values":["null","string"]}],"default":null}]} diff --git a/data/files/map_null_val.avro b/data/files/map_null_val.avro new file mode 100644 index 0000000000000000000000000000000000000000..0d89d89cf3a3bbfa273dac872ba563cc9fcf8dd4 GIT binary patch literal 341 zcmeZI%3@>^ODrqO*DFrWNX3@jYksg)*7AkvtD18A%<18y-RunHrPVnZf8 K>QK!?w-x}mv}ykU literal 0 HcmV?d00001 diff --git a/ql/src/test/queries/clientpositive/avro_deserialize_map_null.q b/ql/src/test/queries/clientpositive/avro_deserialize_map_null.q new file mode 100644 index 000000000000..fa170db53fac --- /dev/null +++ b/ql/src/test/queries/clientpositive/avro_deserialize_map_null.q @@ -0,0 +1,14 @@ +-- These test attempts to deserialize an Avro file that contains map null values, and the file schema +-- vs record schema have the null values in different positions +-- i.e. +-- fileSchema = [{ "type" : "map", "values" : ["string","null"]}, "null"] +-- recordSchema = ["null", { "type" : "map", "values" : ["string","null"]}] + + +DROP TABLE IF EXISTS avro_table; + +CREATE TABLE avro_table (avreau_col_1 map) STORED AS AVRO; +LOAD DATA LOCAL INPATH '../../data/files/map_null_val.avro' OVERWRITE INTO TABLE avro_table; +SELECT * FROM avro_table; + +DROP TABLE avro_table; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/avro_deserialize_map_null.q.out b/ql/src/test/results/clientpositive/avro_deserialize_map_null.q.out new file mode 100644 index 000000000000..de79d6228fb1 --- /dev/null +++ b/ql/src/test/results/clientpositive/avro_deserialize_map_null.q.out @@ -0,0 +1,55 @@ +PREHOOK: query: -- These test attempts to deserialize an Avro file that contains map null values, and the file schema +-- vs record schema have the null values in different positions +-- i.e. +-- fileSchema = [{ "type" : "map", "values" : ["string","null"]}, "null"] +-- recordSchema = ["null", { "type" : "map", "values" : ["string","null"]}] + + +DROP TABLE IF EXISTS avro_table +PREHOOK: type: DROPTABLE +POSTHOOK: query: -- These test attempts to deserialize an Avro file that contains map null values, and the file schema +-- vs record schema have the null values in different positions +-- i.e. +-- fileSchema = [{ "type" : "map", "values" : ["string","null"]}, "null"] +-- recordSchema = ["null", { "type" : "map", "values" : ["string","null"]}] + + +DROP TABLE IF EXISTS avro_table +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE avro_table (avreau_col_1 map) STORED AS AVRO +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@avro_table +POSTHOOK: query: CREATE TABLE avro_table (avreau_col_1 map) STORED AS AVRO +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@avro_table +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/map_null_val.avro' OVERWRITE INTO TABLE avro_table +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@avro_table +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/map_null_val.avro' OVERWRITE INTO TABLE avro_table +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@avro_table +PREHOOK: query: SELECT * FROM avro_table +PREHOOK: type: QUERY +PREHOOK: Input: default@avro_table +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM avro_table +POSTHOOK: type: QUERY +POSTHOOK: Input: default@avro_table +#### A masked pattern was here #### +{"key4":null,"key3":"val3"} +{"key4":null,"key3":"val3"} +{"key2":"val2","key1":null} +{"key4":null,"key3":"val3"} +{"key4":null,"key3":"val3"} +PREHOOK: query: DROP TABLE avro_table +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@avro_table +PREHOOK: Output: default@avro_table +POSTHOOK: query: DROP TABLE avro_table +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@avro_table +POSTHOOK: Output: default@avro_table diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroDeserializer.java b/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroDeserializer.java index 2fbe00091f12..aa8e662878d1 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroDeserializer.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroDeserializer.java @@ -199,7 +199,7 @@ private Object worker(Object datum, Schema fileSchema, Schema recordSchema, Type // Avro requires NULLable types to be defined as unions of some type T // and NULL. This is annoying and we're going to hide it from the user. if(AvroSerdeUtils.isNullableType(recordSchema)) { - return deserializeNullableUnion(datum, fileSchema, recordSchema, columnType); + return deserializeNullableUnion(datum, fileSchema, recordSchema); } switch(columnType.getCategory()) { @@ -289,8 +289,8 @@ private Object deserializePrimitive(Object datum, Schema fileSchema, Schema reco * Extract either a null or the correct type from a Nullable type. This is * horrible in that we rebuild the TypeInfo every time. */ - private Object deserializeNullableUnion(Object datum, Schema fileSchema, Schema recordSchema, - TypeInfo columnType) throws AvroSerdeException { + private Object deserializeNullableUnion(Object datum, Schema fileSchema, Schema recordSchema) + throws AvroSerdeException { int tag = GenericData.get().resolveUnion(recordSchema, datum); // Determine index of value Schema schema = recordSchema.getTypes().get(tag); if (schema.getType().equals(Schema.Type.NULL)) { @@ -299,8 +299,14 @@ private Object deserializeNullableUnion(Object datum, Schema fileSchema, Schema Schema currentFileSchema = null; if (fileSchema != null) { - currentFileSchema = - fileSchema.getType() == Type.UNION ? fileSchema.getTypes().get(tag) : fileSchema; + if (fileSchema.getType() == Type.UNION) { + // The fileSchema may have the null value in a different position, so + // we need to get the correct tag + tag = GenericData.get().resolveUnion(fileSchema, datum); + currentFileSchema = fileSchema.getTypes().get(tag); + } else { + currentFileSchema = fileSchema; + } } return worker(datum, currentFileSchema, schema, SchemaToTypeInfo.generateTypeInfo(schema)); From a5ecbee3decc7d5f9b8269853838a84a9e6220f9 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Thu, 30 Oct 2014 20:23:53 +0000 Subject: [PATCH 214/339] HIVE-8654 : CBO: parquet_ctas test returns incorrect results (Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635604 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 59e0fe63ee2f..9c944b66f4a8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -6263,8 +6263,10 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) if (!("".equals(nm[0])) && nm[1] != null) { colName = unescapeIdentifier(colInfo.getAlias()).toLowerCase(); // remove `` } - String ctasColName = fixCtasColumnName(colName, colInfo, inputRR); - col.setName(ctasColName); + if (runCBO) { + colName = fixCtasColumnName(colName); + } + col.setName(colName); col.setType(colInfo.getType().getTypeName()); field_schemas.add(col); } @@ -6442,7 +6444,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) return output; } - private static String fixCtasColumnName(String colName, ColumnInfo colInfo, RowResolver rr) { + private static String fixCtasColumnName(String colName) { int lastDot = colName.lastIndexOf('.'); if (lastDot < 0) return colName; // alias is not fully qualified String nqColumnName = colName.substring(lastDot + 1); From 58eb5ef9e250c83cb209f7fd938a2baa2bc6b876 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 30 Oct 2014 21:36:53 +0000 Subject: [PATCH 215/339] HIVE-8664: Use Apache Curator in JDBC Driver and HiveServer2 for better reliability (Vaibhav Gumashta, reviewed by Thejas M Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635621 13f79535-47bb-0310-9956-ffa450edef68 --- jdbc/pom.xml | 5 + jdbc/src/java/org/apache/hive/jdbc/Utils.java | 1 + .../hive/jdbc/ZooKeeperHiveClientHelper.java | 32 +++-- pom.xml | 13 +- .../hive/ql/util/ZooKeeperHiveHelper.java | 36 ------ service/pom.xml | 5 + .../hive/service/server/HiveServer2.java | 116 ++++++++++-------- 7 files changed, 99 insertions(+), 109 deletions(-) diff --git a/jdbc/pom.xml b/jdbc/pom.xml index 215dc86df622..bdf214c4091e 100644 --- a/jdbc/pom.xml +++ b/jdbc/pom.xml @@ -97,6 +97,11 @@ + + org.apache.curator + curator-framework + ${curator.version} + diff --git a/jdbc/src/java/org/apache/hive/jdbc/Utils.java b/jdbc/src/java/org/apache/hive/jdbc/Utils.java index 8bbeef7bd65e..d981c0300dd1 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/Utils.java +++ b/jdbc/src/java/org/apache/hive/jdbc/Utils.java @@ -102,6 +102,7 @@ public static class JdbcConnectionParams { // Non-configurable params: // ZOOKEEPER_SESSION_TIMEOUT is not exposed as client configurable static final int ZOOKEEPER_SESSION_TIMEOUT = 600 * 1000; + static final int ZOOKEEPER_CONNECTION_TIMEOUT = -1; // Currently supports JKS keystore format static final String SSL_TRUST_STORE_TYPE = "JKS"; diff --git a/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java b/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java index 3e4f4e54c280..d515ce5a03d2 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java +++ b/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java @@ -25,9 +25,11 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.hive.jdbc.Utils.JdbcConnectionParams; import org.apache.zookeeper.Watcher; -import org.apache.zookeeper.ZooKeeper; public class ZooKeeperHiveClientHelper { public static final Log LOG = LogFactory.getLog(ZooKeeperHiveClientHelper.class.getName()); @@ -59,14 +61,14 @@ static String getNextServerUriFromZooKeeper(JdbcConnectionParams connParams) List serverHosts; Random randomizer = new Random(); String serverNode; - ZooKeeper zooKeeperClient = null; - // Pick a random HiveServer2 host from the ZooKeeper namspace + CuratorFramework zooKeeperClient = + CuratorFrameworkFactory.builder().connectString(zooKeeperEnsemble) + .sessionTimeoutMs(JdbcConnectionParams.ZOOKEEPER_SESSION_TIMEOUT) + .connectionTimeoutMs(JdbcConnectionParams.ZOOKEEPER_CONNECTION_TIMEOUT) + .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); + zooKeeperClient.start(); try { - zooKeeperClient = - new ZooKeeper(zooKeeperEnsemble, JdbcConnectionParams.ZOOKEEPER_SESSION_TIMEOUT, - new ZooKeeperHiveClientHelper.DummyWatcher()); - // All the HiveServer2 host nodes that are in ZooKeeper currently - serverHosts = zooKeeperClient.getChildren("/" + zooKeeperNamespace, false); + serverHosts = zooKeeperClient.getChildren().forPath("/" + zooKeeperNamespace); // Remove the znodes we've already tried from this list serverHosts.removeAll(connParams.getRejectedHostZnodePaths()); if (serverHosts.isEmpty()) { @@ -76,22 +78,18 @@ static String getNextServerUriFromZooKeeper(JdbcConnectionParams connParams) // Now pick a host randomly serverNode = serverHosts.get(randomizer.nextInt(serverHosts.size())); connParams.setCurrentHostZnodePath(serverNode); - // Read the value from the node (UTF-8 enoded byte array) and convert it to a String String serverUri = - new String(zooKeeperClient.getData("/" + zooKeeperNamespace + "/" + serverNode, false, - null), Charset.forName("UTF-8")); + new String( + zooKeeperClient.getData().forPath("/" + zooKeeperNamespace + "/" + serverNode), + Charset.forName("UTF-8")); LOG.info("Selected HiveServer2 instance with uri: " + serverUri); return serverUri; } catch (Exception e) { throw new ZooKeeperHiveClientException("Unable to read HiveServer2 uri from ZooKeeper", e); } finally { - // Try to close the client connection with ZooKeeper + // Close the client connection with ZooKeeper if (zooKeeperClient != null) { - try { - zooKeeperClient.close(); - } catch (Exception e) { - // No-op - } + zooKeeperClient.close(); } } } diff --git a/pom.xml b/pom.xml index 0a9b4e4944a0..9f2b2b338557 100644 --- a/pom.xml +++ b/pom.xml @@ -473,13 +473,12 @@ - - org.apache.curator - curator-framework - ${curator.version} - - - + + org.apache.curator + curator-framework + ${curator.version} + + org.codehaus.groovy groovy-all ${groovy.version} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java b/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java index 29d05314ccc1..f6cb8ac3a20a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/util/ZooKeeperHiveHelper.java @@ -18,17 +18,10 @@ package org.apache.hadoop.hive.ql.util; -import java.util.List; - -import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; -import org.apache.zookeeper.CreateMode; -import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.Watcher; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.data.ACL; public class ZooKeeperHiveHelper { public static final Log LOG = LogFactory.getLog(ZooKeeperHiveHelper.class.getName()); @@ -59,34 +52,6 @@ public static String getQuorumServers(HiveConf conf) { return quorum.toString(); } - - /** - * Create a path on ZooKeeper, if it does not already exist ("mkdir -p") - * - * @param zooKeeperClient ZooKeeper session - * @param path string with ZOOKEEPER_PATH_SEPARATOR as the separator - * @param acl list of ACL entries - * @param createMode for create mode of each node in the patch - * @return - * @throws KeeperException - * @throws InterruptedException - */ - public static String createPathRecursively(ZooKeeper zooKeeperClient, String path, List acl, - CreateMode createMode) throws KeeperException, InterruptedException { - String[] pathComponents = StringUtils.splitByWholeSeparator(path, ZOOKEEPER_PATH_SEPARATOR); - String currentPath = ""; - for (String pathComponent : pathComponents) { - currentPath += ZOOKEEPER_PATH_SEPARATOR + pathComponent; - try { - String node = zooKeeperClient.create(currentPath, new byte[0], acl, createMode); - LOG.info("Created path: " + node); - } catch (KeeperException.NodeExistsException e) { - // Do nothing here - } - } - return currentPath; - } - /** * A no-op watcher class */ @@ -95,5 +60,4 @@ public static class DummyWatcher implements Watcher { public void process(org.apache.zookeeper.WatchedEvent event) { } } - } diff --git a/service/pom.xml b/service/pom.xml index 8a28ffd186c5..906fe15a1610 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -86,6 +86,11 @@ libthrift ${libthrift.version} + + org.apache.curator + curator-framework + ${curator.version} + org.apache.hive diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java b/service/src/java/org/apache/hive/service/server/HiveServer2.java index 3c37f24c65b4..b814e4bb2eca 100644 --- a/service/src/java/org/apache/hive/service/server/HiveServer2.java +++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java @@ -32,6 +32,10 @@ import org.apache.commons.cli.ParseException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.framework.api.ACLProvider; +import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.hadoop.hive.common.LogUtils; import org.apache.hadoop.hive.common.LogUtils.LogInitializationException; import org.apache.hadoop.hive.conf.HiveConf; @@ -52,7 +56,6 @@ import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooDefs.Perms; -import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.ACL; /** @@ -65,7 +68,7 @@ public class HiveServer2 extends CompositeService { private CLIService cliService; private ThriftCLIService thriftCLIService; private String znodePath; - private ZooKeeper zooKeeperClient; + private CuratorFramework zooKeeperClient; private boolean registeredWithZooKeeper = false; public HiveServer2() { @@ -73,7 +76,6 @@ public HiveServer2() { HiveConf.setLoadHiveServer2Config(true); } - @Override public synchronized void init(HiveConf hiveConf) { cliService = new CLIService(this); @@ -107,6 +109,33 @@ public static boolean isHTTPTransportMode(HiveConf hiveConf) { return false; } + /** + * ACLProvider for providing appropriate ACLs to CuratorFrameworkFactory + */ + private final ACLProvider zooKeeperAclProvider = new ACLProvider() { + List nodeAcls = new ArrayList(); + + @Override + public List getDefaultAcl() { + if (ShimLoader.getHadoopShims().isSecurityEnabled()) { + // Read all to the world + nodeAcls.addAll(Ids.READ_ACL_UNSAFE); + // Create/Delete/Write/Admin to the authenticated user + nodeAcls.add(new ACL(Perms.ALL, Ids.AUTH_IDS)); + } else { + // ACLs for znodes on a non-kerberized cluster + // Create/Read/Delete/Write/Admin to the world + nodeAcls.addAll(Ids.OPEN_ACL_UNSAFE); + } + return nodeAcls; + } + + @Override + public List getAclForPath(String path) { + return getDefaultAcl(); + } + }; + /** * Adds a server instance to ZooKeeper as a znode. * @@ -116,28 +145,29 @@ public static boolean isHTTPTransportMode(HiveConf hiveConf) { private void addServerInstanceToZooKeeper(HiveConf hiveConf) throws Exception { int zooKeeperSessionTimeout = hiveConf.getIntVar(HiveConf.ConfVars.HIVE_ZOOKEEPER_SESSION_TIMEOUT); + int connectTimeoutMillis = -1; String zooKeeperEnsemble = ZooKeeperHiveHelper.getQuorumServers(hiveConf); String rootNamespace = hiveConf.getVar(HiveConf.ConfVars.HIVE_SERVER2_ZOOKEEPER_NAMESPACE); String instanceURI = getServerInstanceURI(hiveConf); byte[] znodeDataUTF8 = instanceURI.getBytes(Charset.forName("UTF-8")); - // Znode ACLs - List nodeAcls = new ArrayList(); - setUpAuthAndAcls(hiveConf, nodeAcls); - // Create a ZooKeeper client + setUpZooKeeperAuth(hiveConf); + // Create a CuratorFramework instance to be used as the ZooKeeper client + // Use the zooKeeperAclProvider to create appropriate ACLs zooKeeperClient = - new ZooKeeper(zooKeeperEnsemble, zooKeeperSessionTimeout, - new ZooKeeperHiveHelper.DummyWatcher()); + CuratorFrameworkFactory.builder().connectString(zooKeeperEnsemble) + .sessionTimeoutMs(zooKeeperSessionTimeout).connectionTimeoutMs(connectTimeoutMillis) + .aclProvider(zooKeeperAclProvider).retryPolicy(new ExponentialBackoffRetry(1000, 3)) + .build(); + zooKeeperClient.start(); // Create the parent znodes recursively; ignore if the parent already exists. - // If pre-creating the parent on a kerberized cluster, ensure that you give ACLs, - // as explained in {@link #setUpAuthAndAcls(HiveConf, List) setUpAuthAndAcls} try { - ZooKeeperHiveHelper.createPathRecursively(zooKeeperClient, rootNamespace, nodeAcls, - CreateMode.PERSISTENT); + zooKeeperClient.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT) + .forPath(ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + rootNamespace); LOG.info("Created the root name space: " + rootNamespace + " on ZooKeeper for HiveServer2"); } catch (KeeperException e) { if (e.code() != KeeperException.Code.NODEEXISTS) { LOG.fatal("Unable to create HiveServer2 namespace: " + rootNamespace + " on ZooKeeper", e); - throw (e); + throw e; } } // Create a znode under the rootNamespace parent for this instance of the server @@ -148,56 +178,40 @@ private void addServerInstanceToZooKeeper(HiveConf hiveConf) throws Exception { + ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + "serverUri=" + instanceURI + ";" + "version=" + HiveVersionInfo.getVersion() + ";" + "sequence="; znodePath = - zooKeeperClient.create(pathPrefix, znodeDataUTF8, nodeAcls, - CreateMode.EPHEMERAL_SEQUENTIAL); + zooKeeperClient.create().creatingParentsIfNeeded() + .withMode(CreateMode.EPHEMERAL_SEQUENTIAL).forPath(pathPrefix, znodeDataUTF8); setRegisteredWithZooKeeper(true); // Set a watch on the znode - if (zooKeeperClient.exists(znodePath, new DeRegisterWatcher()) == null) { + if (zooKeeperClient.checkExists().usingWatcher(new DeRegisterWatcher()).forPath(znodePath) == null) { // No node exists, throw exception throw new Exception("Unable to create znode for this HiveServer2 instance on ZooKeeper."); } LOG.info("Created a znode on ZooKeeper for HiveServer2 uri: " + instanceURI); } catch (KeeperException e) { LOG.fatal("Unable to create a znode for this server instance", e); - throw new Exception(e); + throw (e); } } /** - * Set up ACLs for znodes based on whether the cluster is secure or not. - * On a kerberized cluster, ZooKeeper performs Kerberos-SASL authentication. - * We give Read privilege to the world, but Create/Delete/Write/Admin to the authenticated user. - * On a non-kerberized cluster, we give Create/Read/Delete/Write/Admin privileges to the world. + * For a kerberized cluster, we dynamically set up the client's JAAS conf. * - * For a kerberized cluster, we also dynamically set up the client's JAAS conf. * @param hiveConf - * @param nodeAcls * @return * @throws Exception */ - private void setUpAuthAndAcls(HiveConf hiveConf, List nodeAcls) throws Exception { + private void setUpZooKeeperAuth(HiveConf hiveConf) throws Exception { if (ShimLoader.getHadoopShims().isSecurityEnabled()) { String principal = hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL); if (principal.isEmpty()) { - throw new IOException( - "HiveServer2 Kerberos principal is empty"); + throw new IOException("HiveServer2 Kerberos principal is empty"); } String keyTabFile = hiveConf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_KEYTAB); if (keyTabFile.isEmpty()) { - throw new IOException( - "HiveServer2 Kerberos keytab is empty"); + throw new IOException("HiveServer2 Kerberos keytab is empty"); } - // Install the JAAS Configuration for the runtime ShimLoader.getHadoopShims().setZookeeperClientKerberosJaasConfig(principal, keyTabFile); - // Read all to the world - nodeAcls.addAll(Ids.READ_ACL_UNSAFE); - // Create/Delete/Write/Admin to the authenticated user - nodeAcls.add(new ACL(Perms.ALL, Ids.AUTH_IDS)); - } else { - // ACLs for znodes on a non-kerberized cluster - // Create/Read/Delete/Write/Admin to the world - nodeAcls.addAll(Ids.OPEN_ACL_UNSAFE); } } @@ -333,22 +347,27 @@ static void deleteServerInstancesFromZooKeeper(String versionNumber) throws Exce HiveConf hiveConf = new HiveConf(); int zooKeeperSessionTimeout = hiveConf.getIntVar(HiveConf.ConfVars.HIVE_ZOOKEEPER_SESSION_TIMEOUT); + int connectTimeoutMillis = -1; String zooKeeperEnsemble = ZooKeeperHiveHelper.getQuorumServers(hiveConf); String rootNamespace = hiveConf.getVar(HiveConf.ConfVars.HIVE_SERVER2_ZOOKEEPER_NAMESPACE); - ZooKeeper zooKeeperClient = - new ZooKeeper(zooKeeperEnsemble, zooKeeperSessionTimeout, - new ZooKeeperHiveHelper.DummyWatcher()); - // Get all znode paths + CuratorFramework zooKeeperClient = + CuratorFrameworkFactory.builder().connectString(zooKeeperEnsemble) + .sessionTimeoutMs(zooKeeperSessionTimeout).connectionTimeoutMs(connectTimeoutMillis) + .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); + zooKeeperClient.start(); List znodePaths = - zooKeeperClient.getChildren(ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + rootNamespace, - false); + zooKeeperClient.getChildren().forPath( + ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + rootNamespace); // Now for each path that is for the given versionNumber, delete the znode from ZooKeeper for (String znodePath : znodePaths) { if (znodePath.contains("version=" + versionNumber + ";")) { - zooKeeperClient.delete(ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + rootNamespace - + ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + znodePath, -1); + LOG.info("Removing the znode: " + znodePath + " from ZooKeeper"); + zooKeeperClient.delete().forPath( + ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + rootNamespace + + ZooKeeperHiveHelper.ZOOKEEPER_PATH_SEPARATOR + znodePath); } } + zooKeeperClient.close(); } public static void main(String[] args) { @@ -503,8 +522,8 @@ public void execute() { } /** - * DeregisterOptionExecutor: executes the --deregister option by - * deregistering all HiveServer2 instances from ZooKeeper of a specific version. + * DeregisterOptionExecutor: executes the --deregister option by deregistering all HiveServer2 + * instances from ZooKeeper of a specific version. */ static class DeregisterOptionExecutor implements ServerOptionsExecutor { private final String versionNumber; @@ -526,4 +545,3 @@ public void execute() { } } } - From 3afc0591df2737edc66835379165c332c0565efa Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Thu, 30 Oct 2014 23:15:14 +0000 Subject: [PATCH 216/339] HIVE-8579: Guaranteed NPE in DDLSemanticAnalyzer (Jason Dere, reviewed by Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635636 13f79535-47bb-0310-9956-ffa450edef68 --- ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java | 2 +- .../org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java index 9ac540ef3e83..292c83cf9677 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java @@ -422,7 +422,7 @@ public enum ErrorMsg { ACID_NO_SORTED_BUCKETS(10298, "ACID insert, update, delete not supported on tables that are " + "sorted, table {0}", true), ALTER_TABLE_TYPE_PARTIAL_PARTITION_SPEC_NO_SUPPORTED(10299, - "Alter table partition type {0} does not allow partial partition spec"), + "Alter table partition type {0} does not allow partial partition spec", true), //========================== 20000 range starts here ========================// SCRIPT_INIT_ERROR(20000, "Unable to initialize custom script."), diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index 7783f5f0c0db..6f3e2d64d310 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -1408,8 +1408,9 @@ private void addInputsOutputsAlterTable(String tableName, Map pa // Partial partition spec supplied. Make sure this is allowed. if (desc == null || !AlterTableDesc.doesAlterTableTypeSupportPartialPartitionSpec(desc.getOp())) { + String alterTabletype = (desc != null) ? desc.getOp().name() : ""; throw new SemanticException( - ErrorMsg.ALTER_TABLE_TYPE_PARTIAL_PARTITION_SPEC_NO_SUPPORTED, desc.getOp().name()); + ErrorMsg.ALTER_TABLE_TYPE_PARTIAL_PARTITION_SPEC_NO_SUPPORTED, alterTabletype); } else if (!conf.getBoolVar(HiveConf.ConfVars.DYNAMICPARTITIONING)) { throw new SemanticException(ErrorMsg.DYNAMIC_PARTITION_DISABLED); } From a6aef7a083138bfde9f79ff071d8a5d4b8207f1a Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 31 Oct 2014 01:39:54 +0000 Subject: [PATCH 217/339] HIVE-8550: Hive cannot load data into partitioned table with Unicode key (Xiaobing Zhou, reviewed by Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635653 13f79535-47bb-0310-9956-ffa450edef68 --- .../scripts/upgrade/mssql/004-HIVE-8550.mssql.sql | 13 +++++++++++++ .../upgrade/mssql/hive-schema-0.14.0.mssql.sql | 6 +++--- .../mssql/upgrade-0.13.0-to-0.14.0.mssql.sql | 1 + 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 metastore/scripts/upgrade/mssql/004-HIVE-8550.mssql.sql diff --git a/metastore/scripts/upgrade/mssql/004-HIVE-8550.mssql.sql b/metastore/scripts/upgrade/mssql/004-HIVE-8550.mssql.sql new file mode 100644 index 000000000000..cc19c74b2030 --- /dev/null +++ b/metastore/scripts/upgrade/mssql/004-HIVE-8550.mssql.sql @@ -0,0 +1,13 @@ +--ALTER PARTITIONS.PART_NAME from varchar to nvarchar +DROP INDEX PARTITIONS.UNIQUEPARTITION; +ALTER TABLE PARTITIONS ALTER COLUMN PART_NAME NVARCHAR(767) NULL; +CREATE UNIQUE INDEX UNIQUEPARTITION ON PARTITIONS (PART_NAME,TBL_ID); +GO + +--ALTER SDS.LOCATION from varchar to nvarchar +ALTER TABLE SDS ALTER COLUMN LOCATION NVARCHAR(4000) NULL; +GO + +--ALTER PARTITION_KEY_VALS.PART_KEY_VAL from varchar to nvarchar +ALTER TABLE PARTITION_KEY_VALS ALTER COLUMN PART_KEY_VAL NVARCHAR(255) NULL; +GO \ No newline at end of file diff --git a/metastore/scripts/upgrade/mssql/hive-schema-0.14.0.mssql.sql b/metastore/scripts/upgrade/mssql/hive-schema-0.14.0.mssql.sql index 174ed397390a..e9c6cb1f4e4a 100644 --- a/metastore/scripts/upgrade/mssql/hive-schema-0.14.0.mssql.sql +++ b/metastore/scripts/upgrade/mssql/hive-schema-0.14.0.mssql.sql @@ -140,7 +140,7 @@ CREATE TABLE PARTITIONS PART_ID bigint NOT NULL, CREATE_TIME int NOT NULL, LAST_ACCESS_TIME int NOT NULL, - PART_NAME varchar(767) NULL, + PART_NAME nvarchar(767) NULL, SD_ID bigint NULL, TBL_ID bigint NULL ); @@ -371,7 +371,7 @@ CREATE TABLE SDS INPUT_FORMAT varchar(4000) NULL, IS_COMPRESSED bit NOT NULL, IS_STOREDASSUBDIRECTORIES bit NOT NULL, - LOCATION varchar(4000) NULL, + LOCATION nvarchar(4000) NULL, NUM_BUCKETS int NOT NULL, OUTPUT_FORMAT varchar(4000) NULL, SERDE_ID bigint NULL @@ -437,7 +437,7 @@ ALTER TABLE SKEWED_STRING_LIST_VALUES ADD CONSTRAINT SKEWED_STRING_LIST_VALUES_P CREATE TABLE PARTITION_KEY_VALS ( PART_ID bigint NOT NULL, - PART_KEY_VAL varchar(255) NULL, + PART_KEY_VAL nvarchar(255) NULL, INTEGER_IDX int NOT NULL ); diff --git a/metastore/scripts/upgrade/mssql/upgrade-0.13.0-to-0.14.0.mssql.sql b/metastore/scripts/upgrade/mssql/upgrade-0.13.0-to-0.14.0.mssql.sql index 1bda6d5d2c3d..e442f3a2134f 100644 --- a/metastore/scripts/upgrade/mssql/upgrade-0.13.0-to-0.14.0.mssql.sql +++ b/metastore/scripts/upgrade/mssql/upgrade-0.13.0-to-0.14.0.mssql.sql @@ -2,6 +2,7 @@ SELECT 'Upgrading MetaStore schema from 0.13.0 to 0.14.0' AS MESSAGE; :r 002-HIVE-7784.mssql.sql; :r 003-HIVE-8239.mssql.sql; +:r 004-HIVE-8550.mssql.sql; UPDATE VERSION SET SCHEMA_VERSION='0.14.0', VERSION_COMMENT='Hive release version 0.14.0' where VER_ID=1; SELECT 'Finished upgrading MetaStore schema from 0.13.0 to 0.14.0' AS MESSAGE; From 7040893f729d95e4e2857247be18e74b6692884e Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Fri, 31 Oct 2014 08:12:44 +0000 Subject: [PATCH 218/339] HIVE-8392: HiveServer2 Operation.close fails on windows (Vaibhav Gumashta reviewed by Thejas Nair, Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635718 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hive/service/cli/operation/OperationLog.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/service/src/java/org/apache/hive/service/cli/operation/OperationLog.java b/service/src/java/org/apache/hive/service/cli/operation/OperationLog.java index d33bcf78a754..1c28745f8a1a 100644 --- a/service/src/java/org/apache/hive/service/cli/operation/OperationLog.java +++ b/service/src/java/org/apache/hive/service/cli/operation/OperationLog.java @@ -128,6 +128,12 @@ synchronized List read(FetchOrientation fetchOrientation, long maxRows) void remove() { try { + if (in != null) { + in.close(); + } + if (out != null) { + out.close(); + } FileUtils.forceDelete(file); isRemoved = true; } catch (Exception e) { From b14498a889f2bd07a2246a37766f156494e1c381 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Fri, 31 Oct 2014 15:44:57 +0000 Subject: [PATCH 219/339] HIVE-8663 : Fetching Vectorization scratch column map in Reduce-Side stop working (Matt McCline via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635800 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/exec/Utilities.java | 17 ++------ .../ql/exec/vector/VectorGroupByOperator.java | 5 +-- .../ql/exec/vector/VectorMapJoinOperator.java | 29 +++++--------- .../exec/vector/VectorSMBMapJoinOperator.java | 27 ++++++------- .../ql/exec/vector/VectorizedRowBatchCtx.java | 40 +++++-------------- 5 files changed, 38 insertions(+), 80 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 975e108d0a41..00a1397d30d1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -429,20 +429,9 @@ private static BaseWork getBaseWork(Configuration conf, String name) { } } - public static Map> getAllScratchColumnVectorTypeMaps(Configuration hiveConf) { - BaseWork baseWork = getMapWork(hiveConf); - if (baseWork == null) { - baseWork = getReduceWork(hiveConf); - } - return baseWork.getAllScratchColumnVectorTypeMaps(); - } - - public static Map> getAllColumnVectorMaps(Configuration hiveConf) { - BaseWork baseWork = getMapWork(hiveConf); - if (baseWork == null) { - baseWork = getReduceWork(hiveConf); - } - return baseWork.getAllColumnVectorMaps(); + public static Map> getMapWorkAllScratchColumnVectorTypeMaps(Configuration hiveConf) { + MapWork mapWork = getMapWork(hiveConf); + return mapWork.getAllScratchColumnVectorTypeMaps(); } public static void setWorkflowAdjacencies(Configuration conf, QueryPlan plan) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java index 856ff200d8b4..90b4b12a04cd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java @@ -76,8 +76,6 @@ public class VectorGroupByOperator extends GroupByOperator implements Vectorizat // Create a new outgoing vectorization context because column name map will change. private VectorizationContext vOutContext = null; - private String fileKey; - // The above members are initialized by the constructor and must not be // transient. //--------------------------------------------------------------------------- @@ -756,7 +754,6 @@ public VectorGroupByOperator(VectorizationContext vContext, OperatorDesc conf) vOutContext = new VectorizationContext(desc.getOutputColumnNames()); vOutContext.setFileKey(vContext.getFileKey() + "/_GROUPBY_"); - fileKey = vOutContext.getFileKey(); } public VectorGroupByOperator() { @@ -796,7 +793,7 @@ protected void initializeOp(Configuration hconf) throws HiveException { outputFieldNames, objectInspectors); if (isVectorOutput) { vrbCtx = new VectorizedRowBatchCtx(); - vrbCtx.init(hconf, fileKey, (StructObjectInspector) outputObjInspector); + vrbCtx.init(vOutContext.getScratchColumnTypeMap(), (StructObjectInspector) outputObjInspector); outputBatch = vrbCtx.createVectorizedRowBatch(); vectorColumnAssign = VectorColumnAssignFactory.buildAssigners( outputBatch, outputObjInspector, vOutContext.getProjectionColumnMap(), conf.getOutputColumnNames()); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java index 5fda5ddf9fb2..2c8aee1f0bfa 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java @@ -28,7 +28,6 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator; import org.apache.hadoop.hive.ql.exec.MapJoinOperator; -import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.exec.persistence.MapJoinTableContainer.ReusableGetAdaptor; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriter; @@ -53,19 +52,16 @@ public class VectorMapJoinOperator extends MapJoinOperator implements Vectorizat */ private static final long serialVersionUID = 1L; - /** - * Vectorizaiton context key - * Used to retrieve column map from the MapTask scratch - */ - private String fileKey; - private int tagLen; - private VectorExpression[] keyExpressions; - private transient VectorHashKeyWrapperBatch keyWrapperBatch; - private transient VectorExpressionWriter[] keyOutputWriters; private VectorExpression[] bigTableFilterExpressions; private VectorExpression[] bigTableValueExpressions; + + private VectorizationContext vOutContext; + + // The above members are initialized by the constructor and must not be + // transient. + //--------------------------------------------------------------------------- private transient VectorizedRowBatch outputBatch; private transient VectorExpressionWriter[] valueWriters; @@ -76,8 +72,9 @@ public class VectorMapJoinOperator extends MapJoinOperator implements Vectorizat // private transient int batchIndex; private transient VectorHashKeyWrapper[] keyValues; - - private transient VectorizationContext vOutContext = null; + private transient VectorHashKeyWrapperBatch keyWrapperBatch; + private transient VectorExpressionWriter[] keyOutputWriters; + private transient VectorizedRowBatchCtx vrbCtx = null; public VectorMapJoinOperator() { @@ -96,7 +93,6 @@ public VectorMapJoinOperator (VectorizationContext vContext, OperatorDesc conf) numAliases = desc.getExprs().size(); posBigTable = (byte) desc.getPosBigTable(); filterMaps = desc.getFilterMap(); - tagLen = desc.getTagLength(); noOuterJoin = desc.isNoOuterJoin(); Map> filterExpressions = desc.getFilters(); @@ -113,7 +109,6 @@ public VectorMapJoinOperator (VectorizationContext vContext, OperatorDesc conf) // We are making a new output vectorized row batch. vOutContext = new VectorizationContext(desc.getOutputColumnNames()); vOutContext.setFileKey(vContext.getFileKey() + "/MAP_JOIN_" + desc.getBigTableAlias()); - this.fileKey = vOutContext.getFileKey(); } @Override @@ -124,7 +119,7 @@ public void initializeOp(Configuration hconf) throws HiveException { keyOutputWriters = VectorExpressionWriterFactory.getExpressionWriters(keyDesc); vrbCtx = new VectorizedRowBatchCtx(); - vrbCtx.init(hconf, this.fileKey, (StructObjectInspector) this.outputObjInspector); + vrbCtx.init(vOutContext.getScratchColumnTypeMap(), (StructObjectInspector) this.outputObjInspector); outputBatch = vrbCtx.createVectorizedRowBatch(); @@ -193,10 +188,8 @@ protected void internalForward(Object row, ObjectInspector outputOI) throws Hive Object[] values = (Object[]) row; VectorColumnAssign[] vcas = outputVectorAssigners.get(outputOI); if (null == vcas) { - Map> allColumnMaps = Utilities.getAllColumnVectorMaps(hconf); - Map columnMap = allColumnMaps.get(fileKey); vcas = VectorColumnAssignFactory.buildAssigners( - outputBatch, outputOI, columnMap, conf.getOutputColumnNames()); + outputBatch, outputOI, vOutContext.getProjectionColumnMap(), conf.getOutputColumnNames()); outputVectorAssigners.put(outputOI, vcas); } for (int i=0; i outputVectorAssigners; @@ -98,7 +99,6 @@ public VectorSMBMapJoinOperator(VectorizationContext vContext, OperatorDesc conf numAliases = desc.getExprs().size(); posBigTable = (byte) desc.getPosBigTable(); filterMaps = desc.getFilterMap(); - tagLen = desc.getTagLength(); noOuterJoin = desc.isNoOuterJoin(); // Must obtain vectorized equivalents for filter and value expressions @@ -117,7 +117,6 @@ public VectorSMBMapJoinOperator(VectorizationContext vContext, OperatorDesc conf // We are making a new output vectorized row batch. vOutContext = new VectorizationContext(desc.getOutputColumnNames()); vOutContext.setFileKey(vContext.getFileKey() + "/SMB_JOIN_" + desc.getBigTableAlias()); - this.fileKey = vOutContext.getFileKey(); } @Override @@ -135,7 +134,7 @@ protected void initializeOp(Configuration hconf) throws HiveException { super.initializeOp(hconf); vrbCtx = new VectorizedRowBatchCtx(); - vrbCtx.init(hconf, this.fileKey, (StructObjectInspector) this.outputObjInspector); + vrbCtx.init(vOutContext.getScratchColumnTypeMap(), (StructObjectInspector) this.outputObjInspector); outputBatch = vrbCtx.createVectorizedRowBatch(); @@ -272,10 +271,8 @@ protected void internalForward(Object row, ObjectInspector outputOI) throws Hive Object[] values = (Object[]) row; VectorColumnAssign[] vcas = outputVectorAssigners.get(outputOI); if (null == vcas) { - Map> allColumnMaps = Utilities.getAllColumnVectorMaps(hconf); - Map columnMap = allColumnMaps.get(fileKey); vcas = VectorColumnAssignFactory.buildAssigners( - outputBatch, outputOI, columnMap, conf.getOutputColumnNames()); + outputBatch, outputOI, vOutContext.getProjectionColumnMap(), conf.getOutputColumnNames()); outputVectorAssigners.put(outputOI, vcas); } for (int i = 0; i < values.length; ++i) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java index 4f57aac88bcb..f3d6a27dd1f7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java @@ -96,7 +96,7 @@ public class VectorizedRowBatchCtx { // list does not contain partition columns private List colsToInclude; - private Map columnTypeMap = null; + private Map scratchColumnTypeMap = null; /** * Constructor for VectorizedRowBatchCtx @@ -126,36 +126,17 @@ public VectorizedRowBatchCtx(StructObjectInspector rawRowOI, StructObjectInspect public VectorizedRowBatchCtx() { } - - /** - * Initializes the VectorizedRowBatch context based on an arbitrary object inspector - * Used by non-tablescan operators when they change the vectorization context - * @param hiveConf - * @param fileKey - * The key on which to retrieve the extra column mapping from the map/reduce scratch - * @param rowOI - * Object inspector that shapes the column types - */ - public void init(Configuration hiveConf, String fileKey, - StructObjectInspector rowOI) { - Map> scratchColumnVectorTypes = - Utilities.getAllScratchColumnVectorTypeMaps(hiveConf); - columnTypeMap = scratchColumnVectorTypes.get(fileKey); - this.rowOI= rowOI; - this.rawRowOI = rowOI; - } - /** * Initializes the VectorizedRowBatch context based on an scratch column type map and * object inspector. - * @param columnTypeMap + * @param scratchColumnTypeMap * @param rowOI * Object inspector that shapes the column types */ - public void init(Map columnTypeMap, + public void init(Map scratchColumnTypeMap, StructObjectInspector rowOI) { - this.columnTypeMap = columnTypeMap; + this.scratchColumnTypeMap = scratchColumnTypeMap; this.rowOI= rowOI; this.rawRowOI = rowOI; } @@ -179,7 +160,8 @@ public void init(Configuration hiveConf, FileSplit split) throws ClassNotFoundEx IOException, SerDeException, InstantiationException, - IllegalAccessException, HiveException { + IllegalAccessException, + HiveException { Map pathToPartitionInfo = Utilities .getMapRedWork(hiveConf).getMapWork().getPathToPartitionInfo(); @@ -189,8 +171,8 @@ public void init(Configuration hiveConf, FileSplit split) throws ClassNotFoundEx split.getPath(), IOPrepareCache.get().getPartitionDescMap()); String partitionPath = split.getPath().getParent().toString(); - columnTypeMap = Utilities - .getAllScratchColumnVectorTypeMaps(hiveConf) + scratchColumnTypeMap = Utilities + .getMapWorkAllScratchColumnVectorTypeMaps(hiveConf) .get(partitionPath); Properties partProps = @@ -613,12 +595,12 @@ public final boolean isPartitionCol(int colnum) { } private void addScratchColumnsToBatch(VectorizedRowBatch vrb) throws HiveException { - if (columnTypeMap != null && !columnTypeMap.isEmpty()) { + if (scratchColumnTypeMap != null && !scratchColumnTypeMap.isEmpty()) { int origNumCols = vrb.numCols; - int newNumCols = vrb.cols.length+columnTypeMap.keySet().size(); + int newNumCols = vrb.cols.length+scratchColumnTypeMap.keySet().size(); vrb.cols = Arrays.copyOf(vrb.cols, newNumCols); for (int i = origNumCols; i < newNumCols; i++) { - String typeName = columnTypeMap.get(i); + String typeName = scratchColumnTypeMap.get(i); if (typeName == null) { throw new HiveException("No type found for column type entry " + i); } From c7ce1dc4a4bdcb017a0cb8355f027104c30454b5 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 31 Oct 2014 17:50:18 +0000 Subject: [PATCH 220/339] HIVE-8546: Handle 'add archive scripts.tar.gz' in Tez (Gopal V via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635827 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/tez/DagUtils.java | 33 +++++++++++-------- .../hive/ql/exec/tez/TezSessionState.java | 4 ++- .../hadoop/hive/ql/exec/tez/TezTask.java | 6 +++- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java index 0d3c29db204f..0e326cf87cc0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java @@ -795,11 +795,12 @@ public List localizeTempFilesFromConf( String hdfsDirPathStr, Configuration conf) throws IOException, LoginException { List tmpResources = new ArrayList(); - addTempFiles(conf, tmpResources, hdfsDirPathStr, getTempFilesFromConf(conf)); + addTempResources(conf, tmpResources, hdfsDirPathStr, LocalResourceType.FILE, getTempFilesFromConf(conf)); + addTempResources(conf, tmpResources, hdfsDirPathStr, LocalResourceType.ARCHIVE, getTempArchivesFromConf(conf)); return tmpResources; } - public static String[] getTempFilesFromConf(Configuration conf) { + private static String[] getTempFilesFromConf(Configuration conf) { String addedFiles = Utilities.getResourceFiles(conf, SessionState.ResourceType.FILE); if (StringUtils.isNotBlank(addedFiles)) { HiveConf.setVar(conf, ConfVars.HIVEADDEDFILES, addedFiles); @@ -808,19 +809,23 @@ public static String[] getTempFilesFromConf(Configuration conf) { if (StringUtils.isNotBlank(addedJars)) { HiveConf.setVar(conf, ConfVars.HIVEADDEDJARS, addedJars); } - String addedArchives = Utilities.getResourceFiles(conf, SessionState.ResourceType.ARCHIVE); - if (StringUtils.isNotBlank(addedArchives)) { - HiveConf.setVar(conf, ConfVars.HIVEADDEDARCHIVES, addedArchives); - } - String auxJars = HiveConf.getVar(conf, HiveConf.ConfVars.HIVEAUXJARS); // need to localize the additional jars and files // we need the directory on hdfs to which we shall put all these files - String allFiles = auxJars + "," + addedJars + "," + addedFiles + "," + addedArchives; + String allFiles = auxJars + "," + addedJars + "," + addedFiles; return allFiles.split(","); } + private static String[] getTempArchivesFromConf(Configuration conf) { + String addedArchives = Utilities.getResourceFiles(conf, SessionState.ResourceType.ARCHIVE); + if (StringUtils.isNotBlank(addedArchives)) { + HiveConf.setVar(conf, ConfVars.HIVEADDEDARCHIVES, addedArchives); + return addedArchives.split(","); + } + return new String[0]; + } + /** * Localizes files, archives and jars from a provided array of names. * @param hdfsDirPathStr Destination directory in HDFS. @@ -834,12 +839,13 @@ public List localizeTempFiles(String hdfsDirPathStr, Configuratio String[] inputOutputJars) throws IOException, LoginException { if (inputOutputJars == null) return null; List tmpResources = new ArrayList(); - addTempFiles(conf, tmpResources, hdfsDirPathStr, inputOutputJars); + addTempResources(conf, tmpResources, hdfsDirPathStr, LocalResourceType.FILE, inputOutputJars); return tmpResources; } - private void addTempFiles(Configuration conf, + private void addTempResources(Configuration conf, List tmpResources, String hdfsDirPathStr, + LocalResourceType type, String[] files) throws IOException { for (String file : files) { if (!StringUtils.isNotBlank(file)) { @@ -847,7 +853,7 @@ private void addTempFiles(Configuration conf, } Path hdfsFilePath = new Path(hdfsDirPathStr, getResourceBaseName(new Path(file))); LocalResource localResource = localizeResource(new Path(file), - hdfsFilePath, conf); + hdfsFilePath, type, conf); tmpResources.add(localResource); } } @@ -925,11 +931,12 @@ private boolean checkPreExisting(Path src, Path dest, Configuration conf) /** * @param src path to the source for the resource * @param dest path in hdfs for the resource + * @param type local resource type (File/Archive) * @param conf * @return localresource from tez localization. * @throws IOException when any file system related calls fails. */ - public LocalResource localizeResource(Path src, Path dest, Configuration conf) + public LocalResource localizeResource(Path src, Path dest, LocalResourceType type, Configuration conf) throws IOException { FileSystem destFS = dest.getFileSystem(conf); @@ -970,7 +977,7 @@ public LocalResource localizeResource(Path src, Path dest, Configuration conf) } } - return createLocalResource(destFS, dest, LocalResourceType.FILE, + return createLocalResource(destFS, dest, type, LocalResourceVisibility.PRIVATE); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java index 563fb49cb578..bb99357b83f6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java @@ -17,6 +17,7 @@ */ package org.apache.hadoop.hive.ql.exec.tez; + import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -47,6 +48,7 @@ import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.yarn.api.records.LocalResource; +import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.tez.client.TezClient; import org.apache.tez.dag.api.PreWarmVertex; import org.apache.tez.dag.api.SessionNotRunning; @@ -352,7 +354,7 @@ private LocalResource createJarLocalResource(String localJarPath) // TODO: if this method is ever called on more than one jar, getting the dir and the // list need to be refactored out to be done only once. Path destFile = new Path(destDirPath.toString() + "/" + destFileName); - return utils.localizeResource(localFile, destFile, conf); + return utils.localizeResource(localFile, destFile, LocalResourceType.FILE, conf); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java index 337f2f430350..e6bbe9a47529 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java @@ -50,6 +50,7 @@ import org.apache.hadoop.security.token.Token; import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.yarn.api.records.LocalResource; +import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.tez.common.counters.CounterGroup; import org.apache.tez.common.counters.TezCounter; import org.apache.tez.common.counters.TezCounters; @@ -360,7 +361,10 @@ DAGClient submit(JobConf conf, DAG dag, Path scratchDir, Map resourceMap = new HashMap(); if (additionalLr != null) { for (LocalResource lr: additionalLr) { - resourceMap.put(utils.getBaseName(lr), lr); + if (lr.getType() == LocalResourceType.FILE) { + // TEZ AM will only localize FILE (no script operators in the AM) + resourceMap.put(utils.getBaseName(lr), lr); + } } } From 71aa386ab3e4d22cb6dee1b472ee55120ceced7f Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 31 Oct 2014 18:06:19 +0000 Subject: [PATCH 221/339] HIVE-8668: mssql sql script has carriage returns (Brock Noland via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635831 13f79535-47bb-0310-9956-ffa450edef68 --- .../scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql b/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql index 933c9d59f655..944c13ff950f 100644 --- a/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql +++ b/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql @@ -1 +1 @@ --- Licensed to the Apache Software Foundation (ASF) under one or more -- contributor license agreements. See the NOTICE file distributed with -- this work for additional information regarding copyright ownership. -- The ASF licenses this file to You under the Apache License, Version 2.0 -- (the License); you may not use this file except in compliance with -- the License. You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an AS IS BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- -- Tables for transaction management -- CREATE TABLE COMPACTION_QUEUE( CQ_ID int NOT NULL, CQ_DATABASE varchar(128) NOT NULL, CQ_TABLE varchar(128) NOT NULL, CQ_PARTITION varchar(767) NULL, CQ_STATE char(1) NOT NULL, CQ_TYPE char(1) NOT NULL, CQ_WORKER_ID varchar(128) NULL, CQ_START int NULL, CQ_RUN_AS varchar(128) NULL, PRIMARY KEY CLUSTERED ( CQ_ID ASC ) ); CREATE TABLE COMPLETED_TXN_COMPONENTS( CTC_TXNID int NULL, CTC_DATABASE varchar(128) NOT NULL, CTC_TABLE varchar(128) NULL, CTC_PARTITION varchar(767) NULL ); CREATE TABLE HIVE_LOCKS( HL_LOCK_EXT_ID int NOT NULL, HL_LOCK_INT_ID int NOT NULL, HL_TXNID int NULL, HL_DB varchar(128) NOT NULL, HL_TABLE varchar(128) NULL, HL_PARTITION varchar(767) NULL, HL_LOCK_STATE char(1) NOT NULL, HL_LOCK_TYPE char(1) NOT NULL, HL_LAST_HEARTBEAT int NOT NULL, HL_ACQUIRED_AT int NULL, HL_USER varchar(128) NOT NULL, HL_HOST varchar(128) NOT NULL, PRIMARY KEY CLUSTERED ( HL_LOCK_EXT_ID ASC, HL_LOCK_INT_ID ASC ) ); CREATE TABLE NEXT_COMPACTION_QUEUE_ID( NCQ_NEXT int NOT NULL ); INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); CREATE TABLE NEXT_LOCK_ID( NL_NEXT int NOT NULL ); INSERT INTO NEXT_LOCK_ID VALUES(1); CREATE TABLE NEXT_TXN_ID( NTXN_NEXT int NOT NULL ); INSERT INTO NEXT_TXN_ID VALUES(1); CREATE TABLE TXNS( TXN_ID int NOT NULL, TXN_STATE char(1) NOT NULL, TXN_STARTED int NOT NULL, TXN_LAST_HEARTBEAT int NOT NULL, TXN_USER varchar(128) NOT NULL, TXN_HOST varchar(128) NOT NULL, PRIMARY KEY CLUSTERED ( TXN_ID ASC ) ); CREATE TABLE TXN_COMPONENTS( TC_TXNID int NULL, TC_DATABASE varchar(128) NOT NULL, TC_TABLE varchar(128) NULL, TC_PARTITION varchar(767) NULL ); ALTER TABLE TXN_COMPONENTS WITH CHECK ADD FOREIGN KEY(TC_TXNID) REFERENCES TXNS (TXN_ID); \ No newline at end of file +-- Licensed to the Apache Software Foundation (ASF) under one or more -- contributor license agreements. See the NOTICE file distributed with -- this work for additional information regarding copyright ownership. -- The ASF licenses this file to You under the Apache License, Version 2.0 -- (the License); you may not use this file except in compliance with -- the License. You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an AS IS BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- -- Tables for transaction management -- CREATE TABLE COMPACTION_QUEUE( CQ_ID int NOT NULL, CQ_DATABASE varchar(128) NOT NULL, CQ_TABLE varchar(128) NOT NULL, CQ_PARTITION varchar(767) NULL, CQ_STATE char(1) NOT NULL, CQ_TYPE char(1) NOT NULL, CQ_WORKER_ID varchar(128) NULL, CQ_START int NULL, CQ_RUN_AS varchar(128) NULL, PRIMARY KEY CLUSTERED ( CQ_ID ASC ) ); CREATE TABLE COMPLETED_TXN_COMPONENTS( CTC_TXNID int NULL, CTC_DATABASE varchar(128) NOT NULL, CTC_TABLE varchar(128) NULL, CTC_PARTITION varchar(767) NULL ); CREATE TABLE HIVE_LOCKS( HL_LOCK_EXT_ID int NOT NULL, HL_LOCK_INT_ID int NOT NULL, HL_TXNID int NULL, HL_DB varchar(128) NOT NULL, HL_TABLE varchar(128) NULL, HL_PARTITION varchar(767) NULL, HL_LOCK_STATE char(1) NOT NULL, HL_LOCK_TYPE char(1) NOT NULL, HL_LAST_HEARTBEAT int NOT NULL, HL_ACQUIRED_AT int NULL, HL_USER varchar(128) NOT NULL, HL_HOST varchar(128) NOT NULL, PRIMARY KEY CLUSTERED ( HL_LOCK_EXT_ID ASC, HL_LOCK_INT_ID ASC ) ); CREATE TABLE NEXT_COMPACTION_QUEUE_ID( NCQ_NEXT int NOT NULL ); INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); CREATE TABLE NEXT_LOCK_ID( NL_NEXT int NOT NULL ); INSERT INTO NEXT_LOCK_ID VALUES(1); CREATE TABLE NEXT_TXN_ID( NTXN_NEXT int NOT NULL ); INSERT INTO NEXT_TXN_ID VALUES(1); CREATE TABLE TXNS( TXN_ID int NOT NULL, TXN_STATE char(1) NOT NULL, TXN_STARTED int NOT NULL, TXN_LAST_HEARTBEAT int NOT NULL, TXN_USER varchar(128) NOT NULL, TXN_HOST varchar(128) NOT NULL, PRIMARY KEY CLUSTERED ( TXN_ID ASC ) ); CREATE TABLE TXN_COMPONENTS( TC_TXNID int NULL, TC_DATABASE varchar(128) NOT NULL, TC_TABLE varchar(128) NULL, TC_PARTITION varchar(767) NULL ); ALTER TABLE TXN_COMPONENTS WITH CHECK ADD FOREIGN KEY(TC_TXNID) REFERENCES TXNS (TXN_ID); \ No newline at end of file From 5b6ca518accf0305053e3302d92ee87e1c8f8fde Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 31 Oct 2014 18:26:09 +0000 Subject: [PATCH 222/339] HIVE-8646: Hive class loading failure when executing Hive action via oozie workflows (Navis via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635835 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/exec/ExplainSQRewriteTask.java | 1 - ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java | 1 - ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java | 4 ---- .../hive/ql/parse/ExplainSQRewriteSemanticAnalyzer.java | 3 ++- .../apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java | 2 +- 5 files changed, 3 insertions(+), 8 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainSQRewriteTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainSQRewriteTask.java index ea3ac708d2ba..6fffab0751a3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainSQRewriteTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainSQRewriteTask.java @@ -192,7 +192,6 @@ public String getName() { return "EXPLAIN REWRITE"; } - @Override public List getResultSchema() { FieldSchema tmpFieldSchema = new FieldSchema(); List colList = new ArrayList(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java index e238ff1a1c28..8e1ba4849caa 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java @@ -924,7 +924,6 @@ public String getName() { return "EXPLAIN"; } - @Override public List getResultSchema() { FieldSchema tmpFieldSchema = new FieldSchema(); List colList = new ArrayList(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java index d7418dbcb7bc..2a55527de7d0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java @@ -30,7 +30,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; -import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.DriverContext; import org.apache.hadoop.hive.ql.QueryPlan; import org.apache.hadoop.hive.ql.lib.Node; @@ -518,9 +517,6 @@ public String getJobID() { public void shutdown() { } - public List getResultSchema() { - return null; - } Throwable getException() { return exception; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSQRewriteSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSQRewriteSemanticAnalyzer.java index b26a4da8e38e..2c2339a1fbee 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSQRewriteSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSQRewriteSemanticAnalyzer.java @@ -22,6 +22,7 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.FieldSchema; +import org.apache.hadoop.hive.ql.exec.ExplainSQRewriteTask; import org.apache.hadoop.hive.ql.exec.Task; import org.apache.hadoop.hive.ql.exec.TaskFactory; import org.apache.hadoop.hive.ql.plan.ExplainSQRewriteWork; @@ -55,7 +56,7 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { ctx ); - Task explTask = TaskFactory.get(work, conf); + ExplainSQRewriteTask explTask = (ExplainSQRewriteTask) TaskFactory.get(work, conf); fieldList = explTask.getResultSchema(); rootTasks.add(explTask); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java index 83705d496cfe..38b6d9689484 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java @@ -106,7 +106,7 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { work.setAppendTaskType( HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVEEXPLAINDEPENDENCYAPPENDTASKTYPES)); - Task explTask = TaskFactory.get(work, conf); + ExplainTask explTask = (ExplainTask) TaskFactory.get(work, conf); fieldList = explTask.getResultSchema(); rootTasks.add(explTask); From a43354c53c3e788cbff163640f99fa90429a772e Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 31 Oct 2014 19:28:51 +0000 Subject: [PATCH 223/339] HIVE-8677: TPC-DS Q51 : fails with 'init not supported' exception in GenericUDAFStreamingEvaluator.init (Gunther Hagleitner, reviewed by Harish Butani) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635845 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/udf/generic/GenericUDAFStreamingEvaluator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStreamingEvaluator.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStreamingEvaluator.java index 0f5a11b0d988..d68c085303b4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStreamingEvaluator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStreamingEvaluator.java @@ -67,7 +67,7 @@ protected void reset() { @Override public ObjectInspector init(Mode m, ObjectInspector[] parameters) throws HiveException { - throw new HiveException(getClass().getSimpleName() + ": init not supported"); + return wrappedEval.init(m, parameters); } @Override From e29786902667c4e50f668252d6ce810ee69537ed Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 31 Oct 2014 20:15:35 +0000 Subject: [PATCH 224/339] HIVE-8498: Insert into table misses some rows when vectorization is enabled (Jitendra Nath Pandey, reviewed by Matt McCline, Gopal V and Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635853 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/vector/VectorFilterOperator.java | 18 +- .../exec/vector/TestVectorFilterOperator.java | 2 +- .../clientpositive/vector_multi_insert.q | 34 ++ .../clientpositive/vector_multi_insert.q.out | 350 ++++++++++++++++++ 4 files changed, 402 insertions(+), 2 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/vector_multi_insert.q create mode 100644 ql/src/test/results/clientpositive/vector_multi_insert.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java index e0f954643963..e464b962a799 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java @@ -38,6 +38,9 @@ public class VectorFilterOperator extends FilterOperator { private VectorExpression conditionEvaluator = null; + // Temporary selected vector + private int[] temporarySelected = new int [VectorizedRowBatch.DEFAULT_SIZE]; + // filterMode is 1 if condition is always true, -1 if always false // and 0 if condition needs to be computed. transient private int filterMode = 0; @@ -82,8 +85,16 @@ public void setFilterCondition(VectorExpression expr) { public void processOp(Object row, int tag) throws HiveException { VectorizedRowBatch vrg = (VectorizedRowBatch) row; - //Evaluate the predicate expression + //The selected vector represents selected rows. + //Clone the selected vector + System.arraycopy(vrg.selected, 0, temporarySelected, 0, vrg.size); + int [] selectedBackup = vrg.selected; + vrg.selected = temporarySelected; + int sizeBackup = vrg.size; + boolean selectedInUseBackup = vrg.selectedInUse; + + //Evaluate the predicate expression switch (filterMode) { case 0: conditionEvaluator.evaluate(vrg); @@ -99,6 +110,11 @@ public void processOp(Object row, int tag) throws HiveException { if (vrg.size > 0) { forward(vrg, null); } + + // Restore the original selected vector + vrg.selected = selectedBackup; + vrg.size = sizeBackup; + vrg.selectedInUse = selectedInUseBackup; } static public String getOperatorName() { diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorFilterOperator.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorFilterOperator.java index 27c1a849781b..ac3cb8129924 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorFilterOperator.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorFilterOperator.java @@ -106,7 +106,7 @@ public void testBasicFilterOperator() throws HiveException { VectorizedRowBatch vrg = fdr.getNext(); - vfo.processOp(vrg, 0); + vfo.getConditionEvaluator().evaluate(vrg); //Verify int rows = 0; diff --git a/ql/src/test/queries/clientpositive/vector_multi_insert.q b/ql/src/test/queries/clientpositive/vector_multi_insert.q new file mode 100644 index 000000000000..77404e9d21a9 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_multi_insert.q @@ -0,0 +1,34 @@ +SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +create table orc1 + stored as orc + tblproperties("orc.compress"="ZLIB") + as + select rn + from + ( + select cast(1 as int) as rn from src limit 1 + union all + select cast(100 as int) as rn from src limit 1 + union all + select cast(10000 as int) as rn from src limit 1 + ) t; + +create table orc_rn1 (rn int); +create table orc_rn2 (rn int); +create table orc_rn3 (rn int); + +explain from orc1 a +insert overwrite table orc_rn1 select a.* where a.rn < 100 +insert overwrite table orc_rn2 select a.* where a.rn >= 100 and a.rn < 1000 +insert overwrite table orc_rn3 select a.* where a.rn >= 1000; + +from orc1 a +insert overwrite table orc_rn1 select a.* where a.rn < 100 +insert overwrite table orc_rn2 select a.* where a.rn >= 100 and a.rn < 1000 +insert overwrite table orc_rn3 select a.* where a.rn >= 1000; + +select * from orc_rn1; +select * from orc_rn2; +select * from orc_rn3; diff --git a/ql/src/test/results/clientpositive/vector_multi_insert.q.out b/ql/src/test/results/clientpositive/vector_multi_insert.q.out new file mode 100644 index 000000000000..36ae859247c7 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_multi_insert.q.out @@ -0,0 +1,350 @@ +PREHOOK: query: create table orc1 + stored as orc + tblproperties("orc.compress"="ZLIB") + as + select rn + from + ( + select cast(1 as int) as rn from src limit 1 + union all + select cast(100 as int) as rn from src limit 1 + union all + select cast(10000 as int) as rn from src limit 1 + ) t +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@src +PREHOOK: Output: database:default +PREHOOK: Output: default@orc1 +POSTHOOK: query: create table orc1 + stored as orc + tblproperties("orc.compress"="ZLIB") + as + select rn + from + ( + select cast(1 as int) as rn from src limit 1 + union all + select cast(100 as int) as rn from src limit 1 + union all + select cast(10000 as int) as rn from src limit 1 + ) t +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@src +POSTHOOK: Output: database:default +POSTHOOK: Output: default@orc1 +PREHOOK: query: create table orc_rn1 (rn int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@orc_rn1 +POSTHOOK: query: create table orc_rn1 (rn int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@orc_rn1 +PREHOOK: query: create table orc_rn2 (rn int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@orc_rn2 +POSTHOOK: query: create table orc_rn2 (rn int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@orc_rn2 +PREHOOK: query: create table orc_rn3 (rn int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@orc_rn3 +POSTHOOK: query: create table orc_rn3 (rn int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@orc_rn3 +PREHOOK: query: explain from orc1 a +insert overwrite table orc_rn1 select a.* where a.rn < 100 +insert overwrite table orc_rn2 select a.* where a.rn >= 100 and a.rn < 1000 +insert overwrite table orc_rn3 select a.* where a.rn >= 1000 +PREHOOK: type: QUERY +POSTHOOK: query: explain from orc1 a +insert overwrite table orc_rn1 select a.* where a.rn < 100 +insert overwrite table orc_rn2 select a.* where a.rn >= 100 and a.rn < 1000 +insert overwrite table orc_rn3 select a.* where a.rn >= 1000 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-3 is a root stage + Stage-9 depends on stages: Stage-3 , consists of Stage-6, Stage-5, Stage-7 + Stage-6 + Stage-0 depends on stages: Stage-6, Stage-5, Stage-8 + Stage-4 depends on stages: Stage-0 + Stage-5 + Stage-7 + Stage-8 depends on stages: Stage-7 + Stage-15 depends on stages: Stage-3 , consists of Stage-12, Stage-11, Stage-13 + Stage-12 + Stage-1 depends on stages: Stage-12, Stage-11, Stage-14 + Stage-10 depends on stages: Stage-1 + Stage-11 + Stage-13 + Stage-14 depends on stages: Stage-13 + Stage-21 depends on stages: Stage-3 , consists of Stage-18, Stage-17, Stage-19 + Stage-18 + Stage-2 depends on stages: Stage-18, Stage-17, Stage-20 + Stage-16 depends on stages: Stage-2 + Stage-17 + Stage-19 + Stage-20 depends on stages: Stage-19 + +STAGE PLANS: + Stage: Stage-3 + Map Reduce + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (rn < 100) (type: boolean) + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: rn (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn1 + Filter Operator + predicate: ((rn >= 100) and (rn < 1000)) (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: rn (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn2 + Filter Operator + predicate: (rn >= 1000) (type: boolean) + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: rn (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn3 + Execution mode: vectorized + + Stage: Stage-9 + Conditional Operator + + Stage: Stage-6 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-0 + Move Operator + tables: + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn1 + + Stage: Stage-4 + Stats-Aggr Operator + + Stage: Stage-5 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn1 + + Stage: Stage-7 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn1 + + Stage: Stage-8 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-15 + Conditional Operator + + Stage: Stage-12 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-1 + Move Operator + tables: + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn2 + + Stage: Stage-10 + Stats-Aggr Operator + + Stage: Stage-11 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn2 + + Stage: Stage-13 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn2 + + Stage: Stage-14 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-21 + Conditional Operator + + Stage: Stage-18 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-2 + Move Operator + tables: + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn3 + + Stage: Stage-16 + Stats-Aggr Operator + + Stage: Stage-17 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn3 + + Stage: Stage-19 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.orc_rn3 + + Stage: Stage-20 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + +PREHOOK: query: from orc1 a +insert overwrite table orc_rn1 select a.* where a.rn < 100 +insert overwrite table orc_rn2 select a.* where a.rn >= 100 and a.rn < 1000 +insert overwrite table orc_rn3 select a.* where a.rn >= 1000 +PREHOOK: type: QUERY +PREHOOK: Input: default@orc1 +PREHOOK: Output: default@orc_rn1 +PREHOOK: Output: default@orc_rn2 +PREHOOK: Output: default@orc_rn3 +POSTHOOK: query: from orc1 a +insert overwrite table orc_rn1 select a.* where a.rn < 100 +insert overwrite table orc_rn2 select a.* where a.rn >= 100 and a.rn < 1000 +insert overwrite table orc_rn3 select a.* where a.rn >= 1000 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc1 +POSTHOOK: Output: default@orc_rn1 +POSTHOOK: Output: default@orc_rn2 +POSTHOOK: Output: default@orc_rn3 +POSTHOOK: Lineage: orc_rn1.rn SIMPLE [(orc1)a.FieldSchema(name:rn, type:int, comment:null), ] +POSTHOOK: Lineage: orc_rn2.rn SIMPLE [(orc1)a.FieldSchema(name:rn, type:int, comment:null), ] +POSTHOOK: Lineage: orc_rn3.rn SIMPLE [(orc1)a.FieldSchema(name:rn, type:int, comment:null), ] +PREHOOK: query: select * from orc_rn1 +PREHOOK: type: QUERY +PREHOOK: Input: default@orc_rn1 +#### A masked pattern was here #### +POSTHOOK: query: select * from orc_rn1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_rn1 +#### A masked pattern was here #### +1 +PREHOOK: query: select * from orc_rn2 +PREHOOK: type: QUERY +PREHOOK: Input: default@orc_rn2 +#### A masked pattern was here #### +POSTHOOK: query: select * from orc_rn2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_rn2 +#### A masked pattern was here #### +100 +PREHOOK: query: select * from orc_rn3 +PREHOOK: type: QUERY +PREHOOK: Input: default@orc_rn3 +#### A masked pattern was here #### +POSTHOOK: query: select * from orc_rn3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@orc_rn3 +#### A masked pattern was here #### +10000 From 73829714ee9a2376fe0b96defc025541ff9ddf18 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Fri, 31 Oct 2014 23:37:59 +0000 Subject: [PATCH 225/339] HIVE-8665: Fix misc unit tests on Windows (Jason Dere, reviewd by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635884 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/conf/TestHiveLogging.java | 33 +++++++++++-------- .../resources/hive-exec-log4j-test.properties | 2 +- .../test/resources/hive-log4j-test.properties | 2 +- .../hive/hcatalog/cli/TestUseDatabase.java | 2 +- .../hcatalog/pig/TestHCatLoaderStorer.java | 2 +- hcatalog/webhcat/java-client/pom.xml | 7 ++++ .../hive/hcatalog/api/TestHCatClient.java | 7 +++- .../TestPasswordWithCredentialProvider.java | 2 +- .../hive/ql/txn/compactor/TestCompactor.java | 2 +- .../org/apache/hive/jdbc/TestJdbcDriver2.java | 1 + .../serde2/avro/TestTypeInfoToSchema.java | 5 +-- 11 files changed, 43 insertions(+), 22 deletions(-) diff --git a/common/src/test/org/apache/hadoop/hive/conf/TestHiveLogging.java b/common/src/test/org/apache/hadoop/hive/conf/TestHiveLogging.java index 80f3a1227ea5..d5cedb17b24a 100644 --- a/common/src/test/org/apache/hadoop/hive/conf/TestHiveLogging.java +++ b/common/src/test/org/apache/hadoop/hive/conf/TestHiveLogging.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.conf; import java.io.BufferedReader; +import java.io.File; import java.io.InputStreamReader; import junit.framework.TestCase; @@ -75,31 +76,37 @@ private void getCmdOutput(String logFile) throws Exception { assertEquals(true, logCreated); } - private void RunTest(String cleanCmd, String findCmd, String logFile, + public void cleanLog(File logFile) { + if (logFile.exists()) { + logFile.delete(); + } + File logFileDir = logFile.getParentFile(); + if (logFileDir.exists()) { + logFileDir.delete(); + } + } + + private void RunTest(File logFile, String hiveLog4jProperty, String hiveExecLog4jProperty) throws Exception { // clean test space - runCmd(cleanCmd); + cleanLog(logFile); + assertFalse(logFile + " should not exist", logFile.exists()); // config log4j with customized files // check whether HiveConf initialize log4j correctly configLog(hiveLog4jProperty, hiveExecLog4jProperty); // check whether log file is created on test running - runCmd(findCmd); - getCmdOutput(logFile); - - // clean test space - runCmd(cleanCmd); + assertTrue(logFile + " should exist", logFile.exists()); } public void testHiveLogging() throws Exception { - // customized log4j config log file to be: /tmp/TestHiveLogging/hiveLog4jTest.log - String customLogPath = "/tmp/" + System.getProperty("user.name") + "-TestHiveLogging/"; + // customized log4j config log file to be: /${test.tmp.dir}/TestHiveLogging/hiveLog4jTest.log + File customLogPath = new File(new File(System.getProperty("test.tmp.dir")), + System.getProperty("user.name") + "-TestHiveLogging/"); String customLogName = "hiveLog4jTest.log"; - String customLogFile = customLogPath + customLogName; - String customCleanCmd = "rm -rf " + customLogFile; - String customFindCmd = "find " + customLogPath + " -name " + customLogName; - RunTest(customCleanCmd, customFindCmd, customLogFile, + File customLogFile = new File(customLogPath, customLogName); + RunTest(customLogFile, "hive-log4j-test.properties", "hive-exec-log4j-test.properties"); } } diff --git a/common/src/test/resources/hive-exec-log4j-test.properties b/common/src/test/resources/hive-exec-log4j-test.properties index 839a9cac40c2..1e53f265f4a1 100644 --- a/common/src/test/resources/hive-exec-log4j-test.properties +++ b/common/src/test/resources/hive-exec-log4j-test.properties @@ -1,6 +1,6 @@ # Define some default values that can be overridden by system properties hive.root.logger=INFO,FA -hive.log.dir=/tmp/${user.name}-TestHiveLogging +hive.log.dir=/${test.tmp.dir}/${user.name}-TestHiveLogging hive.log.file=hiveExecLog4jTest.log # Define the root logger to the system property "hadoop.root.logger". diff --git a/common/src/test/resources/hive-log4j-test.properties b/common/src/test/resources/hive-log4j-test.properties index 51acda295952..03483254667c 100644 --- a/common/src/test/resources/hive-log4j-test.properties +++ b/common/src/test/resources/hive-log4j-test.properties @@ -1,6 +1,6 @@ # Define some default values that can be overridden by system properties hive.root.logger=WARN,DRFA -hive.log.dir=/tmp/${user.name}-TestHiveLogging +hive.log.dir=${test.tmp.dir}/${user.name}-TestHiveLogging hive.log.file=hiveLog4jTest.log # Define the root logger to the system property "hadoop.root.logger". diff --git a/hcatalog/core/src/test/java/org/apache/hive/hcatalog/cli/TestUseDatabase.java b/hcatalog/core/src/test/java/org/apache/hive/hcatalog/cli/TestUseDatabase.java index 886862341426..1606982574a7 100644 --- a/hcatalog/core/src/test/java/org/apache/hive/hcatalog/cli/TestUseDatabase.java +++ b/hcatalog/core/src/test/java/org/apache/hive/hcatalog/cli/TestUseDatabase.java @@ -64,7 +64,7 @@ public void testAlterTablePass() throws IOException, CommandNeedRetryException { String tmpDir = System.getProperty("test.tmp.dir"); File dir = new File(tmpDir + "/hive-junit-" + System.nanoTime()); - response = hcatDriver.run("alter table " + tblName + " add partition (b='2') location '" + dir.getAbsolutePath() + "'"); + response = hcatDriver.run("alter table " + tblName + " add partition (b='2') location '" + dir.toURI().getPath() + "'"); assertEquals(0, response.getResponseCode()); assertNull(response.getErrorMessage()); diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderStorer.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderStorer.java index 716258458fc2..dfde522c5a22 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderStorer.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderStorer.java @@ -64,7 +64,7 @@ public void testReadWrite() throws Exception { TestHCatLoader.executeStatementOnDriver("create external table " + tblName + " (my_small_int smallint, my_tiny_int tinyint)" + " row format delimited fields terminated by '\t' stored as textfile location '" + - dataDir + "'", driver); + dataDir.toURI().getPath() + "'", driver); TestHCatLoader.dropTable(tblName2, driver); TestHCatLoader.createTable(tblName2, "my_small_int smallint, my_tiny_int tinyint", null, driver, "textfile"); diff --git a/hcatalog/webhcat/java-client/pom.xml b/hcatalog/webhcat/java-client/pom.xml index 0511cad4bdf5..98233c6cadca 100644 --- a/hcatalog/webhcat/java-client/pom.xml +++ b/hcatalog/webhcat/java-client/pom.xml @@ -46,6 +46,13 @@ ${project.version} + + org.apache.hive + hive-exec + ${project.version} + test-jar + test + org.apache.hive.hcatalog hive-hcatalog-core diff --git a/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java b/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java index 5ed66eda6069..ac816605e9d5 100644 --- a/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java +++ b/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java @@ -31,6 +31,7 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.HiveMetaStore; import org.apache.hadoop.hive.metastore.api.PartitionEventType; +import org.apache.hadoop.hive.ql.WindowsPathUtil; import org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat; import org.apache.hadoop.hive.ql.io.RCFileInputFormat; import org.apache.hadoop.hive.ql.io.RCFileOutputFormat; @@ -107,13 +108,17 @@ public static void tearDown() throws Exception { @BeforeClass public static void startMetaStoreServer() throws Exception { + hcatConf = new HiveConf(TestHCatClient.class); + if (Shell.WINDOWS) { + WindowsPathUtil.convertPathsFromWindowsToHdfs(hcatConf); + } + Thread t = new Thread(new RunMS(msPort)); t.start(); Thread.sleep(10000); securityManager = System.getSecurityManager(); System.setSecurityManager(new NoExitSecurityManager()); - hcatConf = new HiveConf(TestHCatClient.class); hcatConf.setVar(HiveConf.ConfVars.METASTOREURIS, "thrift://localhost:" + msPort); hcatConf.setIntVar(HiveConf.ConfVars.METASTORETHRIFTCONNECTIONRETRIES, 3); diff --git a/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/ql/security/TestPasswordWithCredentialProvider.java b/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/ql/security/TestPasswordWithCredentialProvider.java index f9b698eb8b52..98e0fe85614d 100644 --- a/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/ql/security/TestPasswordWithCredentialProvider.java +++ b/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/ql/security/TestPasswordWithCredentialProvider.java @@ -81,7 +81,7 @@ public void testPassword() throws Exception { conf.set("hadoop.security.credential.clear-text-fallback", "true"); // Set up CredentialProvider - conf.set("hadoop.security.credential.provider.path", "jceks://file/" + tmpDir + "/test.jks"); + conf.set("hadoop.security.credential.provider.path", "jceks://file/" + tmpDir.toURI().getPath() + "/test.jks"); // CredentialProvider/CredentialProviderFactory may not exist, depending on the version of // hadoop-2 being used to build Hive. Use reflection to do the following lines diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java index 95f1c3974b7e..303e3064ce73 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java @@ -140,7 +140,7 @@ public void testStatsAfterCompactionPartTbl() throws Exception { executeStatementOnDriver("CREATE EXTERNAL TABLE " + tblNameStg + "(a INT, b STRING)" + " ROW FORMAT DELIMITED FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n'" + " STORED AS TEXTFILE" + - " LOCATION '" + stagingFolder.newFolder() + "'", driver); + " LOCATION '" + stagingFolder.newFolder().toURI().getPath() + "'", driver); executeStatementOnDriver("load data local inpath '" + BASIC_FILE_NAME + "' overwrite into table " + tblNameStg, driver); diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java index 5c0484fe2ce7..560ee4268614 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java @@ -1724,6 +1724,7 @@ public void testDuplicateColumnNameOrder() throws SQLException { ResultSet rs = stmt.executeQuery("SELECT 1 AS a, 2 AS a from " + tableName); assertTrue(rs.next()); assertEquals(1, rs.getInt("a")); + rs.close(); } diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/avro/TestTypeInfoToSchema.java b/serde/src/test/org/apache/hadoop/hive/serde2/avro/TestTypeInfoToSchema.java index da58125a60c4..dd1766f10881 100644 --- a/serde/src/test/org/apache/hadoop/hive/serde2/avro/TestTypeInfoToSchema.java +++ b/serde/src/test/org/apache/hadoop/hive/serde2/avro/TestTypeInfoToSchema.java @@ -66,6 +66,7 @@ public class TestTypeInfoToSchema { private TypeInfoToSchema typeInfoToSchema; + private final String lineSeparator = System.getProperty("line.separator"); private String getAvroSchemaString(TypeInfo columnType) { return typeInfoToSchema.convert( @@ -356,7 +357,7 @@ public void createAvroStructSchema() throws IOException { LOGGER.info("structTypeInfo is " + structTypeInfo); final String specificSchema = IOUtils.toString(Resources.getResource("avro-struct.avsc") - .openStream()).replace("\n", ""); + .openStream()).replace(lineSeparator, ""); String expectedSchema = genSchema( specificSchema); @@ -387,7 +388,7 @@ public void createAvroNestedStructSchema() throws IOException { superStructTypeInfo.setAllStructFieldTypeInfos(superTypeInfos); final String specificSchema = IOUtils.toString(Resources.getResource("avro-nested-struct.avsc") - .openStream()).replace("\n", ""); + .openStream()).replace(lineSeparator, ""); String expectedSchema = genSchema( specificSchema); Assert.assertEquals("Test for nested struct's avro schema failed", From c3e4c2b8ae2f5f80485e7d777279b2c0d3af4583 Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Sat, 1 Nov 2014 03:12:27 +0000 Subject: [PATCH 226/339] HIVE-8632: VectorKeyHashWrapper::duplicateTo allocates too many zero sized arrays (Gopal V, reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1635890 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/vector/VectorHashKeyWrapper.java | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java index 1c366df4a036..f32b8beabb3a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java @@ -161,27 +161,36 @@ protected Object clone() { } public void duplicateTo(VectorHashKeyWrapper clone) { - clone.longValues = longValues.clone(); - clone.doubleValues = doubleValues.clone(); + clone.longValues = (longValues.length > 0) ? longValues.clone() : EMPTY_LONG_ARRAY; + clone.doubleValues = (doubleValues.length > 0) ? doubleValues.clone() : EMPTY_DOUBLE_ARRAY; clone.isNull = isNull.clone(); - // Decimal128 requires deep clone - clone.decimalValues = new Decimal128[decimalValues.length]; - for(int i = 0; i < decimalValues.length; ++i) { - clone.decimalValues[i] = new Decimal128().update(decimalValues[i]); + if (decimalValues.length > 0) { + // Decimal128 requires deep clone + clone.decimalValues = new Decimal128[decimalValues.length]; + for (int i = 0; i < decimalValues.length; ++i) { + clone.decimalValues[i] = new Decimal128().update(decimalValues[i]); + } + } else { + clone.decimalValues = EMPTY_DECIMAL_ARRAY; } - clone.byteValues = new byte[byteValues.length][]; - clone.byteStarts = new int[byteValues.length]; - clone.byteLengths = byteLengths.clone(); - for (int i = 0; i < byteValues.length; ++i) { - // avoid allocation/copy of nulls, because it potentially expensive. branch instead. - if (!isNull[longValues.length + doubleValues.length + i]) { - clone.byteValues[i] = Arrays.copyOfRange( - byteValues[i], - byteStarts[i], - byteStarts[i] + byteLengths[i]); + if (byteLengths.length > 0) { + clone.byteValues = new byte[byteValues.length][]; + clone.byteStarts = new int[byteValues.length]; + clone.byteLengths = byteLengths.clone(); + for (int i = 0; i < byteValues.length; ++i) { + // avoid allocation/copy of nulls, because it potentially expensive. + // branch instead. + if (!isNull[longValues.length + doubleValues.length + i]) { + clone.byteValues[i] = Arrays.copyOfRange(byteValues[i], + byteStarts[i], byteStarts[i] + byteLengths[i]); + } } + } else { + clone.byteValues = EMPTY_BYTES_ARRAY; + clone.byteStarts = EMPTY_INT_ARRAY; + clone.byteLengths = EMPTY_INT_ARRAY; } clone.hashcode = hashcode; assert clone.equals(this); From c3e7660502851145ea97d013896fd82dc7d2a1d4 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Sat, 1 Nov 2014 19:31:22 +0000 Subject: [PATCH 227/339] HIVE-8671: Overflow in estimate row count and data size with fetch column stats (Prasanth J reviewed by Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636020 13f79535-47bb-0310-9956-ffa450edef68 --- .../annotation/StatsRulesProcFactory.java | 81 +++++++--------- .../hadoop/hive/ql/stats/StatsUtils.java | 87 +++++++++--------- .../annotate_stats_groupby.q.out | 14 +-- .../results/clientpositive/tez/union5.q.out | 6 +- .../results/clientpositive/tez/union7.q.out | 6 +- .../results/clientpositive/udf_explode.q.out | Bin 28537 -> 28531 bytes .../results/clientpositive/udtf_explode.q.out | Bin 30441 -> 30435 bytes .../test/results/clientpositive/union11.q.out | 6 +- .../test/results/clientpositive/union14.q.out | 6 +- .../test/results/clientpositive/union15.q.out | 6 +- .../test/results/clientpositive/union17.q.out | 20 ++-- .../test/results/clientpositive/union19.q.out | 6 +- .../test/results/clientpositive/union21.q.out | 6 +- .../test/results/clientpositive/union5.q.out | 6 +- .../test/results/clientpositive/union7.q.out | 6 +- 15 files changed, 119 insertions(+), 137 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java index d49eddbd6c0c..bfbab271b0e2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java @@ -18,13 +18,8 @@ package org.apache.hadoop.hive.ql.optimizer.stats.annotation; -import java.lang.reflect.Field; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Stack; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -42,6 +37,7 @@ import org.apache.hadoop.hive.ql.exec.RowSchema; import org.apache.hadoop.hive.ql.exec.SelectOperator; import org.apache.hadoop.hive.ql.exec.TableScanOperator; +import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.lib.NodeProcessor; import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx; @@ -77,8 +73,13 @@ import org.apache.hadoop.hive.serde.serdeConstants; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import java.lang.reflect.Field; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Stack; public class StatsRulesProcFactory { @@ -170,7 +171,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // in case of select(*) the data size does not change if (!sop.getConf().isSelectStar() && !sop.getConf().isSelStarNoCompute()) { long dataSize = StatsUtils.getDataSizeFromColumnStats(stats.getNumRows(), colStats); - stats.setDataSize(setMaxIfInvalid(dataSize)); + stats.setDataSize(StatsUtils.getMaxIfOverflow(dataSize)); } sop.setStatistics(stats); @@ -828,7 +829,6 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // for those newly added columns if (!colExprMap.containsKey(ci.getInternalName())) { String colName = ci.getInternalName(); - colName = StatsUtils.stripPrefixFromColumnName(colName); String tabAlias = ci.getTabAlias(); String colType = ci.getTypeName(); ColStatistics cs = new ColStatistics(tabAlias, colName, colType); @@ -956,7 +956,7 @@ private boolean checkMapSideAggregation(GroupByOperator gop, long hashEntrySize = gop.javaHashEntryOverHead + avgKeySize + avgValSize; // estimated hash table size - long estHashTableSize = numEstimatedRows * hashEntrySize; + long estHashTableSize = StatsUtils.getMaxIfOverflow(numEstimatedRows * hashEntrySize); if (estHashTableSize < maxMemHashAgg) { return true; @@ -1065,7 +1065,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // detect if there are multiple attributes in join key ReduceSinkOperator rsOp = (ReduceSinkOperator) jop.getParentOperators().get(0); - List keyExprs = rsOp.getConf().getKeyCols(); + List keyExprs = rsOp.getConf().getOutputKeyColumnNames(); numAttr = keyExprs.size(); // infer PK-FK relationship in single attribute join case @@ -1077,7 +1077,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, ReduceSinkOperator parent = (ReduceSinkOperator) jop.getParentOperators().get(pos); Statistics parentStats = parent.getStatistics(); - keyExprs = parent.getConf().getKeyCols(); + keyExprs = parent.getConf().getOutputKeyColumnNames(); // Parent RS may have column statistics from multiple parents. // Populate table alias to row count map, this will be used later to @@ -1096,8 +1096,8 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // used to quickly look-up for column statistics of join key. // TODO: expressions in join condition will be ignored. assign // internal name for expressions and estimate column statistics for expression. - List fqCols = - StatsUtils.getFullQualifedColNameFromExprs(keyExprs, parent.getColumnExprMap()); + List fqCols = StatsUtils.getFullyQualifedReducerKeyNames(keyExprs, + parent.getColumnExprMap()); joinKeys.put(pos, fqCols); // get column statistics for all output columns @@ -1119,7 +1119,6 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, for (int idx = 0; idx < numAttr; idx++) { for (Integer i : joinKeys.keySet()) { String col = joinKeys.get(i).get(idx); - col = StatsUtils.stripPrefixFromColumnName(col); ColStatistics cs = joinedColStats.get(col); if (cs != null) { perAttrDVs.add(cs.getCountDistint()); @@ -1142,7 +1141,6 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, } else { for (List jkeys : joinKeys.values()) { for (String jk : jkeys) { - jk = StatsUtils.stripPrefixFromColumnName(jk); ColStatistics cs = joinedColStats.get(jk); if (cs != null) { distinctVals.add(cs.getCountDistint()); @@ -1166,7 +1164,6 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, ExprNodeDesc end = colExprMap.get(key); if (end instanceof ExprNodeColumnDesc) { String colName = ((ExprNodeColumnDesc) end).getColumn(); - colName = StatsUtils.stripPrefixFromColumnName(colName); String tabAlias = ((ExprNodeColumnDesc) end).getTabAlias(); String fqColName = StatsUtils.getFullyQualifiedColumnName(tabAlias, colName); ColStatistics cs = joinedColStats.get(fqColName); @@ -1217,8 +1214,8 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, long newNumRows = (long) (joinFactor * maxRowCount * (numParents - 1)); long newDataSize = (long) (joinFactor * maxDataSize * (numParents - 1)); Statistics wcStats = new Statistics(); - wcStats.setNumRows(setMaxIfInvalid(newNumRows)); - wcStats.setDataSize(setMaxIfInvalid(newDataSize)); + wcStats.setNumRows(StatsUtils.getMaxIfOverflow(newNumRows)); + wcStats.setDataSize(StatsUtils.getMaxIfOverflow(newDataSize)); jop.setStatistics(wcStats); if (isDebugEnabled) { @@ -1369,8 +1366,8 @@ private List getForeignKeyCandidates(List op = ops.get(i); if (op != null && op instanceof ReduceSinkOperator) { ReduceSinkOperator rsOp = (ReduceSinkOperator) op; - List keys = rsOp.getConf().getKeyCols(); - List fqCols = StatsUtils.getFullQualifedColNameFromExprs(keys, + List keys = rsOp.getConf().getOutputKeyColumnNames(); + List fqCols = StatsUtils.getFullyQualifedReducerKeyNames(keys, rsOp.getColumnExprMap()); if (fqCols.size() == 1) { String joinCol = fqCols.get(0); @@ -1400,8 +1397,8 @@ private List getPrimaryKeyCandidates(List op = ops.get(i); if (op instanceof ReduceSinkOperator) { ReduceSinkOperator rsOp = (ReduceSinkOperator) op; - List keys = rsOp.getConf().getKeyCols(); - List fqCols = StatsUtils.getFullQualifedColNameFromExprs(keys, + List keys = rsOp.getConf().getOutputKeyColumnNames(); + List fqCols = StatsUtils.getFullyQualifedReducerKeyNames(keys, rsOp.getColumnExprMap()); if (fqCols.size() == 1) { String joinCol = fqCols.get(0); @@ -1441,7 +1438,7 @@ private void updateStatsForJoinType(Statistics stats, long newNumRows, LOG.info("STATS-" + jop.toString() + ": Overflow in number of rows." + newNumRows + " rows will be set to Long.MAX_VALUE"); } - newNumRows = setMaxIfInvalid(newNumRows); + newNumRows = StatsUtils.getMaxIfOverflow(newNumRows); stats.setNumRows(newNumRows); // scale down/up the column statistics based on the changes in number of @@ -1472,7 +1469,7 @@ private void updateStatsForJoinType(Statistics stats, long newNumRows, stats.setColumnStats(colStats); long newDataSize = StatsUtils .getDataSizeFromColumnStats(newNumRows, colStats); - stats.setDataSize(setMaxIfInvalid(newDataSize)); + stats.setDataSize(StatsUtils.getMaxIfOverflow(newDataSize)); } private long computeNewRowCount(List rowCountParents, long denom) { @@ -1512,7 +1509,6 @@ private void updateJoinColumnsNDV(Map> joinKeys, // find min NDV for joining columns for (Map.Entry> entry : joinKeys.entrySet()) { String key = entry.getValue().get(joinColIdx); - key = StatsUtils.stripPrefixFromColumnName(key); ColStatistics cs = joinedColStats.get(key); if (cs != null && cs.getCountDistint() < minNDV) { minNDV = cs.getCountDistint(); @@ -1523,7 +1519,6 @@ private void updateJoinColumnsNDV(Map> joinKeys, if (minNDV != Long.MAX_VALUE) { for (Map.Entry> entry : joinKeys.entrySet()) { String key = entry.getValue().get(joinColIdx); - key = StatsUtils.stripPrefixFromColumnName(key); ColStatistics cs = joinedColStats.get(key); if (cs != null) { cs.setCountDistint(minNDV); @@ -1617,8 +1612,8 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, long numRows = limit; long avgRowSize = parentStats.getAvgRowSize(); long dataSize = avgRowSize * limit; - wcStats.setNumRows(setMaxIfInvalid(numRows)); - wcStats.setDataSize(setMaxIfInvalid(dataSize)); + wcStats.setNumRows(StatsUtils.getMaxIfOverflow(numRows)); + wcStats.setDataSize(StatsUtils.getMaxIfOverflow(dataSize)); } lop.setStatistics(wcStats); @@ -1662,26 +1657,26 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, if (satisfyPrecondition(parentStats)) { List colStats = Lists.newArrayList(); for (String key : outKeyColNames) { - String prefixedKey = "KEY." + key; + String prefixedKey = Utilities.ReduceField.KEY.toString() + "." + key; ExprNodeDesc end = colExprMap.get(prefixedKey); if (end != null) { ColStatistics cs = StatsUtils .getColStatisticsFromExpression(conf, parentStats, end); if (cs != null) { - cs.setColumnName(key); + cs.setColumnName(prefixedKey); colStats.add(cs); } } } for (String val : outValueColNames) { - String prefixedVal = "VALUE." + val; + String prefixedVal = Utilities.ReduceField.VALUE.toString() + "." + val; ExprNodeDesc end = colExprMap.get(prefixedVal); if (end != null) { ColStatistics cs = StatsUtils .getColStatisticsFromExpression(conf, parentStats, end); if (cs != null) { - cs.setColumnName(val); + cs.setColumnName(prefixedVal); colStats.add(cs); } } @@ -1815,7 +1810,7 @@ static void updateStats(Statistics stats, long newNumRows, + newNumRows + " rows will be set to Long.MAX_VALUE"); } - newNumRows = setMaxIfInvalid(newNumRows); + newNumRows = StatsUtils.getMaxIfOverflow(newNumRows); long oldRowCount = stats.getNumRows(); double ratio = (double) newNumRows / (double) oldRowCount; stats.setNumRows(newNumRows); @@ -1842,10 +1837,10 @@ static void updateStats(Statistics stats, long newNumRows, } stats.setColumnStats(colStats); long newDataSize = StatsUtils.getDataSizeFromColumnStats(newNumRows, colStats); - stats.setDataSize(setMaxIfInvalid(newDataSize)); + stats.setDataSize(StatsUtils.getMaxIfOverflow(newDataSize)); } else { long newDataSize = (long) (ratio * stats.getDataSize()); - stats.setDataSize(setMaxIfInvalid(newDataSize)); + stats.setDataSize(StatsUtils.getMaxIfOverflow(newDataSize)); } } @@ -1853,14 +1848,4 @@ static boolean satisfyPrecondition(Statistics stats) { return stats != null && stats.getBasicStatsState().equals(Statistics.State.COMPLETE) && !stats.getColumnStatsState().equals(Statistics.State.NONE); } - - /** - * negative number of rows or data sizes are invalid. It could be because of - * long overflow in which case return Long.MAX_VALUE - * @param val - input value - * @return Long.MAX_VALUE if val is negative else val - */ - static long setMaxIfInvalid(long val) { - return val < 0 ? Long.MAX_VALUE : val; - } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java index 1b27c31916c1..5a37614834a0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java @@ -18,14 +18,8 @@ package org.apache.hadoop.hive.ql.stats; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -42,6 +36,7 @@ import org.apache.hadoop.hive.ql.exec.ColumnInfo; import org.apache.hadoop.hive.ql.exec.RowSchema; import org.apache.hadoop.hive.ql.exec.TableScanOperator; +import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.Partition; @@ -89,8 +84,14 @@ import org.apache.hadoop.io.BytesWritable; import org.apache.tez.mapreduce.hadoop.MRJobConfig; -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; public class StatsUtils { @@ -1011,12 +1012,10 @@ public static List getColStatisticsFromExprMap(HiveConf conf, if (colExprMap != null && rowSchema != null) { for (ColumnInfo ci : rowSchema.getSignature()) { String outColName = ci.getInternalName(); - outColName = StatsUtils.stripPrefixFromColumnName(outColName); String outTabAlias = ci.getTabAlias(); ExprNodeDesc end = colExprMap.get(outColName); ColStatistics colStat = getColStatisticsFromExpression(conf, parentStats, end); if (colStat != null) { - outColName = StatsUtils.stripPrefixFromColumnName(outColName); colStat.setColumnName(outColName); colStat.setTableAlias(outTabAlias); } @@ -1070,7 +1069,6 @@ public static ColStatistics getColStatisticsFromExpression(HiveConf conf, Statis ExprNodeColumnDesc encd = (ExprNodeColumnDesc) end; colName = encd.getColumn(); tabAlias = encd.getTabAlias(); - colName = stripPrefixFromColumnName(colName); if (encd.getIsPartitionColOrVirtualCol()) { @@ -1299,21 +1297,6 @@ public static long getDataSizeFromColumnStats(long numRows, List return result; } - /** - * Remove KEY/VALUE prefix from column name - * @param colName - * - column name - * @return column name - */ - public static String stripPrefixFromColumnName(String colName) { - String stripedName = colName; - if (colName.startsWith("KEY") || colName.startsWith("VALUE")) { - // strip off KEY./VALUE. from column name - stripedName = colName.split("\\.")[1]; - } - return stripedName; - } - /** * Returns fully qualified name of column * @param tabName @@ -1363,38 +1346,42 @@ private static String getFullyQualifiedName(String... names) { } /** - * Try to get fully qualified column name from expression node + * Get fully qualified column name from output key column names and column expression map * @param keyExprs - * - expression nodes + * - output key names * @param map * - column expression map * @return list of fully qualified names */ - public static List getFullQualifedColNameFromExprs(List keyExprs, + public static List getFullyQualifedReducerKeyNames(List keyExprs, Map map) { List result = Lists.newArrayList(); if (keyExprs != null) { - for (ExprNodeDesc end : keyExprs) { - String outColName = null; - for (Map.Entry entry : map.entrySet()) { - if (entry.getValue().isSame(end)) { - outColName = entry.getKey(); - outColName = stripPrefixFromColumnName(outColName); + for (String key : keyExprs) { + String colName = key; + ExprNodeDesc end = map.get(colName); + // if we couldn't get expression try prepending "KEY." prefix to reducer key column names + if (end == null) { + colName = Utilities.ReduceField.KEY.toString() + "." + key; + end = map.get(colName); + if (end == null) { + continue; } } if (end instanceof ExprNodeColumnDesc) { ExprNodeColumnDesc encd = (ExprNodeColumnDesc) end; - if (outColName == null) { - outColName = encd.getColumn(); - outColName = stripPrefixFromColumnName(outColName); - } String tabAlias = encd.getTabAlias(); - result.add(getFullyQualifiedColumnName(tabAlias, outColName)); + result.add(getFullyQualifiedColumnName(tabAlias, colName)); } else if (end instanceof ExprNodeGenericFuncDesc) { ExprNodeGenericFuncDesc enf = (ExprNodeGenericFuncDesc) end; - List cols = getFullQualifedColNameFromExprs(enf.getChildren(), map); - String joinedStr = Joiner.on(".").skipNulls().join(cols); - result.add(joinedStr); + String tabAlias = ""; + for (ExprNodeDesc childEnd : enf.getChildren()) { + if (childEnd instanceof ExprNodeColumnDesc) { + tabAlias = ((ExprNodeColumnDesc) childEnd).getTabAlias(); + break; + } + } + result.add(getFullyQualifiedColumnName(tabAlias, colName)); } else if (end instanceof ExprNodeConstantDesc) { ExprNodeConstantDesc encd = (ExprNodeConstantDesc) end; result.add(encd.getValue().toString()); @@ -1439,4 +1426,14 @@ public static long getAvailableMemory(Configuration conf) { conf.getInt(MRJobConfig.MAP_MEMORY_MB, MRJobConfig.DEFAULT_MAP_MEMORY_MB); return memory; } + + /** + * negative number of rows or data sizes are invalid. It could be because of + * long overflow in which case return Long.MAX_VALUE + * @param val - input value + * @return Long.MAX_VALUE if val is negative else val + */ + public static long getMaxIfOverflow(long val) { + return val < 0 ? Long.MAX_VALUE : val; + } } diff --git a/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out b/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out index 41a008336093..718b43c6e0fc 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out @@ -177,17 +177,17 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: int) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 8 Data size: 800 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 658 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 8 Data size: 800 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 658 Basic stats: COMPLETE Column stats: PARTIAL Group By Operator aggregations: min(_col1) keys: _col0 (type: string), _col2 (type: bigint) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 8 Data size: 832 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 686 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false table: @@ -203,7 +203,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: bigint) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: bigint) - Statistics: Num rows: 8 Data size: 832 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 686 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col2 (type: int) Reduce Operator Tree: Group By Operator @@ -211,14 +211,14 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: bigint) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 8 Data size: 832 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 686 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint), _col2 (type: int) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 8 Data size: 832 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 686 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 8 Data size: 832 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 7 Data size: 686 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/tez/union5.q.out b/ql/src/test/results/clientpositive/tez/union5.q.out index d35ed31b34aa..7fa65520f063 100644 --- a/ql/src/test/results/clientpositive/tez/union5.q.out +++ b/ql/src/test/results/clientpositive/tez/union5.q.out @@ -88,14 +88,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/tez/union7.q.out b/ql/src/test/results/clientpositive/tez/union7.q.out index 91dc8885d4e9..7d89cd815ace 100644 --- a/ql/src/test/results/clientpositive/tez/union7.q.out +++ b/ql/src/test/results/clientpositive/tez/union7.q.out @@ -92,14 +92,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/udf_explode.q.out b/ql/src/test/results/clientpositive/udf_explode.q.out index 301b1b717aca9d3e7788721a8bd333a6aafc4a9f..69f47de2c9b0910970ad6b8b012de823d8c5e9fe 100644 GIT binary patch delta 100 zcmex)kMZ+8#tr*4C-W&-PF@`#Gg;Q3cd|{e!sL!PH~S}Q@c{tf5hdXO delta 79 zcmex-kMZX{#tr*4nGDS)@7H_+q&B~g<6s1F`4#jgD_9$C=GD1x2$61_oEO)CMag7d LosXM66SepNq}v;E diff --git a/ql/src/test/results/clientpositive/udtf_explode.q.out b/ql/src/test/results/clientpositive/udtf_explode.q.out index 6213746bb011d12377effc8fe09b6e42e4ccebf6..d3eb3009a12d4225762ec694c296831457e35659 100644 GIT binary patch delta 187 zcmaF)mhtgh#tkf{yoL%ci6w~&#hF#9Rtl3pvRh8}Hl2?lYCT!gS$T4tmcry+nROVl z`jb65jV3S8`Z)Q60smwH9=6H<4Foq=S!~qDPzo~MbMo$tVhkA~tk}Ff%ZUd7`QSq( delta 110 zcmaF-mht6V#tkf{lQei4O(qMP-hePZvRh9!*HWJB@2oI+Yi1oxP=9lNmNMhy4+i|3 W6D&^X!!$Kb-kwnmQ-f1u2@e3aQYV1` diff --git a/ql/src/test/results/clientpositive/union11.q.out b/ql/src/test/results/clientpositive/union11.q.out index b624c7d284f6..fc9574ce0696 100644 --- a/ql/src/test/results/clientpositive/union11.q.out +++ b/ql/src/test/results/clientpositive/union11.q.out @@ -126,14 +126,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union14.q.out b/ql/src/test/results/clientpositive/union14.q.out index 02821d728581..c2bfc592365e 100644 --- a/ql/src/test/results/clientpositive/union14.q.out +++ b/ql/src/test/results/clientpositive/union14.q.out @@ -109,14 +109,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union15.q.out b/ql/src/test/results/clientpositive/union15.q.out index 0e940fd25409..927262bade8b 100644 --- a/ql/src/test/results/clientpositive/union15.q.out +++ b/ql/src/test/results/clientpositive/union15.q.out @@ -136,14 +136,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union17.q.out b/ql/src/test/results/clientpositive/union17.q.out index 2c2aa4a5d7a2..f161d6fa134e 100644 --- a/ql/src/test/results/clientpositive/union17.q.out +++ b/ql/src/test/results/clientpositive/union17.q.out @@ -114,7 +114,7 @@ STAGE PLANS: keys: VALUE._col0 (type: string) mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 250 Data size: 48000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false table: @@ -126,7 +126,7 @@ STAGE PLANS: keys: VALUE._col0 (type: string), VALUE._col1 (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 250 Data size: 94000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 280 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false table: @@ -142,7 +142,7 @@ STAGE PLANS: key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 250 Data size: 48000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col1 (type: bigint) Reduce Operator Tree: Group By Operator @@ -150,14 +150,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: final outputColumnNames: _col0, _col1 - Statistics: Num rows: 250 Data size: 48000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 250 Data size: 48000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 250 Data size: 48000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -185,7 +185,7 @@ STAGE PLANS: key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 250 Data size: 94000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 280 Basic stats: COMPLETE Column stats: PARTIAL value expressions: _col2 (type: bigint) Reduce Operator Tree: Group By Operator @@ -193,14 +193,14 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string) mode: final outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 250 Data size: 94000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 280 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: string), _col2 (type: bigint) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 250 Data size: 94000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 280 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 250 Data size: 94000 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 280 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union19.q.out b/ql/src/test/results/clientpositive/union19.q.out index 1d83ab4f9207..8a566c404d98 100644 --- a/ql/src/test/results/clientpositive/union19.q.out +++ b/ql/src/test/results/clientpositive/union19.q.out @@ -152,14 +152,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union21.q.out b/ql/src/test/results/clientpositive/union21.q.out index a754e0577db4..9f2f667243b4 100644 --- a/ql/src/test/results/clientpositive/union21.q.out +++ b/ql/src/test/results/clientpositive/union21.q.out @@ -173,14 +173,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union5.q.out b/ql/src/test/results/clientpositive/union5.q.out index 5d2a447d3fc4..3ee93a648e70 100644 --- a/ql/src/test/results/clientpositive/union5.q.out +++ b/ql/src/test/results/clientpositive/union5.q.out @@ -102,14 +102,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/union7.q.out b/ql/src/test/results/clientpositive/union7.q.out index 727ff5760985..d72446873c2d 100644 --- a/ql/src/test/results/clientpositive/union7.q.out +++ b/ql/src/test/results/clientpositive/union7.q.out @@ -107,14 +107,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: _col0 (type: string), _col1 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 100 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 1 Data size: 96 Basic stats: COMPLETE Column stats: PARTIAL table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat From eab179bff5589b51878054ef00ef06a98000e537 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 1 Nov 2014 19:44:49 +0000 Subject: [PATCH 228/339] HIVE-8687: Support Avro through HCatalog (Sushanth Sowmyan, reviewed by Alan Gates) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636022 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/hcatalog/mapreduce/SpecialCases.java | 38 ++++++++++ .../hive/hcatalog/pig/TestHCatLoader.java | 6 -- .../pig/TestHCatLoaderComplexSchema.java | 3 - .../hive/hcatalog/pig/TestHCatStorer.java | 36 ++++----- .../hcatalog/pig/TestHCatStorerMulti.java | 5 -- .../ql/io/avro/AvroContainerOutputFormat.java | 76 +++++++++++++++---- .../hadoop/hive/serde2/avro/AvroSerDe.java | 58 +++++++------- .../hive/serde2/avro/AvroSerdeUtils.java | 51 ++++++++++--- 8 files changed, 184 insertions(+), 89 deletions(-) diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/SpecialCases.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/SpecialCases.java index fb885a37f29c..f38d53b2085b 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/SpecialCases.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/SpecialCases.java @@ -23,11 +23,20 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.io.RCFileOutputFormat; +import org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat; import org.apache.hadoop.hive.ql.io.orc.OrcFile; import org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat; +import org.apache.hadoop.hive.serde2.avro.AvroSerDe; +import org.apache.hadoop.hive.serde2.avro.AvroSerdeUtils; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils; import org.apache.hadoop.mapred.OutputFormat; +import org.apache.hive.hcatalog.data.schema.HCatFieldSchema; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import java.util.Properties; /** * This class is a place to put all the code associated with @@ -82,6 +91,35 @@ public static void addSpecialCasesParametersToOutputJobProperties( jobProperties.put(propName,tableProps.get(propName)); } } + } else if (ofclass == AvroContainerOutputFormat.class) { + // Special cases for Avro. As with ORC, we make table properties that + // Avro is interested in available in jobconf at runtime + Map tableProps = jobInfo.getTableInfo().getTable().getParameters(); + for (AvroSerdeUtils.AvroTableProperties property : AvroSerdeUtils.AvroTableProperties.values()) { + String propName = property.getPropName(); + if (tableProps.containsKey(propName)){ + String propVal = tableProps.get(propName); + jobProperties.put(propName,tableProps.get(propName)); + } + } + + Properties properties = new Properties(); + properties.put("name",jobInfo.getTableName()); + + List colNames = jobInfo.getOutputSchema().getFieldNames(); + List colTypes = new ArrayList(); + for (HCatFieldSchema field : jobInfo.getOutputSchema().getFields()){ + colTypes.add(TypeInfoUtils.getTypeInfoFromTypeString(field.getTypeString())); + } + + jobProperties.put(AvroSerdeUtils.AvroTableProperties.SCHEMA_LITERAL.getPropName(), + AvroSerDe.getSchemaFromCols(properties, colNames, colTypes, null).toString()); + + + for (String propName : jobProperties.keySet()){ + String propVal = jobProperties.get(propName); + } + } } diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java index 5eabba151b6b..f97e511f3e99 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java @@ -101,12 +101,6 @@ public class TestHCatLoader { private static final Map> DISABLED_STORAGE_FORMATS = new HashMap>() {{ - put(IOConstants.AVRO, new HashSet() {{ - add("testReadDataBasic"); - add("testReadPartitionedBasic"); - add("testProjectionsBasic"); - add("testSchemaLoadPrimitiveTypes"); - }}); put(IOConstants.PARQUETFILE, new HashSet() {{ add("testReadDataBasic"); add("testReadPartitionedBasic"); diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java index 4983f13d878e..74aa2b55a4e2 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderComplexSchema.java @@ -73,9 +73,6 @@ public class TestHCatLoaderComplexSchema { private static final Map> DISABLED_STORAGE_FORMATS = new HashMap>() {{ put(IOConstants.AVRO, new HashSet() {{ - add("testSyntheticComplexSchema"); - add("testTupleInBagInTupleInBag"); - add("testMapWithComplexData"); add("testMapNullKey"); }}); put(IOConstants.PARQUETFILE, new HashSet() {{ diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java index a380f619493c..a42480ebe458 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorer.java @@ -76,29 +76,19 @@ public class TestHCatStorer extends HCatBaseTest { private static final Map> DISABLED_STORAGE_FORMATS = new HashMap>() {{ put(IOConstants.AVRO, new HashSet() {{ - add("testBagNStruct"); - add("testDateCharTypes"); - add("testDynamicPartitioningMultiPartColsInDataNoSpec"); - add("testDynamicPartitioningMultiPartColsInDataPartialSpec"); - add("testMultiPartColsInData"); - add("testPartColsInData"); - add("testStoreFuncAllSimpleTypes"); - add("testStoreFuncSimple"); - add("testStoreInPartiitonedTbl"); - add("testStoreMultiTables"); - add("testStoreWithNoCtorArgs"); - add("testStoreWithNoSchema"); - add("testWriteChar"); - add("testWriteDate"); - add("testWriteDate2"); - add("testWriteDate3"); - add("testWriteDecimal"); - add("testWriteDecimalX"); - add("testWriteDecimalXY"); - add("testWriteSmallint"); - add("testWriteTimestamp"); - add("testWriteTinyint"); - add("testWriteVarchar"); + add("testDateCharTypes"); // incorrect precision + // expected:<0 xxxxx yyy 5.2[]> but was:<0 xxxxx yyy 5.2[0]> + add("testWriteDecimalXY"); // incorrect precision + // expected:<1.2[]> but was:<1.2[0]> + add("testWriteSmallint"); // doesn't have a notion of small, and saves the full value as an int, so no overflow + // expected: but was:<32768> + add("testWriteTimestamp"); // does not support timestamp + add("testWriteDate"); // does not support date + add("testWriteDate2"); // does not support date + add("testWriteDate3"); // does not support date + // TypeInfoToSchema.createAvroPrimitive : UnsupportedOperationException for the above + add("testWriteTinyint"); // doesn't have a notion of tiny, and saves the full value as an int, so no overflow + // expected: but was:<300> }}); put(IOConstants.PARQUETFILE, new HashSet() {{ add("testBagNStruct"); diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorerMulti.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorerMulti.java index 0c3ec8bd93f2..a4e44d6f63e5 100644 --- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorerMulti.java +++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatStorerMulti.java @@ -70,11 +70,6 @@ public class TestHCatStorerMulti { private static final Map> DISABLED_STORAGE_FORMATS = new HashMap>() {{ - put(IOConstants.AVRO, new HashSet() {{ - add("testStoreBasicTable"); - add("testStorePartitionedTable"); - add("testStoreTableMulti"); - }}); put(IOConstants.PARQUETFILE, new HashSet() {{ add("testStoreBasicTable"); add("testStorePartitionedTable"); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/avro/AvroContainerOutputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/avro/AvroContainerOutputFormat.java index fba0f962bc12..3985cd6fa032 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/avro/AvroContainerOutputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/avro/AvroContainerOutputFormat.java @@ -30,14 +30,17 @@ import org.apache.avro.file.DataFileWriter; import org.apache.avro.generic.GenericDatumWriter; import org.apache.avro.generic.GenericRecord; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.ql.exec.FileSinkOperator; import org.apache.hadoop.hive.ql.io.HiveOutputFormat; import org.apache.hadoop.hive.serde2.avro.AvroGenericRecordWritable; import org.apache.hadoop.hive.serde2.avro.AvroSerdeException; import org.apache.hadoop.hive.serde2.avro.AvroSerdeUtils; -import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Writable; +import org.apache.hadoop.io.WritableComparable; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapred.RecordWriter; import org.apache.hadoop.mapred.Reporter; @@ -47,7 +50,9 @@ * Write to an Avro file from a Hive process. */ public class AvroContainerOutputFormat - implements HiveOutputFormat { + implements HiveOutputFormat { + + public static final Log LOG = LogFactory.getLog(AvroContainerOutputFormat.class); @Override public org.apache.hadoop.hive.ql.exec.FileSinkOperator.RecordWriter getHiveRecordWriter(JobConf jobConf, @@ -75,21 +80,62 @@ public org.apache.hadoop.hive.ql.exec.FileSinkOperator.RecordWriter getHiveRecor return new AvroGenericRecordWriter(dfw); } - //no records will be emitted from Hive - @Override - public RecordWriter - getRecordWriter(FileSystem ignored, JobConf job, String name, - Progressable progress) { - return new RecordWriter() { - @Override - public void write(LongWritable key, AvroGenericRecordWritable value) { - throw new RuntimeException("Should not be called"); - } + class WrapperRecordWriter implements RecordWriter { + FileSinkOperator.RecordWriter hiveWriter = null; + JobConf jobConf; + Progressable progressable; + String fileName; - @Override - public void close(Reporter reporter) { + public WrapperRecordWriter(JobConf jobConf, Progressable progressable, String fileName){ + this.progressable = progressable; + this.jobConf = jobConf; + this.fileName = fileName; + } + + private FileSinkOperator.RecordWriter getHiveWriter() throws IOException { + if (this.hiveWriter == null){ + Properties properties = new Properties(); + for (AvroSerdeUtils.AvroTableProperties tableProperty : AvroSerdeUtils.AvroTableProperties.values()){ + String propVal; + if((propVal = jobConf.get(tableProperty.getPropName())) != null){ + properties.put(tableProperty.getPropName(),propVal); + } + } + + Boolean isCompressed = jobConf.getBoolean("mapreduce.output.fileoutputformat.compress", false); + Path path = new Path(this.fileName); + if(path.getFileSystem(jobConf).isDirectory(path)){ + // This path is only potentially encountered during setup + // Otherwise, a specific part_xxxx file name is generated and passed in. + path = new Path(path,"_dummy"); + } + + this.hiveWriter = getHiveRecordWriter(jobConf,path,null,isCompressed, properties, progressable); } - }; + return this.hiveWriter; + } + + @Override + public void write(K key, V value) throws IOException { + getHiveWriter().write(value); + } + + @Override + public void close(Reporter reporter) throws IOException { + // Normally, I'd worry about the blanket false being passed in here, and that + // it'd need to be integrated into an abort call for an OutputCommitter, but the + // underlying recordwriter ignores it and throws it away, so it's irrelevant. + getHiveWriter().close(false); + } + + } + + //no records will be emitted from Hive + @Override + public RecordWriter + getRecordWriter(FileSystem ignored, JobConf job, String fileName, + Progressable progress) throws IOException { + return new WrapperRecordWriter(job,progress,fileName); } @Override diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerDe.java b/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerDe.java index a52b2edf08a5..327c4a31f7cf 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerDe.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerDe.java @@ -81,10 +81,10 @@ public void initialize(Configuration configuration, Properties properties) throw final String columnNameProperty = properties.getProperty("columns"); final String columnTypeProperty = properties.getProperty("columns.types"); - final String columnCommentProperty = properties.getProperty("columns.comments"); + final String columnCommentProperty = properties.getProperty("columns.comments",""); - if (properties.getProperty(AvroSerdeUtils.SCHEMA_LITERAL) != null - || properties.getProperty(AvroSerdeUtils.SCHEMA_URL) != null + if (properties.getProperty(AvroSerdeUtils.AvroTableProperties.SCHEMA_LITERAL.getPropName()) != null + || properties.getProperty(AvroSerdeUtils.AvroTableProperties.SCHEMA_URL.getPropName()) != null || columnNameProperty == null || columnNameProperty.isEmpty() || columnTypeProperty == null || columnTypeProperty.isEmpty()) { schema = AvroSerdeUtils.determineSchemaOrReturnErrorSchema(properties); @@ -93,28 +93,9 @@ public void initialize(Configuration configuration, Properties properties) throw columnNames = Arrays.asList(columnNameProperty.split(",")); columnTypes = TypeInfoUtils.getTypeInfosFromTypeString(columnTypeProperty); - List columnComments; - if (columnCommentProperty.isEmpty()) { - columnComments = new ArrayList(); - } else { - columnComments = Arrays.asList(columnCommentProperty.split(",")); - LOG.info("columnComments is " + columnCommentProperty); - } - if (columnNames.size() != columnTypes.size()) { - throw new IllegalArgumentException("AvroSerde initialization failed. Number of column " + - "name and column type differs. columnNames = " + columnNames + ", columnTypes = " + - columnTypes); - } - - final String tableName = properties.getProperty(TABLE_NAME); - final String tableComment = properties.getProperty(TABLE_COMMENT); - TypeInfoToSchema typeInfoToSchema = new TypeInfoToSchema(); - schema = typeInfoToSchema.convert(columnNames, columnTypes, columnComments, - properties.getProperty(AvroSerdeUtils.SCHEMA_NAMESPACE), - properties.getProperty(AvroSerdeUtils.SCHEMA_NAME, tableName), - properties.getProperty(AvroSerdeUtils.SCHEMA_DOC, tableComment)); - - properties.setProperty(AvroSerdeUtils.SCHEMA_LITERAL, schema.toString()); + schema = getSchemaFromCols(properties, columnNames, columnTypes, columnCommentProperty); + + properties.setProperty(AvroSerdeUtils.AvroTableProperties.SCHEMA_LITERAL.getPropName(), schema.toString()); } LOG.info("Avro schema is " + schema); @@ -122,7 +103,7 @@ public void initialize(Configuration configuration, Properties properties) throw if (configuration == null) { LOG.info("Configuration null, not inserting schema"); } else { - configuration.set(AvroSerdeUtils.AVRO_SERDE_SCHEMA, schema.toString(false)); + configuration.set(AvroSerdeUtils.AvroTableProperties.AVRO_SERDE_SCHEMA.getPropName(), schema.toString(false)); } badSchema = schema.equals(SchemaResolutionProblem.SIGNAL_BAD_SCHEMA); @@ -133,6 +114,31 @@ public void initialize(Configuration configuration, Properties properties) throw this.oi = aoig.getObjectInspector(); } + public static Schema getSchemaFromCols(Properties properties, + List columnNames, List columnTypes, String columnCommentProperty) { + List columnComments; + if (columnCommentProperty == null || columnCommentProperty.isEmpty()) { + columnComments = new ArrayList(); + } else { + columnComments = Arrays.asList(columnCommentProperty.split(",")); + LOG.info("columnComments is " + columnCommentProperty); + } + if (columnNames.size() != columnTypes.size()) { + throw new IllegalArgumentException("AvroSerde initialization failed. Number of column " + + "name and column type differs. columnNames = " + columnNames + ", columnTypes = " + + columnTypes); + } + + final String tableName = properties.getProperty(TABLE_NAME); + final String tableComment = properties.getProperty(TABLE_COMMENT); + TypeInfoToSchema typeInfoToSchema = new TypeInfoToSchema(); + return typeInfoToSchema.convert(columnNames, columnTypes, columnComments, + properties.getProperty(AvroSerdeUtils.AvroTableProperties.SCHEMA_NAMESPACE.getPropName()), + properties.getProperty(AvroSerdeUtils.AvroTableProperties.SCHEMA_NAME.getPropName(), tableName), + properties.getProperty(AvroSerdeUtils.AvroTableProperties.SCHEMA_DOC.getPropName(), tableComment)); + + } + @Override public Class getSerializedClass() { return AvroGenericRecordWritable.class; diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java b/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java index 5da12cb177de..e48f2b77faa3 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java @@ -48,16 +48,45 @@ public class AvroSerdeUtils { private static final Log LOG = LogFactory.getLog(AvroSerdeUtils.class); - public static final String SCHEMA_LITERAL = "avro.schema.literal"; - public static final String SCHEMA_URL = "avro.schema.url"; + /** + * Enum container for all avro table properties. + * If introducing a new avro-specific table property, + * add it here. Putting them in an enum rather than separate strings + * allows them to be programmatically grouped and referenced together. + */ + public static enum AvroTableProperties { + SCHEMA_LITERAL("avro.schema.literal"), + SCHEMA_URL("avro.schema.url"), + SCHEMA_NAMESPACE("avro.schema.namespace"), + SCHEMA_NAME("avro.schema.name"), + SCHEMA_DOC("avro.schema.doc"), + AVRO_SERDE_SCHEMA("avro.serde.schema"), + SCHEMA_RETRIEVER("avro.schema.retriever"); + + private final String propName; + + AvroTableProperties(String propName) { + this.propName = propName; + } + + public String getPropName(){ + return this.propName; + } + } + + @Deprecated public static final String SCHEMA_LITERAL = AvroTableProperties.SCHEMA_LITERAL.getPropName(); + @Deprecated public static final String SCHEMA_URL = AvroTableProperties.SCHEMA_URL.getPropName(); + @Deprecated public static final String SCHEMA_NAMESPACE = AvroTableProperties.SCHEMA_NAMESPACE.getPropName(); + @Deprecated public static final String SCHEMA_NAME = AvroTableProperties.SCHEMA_NAME.getPropName(); + @Deprecated public static final String SCHEMA_DOC = AvroTableProperties.SCHEMA_DOC.getPropName(); + @Deprecated public static final String AVRO_SERDE_SCHEMA = AvroTableProperties.AVRO_SERDE_SCHEMA.getPropName(); + @Deprecated public static final String SCHEMA_RETRIEVER = AvroTableProperties.SCHEMA_RETRIEVER.getPropName(); public static final String SCHEMA_NONE = "none"; - public static final String SCHEMA_NAMESPACE = "avro.schema.namespace"; - public static final String SCHEMA_NAME = "avro.schema.name"; - public static final String SCHEMA_DOC = "avro.schema.doc"; - public static final String EXCEPTION_MESSAGE = "Neither " + SCHEMA_LITERAL + " nor " - + SCHEMA_URL + " specified, can't determine table schema"; - public static final String AVRO_SERDE_SCHEMA = "avro.serde.schema"; - public static final String SCHEMA_RETRIEVER = "avro.schema.retriever"; + public static final String EXCEPTION_MESSAGE = "Neither " + + AvroTableProperties.SCHEMA_LITERAL.getPropName() + " nor " + + AvroTableProperties.SCHEMA_URL.getPropName() + " specified, can't determine table schema"; + + /** * Determine the schema to that's been provided for Avro serde work. @@ -68,12 +97,12 @@ public class AvroSerdeUtils { */ public static Schema determineSchemaOrThrowException(Properties properties) throws IOException, AvroSerdeException { - String schemaString = properties.getProperty(SCHEMA_LITERAL); + String schemaString = properties.getProperty(AvroTableProperties.SCHEMA_LITERAL.getPropName()); if(schemaString != null && !schemaString.equals(SCHEMA_NONE)) return AvroSerdeUtils.getSchemaFor(schemaString); // Try pulling directly from URL - schemaString = properties.getProperty(SCHEMA_URL); + schemaString = properties.getProperty(AvroTableProperties.SCHEMA_URL.getPropName()); if(schemaString == null || schemaString.equals(SCHEMA_NONE)) throw new AvroSerdeException(EXCEPTION_MESSAGE); From c6f198119cd6404758ff612d0b51d13751c0039c Mon Sep 17 00:00:00 2001 From: Eugene Koifman Date: Sat, 1 Nov 2014 19:59:19 +0000 Subject: [PATCH 229/339] HIVE-8685 DDL operations in WebHCat set proxy user to null in unsecure mode (Eugene Koifman, reviewed by Thejas M Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636024 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hive/hcatalog/templeton/ExecServiceImpl.java | 8 +++++--- .../hive/hcatalog/templeton/SecureProxySupport.java | 6 +++--- .../org/apache/hadoop/hive/shims/HadoopShimsSecure.java | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/ExecServiceImpl.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/ExecServiceImpl.java index 5b4fd9b7a5cf..a919079f16bb 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/ExecServiceImpl.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/ExecServiceImpl.java @@ -229,15 +229,17 @@ private ExecBean auxRun(String program, List args, Map e watchdog.checkException(); } catch (Exception ex) { - LOG.error("Command: " + cmd + " failed:", ex); + LOG.error("Command: " + cmd + " failed. res=" + res, ex); } if(watchdog.killedProcess()) { String msg = " was terminated due to timeout(" + timeout + "ms). See " + AppConfig .EXEC_TIMEOUT_NAME + " property"; - LOG.warn("Command: " + cmd + msg); + LOG.warn("Command: " + cmd + msg + " res=" + res); res.stderr += " Command " + msg; } - + if(res.exitcode != 0) { + LOG.info("Command: " + cmd + " failed. res=" + res); + } return res; } diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java index 89668973c0cb..8ae61a1e330b 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java @@ -40,7 +40,7 @@ /** * Helper class to run jobs using Kerberos security. Always safe to - * use these methods, it's a noop if security is not enabled. + * use these methods, it's a no-op if security is not enabled. */ public class SecureProxySupport { private Path tokenPath; @@ -121,9 +121,9 @@ public void addArgs(List args) { if (isEnabled) { args.add("-D"); args.add("hive.metastore.token.signature=" + getHcatServiceStr()); + args.add("-D"); + args.add("proxy.user.name=" + user); } - args.add("-D"); - args.add("proxy.user.name=" + user); } class TokenWrapper { diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java index b024472cb9df..19ba6a8ccc70 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java @@ -463,7 +463,7 @@ public void prepareJobOutput(JobConf conf) { @Override public UserGroupInformation getUGIForConf(Configuration conf) throws IOException { - String doAs = conf.get("proxy.user.name"); + String doAs = System.getenv("HADOOP_USER_NAME"); if(doAs != null && doAs.length() > 0) { /* * this allows doAs (proxy user) to be passed along across process boundary where From eab8f95b966109bafe029391a2456bb23c84eb34 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Sat, 1 Nov 2014 20:00:54 +0000 Subject: [PATCH 230/339] HIVE-8688 : serialized plan OutputStream is not being closed (Thejas Nair, reviewed by Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636026 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/QTestUtil.java | 3 +- .../apache/hadoop/hive/ql/exec/Utilities.java | 153 ++++++++++-------- .../hadoop/hive/ql/exec/mr/MapRedTask.java | 15 +- .../hive/ql/exec/mr/MapredLocalTask.java | 14 +- 4 files changed, 109 insertions(+), 76 deletions(-) diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java index 61bbc0aa966d..d87f997abf6f 100644 --- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java +++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java @@ -952,7 +952,7 @@ public int checkPlan(String tname, List> tasks) thr for (Task plan : tasks) { Utilities.serializePlan(plan, ofs, conf); } - + ofs.close(); fixXml4JDK7(outf.getPath()); maskPatterns(xmlPlanMask, outf.getPath()); @@ -964,6 +964,7 @@ public int checkPlan(String tname, List> tasks) thr return exitVal; } finally { conf.set(HiveConf.ConfVars.PLAN_SERIALIZATION.varname, "kryo"); + IOUtils.closeQuietly(ofs); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 00a1397d30d1..03d11725d1fa 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -18,11 +18,67 @@ package org.apache.hadoop.hive.ql.exec; -import com.esotericsoftware.kryo.Kryo; -import com.esotericsoftware.kryo.io.Input; -import com.esotericsoftware.kryo.io.Output; -import com.esotericsoftware.kryo.serializers.FieldSerializer; -import com.esotericsoftware.shaded.org.objenesis.strategy.StdInstantiatorStrategy; +import java.beans.DefaultPersistenceDelegate; +import java.beans.Encoder; +import java.beans.ExceptionListener; +import java.beans.Expression; +import java.beans.PersistenceDelegate; +import java.beans.Statement; +import java.beans.XMLDecoder; +import java.beans.XMLEncoder; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInput; +import java.io.EOFException; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.net.URI; +import java.net.URL; +import java.net.URLClassLoader; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.SQLTransientException; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Random; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.zip.Deflater; +import java.util.zip.DeflaterOutputStream; +import java.util.zip.InflaterInputStream; + import org.antlr.runtime.CommonToken; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringUtils; @@ -126,66 +182,11 @@ import org.apache.hadoop.util.ReflectionUtils; import org.apache.hadoop.util.Shell; -import java.beans.DefaultPersistenceDelegate; -import java.beans.Encoder; -import java.beans.ExceptionListener; -import java.beans.Expression; -import java.beans.PersistenceDelegate; -import java.beans.Statement; -import java.beans.XMLDecoder; -import java.beans.XMLEncoder; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInput; -import java.io.EOFException; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Serializable; -import java.io.UnsupportedEncodingException; -import java.net.URI; -import java.net.URL; -import java.net.URLClassLoader; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.sql.SQLTransientException; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Random; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.zip.Deflater; -import java.util.zip.DeflaterOutputStream; -import java.util.zip.InflaterInputStream; +import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.io.Input; +import com.esotericsoftware.kryo.io.Output; +import com.esotericsoftware.kryo.serializers.FieldSerializer; +import com.esotericsoftware.shaded.org.objenesis.strategy.StdInstantiatorStrategy; /** * Utilities. @@ -653,21 +654,33 @@ private static Path setBaseWork(Configuration conf, BaseWork w, Path hiveScratch Path planPath = getPlanPath(conf, name); - OutputStream out; + OutputStream out = null; if (HiveConf.getBoolVar(conf, ConfVars.HIVE_RPC_QUERY_PLAN)) { // add it to the conf ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); - out = new DeflaterOutputStream(byteOut, new Deflater(Deflater.BEST_SPEED)); - serializePlan(w, out, conf); + try { + out = new DeflaterOutputStream(byteOut, new Deflater(Deflater.BEST_SPEED)); + serializePlan(w, out, conf); + out.close(); + out = null; + } finally { + IOUtils.closeStream(out); + } LOG.info("Setting plan: "+planPath.toUri().getPath()); conf.set(planPath.toUri().getPath(), Base64.encodeBase64String(byteOut.toByteArray())); } else { // use the default file system of the conf FileSystem fs = planPath.getFileSystem(conf); - out = fs.create(planPath); - serializePlan(w, out, conf); + try { + out = fs.create(planPath); + serializePlan(w, out, conf); + out.close(); + out = null; + } finally { + IOUtils.closeStream(out); + } // Serialize the plan to the default hdfs instance // Except for hadoop local mode execution where we should be diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java index 7775100e8f60..058d63d5416b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java @@ -26,6 +26,7 @@ import java.util.Map; import java.util.Properties; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.fs.ContentSummary; import org.apache.hadoop.fs.FileSystem; @@ -38,8 +39,8 @@ import org.apache.hadoop.hive.ql.DriverContext; import org.apache.hadoop.hive.ql.exec.Operator; import org.apache.hadoop.hive.ql.exec.Utilities; -import org.apache.hadoop.hive.ql.plan.MapredWork; import org.apache.hadoop.hive.ql.plan.MapWork; +import org.apache.hadoop.hive.ql.plan.MapredWork; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.ReduceWork; import org.apache.hadoop.hive.ql.session.SessionState; @@ -170,10 +171,18 @@ public int execute(DriverContext driverContext) { // write out the plan to a local file Path planPath = new Path(ctx.getLocalTmpPath(), "plan.xml"); - OutputStream out = FileSystem.getLocal(conf).create(planPath); MapredWork plan = getWork(); LOG.info("Generating plan file " + planPath.toString()); - Utilities.serializePlan(plan, out, conf); + + OutputStream out = null; + try { + out = FileSystem.getLocal(conf).create(planPath); + Utilities.serializePlan(plan, out, conf); + out.close(); + out = null; + } finally { + IOUtils.closeQuietly(out); + } String isSilent = "true".equalsIgnoreCase(System .getProperty("test.silent")) ? "-nolog" : ""; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java index 06763129533c..d0c022b4bf31 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java @@ -31,6 +31,7 @@ import java.util.Map; import java.util.Properties; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -151,10 +152,19 @@ public int executeInChildVM(DriverContext driverContext) { conf.setVar(ConfVars.HIVEADDEDJARS, Utilities.getResourceFiles(conf, SessionState.ResourceType.JAR)); // write out the plan to a local file Path planPath = new Path(ctx.getLocalTmpPath(), "plan.xml"); - OutputStream out = FileSystem.getLocal(conf).create(planPath); MapredLocalWork plan = getWork(); LOG.info("Generating plan file " + planPath.toString()); - Utilities.serializePlan(plan, out, conf); + + OutputStream out = null; + try { + out = FileSystem.getLocal(conf).create(planPath); + Utilities.serializePlan(plan, out, conf); + out.close(); + out = null; + } finally { + IOUtils.closeQuietly(out); + } + String isSilent = "true".equalsIgnoreCase(System.getProperty("test.silent")) ? "-nolog" : ""; From ce255045e19c2572e10735d5604a4778629c7369 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 1 Nov 2014 21:10:32 +0000 Subject: [PATCH 231/339] HIVE-8461: Make Vectorized Decimal query results match Non-Vectorized query results with respect to trailing zeroes... .0000 (Matt McCline reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636055 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/common/type/HiveDecimal.java | 13 + .../resources/testconfiguration.properties | 20 + .../ColumnArithmeticColumnDecimal.txt | 6 +- .../ColumnArithmeticScalarDecimal.txt | 29 +- .../ColumnDivideColumnDecimal.txt | 26 +- .../ColumnDivideScalarDecimal.txt | 39 +- .../DecimalColumnUnaryFunc.txt | 16 +- .../FilterDecimalColumnBetween.txt | 48 +- .../FilterDecimalColumnCompareColumn.txt | 22 +- .../FilterDecimalColumnCompareScalar.txt | 38 +- .../FilterDecimalScalarCompareColumn.txt | 38 +- .../ScalarArithmeticColumnDecimal.txt | 29 +- .../ScalarDivideColumnDecimal.txt | 31 +- .../UDAFTemplates/VectorUDAFMinMaxDecimal.txt | 80 +- .../UDAFTemplates/VectorUDAFVarDecimal.txt | 50 +- .../ql/exec/vector/DecimalColumnVector.java | 60 +- .../vector/VectorColumnAssignFactory.java | 13 +- .../ql/exec/vector/VectorGroupKeyHelper.java | 4 +- .../ql/exec/vector/VectorHashKeyWrapper.java | 30 +- .../vector/VectorHashKeyWrapperBatch.java | 2 +- .../ql/exec/vector/VectorizationContext.java | 53 +- .../ql/exec/vector/VectorizedBatchUtil.java | 3 +- .../ql/exec/vector/VectorizedRowBatchCtx.java | 3 +- .../expressions/CastDecimalToBoolean.java | 2 +- .../expressions/CastDecimalToDecimal.java | 5 +- .../expressions/CastDecimalToDouble.java | 2 +- .../vector/expressions/CastDecimalToLong.java | 2 +- .../expressions/CastDecimalToString.java | 3 +- .../expressions/CastDecimalToTimestamp.java | 30 +- .../expressions/CastDoubleToDecimal.java | 5 +- .../vector/expressions/CastLongToDecimal.java | 4 +- .../expressions/CastStringToDecimal.java | 4 +- .../expressions/CastTimestampToDecimal.java | 10 +- .../expressions/ConstantVectorExpression.java | 10 +- .../expressions/DecimalColumnInList.java | 31 +- .../exec/vector/expressions/DecimalUtil.java | 285 +- .../FilterDecimalColumnInList.java | 31 +- .../vector/expressions/FuncDecimalToLong.java | 13 - .../expressions/FuncDoubleToDecimal.java | 1 - .../vector/expressions/FuncLongToDecimal.java | 1 - ...uncRoundWithNumDigitsDecimalToDecimal.java | 25 +- .../vector/expressions/IDecimalInExpr.java | 4 +- .../ql/exec/vector/expressions/NullUtil.java | 6 +- .../expressions/VectorExpressionWriter.java | 6 +- .../VectorExpressionWriterFactory.java | 46 +- .../aggregates/VectorUDAFAvgDecimal.java | 135 +- .../aggregates/VectorUDAFSumDecimal.java | 137 +- .../ql/exec/vector/udf/VectorUDFAdaptor.java | 4 +- .../hive/ql/io/orc/RecordReaderImpl.java | 20 +- .../vector/TestVectorGroupByOperator.java | 131 +- .../TestConstantVectorExpression.java | 10 +- .../vector/expressions/TestDecimalUtil.java | 196 +- .../TestVectorArithmeticExpressions.java | 209 +- .../TestVectorExpressionWriters.java | 8 +- .../TestVectorFilterExpressions.java | 32 +- .../expressions/TestVectorTypeCasts.java | 72 +- ...FakeVectorRowBatchFromObjectIterables.java | 4 +- .../util/VectorizedRowGroupGenUtil.java | 14 +- .../hive/ql/io/orc/TestInputOutputFormat.java | 5 +- .../clientpositive/vector_aggregate_9.q | 43 + .../queries/clientpositive/vector_decimal_1.q | 58 + .../clientpositive/vector_decimal_10_0.q | 19 + .../queries/clientpositive/vector_decimal_2.q | 146 + .../queries/clientpositive/vector_decimal_3.q | 35 + .../queries/clientpositive/vector_decimal_4.q | 28 + .../queries/clientpositive/vector_decimal_5.q | 28 + .../queries/clientpositive/vector_decimal_6.q | 48 + .../clientpositive/vector_decimal_precision.q | 38 + .../clientpositive/vector_decimal_trailing.q | 30 + .../clientpositive/vector_decimal_udf.q | 142 + .../clientpositive/vector_decimal_udf2.q | 40 + .../tez/acid_vectorization_partition.q.out | 60 + .../tez/acid_vectorization_project.q.out | 73 + .../tez/vector_aggregate_9.q.out | 173 + .../tez/vector_between_in.q.out | 6 +- .../clientpositive/tez/vector_coalesce.q.out | 196 ++ .../clientpositive/tez/vector_decimal_1.q.out | 591 ++++ .../tez/vector_decimal_10_0.q.out | 112 + .../clientpositive/tez/vector_decimal_2.q.out | 1676 ++++++++++ .../clientpositive/tez/vector_decimal_3.q.out | 374 +++ .../clientpositive/tez/vector_decimal_4.q.out | 250 ++ .../clientpositive/tez/vector_decimal_5.q.out | 239 ++ .../clientpositive/tez/vector_decimal_6.q.out | 303 ++ .../tez/vector_decimal_aggregate.q.out | 32 +- .../tez/vector_decimal_cast.q.out | 41 + .../tez/vector_decimal_expressions.q.out | 51 + .../tez/vector_decimal_mapjoin.q.out | 211 ++ .../tez/vector_decimal_math_funcs.q.out | 192 ++ .../tez/vector_decimal_precision.q.out | 675 ++++ .../tez/vector_decimal_trailing.q.out | 121 + .../tez/vector_decimal_udf.q.out | 2769 +++++++++++++++++ .../tez/vector_decimal_udf2.q.out | 187 ++ .../tez/vectorization_limit.q.out | 565 ++++ .../clientpositive/tez/vectorized_casts.q.out | 337 ++ .../tez/vectorized_date_funcs.q.out | 1019 ++++++ .../tez/vectorized_distinct_gby.q.out | 157 + .../clientpositive/vector_aggregate_9.q.out | 167 + .../clientpositive/vector_between_in.q.out | 6 +- .../clientpositive/vector_decimal_1.q.out | 528 ++++ .../clientpositive/vector_decimal_10_0.q.out | 105 + .../clientpositive/vector_decimal_2.q.out | 1487 +++++++++ .../clientpositive/vector_decimal_3.q.out | 374 +++ .../clientpositive/vector_decimal_4.q.out | 250 ++ .../clientpositive/vector_decimal_5.q.out | 239 ++ .../clientpositive/vector_decimal_6.q.out | 303 ++ .../vector_decimal_aggregate.q.out | 32 +- .../clientpositive/vector_decimal_cast.q.out | 20 +- .../vector_decimal_expressions.q.out | 20 +- .../vector_decimal_math_funcs.q.out | 22 +- .../vector_decimal_precision.q.out | 669 ++++ .../vector_decimal_trailing.q.out | 121 + .../clientpositive/vector_decimal_udf.q.out | 2657 ++++++++++++++++ .../clientpositive/vector_decimal_udf2.q.out | 181 ++ .../hive/serde2/io/HiveDecimalWritable.java | 4 + 114 files changed, 19313 insertions(+), 1093 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/vector_aggregate_9.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_1.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_10_0.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_2.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_3.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_4.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_5.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_6.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_precision.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_trailing.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_udf.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_udf2.q create mode 100644 ql/src/test/results/clientpositive/tez/acid_vectorization_partition.q.out create mode 100644 ql/src/test/results/clientpositive/tez/acid_vectorization_project.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_aggregate_9.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_coalesce.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_1.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_2.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_4.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_5.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_cast.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_math_funcs.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_precision.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_trailing.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_udf2.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorization_limit.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorized_casts.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorized_date_funcs.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vectorized_distinct_gby.q.out create mode 100644 ql/src/test/results/clientpositive/vector_aggregate_9.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_1.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_10_0.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_2.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_3.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_4.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_5.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_6.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_precision.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_trailing.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_udf.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_udf2.q.out diff --git a/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java b/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java index ad48f69c6fc7..0bb84e18d423 100644 --- a/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java +++ b/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java @@ -266,4 +266,17 @@ public static BigDecimal enforcePrecisionScale(BigDecimal bd, int maxPrecision, return bd; } + + public static HiveDecimal enforcePrecisionScale(HiveDecimal dec, int maxPrecision, int maxScale) { + if (dec == null) { + return null; + } + + BigDecimal bd = enforcePrecisionScale(dec.bd, maxPrecision, maxScale); + if (bd == null) { + return null; + } + + return HiveDecimal.create(bd); + } } diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 2c84a360912d..3ae001defe07 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -161,9 +161,25 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vector_cast_constant.q,\ vector_char_4.q,\ vector_char_simple.q,\ + vector_coalesce.q,\ vector_count_distinct.q,\ vector_data_types.q,\ + vector_decimal_1.q,\ + vector_decimal_10_0.q,\ + vector_decimal_2.q,\ + vector_decimal_3.q,\ + vector_decimal_4.q,\ + vector_decimal_5.q,\ + vector_decimal_6.q,\ vector_decimal_aggregate.q,\ + vector_decimal_cast.q,\ + vector_decimal_expressions.q,\ + vector_decimal_mapjoin.q,\ + vector_decimal_math_funcs.q,\ + vector_decimal_precision.q,\ + vector_decimal_trailing.q,\ + vector_decimal_udf.q,\ + vector_decimal_udf2.q,\ vector_distinct_2.q,\ vector_elt.q,\ vector_groupby_3.q,\ @@ -196,6 +212,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vectorization_9.q,\ vectorization_decimal_date.q,\ vectorization_div0.q,\ + vectorization_limit.q,\ vectorization_nested_udf.q,\ vectorization_not.q,\ vectorization_part.q,\ @@ -204,7 +221,10 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vectorization_short_regress.q,\ vectorized_bucketmapjoin1.q,\ vectorized_case.q,\ + vectorized_casts.q,\ vectorized_context.q,\ + vectorized_date_funcs.q,\ + vectorized_distinct_gby.q,\ vectorized_mapjoin.q,\ vectorized_math_funcs.q,\ vectorized_nested_mapjoin.q,\ diff --git a/ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt b/ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt index 160942853d35..e1df5897729e 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt @@ -24,7 +24,7 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; /** * Generated from template ColumnArithmeticColumnDecimal.txt, which covers binary arithmetic @@ -61,8 +61,8 @@ public class extends VectorExpression { DecimalColumnVector outputColVector = (DecimalColumnVector) batch.cols[outputColumn]; int[] sel = batch.selected; int n = batch.size; - Decimal128[] vector1 = inputColVector1.vector; - Decimal128[] vector2 = inputColVector2.vector; + HiveDecimalWritable[] vector1 = inputColVector1.vector; + HiveDecimalWritable[] vector2 = inputColVector2.vector; // return immediately if batch is empty if (n == 0) { diff --git a/ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt b/ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt index 15feb0712b89..0bb1532b6474 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt @@ -24,7 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import org.apache.hadoop.hive.common.type.HiveDecimal; /** * Generated from template ColumnArithmeticScalarDecimal.txt, which covers binary arithmetic @@ -35,10 +36,10 @@ public class extends VectorExpression { private static final long serialVersionUID = 1L; private int colNum; - private Decimal128 value; + private HiveDecimal value; private int outputColumn; - public (int colNum, Decimal128 value, int outputColumn) { + public (int colNum, HiveDecimal value, int outputColumn) { this.colNum = colNum; this.value = value; this.outputColumn = outputColumn; @@ -64,7 +65,7 @@ public class extends VectorExpression { outputColVector.noNulls = inputColVector.noNulls; outputColVector.isRepeating = inputColVector.isRepeating; int n = batch.size; - Decimal128[] vector = inputColVector.vector; + HiveDecimalWritable[] vector = inputColVector.vector; // return immediately if batch is empty if (n == 0) { @@ -129,26 +130,6 @@ public class extends VectorExpression { public int getOutputColumn() { return outputColumn; } - - public int getColNum() { - return colNum; - } - - public void setColNum(int colNum) { - this.colNum = colNum; - } - - public Decimal128 getValue() { - return value; - } - - public void setValue(Decimal128 value) { - this.value = value; - } - - public void setOutputColumn(int outputColumn) { - this.outputColumn = outputColumn; - } @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { diff --git a/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt b/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt index 418caac57b2f..623bcfb17cbc 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt @@ -24,7 +24,7 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; /** * Generated from template ColumnArithmeticColumnDecimal.txt, which covers binary arithmetic @@ -61,8 +61,8 @@ public class extends VectorExpression { DecimalColumnVector outputColVector = (DecimalColumnVector) batch.cols[outputColumn]; int[] sel = batch.selected; int n = batch.size; - Decimal128[] vector1 = inputColVector1.vector; - Decimal128[] vector2 = inputColVector2.vector; + HiveDecimalWritable[] vector1 = inputColVector1.vector; + HiveDecimalWritable[] vector2 = inputColVector2.vector; // return immediately if batch is empty if (n == 0) { @@ -138,26 +138,6 @@ public class extends VectorExpression { return outputColumn; } - public int getColNum1() { - return colNum1; - } - - public void setColNum1(int colNum1) { - this.colNum1 = colNum1; - } - - public int getColNum2() { - return colNum2; - } - - public void setColNum2(int colNum2) { - this.colNum2 = colNum2; - } - - public void setOutputColumn(int outputColumn) { - this.outputColumn = outputColumn; - } - @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { return (new VectorExpressionDescriptor.Builder()) diff --git a/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt b/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt index dbdb8f60667e..841ef9347d5f 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt @@ -24,7 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import org.apache.hadoop.hive.common.type.HiveDecimal; /** * Generated from template ColumnDivideScalarDecimal.txt, which covers binary arithmetic @@ -35,11 +36,10 @@ public class extends VectorExpression { private static final long serialVersionUID = 1L; private int colNum; - private Decimal128 value; + private HiveDecimal value; private int outputColumn; - private transient Decimal128 zero; // to hold constant 0 for later use - public (int colNum, Decimal128 value, int outputColumn) { + public (int colNum, HiveDecimal value, int outputColumn) { this.colNum = colNum; this.value = value; this.outputColumn = outputColumn; @@ -65,13 +65,8 @@ public class extends VectorExpression { outputColVector.noNulls = inputColVector.noNulls; outputColVector.isRepeating = inputColVector.isRepeating; int n = batch.size; - Decimal128[] vector = inputColVector.vector; - Decimal128[] outputVector = outputColVector.vector; - - // Initialize local variable to use as 0 value on first use. - if (zero == null) { - this.zero = new Decimal128(0, inputColVector.scale); - } + HiveDecimalWritable[] vector = inputColVector.vector; + HiveDecimalWritable[] outputVector = outputColVector.vector; // return immediately if batch is empty if (n == 0) { @@ -90,7 +85,7 @@ public class extends VectorExpression { } - if (value.compareTo(zero) == 0) { + if (value.compareTo(HiveDecimal.ZERO) == 0) { // Denominator is zero, convert the batch to nulls outputColVector.noNulls = false; @@ -142,26 +137,6 @@ public class extends VectorExpression { return outputColumn; } - public int getColNum() { - return colNum; - } - - public void setColNum(int colNum) { - this.colNum = colNum; - } - - public Decimal128 getValue() { - return value; - } - - public void setValue(Decimal128 value) { - this.value = value; - } - - public void setOutputColumn(int outputColumn) { - this.outputColumn = outputColumn; - } - @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { return (new VectorExpressionDescriptor.Builder()) diff --git a/ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt b/ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt index fba5258bd12e..619015eb074d 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt @@ -23,7 +23,7 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.MathExpr; import org.apache.hadoop.hive.ql.exec.vector.*; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; @@ -59,7 +59,7 @@ public class extends VectorExpression { boolean[] outputIsNull = outputColVector.isNull; outputColVector.noNulls = inputColVector.noNulls; int n = batch.size; - Decimal128[] vector = inputColVector.vector; + HiveDecimalWritable[] vector = inputColVector.vector; // return immediately if batch is empty if (n == 0) { @@ -117,18 +117,6 @@ public class extends VectorExpression { public String getOutputType() { return outputType; } - - public int getColNum() { - return colNum; - } - - public void setColNum(int colNum) { - this.colNum = colNum; - } - - public void setOutputColumn(int outputColumn) { - this.outputColumn = outputColumn; - } @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt index 829b9cab2679..d68edfadee4b 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt @@ -18,8 +18,10 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; @@ -37,10 +39,10 @@ public class extends VectorExpression { private int colNum; // The comparison is of the form "column BETWEEN leftValue AND rightValue" - private Decimal128 leftValue; - private Decimal128 rightValue; + private HiveDecimal leftValue; + private HiveDecimal rightValue; - public (int colNum, Decimal128 leftValue, Decimal128 rightValue) { + public (int colNum, HiveDecimal leftValue, HiveDecimal rightValue) { this.colNum = colNum; this.leftValue = leftValue; this.rightValue = rightValue; @@ -60,7 +62,7 @@ public class extends VectorExpression { int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; int n = batch.size; - Decimal128[] vector = inputColVector.vector; + HiveDecimalWritable[] vector = inputColVector.vector; // return immediately if batch is empty if (n == 0) { @@ -72,7 +74,7 @@ public class extends VectorExpression { // All must be selected otherwise size would be zero. // Repeating property will not change. - if ((vector[0].compareTo(leftValue) < 0 || vector[0].compareTo(rightValue) > 0)) { + if ((DecimalUtil.compare(vector[0], leftValue) < 0 || DecimalUtil.compare(vector[0], rightValue) > 0)) { // Entire batch is filtered out. batch.size = 0; @@ -81,7 +83,7 @@ public class extends VectorExpression { int newSize = 0; for(int j = 0; j != n; j++) { int i = sel[j]; - if ((leftValue.compareTo(vector[i]) <= 0 && vector[i].compareTo(rightValue) <= 0)) { + if ((DecimalUtil.compare(leftValue, vector[i]) <= 0 && DecimalUtil.compare(vector[i], rightValue) <= 0)) { sel[newSize++] = i; } } @@ -89,7 +91,7 @@ public class extends VectorExpression { } else { int newSize = 0; for(int i = 0; i != n; i++) { - if ((leftValue.compareTo(vector[i]) <= 0 && vector[i].compareTo(rightValue) <= 0)) { + if ((DecimalUtil.compare(leftValue, vector[i]) <= 0 && DecimalUtil.compare(vector[i], rightValue) <= 0)) { sel[newSize++] = i; } } @@ -104,7 +106,7 @@ public class extends VectorExpression { // All must be selected otherwise size would be zero. // Repeating property will not change. if (!nullPos[0]) { - if ((vector[0].compareTo(leftValue) < 0 || vector[0].compareTo(rightValue) > 0)) { + if ((DecimalUtil.compare(vector[0], leftValue) < 0 || DecimalUtil.compare(vector[0], rightValue) > 0)) { // Entire batch is filtered out. batch.size = 0; @@ -117,7 +119,7 @@ public class extends VectorExpression { for(int j = 0; j != n; j++) { int i = sel[j]; if (!nullPos[i]) { - if ((leftValue.compareTo(vector[i]) <= 0 && vector[i].compareTo(rightValue) <= 0)) { + if ((DecimalUtil.compare(leftValue, vector[i]) <= 0 && DecimalUtil.compare(vector[i], rightValue) <= 0)) { sel[newSize++] = i; } } @@ -129,7 +131,7 @@ public class extends VectorExpression { int newSize = 0; for(int i = 0; i != n; i++) { if (!nullPos[i]) { - if ((leftValue.compareTo(vector[i]) <= 0 && vector[i].compareTo(rightValue) <= 0)) { + if ((DecimalUtil.compare(leftValue, vector[i]) <= 0 && DecimalUtil.compare(vector[i], rightValue) <= 0)) { sel[newSize++] = i; } } @@ -152,30 +154,6 @@ public class extends VectorExpression { return "boolean"; } - public int getColNum() { - return colNum; - } - - public void setColNum(int colNum) { - this.colNum = colNum; - } - - public Decimal128 getLeftValue() { - return leftValue; - } - - public void setLeftValue(Decimal128 value) { - this.leftValue = value; - } - - public Decimal128 getRightValue() { - return rightValue; - } - - public void setRightValue(Decimal128 value) { - this.leftValue = value; - } - @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { return (new VectorExpressionDescriptor.Builder()) diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareColumn.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareColumn.txt index 32c50d9e2f60..353e8496faf7 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareColumn.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareColumn.txt @@ -22,7 +22,7 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; /** * Generated from template FilterDecimalColumnCompareColumn.txt, which covers binary comparison @@ -57,8 +57,8 @@ public class extends VectorExpression { boolean[] nullPos1 = inputColVector1.isNull; boolean[] nullPos2 = inputColVector2.isNull; int n = batch.size; - Decimal128[] vector1 = inputColVector1.vector; - Decimal128[] vector2 = inputColVector2.vector; + HiveDecimalWritable[] vector1 = inputColVector1.vector; + HiveDecimalWritable[] vector2 = inputColVector2.vector; // return immediately if batch is empty if (n == 0) { @@ -428,22 +428,6 @@ public class extends VectorExpression { public int getOutputColumn() { return -1; } - - public int getColNum1() { - return colNum1; - } - - public void setColNum1(int colNum1) { - this.colNum1 = colNum1; - } - - public int getColNum2() { - return colNum2; - } - - public void setColNum2(int colNum2) { - this.colNum2 = colNum2; - } @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareScalar.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareScalar.txt index 34d0438ea903..bdd39b9f108f 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareScalar.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareScalar.txt @@ -20,9 +20,11 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import org.apache.hadoop.hive.common.type.HiveDecimal; /** * This is a generated class to evaluate a comparison on a vector of decimal @@ -33,9 +35,9 @@ public class extends VectorExpression { private static final long serialVersionUID = 1L; private int colNum; - private Decimal128 value; + private HiveDecimal value; - public (int colNum, Decimal128 value) { + public (int colNum, HiveDecimal value) { this.colNum = colNum; this.value = value; } @@ -52,7 +54,7 @@ public class extends VectorExpression { int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; int n = batch.size; - Decimal128[] vector = inputColVector.vector; + HiveDecimalWritable[] vector = inputColVector.vector; // return immediately if batch is empty if (n == 0) { @@ -63,7 +65,7 @@ public class extends VectorExpression { if (inputColVector.isRepeating) { // All must be selected otherwise size would be zero. Repeating property will not change. - if (!(vector[0].compareTo(value) 0)) { + if (!(DecimalUtil.compare(vector[0], value) 0)) { // Entire batch is filtered out. batch.size = 0; @@ -72,7 +74,7 @@ public class extends VectorExpression { int newSize = 0; for(int j = 0; j != n; j++) { int i = sel[j]; - if (vector[i].compareTo(value) 0) { + if (DecimalUtil.compare(vector[i], value) 0) { sel[newSize++] = i; } } @@ -80,7 +82,7 @@ public class extends VectorExpression { } else { int newSize = 0; for(int i = 0; i != n; i++) { - if (vector[i].compareTo(value) 0) { + if (DecimalUtil.compare(vector[i], value) 0) { sel[newSize++] = i; } } @@ -94,7 +96,7 @@ public class extends VectorExpression { // All must be selected otherwise size would be zero. Repeating property will not change. if (!nullPos[0]) { - if (!(vector[0].compareTo(value) 0)) { + if (!(DecimalUtil.compare(vector[0], value) 0)) { // Entire batch is filtered out. batch.size = 0; @@ -107,7 +109,7 @@ public class extends VectorExpression { for(int j = 0; j != n; j++) { int i = sel[j]; if (!nullPos[i]) { - if (vector[i].compareTo(value) 0) { + if (DecimalUtil.compare(vector[i], value) 0) { sel[newSize++] = i; } } @@ -119,7 +121,7 @@ public class extends VectorExpression { int newSize = 0; for(int i = 0; i != n; i++) { if (!nullPos[i]) { - if (vector[i].compareTo(value) 0) { + if (DecimalUtil.compare(vector[i], value) 0) { sel[newSize++] = i; } } @@ -142,22 +144,6 @@ public class extends VectorExpression { return "boolean"; } - public int getColNum() { - return colNum; - } - - public void setColNum(int colNum) { - this.colNum = colNum; - } - - public Decimal128 getValue() { - return value; - } - - public void setValue(Decimal128 value) { - this.value = value; - } - @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { return (new VectorExpressionDescriptor.Builder()) diff --git a/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalScalarCompareColumn.txt b/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalScalarCompareColumn.txt index e3b7307ae8a2..06080163a5db 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalScalarCompareColumn.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalScalarCompareColumn.txt @@ -20,9 +20,11 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import org.apache.hadoop.hive.common.type.HiveDecimal; /** * This is a generated class to evaluate a comparison on a vector of decimal @@ -33,9 +35,9 @@ public class extends VectorExpression { private static final long serialVersionUID = 1L; private int colNum; - private Decimal128 value; + private HiveDecimal value; - public (Decimal128 value, int colNum) { + public (HiveDecimal value, int colNum) { this.colNum = colNum; this.value = value; } @@ -52,7 +54,7 @@ public class extends VectorExpression { int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; int n = batch.size; - Decimal128[] vector = inputColVector.vector; + HiveDecimalWritable[] vector = inputColVector.vector; // return immediately if batch is empty if (n == 0) { @@ -63,7 +65,7 @@ public class extends VectorExpression { if (inputColVector.isRepeating) { // All must be selected otherwise size would be zero. Repeating property will not change. - if (!(value.compareTo(vector[0]) 0)) { + if (!(DecimalUtil.compare(value, vector[0]) 0)) { // Entire batch is filtered out. batch.size = 0; @@ -72,7 +74,7 @@ public class extends VectorExpression { int newSize = 0; for(int j = 0; j != n; j++) { int i = sel[j]; - if (value.compareTo(vector[i]) 0) { + if (DecimalUtil.compare(value, vector[i]) 0) { sel[newSize++] = i; } } @@ -80,7 +82,7 @@ public class extends VectorExpression { } else { int newSize = 0; for(int i = 0; i != n; i++) { - if (value.compareTo(vector[i]) 0) { + if (DecimalUtil.compare(value, vector[i]) 0) { sel[newSize++] = i; } } @@ -94,7 +96,7 @@ public class extends VectorExpression { // All must be selected otherwise size would be zero. Repeating property will not change. if (!nullPos[0]) { - if (!(value.compareTo(vector[0]) 0)) { + if (!(DecimalUtil.compare(value, vector[0]) 0)) { // Entire batch is filtered out. batch.size = 0; @@ -107,7 +109,7 @@ public class extends VectorExpression { for(int j = 0; j != n; j++) { int i = sel[j]; if (!nullPos[i]) { - if (value.compareTo(vector[i]) 0) { + if (DecimalUtil.compare(value, vector[i]) 0) { sel[newSize++] = i; } } @@ -119,7 +121,7 @@ public class extends VectorExpression { int newSize = 0; for(int i = 0; i != n; i++) { if (!nullPos[i]) { - if (value.compareTo(vector[i]) 0) { + if (DecimalUtil.compare(value, vector[i]) 0) { sel[newSize++] = i; } } @@ -142,22 +144,6 @@ public class extends VectorExpression { return "boolean"; } - public int getColNum() { - return colNum; - } - - public void setColNum(int colNum) { - this.colNum = colNum; - } - - public Decimal128 getValue() { - return value; - } - - public void setValue(Decimal128 value) { - this.value = value; - } - @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { return (new VectorExpressionDescriptor.Builder()) diff --git a/ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt b/ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt index 967e0d483836..ea55becaff5c 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt @@ -24,7 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import org.apache.hadoop.hive.common.type.HiveDecimal; /** * Generated from template ScalarArithmeticColumnDecimal.txt, which covers binary arithmetic @@ -35,10 +36,10 @@ public class extends VectorExpression { private static final long serialVersionUID = 1L; private int colNum; - private Decimal128 value; + private HiveDecimal value; private int outputColumn; - public (Decimal128 value, int colNum, int outputColumn) { + public (HiveDecimal value, int colNum, int outputColumn) { this.colNum = colNum; this.value = value; this.outputColumn = outputColumn; @@ -64,7 +65,7 @@ public class extends VectorExpression { outputColVector.noNulls = inputColVector.noNulls; outputColVector.isRepeating = inputColVector.isRepeating; int n = batch.size; - Decimal128[] vector = inputColVector.vector; + HiveDecimalWritable[] vector = inputColVector.vector; // return immediately if batch is empty if (n == 0) { @@ -126,26 +127,6 @@ public class extends VectorExpression { public int getOutputColumn() { return outputColumn; } - - public int getColNum() { - return colNum; - } - - public void setColNum(int colNum) { - this.colNum = colNum; - } - - public Decimal128 getValue() { - return value; - } - - public void setValue(Decimal128 value) { - this.value = value; - } - - public void setOutputColumn(int outputColumn) { - this.outputColumn = outputColumn; - } @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { diff --git a/ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt b/ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt index 84ed925eb882..c8a5d172fe3c 100644 --- a/ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt +++ b/ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt @@ -24,7 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import org.apache.hadoop.hive.common.type.HiveDecimal; /** * Generated from template ScalarDivideColumnDecimal.txt, which covers binary arithmetic @@ -35,10 +36,10 @@ public class extends VectorExpression { private static final long serialVersionUID = 1L; private int colNum; - private Decimal128 value; + private HiveDecimal value; private int outputColumn; - public (Decimal128 value, int colNum, int outputColumn) { + public (HiveDecimal value, int colNum, int outputColumn) { this.colNum = colNum; this.value = value; this.outputColumn = outputColumn; @@ -64,8 +65,8 @@ public class extends VectorExpression { outputColVector.noNulls = inputColVector.noNulls; outputColVector.isRepeating = inputColVector.isRepeating; int n = batch.size; - Decimal128[] vector = inputColVector.vector; - Decimal128[] outputVector = outputColVector.vector; + HiveDecimalWritable[] vector = inputColVector.vector; + HiveDecimalWritable[] outputVector = outputColVector.vector; // return immediately if batch is empty if (n == 0) { @@ -129,26 +130,6 @@ public class extends VectorExpression { return outputColumn; } - public int getColNum() { - return colNum; - } - - public void setColNum(int colNum) { - this.colNum = colNum; - } - - public Decimal128 getValue() { - return value; - } - - public void setValue(Decimal128 value) { - this.value = value; - } - - public void setOutputColumn(int outputColumn) { - this.outputColumn = outputColumn; - } - @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { return (new VectorExpressionDescriptor.Builder()) diff --git a/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxDecimal.txt b/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxDecimal.txt index ea3666a7767e..6912ceda3a80 100644 --- a/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxDecimal.txt +++ b/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxDecimal.txt @@ -18,7 +18,6 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen; -import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; @@ -31,6 +30,7 @@ import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.plan.AggregationDesc; import org.apache.hadoop.hive.ql.util.JavaDataModel; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; /** @@ -49,7 +49,7 @@ public class extends VectorAggregateExpression { private static final long serialVersionUID = 1L; - transient private final Decimal128 value; + transient private final HiveDecimalWritable value; /** * Value is explicitly (re)initialized in reset() @@ -57,15 +57,16 @@ public class extends VectorAggregateExpression { transient private boolean isNull = true; public Aggregation() { - value = new Decimal128(); + value = new HiveDecimalWritable(); } - public void checkValue(Decimal128 value, short scale) { + public void checkValue(HiveDecimalWritable writable, short scale) { + HiveDecimal value = writable.getHiveDecimal(); if (isNull) { isNull = false; - this.value.update(value); - } else if (this.value.compareTo(value) 0) { - this.value.update(value, scale); + this.value.set(value); + } else if (this.value.getHiveDecimal().compareTo(value) 0) { + this.value.set(value); } } @@ -77,7 +78,7 @@ public class extends VectorAggregateExpression { @Override public void reset () { isNull = true; - value.zeroClear(); + value.set(HiveDecimal.ZERO); } } @@ -124,7 +125,7 @@ public class extends VectorAggregateExpression { DecimalColumnVector inputVector = (DecimalColumnVector)batch. cols[this.inputExpression.getOutputColumn()]; - Decimal128[] vector = inputVector.vector; + HiveDecimalWritable[] vector = inputVector.vector; if (inputVector.noNulls) { if (inputVector.isRepeating) { @@ -170,7 +171,7 @@ public class extends VectorAggregateExpression { private void iterateNoNullsRepeatingWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregrateIndex, - Decimal128 value, + HiveDecimalWritable value, short scale, int batchSize) { @@ -186,7 +187,7 @@ public class extends VectorAggregateExpression { private void iterateNoNullsSelectionWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregrateIndex, - Decimal128[] values, + HiveDecimalWritable[] values, short scale, int[] selection, int batchSize) { @@ -203,7 +204,7 @@ public class extends VectorAggregateExpression { private void iterateNoNullsWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregrateIndex, - Decimal128[] values, + HiveDecimalWritable[] values, short scale, int batchSize) { for (int i=0; i < batchSize; ++i) { @@ -218,7 +219,7 @@ public class extends VectorAggregateExpression { private void iterateHasNullsRepeatingSelectionWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregrateIndex, - Decimal128 value, + HiveDecimalWritable value, short scale, int batchSize, int[] selection, @@ -239,7 +240,7 @@ public class extends VectorAggregateExpression { private void iterateHasNullsRepeatingWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregrateIndex, - Decimal128 value, + HiveDecimalWritable value, short scale, int batchSize, boolean[] isNull) { @@ -258,7 +259,7 @@ public class extends VectorAggregateExpression { private void iterateHasNullsSelectionWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregrateIndex, - Decimal128[] values, + HiveDecimalWritable[] values, short scale, int batchSize, int[] selection, @@ -279,7 +280,7 @@ public class extends VectorAggregateExpression { private void iterateHasNullsWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregrateIndex, - Decimal128[] values, + HiveDecimalWritable[] values, short scale, int batchSize, boolean[] isNull) { @@ -312,13 +313,14 @@ public class extends VectorAggregateExpression { Aggregation myagg = (Aggregation)agg; - Decimal128[] vector = inputVector.vector; + HiveDecimalWritable[] vector = inputVector.vector; if (inputVector.isRepeating) { if (inputVector.noNulls && (myagg.isNull || (myagg.value.compareTo(vector[0]) 0))) { myagg.isNull = false; - myagg.value.update(vector[0], inputVector.scale); + HiveDecimal value = vector[0].getHiveDecimal(); + myagg.value.set(value); } return; } @@ -341,7 +343,7 @@ public class extends VectorAggregateExpression { private void iterateSelectionHasNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize, boolean[] isNull, @@ -350,13 +352,13 @@ public class extends VectorAggregateExpression { for (int j=0; j< batchSize; ++j) { int i = selected[j]; if (!isNull[i]) { - Decimal128 value = vector[i]; + HiveDecimal value = vector[i].getHiveDecimal(); if (myagg.isNull) { myagg.isNull = false; - myagg.value.update(value); + myagg.value.set(value); } - else if (myagg.value.compareTo(value) 0) { - myagg.value.update(value, scale); + else if (myagg.value.getHiveDecimal().compareTo(value) 0) { + myagg.value.set(value); } } } @@ -364,40 +366,41 @@ public class extends VectorAggregateExpression { private void iterateSelectionNoNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize, int[] selected) { if (myagg.isNull) { - myagg.value.update(vector[selected[0]]); + HiveDecimal value = vector[selected[0]].getHiveDecimal(); + myagg.value.set(value); myagg.isNull = false; } for (int i=0; i< batchSize; ++i) { - Decimal128 value = vector[selected[i]]; - if (myagg.value.compareTo(value) 0) { - myagg.value.update(value, scale); + HiveDecimal value = vector[selected[i]].getHiveDecimal(); + if (myagg.value.getHiveDecimal().compareTo(value) 0) { + myagg.value.set(value); } } } private void iterateNoSelectionHasNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize, boolean[] isNull) { for(int i=0;i 0) { - myagg.value.update(value, scale); + else if (myagg.value.getHiveDecimal().compareTo(value) 0) { + myagg.value.set(value); } } } @@ -405,18 +408,19 @@ public class extends VectorAggregateExpression { private void iterateNoSelectionNoNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize) { if (myagg.isNull) { - myagg.value.update(vector[0]); + HiveDecimal value = vector[0].getHiveDecimal(); + myagg.value.set(value); myagg.isNull = false; } for (int i=0;i 0) { - myagg.value.update(value, scale); + HiveDecimal value = vector[i].getHiveDecimal(); + if (myagg.value.getHiveDecimal().compareTo(value) 0) { + myagg.value.set(value); } } } diff --git a/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVarDecimal.txt b/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVarDecimal.txt index 048c354f4a20..8fc94ba55c54 100644 --- a/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVarDecimal.txt +++ b/ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVarDecimal.txt @@ -21,7 +21,7 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen; import java.util.ArrayList; import java.util.List; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; @@ -86,12 +86,12 @@ public class extends VectorAggregateExpression { variance = 0f; } - public void updateValueWithCheckAndInit(Decimal128 value, short scale) { + public void updateValueWithCheckAndInit(HiveDecimalWritable value, short scale) { if (this.isNull) { this.init(); } - double dval = value.doubleValue(); + double dval = value.getHiveDecimal().doubleValue(); this.sum += dval; this.count += 1; if(this.count > 1) { @@ -100,8 +100,8 @@ public class extends VectorAggregateExpression { } } - public void updateValueNoCheck(Decimal128 value, short scale) { - double dval = value.doubleValue(); + public void updateValueNoCheck(HiveDecimalWritable value, short scale) { + double dval = value.getHiveDecimal().doubleValue(); this.sum += dval; this.count += 1; double t = this.count*dval - this.sum; @@ -176,7 +176,7 @@ public class extends VectorAggregateExpression { return; } - Decimal128[] vector = inputVector.vector; + HiveDecimalWritable[] vector = inputVector.vector; if (inputVector.isRepeating) { if (inputVector.noNulls || !inputVector.isNull[0]) { @@ -209,7 +209,7 @@ public class extends VectorAggregateExpression { private void iterateRepeatingNoNullsWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregateIndex, - Decimal128 value, + HiveDecimalWritable value, short scale, int batchSize) { @@ -225,7 +225,7 @@ public class extends VectorAggregateExpression { private void iterateSelectionHasNullsWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregateIndex, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize, boolean[] isNull, @@ -238,7 +238,7 @@ public class extends VectorAggregateExpression { j); int i = selected[j]; if (!isNull[i]) { - Decimal128 value = vector[i]; + HiveDecimalWritable value = vector[i]; myagg.updateValueWithCheckAndInit(value, scale); } } @@ -247,7 +247,7 @@ public class extends VectorAggregateExpression { private void iterateSelectionNoNullsWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregateIndex, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize, int[] selected) { @@ -257,7 +257,7 @@ public class extends VectorAggregateExpression { aggregationBufferSets, aggregateIndex, i); - Decimal128 value = vector[selected[i]]; + HiveDecimalWritable value = vector[selected[i]]; myagg.updateValueWithCheckAndInit(value, scale); } } @@ -265,7 +265,7 @@ public class extends VectorAggregateExpression { private void iterateNoSelectionHasNullsWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregateIndex, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize, boolean[] isNull) { @@ -276,7 +276,7 @@ public class extends VectorAggregateExpression { aggregationBufferSets, aggregateIndex, i); - Decimal128 value = vector[i]; + HiveDecimalWritable value = vector[i]; myagg.updateValueWithCheckAndInit(value, scale); } } @@ -285,7 +285,7 @@ public class extends VectorAggregateExpression { private void iterateNoSelectionNoNullsWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int aggregateIndex, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize) { @@ -294,7 +294,7 @@ public class extends VectorAggregateExpression { aggregationBufferSets, aggregateIndex, i); - Decimal128 value = vector[i]; + HiveDecimalWritable value = vector[i]; myagg.updateValueWithCheckAndInit(value, scale); } } @@ -316,7 +316,7 @@ public class extends VectorAggregateExpression { Aggregation myagg = (Aggregation)agg; - Decimal128[] vector = inputVector.vector; + HiveDecimalWritable[] vector = inputVector.vector; if (inputVector.isRepeating) { if (inputVector.noNulls) { @@ -340,7 +340,7 @@ public class extends VectorAggregateExpression { private void iterateRepeatingNoNulls( Aggregation myagg, - Decimal128 value, + HiveDecimalWritable value, short scale, int batchSize) { @@ -357,7 +357,7 @@ public class extends VectorAggregateExpression { private void iterateSelectionHasNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize, boolean[] isNull, @@ -366,7 +366,7 @@ public class extends VectorAggregateExpression { for (int j=0; j< batchSize; ++j) { int i = selected[j]; if (!isNull[i]) { - Decimal128 value = vector[i]; + HiveDecimalWritable value = vector[i]; myagg.updateValueWithCheckAndInit(value, scale); } } @@ -374,7 +374,7 @@ public class extends VectorAggregateExpression { private void iterateSelectionNoNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize, int[] selected) { @@ -383,7 +383,7 @@ public class extends VectorAggregateExpression { myagg.init (); } - Decimal128 value = vector[selected[0]]; + HiveDecimalWritable value = vector[selected[0]]; myagg.updateValueWithCheckAndInit(value, scale); // i=0 was pulled out to remove the count > 1 check in the loop @@ -396,14 +396,14 @@ public class extends VectorAggregateExpression { private void iterateNoSelectionHasNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize, boolean[] isNull) { for(int i=0;i extends VectorAggregateExpression { private void iterateNoSelectionNoNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, short scale, int batchSize) { @@ -419,7 +419,7 @@ public class extends VectorAggregateExpression { myagg.init (); } - Decimal128 value = vector[0]; + HiveDecimalWritable value = vector[0]; myagg.updateValueWithCheckAndInit(value, scale); // i=0 was pulled out to remove count > 1 check diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/DecimalColumnVector.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/DecimalColumnVector.java index 8672922b9c9c..5009a42b2b71 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/DecimalColumnVector.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/DecimalColumnVector.java @@ -17,26 +17,25 @@ */ package org.apache.hadoop.hive.ql.exec.vector; -import org.apache.hadoop.hive.common.type.Decimal128; + +import java.math.BigInteger; + +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; -import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.Writable; public class DecimalColumnVector extends ColumnVector { /** - * A vector if Decimal128 objects. These are mutable and have fairly - * efficient operations on them. This will make it faster to load - * column vectors and perform decimal vector operations with decimal- - * specific VectorExpressions. + * A vector of HiveDecimalWritable objects. * * For high performance and easy access to this low-level structure, * the fields are public by design (as they are in other ColumnVector * types). */ - public Decimal128[] vector; + public HiveDecimalWritable[] vector; public short scale; public short precision; @@ -51,9 +50,9 @@ public DecimalColumnVector(int size, int precision, int scale) { this.precision = (short) precision; this.scale = (short) scale; final int len = size; - vector = new Decimal128[len]; + vector = new HiveDecimalWritable[len]; for (int i = 0; i < len; i++) { - vector[i] = new Decimal128(0, this.scale); + vector[i] = new HiveDecimalWritable(HiveDecimal.ZERO); } } @@ -65,8 +64,7 @@ public Writable getWritableObject(int index) { if (!noNulls && isNull[index]) { return NullWritable.get(); } else { - Decimal128 dec = vector[index]; - writableObj.set(HiveDecimal.create(dec.toBigDecimal())); + writableObj.set(vector[index]); return writableObj; } } @@ -78,22 +76,38 @@ public void flatten(boolean selectedInUse, int[] sel, int size) { @Override public void setElement(int outElementNum, int inputElementNum, ColumnVector inputVector) { - vector[outElementNum].update(((DecimalColumnVector) inputVector).vector[inputElementNum]); - vector[outElementNum].changeScaleDestructive(scale); + HiveDecimal hiveDec = ((DecimalColumnVector) inputVector).vector[inputElementNum].getHiveDecimal(precision, scale); + if (hiveDec == null) { + noNulls = false; + isNull[outElementNum] = true; + } else { + vector[outElementNum].set(hiveDec); + } } - /** - * Check if the value at position i fits in the available precision, - * and convert the value to NULL if it does not. - */ - public void checkPrecisionOverflow(int i) { - try { - vector[i].checkPrecisionOverflow(precision); - } catch (ArithmeticException e) { + public void set(int elementNum, HiveDecimalWritable writeable) { + HiveDecimal hiveDec = writeable.getHiveDecimal(precision, scale); + if (hiveDec == null) { + noNulls = false; + isNull[elementNum] = true; + } else { + vector[elementNum].set(hiveDec); + } + } - // If the value won't fit in the available precision, the result is NULL + public void set(int elementNum, HiveDecimal hiveDec) { + HiveDecimal checkedDec = HiveDecimal.enforcePrecisionScale(hiveDec, precision, scale); + if (checkedDec == null) { noNulls = false; - isNull[i] = true; + isNull[elementNum] = true; + } else { + vector[elementNum].set(checkedDec); } } + + public void setNullDataValue(int elementNum) { + // E.g. For scale 2 the minimum is "0.01" + HiveDecimal minimumNonZeroValue = HiveDecimal.create(BigInteger.ONE, scale); + vector[elementNum].set(minimumNonZeroValue); + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java index 14ef79e8bd7c..24b34b196380 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java @@ -23,7 +23,6 @@ import java.util.List; import java.util.Map; -import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.common.type.HiveChar; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.common.type.HiveVarchar; @@ -152,18 +151,12 @@ public void reset() { private static abstract class VectorDecimalColumnAssign extends VectorColumnAssignVectorBase { + protected void assignDecimal(HiveDecimal value, int index) { - outCol.vector[index].update(value.unscaledValue(), (byte) value.scale()); - } - - protected void assignDecimal(Decimal128 value, int index) { - outCol.vector[index].update(value); + outCol.set(index, value); } protected void assignDecimal(HiveDecimalWritable hdw, int index) { - byte[] internalStorage = hdw.getInternalStorage(); - int scale = hdw.getScale(); - - outCol.vector[index].fastUpdateFromInternalStorage(internalStorage, (short)scale); + outCol.set(index, hdw); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java index 96c449830ed7..fabac38ad24d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupKeyHelper.java @@ -113,9 +113,9 @@ public void copyGroupKey(VectorizedRowBatch inputBatch, VectorizedRowBatch outpu DecimalColumnVector outputColumnVector = (DecimalColumnVector) outputBatch.cols[keyIndex]; if (inputColumnVector.noNulls || !inputColumnVector.isNull[0]) { - // Since we store references to Decimal128 instances, we must use the update method instead + // Since we store references to HiveDecimalWritable instances, we must use the update method instead // of plain assignment. - outputColumnVector.vector[outputBatch.size].update(inputColumnVector.vector[0]); + outputColumnVector.set(outputBatch.size, inputColumnVector.vector[0]); } else { outputColumnVector.noNulls = false; outputColumnVector.isNull[outputBatch.size] = true; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java index f32b8beabb3a..626cea57a8e7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapper.java @@ -20,7 +20,8 @@ import java.util.Arrays; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.KeyWrapper; import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr; import org.apache.hadoop.hive.ql.metadata.HiveException; @@ -40,7 +41,7 @@ public class VectorHashKeyWrapper extends KeyWrapper { private static final long[] EMPTY_LONG_ARRAY = new long[0]; private static final double[] EMPTY_DOUBLE_ARRAY = new double[0]; private static final byte[][] EMPTY_BYTES_ARRAY = new byte[0][]; - private static final Decimal128[] EMPTY_DECIMAL_ARRAY = new Decimal128[0]; + private static final HiveDecimalWritable[] EMPTY_DECIMAL_ARRAY = new HiveDecimalWritable[0]; private long[] longValues; private double[] doubleValues; @@ -49,7 +50,7 @@ public class VectorHashKeyWrapper extends KeyWrapper { private int[] byteStarts; private int[] byteLengths; - private Decimal128[] decimalValues; + private HiveDecimalWritable[] decimalValues; private boolean[] isNull; private int hashcode; @@ -58,9 +59,9 @@ public VectorHashKeyWrapper(int longValuesCount, int doubleValuesCount, int byteValuesCount, int decimalValuesCount) { longValues = longValuesCount > 0 ? new long[longValuesCount] : EMPTY_LONG_ARRAY; doubleValues = doubleValuesCount > 0 ? new double[doubleValuesCount] : EMPTY_DOUBLE_ARRAY; - decimalValues = decimalValuesCount > 0 ? new Decimal128[decimalValuesCount] : EMPTY_DECIMAL_ARRAY; + decimalValues = decimalValuesCount > 0 ? new HiveDecimalWritable[decimalValuesCount] : EMPTY_DECIMAL_ARRAY; for(int i = 0; i < decimalValuesCount; ++i) { - decimalValues[i] = new Decimal128(); + decimalValues[i] = new HiveDecimalWritable(HiveDecimal.ZERO); } if (byteValuesCount > 0) { byteValues = new byte[byteValuesCount][]; @@ -87,9 +88,12 @@ public void getNewKey(Object row, ObjectInspector rowInspector) throws HiveExcep public void setHashKey() { hashcode = Arrays.hashCode(longValues) ^ Arrays.hashCode(doubleValues) ^ - Arrays.hashCode(decimalValues) ^ Arrays.hashCode(isNull); + for (int i = 0; i < decimalValues.length; i++) { + hashcode ^= decimalValues[i].getHiveDecimal().hashCode(); + } + // This code, with branches and all, is not executed if there are no string keys for (int i = 0; i < byteValues.length; ++i) { /* @@ -166,10 +170,10 @@ public void duplicateTo(VectorHashKeyWrapper clone) { clone.isNull = isNull.clone(); if (decimalValues.length > 0) { - // Decimal128 requires deep clone - clone.decimalValues = new Decimal128[decimalValues.length]; - for (int i = 0; i < decimalValues.length; ++i) { - clone.decimalValues[i] = new Decimal128().update(decimalValues[i]); + // Decimal columns use HiveDecimalWritable. + clone.decimalValues = new HiveDecimalWritable[decimalValues.length]; + for(int i = 0; i < decimalValues.length; ++i) { + clone.decimalValues[i] = new HiveDecimalWritable(decimalValues[i]); } } else { clone.decimalValues = EMPTY_DECIMAL_ARRAY; @@ -243,8 +247,8 @@ public void assignNullString(int index) { isNull[longValues.length + doubleValues.length + index] = true; } - public void assignDecimal(int index, Decimal128 value) { - decimalValues[index].update(value); + public void assignDecimal(int index, HiveDecimalWritable value) { + decimalValues[index].set(value); isNull[longValues.length + doubleValues.length + byteValues.length + index] = false; } @@ -308,7 +312,7 @@ public boolean getIsDecimalNull(int i) { return isNull[longValues.length + doubleValues.length + byteValues.length + i]; } - public Decimal128 getDecimal(int i) { + public HiveDecimalWritable getDecimal(int i) { return decimalValues[i]; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapperBatch.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapperBatch.java index 7bda38f6a333..6333222b1c86 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapperBatch.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorHashKeyWrapperBatch.java @@ -580,7 +580,7 @@ public Object getWritableKeyValue(VectorHashKeyWrapper kw, int i, } else if (klh.decimalIndex >= 0) { return kw.getIsDecimalNull(klh.decimalIndex)? null : keyOutputWriter.writeValue( - kw.getDecimal(klh.decimalIndex)); + kw.getDecimal(klh.decimalIndex).getHiveDecimal()); } else { throw new HiveException(String.format( diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java index 42ad37d29a80..dbc9bb26878f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hive.ql.exec.vector; import java.lang.reflect.Constructor; +import java.math.BigDecimal; import java.sql.Date; import java.sql.Timestamp; import java.util.ArrayList; @@ -34,7 +35,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.hive.common.type.HiveChar; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.common.type.HiveVarchar; @@ -868,7 +869,7 @@ private VectorExpression getConstantVectorExpression(Object constantValue, TypeI case FLOAT_FAMILY: return new ConstantVectorExpression(outCol, ((Number) constantValue).doubleValue()); case DECIMAL: - VectorExpression ve = new ConstantVectorExpression(outCol, (Decimal128) constantValue); + VectorExpression ve = new ConstantVectorExpression(outCol, (HiveDecimal) constantValue); // Set type name with decimal precision, scale, etc. ve.setOutputType(typeName); return ve; @@ -1237,9 +1238,9 @@ private VectorExpression getInExpression(List childExpr, Mode mode ((IDoubleInExpr) expr).setInListValues(inValsD); } else if (isDecimalFamily(colType)) { cl = (mode == Mode.FILTER ? FilterDecimalColumnInList.class : DecimalColumnInList.class); - Decimal128[] inValsD = new Decimal128[childrenForInList.size()]; + HiveDecimal[] inValsD = new HiveDecimal[childrenForInList.size()]; for (int i = 0; i != inValsD.length; i++) { - inValsD[i] = (Decimal128) getVectorTypeScalarValue( + inValsD[i] = (HiveDecimal) getVectorTypeScalarValue( (ExprNodeConstantDesc) childrenForInList.get(i)); } expr = createVectorExpression(cl, childExpr.subList(0, 1), Mode.PROJECTION, returnType); @@ -1287,44 +1288,43 @@ private VectorExpression getGenericUDFBridgeVectorExpression(GenericUDFBridge ud return null; } - private Decimal128 castConstantToDecimal(Object scalar, TypeInfo type) throws HiveException { + private HiveDecimal castConstantToDecimal(Object scalar, TypeInfo type) throws HiveException { PrimitiveTypeInfo ptinfo = (PrimitiveTypeInfo) type; - String typename = type.getTypeName(); - Decimal128 d = new Decimal128(); int scale = HiveDecimalUtils.getScaleForType(ptinfo); + String typename = type.getTypeName(); + HiveDecimal rawDecimal; switch (ptinfo.getPrimitiveCategory()) { case FLOAT: - float floatVal = ((Float) scalar).floatValue(); - d.update(floatVal, (short) scale); + rawDecimal = HiveDecimal.create(String.valueOf((Float) scalar)); break; case DOUBLE: - double doubleVal = ((Double) scalar).doubleValue(); - d.update(doubleVal, (short) scale); + rawDecimal = HiveDecimal.create(String.valueOf((Double) scalar)); break; case BYTE: - byte byteVal = ((Byte) scalar).byteValue(); - d.update(byteVal, (short) scale); + rawDecimal = HiveDecimal.create((Byte) scalar); break; case SHORT: - short shortVal = ((Short) scalar).shortValue(); - d.update(shortVal, (short) scale); + rawDecimal = HiveDecimal.create((Short) scalar); break; case INT: - int intVal = ((Integer) scalar).intValue(); - d.update(intVal, (short) scale); + rawDecimal = HiveDecimal.create((Integer) scalar); break; case LONG: - long longVal = ((Long) scalar).longValue(); - d.update(longVal, (short) scale); + rawDecimal = HiveDecimal.create((Long) scalar); break; case DECIMAL: - HiveDecimal decimalVal = (HiveDecimal) scalar; - d.update(decimalVal.unscaledValue(), (short) scale); + rawDecimal = (HiveDecimal) scalar; break; default: - throw new HiveException("Unsupported type "+typename+" for cast to Decimal128"); + throw new HiveException("Unsupported type " + typename + " for cast to HiveDecimal"); + } + if (rawDecimal == null) { + if (LOG.isDebugEnabled()) { + LOG.debug("Casting constant scalar " + scalar + " to HiveDecimal resulted in null"); + } + return null; } - return d; + return rawDecimal; } private String castConstantToString(Object scalar, TypeInfo type) throws HiveException { @@ -1391,7 +1391,7 @@ private VectorExpression getCastToDecimal(List childExpr, TypeInfo if (child instanceof ExprNodeConstantDesc) { // Return a constant vector expression Object constantValue = ((ExprNodeConstantDesc) child).getValue(); - Decimal128 decimalValue = castConstantToDecimal(constantValue, child.getTypeInfo()); + HiveDecimal decimalValue = castConstantToDecimal(constantValue, child.getTypeInfo()); return getConstantVectorExpression(decimalValue, returnType, Mode.PROJECTION); } else if (child instanceof ExprNodeNullDesc) { return getConstantVectorExpression(null, returnType, Mode.PROJECTION); @@ -1801,10 +1801,7 @@ private Object getScalarValue(ExprNodeConstantDesc constDesc) return 0; } } else if (decimalTypePattern.matcher(constDesc.getTypeString()).matches()) { - HiveDecimal hd = (HiveDecimal) constDesc.getValue(); - Decimal128 dvalue = new Decimal128(); - dvalue.update(hd.unscaledValue(), (short) hd.scale()); - return dvalue; + return (HiveDecimal) constDesc.getValue(); } else { return constDesc.getValue(); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java index 7b9c0a709d8e..e304cf8a7acc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java @@ -481,8 +481,7 @@ private static void setVector(Object row, if (writableCol != null) { dcv.isNull[rowIndex] = false; HiveDecimalWritable wobj = (HiveDecimalWritable) writableCol; - dcv.vector[rowIndex].update(wobj.getHiveDecimal().unscaledValue(), - (short) wobj.getScale()); + dcv.set(rowIndex, wobj); } else { setNullColIsNullValue(dcv, rowIndex); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java index f3d6a27dd1f7..88ec2b2fba2a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java @@ -34,7 +34,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants; import org.apache.hadoop.hive.ql.exec.Utilities; @@ -539,7 +538,7 @@ public void addPartitionColsToBatch(VectorizedRowBatch batch) throws HiveExcepti dv.isRepeating = true; } else { HiveDecimal hd = (HiveDecimal) value; - dv.vector[0] = new Decimal128(hd.toString(), (short) hd.scale()); + dv.set(0, hd); dv.isRepeating = true; dv.isNull[0] = false; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToBoolean.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToBoolean.java index 7bbe153dd9a8..9621cd3bfcc6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToBoolean.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToBoolean.java @@ -41,6 +41,6 @@ public CastDecimalToBoolean(int inputColumn, int outputColumn) { * Otherwise, return 1 for true. */ protected void func(LongColumnVector outV, DecimalColumnVector inV, int i) { - outV.vector[i] = inV.vector[i].getSignum() == 0 ? 0 : 1; + outV.vector[i] = inV.vector[i].getHiveDecimal().signum() == 0 ? 0 : 1; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDecimal.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDecimal.java index fa0143f11e1e..ea235d91e110 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDecimal.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDecimal.java @@ -52,9 +52,8 @@ public CastDecimalToDecimal() { * at position i in the respective vectors. */ protected void convert(DecimalColumnVector outV, DecimalColumnVector inV, int i) { - outV.vector[i].update(inV.vector[i]); - outV.vector[i].changeScaleDestructive(outV.scale); - outV.checkPrecisionOverflow(i); + // The set routine enforces precision and scale. + outV.vector[i].set(inV.vector[i]); } /** diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDouble.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDouble.java index 9cf97f47428a..63d878d8cc68 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDouble.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDouble.java @@ -34,6 +34,6 @@ public CastDecimalToDouble(int inputCol, int outputCol) { } protected void func(DoubleColumnVector outV, DecimalColumnVector inV, int i) { - outV.vector[i] = inV.vector[i].doubleValue(); + outV.vector[i] = inV.vector[i].getHiveDecimal().doubleValue(); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToLong.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToLong.java index d5f34d52221b..045f0abc2759 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToLong.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToLong.java @@ -37,6 +37,6 @@ public CastDecimalToLong(int inputColumn, int outputColumn) { @Override protected void func(LongColumnVector outV, DecimalColumnVector inV, int i) { - outV.vector[i] = inV.vector[i].longValue(); + outV.vector[i] = inV.vector[i].getHiveDecimal().longValue(); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToString.java index 6d0149831787..33788429bb91 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToString.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToString.java @@ -20,6 +20,7 @@ import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalToStringUnaryUDF; /** * To support vectorized cast of decimal to string. @@ -43,7 +44,7 @@ protected void assign(BytesColumnVector outV, int i, byte[] bytes, int length) { @Override protected void func(BytesColumnVector outV, DecimalColumnVector inV, int i) { - String s = inV.vector[i].getHiveDecimalString(); + String s = inV.vector[i].getHiveDecimal().toString(); byte[] b = null; try { b = s.getBytes("UTF-8"); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java index 0a445f413685..a52cf198ca97 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java @@ -18,8 +18,7 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; -import org.apache.hadoop.hive.common.type.Decimal128; -import org.apache.hadoop.hive.common.type.SqlMathUtil; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; @@ -31,34 +30,23 @@ public class CastDecimalToTimestamp extends FuncDecimalToLong { private static final long serialVersionUID = 1L; - /* The field tmp is a scratch variable for this operation. It is - * purposely not made static because if this code is ever made multi-threaded, - * each thread will then have its own VectorExpression tree and thus - * its own copy of the variable. - */ - private transient Decimal128 tmp = null; - private static transient Decimal128 tenE9 = new Decimal128(1000000000); + private static transient HiveDecimal tenE9 = HiveDecimal.create(1000000000); public CastDecimalToTimestamp(int inputColumn, int outputColumn) { super(inputColumn, outputColumn); - tmp = new Decimal128(0); } public CastDecimalToTimestamp() { - - // initialize local field after deserialization - tmp = new Decimal128(0); } @Override protected void func(LongColumnVector outV, DecimalColumnVector inV, int i) { - tmp.update(inV.vector[i]); - - // Reduce scale at most by 9, therefore multiplication will not require rounding. - int newScale = inV.scale > 9 ? (inV.scale - 9) : 0; - tmp.multiplyDestructive(tenE9, (short) newScale); - - // set output - outV.vector[i] = tmp.longValue(); + HiveDecimal result = inV.vector[i].getHiveDecimal().multiply(tenE9); + if (result == null) { + outV.noNulls = false; + outV.isNull[i] = true; + } else { + outV.vector[i] = result.longValue(); + } } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToDecimal.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToDecimal.java index 36a1fcb53604..6d6b5880d8e5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToDecimal.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToDecimal.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector; @@ -38,7 +39,7 @@ public CastDoubleToDecimal(int inputColumn, int outputColumn) { @Override protected void func(DecimalColumnVector outV, DoubleColumnVector inV, int i) { - outV.vector[i].update(inV.vector[i], outV.scale); - outV.checkPrecisionOverflow(i); + String s = ((Double) inV.vector[i]).toString(); + outV.vector[i].set(HiveDecimal.create(s)); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToDecimal.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToDecimal.java index d1a49770c973..ba8bcae4cb63 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToDecimal.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToDecimal.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; @@ -40,7 +41,6 @@ public CastLongToDecimal(int inputColumn, int outputColumn) { @Override protected void func(DecimalColumnVector outV, LongColumnVector inV, int i) { - outV.vector[i].update(inV.vector[i], outV.scale); - outV.checkPrecisionOverflow(i); + outV.vector[i].set(HiveDecimal.create(inV.vector[i])); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDecimal.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDecimal.java index e58fc9a1634b..504b3548f901 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDecimal.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDecimal.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; @@ -58,14 +59,13 @@ protected void func(DecimalColumnVector outV, BytesColumnVector inV, int i) { * making a new string. */ s = new String(inV.vector[i], inV.start[i], inV.length[i], "UTF-8"); - outV.vector[i].update(s, outV.scale); + outV.vector[i].set(HiveDecimal.create(s)); } catch (Exception e) { // for any exception in conversion to decimal, produce NULL outV.noNulls = false; outV.isNull[i] = true; } - outV.checkPrecisionOverflow(i); } @Override diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToDecimal.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToDecimal.java index 0f9874beb212..0aedddc3670a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToDecimal.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToDecimal.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; @@ -39,9 +40,10 @@ public CastTimestampToDecimal(int inputColumn, int outputColumn) { @Override protected void func(DecimalColumnVector outV, LongColumnVector inV, int i) { - // the resulting decimal value is 10e-9 * the input long value. - outV.vector[i].updateFixedPoint(inV.vector[i], (short) 9); - outV.vector[i].changeScaleDestructive(outV.scale); - outV.checkPrecisionOverflow(i); + // The resulting decimal value is 10e-9 * the input long value (i.e. seconds). + // + HiveDecimal result = HiveDecimal.create(inV.vector[i]); + result = result.scaleByPowerOfTen(-9); + outV.set(i, result); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java index 23124c3cab2c..c76b15b7e117 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java @@ -20,7 +20,7 @@ import java.util.Arrays; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.common.type.HiveChar; import org.apache.hadoop.hive.common.type.HiveVarchar; import org.apache.hadoop.hive.ql.exec.vector.*; @@ -44,7 +44,7 @@ private static enum Type { protected long longValue = 0; private double doubleValue = 0; private byte[] bytesValue = null; - private Decimal128 decimalValue = null; + private HiveDecimal decimalValue = null; private boolean isNullValue = false; private Type type; @@ -85,7 +85,7 @@ public ConstantVectorExpression(int outputColumn, HiveVarchar value) { setBytesValue(value.getValue().getBytes()); } - public ConstantVectorExpression(int outputColumn, Decimal128 value) { + public ConstantVectorExpression(int outputColumn, HiveDecimal value) { this(outputColumn, "decimal"); setDecimalValue(value); } @@ -137,7 +137,7 @@ private void evaluateDecimal(VectorizedRowBatch vrg) { dcv.isRepeating = true; dcv.noNulls = !isNullValue; if (!isNullValue) { - dcv.vector[0].update(decimalValue); + dcv.vector[0].set(decimalValue); } else { dcv.isNull[0] = true; } @@ -191,7 +191,7 @@ public void setBytesValue(byte[] bytesValue) { this.bytesValueLength = bytesValue.length; } - public void setDecimalValue(Decimal128 decimalValue) { + public void setDecimalValue(HiveDecimal decimalValue) { this.decimalValue = decimalValue; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java index 7756ebd0d4ac..0601c66c025c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java @@ -18,11 +18,12 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor.Descriptor; import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import java.util.HashSet; @@ -32,11 +33,11 @@ public class DecimalColumnInList extends VectorExpression implements IDecimalInExpr { private static final long serialVersionUID = 1L; private int inputCol; - private Decimal128[] inListValues; + private HiveDecimal[] inListValues; private int outputColumn; // The set object containing the IN list. - private transient HashSet inSet; + private transient HashSet inSet; public DecimalColumnInList() { super(); @@ -60,8 +61,8 @@ public void evaluate(VectorizedRowBatch batch) { } if (inSet == null) { - inSet = new HashSet(inListValues.length); - for (Decimal128 val : inListValues) { + inSet = new HashSet(inListValues.length); + for (HiveDecimal val : inListValues) { inSet.add(val); } } @@ -72,7 +73,7 @@ public void evaluate(VectorizedRowBatch batch) { boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; int n = batch.size; - Decimal128[] vector = inputColVector.vector; + HiveDecimalWritable[] vector = inputColVector.vector; long[] outputVector = outputColVector.vector; // return immediately if batch is empty @@ -87,16 +88,16 @@ public void evaluate(VectorizedRowBatch batch) { // All must be selected otherwise size would be zero // Repeating property will not change. - outputVector[0] = inSet.contains(vector[0]) ? 1 : 0; + outputVector[0] = inSet.contains(vector[0].getHiveDecimal()) ? 1 : 0; outputColVector.isRepeating = true; } else if (batch.selectedInUse) { for(int j = 0; j != n; j++) { int i = sel[j]; - outputVector[i] = inSet.contains(vector[i]) ? 1 : 0; + outputVector[i] = inSet.contains(vector[i].getHiveDecimal()) ? 1 : 0; } } else { for(int i = 0; i != n; i++) { - outputVector[i] = inSet.contains(vector[i]) ? 1 : 0; + outputVector[i] = inSet.contains(vector[i].getHiveDecimal()) ? 1 : 0; } } } else { @@ -105,7 +106,7 @@ public void evaluate(VectorizedRowBatch batch) { //All must be selected otherwise size would be zero //Repeating property will not change. if (!nullPos[0]) { - outputVector[0] = inSet.contains(vector[0]) ? 1 : 0; + outputVector[0] = inSet.contains(vector[0].getHiveDecimal()) ? 1 : 0; outNulls[0] = false; } else { outNulls[0] = true; @@ -116,14 +117,14 @@ public void evaluate(VectorizedRowBatch batch) { int i = sel[j]; outNulls[i] = nullPos[i]; if (!nullPos[i]) { - outputVector[i] = inSet.contains(vector[i]) ? 1 : 0; + outputVector[i] = inSet.contains(vector[i].getHiveDecimal()) ? 1 : 0; } } } else { System.arraycopy(nullPos, 0, outNulls, 0, n); for(int i = 0; i != n; i++) { if (!nullPos[i]) { - outputVector[i] = inSet.contains(vector[i]) ? 1 : 0; + outputVector[i] = inSet.contains(vector[i].getHiveDecimal()) ? 1 : 0; } } } @@ -148,11 +149,7 @@ public Descriptor getDescriptor() { return null; } - public Decimal128[] getInListValues() { - return this.inListValues; - } - - public void setInListValues(Decimal128[] a) { + public void setInListValues(HiveDecimal[] a) { this.inListValues = a; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalUtil.java index cdc0ea07da4b..d88f7d77a74b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalUtil.java @@ -18,32 +18,60 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; -import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.common.type.HiveDecimal; -import org.apache.hadoop.hive.common.type.SqlMathUtil; -import org.apache.hadoop.hive.common.type.UnsignedInt128; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.udf.generic.RoundUtils; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; /** * Utility functions for vector operations on decimal values. */ public class DecimalUtil { - public static final Decimal128 DECIMAL_ONE = new Decimal128(); - private static final UnsignedInt128 scratchUInt128 = new UnsignedInt128(); + public static int compare(HiveDecimalWritable writableLeft, HiveDecimal right) { + return writableLeft.getHiveDecimal().compareTo(right); + } - static { - DECIMAL_ONE.update(1L, (short) 0); + public static int compare(HiveDecimal left, HiveDecimalWritable writableRight) { + return left.compareTo(writableRight.getHiveDecimal()); } // Addition with overflow check. Overflow produces NULL output. - public static void addChecked(int i, Decimal128 left, Decimal128 right, + public static void addChecked(int i, HiveDecimal left, HiveDecimal right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.add(right)); + } catch (ArithmeticException e) { // catch on overflow + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void addChecked(int i, HiveDecimalWritable left, HiveDecimalWritable right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.getHiveDecimal().add(right.getHiveDecimal())); + } catch (ArithmeticException e) { // catch on overflow + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void addChecked(int i, HiveDecimalWritable left, HiveDecimal right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.getHiveDecimal().add(right)); + } catch (ArithmeticException e) { // catch on overflow + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void addChecked(int i, HiveDecimal left, HiveDecimalWritable right, DecimalColumnVector outputColVector) { try { - Decimal128.add(left, right, outputColVector.vector[i], outputColVector.scale); - outputColVector.vector[i].checkPrecisionOverflow(outputColVector.precision); + outputColVector.set(i, left.add(right.getHiveDecimal())); } catch (ArithmeticException e) { // catch on overflow outputColVector.noNulls = false; outputColVector.isNull[i] = true; @@ -51,11 +79,40 @@ public static void addChecked(int i, Decimal128 left, Decimal128 right, } // Subtraction with overflow check. Overflow produces NULL output. - public static void subtractChecked(int i, Decimal128 left, Decimal128 right, + public static void subtractChecked(int i, HiveDecimal left, HiveDecimal right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.subtract(right)); + } catch (ArithmeticException e) { // catch on overflow + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void subtractChecked(int i, HiveDecimalWritable left, HiveDecimalWritable right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.getHiveDecimal().subtract(right.getHiveDecimal())); + } catch (ArithmeticException e) { // catch on overflow + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void subtractChecked(int i, HiveDecimalWritable left, HiveDecimal right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.getHiveDecimal().subtract(right)); + } catch (ArithmeticException e) { // catch on overflow + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void subtractChecked(int i, HiveDecimal left, HiveDecimalWritable right, DecimalColumnVector outputColVector) { try { - Decimal128.subtract(left, right, outputColVector.vector[i], outputColVector.scale); - outputColVector.vector[i].checkPrecisionOverflow(outputColVector.precision); + outputColVector.set(i, left.subtract(right.getHiveDecimal())); } catch (ArithmeticException e) { // catch on overflow outputColVector.noNulls = false; outputColVector.isNull[i] = true; @@ -63,11 +120,40 @@ public static void subtractChecked(int i, Decimal128 left, Decimal128 right, } // Multiplication with overflow check. Overflow produces NULL output. - public static void multiplyChecked(int i, Decimal128 left, Decimal128 right, + public static void multiplyChecked(int i, HiveDecimal left, HiveDecimal right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.multiply(right)); + } catch (ArithmeticException e) { // catch on overflow + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void multiplyChecked(int i, HiveDecimalWritable left, HiveDecimalWritable right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.getHiveDecimal().multiply(right.getHiveDecimal())); + } catch (ArithmeticException e) { // catch on overflow + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void multiplyChecked(int i, HiveDecimalWritable left, HiveDecimal right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.getHiveDecimal().multiply(right)); + } catch (ArithmeticException e) { // catch on overflow + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void multiplyChecked(int i, HiveDecimal left, HiveDecimalWritable right, DecimalColumnVector outputColVector) { try { - Decimal128.multiply(left, right, outputColVector.vector[i], outputColVector.scale); - outputColVector.vector[i].checkPrecisionOverflow(outputColVector.precision); + outputColVector.set(i, left.multiply(right.getHiveDecimal())); } catch (ArithmeticException e) { // catch on overflow outputColVector.noNulls = false; outputColVector.isNull[i] = true; @@ -75,11 +161,40 @@ public static void multiplyChecked(int i, Decimal128 left, Decimal128 right, } // Division with overflow/zero-divide check. Error produces NULL output. - public static void divideChecked(int i, Decimal128 left, Decimal128 right, + public static void divideChecked(int i, HiveDecimal left, HiveDecimal right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.divide(right)); + } catch (ArithmeticException e) { // catch on error + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void divideChecked(int i, HiveDecimalWritable left, HiveDecimalWritable right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.getHiveDecimal().divide(right.getHiveDecimal())); + } catch (ArithmeticException e) { // catch on error + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void divideChecked(int i, HiveDecimalWritable left, HiveDecimal right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.getHiveDecimal().divide(right)); + } catch (ArithmeticException e) { // catch on error + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void divideChecked(int i, HiveDecimal left, HiveDecimalWritable right, DecimalColumnVector outputColVector) { try { - Decimal128.divide(left, right, outputColVector.vector[i], outputColVector.scale); - outputColVector.vector[i].checkPrecisionOverflow(outputColVector.precision); + outputColVector.set(i, left.divide(right.getHiveDecimal())); } catch (ArithmeticException e) { // catch on error outputColVector.noNulls = false; outputColVector.isNull[i] = true; @@ -87,80 +202,138 @@ public static void divideChecked(int i, Decimal128 left, Decimal128 right, } // Modulo operator with overflow/zero-divide check. - public static void moduloChecked(int i, Decimal128 left, Decimal128 right, + public static void moduloChecked(int i, HiveDecimal left, HiveDecimal right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.remainder(right)); + } catch (ArithmeticException e) { // catch on error + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void moduloChecked(int i, HiveDecimalWritable left, HiveDecimalWritable right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.getHiveDecimal().remainder(right.getHiveDecimal())); + } catch (ArithmeticException e) { // catch on error + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void moduloChecked(int i, HiveDecimalWritable left, HiveDecimal right, + DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, left.getHiveDecimal().remainder(right)); + } catch (ArithmeticException e) { // catch on error + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void moduloChecked(int i, HiveDecimal left, HiveDecimalWritable right, DecimalColumnVector outputColVector) { try { - Decimal128.modulo(left, right, outputColVector.vector[i], outputColVector.scale); - outputColVector.vector[i].checkPrecisionOverflow(outputColVector.precision); + outputColVector.set(i, left.remainder(right.getHiveDecimal())); } catch (ArithmeticException e) { // catch on error outputColVector.noNulls = false; outputColVector.isNull[i] = true; } } - public static void floor(int i, Decimal128 input, DecimalColumnVector outputColVector) { + public static void floor(int i, HiveDecimal input, DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, input.setScale(0, HiveDecimal.ROUND_FLOOR)); + } catch (ArithmeticException e) { + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void floor(int i, HiveDecimalWritable input, DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, input.getHiveDecimal().setScale(0, HiveDecimal.ROUND_FLOOR)); + } catch (ArithmeticException e) { + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void ceiling(int i, HiveDecimal input, DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, input.setScale(0, HiveDecimal.ROUND_CEILING)); + } catch (ArithmeticException e) { + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void ceiling(int i, HiveDecimalWritable input, DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, input.getHiveDecimal().setScale(0, HiveDecimal.ROUND_CEILING)); + } catch (ArithmeticException e) { + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void round(int i, HiveDecimal input, DecimalColumnVector outputColVector) { try { - Decimal128 result = outputColVector.vector[i]; - result.update(input); - result.zeroFractionPart(scratchUInt128); - result.changeScaleDestructive(outputColVector.scale); - if ((result.compareTo(input) != 0) && input.getSignum() < 0) { - result.subtractDestructive(DECIMAL_ONE, outputColVector.scale); - } + outputColVector.set(i, RoundUtils.round(input, outputColVector.scale)); } catch (ArithmeticException e) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; } } - public static void ceiling(int i, Decimal128 input, DecimalColumnVector outputColVector) { + public static void round(int i, HiveDecimalWritable input, DecimalColumnVector outputColVector) { try { - Decimal128 result = outputColVector.vector[i]; - result.update(input); - result.zeroFractionPart(scratchUInt128); - result.changeScaleDestructive(outputColVector.scale); - if ((result.compareTo(input) != 0) && input.getSignum() > 0) { - result.addDestructive(DECIMAL_ONE, outputColVector.scale); - } + outputColVector.set(i, RoundUtils.round(input.getHiveDecimal(), outputColVector.scale)); } catch (ArithmeticException e) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; } } - public static void round(int i, Decimal128 input, DecimalColumnVector outputColVector) { - HiveDecimal inputHD = HiveDecimal.create(input.toBigDecimal()); - HiveDecimal result = RoundUtils.round(inputHD, outputColVector.scale); - if (result == null) { + public static void sign(int i, HiveDecimal input, LongColumnVector outputColVector) { + outputColVector.vector[i] = input.signum(); + } + + public static void sign(int i, HiveDecimalWritable input, LongColumnVector outputColVector) { + outputColVector.vector[i] = input.getHiveDecimal().signum(); + } + + public static void abs(int i, HiveDecimal input, DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, input.abs()); + } catch (ArithmeticException e) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; - } else { - outputColVector.vector[i].update(result.bigDecimalValue().toPlainString(), outputColVector.scale); } } - public static void sign(int i, Decimal128 input, LongColumnVector outputColVector) { - outputColVector.vector[i] = input.getSignum(); + public static void abs(int i, HiveDecimalWritable input, DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, input.getHiveDecimal().abs()); + } catch (ArithmeticException e) { + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } } - public static void abs(int i, Decimal128 input, DecimalColumnVector outputColVector) { - Decimal128 result = outputColVector.vector[i]; + public static void negate(int i, HiveDecimal input, DecimalColumnVector outputColVector) { try { - result.update(input); - result.absDestructive(); - result.changeScaleDestructive(outputColVector.scale); + outputColVector.set(i, input.negate()); } catch (ArithmeticException e) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; } } - public static void negate(int i, Decimal128 input, DecimalColumnVector outputColVector) { - Decimal128 result = outputColVector.vector[i]; + public static void negate(int i, HiveDecimalWritable input, DecimalColumnVector outputColVector) { try { - result.update(input); - result.negateDestructive(); - result.changeScaleDestructive(outputColVector.scale); + outputColVector.set(i, input.getHiveDecimal().negate()); } catch (ArithmeticException e) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDecimalColumnInList.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDecimalColumnInList.java index 82f17873e73d..a8653431a1c5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDecimalColumnInList.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDecimalColumnInList.java @@ -18,10 +18,11 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor.Descriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import java.util.HashSet; @@ -31,10 +32,10 @@ public class FilterDecimalColumnInList extends VectorExpression implements IDecimalInExpr { private static final long serialVersionUID = 1L; private int inputCol; - private Decimal128[] inListValues; + private HiveDecimal[] inListValues; // The set object containing the IN list. - private transient HashSet inSet; + private transient HashSet inSet; public FilterDecimalColumnInList() { super(); @@ -57,8 +58,8 @@ public void evaluate(VectorizedRowBatch batch) { } if (inSet == null) { - inSet = new HashSet(inListValues.length); - for (Decimal128 val : inListValues) { + inSet = new HashSet(inListValues.length); + for (HiveDecimal val : inListValues) { inSet.add(val); } } @@ -67,7 +68,7 @@ public void evaluate(VectorizedRowBatch batch) { int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; int n = batch.size; - Decimal128[] vector = inputColVector.vector; + HiveDecimalWritable[] vector = inputColVector.vector; // return immediately if batch is empty if (n == 0) { @@ -80,7 +81,7 @@ public void evaluate(VectorizedRowBatch batch) { // All must be selected otherwise size would be zero // Repeating property will not change. - if (!(inSet.contains(vector[0]))) { + if (!(inSet.contains(vector[0].getHiveDecimal()))) { //Entire batch is filtered out. batch.size = 0; } @@ -88,7 +89,7 @@ public void evaluate(VectorizedRowBatch batch) { int newSize = 0; for(int j = 0; j != n; j++) { int i = sel[j]; - if (inSet.contains(vector[i])) { + if (inSet.contains(vector[i].getHiveDecimal())) { sel[newSize++] = i; } } @@ -96,7 +97,7 @@ public void evaluate(VectorizedRowBatch batch) { } else { int newSize = 0; for(int i = 0; i != n; i++) { - if (inSet.contains(vector[i])) { + if (inSet.contains(vector[i].getHiveDecimal())) { sel[newSize++] = i; } } @@ -111,7 +112,7 @@ public void evaluate(VectorizedRowBatch batch) { //All must be selected otherwise size would be zero //Repeating property will not change. if (!nullPos[0]) { - if (!inSet.contains(vector[0])) { + if (!inSet.contains(vector[0].getHiveDecimal())) { //Entire batch is filtered out. batch.size = 0; @@ -124,7 +125,7 @@ public void evaluate(VectorizedRowBatch batch) { for(int j = 0; j != n; j++) { int i = sel[j]; if (!nullPos[i]) { - if (inSet.contains(vector[i])) { + if (inSet.contains(vector[i].getHiveDecimal())) { sel[newSize++] = i; } } @@ -136,7 +137,7 @@ public void evaluate(VectorizedRowBatch batch) { int newSize = 0; for(int i = 0; i != n; i++) { if (!nullPos[i]) { - if (inSet.contains(vector[i])) { + if (inSet.contains(vector[i].getHiveDecimal())) { sel[newSize++] = i; } } @@ -167,11 +168,7 @@ public Descriptor getDescriptor() { return null; } - public Decimal128[] getInListValues() { - return this.inListValues; - } - - public void setInListValues(Decimal128[] a) { + public void setInListValues(HiveDecimal[] a) { this.inListValues = a; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToLong.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToLong.java index eeac8f168a04..4691fe159df0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToLong.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToLong.java @@ -18,7 +18,6 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; -import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; @@ -117,18 +116,6 @@ public int getOutputColumn() { return outputColumn; } - public void setOutputColumn(int outputColumn) { - this.outputColumn = outputColumn; - } - - public int getInputColumn() { - return inputColumn; - } - - public void setInputColumn(int inputColumn) { - this.inputColumn = inputColumn; - } - @Override public String getOutputType() { return "long"; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDoubleToDecimal.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDoubleToDecimal.java index 92cedf00262d..0120c0a798ed 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDoubleToDecimal.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDoubleToDecimal.java @@ -18,7 +18,6 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; -import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToDecimal.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToDecimal.java index 6b1a0cf221a9..b73e85147e2d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToDecimal.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToDecimal.java @@ -18,7 +18,6 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; -import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java index 4c6c44d80fcd..421a737b253b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java @@ -21,9 +21,9 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; -import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector; import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import java.util.Arrays; @@ -61,7 +61,7 @@ public void evaluate(VectorizedRowBatch batch) { boolean[] outputIsNull = outputColVector.isNull; outputColVector.noNulls = inputColVector.noNulls; int n = batch.size; - Decimal128[] vector = inputColVector.vector; + HiveDecimalWritable[] vector = inputColVector.vector; // return immediately if batch is empty if (n == 0) { @@ -119,27 +119,6 @@ public int getOutputColumn() { public String getOutputType() { return outputType; } - - public int getColNum() { - return colNum; - } - - public void setColNum(int colNum) { - this.colNum = colNum; - } - - public void setOutputColumn(int outputColumn) { - this.outputColumn = outputColumn; - } - - public int getDecimalPlaces() { - return decimalPlaces; - } - - public void setDecimalPlaces(int decimalPlaces) { - this.decimalPlaces = decimalPlaces; - } - @Override public VectorExpressionDescriptor.Descriptor getDescriptor() { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IDecimalInExpr.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IDecimalInExpr.java index 81a8d1d61589..40132af0e260 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IDecimalInExpr.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IDecimalInExpr.java @@ -18,8 +18,8 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.common.type.HiveDecimal; public interface IDecimalInExpr { - void setInListValues(Decimal128[] inVals); + void setInListValues(HiveDecimal[] inVals); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/NullUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/NullUtil.java index 5cc821894458..773b40ac9153 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/NullUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/NullUtil.java @@ -300,18 +300,18 @@ public static void setNullDataEntriesDecimal( if (v.noNulls) { return; } else if (v.isRepeating && v.isNull[0]) { - v.vector[0].setNullDataValue(); + v.setNullDataValue(0); } else if (selectedInUse) { for (int j = 0; j != n; j++) { int i = sel[j]; if(v.isNull[i]) { - v.vector[i].setNullDataValue(); + v.setNullDataValue(i); } } } else { for (int i = 0; i != n; i++) { if(v.isNull[i]) { - v.vector[i].setNullDataValue(); + v.setNullDataValue(i); } } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriter.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriter.java index be5cea82d4c2..d91b880e1778 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriter.java @@ -18,9 +18,10 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; -import org.apache.hadoop.hive.common.type.Decimal128; +import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.vector.ColumnVector; import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.io.Writable; @@ -34,7 +35,8 @@ public interface VectorExpressionWriter { Object writeValue(long value) throws HiveException; Object writeValue(double value) throws HiveException; Object writeValue(byte[] value, int start, int length) throws HiveException; - Object writeValue(Decimal128 value) throws HiveException; + Object writeValue(HiveDecimalWritable value) throws HiveException; + Object writeValue(HiveDecimal value) throws HiveException; Object setValue(Object row, ColumnVector column, int columnRow) throws HiveException; Object initValue(Object ost) throws HiveException; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java index 85f3e24ee5c8..94a47e04f3a5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java @@ -18,7 +18,6 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions; -import java.math.BigDecimal; import java.sql.Date; import java.sql.Timestamp; import java.util.ArrayList; @@ -27,7 +26,6 @@ import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; -import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.common.type.HiveChar; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.common.type.HiveVarchar; @@ -134,14 +132,29 @@ public Object setValue(Object field, byte[] value, int start, int length) throws * The base implementation must be overridden by the Decimal specialization */ @Override - public Object writeValue(Decimal128 value) throws HiveException { + public Object writeValue(HiveDecimal value) throws HiveException { throw new HiveException("Internal error: should not reach here"); } /** * The base implementation must be overridden by the Decimal specialization */ - public Object setValue(Object field, Decimal128 value) throws HiveException { + @Override + public Object writeValue(HiveDecimalWritable value) throws HiveException { + throw new HiveException("Internal error: should not reach here"); + } + + /** + * The base implementation must be overridden by the Decimal specialization + */ + public Object setValue(Object field, HiveDecimalWritable value) throws HiveException { + throw new HiveException("Internal error: should not reach here"); + } + + /** + * The base implementation must be overridden by the Decimal specialization + */ + public Object setValue(Object field, HiveDecimal value) throws HiveException { throw new HiveException("Internal error: should not reach here"); } } @@ -465,24 +478,35 @@ public VectorExpressionWriter init(SettableHiveDecimalObjectInspector objInspect } @Override - public Object writeValue(Decimal128 value) throws HiveException { - return ((SettableHiveDecimalObjectInspector) this.objectInspector).set(obj, - HiveDecimal.create(value.toBigDecimal())); + public Object writeValue(HiveDecimalWritable value) throws HiveException { + return ((SettableHiveDecimalObjectInspector) this.objectInspector).set(obj, value); + } + + @Override + public Object writeValue(HiveDecimal value) throws HiveException { + return ((SettableHiveDecimalObjectInspector) this.objectInspector).set(obj, value); + } + + @Override + public Object setValue(Object field, HiveDecimalWritable value) { + if (null == field) { + field = initValue(null); + } + return ((SettableHiveDecimalObjectInspector) this.objectInspector).set(field, value); } @Override - public Object setValue(Object field, Decimal128 value) { + public Object setValue(Object field, HiveDecimal value) { if (null == field) { field = initValue(null); } - return ((SettableHiveDecimalObjectInspector) this.objectInspector).set(field, - HiveDecimal.create(value.toBigDecimal())); + return ((SettableHiveDecimalObjectInspector) this.objectInspector).set(field, value); } @Override public Object initValue(Object ignored) { return ((SettableHiveDecimalObjectInspector) this.objectInspector).create( - HiveDecimal.create(BigDecimal.ZERO)); + HiveDecimal.ZERO); } }.init(fieldObjInspector); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgDecimal.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgDecimal.java index 658e33c3846f..9cc0621d4842 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgDecimal.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgDecimal.java @@ -21,9 +21,9 @@ import java.util.ArrayList; import java.util.List; -import org.apache.hadoop.hive.common.type.Decimal128; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.ql.exec.Description; +import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorAggregateExpression; import org.apache.hadoop.hive.ql.exec.vector.VectorAggregationBufferRow; @@ -41,7 +41,6 @@ import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo; -import org.apache.hive.common.util.Decimal128FastBuffer; /** * Generated from template VectorUDAFAvg.txt. @@ -57,24 +56,45 @@ static class Aggregation implements AggregationBuffer { private static final long serialVersionUID = 1L; - transient private final Decimal128 sum = new Decimal128(); + transient private final HiveDecimalWritable sum = new HiveDecimalWritable(); transient private long count; transient private boolean isNull; - public void sumValueWithCheck(Decimal128 value, short scale) { + // We use this to catch overflow. + transient private boolean isOutOfRange; + + public void sumValueWithNullCheck(HiveDecimalWritable writable, short scale) { + if (isOutOfRange) { + return; + } + HiveDecimal value = writable.getHiveDecimal(); if (isNull) { - sum.update(value); - sum.changeScaleDestructive(scale); + sum.set(value); count = 1; isNull = false; } else { - sum.addDestructive(value, scale); + HiveDecimal result; + try { + result = sum.getHiveDecimal().add(value); + } catch (ArithmeticException e) { // catch on overflow + isOutOfRange = true; + return; + } + sum.set(result); count++; } } - public void sumValueNoCheck(Decimal128 value, short scale) { - sum.addDestructive(value, scale); + public void sumValueNoNullCheck(HiveDecimalWritable writable, short scale) { + HiveDecimal value = writable.getHiveDecimal(); + HiveDecimal result; + try { + result = sum.getHiveDecimal().add(value); + } catch (ArithmeticException e) { // catch on overflow + isOutOfRange = true; + return; + } + sum.set(result); count++; } @@ -87,7 +107,8 @@ public int getVariableSize() { @Override public void reset() { isNull = true; - sum.zeroClear(); + isOutOfRange = false; + sum.set(HiveDecimal.ZERO); count = 0L; } } @@ -98,8 +119,6 @@ public void reset() { transient private HiveDecimalWritable resultSum; transient private StructObjectInspector soi; - transient private final Decimal128FastBuffer scratch; - /** * The scale of the SUM in the partial output */ @@ -120,12 +139,6 @@ public void reset() { */ private short inputPrecision; - /** - * A value used as scratch to avoid allocating at runtime. - * Needed by computations like vector[0] * batchSize - */ - transient private Decimal128 scratchDecimal = new Decimal128(); - public VectorUDAFAvgDecimal(VectorExpression inputExpression) { this(); this.inputExpression = inputExpression; @@ -138,7 +151,6 @@ public VectorUDAFAvgDecimal() { resultSum = new HiveDecimalWritable(); partialResult[0] = resultCount; partialResult[1] = resultSum; - scratch = new Decimal128FastBuffer(); } @@ -185,7 +197,7 @@ public void aggregateInputSelection( DecimalColumnVector inputVector = ( DecimalColumnVector)batch. cols[this.inputExpression.getOutputColumn()]; - Decimal128[] vector = inputVector.vector; + HiveDecimalWritable[] vector = inputVector.vector; if (inputVector.noNulls) { if (inputVector.isRepeating) { @@ -231,7 +243,7 @@ public void aggregateInputSelection( private void iterateNoNullsRepeatingWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int bufferIndex, - Decimal128 value, + HiveDecimalWritable value, int batchSize) { for (int i=0; i < batchSize; ++i) { @@ -239,14 +251,14 @@ private void iterateNoNullsRepeatingWithAggregationSelection( aggregationBufferSets, bufferIndex, i); - myagg.sumValueWithCheck(value, this.sumScale); + myagg.sumValueWithNullCheck(value, this.sumScale); } } private void iterateNoNullsSelectionWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int bufferIndex, - Decimal128[] values, + HiveDecimalWritable[] values, int[] selection, int batchSize) { @@ -255,28 +267,28 @@ private void iterateNoNullsSelectionWithAggregationSelection( aggregationBufferSets, bufferIndex, i); - myagg.sumValueWithCheck(values[selection[i]], this.sumScale); + myagg.sumValueWithNullCheck(values[selection[i]], this.sumScale); } } private void iterateNoNullsWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int bufferIndex, - Decimal128[] values, + HiveDecimalWritable[] values, int batchSize) { for (int i=0; i < batchSize; ++i) { Aggregation myagg = getCurrentAggregationBuffer( aggregationBufferSets, bufferIndex, i); - myagg.sumValueWithCheck(values[i], this.sumScale); + myagg.sumValueWithNullCheck(values[i], this.sumScale); } } private void iterateHasNullsRepeatingSelectionWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int bufferIndex, - Decimal128 value, + HiveDecimalWritable value, int batchSize, int[] selection, boolean[] isNull) { @@ -287,7 +299,7 @@ private void iterateHasNullsRepeatingSelectionWithAggregationSelection( aggregationBufferSets, bufferIndex, i); - myagg.sumValueWithCheck(value, this.sumScale); + myagg.sumValueWithNullCheck(value, this.sumScale); } } @@ -296,7 +308,7 @@ private void iterateHasNullsRepeatingSelectionWithAggregationSelection( private void iterateHasNullsRepeatingWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int bufferIndex, - Decimal128 value, + HiveDecimalWritable value, int batchSize, boolean[] isNull) { @@ -306,7 +318,7 @@ private void iterateHasNullsRepeatingWithAggregationSelection( aggregationBufferSets, bufferIndex, i); - myagg.sumValueWithCheck(value, this.sumScale); + myagg.sumValueWithNullCheck(value, this.sumScale); } } } @@ -314,7 +326,7 @@ private void iterateHasNullsRepeatingWithAggregationSelection( private void iterateHasNullsSelectionWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int bufferIndex, - Decimal128[] values, + HiveDecimalWritable[] values, int batchSize, int[] selection, boolean[] isNull) { @@ -326,7 +338,7 @@ private void iterateHasNullsSelectionWithAggregationSelection( aggregationBufferSets, bufferIndex, j); - myagg.sumValueWithCheck(values[i], this.sumScale); + myagg.sumValueWithNullCheck(values[i], this.sumScale); } } } @@ -334,7 +346,7 @@ private void iterateHasNullsSelectionWithAggregationSelection( private void iterateHasNullsWithAggregationSelection( VectorAggregationBufferRow[] aggregationBufferSets, int bufferIndex, - Decimal128[] values, + HiveDecimalWritable[] values, int batchSize, boolean[] isNull) { @@ -344,7 +356,7 @@ private void iterateHasNullsWithAggregationSelection( aggregationBufferSets, bufferIndex, i); - myagg.sumValueWithCheck(values[i], this.sumScale); + myagg.sumValueWithNullCheck(values[i], this.sumScale); } } } @@ -367,18 +379,31 @@ public void aggregateInput(AggregationBuffer agg, VectorizedRowBatch batch) Aggregation myagg = (Aggregation)agg; - Decimal128[] vector = inputVector.vector; + HiveDecimalWritable[] vector = inputVector.vector; if (inputVector.isRepeating) { if (inputVector.noNulls) { if (myagg.isNull) { myagg.isNull = false; - myagg.sum.zeroClear(); + myagg.sum.set(HiveDecimal.ZERO); myagg.count = 0; } - scratchDecimal.update(batchSize); - scratchDecimal.multiplyDestructive(vector[0], vector[0].getScale()); - myagg.sum.update(scratchDecimal); + HiveDecimal value = vector[0].getHiveDecimal(); + HiveDecimal multiple; + try { + multiple = value.multiply(HiveDecimal.create(batchSize)); + } catch (ArithmeticException e) { // catch on overflow + myagg.isOutOfRange = true; + return; + } + HiveDecimal result; + try { + result = myagg.sum.getHiveDecimal().add(multiple); + } catch (ArithmeticException e) { // catch on overflow + myagg.isOutOfRange = true; + return; + } + myagg.sum.set(result); myagg.count += batchSize; } return; @@ -400,7 +425,7 @@ else if (inputVector.noNulls){ private void iterateSelectionHasNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, int batchSize, boolean[] isNull, int[] selected) { @@ -408,57 +433,57 @@ private void iterateSelectionHasNulls( for (int j=0; j< batchSize; ++j) { int i = selected[j]; if (!isNull[i]) { - Decimal128 value = vector[i]; - myagg.sumValueWithCheck(value, this.sumScale); + HiveDecimalWritable value = vector[i]; + myagg.sumValueWithNullCheck(value, this.sumScale); } } } private void iterateSelectionNoNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, int batchSize, int[] selected) { if (myagg.isNull) { myagg.isNull = false; - myagg.sum.zeroClear(); + myagg.sum.set(HiveDecimal.ZERO); myagg.count = 0; } for (int i=0; i< batchSize; ++i) { - Decimal128 value = vector[selected[i]]; - myagg.sumValueNoCheck(value, this.sumScale); + HiveDecimalWritable value = vector[selected[i]]; + myagg.sumValueNoNullCheck(value, this.sumScale); } } private void iterateNoSelectionHasNulls( Aggregation myagg, - Decimal128[] vector, + HiveDecimalWritable[] vector, int batchSize, boolean[] isNull) { for(int i=0;i cast('1234567890123456789012345678.12345678' as decimal(38,18)) LIMIT 1; +SELECT dec * 12345678901234567890.12345678 FROM DECIMAL_PRECISION LIMIT 1; + +SELECT MIN(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION; +SELECT COUNT(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION; + +DROP TABLE DECIMAL_PRECISION_txt; +DROP TABLE DECIMAL_PRECISION; diff --git a/ql/src/test/queries/clientpositive/vector_decimal_trailing.q b/ql/src/test/queries/clientpositive/vector_decimal_trailing.q new file mode 100644 index 000000000000..4639fee4b47b --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_decimal_trailing.q @@ -0,0 +1,30 @@ +SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +DROP TABLE IF EXISTS DECIMAL_TRAILING_txt; +DROP TABLE IF EXISTS DECIMAL_TRAILING; + +CREATE TABLE DECIMAL_TRAILING_txt ( + id int, + a decimal(10,4), + b decimal(15,8) + ) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ',' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/kv10.txt' INTO TABLE DECIMAL_TRAILING_txt; + +CREATE TABLE DECIMAL_TRAILING ( + id int, + a decimal(10,4), + b decimal(15,8) + ) +STORED AS ORC; + +INSERT OVERWRITE TABLE DECIMAL_TRAILING SELECT * FROM DECIMAL_TRAILING_txt; + +SELECT * FROM DECIMAL_TRAILING ORDER BY id; + +DROP TABLE DECIMAL_TRAILING_txt; +DROP TABLE DECIMAL_TRAILING; diff --git a/ql/src/test/queries/clientpositive/vector_decimal_udf.q b/ql/src/test/queries/clientpositive/vector_decimal_udf.q new file mode 100644 index 000000000000..072abf2a0423 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_decimal_udf.q @@ -0,0 +1,142 @@ +SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +DROP TABLE IF EXISTS DECIMAL_UDF_txt; +DROP TABLE IF EXISTS DECIMAL_UDF; + +CREATE TABLE DECIMAL_UDF_txt (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF_txt; + +CREATE TABLE DECIMAL_UDF (key decimal(20,10), value int) +STORED AS ORC; + +INSERT OVERWRITE TABLE DECIMAL_UDF SELECT * FROM DECIMAL_UDF_txt; + +-- addition +EXPLAIN SELECT key + key FROM DECIMAL_UDF; +SELECT key + key FROM DECIMAL_UDF; + +EXPLAIN SELECT key + value FROM DECIMAL_UDF; +SELECT key + value FROM DECIMAL_UDF; + +EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF; +SELECT key + (value/2) FROM DECIMAL_UDF; + +EXPLAIN SELECT key + '1.0' FROM DECIMAL_UDF; +SELECT key + '1.0' FROM DECIMAL_UDF; + +-- substraction +EXPLAIN SELECT key - key FROM DECIMAL_UDF; +SELECT key - key FROM DECIMAL_UDF; + +EXPLAIN SELECT key - value FROM DECIMAL_UDF; +SELECT key - value FROM DECIMAL_UDF; + +EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF; +SELECT key - (value/2) FROM DECIMAL_UDF; + +EXPLAIN SELECT key - '1.0' FROM DECIMAL_UDF; +SELECT key - '1.0' FROM DECIMAL_UDF; + +-- multiplication +EXPLAIN SELECT key * key FROM DECIMAL_UDF; +SELECT key * key FROM DECIMAL_UDF; + +EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0; +SELECT key, value FROM DECIMAL_UDF where key * value > 0; + +EXPLAIN SELECT key * value FROM DECIMAL_UDF; +SELECT key * value FROM DECIMAL_UDF; + +EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF; +SELECT key * (value/2) FROM DECIMAL_UDF; + +EXPLAIN SELECT key * '2.0' FROM DECIMAL_UDF; +SELECT key * '2.0' FROM DECIMAL_UDF; + +-- division +EXPLAIN SELECT key / 0 FROM DECIMAL_UDF limit 1; +SELECT key / 0 FROM DECIMAL_UDF limit 1; + +EXPLAIN SELECT key / NULL FROM DECIMAL_UDF limit 1; +SELECT key / NULL FROM DECIMAL_UDF limit 1; + +EXPLAIN SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0; +SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0; + +EXPLAIN SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0; +SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0; + +EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0; +SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0; + +EXPLAIN SELECT 1 + (key / '2.0') FROM DECIMAL_UDF; +SELECT 1 + (key / '2.0') FROM DECIMAL_UDF; + +-- abs +EXPLAIN SELECT abs(key) FROM DECIMAL_UDF; +SELECT abs(key) FROM DECIMAL_UDF; + +-- avg +EXPLAIN SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value; +SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value; + +-- negative +EXPLAIN SELECT -key FROM DECIMAL_UDF; +SELECT -key FROM DECIMAL_UDF; + +-- positive +EXPLAIN SELECT +key FROM DECIMAL_UDF; +SELECT +key FROM DECIMAL_UDF; + +-- ceiling +EXPlAIN SELECT CEIL(key) FROM DECIMAL_UDF; +SELECT CEIL(key) FROM DECIMAL_UDF; + +-- floor +EXPLAIN SELECT FLOOR(key) FROM DECIMAL_UDF; +SELECT FLOOR(key) FROM DECIMAL_UDF; + +-- round +EXPLAIN SELECT ROUND(key, 2) FROM DECIMAL_UDF; +SELECT ROUND(key, 2) FROM DECIMAL_UDF; + +-- power +EXPLAIN SELECT POWER(key, 2) FROM DECIMAL_UDF; +SELECT POWER(key, 2) FROM DECIMAL_UDF; + +-- modulo +EXPLAIN SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF; +SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF; + +-- stddev, var +EXPLAIN SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value; +SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value; + +-- stddev_samp, var_samp +EXPLAIN SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value; +SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value; + +-- histogram +EXPLAIN SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF; +SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF; + +-- min +EXPLAIN SELECT MIN(key) FROM DECIMAL_UDF; +SELECT MIN(key) FROM DECIMAL_UDF; + +-- max +EXPLAIN SELECT MAX(key) FROM DECIMAL_UDF; +SELECT MAX(key) FROM DECIMAL_UDF; + +-- count +EXPLAIN SELECT COUNT(key) FROM DECIMAL_UDF; +SELECT COUNT(key) FROM DECIMAL_UDF; + +DROP TABLE IF EXISTS DECIMAL_UDF_txt; +DROP TABLE IF EXISTS DECIMAL_UDF; + diff --git a/ql/src/test/queries/clientpositive/vector_decimal_udf2.q b/ql/src/test/queries/clientpositive/vector_decimal_udf2.q new file mode 100644 index 000000000000..8fb0e15b0fc7 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_decimal_udf2.q @@ -0,0 +1,40 @@ +SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +DROP TABLE IF EXISTS DECIMAL_UDF2_txt; +DROP TABLE IF EXISTS DECIMAL_UDF2; + +CREATE TABLE DECIMAL_UDF2_txt (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2_txt; + +CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int) +STORED AS ORC; + +INSERT OVERWRITE TABLE DECIMAL_UDF2 SELECT * FROM DECIMAL_UDF2_txt; + +EXPLAIN +SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10; + +SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10; + +EXPLAIN +SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10; + +SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10; + +DROP TABLE IF EXISTS DECIMAL_UDF2_txt; +DROP TABLE IF EXISTS DECIMAL_UDF2; diff --git a/ql/src/test/results/clientpositive/tez/acid_vectorization_partition.q.out b/ql/src/test/results/clientpositive/tez/acid_vectorization_partition.q.out new file mode 100644 index 000000000000..3aa0e1a10110 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/acid_vectorization_partition.q.out @@ -0,0 +1,60 @@ +PREHOOK: query: CREATE TABLE acid_vectorized_part(a INT, b STRING) partitioned by (ds string) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_vectorized_part +POSTHOOK: query: CREATE TABLE acid_vectorized_part(a INT, b STRING) partitioned by (ds string) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_vectorized_part +PREHOOK: query: insert into table acid_vectorized_part partition (ds = 'today') select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_vectorized_part@ds=today +POSTHOOK: query: insert into table acid_vectorized_part partition (ds = 'today') select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_vectorized_part@ds=today +POSTHOOK: Lineage: acid_vectorized_part PARTITION(ds=today).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_vectorized_part PARTITION(ds=today).b SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: insert into table acid_vectorized_part partition (ds = 'tomorrow') select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_vectorized_part@ds=tomorrow +POSTHOOK: query: insert into table acid_vectorized_part partition (ds = 'tomorrow') select cint, cstring1 from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_vectorized_part@ds=tomorrow +POSTHOOK: Lineage: acid_vectorized_part PARTITION(ds=tomorrow).a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_vectorized_part PARTITION(ds=tomorrow).b SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +PREHOOK: query: select * from acid_vectorized_part order by a, b +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized_part +PREHOOK: Input: default@acid_vectorized_part@ds=today +PREHOOK: Input: default@acid_vectorized_part@ds=tomorrow +#### A masked pattern was here #### +POSTHOOK: query: select * from acid_vectorized_part order by a, b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized_part +POSTHOOK: Input: default@acid_vectorized_part@ds=today +POSTHOOK: Input: default@acid_vectorized_part@ds=tomorrow +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa today +-1073279343 oj1YrV5Wa tomorrow +-1073051226 A34p7oRr2WvUJNf today +-1073051226 A34p7oRr2WvUJNf tomorrow +-1072910839 0iqrc5 today +-1072910839 0iqrc5 tomorrow +-1072081801 dPkN74F7 today +-1072081801 dPkN74F7 tomorrow +-1072076362 2uLyD28144vklju213J1mr tomorrow +-1072076362 2uLyD28144vklju213J1mr today +-1071480828 aw724t8c5558x2xneC624 today +-1071480828 aw724t8c5558x2xneC624 tomorrow +-1071363017 Anj0oF today +-1071363017 Anj0oF tomorrow +-1070883071 0ruyd6Y50JpdGRf6HqD tomorrow +-1070883071 0ruyd6Y50JpdGRf6HqD today +-1070551679 iUR3Q today +-1070551679 iUR3Q tomorrow +-1069736047 k17Am8uPHWk02cEf1jet tomorrow +-1069736047 k17Am8uPHWk02cEf1jet today diff --git a/ql/src/test/results/clientpositive/tez/acid_vectorization_project.q.out b/ql/src/test/results/clientpositive/tez/acid_vectorization_project.q.out new file mode 100644 index 000000000000..1bdacb9a766a --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/acid_vectorization_project.q.out @@ -0,0 +1,73 @@ +PREHOOK: query: CREATE TABLE acid_vectorized(a INT, b STRING, c float) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid_vectorized +POSTHOOK: query: CREATE TABLE acid_vectorized(a INT, b STRING, c float) CLUSTERED BY(a) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid_vectorized +PREHOOK: query: insert into table acid_vectorized select cint, cstring1, cfloat from alltypesorc where cint is not null order by cint limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: default@acid_vectorized +POSTHOOK: query: insert into table acid_vectorized select cint, cstring1, cfloat from alltypesorc where cint is not null order by cint limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: default@acid_vectorized +POSTHOOK: Lineage: acid_vectorized.a SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ] +POSTHOOK: Lineage: acid_vectorized.b SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ] +POSTHOOK: Lineage: acid_vectorized.c SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ] +PREHOOK: query: select a,b from acid_vectorized order by a +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +POSTHOOK: query: select a,b from acid_vectorized order by a +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +-1073279343 oj1YrV5Wa +-1073051226 A34p7oRr2WvUJNf +-1072910839 0iqrc5 +-1072081801 dPkN74F7 +-1072076362 2uLyD28144vklju213J1mr +-1071480828 aw724t8c5558x2xneC624 +-1071363017 Anj0oF +-1070883071 0ruyd6Y50JpdGRf6HqD +-1070551679 iUR3Q +-1069736047 k17Am8uPHWk02cEf1jet +PREHOOK: query: select a,c from acid_vectorized order by a +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +POSTHOOK: query: select a,c from acid_vectorized order by a +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +-1073279343 11.0 +-1073051226 NULL +-1072910839 11.0 +-1072081801 NULL +-1072076362 NULL +-1071480828 -51.0 +-1071363017 8.0 +-1070883071 NULL +-1070551679 NULL +-1069736047 11.0 +PREHOOK: query: select b,c from acid_vectorized order by b +PREHOOK: type: QUERY +PREHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +POSTHOOK: query: select b,c from acid_vectorized order by b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid_vectorized +#### A masked pattern was here #### +0iqrc5 11.0 +0ruyd6Y50JpdGRf6HqD NULL +2uLyD28144vklju213J1mr NULL +A34p7oRr2WvUJNf NULL +Anj0oF 8.0 +aw724t8c5558x2xneC624 -51.0 +dPkN74F7 NULL +iUR3Q NULL +k17Am8uPHWk02cEf1jet 11.0 +oj1YrV5Wa 11.0 diff --git a/ql/src/test/results/clientpositive/tez/vector_aggregate_9.q.out b/ql/src/test/results/clientpositive/tez/vector_aggregate_9.q.out new file mode 100644 index 000000000000..cb3e015cbaee --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_aggregate_9.q.out @@ -0,0 +1,173 @@ +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select min(dc), max(dc), sum(dc), avg(dc) from vectortab2korc +PREHOOK: type: QUERY +POSTHOOK: query: explain +select min(dc), max(dc), sum(dc), avg(dc) from vectortab2korc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dc (type: decimal(38,18)) + outputColumnNames: dc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: min(dc), max(dc), sum(dc), avg(dc) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(38,18)), _col1 (type: decimal(38,18)), _col2 (type: decimal(38,18)), _col3 (type: struct) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: min(VALUE._col0), max(VALUE._col1), sum(VALUE._col2), avg(VALUE._col3) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 448 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(38,18)), _col1 (type: decimal(38,18)), _col2 (type: decimal(38,18)), _col3 (type: decimal(38,18)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 448 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 448 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select min(dc), max(dc), sum(dc), avg(dc) from vectortab2korc +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select min(dc), max(dc), sum(dc), avg(dc) from vectortab2korc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +-4997414117561.546875 4994550248722.298828 -10252745435816.024410 -5399023399.587163986308583465 diff --git a/ql/src/test/results/clientpositive/tez/vector_between_in.q.out b/ql/src/test/results/clientpositive/tez/vector_between_in.q.out index a7037f750d05..ad8c4c0eb25b 100644 --- a/ql/src/test/results/clientpositive/tez/vector_between_in.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_between_in.q.out @@ -718,15 +718,15 @@ POSTHOOK: Input: default@decimal_date_test 14.9324324324 19.1135135135 20.3081081081 -22.1000000000 +22.1 24.4891891892 33.4486486486 34.6432432432 40.0189189189 42.4081081081 43.0054054054 -44.2000000000 -44.2000000000 +44.2 +44.2 44.7972972973 45.9918918919 PREHOOK: query: SELECT COUNT(*) FROM decimal_date_test WHERE cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 diff --git a/ql/src/test/results/clientpositive/tez/vector_coalesce.q.out b/ql/src/test/results/clientpositive/tez/vector_coalesce.q.out new file mode 100644 index 000000000000..646df51cdbfa --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_coalesce.q.out @@ -0,0 +1,196 @@ +PREHOOK: query: EXPLAIN SELECT cdouble, cstring1, cint, cfloat, csmallint, coalesce(cdouble, cstring1, cint, cfloat, csmallint) +FROM alltypesorc +WHERE (cdouble IS NULL) LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cdouble, cstring1, cint, cfloat, csmallint, coalesce(cdouble, cstring1, cint, cfloat, csmallint) +FROM alltypesorc +WHERE (cdouble IS NULL) LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: cdouble is null (type: boolean) + Select Operator + expressions: null (type: void), cstring1 (type: string), cint (type: int), cfloat (type: float), csmallint (type: smallint), COALESCE(null,cstring1,cint,cfloat,csmallint) (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT cdouble, cstring1, cint, cfloat, csmallint, coalesce(cdouble, cstring1, cint, cfloat, csmallint) +FROM alltypesorc +WHERE (cdouble IS NULL) LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdouble, cstring1, cint, cfloat, csmallint, coalesce(cdouble, cstring1, cint, cfloat, csmallint) +FROM alltypesorc +WHERE (cdouble IS NULL) LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL LFgU5WT87C2yJ4W4YU0r8Pp -285355633 -51.0 NULL LFgU5WT87C2yJ4W4YU0r8Pp +NULL 75bFXC7TqGo1SEaYAx4C58m NULL -51.0 NULL 75bFXC7TqGo1SEaYAx4C58m +NULL v3p153e2bSkGS70v04G 354670578 -51.0 NULL v3p153e2bSkGS70v04G +NULL 0pOH7A4O8aQ37NuBqn 951003458 -51.0 NULL 0pOH7A4O8aQ37NuBqn +NULL 8ShAFcD734S8Q26WjMwpq0Q 164554497 -51.0 NULL 8ShAFcD734S8Q26WjMwpq0Q +NULL nOF31ehjY7ULCHMf 455419170 -51.0 NULL nOF31ehjY7ULCHMf +NULL t32s57Cjt4a250qQgVNAB5T -109813638 -51.0 NULL t32s57Cjt4a250qQgVNAB5T +NULL nvO822k30OaH37Il 665801232 -51.0 NULL nvO822k30OaH37Il +NULL M152O -601502867 -51.0 NULL M152O +NULL FgJ7Hft6845s1766oyt82q 199879534 -51.0 NULL FgJ7Hft6845s1766oyt82q +PREHOOK: query: EXPLAIN SELECT ctinyint, cdouble, cint, coalesce(ctinyint+10, (cdouble+log2(cint)), 0) +FROM alltypesorc +WHERE (ctinyint IS NULL) LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT ctinyint, cdouble, cint, coalesce(ctinyint+10, (cdouble+log2(cint)), 0) +FROM alltypesorc +WHERE (ctinyint IS NULL) LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: ctinyint is null (type: boolean) + Select Operator + expressions: ctinyint (type: tinyint), cdouble (type: double), cint (type: int), COALESCE((ctinyint + 10),(cdouble + log2(cint)),0) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT ctinyint, cdouble, cint, coalesce(ctinyint+10, (cdouble+log2(cint)), 0) +FROM alltypesorc +WHERE (ctinyint IS NULL) LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT ctinyint, cdouble, cint, coalesce(ctinyint+10, (cdouble+log2(cint)), 0) +FROM alltypesorc +WHERE (ctinyint IS NULL) LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL -4213.0 528534767 -4184.022576865738 +NULL -3012.0 528534767 -2983.0225768657383 +NULL -4016.0 528534767 -3987.0225768657383 +NULL -11534.0 528534767 -11505.022576865738 +NULL -6147.0 528534767 -6118.022576865738 +NULL -7680.0 528534767 -7651.022576865738 +NULL -7314.0 528534767 -7285.022576865738 +NULL 11254.0 528534767 11282.977423134262 +NULL 13889.0 528534767 13917.977423134262 +NULL 3321.0 528534767 3349.9774231342617 +PREHOOK: query: EXPLAIN SELECT cfloat, cbigint, coalesce(cfloat, cbigint, 0) +FROM alltypesorc +WHERE (cfloat IS NULL AND cbigint IS NULL) LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cfloat, cbigint, coalesce(cfloat, cbigint, 0) +FROM alltypesorc +WHERE (cfloat IS NULL AND cbigint IS NULL) LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: (cfloat is null and cbigint is null) (type: boolean) + Select Operator + expressions: null (type: void), null (type: void), COALESCE(null,null,0) (type: float) + outputColumnNames: _col0, _col1, _col2 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT cfloat, cbigint, coalesce(cfloat, cbigint, 0) +FROM alltypesorc +WHERE (cfloat IS NULL AND cbigint IS NULL) LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cfloat, cbigint, coalesce(cfloat, cbigint, 0) +FROM alltypesorc +WHERE (cfloat IS NULL AND cbigint IS NULL) LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL NULL 0 +NULL NULL 0 +NULL NULL 0 +NULL NULL 0 +NULL NULL 0 +NULL NULL 0 +NULL NULL 0 +NULL NULL 0 +NULL NULL 0 +NULL NULL 0 +PREHOOK: query: EXPLAIN SELECT ctimestamp1, ctimestamp2, coalesce(ctimestamp1, ctimestamp2) +FROM alltypesorc +WHERE ctimestamp1 IS NOT NULL OR ctimestamp2 IS NOT NULL LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT ctimestamp1, ctimestamp2, coalesce(ctimestamp1, ctimestamp2) +FROM alltypesorc +WHERE ctimestamp1 IS NOT NULL OR ctimestamp2 IS NOT NULL LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: (ctimestamp1 is not null or ctimestamp2 is not null) (type: boolean) + Select Operator + expressions: ctimestamp1 (type: timestamp), ctimestamp2 (type: timestamp), COALESCE(ctimestamp1,ctimestamp2) (type: timestamp) + outputColumnNames: _col0, _col1, _col2 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT ctimestamp1, ctimestamp2, coalesce(ctimestamp1, ctimestamp2) +FROM alltypesorc +WHERE ctimestamp1 IS NOT NULL OR ctimestamp2 IS NOT NULL LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT ctimestamp1, ctimestamp2, coalesce(ctimestamp1, ctimestamp2) +FROM alltypesorc +WHERE ctimestamp1 IS NOT NULL OR ctimestamp2 IS NOT NULL LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +1969-12-31 15:59:46.674 1969-12-31 16:00:08.875 1969-12-31 15:59:46.674 +NULL 1969-12-31 16:00:13.589 1969-12-31 16:00:13.589 +1969-12-31 15:59:55.787 1969-12-31 16:00:01.546 1969-12-31 15:59:55.787 +1969-12-31 15:59:44.187 1969-12-31 16:00:06.961 1969-12-31 15:59:44.187 +1969-12-31 15:59:50.434 1969-12-31 16:00:13.352 1969-12-31 15:59:50.434 +1969-12-31 16:00:15.007 1969-12-31 16:00:15.148 1969-12-31 16:00:15.007 +1969-12-31 16:00:07.021 1969-12-31 16:00:02.997 1969-12-31 16:00:07.021 +1969-12-31 16:00:04.963 1969-12-31 15:59:56.474 1969-12-31 16:00:04.963 +1969-12-31 15:59:52.176 1969-12-31 16:00:07.787 1969-12-31 15:59:52.176 +1969-12-31 15:59:44.569 1969-12-31 15:59:51.665 1969-12-31 15:59:44.569 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_1.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_1.q.out new file mode 100644 index 000000000000..58c107a67a08 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_1.q.out @@ -0,0 +1,591 @@ +PREHOOK: query: drop table if exists decimal_1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists decimal_1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table decimal_1 (t decimal(4,2), u decimal(5), v decimal) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_1 +POSTHOOK: query: create table decimal_1 (t decimal(4,2), u decimal(5), v decimal) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_1 +PREHOOK: query: desc decimal_1 +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@decimal_1 +POSTHOOK: query: desc decimal_1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@decimal_1 +t decimal(4,2) +u decimal(5,0) +v decimal(10,0) +PREHOOK: query: insert overwrite table decimal_1 + select cast('17.29' as decimal(4,2)), 3.1415926BD, 3115926.54321BD from src tablesample (1 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@decimal_1 +POSTHOOK: query: insert overwrite table decimal_1 + select cast('17.29' as decimal(4,2)), 3.1415926BD, 3115926.54321BD from src tablesample (1 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@decimal_1 +POSTHOOK: Lineage: decimal_1.t EXPRESSION [] +POSTHOOK: Lineage: decimal_1.u EXPRESSION [] +POSTHOOK: Lineage: decimal_1.v EXPRESSION [] +PREHOOK: query: explain +select cast(t as boolean) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as boolean) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToBoolean(t) (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as boolean) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as boolean) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +true +PREHOOK: query: explain +select cast(t as tinyint) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as tinyint) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToByte(t) (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as tinyint) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as tinyint) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as smallint) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as smallint) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToShort(t) (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as smallint) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as smallint) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as int) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as int) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(t) (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as int) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as int) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as bigint) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as bigint) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToLong(t) (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: bigint) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as bigint) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as bigint) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as float) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as float) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToFloat(t) (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: float) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as float) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as float) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17.29 +PREHOOK: query: explain +select cast(t as double) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as double) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToDouble(t) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: double) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as double) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as double) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17.29 +PREHOOK: query: explain +select cast(t as string) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as string) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToString(t) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as string) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as string) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17.29 +PREHOOK: query: explain +select cast(t as timestamp) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as timestamp) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: CAST( t AS TIMESTAMP) (type: timestamp) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: timestamp) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: timestamp) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as timestamp) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as timestamp) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +1969-12-31 16:00:17.29 +PREHOOK: query: drop table decimal_1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_1 +PREHOOK: Output: default@decimal_1 +POSTHOOK: query: drop table decimal_1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_1 +POSTHOOK: Output: default@decimal_1 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out new file mode 100644 index 000000000000..8974bb8f940b --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out @@ -0,0 +1,112 @@ +PREHOOK: query: DROP TABLE IF EXISTS decimal_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS decimal_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS decimal +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS decimal +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE decimal_txt (dec decimal) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_txt +POSTHOOK: query: CREATE TABLE decimal_txt (dec decimal) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/decimal_10_0.txt' OVERWRITE INTO TABLE decimal_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/decimal_10_0.txt' OVERWRITE INTO TABLE decimal_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_txt +PREHOOK: query: CREATE TABLE DECIMAL STORED AS ORC AS SELECT * FROM decimal_txt +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@decimal_txt +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL +POSTHOOK: query: CREATE TABLE DECIMAL STORED AS ORC AS SELECT * FROM decimal_txt +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@decimal_txt +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL +PREHOOK: query: EXPLAIN +SELECT dec FROM DECIMAL order by dec +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT dec FROM DECIMAL order by dec +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal + Statistics: Num rows: 1 Data size: 219 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 219 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 219 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 219 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 219 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT dec FROM DECIMAL order by dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec FROM DECIMAL order by dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal +#### A masked pattern was here #### +NULL +1000000000 +PREHOOK: query: DROP TABLE DECIMAL_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_txt +PREHOOK: Output: default@decimal_txt +POSTHOOK: query: DROP TABLE DECIMAL_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_txt +POSTHOOK: Output: default@decimal_txt +PREHOOK: query: DROP TABLE DECIMAL +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal +PREHOOK: Output: default@decimal +POSTHOOK: query: DROP TABLE DECIMAL +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal +POSTHOOK: Output: default@decimal diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_2.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_2.q.out new file mode 100644 index 000000000000..af9459f10709 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_2.q.out @@ -0,0 +1,1676 @@ +PREHOOK: query: drop table decimal_2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table decimal_2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table decimal_2 (t decimal(18,9)) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_2 +POSTHOOK: query: create table decimal_2 (t decimal(18,9)) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_2 +PREHOOK: query: insert overwrite table decimal_2 + select cast('17.29' as decimal(4,2)) from src tablesample (1 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@decimal_2 +POSTHOOK: query: insert overwrite table decimal_2 + select cast('17.29' as decimal(4,2)) from src tablesample (1 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@decimal_2 +POSTHOOK: Lineage: decimal_2.t EXPRESSION [] +PREHOOK: query: explain +select cast(t as boolean) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as boolean) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToBoolean(t) (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as boolean) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as boolean) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +true +PREHOOK: query: explain +select cast(t as tinyint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as tinyint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToByte(t) (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as tinyint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as tinyint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as smallint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as smallint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToShort(t) (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as smallint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as smallint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as int) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as int) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(t) (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as int) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as int) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as bigint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as bigint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToLong(t) (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: bigint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as bigint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as bigint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as float) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as float) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToFloat(t) (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: float) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as float) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as float) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17.29 +PREHOOK: query: explain +select cast(t as double) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as double) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToDouble(t) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: double) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as double) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as double) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17.29 +PREHOOK: query: explain +select cast(t as string) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as string) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToString(t) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as string) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as string) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17.29 +PREHOOK: query: insert overwrite table decimal_2 + select cast('3404045.5044003' as decimal(18,9)) from src tablesample (1 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@decimal_2 +POSTHOOK: query: insert overwrite table decimal_2 + select cast('3404045.5044003' as decimal(18,9)) from src tablesample (1 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@decimal_2 +POSTHOOK: Lineage: decimal_2.t EXPRESSION [] +PREHOOK: query: explain +select cast(t as boolean) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as boolean) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToBoolean(t) (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as boolean) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as boolean) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +true +PREHOOK: query: explain +select cast(t as tinyint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as tinyint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToByte(t) (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as tinyint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as tinyint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +13 +PREHOOK: query: explain +select cast(t as smallint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as smallint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToShort(t) (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as smallint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as smallint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +-3827 +PREHOOK: query: explain +select cast(t as int) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as int) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(t) (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as int) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as int) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3404045 +PREHOOK: query: explain +select cast(t as bigint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as bigint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToLong(t) (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: bigint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as bigint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as bigint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3404045 +PREHOOK: query: explain +select cast(t as float) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as float) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToFloat(t) (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: float) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as float) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as float) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3404045.5 +PREHOOK: query: explain +select cast(t as double) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as double) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToDouble(t) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: double) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as double) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as double) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3404045.5044003 +PREHOOK: query: explain +select cast(t as string) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as string) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToString(t) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as string) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as string) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3404045.5044003 +PREHOOK: query: explain +select cast(3.14 as decimal(4,2)) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(3.14 as decimal(4,2)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3.14 AS decimal(4,2)) (type: decimal(4,2)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(4,2)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(4,2)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(3.14 as decimal(4,2)) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(3.14 as decimal(4,2)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3.14 +PREHOOK: query: explain +select cast(cast(3.14 as float) as decimal(4,2)) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(cast(3.14 as float) as decimal(4,2)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3.14 AS decimal(4,2)) (type: decimal(4,2)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(4,2)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(4,2)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(cast(3.14 as float) as decimal(4,2)) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(cast(3.14 as float) as decimal(4,2)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3.14 +PREHOOK: query: explain +select cast(cast('2012-12-19 11:12:19.1234567' as timestamp) as decimal(30,8)) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(cast('2012-12-19 11:12:19.1234567' as timestamp) as decimal(30,8)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 2012-12-19 11:12:19.1234567 AS decimal(30,8)) (type: decimal(30,8)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(30,8)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(30,8)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(cast('2012-12-19 11:12:19.1234567' as timestamp) as decimal(30,8)) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(cast('2012-12-19 11:12:19.1234567' as timestamp) as decimal(30,8)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +1355944339.1234567 +PREHOOK: query: explain +select cast(true as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(true as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( true AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain +select cast(true as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(true as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( true AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(true as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(true as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +1 +PREHOOK: query: explain +select cast(3Y as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(3Y as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3 AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(3Y as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(3Y as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3 +PREHOOK: query: explain +select cast(3S as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(3S as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3 AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(3S as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(3S as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3 +PREHOOK: query: explain +select cast(cast(3 as int) as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(cast(3 as int) as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3 AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(cast(3 as int) as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(cast(3 as int) as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3 +PREHOOK: query: explain +select cast(3L as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(3L as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3 AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(3L as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(3L as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3 +PREHOOK: query: explain +select cast(0.99999999999999999999 as decimal(20,19)) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(0.99999999999999999999 as decimal(20,19)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 1.0 AS decimal(20,19)) (type: decimal(20,19)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(20,19)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(20,19)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(0.99999999999999999999 as decimal(20,19)) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(0.99999999999999999999 as decimal(20,19)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +1.0 +PREHOOK: query: explain +select cast('0.99999999999999999999' as decimal(20,20)) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast('0.99999999999999999999' as decimal(20,20)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( '0.99999999999999999999' AS decimal(20,20)) (type: decimal(20,20)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(20,20)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(20,20)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast('0.99999999999999999999' as decimal(20,20)) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast('0.99999999999999999999' as decimal(20,20)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +0.99999999999999999999 +PREHOOK: query: drop table decimal_2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_2 +PREHOOK: Output: default@decimal_2 +POSTHOOK: query: drop table decimal_2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_2 +POSTHOOK: Output: default@decimal_2 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out new file mode 100644 index 000000000000..9c8b02bb7afc --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out @@ -0,0 +1,374 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_3_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_3_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_3 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_3 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_3_txt(key decimal(38,18), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_3_txt +POSTHOOK: query: CREATE TABLE DECIMAL_3_txt(key decimal(38,18), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_3_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_3_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_3_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_3_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_3_txt +PREHOOK: query: CREATE TABLE DECIMAL_3 STORED AS ORC AS SELECT * FROM DECIMAL_3_txt +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@decimal_3_txt +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_3 +POSTHOOK: query: CREATE TABLE DECIMAL_3 STORED AS ORC AS SELECT * FROM DECIMAL_3_txt +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@decimal_3_txt +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_3 +PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +NULL 0 +-1234567890.1234567890 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-1.12 -1 +-0.333 0 +-0.33 0 +-0.3 0 +0.000000000000000000 0 +0 0 +0 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +1 1 +1.0 1 +1.000000000000000000 1 +1.12 1 +1.122 1 +2 2 +2 2 +3.14 3 +3.14 3 +3.14 3 +3.140 4 +10 10 +20 20 +100 100 +124.00 124 +125.2 125 +200 200 +1234567890.1234567800 1234567890 +PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +1234567890.1234567800 1234567890 +200 200 +125.2 125 +124.00 124 +100 100 +20 20 +10 10 +3.140 4 +3.14 3 +3.14 3 +3.14 3 +2 2 +2 2 +1.122 1 +1.12 1 +1.000000000000000000 1 +1.0 1 +1 1 +0.333 0 +0.33 0 +0.3 0 +0.2 0 +0.1 0 +0.02 0 +0.01 0 +0 0 +0 0 +0.000000000000000000 0 +-0.3 0 +-0.33 0 +-0.333 0 +-1.12 -1 +-1.12 -1 +-1.122 -11 +-1255.49 -1255 +-4400 4400 +-1234567890.1234567890 -1234567890 +NULL 0 +PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +NULL 0 +-1234567890.1234567890 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-1.12 -1 +-0.333 0 +-0.33 0 +-0.3 0 +0.000000000000000000 0 +0 0 +0 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +1 1 +1.0 1 +1.000000000000000000 1 +1.12 1 +1.122 1 +2 2 +2 2 +3.14 3 +3.14 3 +3.14 3 +3.140 4 +10 10 +20 20 +100 100 +124.00 124 +125.2 125 +200 200 +1234567890.1234567800 1234567890 +PREHOOK: query: SELECT DISTINCT key FROM DECIMAL_3 ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT DISTINCT key FROM DECIMAL_3 ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +NULL +-1234567890.1234567890 +-4400 +-1255.49 +-1.122 +-1.12 +-0.333 +-0.33 +-0.3 +0.000000000000000000 +0.01 +0.02 +0.1 +0.2 +0.3 +0.33 +0.333 +1 +1.12 +1.122 +2 +3.14 +10 +20 +100 +124.00 +125.2 +200 +1234567890.1234567800 +PREHOOK: query: SELECT key, sum(value) FROM DECIMAL_3 GROUP BY key ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT key, sum(value) FROM DECIMAL_3 GROUP BY key ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +NULL 0 +-1234567890.1234567890 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -2 +-0.333 0 +-0.33 0 +-0.3 0 +0.000000000000000000 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +1 3 +1.12 1 +1.122 1 +2 4 +3.14 13 +10 10 +20 20 +100 100 +124.00 124 +125.2 125 +200 200 +1234567890.1234567800 1234567890 +PREHOOK: query: SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +-1234567890 -1234567890.1234567890 +-1255 -1255.49 +-11 -1.122 +-1 -2.24 +0 0.330000000000000000 +1 5.242000000000000000 +2 4 +3 9.42 +4 3.140 +10 10 +20 20 +100 100 +124 124.00 +125 125.2 +200 200 +4400 -4400 +1234567890 1234567890.1234567800 +PREHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +-1234567890.1234567890 -1234567890 -1234567890.1234567890 -1234567890 +-4400 4400 -4400 4400 +-1255.49 -1255 -1255.49 -1255 +-1.122 -11 -1.122 -11 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-0.333 0 -0.333 0 +-0.33 0 -0.33 0 +-0.3 0 -0.3 0 +0.000000000000000000 0 0.000000000000000000 0 +0 0 0.000000000000000000 0 +0 0 0.000000000000000000 0 +0.01 0 0.01 0 +0.02 0 0.02 0 +0.1 0 0.1 0 +0.2 0 0.2 0 +0.3 0 0.3 0 +0.33 0 0.33 0 +0.333 0 0.333 0 +1 1 1 1 +1.0 1 1 1 +1.000000000000000000 1 1 1 +1.12 1 1.12 1 +1.122 1 1.122 1 +2 2 2 2 +2 2 2 2 +2 2 2 2 +2 2 2 2 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.140 4 3.14 3 +3.140 4 3.14 3 +3.140 4 3.14 3 +10 10 10 10 +20 20 20 20 +100 100 100 100 +124.00 124 124.00 124 +125.2 125 125.2 125 +200 200 200 200 +1234567890.1234567800 1234567890 1234567890.1234567800 1234567890 +PREHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.14 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.14 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +3.14 3 +3.14 3 +3.14 3 +3.140 4 +PREHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.140 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.140 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +3.14 3 +3.14 3 +3.14 3 +3.140 4 +PREHOOK: query: DROP TABLE DECIMAL_3_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_3_txt +PREHOOK: Output: default@decimal_3_txt +POSTHOOK: query: DROP TABLE DECIMAL_3_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_3_txt +POSTHOOK: Output: default@decimal_3_txt +PREHOOK: query: DROP TABLE DECIMAL_3 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_3 +PREHOOK: Output: default@decimal_3 +POSTHOOK: query: DROP TABLE DECIMAL_3 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_3 +POSTHOOK: Output: default@decimal_3 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_4.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_4.q.out new file mode 100644 index 000000000000..483ae1f279e6 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_4.q.out @@ -0,0 +1,250 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_4_1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_4_1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_4_2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_4_2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_4_1(key decimal(35,25), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_4_1 +POSTHOOK: query: CREATE TABLE DECIMAL_4_1(key decimal(35,25), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_4_1 +PREHOOK: query: CREATE TABLE DECIMAL_4_2(key decimal(35,25), value decimal(35,25)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_4_2 +POSTHOOK: query: CREATE TABLE DECIMAL_4_2(key decimal(35,25), value decimal(35,25)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_4_2 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_4_1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_4_1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_4_1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_4_1 +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_4_2 SELECT key, key * 3 FROM DECIMAL_4_1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_4_1 +PREHOOK: Output: default@decimal_4_2 +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_4_2 SELECT key, key * 3 FROM DECIMAL_4_1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_4_1 +POSTHOOK: Output: default@decimal_4_2 +POSTHOOK: Lineage: decimal_4_2.key SIMPLE [(decimal_4_1)decimal_4_1.FieldSchema(name:key, type:decimal(35,25), comment:null), ] +POSTHOOK: Lineage: decimal_4_2.value EXPRESSION [(decimal_4_1)decimal_4_1.FieldSchema(name:key, type:decimal(35,25), comment:null), ] +PREHOOK: query: SELECT * FROM DECIMAL_4_1 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_4_1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_4_1 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_4_1 +#### A masked pattern was here #### +NULL 0 +-1234567890.1234567890 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-1.12 -1 +-0.333 0 +-0.33 0 +-0.3 0 +0.0000000000000000000000000 0 +0 0 +0 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +0.9999999999999999999999999 1 +1 1 +1.0 1 +1.12 1 +1.122 1 +2 2 +2 2 +3.14 3 +3.14 3 +3.14 3 +3.140 4 +10 10 +20 20 +100 100 +124.00 124 +125.2 125 +200 200 +1234567890.1234567800 1234567890 +PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +NULL NULL +-1234567890.1234567890 -3703703670.3703703670 +-4400 -13200 +-1255.49 -3766.47 +-1.122 -3.366 +-1.12 -3.36 +-1.12 -3.36 +-0.333 -0.999 +-0.33 -0.99 +-0.3 -0.9 +0.0000000000000000000000000 0.0000000000000000000000000 +0 0 +0 0 +0.01 0.03 +0.02 0.06 +0.1 0.3 +0.2 0.6 +0.3 0.9 +0.33 0.99 +0.333 0.999 +0.9999999999999999999999999 2.9999999999999999999999997 +1 3 +1.0 3.0 +1.12 3.36 +1.122 3.366 +2 6 +2 6 +3.14 9.42 +3.14 9.42 +3.14 9.42 +3.140 9.420 +10 30 +20 60 +100 300 +124.00 372.00 +125.2 375.6 +200 600 +1234567890.1234567800 3703703670.3703703400 +PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +NULL NULL +-1234567890.1234567890 -3703703670.3703703670 +-4400 -13200 +-1255.49 -3766.47 +-1.122 -3.366 +-1.12 -3.36 +-1.12 -3.36 +-0.333 -0.999 +-0.33 -0.99 +-0.3 -0.9 +0.0000000000000000000000000 0.0000000000000000000000000 +0 0 +0 0 +0.01 0.03 +0.02 0.06 +0.1 0.3 +0.2 0.6 +0.3 0.9 +0.33 0.99 +0.333 0.999 +0.9999999999999999999999999 2.9999999999999999999999997 +1 3 +1.0 3.0 +1.12 3.36 +1.122 3.366 +2 6 +2 6 +3.14 9.42 +3.14 9.42 +3.14 9.42 +3.140 9.420 +10 30 +20 60 +100 300 +124.00 372.00 +125.2 375.6 +200 600 +1234567890.1234567800 3703703670.3703703400 +PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +NULL NULL +-1234567890.1234567890 -3703703670.3703703670 +-4400 -13200 +-1255.49 -3766.47 +-1.122 -3.366 +-1.12 -3.36 +-1.12 -3.36 +-0.333 -0.999 +-0.33 -0.99 +-0.3 -0.9 +0.0000000000000000000000000 0.0000000000000000000000000 +0 0 +0 0 +0.01 0.03 +0.02 0.06 +0.1 0.3 +0.2 0.6 +0.3 0.9 +0.33 0.99 +0.333 0.999 +0.9999999999999999999999999 2.9999999999999999999999997 +1 3 +1.0 3.0 +1.12 3.36 +1.122 3.366 +2 6 +2 6 +3.14 9.42 +3.14 9.42 +3.14 9.42 +3.140 9.420 +10 30 +20 60 +100 300 +124.00 372.00 +125.2 375.6 +200 600 +1234567890.1234567800 3703703670.3703703400 +PREHOOK: query: DROP TABLE DECIMAL_4_1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_4_1 +PREHOOK: Output: default@decimal_4_1 +POSTHOOK: query: DROP TABLE DECIMAL_4_1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_4_1 +POSTHOOK: Output: default@decimal_4_1 +PREHOOK: query: DROP TABLE DECIMAL_4_2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_4_2 +PREHOOK: Output: default@decimal_4_2 +POSTHOOK: query: DROP TABLE DECIMAL_4_2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_4_2 +POSTHOOK: Output: default@decimal_4_2 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_5.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_5.q.out new file mode 100644 index 000000000000..01b5f42b44c3 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_5.q.out @@ -0,0 +1,239 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_5_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_5_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_5 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_5 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_5_txt(key decimal(10,5), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_5_txt +POSTHOOK: query: CREATE TABLE DECIMAL_5_txt(key decimal(10,5), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_5_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_5_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_5_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_5_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_5_txt +PREHOOK: query: CREATE TABLE DECIMAL_5(key decimal(10,5), value int) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_5 +POSTHOOK: query: CREATE TABLE DECIMAL_5(key decimal(10,5), value int) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_5 +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_5 SELECT * FROM DECIMAL_5_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_5_txt +PREHOOK: Output: default@decimal_5 +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_5 SELECT * FROM DECIMAL_5_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_5_txt +POSTHOOK: Output: default@decimal_5 +POSTHOOK: Lineage: decimal_5.key SIMPLE [(decimal_5_txt)decimal_5_txt.FieldSchema(name:key, type:decimal(10,5), comment:null), ] +POSTHOOK: Lineage: decimal_5.value SIMPLE [(decimal_5_txt)decimal_5_txt.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: SELECT key FROM DECIMAL_5 ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +POSTHOOK: query: SELECT key FROM DECIMAL_5 ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +NULL +NULL +NULL +-4400 +-1255.49 +-1.122 +-1.12 +-1.12 +-0.333 +-0.33 +-0.3 +0.00000 +0 +0 +0.01 +0.02 +0.1 +0.2 +0.3 +0.33 +0.333 +1 +1.0 +1.00000 +1.12 +1.122 +2 +2 +3.14 +3.14 +3.14 +3.140 +10 +20 +100 +124.00 +125.2 +200 +PREHOOK: query: SELECT DISTINCT key FROM DECIMAL_5 ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +POSTHOOK: query: SELECT DISTINCT key FROM DECIMAL_5 ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +NULL +-4400 +-1255.49 +-1.122 +-1.12 +-0.333 +-0.33 +-0.3 +0.00000 +0.01 +0.02 +0.1 +0.2 +0.3 +0.33 +0.333 +1 +1.12 +1.122 +2 +3.14 +10 +20 +100 +124.00 +125.2 +200 +PREHOOK: query: SELECT cast(key as decimal) FROM DECIMAL_5 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +POSTHOOK: query: SELECT cast(key as decimal) FROM DECIMAL_5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +-4400 +NULL +0 +0 +100 +10 +1 +0 +0 +200 +20 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +2 +3 +-1 +-1 +-1 +1 +1 +124 +125 +-1255 +3 +3 +3 +1 +NULL +NULL +PREHOOK: query: SELECT cast(key as decimal(6,3)) FROM DECIMAL_5 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +POSTHOOK: query: SELECT cast(key as decimal(6,3)) FROM DECIMAL_5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +NULL +NULL +0.000 +0 +100 +10 +1 +0.1 +0.01 +200 +20 +2 +0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +1.0 +2 +3.14 +-1.12 +-1.12 +-1.122 +1.12 +1.122 +124.00 +125.2 +NULL +3.14 +3.14 +3.140 +1.000 +NULL +NULL +PREHOOK: query: DROP TABLE DECIMAL_5_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_5_txt +PREHOOK: Output: default@decimal_5_txt +POSTHOOK: query: DROP TABLE DECIMAL_5_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_5_txt +POSTHOOK: Output: default@decimal_5_txt +PREHOOK: query: DROP TABLE DECIMAL_5 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_5 +PREHOOK: Output: default@decimal_5 +POSTHOOK: query: DROP TABLE DECIMAL_5 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_5 +POSTHOOK: Output: default@decimal_5 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out new file mode 100644 index 000000000000..7ecd50056a2e --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out @@ -0,0 +1,303 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_1_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_1_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_2_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_2_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_3_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_3_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_3 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_3 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_6_1_txt(key decimal(10,5), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_6_1_txt +POSTHOOK: query: CREATE TABLE DECIMAL_6_1_txt(key decimal(10,5), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_6_1_txt +PREHOOK: query: CREATE TABLE DECIMAL_6_2_txt(key decimal(17,4), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_6_2_txt +POSTHOOK: query: CREATE TABLE DECIMAL_6_2_txt(key decimal(17,4), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_6_2_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv9.txt' INTO TABLE DECIMAL_6_1_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_6_1_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv9.txt' INTO TABLE DECIMAL_6_1_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_6_1_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv9.txt' INTO TABLE DECIMAL_6_2_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_6_2_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv9.txt' INTO TABLE DECIMAL_6_2_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_6_2_txt +PREHOOK: query: CREATE TABLE DECIMAL_6_1(key decimal(10,5), value int) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_6_1 +POSTHOOK: query: CREATE TABLE DECIMAL_6_1(key decimal(10,5), value int) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_6_1 +PREHOOK: query: CREATE TABLE DECIMAL_6_2(key decimal(17,4), value int) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_6_2 +POSTHOOK: query: CREATE TABLE DECIMAL_6_2(key decimal(17,4), value int) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_6_2 +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_6_1 SELECT * FROM DECIMAL_6_1_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_1_txt +PREHOOK: Output: default@decimal_6_1 +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_6_1 SELECT * FROM DECIMAL_6_1_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_1_txt +POSTHOOK: Output: default@decimal_6_1 +POSTHOOK: Lineage: decimal_6_1.key SIMPLE [(decimal_6_1_txt)decimal_6_1_txt.FieldSchema(name:key, type:decimal(10,5), comment:null), ] +POSTHOOK: Lineage: decimal_6_1.value SIMPLE [(decimal_6_1_txt)decimal_6_1_txt.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_6_2 SELECT * FROM DECIMAL_6_2_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_2_txt +PREHOOK: Output: default@decimal_6_2 +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_6_2 SELECT * FROM DECIMAL_6_2_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_2_txt +POSTHOOK: Output: default@decimal_6_2 +POSTHOOK: Lineage: decimal_6_2.key SIMPLE [(decimal_6_2_txt)decimal_6_2_txt.FieldSchema(name:key, type:decimal(17,4), comment:null), ] +POSTHOOK: Lineage: decimal_6_2.value SIMPLE [(decimal_6_2_txt)decimal_6_2_txt.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: SELECT * FROM DECIMAL_6_1 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_6_1 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_1 +#### A masked pattern was here #### +NULL -1234567890 +NULL 0 +NULL 3 +NULL 4 +NULL 1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-0.333 0 +-0.3 0 +0.00000 0 +0 0 +0.333 0 +1.0 1 +1.00000 1 +1.12 1 +1.122 1 +2 2 +3.14 3 +3.14 3 +3.140 4 +10 10 +10.73433 5 +124.00 124 +125.2 125 +23232.23435 2 +PREHOOK: query: SELECT * FROM DECIMAL_6_2 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_6_2 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_2 +#### A masked pattern was here #### +NULL 0 +-1234567890.1235 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-0.333 0 +-0.3 0 +0.0000 0 +0 0 +0.333 0 +1.0 1 +1.0000 1 +1.12 1 +1.122 1 +2 2 +3.14 3 +3.14 3 +3.140 4 +10 10 +10.7343 5 +124.00 124 +125.2 125 +23232.2344 2 +2389432.2375 3 +2389432.2375 4 +1234567890.1235 1234567890 +PREHOOK: query: SELECT T.key from ( + SELECT key, value from DECIMAL_6_1 + UNION ALL + SELECT key, value from DECIMAL_6_2 +) T order by T.key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_1 +PREHOOK: Input: default@decimal_6_2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT T.key from ( + SELECT key, value from DECIMAL_6_1 + UNION ALL + SELECT key, value from DECIMAL_6_2 +) T order by T.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_1 +POSTHOOK: Input: default@decimal_6_2 +#### A masked pattern was here #### +NULL +NULL +NULL +NULL +NULL +NULL +-1234567890.1235 +-4400 +-4400 +-1255.49 +-1255.49 +-1.122 +-1.122 +-1.12 +-1.12 +-0.333 +-0.333 +-0.3 +-0.3 +0.00000 +0.0000 +0 +0 +0.333 +0.333 +1.0 +1.0 +1.0000 +1.00000 +1.12 +1.12 +1.122 +1.122 +2 +2 +3.14 +3.14 +3.14 +3.14 +3.140 +3.140 +10 +10 +10.7343 +10.73433 +124.00 +124.00 +125.2 +125.2 +23232.23435 +23232.2344 +2389432.2375 +2389432.2375 +1234567890.1235 +PREHOOK: query: CREATE TABLE DECIMAL_6_3 STORED AS ORC AS SELECT key + 5.5 AS k, value * 11 AS v from DECIMAL_6_1 ORDER BY v +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@decimal_6_1 +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_6_3 +POSTHOOK: query: CREATE TABLE DECIMAL_6_3 STORED AS ORC AS SELECT key + 5.5 AS k, value * 11 AS v from DECIMAL_6_1 ORDER BY v +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@decimal_6_1 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_6_3 +PREHOOK: query: desc DECIMAL_6_3 +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@decimal_6_3 +POSTHOOK: query: desc DECIMAL_6_3 +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@decimal_6_3 +k double +v int +PREHOOK: query: SELECT * FROM DECIMAL_6_3 ORDER BY k, v +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_6_3 ORDER BY k, v +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_3 +#### A masked pattern was here #### +NULL -695344902 +NULL 0 +NULL 33 +NULL 44 +NULL 695344902 +-4394.5 48400 +-1249.99 -13805 +4.378 -121 +4.38 -11 +5.167 0 +5.2 0 +5.5 0 +5.5 0 +5.833 0 +6.5 11 +6.5 11 +6.62 11 +6.622 11 +7.5 22 +8.64 33 +8.64 33 +8.64 44 +15.5 110 +16.23433 55 +129.5 1364 +130.7 1375 +23237.73435 22 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out index f1b7b8bee600..e4b2c56190d8 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out @@ -113,14 +113,14 @@ POSTHOOK: query: SELECT cint, POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_vgby #### A masked pattern was here #### -NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 3072 11160.71538461538500 -5147.90769230769300 6010604.30769230735360 --3728 6 5831542.2692483780 -3367.6517567568 5817556.0411483778 6 6984454.21109769200000 -4033.445769230769 6967702.86724384584710 --563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 2 -617.56077692307690 -4033.445769230769 -4651.00654615384590 -762 2 5831542.2692483780 1531.2194054054 5833073.4886537834 2 6984454.21109769200000 1833.9456923076925 6986288.15678999969250 -6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 3 6984454.211097692 -617.56077692307690 6983219.08954384584620 -253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 1024 11697.96923076923100 -11712.99230769231000 -416182.64030769233089 -528534767 1024 5831542.2692483780 -9777.1594594595 11646372.8607481068 1024 6984454.21109769200000 -11710.13076923077100 13948892.79980307629003 -626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 1024 11645.74615384615400 -11712.27692307692300 12625.04759999997746 +NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 3072 11160.715384615385 -5147.907692307693 6010604.3076923073536 +-3728 6 5831542.269248378 -3367.6517567568 5817556.0411483778 6 6984454.211097692 -4033.445769230769 6967702.8672438458471 +-563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 +762 2 5831542.269248378 1531.2194054054 5833073.4886537834 2 6984454.211097692 1833.9456923076925 6986288.1567899996925 +6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 +253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 1024 11697.969230769231 -11712.99230769231 -416182.64030769233089 +528534767 1024 5831542.269248378 -9777.1594594595 11646372.8607481068 1024 6984454.211097692 -11710.130769230771 13948892.79980307629003 +626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 1024 11645.746153846154 -11712.276923076923 12625.04759999997746 PREHOOK: query: -- Now add the others... EXPLAIN SELECT cint, COUNT(cdecimal1), MAX(cdecimal1), MIN(cdecimal1), SUM(cdecimal1), AVG(cdecimal1), STDDEV_POP(cdecimal1), STDDEV_SAMP(cdecimal1), @@ -217,11 +217,11 @@ POSTHOOK: query: SELECT cint, POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_vgby #### A masked pattern was here #### -NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 1633.60810810806667 5695.483082135364 5696.4103077145055 3072 11160.71538461538500 -5147.90769230769300 6010604.30769230735360 1956.576923076922966667 6821.495748565159 6822.606289190924 --3728 6 5831542.2692483780 -3367.6517567568 5817556.0411483778 969592.67352472963333 2174330.2092403853 2381859.406131774 6 6984454.21109769200000 -4033.445769230769 6967702.86724384584710 1161283.811207307641183333 2604201.2704476737 2852759.5602156054 --563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 -1941.6364148649 1426.0153418918999 2016.6902366556308 2 -617.56077692307690 -4033.445769230769 -4651.00654615384590 -2325.50327307692295 1707.9424961538462 2415.395441814127 -762 2 5831542.2692483780 1531.2194054054 5833073.4886537834 2916536.7443268917 2915005.5249214866 4122440.3477364695 2 6984454.21109769200000 1833.9456923076925 6986288.15678999969250 3493144.07839499984625 3491310.1327026924 4937458.140118758 -6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 1943503.67570081066667 2749258.455012492 3367140.1929065133 3 6984454.211097692 -617.56077692307690 6983219.08954384584620 2327739.696514615282066667 3292794.4113115156 4032833.0678006653 -253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 -339.33992366976309 5708.9563478862 5711.745967572779 1024 11697.96923076923100 -11712.99230769231000 -416182.64030769233089 -406.428359675480791885 6837.632716002934 6840.973851172274 -528534767 1024 5831542.2692483780 -9777.1594594595 11646372.8607481068 11373.41099682432305 257528.92988206653 257654.7686043977 1024 6984454.21109769200000 -11710.13076923077100 13948892.79980307629003 13621.965624807691689482 308443.1074570801 308593.82484083984 -626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 10.29399661106318 5742.09145323734 5744.897264034267 1024 11645.74615384615400 -11712.27692307692300 12625.04759999997746 12.329148046874977988 6877.318722794877 6880.679250101603 +NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 1633.60810810806667 5695.483082135364 5696.4103077145055 3072 11160.715384615385 -5147.907692307693 6010604.3076923073536 1956.576923076922966667 6821.495748565159 6822.606289190924 +-3728 6 5831542.269248378 -3367.6517567568 5817556.0411483778 969592.67352472963333 2174330.2092403853 2381859.406131774 6 6984454.211097692 -4033.445769230769 6967702.8672438458471 1161283.811207307641183333 2604201.2704476737 2852759.5602156054 +-563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 -1941.6364148649 1426.0153418918999 2016.6902366556308 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 -2325.50327307692295 1707.9424961538462 2415.395441814127 +762 2 5831542.269248378 1531.2194054054 5833073.4886537834 2916536.7443268917 2915005.5249214866 4122440.3477364695 2 6984454.211097692 1833.9456923076925 6986288.1567899996925 3493144.07839499984625 3491310.1327026924 4937458.140118758 +6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 1943503.67570081066667 2749258.455012492 3367140.1929065133 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 2327739.696514615282066667 3292794.4113115156 4032833.0678006653 +253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 -339.33992366976309 5708.9563478862 5711.745967572779 1024 11697.969230769231 -11712.99230769231 -416182.64030769233089 -406.428359675480791885 6837.632716002934 6840.973851172274 +528534767 1024 5831542.269248378 -9777.1594594595 11646372.8607481068 11373.41099682432305 257528.92988206653 257654.7686043977 1024 6984454.211097692 -11710.130769230771 13948892.79980307629003 13621.965624807691689482 308443.1074570801 308593.82484083984 +626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 10.29399661106318 5742.09145323734 5744.897264034267 1024 11645.746153846154 -11712.276923076923 12625.04759999997746 12.329148046874977988 6877.318722794877 6880.679250101603 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_cast.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_cast.q.out new file mode 100644 index 000000000000..e2fe3a21118a --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_cast.q.out @@ -0,0 +1,41 @@ +PREHOOK: query: EXPLAIN SELECT cdouble, cint, cboolean1, ctimestamp1, CAST(cdouble AS DECIMAL(20,10)), CAST(cint AS DECIMAL(23,14)), CAST(cboolean1 AS DECIMAL(5,2)), CAST(ctimestamp1 AS DECIMAL(15,0)) FROM alltypesorc WHERE cdouble IS NOT NULL AND cint IS NOT NULL AND cboolean1 IS NOT NULL AND ctimestamp1 IS NOT NULL LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cdouble, cint, cboolean1, ctimestamp1, CAST(cdouble AS DECIMAL(20,10)), CAST(cint AS DECIMAL(23,14)), CAST(cboolean1 AS DECIMAL(5,2)), CAST(ctimestamp1 AS DECIMAL(15,0)) FROM alltypesorc WHERE cdouble IS NOT NULL AND cint IS NOT NULL AND cboolean1 IS NOT NULL AND ctimestamp1 IS NOT NULL LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: (((cdouble is not null and cint is not null) and cboolean1 is not null) and ctimestamp1 is not null) (type: boolean) + Select Operator + expressions: cdouble (type: double), cint (type: int), cboolean1 (type: boolean), ctimestamp1 (type: timestamp), CAST( cdouble AS decimal(20,10)) (type: decimal(20,10)), CAST( cint AS decimal(23,14)) (type: decimal(23,14)), CAST( cboolean1 AS decimal(5,2)) (type: decimal(5,2)), CAST( ctimestamp1 AS decimal(15,0)) (type: decimal(15,0)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT cdouble, cint, cboolean1, ctimestamp1, CAST(cdouble AS DECIMAL(20,10)), CAST(cint AS DECIMAL(23,14)), CAST(cboolean1 AS DECIMAL(5,2)), CAST(ctimestamp1 AS DECIMAL(15,0)) FROM alltypesorc WHERE cdouble IS NOT NULL AND cint IS NOT NULL AND cboolean1 IS NOT NULL AND ctimestamp1 IS NOT NULL LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdouble, cint, cboolean1, ctimestamp1, CAST(cdouble AS DECIMAL(20,10)), CAST(cint AS DECIMAL(23,14)), CAST(cboolean1 AS DECIMAL(5,2)), CAST(ctimestamp1 AS DECIMAL(15,0)) FROM alltypesorc WHERE cdouble IS NOT NULL AND cint IS NOT NULL AND cboolean1 IS NOT NULL AND ctimestamp1 IS NOT NULL LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-13326.0 528534767 true 1969-12-31 15:59:46.674 -13326.0 528534767 1 -13 +-15813.0 528534767 true 1969-12-31 15:59:55.787 -15813.0 528534767 1 -4 +-9566.0 528534767 true 1969-12-31 15:59:44.187 -9566.0 528534767 1 -16 +15007.0 528534767 true 1969-12-31 15:59:50.434 15007.0 528534767 1 -10 +7021.0 528534767 true 1969-12-31 16:00:15.007 7021.0 528534767 1 15 +4963.0 528534767 true 1969-12-31 16:00:07.021 4963.0 528534767 1 7 +-7824.0 528534767 true 1969-12-31 16:00:04.963 -7824.0 528534767 1 5 +-15431.0 528534767 true 1969-12-31 15:59:52.176 -15431.0 528534767 1 -8 +-15549.0 528534767 true 1969-12-31 15:59:44.569 -15549.0 528534767 1 -15 +5780.0 528534767 true 1969-12-31 15:59:44.451 5780.0 528534767 1 -16 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out new file mode 100644 index 000000000000..7faa6305faff --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out @@ -0,0 +1,51 @@ +PREHOOK: query: CREATE TABLE decimal_test STORED AS ORC AS SELECT cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2 FROM alltypesorc +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_test +POSTHOOK: query: CREATE TABLE decimal_test STORED AS ORC AS SELECT cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2 FROM alltypesorc +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_test +PREHOOK: query: EXPLAIN SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)), cdecimal1 % 10, CAST(cdecimal1 AS INT), CAST(cdecimal2 AS SMALLINT), CAST(cdecimal2 AS TINYINT), CAST(cdecimal1 AS BIGINT), CAST (cdecimal1 AS BOOLEAN), CAST(cdecimal2 AS DOUBLE), CAST(cdecimal1 AS FLOAT), CAST(cdecimal2 AS STRING), CAST(cdecimal1 AS TIMESTAMP) FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)), cdecimal1 % 10, CAST(cdecimal1 AS INT), CAST(cdecimal2 AS SMALLINT), CAST(cdecimal2 AS TINYINT), CAST(cdecimal1 AS BIGINT), CAST (cdecimal1 AS BOOLEAN), CAST(cdecimal2 AS DOUBLE), CAST(cdecimal1 AS FLOAT), CAST(cdecimal2 AS STRING), CAST(cdecimal1 AS TIMESTAMP) FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: decimal_test + Filter Operator + predicate: (((((cdecimal1 > 0) and (cdecimal1 < 12345.5678)) and (cdecimal2 <> 0)) and (cdecimal2 > 1000)) and cdouble is not null) (type: boolean) + Select Operator + expressions: (cdecimal1 + cdecimal2) (type: decimal(25,14)), (cdecimal1 - (2 * cdecimal2)) (type: decimal(26,14)), ((cdecimal1 + 2.34) / cdecimal2) (type: double), (cdecimal1 * (cdecimal2 / 3.4)) (type: double), (cdecimal1 % 10) (type: decimal(12,10)), UDFToInteger(cdecimal1) (type: int), UDFToShort(cdecimal2) (type: smallint), UDFToByte(cdecimal2) (type: tinyint), UDFToLong(cdecimal1) (type: bigint), UDFToBoolean(cdecimal1) (type: boolean), UDFToDouble(cdecimal2) (type: double), UDFToFloat(cdecimal1) (type: float), UDFToString(cdecimal2) (type: string), CAST( cdecimal1 AS TIMESTAMP) (type: timestamp) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)), cdecimal1 % 10, CAST(cdecimal1 AS INT), CAST(cdecimal2 AS SMALLINT), CAST(cdecimal2 AS TINYINT), CAST(cdecimal1 AS BIGINT), CAST (cdecimal1 AS BOOLEAN), CAST(cdecimal2 AS DOUBLE), CAST(cdecimal1 AS FLOAT), CAST(cdecimal2 AS STRING), CAST(cdecimal1 AS TIMESTAMP) FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_test +#### A masked pattern was here #### +POSTHOOK: query: SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdecimal1+2.34)/cdecimal2), (cdecimal1 * (cdecimal2/3.4)), cdecimal1 % 10, CAST(cdecimal1 AS INT), CAST(cdecimal2 AS SMALLINT), CAST(cdecimal2 AS TINYINT), CAST(cdecimal1 AS BIGINT), CAST (cdecimal1 AS BOOLEAN), CAST(cdecimal2 AS DOUBLE), CAST(cdecimal1 AS FLOAT), CAST(cdecimal2 AS STRING), CAST(cdecimal1 AS TIMESTAMP) FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_test +#### A masked pattern was here #### +19699.417463617423 -12507.913305613346 0.8351496686995997 2.8303425077026896E7 3.6405405405 8963 10735 -17 8963 true 10735.776923076923 8963.641 10735.776923076923 1969-12-31 18:29:23.64054054 +9216.339708939685 -5851.806444906470 0.8353975893550668 6195112.1797296945 3.6243243243 4193 5022 -98 4193 true 5022.715384615385 4193.6245 5022.715384615385 1969-12-31 17:09:53.624324324 +6514.8403326403464 -4136.5212058211928 0.8355907765708067 3095563.9418919063 4.3864864865 2964 3550 -34 2964 true 3550.4538461538464 2964.3865 3550.4538461538464 1969-12-31 16:49:24.386486486 +7587.301455301477 -4817.467775467754 0.8354976172734904 4198623.24324327 2.3783783784 3452 4134 38 3452 true 4134.923076923077 3452.3784 4134.923076923077 1969-12-31 16:57:32.378378378 +19197.9729729730 -12189.5270270270 0.835155361813429 2.6880848817567654E7 5.4729729730 8735 10462 -34 8735 true 10462.5 8735.473 10462.5 1969-12-31 18:25:35.472972973 +17098.9945945946 -10856.8054054054 0.8351828165813104 2.132423090270272E7 0.3945945946 7780 9318 102 7780 true 9318.6 7780.3945 9318.6 1969-12-31 18:09:40.394594594 +12433.723076923077 -7894.646153846154 0.8352770361086894 1.12754688E7 7.6 5657 6776 120 5657 true 6776.123076923077 5657.6 6776.123076923077 1969-12-31 17:34:17.6 +7247.316839916862 -4601.598544698524 0.8355241651897876 3830775.6932432684 7.6783783784 3297 3949 109 3297 true 3949.638461538462 3297.6785 3949.638461538462 1969-12-31 16:54:57.678378378 +14757.1700623700465 -9369.8914760914930 0.8352226654922171 1.5883214124324286E7 4.8162162162 6714 8042 106 6714 true 8042.3538461538465 6714.8164 8042.3538461538465 1969-12-31 17:51:54.816216216 +10964.832016631993 -6961.991060291086 0.8353232978714221 8768719.779729689 9.2243243243 4989 5975 87 4989 true 5975.607692307693 4989.224 5975.607692307693 1969-12-31 17:23:09.224324324 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out new file mode 100644 index 000000000000..6a5ccc65cff8 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out @@ -0,0 +1,211 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +CREATE TABLE decimal_mapjoin STORED AS ORC AS + SELECT cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, + CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2, + cint + FROM alltypesorc +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_mapjoin +POSTHOOK: query: -- SORT_QUERY_RESULTS + +CREATE TABLE decimal_mapjoin STORED AS ORC AS + SELECT cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, + CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2, + cint + FROM alltypesorc +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_mapjoin +PREHOOK: query: EXPLAIN SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2 + FROM decimal_mapjoin l + JOIN decimal_mapjoin r ON l.cint = r.cint + WHERE l.cint = 6981 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2 + FROM decimal_mapjoin l + JOIN decimal_mapjoin r ON l.cint = r.cint + WHERE l.cint = 6981 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 2 <- Map 1 (BROADCAST_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: r + Statistics: Num rows: 12288 Data size: 2165060 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cint = 6981) (type: boolean) + Statistics: Num rows: 6144 Data size: 1082530 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: 6981 (type: int) + sort order: + + Statistics: Num rows: 6144 Data size: 1082530 Basic stats: COMPLETE Column stats: NONE + value expressions: cdecimal2 (type: decimal(23,14)) + Execution mode: vectorized + Map 2 + Map Operator Tree: + TableScan + alias: l + Statistics: Num rows: 12288 Data size: 2165060 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cint = 6981) (type: boolean) + Statistics: Num rows: 6144 Data size: 1082530 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {cdecimal1} + 1 {cdecimal2} + keys: + 0 6981 (type: int) + 1 6981 (type: int) + outputColumnNames: _col1, _col9 + input vertices: + 1 Map 1 + Statistics: Num rows: 6758 Data size: 1190783 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: 6981 (type: int), 6981 (type: int), _col1 (type: decimal(20,10)), _col9 (type: decimal(23,14)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 6758 Data size: 1190783 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6758 Data size: 1190783 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2 + FROM decimal_mapjoin l + JOIN decimal_mapjoin r ON l.cint = r.cint + WHERE l.cint = 6981 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_mapjoin +#### A masked pattern was here #### +POSTHOOK: query: SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2 + FROM decimal_mapjoin l + JOIN decimal_mapjoin r ON l.cint = r.cint + WHERE l.cint = 6981 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_mapjoin +#### A masked pattern was here #### +6981 6981 -515.6210729730 -617.5607769230769 +6981 6981 -515.6210729730 -617.5607769230769 +6981 6981 -515.6210729730 -617.5607769230769 +6981 6981 -515.6210729730 -617.5607769230769 +6981 6981 -515.6210729730 6984454.211097692 +6981 6981 -515.6210729730 6984454.211097692 +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 5831542.269248378 -617.5607769230769 +6981 6981 5831542.269248378 -617.5607769230769 +6981 6981 5831542.269248378 6984454.211097692 +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL +6981 6981 NULL NULL diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_math_funcs.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_math_funcs.q.out new file mode 100644 index 000000000000..9e09f71726a7 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_math_funcs.q.out @@ -0,0 +1,192 @@ +PREHOOK: query: CREATE TABLE decimal_test STORED AS ORC AS SELECT cbigint, cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2 FROM alltypesorc +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@alltypesorc +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_test +POSTHOOK: query: CREATE TABLE decimal_test STORED AS ORC AS SELECT cbigint, cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2 FROM alltypesorc +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@alltypesorc +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_test +PREHOOK: query: -- Test math functions in vectorized mode to verify they run correctly end-to-end. + +explain +select + cdecimal1 + ,Round(cdecimal1, 2) + ,Round(cdecimal1) + ,Floor(cdecimal1) + ,Ceil(cdecimal1) + ,round(Exp(cdecimal1), 58) + ,Ln(cdecimal1) + ,Log10(cdecimal1) + -- Use log2 as a representative function to test all input types. + ,Log2(cdecimal1) + -- Use 15601.0 to test zero handling, as there are no zeroes in the table + ,Log2(cdecimal1 - 15601.0) + ,Log(2.0, cdecimal1) + ,Pow(log2(cdecimal1), 2.0) + ,Power(log2(cdecimal1), 2.0) + ,Sqrt(cdecimal1) + ,Abs(cdecimal1) + ,Sin(cdecimal1) + ,Asin(cdecimal1) + ,Cos(cdecimal1) + ,ACos(cdecimal1) + ,Atan(cdecimal1) + ,Degrees(cdecimal1) + ,Radians(cdecimal1) + ,Positive(cdecimal1) + ,Negative(cdecimal1) + ,Sign(cdecimal1) + -- Test nesting + ,cos(-sin(log(cdecimal1)) + 3.14159) +from decimal_test +-- limit output to a reasonably small number of rows +where cbigint % 500 = 0 +-- test use of a math function in the WHERE clause +and sin(cdecimal1) >= -1.0 +PREHOOK: type: QUERY +POSTHOOK: query: -- Test math functions in vectorized mode to verify they run correctly end-to-end. + +explain +select + cdecimal1 + ,Round(cdecimal1, 2) + ,Round(cdecimal1) + ,Floor(cdecimal1) + ,Ceil(cdecimal1) + ,round(Exp(cdecimal1), 58) + ,Ln(cdecimal1) + ,Log10(cdecimal1) + -- Use log2 as a representative function to test all input types. + ,Log2(cdecimal1) + -- Use 15601.0 to test zero handling, as there are no zeroes in the table + ,Log2(cdecimal1 - 15601.0) + ,Log(2.0, cdecimal1) + ,Pow(log2(cdecimal1), 2.0) + ,Power(log2(cdecimal1), 2.0) + ,Sqrt(cdecimal1) + ,Abs(cdecimal1) + ,Sin(cdecimal1) + ,Asin(cdecimal1) + ,Cos(cdecimal1) + ,ACos(cdecimal1) + ,Atan(cdecimal1) + ,Degrees(cdecimal1) + ,Radians(cdecimal1) + ,Positive(cdecimal1) + ,Negative(cdecimal1) + ,Sign(cdecimal1) + -- Test nesting + ,cos(-sin(log(cdecimal1)) + 3.14159) +from decimal_test +-- limit output to a reasonably small number of rows +where cbigint % 500 = 0 +-- test use of a math function in the WHERE clause +and sin(cdecimal1) >= -1.0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: decimal_test + Filter Operator + predicate: (((cbigint % 500) = 0) and (sin(cdecimal1) >= -1.0)) (type: boolean) + Select Operator + expressions: cdecimal1 (type: decimal(20,10)), round(cdecimal1, 2) (type: decimal(13,2)), round(cdecimal1) (type: decimal(11,0)), floor(cdecimal1) (type: decimal(11,0)), ceil(cdecimal1) (type: decimal(11,0)), round(exp(cdecimal1), 58) (type: double), ln(cdecimal1) (type: double), log10(cdecimal1) (type: double), log2(cdecimal1) (type: double), log2((cdecimal1 - 15601.0)) (type: double), log(2.0, cdecimal1) (type: double), power(log2(cdecimal1), 2.0) (type: double), power(log2(cdecimal1), 2.0) (type: double), sqrt(cdecimal1) (type: double), abs(cdecimal1) (type: decimal(38,18)), sin(cdecimal1) (type: double), asin(cdecimal1) (type: double), cos(cdecimal1) (type: double), acos(cdecimal1) (type: double), atan(cdecimal1) (type: double), degrees(cdecimal1) (type: double), radians(cdecimal1) (type: double), cdecimal1 (type: decimal(20,10)), (- cdecimal1) (type: decimal(20,10)), sign(cdecimal1) (type: int), cos(((- sin(log(cdecimal1))) + 3.14159)) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25 + ListSink + +PREHOOK: query: select + cdecimal1 + ,Round(cdecimal1, 2) + ,Round(cdecimal1) + ,Floor(cdecimal1) + ,Ceil(cdecimal1) + ,round(Exp(cdecimal1), 58) + ,Ln(cdecimal1) + ,Log10(cdecimal1) + -- Use log2 as a representative function to test all input types. + ,Log2(cdecimal1) + -- Use 15601.0 to test zero handling, as there are no zeroes in the table + ,Log2(cdecimal1 - 15601.0) + ,Log(2.0, cdecimal1) + ,Pow(log2(cdecimal1), 2.0) + ,Power(log2(cdecimal1), 2.0) + ,Sqrt(cdecimal1) + ,Abs(cdecimal1) + ,Sin(cdecimal1) + ,Asin(cdecimal1) + ,Cos(cdecimal1) + ,ACos(cdecimal1) + ,Atan(cdecimal1) + ,Degrees(cdecimal1) + ,Radians(cdecimal1) + ,Positive(cdecimal1) + ,Negative(cdecimal1) + ,Sign(cdecimal1) + -- Test nesting + ,cos(-sin(log(cdecimal1)) + 3.14159) +from decimal_test +-- limit output to a reasonably small number of rows +where cbigint % 500 = 0 +-- test use of a math function in the WHERE clause +and sin(cdecimal1) >= -1.0 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_test +#### A masked pattern was here #### +POSTHOOK: query: select + cdecimal1 + ,Round(cdecimal1, 2) + ,Round(cdecimal1) + ,Floor(cdecimal1) + ,Ceil(cdecimal1) + ,round(Exp(cdecimal1), 58) + ,Ln(cdecimal1) + ,Log10(cdecimal1) + -- Use log2 as a representative function to test all input types. + ,Log2(cdecimal1) + -- Use 15601.0 to test zero handling, as there are no zeroes in the table + ,Log2(cdecimal1 - 15601.0) + ,Log(2.0, cdecimal1) + ,Pow(log2(cdecimal1), 2.0) + ,Power(log2(cdecimal1), 2.0) + ,Sqrt(cdecimal1) + ,Abs(cdecimal1) + ,Sin(cdecimal1) + ,Asin(cdecimal1) + ,Cos(cdecimal1) + ,ACos(cdecimal1) + ,Atan(cdecimal1) + ,Degrees(cdecimal1) + ,Radians(cdecimal1) + ,Positive(cdecimal1) + ,Negative(cdecimal1) + ,Sign(cdecimal1) + -- Test nesting + ,cos(-sin(log(cdecimal1)) + 3.14159) +from decimal_test +-- limit output to a reasonably small number of rows +where cbigint % 500 = 0 +-- test use of a math function in the WHERE clause +and sin(cdecimal1) >= -1.0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_test +#### A masked pattern was here #### +-119.4594594595 -119.46 -119 -120 -119 1.316485E-52 NULL NULL NULL NULL NULL NULL NULL NULL 119.4594594595 -0.07885666683797002 NaN 0.9968859644388647 NaN -1.5624254815943668 -6844.522849943508 -2.0849608902209606 -119.4594594595 119.4594594595 -1 NULL +9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NaN 0.8909676185918236 NaN 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 +9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NaN 0.8909676185918236 NaN 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 +9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NaN 0.8909676185918236 NaN 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_precision.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_precision.q.out new file mode 100644 index 000000000000..d15562313be7 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_precision.q.out @@ -0,0 +1,675 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_PRECISION_txt(dec decimal(20,10)) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_PRECISION_txt +POSTHOOK: query: CREATE TABLE DECIMAL_PRECISION_txt(dec decimal(20,10)) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_PRECISION_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv8.txt' INTO TABLE DECIMAL_PRECISION_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_precision_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv8.txt' INTO TABLE DECIMAL_PRECISION_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_precision_txt +PREHOOK: query: CREATE TABLE DECIMAL_PRECISION(dec decimal(20,10)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_PRECISION +POSTHOOK: query: CREATE TABLE DECIMAL_PRECISION(dec decimal(20,10)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_PRECISION +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_PRECISION SELECT * FROM DECIMAL_PRECISION_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision_txt +PREHOOK: Output: default@decimal_precision +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_PRECISION SELECT * FROM DECIMAL_PRECISION_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision_txt +POSTHOOK: Output: default@decimal_precision +POSTHOOK: Lineage: decimal_precision.dec SIMPLE [(decimal_precision_txt)decimal_precision_txt.FieldSchema(name:dec, type:decimal(20,10), comment:null), ] +PREHOOK: query: SELECT * FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +0.0000000000 +0.0000000000 +0.0000000000 +0.0000000000 +0 +0.1234567890 +0.1234567890 +1.2345678901 +1.2345678901 +1.2345678901 +12.3456789012 +12.3456789012 +12.3456789012 +123.4567890123 +123.4567890123 +123.4567890123 +1234.5678901235 +1234.5678901235 +1234.5678901235 +12345.6789012346 +12345.6789012346 +123456.7890123456 +123456.7890123457 +1234567.890123456 +1234567.8901234568 +12345678.90123456 +12345678.9012345679 +123456789.0123456 +123456789.0123456789 +1234567890.123456 +1234567890.1234567890 +PREHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +0.0000000000 1.0000000000 -1.0000000000 +0.0000000000 1.0000000000 -1.0000000000 +0.0000000000 1.0000000000 -1.0000000000 +0.0000000000 1.0000000000 -1.0000000000 +0 1 -1 +0.1234567890 1.1234567890 -0.8765432110 +0.1234567890 1.1234567890 -0.8765432110 +1.2345678901 2.2345678901 0.2345678901 +1.2345678901 2.2345678901 0.2345678901 +1.2345678901 2.2345678901 0.2345678901 +12.3456789012 13.3456789012 11.3456789012 +12.3456789012 13.3456789012 11.3456789012 +12.3456789012 13.3456789012 11.3456789012 +123.4567890123 124.4567890123 122.4567890123 +123.4567890123 124.4567890123 122.4567890123 +123.4567890123 124.4567890123 122.4567890123 +1234.5678901235 1235.5678901235 1233.5678901235 +1234.5678901235 1235.5678901235 1233.5678901235 +1234.5678901235 1235.5678901235 1233.5678901235 +12345.6789012346 12346.6789012346 12344.6789012346 +12345.6789012346 12346.6789012346 12344.6789012346 +123456.7890123456 123457.7890123456 123455.7890123456 +123456.7890123457 123457.7890123457 123455.7890123457 +1234567.890123456 1234568.890123456 1234566.890123456 +1234567.8901234568 1234568.8901234568 1234566.8901234568 +12345678.90123456 12345679.90123456 12345677.90123456 +12345678.9012345679 12345679.9012345679 12345677.9012345679 +123456789.0123456 123456790.0123456 123456788.0123456 +123456789.0123456789 123456790.0123456789 123456788.0123456789 +1234567890.123456 1234567891.123456 1234567889.123456 +1234567890.1234567890 1234567891.1234567890 1234567889.1234567890 +PREHOOK: query: SELECT dec, dec * 2, dec / 3 FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec, dec * 2, dec / 3 FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +0.0000000000 0.0000000000 0 +0.0000000000 0.0000000000 0 +0.0000000000 0.0000000000 0 +0.0000000000 0.0000000000 0 +0 0 0 +0.1234567890 0.2469135780 0.041152263 +0.1234567890 0.2469135780 0.041152263 +1.2345678901 2.4691357802 0.411522630033 +1.2345678901 2.4691357802 0.411522630033 +1.2345678901 2.4691357802 0.411522630033 +12.3456789012 24.6913578024 4.1152263004 +12.3456789012 24.6913578024 4.1152263004 +12.3456789012 24.6913578024 4.1152263004 +123.4567890123 246.9135780246 41.1522630041 +123.4567890123 246.9135780246 41.1522630041 +123.4567890123 246.9135780246 41.1522630041 +1234.5678901235 2469.1357802470 411.522630041167 +1234.5678901235 2469.1357802470 411.522630041167 +1234.5678901235 2469.1357802470 411.522630041167 +12345.6789012346 24691.3578024692 4115.226300411533 +12345.6789012346 24691.3578024692 4115.226300411533 +123456.7890123456 246913.5780246912 41152.2630041152 +123456.7890123457 246913.5780246914 41152.263004115233 +1234567.890123456 2469135.780246912 411522.630041152 +1234567.8901234568 2469135.7802469136 411522.630041152267 +12345678.90123456 24691357.80246912 4115226.30041152 +12345678.9012345679 24691357.8024691358 4115226.300411522633 +123456789.0123456 246913578.0246912 41152263.0041152 +123456789.0123456789 246913578.0246913578 41152263.0041152263 +1234567890.123456 2469135780.246912 411522630.041152 +1234567890.1234567890 2469135780.2469135780 411522630.041152263 +PREHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +0.0000000000 0 +0.0000000000 0 +0.0000000000 0 +0.0000000000 0 +0 0 +0.1234567890 0.013717421 +0.1234567890 0.013717421 +1.2345678901 0.137174210011 +1.2345678901 0.137174210011 +1.2345678901 0.137174210011 +12.3456789012 1.371742100133 +12.3456789012 1.371742100133 +12.3456789012 1.371742100133 +123.4567890123 13.717421001367 +123.4567890123 13.717421001367 +123.4567890123 13.717421001367 +1234.5678901235 137.174210013722 +1234.5678901235 137.174210013722 +1234.5678901235 137.174210013722 +12345.6789012346 1371.742100137178 +12345.6789012346 1371.742100137178 +123456.7890123456 13717.421001371733 +123456.7890123457 13717.421001371744 +1234567.890123456 137174.210013717333 +1234567.8901234568 137174.210013717422 +12345678.90123456 1371742.100137173333 +12345678.9012345679 1371742.100137174211 +123456789.0123456 13717421.001371733333 +123456789.0123456789 13717421.0013717421 +1234567890.123456 137174210.013717333333 +1234567890.1234567890 137174210.013717421 +PREHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +0.0000000000 0 +0.0000000000 0 +0.0000000000 0 +0.0000000000 0 +0 0 +0.1234567890 0.0045724736667 +0.1234567890 0.0045724736667 +1.2345678901 0.0457247366704 +1.2345678901 0.0457247366704 +1.2345678901 0.0457247366704 +12.3456789012 0.4572473667111 +12.3456789012 0.4572473667111 +12.3456789012 0.4572473667111 +123.4567890123 4.5724736671222 +123.4567890123 4.5724736671222 +123.4567890123 4.5724736671222 +1234.5678901235 45.7247366712407 +1234.5678901235 45.7247366712407 +1234.5678901235 45.7247366712407 +12345.6789012346 457.2473667123926 +12345.6789012346 457.2473667123926 +123456.7890123456 4572.4736671239111 +123456.7890123457 4572.4736671239148 +1234567.890123456 45724.7366712391111 +1234567.8901234568 45724.7366712391407 +12345678.90123456 457247.3667123911111 +12345678.9012345679 457247.3667123914037 +123456789.0123456 4572473.6671239111111 +123456789.0123456789 4572473.6671239140333 +1234567890.123456 45724736.6712391111111 +1234567890.1234567890 45724736.6712391403333 +PREHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +0.0000000000 0.00000000000000000000 +0.0000000000 0.00000000000000000000 +0.0000000000 0.00000000000000000000 +0.0000000000 0.00000000000000000000 +0 0 +0.1234567890 0.01524157875019052100 +0.1234567890 0.01524157875019052100 +1.2345678901 1.52415787526596567801 +1.2345678901 1.52415787526596567801 +1.2345678901 1.52415787526596567801 +12.3456789012 152.41578753153483936144 +12.3456789012 152.41578753153483936144 +12.3456789012 152.41578753153483936144 +123.4567890123 15241.57875322755800955129 +123.4567890123 15241.57875322755800955129 +123.4567890123 15241.57875322755800955129 +1234.5678901235 1524157.87532399036884525225 +1234.5678901235 1524157.87532399036884525225 +1234.5678901235 1524157.87532399036884525225 +12345.6789012346 152415787.53238916034140423716 +12345.6789012346 152415787.53238916034140423716 +123456.7890123456 15241578753.23881726870921383936 +123456.7890123457 15241578753.23884196006701630849 +1234567.890123456 1524157875323.881726870921383936 +1234567.8901234568 1524157875323.88370217954558146624 +12345678.90123456 152415787532388.1726870921383936 +12345678.9012345679 152415787532388.36774881877789971041 +123456789.0123456 15241578753238817.26870921383936 +123456789.0123456789 15241578753238836.75019051998750190521 +1234567890.123456 NULL +1234567890.1234567890 NULL +PREHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_precision + Statistics: Num rows: 75 Data size: 3472 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(20,10)) + outputColumnNames: dec + Statistics: Num rows: 75 Data size: 3472 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: avg(dec), sum(dec) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: struct), _col1 (type: decimal(30,10)) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: avg(VALUE._col0), sum(VALUE._col1) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(24,14)), _col1 (type: decimal(30,10)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +88499534.57586576220645 2743485571.8518386284 +PREHOOK: query: SELECT dec * cast('12345678901234567890.12345678' as decimal(38,18)) FROM DECIMAL_PRECISION LIMIT 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec * cast('12345678901234567890.12345678' as decimal(38,18)) FROM DECIMAL_PRECISION LIMIT 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL +PREHOOK: query: SELECT * from DECIMAL_PRECISION WHERE dec > cast('1234567890123456789012345678.12345678' as decimal(38,18)) LIMIT 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT * from DECIMAL_PRECISION WHERE dec > cast('1234567890123456789012345678.12345678' as decimal(38,18)) LIMIT 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +PREHOOK: query: SELECT dec * 12345678901234567890.12345678 FROM DECIMAL_PRECISION LIMIT 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec * 12345678901234567890.12345678 FROM DECIMAL_PRECISION LIMIT 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL +PREHOOK: query: SELECT MIN(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT MIN(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +12345678901234567890.12345678 +PREHOOK: query: SELECT COUNT(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +75 +PREHOOK: query: DROP TABLE DECIMAL_PRECISION_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_precision_txt +PREHOOK: Output: default@decimal_precision_txt +POSTHOOK: query: DROP TABLE DECIMAL_PRECISION_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_precision_txt +POSTHOOK: Output: default@decimal_precision_txt +PREHOOK: query: DROP TABLE DECIMAL_PRECISION +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_precision +PREHOOK: Output: default@decimal_precision +POSTHOOK: query: DROP TABLE DECIMAL_PRECISION +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_precision +POSTHOOK: Output: default@decimal_precision diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_trailing.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_trailing.q.out new file mode 100644 index 000000000000..cb0b5a27396a --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_trailing.q.out @@ -0,0 +1,121 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_TRAILING_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_TRAILING_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_TRAILING +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_TRAILING +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_TRAILING_txt ( + id int, + a decimal(10,4), + b decimal(15,8) + ) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ',' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_TRAILING_txt +POSTHOOK: query: CREATE TABLE DECIMAL_TRAILING_txt ( + id int, + a decimal(10,4), + b decimal(15,8) + ) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ',' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_TRAILING_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv10.txt' INTO TABLE DECIMAL_TRAILING_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_trailing_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv10.txt' INTO TABLE DECIMAL_TRAILING_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_trailing_txt +PREHOOK: query: CREATE TABLE DECIMAL_TRAILING ( + id int, + a decimal(10,4), + b decimal(15,8) + ) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_TRAILING +POSTHOOK: query: CREATE TABLE DECIMAL_TRAILING ( + id int, + a decimal(10,4), + b decimal(15,8) + ) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_TRAILING +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_TRAILING SELECT * FROM DECIMAL_TRAILING_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_trailing_txt +PREHOOK: Output: default@decimal_trailing +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_TRAILING SELECT * FROM DECIMAL_TRAILING_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_trailing_txt +POSTHOOK: Output: default@decimal_trailing +POSTHOOK: Lineage: decimal_trailing.a SIMPLE [(decimal_trailing_txt)decimal_trailing_txt.FieldSchema(name:a, type:decimal(10,4), comment:null), ] +POSTHOOK: Lineage: decimal_trailing.b SIMPLE [(decimal_trailing_txt)decimal_trailing_txt.FieldSchema(name:b, type:decimal(15,8), comment:null), ] +POSTHOOK: Lineage: decimal_trailing.id SIMPLE [(decimal_trailing_txt)decimal_trailing_txt.FieldSchema(name:id, type:int, comment:null), ] +PREHOOK: query: SELECT * FROM DECIMAL_TRAILING ORDER BY id +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_trailing +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_TRAILING ORDER BY id +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_trailing +#### A masked pattern was here #### +0 0 0 +1 0 0 +2 NULL NULL +3 1.0000 1.00000000 +4 10.0000 10.00000000 +5 100.0000 100.00000000 +6 1000.0000 1000.00000000 +7 10000.0000 10000.00000000 +8 100000.0000 100000.00000000 +9 NULL 1000000.00000000 +10 NULL NULL +11 NULL NULL +12 NULL NULL +13 NULL NULL +14 NULL NULL +15 NULL NULL +16 NULL NULL +17 NULL NULL +18 1.0000 1.00000000 +19 10.000 10.0000000 +20 100.00 100.000000 +21 1000.0 1000.00000 +22 100000 10000.0000 +23 0.0000 0.00000000 +24 0.000 0.0000000 +25 0.00 0.000000 +26 0.0 0.00000 +27 0 0.00000 +28 12313.2000 134134.31252500 +29 99999.9990 134134.31242553 +PREHOOK: query: DROP TABLE DECIMAL_TRAILING_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_trailing_txt +PREHOOK: Output: default@decimal_trailing_txt +POSTHOOK: query: DROP TABLE DECIMAL_TRAILING_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_trailing_txt +POSTHOOK: Output: default@decimal_trailing_txt +PREHOOK: query: DROP TABLE DECIMAL_TRAILING +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_trailing +PREHOOK: Output: default@decimal_trailing +POSTHOOK: query: DROP TABLE DECIMAL_TRAILING +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_trailing +POSTHOOK: Output: default@decimal_trailing diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out new file mode 100644 index 000000000000..8e847f6a82b2 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out @@ -0,0 +1,2769 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_UDF_txt (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_UDF_txt +POSTHOOK: query: CREATE TABLE DECIMAL_UDF_txt (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_UDF_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_udf_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_udf_txt +PREHOOK: query: CREATE TABLE DECIMAL_UDF (key decimal(20,10), value int) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_UDF +POSTHOOK: query: CREATE TABLE DECIMAL_UDF (key decimal(20,10), value int) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_UDF +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_UDF SELECT * FROM DECIMAL_UDF_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf_txt +PREHOOK: Output: default@decimal_udf +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_UDF SELECT * FROM DECIMAL_UDF_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf_txt +POSTHOOK: Output: default@decimal_udf +POSTHOOK: Lineage: decimal_udf.key SIMPLE [(decimal_udf_txt)decimal_udf_txt.FieldSchema(name:key, type:decimal(20,10), comment:null), ] +POSTHOOK: Lineage: decimal_udf.value SIMPLE [(decimal_udf_txt)decimal_udf_txt.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: -- addition +EXPLAIN SELECT key + key FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- addition +EXPLAIN SELECT key + key FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key + key) (type: decimal(21,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key + key FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key + key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-8800 +NULL +0.0000000000 +0 +200 +20 +2 +0.2 +0.02 +400 +40 +4 +0 +0.4 +0.04 +0.6 +0.66 +0.666 +-0.6 +-0.66 +-0.666 +2.0 +4 +6.28 +-2.24 +-2.24 +-2.244 +2.24 +2.244 +248.00 +250.4 +-2510.98 +6.28 +6.28 +6.280 +2.0000000000 +-2469135780.2469135780 +2469135780.2469135600 +PREHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key + value) (type: decimal(21,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key + value FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key + value FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +0 +NULL +0.0000000000 +0 +200 +20 +2 +0.1 +0.01 +400 +40 +4 +0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +2.0 +4 +6.14 +-2.12 +-2.12 +-12.122 +2.12 +2.122 +248.00 +250.2 +-2510.49 +6.14 +6.14 +7.140 +2.0000000000 +-2469135780.1234567890 +2469135780.1234567800 +PREHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key + (value / 2)) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key + (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key + (value/2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-2200.0 +NULL +0.0 +0.0 +150.0 +15.0 +1.5 +0.1 +0.01 +300.0 +30.0 +3.0 +0.0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +1.5 +3.0 +4.640000000000001 +-1.62 +-1.62 +-6.622 +1.62 +1.622 +186.0 +187.7 +-1882.99 +4.640000000000001 +4.640000000000001 +5.140000000000001 +1.5 +-1.8518518351234567E9 +1.8518518351234567E9 +PREHOOK: query: EXPLAIN SELECT key + '1.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key + '1.0' FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key + '1.0') (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key + '1.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key + '1.0' FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4399.0 +NULL +1.0 +1.0 +101.0 +11.0 +2.0 +1.1 +1.01 +201.0 +21.0 +3.0 +1.0 +1.2 +1.02 +1.3 +1.33 +1.333 +0.7 +0.6699999999999999 +0.667 +2.0 +3.0 +4.140000000000001 +-0.1200000000000001 +-0.1200000000000001 +-0.12200000000000011 +2.12 +2.122 +125.0 +126.2 +-1254.49 +4.140000000000001 +4.140000000000001 +4.140000000000001 +2.0 +-1.2345678891234567E9 +1.2345678911234567E9 +PREHOOK: query: -- substraction +EXPLAIN SELECT key - key FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- substraction +EXPLAIN SELECT key - key FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key - key) (type: decimal(21,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key - key FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key - key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +0 +NULL +0.0000000000 +0 +0 +0 +0 +0.0 +0.00 +0 +0 +0 +0 +0.0 +0.00 +0.0 +0.00 +0.000 +0.0 +0.00 +0.000 +0.0 +0 +0.00 +0.00 +0.00 +0.000 +0.00 +0.000 +0.00 +0.0 +0.00 +0.00 +0.00 +0.000 +0.0000000000 +0.0000000000 +0.0000000000 +PREHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key - value) (type: decimal(21,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key - value FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key - value FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-8800 +NULL +0.0000000000 +0 +0 +0 +0 +0.1 +0.01 +0 +0 +0 +0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +0.0 +0 +0.14 +-0.12 +-0.12 +9.878 +0.12 +0.122 +0.00 +0.2 +-0.49 +0.14 +0.14 +-0.860 +0.0000000000 +-0.1234567890 +0.1234567800 +PREHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key - (value / 2)) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key - (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key - (value/2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-6600.0 +NULL +0.0 +0.0 +50.0 +5.0 +0.5 +0.1 +0.01 +100.0 +10.0 +1.0 +0.0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +0.5 +1.0 +1.6400000000000001 +-0.6200000000000001 +-0.6200000000000001 +4.378 +0.6200000000000001 +0.6220000000000001 +62.0 +62.7 +-627.99 +1.6400000000000001 +1.6400000000000001 +1.1400000000000001 +0.5 +-6.172839451234567E8 +6.172839451234567E8 +PREHOOK: query: EXPLAIN SELECT key - '1.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key - '1.0' FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key - '1.0') (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key - '1.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key - '1.0' FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4401.0 +NULL +-1.0 +-1.0 +99.0 +9.0 +0.0 +-0.9 +-0.99 +199.0 +19.0 +1.0 +-1.0 +-0.8 +-0.98 +-0.7 +-0.6699999999999999 +-0.667 +-1.3 +-1.33 +-1.333 +0.0 +1.0 +2.14 +-2.12 +-2.12 +-2.122 +0.1200000000000001 +0.12200000000000011 +123.0 +124.2 +-1256.49 +2.14 +2.14 +2.14 +0.0 +-1.2345678911234567E9 +1.2345678891234567E9 +PREHOOK: query: -- multiplication +EXPLAIN SELECT key * key FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- multiplication +EXPLAIN SELECT key * key FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key * key) (type: decimal(38,20)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key * key FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key * key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +19360000 +NULL +0.00000000000000000000 +0 +10000 +100 +1 +0.01 +0.0001 +40000 +400 +4 +0 +0.04 +0.0004 +0.09 +0.1089 +0.110889 +0.09 +0.1089 +0.110889 +1.00 +4 +9.8596 +1.2544 +1.2544 +1.258884 +1.2544 +1.258884 +15376.0000 +15675.04 +1576255.1401 +9.8596 +9.8596 +9.859600 +1.00000000000000000000 +NULL +NULL +PREHOOK: query: EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key * value) > 0) (type: boolean) + Statistics: Num rows: 12 Data size: 1356 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)), value (type: int) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 12 Data size: 1356 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 12 Data size: 1356 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key, value FROM DECIMAL_UDF where key * value > 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key, value FROM DECIMAL_UDF where key * value > 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +100 100 +10 10 +1 1 +200 200 +20 20 +2 2 +1.0 1 +2 2 +3.14 3 +-1.12 -1 +-1.12 -1 +-1.122 -11 +1.12 1 +1.122 1 +124.00 124 +125.2 125 +-1255.49 -1255 +3.14 3 +3.14 3 +3.140 4 +1.0000000000 1 +-1234567890.1234567890 -1234567890 +1234567890.1234567800 1234567890 +PREHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key * value) (type: decimal(31,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key * value FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key * value FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-19360000 +NULL +0.0000000000 +0 +10000 +100 +1 +0.0 +0.00 +40000 +400 +4 +0 +0.0 +0.00 +0.0 +0.00 +0.000 +0.0 +0.00 +0.000 +1.0 +4 +9.42 +1.12 +1.12 +12.342 +1.12 +1.122 +15376.00 +15650.0 +1575639.95 +9.42 +9.42 +12.560 +1.0000000000 +1524157875171467887.5019052100 +1524157875171467876.3907942000 +PREHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key * (value / 2)) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key * (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key * (value/2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-9680000.0 +NULL +0.0 +0.0 +5000.0 +50.0 +0.5 +0.0 +0.0 +20000.0 +200.0 +2.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +-0.0 +-0.0 +-0.0 +0.5 +2.0 +4.71 +0.56 +0.56 +6.171 +0.56 +0.561 +7688.0 +7825.0 +787819.975 +4.71 +4.71 +6.28 +0.5 +7.6207893758573389E17 +7.6207893758573389E17 +PREHOOK: query: EXPLAIN SELECT key * '2.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key * '2.0' FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key * '2.0') (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key * '2.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key * '2.0' FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-8800.0 +NULL +0.0 +0.0 +200.0 +20.0 +2.0 +0.2 +0.02 +400.0 +40.0 +4.0 +0.0 +0.4 +0.04 +0.6 +0.66 +0.666 +-0.6 +-0.66 +-0.666 +2.0 +4.0 +6.28 +-2.24 +-2.24 +-2.244 +2.24 +2.244 +248.0 +250.4 +-2510.98 +6.28 +6.28 +6.28 +2.0 +-2.4691357802469134E9 +2.4691357802469134E9 +PREHOOK: query: -- division +EXPLAIN SELECT key / 0 FROM DECIMAL_UDF limit 1 +PREHOOK: type: QUERY +POSTHOOK: query: -- division +EXPLAIN SELECT key / 0 FROM DECIMAL_UDF limit 1 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key / 0) (type: decimal(22,12)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 113 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 113 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key / 0 FROM DECIMAL_UDF limit 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key / 0 FROM DECIMAL_UDF limit 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +NULL +PREHOOK: query: EXPLAIN SELECT key / NULL FROM DECIMAL_UDF limit 1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key / NULL FROM DECIMAL_UDF limit 1 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key / null) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 113 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 113 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key / NULL FROM DECIMAL_UDF limit 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key / NULL FROM DECIMAL_UDF limit 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +NULL +PREHOOK: query: EXPLAIN SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key <> 0) (type: boolean) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key / key) (type: decimal(38,24)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +PREHOOK: query: EXPLAIN SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value <> 0) (type: boolean) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key / value) (type: decimal(31,21)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1.046666666666666666667 +1.12 +1.12 +0.102 +1.12 +1.122 +1 +1.0016 +1.000390438247011952191 +1.046666666666666666667 +1.046666666666666666667 +0.785 +1 +1.0000000001 +1.000000000099999992710 +PREHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value <> 0) (type: boolean) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key / (value / 2)) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-2.0 +2.0 +2.0 +2.0 +2.0 +2.0 +2.0 +2.0 +2.0 +2.0933333333333333 +2.24 +2.24 +0.20400000000000001 +2.24 +2.244 +2.0 +2.0032 +2.000780876494024 +2.0933333333333333 +2.0933333333333333 +1.57 +2.0 +2.0000000002 +2.0000000002 +PREHOOK: query: EXPLAIN SELECT 1 + (key / '2.0') FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT 1 + (key / '2.0') FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (1 + (key / '2.0')) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT 1 + (key / '2.0') FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT 1 + (key / '2.0') FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-2199.0 +NULL +1.0 +1.0 +51.0 +6.0 +1.5 +1.05 +1.005 +101.0 +11.0 +2.0 +1.0 +1.1 +1.01 +1.15 +1.165 +1.1665 +0.85 +0.835 +0.8335 +1.5 +2.0 +2.5700000000000003 +0.43999999999999995 +0.43999999999999995 +0.43899999999999995 +1.56 +1.561 +63.0 +63.6 +-626.745 +2.5700000000000003 +2.5700000000000003 +2.5700000000000003 +1.5 +-6.172839440617284E8 +6.172839460617284E8 +PREHOOK: query: -- abs +EXPLAIN SELECT abs(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- abs +EXPLAIN SELECT abs(key) FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: abs(key) (type: decimal(38,18)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT abs(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT abs(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +4400 +NULL +0.0000000000 +0 +100 +10 +1 +0.1 +0.01 +200 +20 +2 +0 +0.2 +0.02 +0.3 +0.33 +0.333 +0.3 +0.33 +0.333 +1.0 +2 +3.14 +1.12 +1.12 +1.122 +1.12 +1.122 +124.00 +125.2 +1255.49 +3.14 +3.14 +3.140 +1.0000000000 +1234567890.1234567890 +1234567890.1234567800 +PREHOOK: query: -- avg +EXPLAIN SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value +PREHOOK: type: QUERY +POSTHOOK: query: -- avg +EXPLAIN SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int), key (type: decimal(20,10)) + outputColumnNames: value, key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(key), count(key), avg(key) + keys: value (type: int) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(30,10)), _col2 (type: bigint), _col3 (type: struct) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0), count(VALUE._col1), avg(VALUE._col2) + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), (_col1 / _col2) (type: decimal(38,23)), _col3 (type: decimal(24,14)), _col1 (type: decimal(30,10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(38,23)), _col2 (type: decimal(24,14)), _col3 (type: decimal(30,10)) + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: decimal(38,23)), VALUE._col1 (type: decimal(24,14)), VALUE._col2 (type: decimal(30,10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-1234567890 -1234567890.123456789 -1234567890.123456789 -1234567890.1234567890 +-1255 -1255.49 -1255.49 -1255.49 +-11 -1.122 -1.122 -1.122 +-1 -1.12 -1.12 -2.24 +0 0.02538461538461538461538 0.02538461538462 0.3300000000 +1 1.0484 1.0484 5.2420000000 +2 2 2 4 +3 3.14 3.14 9.42 +4 3.14 3.14 3.140 +10 10 10 10 +20 20 20 20 +100 100 100 100 +124 124 124 124.00 +125 125.2 125.2 125.2 +200 200 200 200 +4400 -4400 -4400 -4400 +1234567890 1234567890.12345678 1234567890.12345678 1234567890.1234567800 +PREHOOK: query: -- negative +EXPLAIN SELECT -key FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- negative +EXPLAIN SELECT -key FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (- key) (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT -key FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT -key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +4400 +NULL +0.0000000000 +0 +-100 +-10 +-1 +-0.1 +-0.01 +-200 +-20 +-2 +0 +-0.2 +-0.02 +-0.3 +-0.33 +-0.333 +0.3 +0.33 +0.333 +-1.0 +-2 +-3.14 +1.12 +1.12 +1.122 +-1.12 +-1.122 +-124.00 +-125.2 +1255.49 +-3.14 +-3.14 +-3.140 +-1.0000000000 +1234567890.1234567890 +-1234567890.1234567800 +PREHOOK: query: -- positive +EXPLAIN SELECT +key FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- positive +EXPLAIN SELECT +key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: decimal_udf + Select Operator + expressions: key (type: decimal(20,10)) + outputColumnNames: _col0 + ListSink + +PREHOOK: query: SELECT +key FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT +key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4400 +NULL +0.0000000000 +0 +100 +10 +1 +0.1 +0.01 +200 +20 +2 +0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +1.0 +2 +3.14 +-1.12 +-1.12 +-1.122 +1.12 +1.122 +124.00 +125.2 +-1255.49 +3.14 +3.14 +3.140 +1.0000000000 +-1234567890.1234567890 +1234567890.1234567800 +PREHOOK: query: -- ceiling +EXPlAIN SELECT CEIL(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- ceiling +EXPlAIN SELECT CEIL(key) FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ceil(key) (type: decimal(11,0)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT CEIL(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT CEIL(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4400 +NULL +0 +0 +100 +10 +1 +1 +1 +200 +20 +2 +0 +1 +1 +1 +1 +1 +0 +0 +0 +1 +2 +4 +-1 +-1 +-1 +2 +2 +124 +126 +-1255 +4 +4 +4 +1 +-1234567890 +1234567891 +PREHOOK: query: -- floor +EXPLAIN SELECT FLOOR(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- floor +EXPLAIN SELECT FLOOR(key) FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: floor(key) (type: decimal(11,0)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT FLOOR(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT FLOOR(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4400 +NULL +0 +0 +100 +10 +1 +0 +0 +200 +20 +2 +0 +0 +0 +0 +0 +0 +-1 +-1 +-1 +1 +2 +3 +-2 +-2 +-2 +1 +1 +124 +125 +-1256 +3 +3 +3 +1 +-1234567891 +1234567890 +PREHOOK: query: -- round +EXPLAIN SELECT ROUND(key, 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- round +EXPLAIN SELECT ROUND(key, 2) FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: round(key, 2) (type: decimal(13,2)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT ROUND(key, 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT ROUND(key, 2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4400.00 +NULL +0.00 +0.00 +100.00 +10.00 +1.00 +0.10 +0.01 +200.00 +20.00 +2.00 +0.00 +0.20 +0.02 +0.30 +0.33 +0.33 +-0.30 +-0.33 +-0.33 +1.00 +2.00 +3.14 +-1.12 +-1.12 +-1.12 +1.12 +1.12 +124.00 +125.20 +-1255.49 +3.14 +3.14 +3.14 +1.00 +-1234567890.12 +1234567890.12 +PREHOOK: query: -- power +EXPLAIN SELECT POWER(key, 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- power +EXPLAIN SELECT POWER(key, 2) FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: power(key, 2) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT POWER(key, 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT POWER(key, 2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +1.936E7 +NULL +0.0 +0.0 +10000.0 +100.0 +1.0 +0.010000000000000002 +1.0E-4 +40000.0 +400.0 +4.0 +0.0 +0.04000000000000001 +4.0E-4 +0.09 +0.10890000000000001 +0.11088900000000002 +0.09 +0.10890000000000001 +0.11088900000000002 +1.0 +4.0 +9.8596 +1.2544000000000002 +1.2544000000000002 +1.2588840000000003 +1.2544000000000002 +1.2588840000000003 +15376.0 +15675.04 +1576255.1401 +9.8596 +9.8596 +9.8596 +1.0 +1.52415787532388352E18 +1.52415787532388352E18 +PREHOOK: query: -- modulo +EXPLAIN SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- modulo +EXPLAIN SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ((key + 1) % (key / 2)) (type: decimal(22,12)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-2199 +NULL +NULL +NULL +1 +1 +0.0 +0.00 +0.000 +1 +1 +0 +NULL +0.0 +0.00 +0.10 +0.010 +0.0010 +0.10 +0.010 +0.0010 +0.0 +0 +1.00 +-0.12 +-0.12 +-0.122 +0.44 +0.439 +1.00 +1.0 +-626.745 +1.00 +1.00 +1.000 +0.0000000000 +-617283944.0617283945 +1.0000000000 +PREHOOK: query: -- stddev, var +EXPLAIN SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value +PREHOOK: type: QUERY +POSTHOOK: query: -- stddev, var +EXPLAIN SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int), key (type: decimal(20,10)) + outputColumnNames: value, key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: stddev(key), variance(key) + keys: value (type: int) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: struct), _col2 (type: struct) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: stddev(VALUE._col0), variance(VALUE._col1) + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: double), _col2 (type: double) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-1234567890 0.0 0.0 +-1255 0.0 0.0 +-11 0.0 0.0 +-1 0.0 0.0 +0 0.22561046704494161 0.050900082840236685 +1 0.05928102563215321 0.0035142400000000066 +2 0.0 0.0 +3 0.0 0.0 +4 0.0 0.0 +10 0.0 0.0 +20 0.0 0.0 +100 0.0 0.0 +124 0.0 0.0 +125 0.0 0.0 +200 0.0 0.0 +4400 0.0 0.0 +1234567890 0.0 0.0 +PREHOOK: query: -- stddev_samp, var_samp +EXPLAIN SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value +PREHOOK: type: QUERY +POSTHOOK: query: -- stddev_samp, var_samp +EXPLAIN SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int), key (type: decimal(20,10)) + outputColumnNames: value, key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: stddev_samp(key), var_samp(key) + keys: value (type: int) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: struct), _col2 (type: struct) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: stddev_samp(VALUE._col0), var_samp(VALUE._col1) + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: double), _col2 (type: double) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-1234567890 0.0 0.0 +-1255 0.0 0.0 +-11 0.0 0.0 +-1 0.0 0.0 +0 0.2348228191855647 0.055141756410256405 +1 0.06627820154470102 0.004392800000000008 +2 0.0 0.0 +3 0.0 0.0 +4 0.0 0.0 +10 0.0 0.0 +20 0.0 0.0 +100 0.0 0.0 +124 0.0 0.0 +125 0.0 0.0 +200 0.0 0.0 +4400 0.0 0.0 +1234567890 0.0 0.0 +PREHOOK: query: -- histogram +EXPLAIN SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- histogram +EXPLAIN SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)) + outputColumnNames: key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: histogram_numeric(key, 3) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + value expressions: _col0 (type: array) + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: histogram_numeric(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Select Operator + expressions: _col0 (type: array>) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +[{"x":-1.2345678901234567E9,"y":1.0},{"x":-144.50057142857142,"y":35.0},{"x":1.2345678901234567E9,"y":1.0}] +PREHOOK: query: -- min +EXPLAIN SELECT MIN(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- min +EXPLAIN SELECT MIN(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)) + outputColumnNames: key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: min(key) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(20,10)) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: min(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT MIN(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT MIN(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-1234567890.1234567890 +PREHOOK: query: -- max +EXPLAIN SELECT MAX(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- max +EXPLAIN SELECT MAX(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)) + outputColumnNames: key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(key) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(20,10)) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT MAX(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT MAX(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +1234567890.1234567800 +PREHOOK: query: -- count +EXPLAIN SELECT COUNT(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- count +EXPLAIN SELECT COUNT(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)) + outputColumnNames: key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(key) + 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: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT COUNT(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +37 +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_udf_txt +PREHOOK: Output: default@decimal_udf_txt +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_udf_txt +POSTHOOK: Output: default@decimal_udf_txt +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_udf +PREHOOK: Output: default@decimal_udf +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_udf +POSTHOOK: Output: default@decimal_udf diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_udf2.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_udf2.q.out new file mode 100644 index 000000000000..53ec5dc9e99e --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_udf2.q.out @@ -0,0 +1,187 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_UDF2_txt (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_UDF2_txt +POSTHOOK: query: CREATE TABLE DECIMAL_UDF2_txt (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_UDF2_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_udf2_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_udf2_txt +PREHOOK: query: CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_UDF2 +POSTHOOK: query: CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_UDF2 +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_UDF2 SELECT * FROM DECIMAL_UDF2_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf2_txt +PREHOOK: Output: default@decimal_udf2 +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_UDF2 SELECT * FROM DECIMAL_UDF2_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf2_txt +POSTHOOK: Output: default@decimal_udf2 +POSTHOOK: Lineage: decimal_udf2.key SIMPLE [(decimal_udf2_txt)decimal_udf2_txt.FieldSchema(name:key, type:decimal(20,10), comment:null), ] +POSTHOOK: Lineage: decimal_udf2.value SIMPLE [(decimal_udf2_txt)decimal_udf2_txt.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: EXPLAIN +SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf2 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key = 10) (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: acos(key) (type: double), asin(key) (type: double), atan(key) (type: double), cos(key) (type: double), sin(key) (type: double), tan(key) (type: double), radians(key) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +NaN NaN 1.4711276743037347 -0.8390715290764524 -0.5440211108893698 0.6483608274590866 0.17453292519943295 +PREHOOK: query: EXPLAIN +SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_udf2 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key = 10) (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: exp(key) (type: double), ln(key) (type: double), log(key) (type: double), log(key, key) (type: double), log(key, value) (type: double), log(value, key) (type: double), log10(key) (type: double), sqrt(key) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +22026.465794806718 2.302585092994046 2.302585092994046 1.0 1.0 1.0 1.0 3.1622776601683795 +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_udf2_txt +PREHOOK: Output: default@decimal_udf2_txt +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_udf2_txt +POSTHOOK: Output: default@decimal_udf2_txt +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_udf2 +PREHOOK: Output: default@decimal_udf2 +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_udf2 +POSTHOOK: Output: default@decimal_udf2 diff --git a/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out b/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out new file mode 100644 index 000000000000..cd778e26e47b --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out @@ -0,0 +1,565 @@ +WARNING: Comparing a bigint and a double may result in a loss of precision. +PREHOOK: query: explain SELECT cbigint, cdouble FROM alltypesorc WHERE cbigint < cdouble and cint > 0 limit 7 +PREHOOK: type: QUERY +POSTHOOK: query: explain SELECT cbigint, cdouble FROM alltypesorc WHERE cbigint < cdouble and cint > 0 limit 7 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 7 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: ((cbigint < cdouble) and (cint > 0)) (type: boolean) + Select Operator + expressions: cbigint (type: bigint), cdouble (type: double) + outputColumnNames: _col0, _col1 + Limit + Number of rows: 7 + ListSink + +WARNING: Comparing a bigint and a double may result in a loss of precision. +PREHOOK: query: SELECT cbigint, cdouble FROM alltypesorc WHERE cbigint < cdouble and cint > 0 limit 7 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cbigint, cdouble FROM alltypesorc WHERE cbigint < cdouble and cint > 0 limit 7 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-1887561756 1839.0 +-1887561756 -10011.0 +-1887561756 -13877.0 +-1887561756 10361.0 +-1887561756 -8881.0 +-1887561756 -2281.0 +-1887561756 9531.0 +PREHOOK: query: -- HIVE-3562 Some limit can be pushed down to map stage - c/p parts from limit_pushdown + +explain +select ctinyint,cdouble,csmallint from alltypesorc where ctinyint is not null order by ctinyint,cdouble limit 20 +PREHOOK: type: QUERY +POSTHOOK: query: -- HIVE-3562 Some limit can be pushed down to map stage - c/p parts from limit_pushdown + +explain +select ctinyint,cdouble,csmallint from alltypesorc where ctinyint is not null order by ctinyint,cdouble limit 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ctinyint is not null (type: boolean) + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ctinyint (type: tinyint), cdouble (type: double), csmallint (type: smallint) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint), _col1 (type: double) + sort order: ++ + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + TopN Hash Memory Usage: 0.3 + value expressions: _col2 (type: smallint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: tinyint), KEY.reducesinkkey1 (type: double), VALUE._col0 (type: smallint) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: select ctinyint,cdouble,csmallint from alltypesorc where ctinyint is not null order by ctinyint,cdouble limit 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select ctinyint,cdouble,csmallint from alltypesorc where ctinyint is not null order by ctinyint,cdouble limit 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-64 -15920.0 -15920 +-64 -10462.0 -10462 +-64 -9842.0 -9842 +-64 -8080.0 -8080 +-64 -7196.0 -7196 +-64 -7196.0 -7196 +-64 -7196.0 -7196 +-64 -7196.0 -7196 +-64 -7196.0 -7196 +-64 -7196.0 -7196 +-64 -7196.0 -7196 +-64 -6907.0 -6907 +-64 -4803.0 -4803 +-64 -4040.0 -4040 +-64 -4018.0 -4018 +-64 -3586.0 -3586 +-64 -3097.0 -3097 +-64 -2919.0 -2919 +-64 -1600.0 -1600 +-64 -200.0 -200 +PREHOOK: query: -- deduped RS +explain +select ctinyint,avg(cdouble + 1) from alltypesorc group by ctinyint order by ctinyint limit 20 +PREHOOK: type: QUERY +POSTHOOK: query: -- deduped RS +explain +select ctinyint,avg(cdouble + 1) from alltypesorc group by ctinyint order by ctinyint limit 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ctinyint (type: tinyint), cdouble (type: double) + outputColumnNames: ctinyint, cdouble + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: avg((cdouble + 1)) + keys: ctinyint (type: tinyint) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint) + sort order: + + Map-reduce partition columns: _col0 (type: tinyint) + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + TopN Hash Memory Usage: 0.3 + value expressions: _col1 (type: struct) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: avg(VALUE._col0) + keys: KEY._col0 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: tinyint), _col1 (type: double) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: select ctinyint,avg(cdouble + 1) from alltypesorc group by ctinyint order by ctinyint limit 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select ctinyint,avg(cdouble + 1) from alltypesorc group by ctinyint order by ctinyint limit 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL 9370.0945309795 +-64 373.52941176470586 +-63 2178.7272727272725 +-62 245.69387755102042 +-61 914.3404255319149 +-60 1071.82 +-59 318.27272727272725 +-58 3483.2444444444445 +-57 1867.0535714285713 +-56 2595.818181818182 +-55 2385.595744680851 +-54 2712.7272727272725 +-53 -532.7567567567568 +-52 2810.705882352941 +-51 -96.46341463414635 +-50 -960.0192307692307 +-49 768.7659574468086 +-48 1672.909090909091 +-47 -574.6428571428571 +-46 3033.55 +PREHOOK: query: -- distincts +explain +select distinct(ctinyint) from alltypesorc limit 20 +PREHOOK: type: QUERY +POSTHOOK: query: -- distincts +explain +select distinct(ctinyint) from alltypesorc limit 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ctinyint (type: tinyint) + outputColumnNames: ctinyint + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: ctinyint (type: tinyint) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint) + sort order: + + Map-reduce partition columns: _col0 (type: tinyint) + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + TopN Hash Memory Usage: 0.3 + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: select distinct(ctinyint) from alltypesorc limit 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select distinct(ctinyint) from alltypesorc limit 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL +-64 +-63 +-62 +-61 +-60 +-59 +-58 +-57 +-56 +-55 +-54 +-53 +-52 +-51 +-50 +-49 +-48 +-47 +-46 +PREHOOK: query: explain +select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint limit 20 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint limit 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ctinyint (type: tinyint), cdouble (type: double) + outputColumnNames: ctinyint, cdouble + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(DISTINCT cdouble) + keys: ctinyint (type: tinyint), cdouble (type: double) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint), _col1 (type: double) + sort order: ++ + Map-reduce partition columns: _col0 (type: tinyint) + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + TopN Hash Memory Usage: 0.3 + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: count(DISTINCT KEY._col1:0._col0) + keys: KEY._col0 (type: tinyint) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: tinyint), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint limit 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint limit 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL 2932 +-64 24 +-63 19 +-62 27 +-61 25 +-60 27 +-59 31 +-58 23 +-57 35 +-56 36 +-55 29 +-54 26 +-53 22 +-52 33 +-51 21 +-50 30 +-49 26 +-48 29 +-47 22 +-46 24 +PREHOOK: query: -- limit zero +explain +select ctinyint,cdouble from alltypesorc order by ctinyint limit 0 +PREHOOK: type: QUERY +POSTHOOK: query: -- limit zero +explain +select ctinyint,cdouble from alltypesorc order by ctinyint limit 0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 0 + Processor Tree: + ListSink + +PREHOOK: query: select ctinyint,cdouble from alltypesorc order by ctinyint limit 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select ctinyint,cdouble from alltypesorc order by ctinyint limit 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +PREHOOK: query: -- 2MR (applied to last RS) +explain +select cdouble, sum(ctinyint) as sum from alltypesorc where ctinyint is not null group by cdouble order by sum, cdouble limit 20 +PREHOOK: type: QUERY +POSTHOOK: query: -- 2MR (applied to last RS) +explain +select cdouble, sum(ctinyint) as sum from alltypesorc where ctinyint is not null group by cdouble order by sum, cdouble limit 20 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ctinyint is not null (type: boolean) + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cdouble (type: double), ctinyint (type: tinyint) + outputColumnNames: cdouble, ctinyint + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(ctinyint) + keys: cdouble (type: double) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: double) + sort order: + + Map-reduce partition columns: _col0 (type: double) + Statistics: Num rows: 6144 Data size: 188618 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + keys: KEY._col0 (type: double) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: double), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: bigint), _col0 (type: double) + sort order: ++ + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + TopN Hash Memory Usage: 0.3 + Execution mode: vectorized + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey1 (type: double), KEY.reducesinkkey0 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 20 + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 600 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 20 + Processor Tree: + ListSink + +PREHOOK: query: select cdouble, sum(ctinyint) as sum from alltypesorc where ctinyint is not null group by cdouble order by sum, cdouble limit 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select cdouble, sum(ctinyint) as sum from alltypesorc where ctinyint is not null group by cdouble order by sum, cdouble limit 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +NULL -32768 +-7196.0 -2009 +15601.0 -1733 +4811.0 -115 +-11322.0 -101 +-1121.0 -89 +7705.0 -88 +3520.0 -86 +-8118.0 -80 +5241.0 -80 +-11492.0 -78 +9452.0 -76 +557.0 -75 +10496.0 -67 +-15920.0 -64 +-10462.0 -64 +-9842.0 -64 +-8080.0 -64 +-6907.0 -64 +-4803.0 -64 diff --git a/ql/src/test/results/clientpositive/tez/vectorized_casts.q.out b/ql/src/test/results/clientpositive/tez/vectorized_casts.q.out new file mode 100644 index 000000000000..4be610053c5d --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorized_casts.q.out @@ -0,0 +1,337 @@ +PREHOOK: query: -- Test type casting in vectorized mode to verify end-to-end functionality. + +explain +select +-- to boolean + cast (ctinyint as boolean) + ,cast (csmallint as boolean) + ,cast (cint as boolean) + ,cast (cbigint as boolean) + ,cast (cfloat as boolean) + ,cast (cdouble as boolean) + ,cast (cboolean1 as boolean) + ,cast (cbigint * 0 as boolean) + ,cast (ctimestamp1 as boolean) + ,cast (cstring1 as boolean) +-- to int family + ,cast (ctinyint as int) + ,cast (csmallint as int) + ,cast (cint as int) + ,cast (cbigint as int) + ,cast (cfloat as int) + ,cast (cdouble as int) + ,cast (cboolean1 as int) + ,cast (ctimestamp1 as int) + ,cast (cstring1 as int) + ,cast (substr(cstring1, 1, 1) as int) + ,cast (cfloat as tinyint) + ,cast (cfloat as smallint) + ,cast (cfloat as bigint) +-- to float family + ,cast (ctinyint as double) + ,cast (csmallint as double) + ,cast (cint as double) + ,cast (cbigint as double) + ,cast (cfloat as double) + ,cast (cdouble as double) + ,cast (cboolean1 as double) + ,cast (ctimestamp1 as double) + ,cast (cstring1 as double) + ,cast (substr(cstring1, 1, 1) as double) + ,cast (cint as float) + ,cast (cdouble as float) +-- to timestamp + ,cast (ctinyint as timestamp) + ,cast (csmallint as timestamp) + ,cast (cint as timestamp) + ,cast (cbigint as timestamp) + ,cast (cfloat as timestamp) + ,cast (cdouble as timestamp) + ,cast (cboolean1 as timestamp) + ,cast (cbigint * 0 as timestamp) + ,cast (ctimestamp1 as timestamp) + ,cast (cstring1 as timestamp) + ,cast (substr(cstring1, 1, 1) as timestamp) +-- to string + ,cast (ctinyint as string) + ,cast (csmallint as string) + ,cast (cint as string) + ,cast (cbigint as string) + ,cast (cfloat as string) + ,cast (cdouble as string) + ,cast (cboolean1 as string) + ,cast (cbigint * 0 as string) + ,cast (ctimestamp1 as string) + ,cast (cstring1 as string) +-- nested and expression arguments + ,cast (cast (cfloat as int) as float) + ,cast (cint * 2 as double) + ,cast (sin(cfloat) as string) + ,cast (cint as float) + cast(cboolean1 as double) +from alltypesorc +-- limit output to a reasonably small number of rows +where cbigint % 250 = 0 +PREHOOK: type: QUERY +POSTHOOK: query: -- Test type casting in vectorized mode to verify end-to-end functionality. + +explain +select +-- to boolean + cast (ctinyint as boolean) + ,cast (csmallint as boolean) + ,cast (cint as boolean) + ,cast (cbigint as boolean) + ,cast (cfloat as boolean) + ,cast (cdouble as boolean) + ,cast (cboolean1 as boolean) + ,cast (cbigint * 0 as boolean) + ,cast (ctimestamp1 as boolean) + ,cast (cstring1 as boolean) +-- to int family + ,cast (ctinyint as int) + ,cast (csmallint as int) + ,cast (cint as int) + ,cast (cbigint as int) + ,cast (cfloat as int) + ,cast (cdouble as int) + ,cast (cboolean1 as int) + ,cast (ctimestamp1 as int) + ,cast (cstring1 as int) + ,cast (substr(cstring1, 1, 1) as int) + ,cast (cfloat as tinyint) + ,cast (cfloat as smallint) + ,cast (cfloat as bigint) +-- to float family + ,cast (ctinyint as double) + ,cast (csmallint as double) + ,cast (cint as double) + ,cast (cbigint as double) + ,cast (cfloat as double) + ,cast (cdouble as double) + ,cast (cboolean1 as double) + ,cast (ctimestamp1 as double) + ,cast (cstring1 as double) + ,cast (substr(cstring1, 1, 1) as double) + ,cast (cint as float) + ,cast (cdouble as float) +-- to timestamp + ,cast (ctinyint as timestamp) + ,cast (csmallint as timestamp) + ,cast (cint as timestamp) + ,cast (cbigint as timestamp) + ,cast (cfloat as timestamp) + ,cast (cdouble as timestamp) + ,cast (cboolean1 as timestamp) + ,cast (cbigint * 0 as timestamp) + ,cast (ctimestamp1 as timestamp) + ,cast (cstring1 as timestamp) + ,cast (substr(cstring1, 1, 1) as timestamp) +-- to string + ,cast (ctinyint as string) + ,cast (csmallint as string) + ,cast (cint as string) + ,cast (cbigint as string) + ,cast (cfloat as string) + ,cast (cdouble as string) + ,cast (cboolean1 as string) + ,cast (cbigint * 0 as string) + ,cast (ctimestamp1 as string) + ,cast (cstring1 as string) +-- nested and expression arguments + ,cast (cast (cfloat as int) as float) + ,cast (cint * 2 as double) + ,cast (sin(cfloat) as string) + ,cast (cint as float) + cast(cboolean1 as double) +from alltypesorc +-- limit output to a reasonably small number of rows +where cbigint % 250 = 0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: alltypesorc + Filter Operator + predicate: ((cbigint % 250) = 0) (type: boolean) + Select Operator + expressions: UDFToBoolean(ctinyint) (type: boolean), UDFToBoolean(csmallint) (type: boolean), UDFToBoolean(cint) (type: boolean), UDFToBoolean(cbigint) (type: boolean), UDFToBoolean(cfloat) (type: boolean), UDFToBoolean(cdouble) (type: boolean), cboolean1 (type: boolean), UDFToBoolean((cbigint * 0)) (type: boolean), UDFToBoolean(ctimestamp1) (type: boolean), UDFToBoolean(cstring1) (type: boolean), UDFToInteger(ctinyint) (type: int), UDFToInteger(csmallint) (type: int), cint (type: int), UDFToInteger(cbigint) (type: int), UDFToInteger(cfloat) (type: int), UDFToInteger(cdouble) (type: int), UDFToInteger(cboolean1) (type: int), UDFToInteger(ctimestamp1) (type: int), UDFToInteger(cstring1) (type: int), UDFToInteger(substr(cstring1, 1, 1)) (type: int), UDFToByte(cfloat) (type: tinyint), UDFToShort(cfloat) (type: smallint), UDFToLong(cfloat) (type: bigint), UDFToDouble(ctinyint) (type: double), UDFToDouble(csmallint) (type: double), UDFToDouble(cint) (type: double), UDFToDouble(cbigint) (type: double), UDFToDouble(cfloat) (type: double), cdouble (type: double), UDFToDouble(cboolean1) (type: double), UDFToDouble(ctimestamp1) (type: double), UDFToDouble(cstring1) (type: double), UDFToDouble(substr(cstring1, 1, 1)) (type: double), UDFToFloat(cint) (type: float), UDFToFloat(cdouble) (type: float), CAST( ctinyint AS TIMESTAMP) (type: timestamp), CAST( csmallint AS TIMESTAMP) (type: timestamp), CAST( cint AS TIMESTAMP) (type: timestamp), CAST( cbigint AS TIMESTAMP) (type: timestamp), CAST( cfloat AS TIMESTAMP) (type: timestamp), CAST( cdouble AS TIMESTAMP) (type: timestamp), CAST( cboolean1 AS TIMESTAMP) (type: timestamp), CAST( (cbigint * 0) AS TIMESTAMP) (type: timestamp), ctimestamp1 (type: timestamp), CAST( cstring1 AS TIMESTAMP) (type: timestamp), CAST( substr(cstring1, 1, 1) AS TIMESTAMP) (type: timestamp), UDFToString(ctinyint) (type: string), UDFToString(csmallint) (type: string), UDFToString(cint) (type: string), UDFToString(cbigint) (type: string), UDFToString(cfloat) (type: string), UDFToString(cdouble) (type: string), UDFToString(cboolean1) (type: string), UDFToString((cbigint * 0)) (type: string), UDFToString(ctimestamp1) (type: string), cstring1 (type: string), UDFToFloat(UDFToInteger(cfloat)) (type: float), UDFToDouble((cint * 2)) (type: double), UDFToString(sin(cfloat)) (type: string), (UDFToFloat(cint) + UDFToDouble(cboolean1)) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35, _col36, _col37, _col38, _col39, _col40, _col41, _col42, _col43, _col44, _col45, _col46, _col47, _col48, _col49, _col50, _col51, _col52, _col53, _col54, _col55, _col56, _col57, _col58, _col59 + ListSink + +PREHOOK: query: select +-- to boolean + cast (ctinyint as boolean) + ,cast (csmallint as boolean) + ,cast (cint as boolean) + ,cast (cbigint as boolean) + ,cast (cfloat as boolean) + ,cast (cdouble as boolean) + ,cast (cboolean1 as boolean) + ,cast (cbigint * 0 as boolean) + ,cast (ctimestamp1 as boolean) + ,cast (cstring1 as boolean) +-- to int family + ,cast (ctinyint as int) + ,cast (csmallint as int) + ,cast (cint as int) + ,cast (cbigint as int) + ,cast (cfloat as int) + ,cast (cdouble as int) + ,cast (cboolean1 as int) + ,cast (ctimestamp1 as int) + ,cast (cstring1 as int) + ,cast (substr(cstring1, 1, 1) as int) + ,cast (cfloat as tinyint) + ,cast (cfloat as smallint) + ,cast (cfloat as bigint) +-- to float family + ,cast (ctinyint as double) + ,cast (csmallint as double) + ,cast (cint as double) + ,cast (cbigint as double) + ,cast (cfloat as double) + ,cast (cdouble as double) + ,cast (cboolean1 as double) + ,cast (ctimestamp1 as double) + ,cast (cstring1 as double) + ,cast (substr(cstring1, 1, 1) as double) + ,cast (cint as float) + ,cast (cdouble as float) +-- to timestamp + ,cast (ctinyint as timestamp) + ,cast (csmallint as timestamp) + ,cast (cint as timestamp) + ,cast (cbigint as timestamp) + ,cast (cfloat as timestamp) + ,cast (cdouble as timestamp) + ,cast (cboolean1 as timestamp) + ,cast (cbigint * 0 as timestamp) + ,cast (ctimestamp1 as timestamp) + ,cast (cstring1 as timestamp) + ,cast (substr(cstring1, 1, 1) as timestamp) +-- to string + ,cast (ctinyint as string) + ,cast (csmallint as string) + ,cast (cint as string) + ,cast (cbigint as string) + ,cast (cfloat as string) + ,cast (cdouble as string) + ,cast (cboolean1 as string) + ,cast (cbigint * 0 as string) + ,cast (ctimestamp1 as string) + ,cast (cstring1 as string) +-- nested and expression arguments + ,cast (cast (cfloat as int) as float) + ,cast (cint * 2 as double) + ,cast (sin(cfloat) as string) + ,cast (cint as float) + cast(cboolean1 as double) +from alltypesorc +-- limit output to a reasonably small number of rows +where cbigint % 250 = 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select +-- to boolean + cast (ctinyint as boolean) + ,cast (csmallint as boolean) + ,cast (cint as boolean) + ,cast (cbigint as boolean) + ,cast (cfloat as boolean) + ,cast (cdouble as boolean) + ,cast (cboolean1 as boolean) + ,cast (cbigint * 0 as boolean) + ,cast (ctimestamp1 as boolean) + ,cast (cstring1 as boolean) +-- to int family + ,cast (ctinyint as int) + ,cast (csmallint as int) + ,cast (cint as int) + ,cast (cbigint as int) + ,cast (cfloat as int) + ,cast (cdouble as int) + ,cast (cboolean1 as int) + ,cast (ctimestamp1 as int) + ,cast (cstring1 as int) + ,cast (substr(cstring1, 1, 1) as int) + ,cast (cfloat as tinyint) + ,cast (cfloat as smallint) + ,cast (cfloat as bigint) +-- to float family + ,cast (ctinyint as double) + ,cast (csmallint as double) + ,cast (cint as double) + ,cast (cbigint as double) + ,cast (cfloat as double) + ,cast (cdouble as double) + ,cast (cboolean1 as double) + ,cast (ctimestamp1 as double) + ,cast (cstring1 as double) + ,cast (substr(cstring1, 1, 1) as double) + ,cast (cint as float) + ,cast (cdouble as float) +-- to timestamp + ,cast (ctinyint as timestamp) + ,cast (csmallint as timestamp) + ,cast (cint as timestamp) + ,cast (cbigint as timestamp) + ,cast (cfloat as timestamp) + ,cast (cdouble as timestamp) + ,cast (cboolean1 as timestamp) + ,cast (cbigint * 0 as timestamp) + ,cast (ctimestamp1 as timestamp) + ,cast (cstring1 as timestamp) + ,cast (substr(cstring1, 1, 1) as timestamp) +-- to string + ,cast (ctinyint as string) + ,cast (csmallint as string) + ,cast (cint as string) + ,cast (cbigint as string) + ,cast (cfloat as string) + ,cast (cdouble as string) + ,cast (cboolean1 as string) + ,cast (cbigint * 0 as string) + ,cast (ctimestamp1 as string) + ,cast (cstring1 as string) +-- nested and expression arguments + ,cast (cast (cfloat as int) as float) + ,cast (cint * 2 as double) + ,cast (sin(cfloat) as string) + ,cast (cint as float) + cast(cboolean1 as double) +from alltypesorc +-- limit output to a reasonably small number of rows +where cbigint % 250 = 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +true true NULL true true true NULL false true NULL -36 -200 NULL -2006216750 -36 -200 NULL -15 NULL NULL -36 -36 -36 -36.0 -200.0 NULL -2.00621675E9 -36.0 -200.0 NULL -14.252 NULL NULL NULL -200.0 1969-12-31 15:59:59.964 1969-12-31 15:59:59.8 NULL 1969-12-08 10:43:03.25 1969-12-31 15:59:24 1969-12-31 15:56:40 NULL 1969-12-31 16:00:00 1969-12-31 15:59:45.748 NULL NULL -36 -200 NULL -2006216750 -36.0 -200.0 NULL 0 1969-12-31 15:59:45.748 NULL -36.0 NULL 0.9917788534431158 NULL +true true NULL true true true NULL false true NULL -36 -200 NULL 1599879000 -36 -200 NULL -7 NULL NULL -36 -36 -36 -36.0 -200.0 NULL 1.599879E9 -36.0 -200.0 NULL -6.183 NULL NULL NULL -200.0 1969-12-31 15:59:59.964 1969-12-31 15:59:59.8 NULL 1970-01-19 04:24:39 1969-12-31 15:59:24 1969-12-31 15:56:40 NULL 1969-12-31 16:00:00 1969-12-31 15:59:53.817 NULL NULL -36 -200 NULL 1599879000 -36.0 -200.0 NULL 0 1969-12-31 15:59:53.817 NULL -36.0 NULL 0.9917788534431158 NULL +true true NULL true true true NULL false true NULL -30 -200 NULL 1429852250 -30 -200 NULL 12 NULL NULL -30 -30 -30 -30.0 -200.0 NULL 1.42985225E9 -30.0 -200.0 NULL 12.935 NULL NULL NULL -200.0 1969-12-31 15:59:59.97 1969-12-31 15:59:59.8 NULL 1970-01-17 05:10:52.25 1969-12-31 15:59:30 1969-12-31 15:56:40 NULL 1969-12-31 16:00:00 1969-12-31 16:00:12.935 NULL NULL -30 -200 NULL 1429852250 -30.0 -200.0 NULL 0 1969-12-31 16:00:12.935 NULL -30.0 NULL 0.9880316240928618 NULL +true NULL true true true NULL false false true true -51 NULL 773600971 1053923250 -51 NULL 0 8 NULL 2 -51 -51 -51 -51.0 NULL 7.73600971E8 1.05392325E9 -51.0 NULL 0.0 8.451 NULL 2.0 7.7360096E8 NULL 1969-12-31 15:59:59.949 NULL 1970-01-09 14:53:20.971 1970-01-12 20:45:23.25 1969-12-31 15:59:09 NULL 1969-12-31 16:00:00 1969-12-31 16:00:00 1969-12-31 16:00:08.451 NULL NULL -51 NULL 773600971 1053923250 -51.0 NULL FALSE 0 1969-12-31 16:00:08.451 2yK4Bx76O -51.0 1.547201942E9 -0.6702291758433747 7.7360096E8 +true NULL true true true NULL true false true true -51 NULL 747553882 -1930467250 -51 NULL 1 8 NULL NULL -51 -51 -51 -51.0 NULL 7.47553882E8 -1.93046725E9 -51.0 NULL 1.0 8.451 NULL NULL 7.4755386E8 NULL 1969-12-31 15:59:59.949 NULL 1970-01-09 07:39:13.882 1969-12-09 07:45:32.75 1969-12-31 15:59:09 NULL 1969-12-31 16:00:00.001 1969-12-31 16:00:00 1969-12-31 16:00:08.451 NULL NULL -51 NULL 747553882 -1930467250 -51.0 NULL TRUE 0 1969-12-31 16:00:08.451 q8M86Fx0r -51.0 1.495107764E9 -0.6702291758433747 7.47553857E8 +true true NULL true true true NULL false true NULL 20 15601 NULL -362433250 20 15601 NULL -15 NULL NULL 20 20 20 20.0 15601.0 NULL -3.6243325E8 20.0 15601.0 NULL -14.871 NULL NULL NULL 15601.0 1969-12-31 16:00:00.02 1969-12-31 16:00:15.601 NULL 1969-12-27 11:19:26.75 1969-12-31 16:00:20 1969-12-31 20:20:01 NULL 1969-12-31 16:00:00 1969-12-31 15:59:45.129 NULL NULL 20 15601 NULL -362433250 20.0 15601.0 NULL 0 1969-12-31 15:59:45.129 NULL 20.0 NULL 0.9129452507276277 NULL +true true NULL true true true NULL false true NULL -38 15601 NULL -1858689000 -38 15601 NULL -2 NULL NULL -38 -38 -38 -38.0 15601.0 NULL -1.858689E9 -38.0 15601.0 NULL -1.3860000000000001 NULL NULL NULL 15601.0 1969-12-31 15:59:59.962 1969-12-31 16:00:15.601 NULL 1969-12-10 03:41:51 1969-12-31 15:59:22 1969-12-31 20:20:01 NULL 1969-12-31 16:00:00 1969-12-31 15:59:58.614 NULL NULL -38 15601 NULL -1858689000 -38.0 15601.0 NULL 0 1969-12-31 15:59:58.614 NULL -38.0 NULL -0.2963685787093853 NULL +true true NULL true true true NULL false true NULL -5 15601 NULL 612416000 -5 15601 NULL 4 NULL NULL -5 -5 -5 -5.0 15601.0 NULL 6.12416E8 -5.0 15601.0 NULL 4.679 NULL NULL NULL 15601.0 1969-12-31 15:59:59.995 1969-12-31 16:00:15.601 NULL 1970-01-07 18:06:56 1969-12-31 15:59:55 1969-12-31 20:20:01 NULL 1969-12-31 16:00:00 1969-12-31 16:00:04.679 NULL NULL -5 15601 NULL 612416000 -5.0 15601.0 NULL 0 1969-12-31 16:00:04.679 NULL -5.0 NULL 0.9589242746631385 NULL +true true NULL true true true NULL false true NULL 48 15601 NULL -795361000 48 15601 NULL -10 NULL NULL 48 48 48 48.0 15601.0 NULL -7.95361E8 48.0 15601.0 NULL -9.765 NULL NULL NULL 15601.0 1969-12-31 16:00:00.048 1969-12-31 16:00:15.601 NULL 1969-12-22 11:03:59 1969-12-31 16:00:48 1969-12-31 20:20:01 NULL 1969-12-31 16:00:00 1969-12-31 15:59:50.235 NULL NULL 48 15601 NULL -795361000 48.0 15601.0 NULL 0 1969-12-31 15:59:50.235 NULL 48.0 NULL -0.7682546613236668 NULL +true NULL true true true NULL false false true true 8 NULL -661621138 -931392750 8 NULL 0 15 NULL NULL 8 8 8 8.0 NULL -6.61621138E8 -9.3139275E8 8.0 NULL 0.0 15.892 NULL NULL -6.6162112E8 NULL 1969-12-31 16:00:00.008 NULL 1969-12-24 00:12:58.862 1969-12-20 21:16:47.25 1969-12-31 16:00:08 NULL 1969-12-31 16:00:00 1969-12-31 16:00:00 1969-12-31 16:00:15.892 NULL NULL 8 NULL -661621138 -931392750 8.0 NULL FALSE 0 1969-12-31 16:00:15.892 L15l8i5k558tBcDV20 8.0 -1.323242276E9 0.9893582466233818 -6.6162112E8 +true NULL true true true NULL false false true true 8 NULL -102936434 -1312782750 8 NULL 0 15 NULL NULL 8 8 8 8.0 NULL -1.02936434E8 -1.31278275E9 8.0 NULL 0.0 15.892 NULL NULL -1.02936432E8 NULL 1969-12-31 16:00:00.008 NULL 1969-12-30 11:24:23.566 1969-12-16 11:20:17.25 1969-12-31 16:00:08 NULL 1969-12-31 16:00:00 1969-12-31 16:00:00 1969-12-31 16:00:15.892 NULL NULL 8 NULL -102936434 -1312782750 8.0 NULL FALSE 0 1969-12-31 16:00:15.892 eJROSNhugc3kQR7Pb 8.0 -2.05872868E8 0.9893582466233818 -1.02936432E8 +true NULL true true true NULL false false true true 8 NULL 805179664 868161500 8 NULL 0 15 NULL NULL 8 8 8 8.0 NULL 8.05179664E8 8.681615E8 8.0 NULL 0.0 15.892 NULL NULL 8.0517965E8 NULL 1969-12-31 16:00:00.008 NULL 1970-01-09 23:39:39.664 1970-01-10 17:09:21.5 1969-12-31 16:00:08 NULL 1969-12-31 16:00:00 1969-12-31 16:00:00 1969-12-31 16:00:15.892 NULL NULL 8 NULL 805179664 868161500 8.0 NULL FALSE 0 1969-12-31 16:00:15.892 e005B5q 8.0 1.610359328E9 0.9893582466233818 8.05179648E8 +true NULL true true true NULL false false true true 8 NULL -669632311 1588591250 8 NULL 0 15 NULL 3 8 8 8 8.0 NULL -6.69632311E8 1.58859125E9 8.0 NULL 0.0 15.892 NULL 3.0 -6.6963232E8 NULL 1969-12-31 16:00:00.008 NULL 1969-12-23 21:59:27.689 1970-01-19 01:16:31.25 1969-12-31 16:00:08 NULL 1969-12-31 16:00:00 1969-12-31 16:00:00 1969-12-31 16:00:15.892 NULL NULL 8 NULL -669632311 1588591250 8.0 NULL FALSE 0 1969-12-31 16:00:15.892 3r3sDvfUkG0yTP3LnX5mNQRr 8.0 -1.339264622E9 0.9893582466233818 -6.6963232E8 +true NULL true true true NULL true false true true 8 NULL 890988972 -1862301000 8 NULL 1 15 NULL NULL 8 8 8 8.0 NULL 8.90988972E8 -1.862301E9 8.0 NULL 1.0 15.892 NULL NULL 8.9098899E8 NULL 1969-12-31 16:00:00.008 NULL 1970-01-10 23:29:48.972 1969-12-10 02:41:39 1969-12-31 16:00:08 NULL 1969-12-31 16:00:00.001 1969-12-31 16:00:00 1969-12-31 16:00:15.892 NULL NULL 8 NULL 890988972 -1862301000 8.0 NULL TRUE 0 1969-12-31 16:00:15.892 XylAH4 8.0 1.781977944E9 0.9893582466233818 8.90988993E8 +true NULL true true true NULL true false true true 8 NULL 930867246 1205399250 8 NULL 1 15 NULL NULL 8 8 8 8.0 NULL 9.30867246E8 1.20539925E9 8.0 NULL 1.0 15.892 NULL NULL 9.3086726E8 NULL 1969-12-31 16:00:00.008 NULL 1970-01-11 10:34:27.246 1970-01-14 14:49:59.25 1969-12-31 16:00:08 NULL 1969-12-31 16:00:00.001 1969-12-31 16:00:00 1969-12-31 16:00:15.892 NULL NULL 8 NULL 930867246 1205399250 8.0 NULL TRUE 0 1969-12-31 16:00:15.892 c1V8o1A 8.0 1.861734492E9 0.9893582466233818 9.30867265E8 +true true NULL true true true NULL false true NULL -59 -7196 NULL -1604890000 -59 -7196 NULL 13 NULL NULL -59 -59 -59 -59.0 -7196.0 NULL -1.60489E9 -59.0 -7196.0 NULL 13.15 NULL NULL NULL -7196.0 1969-12-31 15:59:59.941 1969-12-31 15:59:52.804 NULL 1969-12-13 02:11:50 1969-12-31 15:59:01 1969-12-31 14:00:04 NULL 1969-12-31 16:00:00 1969-12-31 16:00:13.15 NULL NULL -59 -7196 NULL -1604890000 -59.0 -7196.0 NULL 0 1969-12-31 16:00:13.15 NULL -59.0 NULL -0.6367380071391379 NULL +true true NULL true true true NULL false true NULL -21 -7196 NULL 1542429000 -21 -7196 NULL -5 NULL NULL -21 -21 -21 -21.0 -7196.0 NULL 1.542429E9 -21.0 -7196.0 NULL -4.1 NULL NULL NULL -7196.0 1969-12-31 15:59:59.979 1969-12-31 15:59:52.804 NULL 1970-01-18 12:27:09 1969-12-31 15:59:39 1969-12-31 14:00:04 NULL 1969-12-31 16:00:00 1969-12-31 15:59:55.9 NULL NULL -21 -7196 NULL 1542429000 -21.0 -7196.0 NULL 0 1969-12-31 15:59:55.9 NULL -21.0 NULL -0.8366556385360561 NULL +true true NULL true true true NULL false true NULL -60 -7196 NULL 1516314750 -60 -7196 NULL -8 NULL NULL -60 -60 -60 -60.0 -7196.0 NULL 1.51631475E9 -60.0 -7196.0 NULL -7.592 NULL NULL NULL -7196.0 1969-12-31 15:59:59.94 1969-12-31 15:59:52.804 NULL 1970-01-18 05:11:54.75 1969-12-31 15:59:00 1969-12-31 14:00:04 NULL 1969-12-31 16:00:00 1969-12-31 15:59:52.408 NULL NULL -60 -7196 NULL 1516314750 -60.0 -7196.0 NULL 0 1969-12-31 15:59:52.408 NULL -60.0 NULL 0.3048106211022167 NULL +true true NULL true true true NULL false true NULL -14 -7196 NULL -1552199500 -14 -7196 NULL 11 NULL NULL -14 -14 -14 -14.0 -7196.0 NULL -1.5521995E9 -14.0 -7196.0 NULL 11.065 NULL NULL NULL -7196.0 1969-12-31 15:59:59.986 1969-12-31 15:59:52.804 NULL 1969-12-13 16:50:00.5 1969-12-31 15:59:46 1969-12-31 14:00:04 NULL 1969-12-31 16:00:00 1969-12-31 16:00:11.065 NULL NULL -14 -7196 NULL -1552199500 -14.0 -7196.0 NULL 0 1969-12-31 16:00:11.065 NULL -14.0 NULL -0.9906073556948704 NULL +true true NULL true true true NULL false true NULL 59 -7196 NULL -1137754500 59 -7196 NULL 10 NULL NULL 59 59 59 59.0 -7196.0 NULL -1.1377545E9 59.0 -7196.0 NULL 10.956 NULL NULL NULL -7196.0 1969-12-31 16:00:00.059 1969-12-31 15:59:52.804 NULL 1969-12-18 11:57:25.5 1969-12-31 16:00:59 1969-12-31 14:00:04 NULL 1969-12-31 16:00:00 1969-12-31 16:00:10.956 NULL NULL 59 -7196 NULL -1137754500 59.0 -7196.0 NULL 0 1969-12-31 16:00:10.956 NULL 59.0 NULL 0.6367380071391379 NULL +true true NULL true true true NULL false true NULL -8 -7196 NULL -1849991500 -8 -7196 NULL 3 NULL NULL -8 -8 -8 -8.0 -7196.0 NULL -1.8499915E9 -8.0 -7196.0 NULL 3.136 NULL NULL NULL -7196.0 1969-12-31 15:59:59.992 1969-12-31 15:59:52.804 NULL 1969-12-10 06:06:48.5 1969-12-31 15:59:52 1969-12-31 14:00:04 NULL 1969-12-31 16:00:00 1969-12-31 16:00:03.136 NULL NULL -8 -7196 NULL -1849991500 -8.0 -7196.0 NULL 0 1969-12-31 16:00:03.136 NULL -8.0 NULL -0.9893582466233818 NULL +true true NULL true true true NULL false true NULL 5 -7196 NULL -1015607500 5 -7196 NULL 10 NULL NULL 5 5 5 5.0 -7196.0 NULL -1.0156075E9 5.0 -7196.0 NULL 10.973 NULL NULL NULL -7196.0 1969-12-31 16:00:00.005 1969-12-31 15:59:52.804 NULL 1969-12-19 21:53:12.5 1969-12-31 16:00:05 1969-12-31 14:00:04 NULL 1969-12-31 16:00:00 1969-12-31 16:00:10.973 NULL NULL 5 -7196 NULL -1015607500 5.0 -7196.0 NULL 0 1969-12-31 16:00:10.973 NULL 5.0 NULL -0.9589242746631385 NULL +true true NULL true true true NULL false true NULL -24 -7196 NULL 829111000 -24 -7196 NULL -7 NULL NULL -24 -24 -24 -24.0 -7196.0 NULL 8.29111E8 -24.0 -7196.0 NULL -6.855 NULL NULL NULL -7196.0 1969-12-31 15:59:59.976 1969-12-31 15:59:52.804 NULL 1970-01-10 06:18:31 1969-12-31 15:59:36 1969-12-31 14:00:04 NULL 1969-12-31 16:00:00 1969-12-31 15:59:53.145 NULL NULL -24 -7196 NULL 829111000 -24.0 -7196.0 NULL 0 1969-12-31 15:59:53.145 NULL -24.0 NULL 0.9055783620066238 NULL +true true NULL true true true NULL false true NULL -50 -7196 NULL -1031187250 -50 -7196 NULL -6 NULL NULL -50 -50 -50 -50.0 -7196.0 NULL -1.03118725E9 -50.0 -7196.0 NULL -5.267 NULL NULL NULL -7196.0 1969-12-31 15:59:59.95 1969-12-31 15:59:52.804 NULL 1969-12-19 17:33:32.75 1969-12-31 15:59:10 1969-12-31 14:00:04 NULL 1969-12-31 16:00:00 1969-12-31 15:59:54.733 NULL NULL -50 -7196 NULL -1031187250 -50.0 -7196.0 NULL 0 1969-12-31 15:59:54.733 NULL -50.0 NULL 0.26237485370392877 NULL +true NULL true true true NULL true false true true 11 NULL -64615982 1803053750 11 NULL 1 2 NULL 8 11 11 11 11.0 NULL -6.4615982E7 1.80305375E9 11.0 NULL 1.0 2.351 NULL 8.0 -6.4615984E7 NULL 1969-12-31 16:00:00.011 NULL 1969-12-30 22:03:04.018 1970-01-21 12:50:53.75 1969-12-31 16:00:11 NULL 1969-12-31 16:00:00.001 1969-12-31 16:00:00 1969-12-31 16:00:02.351 NULL NULL 11 NULL -64615982 1803053750 11.0 NULL TRUE 0 1969-12-31 16:00:02.351 8J5OB7K26PEV7kdbeHr3 11.0 -1.29231964E8 -0.9999902065507035 -6.4615983E7 +true NULL true true true NULL true false true true 11 NULL -335450417 1233327000 11 NULL 1 2 NULL NULL 11 11 11 11.0 NULL -3.35450417E8 1.233327E9 11.0 NULL 1.0 2.351 NULL NULL -3.35450432E8 NULL 1969-12-31 16:00:00.011 NULL 1969-12-27 18:49:09.583 1970-01-14 22:35:27 1969-12-31 16:00:11 NULL 1969-12-31 16:00:00.001 1969-12-31 16:00:00 1969-12-31 16:00:02.351 NULL NULL 11 NULL -335450417 1233327000 11.0 NULL TRUE 0 1969-12-31 16:00:02.351 dOYnqgaXoJ1P3ERwxe5N7 11.0 -6.70900834E8 -0.9999902065507035 -3.35450431E8 diff --git a/ql/src/test/results/clientpositive/tez/vectorized_date_funcs.q.out b/ql/src/test/results/clientpositive/tez/vectorized_date_funcs.q.out new file mode 100644 index 000000000000..8f08aca11d3a --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorized_date_funcs.q.out @@ -0,0 +1,1019 @@ +PREHOOK: query: -- Test timestamp functions in vectorized mode to verify they run correctly end-to-end. + +CREATE TABLE date_udf_flight ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@date_udf_flight +POSTHOOK: query: -- Test timestamp functions in vectorized mode to verify they run correctly end-to-end. + +CREATE TABLE date_udf_flight ( + origin_city_name STRING, + dest_city_name STRING, + fl_date DATE, + arr_delay FLOAT, + fl_num INT +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@date_udf_flight +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/flights_tiny.txt.1' OVERWRITE INTO TABLE date_udf_flight +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@date_udf_flight +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/flights_tiny.txt.1' OVERWRITE INTO TABLE date_udf_flight +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@date_udf_flight +PREHOOK: query: CREATE TABLE date_udf_flight_orc ( + fl_date DATE, + fl_time TIMESTAMP +) STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@date_udf_flight_orc +POSTHOOK: query: CREATE TABLE date_udf_flight_orc ( + fl_date DATE, + fl_time TIMESTAMP +) STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@date_udf_flight_orc +PREHOOK: query: INSERT INTO TABLE date_udf_flight_orc SELECT fl_date, to_utc_timestamp(fl_date, 'America/Los_Angeles') FROM date_udf_flight +PREHOOK: type: QUERY +PREHOOK: Input: default@date_udf_flight +PREHOOK: Output: default@date_udf_flight_orc +POSTHOOK: query: INSERT INTO TABLE date_udf_flight_orc SELECT fl_date, to_utc_timestamp(fl_date, 'America/Los_Angeles') FROM date_udf_flight +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_udf_flight +POSTHOOK: Output: default@date_udf_flight_orc +POSTHOOK: Lineage: date_udf_flight_orc.fl_date SIMPLE [(date_udf_flight)date_udf_flight.FieldSchema(name:fl_date, type:date, comment:null), ] +POSTHOOK: Lineage: date_udf_flight_orc.fl_time EXPRESSION [(date_udf_flight)date_udf_flight.FieldSchema(name:fl_date, type:date, comment:null), ] +PREHOOK: query: SELECT * FROM date_udf_flight_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM date_udf_flight_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +2010-10-20 2010-10-20 07:00:00 +2010-10-20 2010-10-20 07:00:00 +2010-10-20 2010-10-20 07:00:00 +2010-10-20 2010-10-20 07:00:00 +2010-10-20 2010-10-20 07:00:00 +2010-10-20 2010-10-20 07:00:00 +2010-10-20 2010-10-20 07:00:00 +2010-10-20 2010-10-20 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-31 2010-10-31 07:00:00 +2010-10-31 2010-10-31 07:00:00 +2010-10-31 2010-10-31 07:00:00 +2010-10-31 2010-10-31 07:00:00 +2010-10-31 2010-10-31 07:00:00 +2010-10-31 2010-10-31 07:00:00 +2010-10-31 2010-10-31 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-22 2010-10-22 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-20 2010-10-20 07:00:00 +2010-10-20 2010-10-20 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-30 2010-10-30 07:00:00 +2010-10-20 2010-10-20 07:00:00 +2010-10-21 2010-10-21 07:00:00 +2010-10-23 2010-10-23 07:00:00 +2010-10-24 2010-10-24 07:00:00 +2010-10-25 2010-10-25 07:00:00 +2010-10-26 2010-10-26 07:00:00 +2010-10-27 2010-10-27 07:00:00 +2010-10-28 2010-10-28 07:00:00 +2010-10-29 2010-10-29 07:00:00 +2010-10-31 2010-10-31 07:00:00 +PREHOOK: query: EXPLAIN SELECT + to_unix_timestamp(fl_time), + year(fl_time), + month(fl_time), + day(fl_time), + dayofmonth(fl_time), + weekofyear(fl_time), + date(fl_time), + to_date(fl_time), + date_add(fl_time, 2), + date_sub(fl_time, 2), + datediff(fl_time, "2000-01-01") +FROM date_udf_flight_orc +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT + to_unix_timestamp(fl_time), + year(fl_time), + month(fl_time), + day(fl_time), + dayofmonth(fl_time), + weekofyear(fl_time), + date(fl_time), + to_date(fl_time), + date_add(fl_time, 2), + date_sub(fl_time, 2), + datediff(fl_time, "2000-01-01") +FROM date_udf_flight_orc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: date_udf_flight_orc + Select Operator + expressions: to_unix_timestamp(fl_time) (type: bigint), year(fl_time) (type: int), month(fl_time) (type: int), day(fl_time) (type: int), dayofmonth(fl_time) (type: int), weekofyear(fl_time) (type: int), CAST( fl_time AS DATE) (type: date), to_date(fl_time) (type: string), date_add(fl_time, 2) (type: string), date_sub(fl_time, 2) (type: string), datediff(fl_time, '2000-01-01') (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 + ListSink + +PREHOOK: query: SELECT + to_unix_timestamp(fl_time), + year(fl_time), + month(fl_time), + day(fl_time), + dayofmonth(fl_time), + weekofyear(fl_time), + date(fl_time), + to_date(fl_time), + date_add(fl_time, 2), + date_sub(fl_time, 2), + datediff(fl_time, "2000-01-01") +FROM date_udf_flight_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + to_unix_timestamp(fl_time), + year(fl_time), + month(fl_time), + day(fl_time), + dayofmonth(fl_time), + weekofyear(fl_time), + date(fl_time), + to_date(fl_time), + date_add(fl_time, 2), + date_sub(fl_time, 2), + datediff(fl_time, "2000-01-01") +FROM date_udf_flight_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288533600 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288533600 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288533600 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288533600 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288533600 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288533600 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288533600 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287756000 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288447200 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1287583200 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287669600 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287842400 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287928800 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1288015200 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288101600 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288188000 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288274400 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288360800 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288533600 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +PREHOOK: query: EXPLAIN SELECT + to_unix_timestamp(fl_date), + year(fl_date), + month(fl_date), + day(fl_date), + dayofmonth(fl_date), + weekofyear(fl_date), + date(fl_date), + to_date(fl_date), + date_add(fl_date, 2), + date_sub(fl_date, 2), + datediff(fl_date, "2000-01-01") +FROM date_udf_flight_orc +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT + to_unix_timestamp(fl_date), + year(fl_date), + month(fl_date), + day(fl_date), + dayofmonth(fl_date), + weekofyear(fl_date), + date(fl_date), + to_date(fl_date), + date_add(fl_date, 2), + date_sub(fl_date, 2), + datediff(fl_date, "2000-01-01") +FROM date_udf_flight_orc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: date_udf_flight_orc + Select Operator + expressions: to_unix_timestamp(fl_date) (type: bigint), year(fl_date) (type: int), month(fl_date) (type: int), day(fl_date) (type: int), dayofmonth(fl_date) (type: int), weekofyear(fl_date) (type: int), CAST( fl_date AS DATE) (type: date), to_date(fl_date) (type: string), date_add(fl_date, 2) (type: string), date_sub(fl_date, 2) (type: string), datediff(fl_date, '2000-01-01') (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10 + ListSink + +PREHOOK: query: SELECT + to_unix_timestamp(fl_date), + year(fl_date), + month(fl_date), + day(fl_date), + dayofmonth(fl_date), + weekofyear(fl_date), + date(fl_date), + to_date(fl_date), + date_add(fl_date, 2), + date_sub(fl_date, 2), + datediff(fl_date, "2000-01-01") +FROM date_udf_flight_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + to_unix_timestamp(fl_date), + year(fl_date), + month(fl_date), + day(fl_date), + dayofmonth(fl_date), + weekofyear(fl_date), + date(fl_date), + to_date(fl_date), + date_add(fl_date, 2), + date_sub(fl_date, 2), + datediff(fl_date, "2000-01-01") +FROM date_udf_flight_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288508400 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288508400 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288508400 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288508400 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288508400 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288508400 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288508400 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287730800 2010 10 22 22 42 2010-10-22 2010-10-22 2010-10-24 2010-10-20 3947 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1288422000 2010 10 30 30 43 2010-10-30 2010-10-30 2010-11-01 2010-10-28 3955 +1287558000 2010 10 20 20 42 2010-10-20 2010-10-20 2010-10-22 2010-10-18 3945 +1287644400 2010 10 21 21 42 2010-10-21 2010-10-21 2010-10-23 2010-10-19 3946 +1287817200 2010 10 23 23 42 2010-10-23 2010-10-23 2010-10-25 2010-10-21 3948 +1287903600 2010 10 24 24 42 2010-10-24 2010-10-24 2010-10-26 2010-10-22 3949 +1287990000 2010 10 25 25 43 2010-10-25 2010-10-25 2010-10-27 2010-10-23 3950 +1288076400 2010 10 26 26 43 2010-10-26 2010-10-26 2010-10-28 2010-10-24 3951 +1288162800 2010 10 27 27 43 2010-10-27 2010-10-27 2010-10-29 2010-10-25 3952 +1288249200 2010 10 28 28 43 2010-10-28 2010-10-28 2010-10-30 2010-10-26 3953 +1288335600 2010 10 29 29 43 2010-10-29 2010-10-29 2010-10-31 2010-10-27 3954 +1288508400 2010 10 31 31 43 2010-10-31 2010-10-31 2010-11-02 2010-10-29 3956 +PREHOOK: query: EXPLAIN SELECT + year(fl_time) = year(fl_date), + month(fl_time) = month(fl_date), + day(fl_time) = day(fl_date), + dayofmonth(fl_time) = dayofmonth(fl_date), + weekofyear(fl_time) = weekofyear(fl_date), + date(fl_time) = date(fl_date), + to_date(fl_time) = to_date(fl_date), + date_add(fl_time, 2) = date_add(fl_date, 2), + date_sub(fl_time, 2) = date_sub(fl_date, 2), + datediff(fl_time, "2000-01-01") = datediff(fl_date, "2000-01-01") +FROM date_udf_flight_orc +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT + year(fl_time) = year(fl_date), + month(fl_time) = month(fl_date), + day(fl_time) = day(fl_date), + dayofmonth(fl_time) = dayofmonth(fl_date), + weekofyear(fl_time) = weekofyear(fl_date), + date(fl_time) = date(fl_date), + to_date(fl_time) = to_date(fl_date), + date_add(fl_time, 2) = date_add(fl_date, 2), + date_sub(fl_time, 2) = date_sub(fl_date, 2), + datediff(fl_time, "2000-01-01") = datediff(fl_date, "2000-01-01") +FROM date_udf_flight_orc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: date_udf_flight_orc + Select Operator + expressions: (year(fl_time) = year(fl_date)) (type: boolean), (month(fl_time) = month(fl_date)) (type: boolean), (day(fl_time) = day(fl_date)) (type: boolean), (dayofmonth(fl_time) = dayofmonth(fl_date)) (type: boolean), (weekofyear(fl_time) = weekofyear(fl_date)) (type: boolean), (CAST( fl_time AS DATE) = CAST( fl_date AS DATE)) (type: boolean), (to_date(fl_time) = to_date(fl_date)) (type: boolean), (date_add(fl_time, 2) = date_add(fl_date, 2)) (type: boolean), (date_sub(fl_time, 2) = date_sub(fl_date, 2)) (type: boolean), (datediff(fl_time, '2000-01-01') = datediff(fl_date, '2000-01-01')) (type: boolean) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9 + ListSink + +PREHOOK: query: -- Should all be true or NULL +SELECT + year(fl_time) = year(fl_date), + month(fl_time) = month(fl_date), + day(fl_time) = day(fl_date), + dayofmonth(fl_time) = dayofmonth(fl_date), + weekofyear(fl_time) = weekofyear(fl_date), + date(fl_time) = date(fl_date), + to_date(fl_time) = to_date(fl_date), + date_add(fl_time, 2) = date_add(fl_date, 2), + date_sub(fl_time, 2) = date_sub(fl_date, 2), + datediff(fl_time, "2000-01-01") = datediff(fl_date, "2000-01-01") +FROM date_udf_flight_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +POSTHOOK: query: -- Should all be true or NULL +SELECT + year(fl_time) = year(fl_date), + month(fl_time) = month(fl_date), + day(fl_time) = day(fl_date), + dayofmonth(fl_time) = dayofmonth(fl_date), + weekofyear(fl_time) = weekofyear(fl_date), + date(fl_time) = date(fl_date), + to_date(fl_time) = to_date(fl_date), + date_add(fl_time, 2) = date_add(fl_date, 2), + date_sub(fl_time, 2) = date_sub(fl_date, 2), + datediff(fl_time, "2000-01-01") = datediff(fl_date, "2000-01-01") +FROM date_udf_flight_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +true true true true true true true true true true +PREHOOK: query: EXPLAIN SELECT + fl_date, + to_date(date_add(fl_date, 2)), + to_date(date_sub(fl_date, 2)), + datediff(fl_date, date_add(fl_date, 2)), + datediff(fl_date, date_sub(fl_date, 2)), + datediff(date_add(fl_date, 2), date_sub(fl_date, 2)) +FROM date_udf_flight_orc LIMIT 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT + fl_date, + to_date(date_add(fl_date, 2)), + to_date(date_sub(fl_date, 2)), + datediff(fl_date, date_add(fl_date, 2)), + datediff(fl_date, date_sub(fl_date, 2)), + datediff(date_add(fl_date, 2), date_sub(fl_date, 2)) +FROM date_udf_flight_orc LIMIT 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: date_udf_flight_orc + Select Operator + expressions: fl_date (type: date), to_date(date_add(fl_date, 2)) (type: string), to_date(date_sub(fl_date, 2)) (type: string), datediff(fl_date, date_add(fl_date, 2)) (type: int), datediff(fl_date, date_sub(fl_date, 2)) (type: int), datediff(date_add(fl_date, 2), date_sub(fl_date, 2)) (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Limit + Number of rows: 10 + ListSink + +PREHOOK: query: SELECT + fl_date, + to_date(date_add(fl_date, 2)), + to_date(date_sub(fl_date, 2)), + datediff(fl_date, date_add(fl_date, 2)), + datediff(fl_date, date_sub(fl_date, 2)), + datediff(date_add(fl_date, 2), date_sub(fl_date, 2)) +FROM date_udf_flight_orc LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + fl_date, + to_date(date_add(fl_date, 2)), + to_date(date_sub(fl_date, 2)), + datediff(fl_date, date_add(fl_date, 2)), + datediff(fl_date, date_sub(fl_date, 2)), + datediff(date_add(fl_date, 2), date_sub(fl_date, 2)) +FROM date_udf_flight_orc LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +2010-10-20 2010-10-22 2010-10-18 -1 2 4 +2010-10-20 2010-10-22 2010-10-18 -1 2 4 +2010-10-20 2010-10-22 2010-10-18 -1 2 4 +2010-10-20 2010-10-22 2010-10-18 -1 2 4 +2010-10-20 2010-10-22 2010-10-18 -1 2 4 +2010-10-20 2010-10-22 2010-10-18 -1 2 4 +2010-10-20 2010-10-22 2010-10-18 -1 2 4 +2010-10-20 2010-10-22 2010-10-18 -1 2 4 +2010-10-21 2010-10-23 2010-10-19 -1 2 4 +2010-10-21 2010-10-23 2010-10-19 -1 2 4 +PREHOOK: query: -- Test extracting the date part of expression that includes time +SELECT to_date('2009-07-30 04:17:52') FROM date_udf_flight_orc LIMIT 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +POSTHOOK: query: -- Test extracting the date part of expression that includes time +SELECT to_date('2009-07-30 04:17:52') FROM date_udf_flight_orc LIMIT 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +2009-07-30 +PREHOOK: query: EXPLAIN SELECT + min(fl_date) AS c1, + max(fl_date), + count(fl_date), + count(*) +FROM date_udf_flight_orc +ORDER BY c1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT + min(fl_date) AS c1, + max(fl_date), + count(fl_date), + count(*) +FROM date_udf_flight_orc +ORDER BY c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: date_udf_flight_orc + Statistics: Num rows: 137 Data size: 13152 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: fl_date (type: date) + outputColumnNames: fl_date + Statistics: Num rows: 137 Data size: 13152 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: min(fl_date), max(fl_date), count(fl_date), count() + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 128 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 128 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: date), _col1 (type: date), _col2 (type: bigint), _col3 (type: bigint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: min(VALUE._col0), max(VALUE._col1), count(VALUE._col2), count(VALUE._col3) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 128 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: date), _col1 (type: date), _col2 (type: bigint), _col3 (type: bigint) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 128 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: date) + sort order: + + Statistics: Num rows: 1 Data size: 128 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: date), _col2 (type: bigint), _col3 (type: bigint) + Execution mode: vectorized + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: date), VALUE._col0 (type: date), VALUE._col1 (type: bigint), VALUE._col2 (type: bigint) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 128 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 128 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + min(fl_date) AS c1, + max(fl_date), + count(fl_date), + count(*) +FROM date_udf_flight_orc +ORDER BY c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + min(fl_date) AS c1, + max(fl_date), + count(fl_date), + count(*) +FROM date_udf_flight_orc +ORDER BY c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +2010-10-20 2010-10-31 137 137 diff --git a/ql/src/test/results/clientpositive/tez/vectorized_distinct_gby.q.out b/ql/src/test/results/clientpositive/tez/vectorized_distinct_gby.q.out new file mode 100644 index 000000000000..6910325eec4f --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vectorized_distinct_gby.q.out @@ -0,0 +1,157 @@ +PREHOOK: query: create table dtest(a int, b int) clustered by (a) sorted by (a) into 1 buckets stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@dtest +POSTHOOK: query: create table dtest(a int, b int) clustered by (a) sorted by (a) into 1 buckets stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@dtest +PREHOOK: query: insert into table dtest select c,b from (select array(300,300,300,300,300) as a, 1 as b from src limit 1) y lateral view explode(a) t1 as c +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@dtest +POSTHOOK: query: insert into table dtest select c,b from (select array(300,300,300,300,300) as a, 1 as b from src limit 1) y lateral view explode(a) t1 as c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@dtest +POSTHOOK: Lineage: dtest.a SIMPLE [] +POSTHOOK: Lineage: dtest.b EXPRESSION [] +PREHOOK: query: explain select sum(distinct a), count(distinct a) from dtest +PREHOOK: type: QUERY +POSTHOOK: query: explain select sum(distinct a), count(distinct a) from dtest +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: dtest + Statistics: Num rows: 5 Data size: 40 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: a (type: int) + outputColumnNames: a + Statistics: Num rows: 5 Data size: 40 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(DISTINCT a), count(DISTINCT a) + bucketGroup: true + keys: a (type: int) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 40 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 5 Data size: 40 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(DISTINCT KEY._col0:0._col0), count(DISTINCT KEY._col0:1._col0) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint), _col1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select sum(distinct a), count(distinct a) from dtest +PREHOOK: type: QUERY +PREHOOK: Input: default@dtest +#### A masked pattern was here #### +POSTHOOK: query: select sum(distinct a), count(distinct a) from dtest +POSTHOOK: type: QUERY +POSTHOOK: Input: default@dtest +#### A masked pattern was here #### +300 1 +PREHOOK: query: explain select sum(distinct cint), count(distinct cint), avg(distinct cint), std(distinct cint) from alltypesorc +PREHOOK: type: QUERY +POSTHOOK: query: explain select sum(distinct cint), count(distinct cint), avg(distinct cint), std(distinct cint) from alltypesorc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cint (type: int) + outputColumnNames: cint + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(DISTINCT cint), count(DISTINCT cint), avg(DISTINCT cint), std(DISTINCT cint) + keys: cint (type: int) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(DISTINCT KEY._col0:0._col0), count(DISTINCT KEY._col0:1._col0), avg(DISTINCT KEY._col0:2._col0), std(DISTINCT KEY._col0:3._col0) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 32 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint), _col1 (type: bigint), _col2 (type: double), _col3 (type: double) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 32 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 32 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select sum(distinct cint), count(distinct cint), avg(distinct cint), std(distinct cint) from alltypesorc +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: select sum(distinct cint), count(distinct cint), avg(distinct cint), std(distinct cint) from alltypesorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +-3482841611 6082 -572647.4204209142 6.153814687328991E8 diff --git a/ql/src/test/results/clientpositive/vector_aggregate_9.q.out b/ql/src/test/results/clientpositive/vector_aggregate_9.q.out new file mode 100644 index 000000000000..c0fe295e0e33 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_aggregate_9.q.out @@ -0,0 +1,167 @@ +PREHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: explain +select min(dc), max(dc), sum(dc), avg(dc) from vectortab2korc +PREHOOK: type: QUERY +POSTHOOK: query: explain +select min(dc), max(dc), sum(dc), avg(dc) from vectortab2korc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dc (type: decimal(38,18)) + outputColumnNames: dc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: min(dc), max(dc), sum(dc), avg(dc) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(38,18)), _col1 (type: decimal(38,18)), _col2 (type: decimal(38,18)), _col3 (type: struct) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: min(VALUE._col0), max(VALUE._col1), sum(VALUE._col2), avg(VALUE._col3) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 448 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(38,18)), _col1 (type: decimal(38,18)), _col2 (type: decimal(38,18)), _col3 (type: decimal(38,18)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 448 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 448 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select min(dc), max(dc), sum(dc), avg(dc) from vectortab2korc +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: select min(dc), max(dc), sum(dc), avg(dc) from vectortab2korc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +-4997414117561.546875 4994550248722.298828 -10252745435816.024410 -5399023399.587163986308583465 diff --git a/ql/src/test/results/clientpositive/vector_between_in.q.out b/ql/src/test/results/clientpositive/vector_between_in.q.out index 631ac1952177..e21dd852281b 100644 --- a/ql/src/test/results/clientpositive/vector_between_in.q.out +++ b/ql/src/test/results/clientpositive/vector_between_in.q.out @@ -662,15 +662,15 @@ POSTHOOK: Input: default@decimal_date_test 14.9324324324 19.1135135135 20.3081081081 -22.1000000000 +22.1 24.4891891892 33.4486486486 34.6432432432 40.0189189189 42.4081081081 43.0054054054 -44.2000000000 -44.2000000000 +44.2 +44.2 44.7972972973 45.9918918919 PREHOOK: query: SELECT COUNT(*) FROM decimal_date_test WHERE cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 diff --git a/ql/src/test/results/clientpositive/vector_decimal_1.q.out b/ql/src/test/results/clientpositive/vector_decimal_1.q.out new file mode 100644 index 000000000000..7d0ff758a49a --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_1.q.out @@ -0,0 +1,528 @@ +PREHOOK: query: drop table if exists decimal_1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists decimal_1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table decimal_1 (t decimal(4,2), u decimal(5), v decimal) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_1 +POSTHOOK: query: create table decimal_1 (t decimal(4,2), u decimal(5), v decimal) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_1 +PREHOOK: query: desc decimal_1 +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@decimal_1 +POSTHOOK: query: desc decimal_1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@decimal_1 +t decimal(4,2) +u decimal(5,0) +v decimal(10,0) +PREHOOK: query: insert overwrite table decimal_1 + select cast('17.29' as decimal(4,2)), 3.1415926BD, 3115926.54321BD from src tablesample (1 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@decimal_1 +POSTHOOK: query: insert overwrite table decimal_1 + select cast('17.29' as decimal(4,2)), 3.1415926BD, 3115926.54321BD from src tablesample (1 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@decimal_1 +POSTHOOK: Lineage: decimal_1.t EXPRESSION [] +POSTHOOK: Lineage: decimal_1.u EXPRESSION [] +POSTHOOK: Lineage: decimal_1.v EXPRESSION [] +PREHOOK: query: explain +select cast(t as boolean) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as boolean) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToBoolean(t) (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as boolean) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as boolean) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +true +PREHOOK: query: explain +select cast(t as tinyint) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as tinyint) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToByte(t) (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as tinyint) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as tinyint) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as smallint) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as smallint) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToShort(t) (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as smallint) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as smallint) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as int) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as int) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(t) (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as int) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as int) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as bigint) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as bigint) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToLong(t) (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: bigint) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as bigint) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as bigint) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as float) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as float) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToFloat(t) (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: float) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as float) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as float) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17.29 +PREHOOK: query: explain +select cast(t as double) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as double) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToDouble(t) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: double) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as double) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as double) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17.29 +PREHOOK: query: explain +select cast(t as string) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as string) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToString(t) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as string) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as string) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +17.29 +PREHOOK: query: explain +select cast(t as timestamp) from decimal_1 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as timestamp) from decimal_1 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_1 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: CAST( t AS TIMESTAMP) (type: timestamp) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: timestamp) + sort order: + + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: timestamp) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 336 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as timestamp) from decimal_1 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as timestamp) from decimal_1 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_1 +#### A masked pattern was here #### +1969-12-31 16:00:17.29 +PREHOOK: query: drop table decimal_1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_1 +PREHOOK: Output: default@decimal_1 +POSTHOOK: query: drop table decimal_1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_1 +POSTHOOK: Output: default@decimal_1 diff --git a/ql/src/test/results/clientpositive/vector_decimal_10_0.q.out b/ql/src/test/results/clientpositive/vector_decimal_10_0.q.out new file mode 100644 index 000000000000..1fb0e30fde76 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_10_0.q.out @@ -0,0 +1,105 @@ +PREHOOK: query: DROP TABLE IF EXISTS decimal_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS decimal_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS decimal +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS decimal +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE decimal_txt (dec decimal) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_txt +POSTHOOK: query: CREATE TABLE decimal_txt (dec decimal) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/decimal_10_0.txt' OVERWRITE INTO TABLE decimal_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/decimal_10_0.txt' OVERWRITE INTO TABLE decimal_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_txt +PREHOOK: query: CREATE TABLE DECIMAL STORED AS ORC AS SELECT * FROM decimal_txt +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@decimal_txt +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL +POSTHOOK: query: CREATE TABLE DECIMAL STORED AS ORC AS SELECT * FROM decimal_txt +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@decimal_txt +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL +PREHOOK: query: EXPLAIN +SELECT dec FROM DECIMAL order by dec +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT dec FROM DECIMAL order by dec +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal + Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT dec FROM DECIMAL order by dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec FROM DECIMAL order by dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal +#### A masked pattern was here #### +NULL +1000000000 +PREHOOK: query: DROP TABLE DECIMAL_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_txt +PREHOOK: Output: default@decimal_txt +POSTHOOK: query: DROP TABLE DECIMAL_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_txt +POSTHOOK: Output: default@decimal_txt +PREHOOK: query: DROP TABLE DECIMAL +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal +PREHOOK: Output: default@decimal +POSTHOOK: query: DROP TABLE DECIMAL +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal +POSTHOOK: Output: default@decimal diff --git a/ql/src/test/results/clientpositive/vector_decimal_2.q.out b/ql/src/test/results/clientpositive/vector_decimal_2.q.out new file mode 100644 index 000000000000..d27381067f9f --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_2.q.out @@ -0,0 +1,1487 @@ +PREHOOK: query: drop table decimal_2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table decimal_2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table decimal_2 (t decimal(18,9)) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_2 +POSTHOOK: query: create table decimal_2 (t decimal(18,9)) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_2 +PREHOOK: query: insert overwrite table decimal_2 + select cast('17.29' as decimal(4,2)) from src tablesample (1 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@decimal_2 +POSTHOOK: query: insert overwrite table decimal_2 + select cast('17.29' as decimal(4,2)) from src tablesample (1 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@decimal_2 +POSTHOOK: Lineage: decimal_2.t EXPRESSION [] +PREHOOK: query: explain +select cast(t as boolean) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as boolean) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToBoolean(t) (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as boolean) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as boolean) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +true +PREHOOK: query: explain +select cast(t as tinyint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as tinyint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToByte(t) (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as tinyint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as tinyint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as smallint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as smallint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToShort(t) (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as smallint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as smallint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as int) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as int) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(t) (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as int) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as int) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as bigint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as bigint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToLong(t) (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: bigint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as bigint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as bigint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17 +PREHOOK: query: explain +select cast(t as float) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as float) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToFloat(t) (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: float) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as float) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as float) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17.29 +PREHOOK: query: explain +select cast(t as double) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as double) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToDouble(t) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: double) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as double) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as double) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17.29 +PREHOOK: query: explain +select cast(t as string) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as string) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToString(t) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as string) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as string) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +17.29 +PREHOOK: query: insert overwrite table decimal_2 + select cast('3404045.5044003' as decimal(18,9)) from src tablesample (1 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@decimal_2 +POSTHOOK: query: insert overwrite table decimal_2 + select cast('3404045.5044003' as decimal(18,9)) from src tablesample (1 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@decimal_2 +POSTHOOK: Lineage: decimal_2.t EXPRESSION [] +PREHOOK: query: explain +select cast(t as boolean) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as boolean) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToBoolean(t) (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: boolean) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as boolean) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as boolean) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +true +PREHOOK: query: explain +select cast(t as tinyint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as tinyint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToByte(t) (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: tinyint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: tinyint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as tinyint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as tinyint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +13 +PREHOOK: query: explain +select cast(t as smallint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as smallint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToShort(t) (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: smallint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: smallint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as smallint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as smallint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +-3827 +PREHOOK: query: explain +select cast(t as int) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as int) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToInteger(t) (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as int) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as int) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3404045 +PREHOOK: query: explain +select cast(t as bigint) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as bigint) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToLong(t) (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: bigint) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: bigint) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as bigint) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as bigint) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3404045 +PREHOOK: query: explain +select cast(t as float) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as float) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToFloat(t) (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: float) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: float) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as float) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as float) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3404045.5 +PREHOOK: query: explain +select cast(t as double) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as double) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToDouble(t) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: double) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as double) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as double) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3404045.5044003 +PREHOOK: query: explain +select cast(t as string) from decimal_2 order by t +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(t as string) from decimal_2 order by t +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: UDFToString(t) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(t as string) from decimal_2 order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(t as string) from decimal_2 order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3404045.5044003 +PREHOOK: query: explain +select cast(3.14 as decimal(4,2)) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(3.14 as decimal(4,2)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3.14 AS decimal(4,2)) (type: decimal(4,2)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(4,2)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(4,2)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(3.14 as decimal(4,2)) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(3.14 as decimal(4,2)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3.14 +PREHOOK: query: explain +select cast(cast(3.14 as float) as decimal(4,2)) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(cast(3.14 as float) as decimal(4,2)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3.14 AS decimal(4,2)) (type: decimal(4,2)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(4,2)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(4,2)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(cast(3.14 as float) as decimal(4,2)) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(cast(3.14 as float) as decimal(4,2)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3.14 +PREHOOK: query: explain +select cast(cast('2012-12-19 11:12:19.1234567' as timestamp) as decimal(30,8)) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(cast('2012-12-19 11:12:19.1234567' as timestamp) as decimal(30,8)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 2012-12-19 11:12:19.1234567 AS decimal(30,8)) (type: decimal(30,8)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(30,8)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(30,8)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(cast('2012-12-19 11:12:19.1234567' as timestamp) as decimal(30,8)) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(cast('2012-12-19 11:12:19.1234567' as timestamp) as decimal(30,8)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +1355944339.1234567 +PREHOOK: query: explain +select cast(true as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(true as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( true AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain +select cast(true as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(true as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( true AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(true as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(true as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +1 +PREHOOK: query: explain +select cast(3Y as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(3Y as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3 AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(3Y as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(3Y as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3 +PREHOOK: query: explain +select cast(3S as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(3S as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3 AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(3S as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(3S as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3 +PREHOOK: query: explain +select cast(cast(3 as int) as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(cast(3 as int) as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3 AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(cast(3 as int) as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(cast(3 as int) as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3 +PREHOOK: query: explain +select cast(3L as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(3L as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 3 AS decimal(10,0)) (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(3L as decimal) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(3L as decimal) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +3 +PREHOOK: query: explain +select cast(0.99999999999999999999 as decimal(20,19)) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast(0.99999999999999999999 as decimal(20,19)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( 1.0 AS decimal(20,19)) (type: decimal(20,19)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(20,19)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(20,19)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast(0.99999999999999999999 as decimal(20,19)) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast(0.99999999999999999999 as decimal(20,19)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +1.0 +PREHOOK: query: explain +select cast('0.99999999999999999999' as decimal(20,20)) as c from decimal_2 order by c +PREHOOK: type: QUERY +POSTHOOK: query: explain +select cast('0.99999999999999999999' as decimal(20,20)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_2 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: CAST( '0.99999999999999999999' AS decimal(20,20)) (type: decimal(20,20)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(20,20)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(20,20)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select cast('0.99999999999999999999' as decimal(20,20)) as c from decimal_2 order by c +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +POSTHOOK: query: select cast('0.99999999999999999999' as decimal(20,20)) as c from decimal_2 order by c +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_2 +#### A masked pattern was here #### +0.99999999999999999999 +PREHOOK: query: drop table decimal_2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_2 +PREHOOK: Output: default@decimal_2 +POSTHOOK: query: drop table decimal_2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_2 +POSTHOOK: Output: default@decimal_2 diff --git a/ql/src/test/results/clientpositive/vector_decimal_3.q.out b/ql/src/test/results/clientpositive/vector_decimal_3.q.out new file mode 100644 index 000000000000..e982e1b848e6 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_3.q.out @@ -0,0 +1,374 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_3_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_3_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_3 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_3 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_3_txt(key decimal(38,18), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_3_txt +POSTHOOK: query: CREATE TABLE DECIMAL_3_txt(key decimal(38,18), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_3_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_3_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_3_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_3_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_3_txt +PREHOOK: query: CREATE TABLE DECIMAL_3 STORED AS ORC AS SELECT * FROM DECIMAL_3_txt +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@decimal_3_txt +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_3 +POSTHOOK: query: CREATE TABLE DECIMAL_3 STORED AS ORC AS SELECT * FROM DECIMAL_3_txt +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@decimal_3_txt +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_3 +PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +NULL 0 +-1234567890.1234567890 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-1.12 -1 +-0.333 0 +-0.33 0 +-0.3 0 +0.000000000000000000 0 +0 0 +0 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +1 1 +1.0 1 +1.000000000000000000 1 +1.12 1 +1.122 1 +2 2 +2 2 +3.14 3 +3.14 3 +3.14 3 +3.140 4 +10 10 +20 20 +100 100 +124.00 124 +125.2 125 +200 200 +1234567890.1234567800 1234567890 +PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +1234567890.1234567800 1234567890 +200 200 +125.2 125 +124.00 124 +100 100 +20 20 +10 10 +3.140 4 +3.14 3 +3.14 3 +3.14 3 +2 2 +2 2 +1.122 1 +1.12 1 +1.000000000000000000 1 +1.0 1 +1 1 +0.333 0 +0.33 0 +0.3 0 +0.2 0 +0.1 0 +0.02 0 +0.01 0 +0 0 +0 0 +0.000000000000000000 0 +-0.3 0 +-0.33 0 +-0.333 0 +-1.12 -1 +-1.12 -1 +-1.122 -11 +-1255.49 -1255 +-4400 4400 +-1234567890.1234567890 -1234567890 +NULL 0 +PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +NULL 0 +-1234567890.1234567890 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-1.12 -1 +-0.333 0 +-0.33 0 +-0.3 0 +0.000000000000000000 0 +0 0 +0 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +1 1 +1.0 1 +1.000000000000000000 1 +1.12 1 +1.122 1 +2 2 +2 2 +3.14 3 +3.14 3 +3.14 3 +3.140 4 +10 10 +20 20 +100 100 +124.00 124 +125.2 125 +200 200 +1234567890.1234567800 1234567890 +PREHOOK: query: SELECT DISTINCT key FROM DECIMAL_3 ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT DISTINCT key FROM DECIMAL_3 ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +NULL +-1234567890.1234567890 +-4400 +-1255.49 +-1.122 +-1.12 +-0.333 +-0.33 +-0.3 +0.000000000000000000 +0.01 +0.02 +0.1 +0.2 +0.3 +0.33 +0.333 +1 +1.12 +1.122 +2 +3.14 +10 +20 +100 +124.00 +125.2 +200 +1234567890.1234567800 +PREHOOK: query: SELECT key, sum(value) FROM DECIMAL_3 GROUP BY key ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT key, sum(value) FROM DECIMAL_3 GROUP BY key ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +NULL 0 +-1234567890.1234567890 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -2 +-0.333 0 +-0.33 0 +-0.3 0 +0.000000000000000000 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +1 3 +1.12 1 +1.122 1 +2 4 +3.14 13 +10 10 +20 20 +100 100 +124.00 124 +125.2 125 +200 200 +1234567890.1234567800 1234567890 +PREHOOK: query: SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +-1234567890 -1234567890.1234567890 +-1255 -1255.49 +-11 -1.122 +-1 -2.24 +0 0.330000000000000000 +1 5.242000000000000000 +2 4 +3 9.42 +4 3.140 +10 10 +20 20 +100 100 +124 124.00 +125 125.2 +200 200 +4400 -4400 +1234567890 1234567890.1234567800 +PREHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +-1234567890.1234567890 -1234567890 -1234567890.1234567890 -1234567890 +-4400 4400 -4400 4400 +-1255.49 -1255 -1255.49 -1255 +-1.122 -11 -1.122 -11 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-0.333 0 -0.333 0 +-0.33 0 -0.33 0 +-0.3 0 -0.3 0 +0.000000000000000000 0 0.000000000000000000 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0.01 0 0.01 0 +0.02 0 0.02 0 +0.1 0 0.1 0 +0.2 0 0.2 0 +0.3 0 0.3 0 +0.33 0 0.33 0 +0.333 0 0.333 0 +1 1 1 1 +1.0 1 1.0 1 +1.000000000000000000 1 1.000000000000000000 1 +1.12 1 1.12 1 +1.122 1 1.122 1 +2 2 2 2 +2 2 2 2 +2 2 2 2 +2 2 2 2 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.140 4 3.140 4 +10 10 10 10 +20 20 20 20 +100 100 100 100 +124.00 124 124.00 124 +125.2 125 125.2 125 +200 200 200 200 +1234567890.1234567800 1234567890 1234567890.1234567800 1234567890 +PREHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.14 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.14 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +3.14 3 +3.14 3 +3.14 3 +3.140 4 +PREHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.140 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.140 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +3.14 3 +3.14 3 +3.14 3 +3.140 4 +PREHOOK: query: DROP TABLE DECIMAL_3_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_3_txt +PREHOOK: Output: default@decimal_3_txt +POSTHOOK: query: DROP TABLE DECIMAL_3_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_3_txt +POSTHOOK: Output: default@decimal_3_txt +PREHOOK: query: DROP TABLE DECIMAL_3 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_3 +PREHOOK: Output: default@decimal_3 +POSTHOOK: query: DROP TABLE DECIMAL_3 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_3 +POSTHOOK: Output: default@decimal_3 diff --git a/ql/src/test/results/clientpositive/vector_decimal_4.q.out b/ql/src/test/results/clientpositive/vector_decimal_4.q.out new file mode 100644 index 000000000000..483ae1f279e6 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_4.q.out @@ -0,0 +1,250 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_4_1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_4_1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_4_2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_4_2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_4_1(key decimal(35,25), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_4_1 +POSTHOOK: query: CREATE TABLE DECIMAL_4_1(key decimal(35,25), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_4_1 +PREHOOK: query: CREATE TABLE DECIMAL_4_2(key decimal(35,25), value decimal(35,25)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_4_2 +POSTHOOK: query: CREATE TABLE DECIMAL_4_2(key decimal(35,25), value decimal(35,25)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_4_2 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_4_1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_4_1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_4_1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_4_1 +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_4_2 SELECT key, key * 3 FROM DECIMAL_4_1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_4_1 +PREHOOK: Output: default@decimal_4_2 +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_4_2 SELECT key, key * 3 FROM DECIMAL_4_1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_4_1 +POSTHOOK: Output: default@decimal_4_2 +POSTHOOK: Lineage: decimal_4_2.key SIMPLE [(decimal_4_1)decimal_4_1.FieldSchema(name:key, type:decimal(35,25), comment:null), ] +POSTHOOK: Lineage: decimal_4_2.value EXPRESSION [(decimal_4_1)decimal_4_1.FieldSchema(name:key, type:decimal(35,25), comment:null), ] +PREHOOK: query: SELECT * FROM DECIMAL_4_1 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_4_1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_4_1 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_4_1 +#### A masked pattern was here #### +NULL 0 +-1234567890.1234567890 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-1.12 -1 +-0.333 0 +-0.33 0 +-0.3 0 +0.0000000000000000000000000 0 +0 0 +0 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +0.9999999999999999999999999 1 +1 1 +1.0 1 +1.12 1 +1.122 1 +2 2 +2 2 +3.14 3 +3.14 3 +3.14 3 +3.140 4 +10 10 +20 20 +100 100 +124.00 124 +125.2 125 +200 200 +1234567890.1234567800 1234567890 +PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +NULL NULL +-1234567890.1234567890 -3703703670.3703703670 +-4400 -13200 +-1255.49 -3766.47 +-1.122 -3.366 +-1.12 -3.36 +-1.12 -3.36 +-0.333 -0.999 +-0.33 -0.99 +-0.3 -0.9 +0.0000000000000000000000000 0.0000000000000000000000000 +0 0 +0 0 +0.01 0.03 +0.02 0.06 +0.1 0.3 +0.2 0.6 +0.3 0.9 +0.33 0.99 +0.333 0.999 +0.9999999999999999999999999 2.9999999999999999999999997 +1 3 +1.0 3.0 +1.12 3.36 +1.122 3.366 +2 6 +2 6 +3.14 9.42 +3.14 9.42 +3.14 9.42 +3.140 9.420 +10 30 +20 60 +100 300 +124.00 372.00 +125.2 375.6 +200 600 +1234567890.1234567800 3703703670.3703703400 +PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +NULL NULL +-1234567890.1234567890 -3703703670.3703703670 +-4400 -13200 +-1255.49 -3766.47 +-1.122 -3.366 +-1.12 -3.36 +-1.12 -3.36 +-0.333 -0.999 +-0.33 -0.99 +-0.3 -0.9 +0.0000000000000000000000000 0.0000000000000000000000000 +0 0 +0 0 +0.01 0.03 +0.02 0.06 +0.1 0.3 +0.2 0.6 +0.3 0.9 +0.33 0.99 +0.333 0.999 +0.9999999999999999999999999 2.9999999999999999999999997 +1 3 +1.0 3.0 +1.12 3.36 +1.122 3.366 +2 6 +2 6 +3.14 9.42 +3.14 9.42 +3.14 9.42 +3.140 9.420 +10 30 +20 60 +100 300 +124.00 372.00 +125.2 375.6 +200 600 +1234567890.1234567800 3703703670.3703703400 +PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_4_2 +#### A masked pattern was here #### +NULL NULL +-1234567890.1234567890 -3703703670.3703703670 +-4400 -13200 +-1255.49 -3766.47 +-1.122 -3.366 +-1.12 -3.36 +-1.12 -3.36 +-0.333 -0.999 +-0.33 -0.99 +-0.3 -0.9 +0.0000000000000000000000000 0.0000000000000000000000000 +0 0 +0 0 +0.01 0.03 +0.02 0.06 +0.1 0.3 +0.2 0.6 +0.3 0.9 +0.33 0.99 +0.333 0.999 +0.9999999999999999999999999 2.9999999999999999999999997 +1 3 +1.0 3.0 +1.12 3.36 +1.122 3.366 +2 6 +2 6 +3.14 9.42 +3.14 9.42 +3.14 9.42 +3.140 9.420 +10 30 +20 60 +100 300 +124.00 372.00 +125.2 375.6 +200 600 +1234567890.1234567800 3703703670.3703703400 +PREHOOK: query: DROP TABLE DECIMAL_4_1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_4_1 +PREHOOK: Output: default@decimal_4_1 +POSTHOOK: query: DROP TABLE DECIMAL_4_1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_4_1 +POSTHOOK: Output: default@decimal_4_1 +PREHOOK: query: DROP TABLE DECIMAL_4_2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_4_2 +PREHOOK: Output: default@decimal_4_2 +POSTHOOK: query: DROP TABLE DECIMAL_4_2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_4_2 +POSTHOOK: Output: default@decimal_4_2 diff --git a/ql/src/test/results/clientpositive/vector_decimal_5.q.out b/ql/src/test/results/clientpositive/vector_decimal_5.q.out new file mode 100644 index 000000000000..01b5f42b44c3 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_5.q.out @@ -0,0 +1,239 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_5_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_5_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_5 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_5 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_5_txt(key decimal(10,5), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_5_txt +POSTHOOK: query: CREATE TABLE DECIMAL_5_txt(key decimal(10,5), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_5_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_5_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_5_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_5_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_5_txt +PREHOOK: query: CREATE TABLE DECIMAL_5(key decimal(10,5), value int) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_5 +POSTHOOK: query: CREATE TABLE DECIMAL_5(key decimal(10,5), value int) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_5 +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_5 SELECT * FROM DECIMAL_5_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_5_txt +PREHOOK: Output: default@decimal_5 +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_5 SELECT * FROM DECIMAL_5_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_5_txt +POSTHOOK: Output: default@decimal_5 +POSTHOOK: Lineage: decimal_5.key SIMPLE [(decimal_5_txt)decimal_5_txt.FieldSchema(name:key, type:decimal(10,5), comment:null), ] +POSTHOOK: Lineage: decimal_5.value SIMPLE [(decimal_5_txt)decimal_5_txt.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: SELECT key FROM DECIMAL_5 ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +POSTHOOK: query: SELECT key FROM DECIMAL_5 ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +NULL +NULL +NULL +-4400 +-1255.49 +-1.122 +-1.12 +-1.12 +-0.333 +-0.33 +-0.3 +0.00000 +0 +0 +0.01 +0.02 +0.1 +0.2 +0.3 +0.33 +0.333 +1 +1.0 +1.00000 +1.12 +1.122 +2 +2 +3.14 +3.14 +3.14 +3.140 +10 +20 +100 +124.00 +125.2 +200 +PREHOOK: query: SELECT DISTINCT key FROM DECIMAL_5 ORDER BY key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +POSTHOOK: query: SELECT DISTINCT key FROM DECIMAL_5 ORDER BY key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +NULL +-4400 +-1255.49 +-1.122 +-1.12 +-0.333 +-0.33 +-0.3 +0.00000 +0.01 +0.02 +0.1 +0.2 +0.3 +0.33 +0.333 +1 +1.12 +1.122 +2 +3.14 +10 +20 +100 +124.00 +125.2 +200 +PREHOOK: query: SELECT cast(key as decimal) FROM DECIMAL_5 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +POSTHOOK: query: SELECT cast(key as decimal) FROM DECIMAL_5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +-4400 +NULL +0 +0 +100 +10 +1 +0 +0 +200 +20 +2 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +2 +3 +-1 +-1 +-1 +1 +1 +124 +125 +-1255 +3 +3 +3 +1 +NULL +NULL +PREHOOK: query: SELECT cast(key as decimal(6,3)) FROM DECIMAL_5 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +POSTHOOK: query: SELECT cast(key as decimal(6,3)) FROM DECIMAL_5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_5 +#### A masked pattern was here #### +NULL +NULL +0.000 +0 +100 +10 +1 +0.1 +0.01 +200 +20 +2 +0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +1.0 +2 +3.14 +-1.12 +-1.12 +-1.122 +1.12 +1.122 +124.00 +125.2 +NULL +3.14 +3.14 +3.140 +1.000 +NULL +NULL +PREHOOK: query: DROP TABLE DECIMAL_5_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_5_txt +PREHOOK: Output: default@decimal_5_txt +POSTHOOK: query: DROP TABLE DECIMAL_5_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_5_txt +POSTHOOK: Output: default@decimal_5_txt +PREHOOK: query: DROP TABLE DECIMAL_5 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_5 +PREHOOK: Output: default@decimal_5 +POSTHOOK: query: DROP TABLE DECIMAL_5 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_5 +POSTHOOK: Output: default@decimal_5 diff --git a/ql/src/test/results/clientpositive/vector_decimal_6.q.out b/ql/src/test/results/clientpositive/vector_decimal_6.q.out new file mode 100644 index 000000000000..7ecd50056a2e --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_6.q.out @@ -0,0 +1,303 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_1_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_1_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_2_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_2_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_3_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_3_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_3 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_6_3 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_6_1_txt(key decimal(10,5), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_6_1_txt +POSTHOOK: query: CREATE TABLE DECIMAL_6_1_txt(key decimal(10,5), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_6_1_txt +PREHOOK: query: CREATE TABLE DECIMAL_6_2_txt(key decimal(17,4), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_6_2_txt +POSTHOOK: query: CREATE TABLE DECIMAL_6_2_txt(key decimal(17,4), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_6_2_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv9.txt' INTO TABLE DECIMAL_6_1_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_6_1_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv9.txt' INTO TABLE DECIMAL_6_1_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_6_1_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv9.txt' INTO TABLE DECIMAL_6_2_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_6_2_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv9.txt' INTO TABLE DECIMAL_6_2_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_6_2_txt +PREHOOK: query: CREATE TABLE DECIMAL_6_1(key decimal(10,5), value int) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_6_1 +POSTHOOK: query: CREATE TABLE DECIMAL_6_1(key decimal(10,5), value int) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_6_1 +PREHOOK: query: CREATE TABLE DECIMAL_6_2(key decimal(17,4), value int) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_6_2 +POSTHOOK: query: CREATE TABLE DECIMAL_6_2(key decimal(17,4), value int) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_6_2 +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_6_1 SELECT * FROM DECIMAL_6_1_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_1_txt +PREHOOK: Output: default@decimal_6_1 +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_6_1 SELECT * FROM DECIMAL_6_1_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_1_txt +POSTHOOK: Output: default@decimal_6_1 +POSTHOOK: Lineage: decimal_6_1.key SIMPLE [(decimal_6_1_txt)decimal_6_1_txt.FieldSchema(name:key, type:decimal(10,5), comment:null), ] +POSTHOOK: Lineage: decimal_6_1.value SIMPLE [(decimal_6_1_txt)decimal_6_1_txt.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_6_2 SELECT * FROM DECIMAL_6_2_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_2_txt +PREHOOK: Output: default@decimal_6_2 +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_6_2 SELECT * FROM DECIMAL_6_2_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_2_txt +POSTHOOK: Output: default@decimal_6_2 +POSTHOOK: Lineage: decimal_6_2.key SIMPLE [(decimal_6_2_txt)decimal_6_2_txt.FieldSchema(name:key, type:decimal(17,4), comment:null), ] +POSTHOOK: Lineage: decimal_6_2.value SIMPLE [(decimal_6_2_txt)decimal_6_2_txt.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: SELECT * FROM DECIMAL_6_1 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_6_1 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_1 +#### A masked pattern was here #### +NULL -1234567890 +NULL 0 +NULL 3 +NULL 4 +NULL 1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-0.333 0 +-0.3 0 +0.00000 0 +0 0 +0.333 0 +1.0 1 +1.00000 1 +1.12 1 +1.122 1 +2 2 +3.14 3 +3.14 3 +3.140 4 +10 10 +10.73433 5 +124.00 124 +125.2 125 +23232.23435 2 +PREHOOK: query: SELECT * FROM DECIMAL_6_2 ORDER BY key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_6_2 ORDER BY key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_2 +#### A masked pattern was here #### +NULL 0 +-1234567890.1235 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-0.333 0 +-0.3 0 +0.0000 0 +0 0 +0.333 0 +1.0 1 +1.0000 1 +1.12 1 +1.122 1 +2 2 +3.14 3 +3.14 3 +3.140 4 +10 10 +10.7343 5 +124.00 124 +125.2 125 +23232.2344 2 +2389432.2375 3 +2389432.2375 4 +1234567890.1235 1234567890 +PREHOOK: query: SELECT T.key from ( + SELECT key, value from DECIMAL_6_1 + UNION ALL + SELECT key, value from DECIMAL_6_2 +) T order by T.key +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_1 +PREHOOK: Input: default@decimal_6_2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT T.key from ( + SELECT key, value from DECIMAL_6_1 + UNION ALL + SELECT key, value from DECIMAL_6_2 +) T order by T.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_1 +POSTHOOK: Input: default@decimal_6_2 +#### A masked pattern was here #### +NULL +NULL +NULL +NULL +NULL +NULL +-1234567890.1235 +-4400 +-4400 +-1255.49 +-1255.49 +-1.122 +-1.122 +-1.12 +-1.12 +-0.333 +-0.333 +-0.3 +-0.3 +0.00000 +0.0000 +0 +0 +0.333 +0.333 +1.0 +1.0 +1.0000 +1.00000 +1.12 +1.12 +1.122 +1.122 +2 +2 +3.14 +3.14 +3.14 +3.14 +3.140 +3.140 +10 +10 +10.7343 +10.73433 +124.00 +124.00 +125.2 +125.2 +23232.23435 +23232.2344 +2389432.2375 +2389432.2375 +1234567890.1235 +PREHOOK: query: CREATE TABLE DECIMAL_6_3 STORED AS ORC AS SELECT key + 5.5 AS k, value * 11 AS v from DECIMAL_6_1 ORDER BY v +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@decimal_6_1 +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_6_3 +POSTHOOK: query: CREATE TABLE DECIMAL_6_3 STORED AS ORC AS SELECT key + 5.5 AS k, value * 11 AS v from DECIMAL_6_1 ORDER BY v +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@decimal_6_1 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_6_3 +PREHOOK: query: desc DECIMAL_6_3 +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@decimal_6_3 +POSTHOOK: query: desc DECIMAL_6_3 +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@decimal_6_3 +k double +v int +PREHOOK: query: SELECT * FROM DECIMAL_6_3 ORDER BY k, v +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_6_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_6_3 ORDER BY k, v +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_6_3 +#### A masked pattern was here #### +NULL -695344902 +NULL 0 +NULL 33 +NULL 44 +NULL 695344902 +-4394.5 48400 +-1249.99 -13805 +4.378 -121 +4.38 -11 +5.167 0 +5.2 0 +5.5 0 +5.5 0 +5.833 0 +6.5 11 +6.5 11 +6.62 11 +6.622 11 +7.5 22 +8.64 33 +8.64 33 +8.64 44 +15.5 110 +16.23433 55 +129.5 1364 +130.7 1375 +23237.73435 22 diff --git a/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out b/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out index c26fc9d29707..7f2cd53144cd 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out @@ -106,14 +106,14 @@ POSTHOOK: query: SELECT cint, POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_vgby #### A masked pattern was here #### -NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 3072 11160.71538461538500 -5147.90769230769300 6010604.30769230735360 --3728 6 5831542.2692483780 -3367.6517567568 5817556.0411483778 6 6984454.21109769200000 -4033.445769230769 6967702.86724384584710 --563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 2 -617.56077692307690 -4033.445769230769 -4651.00654615384590 -762 2 5831542.2692483780 1531.2194054054 5833073.4886537834 2 6984454.21109769200000 1833.9456923076925 6986288.15678999969250 -6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 3 6984454.211097692 -617.56077692307690 6983219.08954384584620 -253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 1024 11697.96923076923100 -11712.99230769231000 -416182.64030769233089 -528534767 1024 5831542.2692483780 -9777.1594594595 11646372.8607481068 1024 6984454.21109769200000 -11710.13076923077100 13948892.79980307629003 -626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 1024 11645.74615384615400 -11712.27692307692300 12625.04759999997746 +NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 3072 11160.715384615385 -5147.907692307693 6010604.3076923073536 +-3728 6 5831542.269248378 -3367.6517567568 5817556.0411483778 6 6984454.211097692 -4033.445769230769 6967702.8672438458471 +-563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 +762 2 5831542.269248378 1531.2194054054 5833073.4886537834 2 6984454.211097692 1833.9456923076925 6986288.1567899996925 +6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 +253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 1024 11697.969230769231 -11712.99230769231 -416182.64030769233089 +528534767 1024 5831542.269248378 -9777.1594594595 11646372.8607481068 1024 6984454.211097692 -11710.130769230771 13948892.79980307629003 +626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 1024 11645.746153846154 -11712.276923076923 12625.04759999997746 PREHOOK: query: -- Now add the others... EXPLAIN SELECT cint, COUNT(cdecimal1), MAX(cdecimal1), MIN(cdecimal1), SUM(cdecimal1), AVG(cdecimal1), STDDEV_POP(cdecimal1), STDDEV_SAMP(cdecimal1), @@ -204,11 +204,11 @@ POSTHOOK: query: SELECT cint, POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_vgby #### A masked pattern was here #### -NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 1633.60810810806667 5695.483082135364 5696.4103077145055 3072 11160.71538461538500 -5147.90769230769300 6010604.30769230735360 1956.576923076922966667 6821.495748565159 6822.606289190924 --3728 6 5831542.2692483780 -3367.6517567568 5817556.0411483778 969592.67352472963333 2174330.2092403853 2381859.406131774 6 6984454.21109769200000 -4033.445769230769 6967702.86724384584710 1161283.811207307641183333 2604201.2704476737 2852759.5602156054 --563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 -1941.6364148649 1426.0153418918999 2016.6902366556308 2 -617.56077692307690 -4033.445769230769 -4651.00654615384590 -2325.50327307692295 1707.9424961538462 2415.395441814127 -762 2 5831542.2692483780 1531.2194054054 5833073.4886537834 2916536.7443268917 2915005.5249214866 4122440.3477364695 2 6984454.21109769200000 1833.9456923076925 6986288.15678999969250 3493144.07839499984625 3491310.1327026924 4937458.140118758 -6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 1943503.67570081066667 2749258.455012492 3367140.1929065133 3 6984454.211097692 -617.56077692307690 6983219.08954384584620 2327739.696514615282066667 3292794.4113115156 4032833.0678006653 -253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 -339.33992366976309 5708.9563478862 5711.745967572779 1024 11697.96923076923100 -11712.99230769231000 -416182.64030769233089 -406.428359675480791885 6837.632716002934 6840.973851172274 -528534767 1024 5831542.2692483780 -9777.1594594595 11646372.8607481068 11373.41099682432305 257528.92988206653 257654.7686043977 1024 6984454.21109769200000 -11710.13076923077100 13948892.79980307629003 13621.965624807691689482 308443.1074570801 308593.82484083984 -626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 10.29399661106318 5742.09145323734 5744.897264034267 1024 11645.74615384615400 -11712.27692307692300 12625.04759999997746 12.329148046874977988 6877.318722794877 6880.679250101603 +NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 1633.60810810806667 5695.483082135364 5696.4103077145055 3072 11160.715384615385 -5147.907692307693 6010604.3076923073536 1956.576923076922966667 6821.495748565159 6822.606289190924 +-3728 6 5831542.269248378 -3367.6517567568 5817556.0411483778 969592.67352472963333 2174330.2092403853 2381859.406131774 6 6984454.211097692 -4033.445769230769 6967702.8672438458471 1161283.811207307641183333 2604201.2704476737 2852759.5602156054 +-563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 -1941.6364148649 1426.0153418918999 2016.6902366556308 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 -2325.50327307692295 1707.9424961538462 2415.395441814127 +762 2 5831542.269248378 1531.2194054054 5833073.4886537834 2916536.7443268917 2915005.5249214866 4122440.3477364695 2 6984454.211097692 1833.9456923076925 6986288.1567899996925 3493144.07839499984625 3491310.1327026924 4937458.140118758 +6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 1943503.67570081066667 2749258.455012492 3367140.1929065133 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 2327739.696514615282066667 3292794.4113115156 4032833.0678006653 +253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 -339.33992366976309 5708.9563478862 5711.745967572779 1024 11697.969230769231 -11712.99230769231 -416182.64030769233089 -406.428359675480791885 6837.632716002934 6840.973851172274 +528534767 1024 5831542.269248378 -9777.1594594595 11646372.8607481068 11373.41099682432305 257528.92988206653 257654.7686043977 1024 6984454.211097692 -11710.130769230771 13948892.79980307629003 13621.965624807691689482 308443.1074570801 308593.82484083984 +626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 10.29399661106318 5742.09145323734 5744.897264034267 1024 11645.746153846154 -11712.276923076923 12625.04759999997746 12.329148046874977988 6877.318722794877 6880.679250101603 diff --git a/ql/src/test/results/clientpositive/vector_decimal_cast.q.out b/ql/src/test/results/clientpositive/vector_decimal_cast.q.out index 83ea4ccefcb4..d4890466d499 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_cast.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_cast.q.out @@ -46,13 +46,13 @@ POSTHOOK: query: SELECT cdouble, cint, cboolean1, ctimestamp1, CAST(cdouble AS D POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### --13326.0 528534767 true 1969-12-31 15:59:46.674 -13326.0000000000 528534767.00000000000000 1.00 -13 --15813.0 528534767 true 1969-12-31 15:59:55.787 -15813.0000000000 528534767.00000000000000 1.00 -4 --9566.0 528534767 true 1969-12-31 15:59:44.187 -9566.0000000000 528534767.00000000000000 1.00 -16 -15007.0 528534767 true 1969-12-31 15:59:50.434 15007.0000000000 528534767.00000000000000 1.00 -10 -7021.0 528534767 true 1969-12-31 16:00:15.007 7021.0000000000 528534767.00000000000000 1.00 15 -4963.0 528534767 true 1969-12-31 16:00:07.021 4963.0000000000 528534767.00000000000000 1.00 7 --7824.0 528534767 true 1969-12-31 16:00:04.963 -7824.0000000000 528534767.00000000000000 1.00 5 --15431.0 528534767 true 1969-12-31 15:59:52.176 -15431.0000000000 528534767.00000000000000 1.00 -8 --15549.0 528534767 true 1969-12-31 15:59:44.569 -15549.0000000000 528534767.00000000000000 1.00 -15 -5780.0 528534767 true 1969-12-31 15:59:44.451 5780.0000000000 528534767.00000000000000 1.00 -16 +-13326.0 528534767 true 1969-12-31 15:59:46.674 -13326.0 528534767 1 -13 +-15813.0 528534767 true 1969-12-31 15:59:55.787 -15813.0 528534767 1 -4 +-9566.0 528534767 true 1969-12-31 15:59:44.187 -9566.0 528534767 1 -16 +15007.0 528534767 true 1969-12-31 15:59:50.434 15007.0 528534767 1 -10 +7021.0 528534767 true 1969-12-31 16:00:15.007 7021.0 528534767 1 15 +4963.0 528534767 true 1969-12-31 16:00:07.021 4963.0 528534767 1 7 +-7824.0 528534767 true 1969-12-31 16:00:04.963 -7824.0 528534767 1 5 +-15431.0 528534767 true 1969-12-31 15:59:52.176 -15431.0 528534767 1 -8 +-15549.0 528534767 true 1969-12-31 15:59:44.569 -15549.0 528534767 1 -15 +5780.0 528534767 true 1969-12-31 15:59:44.451 5780.0 528534767 1 -16 diff --git a/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out b/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out index ca94561451d7..2c15b9abb9b3 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out @@ -56,13 +56,13 @@ POSTHOOK: query: SELECT cdecimal1 + cdecimal2, cdecimal1 - (2*cdecimal2), ((cdec POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_test #### A masked pattern was here #### -19699.41746361742300 -12507.91330561334600 0.8351496686995997 2.8303425077026896E7 3.6405405405 8963 10735 -17 8963 true 10735.776923076923 8963.641 10735.776923076923 1969-12-31 18:29:23.64054054 -9216.33970893968500 -5851.80644490647000 0.8353975893550668 6195112.1797296945 3.6243243243 4193 5022 -98 4193 true 5022.715384615385 4193.6245 5022.715384615385 1969-12-31 17:09:53.624324324 -6514.84033264034640 -4136.52120582119280 0.8355907765708067 3095563.9418919063 4.3864864865 2964 3550 -34 2964 true 3550.4538461538464 2964.3865 3550.4538461538464 1969-12-31 16:49:24.386486486 -7587.30145530147700 -4817.46777546775400 0.8354976172734904 4198623.24324327 2.3783783784 3452 4134 38 3452 true 4134.923076923077 3452.3784 4134.923076923077 1969-12-31 16:57:32.378378378 -19197.97297297300000 -12189.52702702700000 0.835155361813429 2.6880848817567654E7 5.4729729730 8735 10462 -34 8735 true 10462.5 8735.473 10462.5 1969-12-31 18:25:35.472972973 -17098.99459459460000 -10856.80540540540000 0.8351828165813104 2.132423090270272E7 0.3945945946 7780 9318 102 7780 true 9318.6 7780.3945 9318.6 1969-12-31 18:09:40.394594594 -12433.72307692307700 -7894.64615384615400 0.8352770361086894 1.12754688E7 7.6000000000 5657 6776 120 5657 true 6776.123076923077 5657.6 6776.123076923077 1969-12-31 17:34:17.6 -7247.31683991686200 -4601.59854469852400 0.8355241651897876 3830775.6932432684 7.6783783784 3297 3949 109 3297 true 3949.638461538462 3297.6785 3949.638461538462 1969-12-31 16:54:57.678378378 -14757.17006237004650 -9369.89147609149300 0.8352226654922171 1.5883214124324286E7 4.8162162162 6714 8042 106 6714 true 8042.3538461538465 6714.8164 8042.3538461538465 1969-12-31 17:51:54.816216216 -10964.83201663199300 -6961.99106029108600 0.8353232978714221 8768719.779729689 9.2243243243 4989 5975 87 4989 true 5975.607692307693 4989.224 5975.607692307693 1969-12-31 17:23:09.224324324 +19699.417463617423 -12507.913305613346 0.8351496686995997 2.8303425077026896E7 3.6405405405 8963 10735 -17 8963 true 10735.776923076923 8963.641 10735.776923076923 1969-12-31 18:29:23.64054054 +9216.339708939685 -5851.806444906470 0.8353975893550668 6195112.1797296945 3.6243243243 4193 5022 -98 4193 true 5022.715384615385 4193.6245 5022.715384615385 1969-12-31 17:09:53.624324324 +6514.8403326403464 -4136.5212058211928 0.8355907765708067 3095563.9418919063 4.3864864865 2964 3550 -34 2964 true 3550.4538461538464 2964.3865 3550.4538461538464 1969-12-31 16:49:24.386486486 +7587.301455301477 -4817.467775467754 0.8354976172734904 4198623.24324327 2.3783783784 3452 4134 38 3452 true 4134.923076923077 3452.3784 4134.923076923077 1969-12-31 16:57:32.378378378 +19197.9729729730 -12189.5270270270 0.835155361813429 2.6880848817567654E7 5.4729729730 8735 10462 -34 8735 true 10462.5 8735.473 10462.5 1969-12-31 18:25:35.472972973 +17098.9945945946 -10856.8054054054 0.8351828165813104 2.132423090270272E7 0.3945945946 7780 9318 102 7780 true 9318.6 7780.3945 9318.6 1969-12-31 18:09:40.394594594 +12433.723076923077 -7894.646153846154 0.8352770361086894 1.12754688E7 7.6 5657 6776 120 5657 true 6776.123076923077 5657.6 6776.123076923077 1969-12-31 17:34:17.6 +7247.316839916862 -4601.598544698524 0.8355241651897876 3830775.6932432684 7.6783783784 3297 3949 109 3297 true 3949.638461538462 3297.6785 3949.638461538462 1969-12-31 16:54:57.678378378 +14757.1700623700465 -9369.8914760914930 0.8352226654922171 1.5883214124324286E7 4.8162162162 6714 8042 106 6714 true 8042.3538461538465 6714.8164 8042.3538461538465 1969-12-31 17:51:54.816216216 +10964.832016631993 -6961.991060291086 0.8353232978714221 8768719.779729689 9.2243243243 4989 5975 87 4989 true 5975.607692307693 4989.224 5975.607692307693 1969-12-31 17:23:09.224324324 diff --git a/ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out b/ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out index 2cfa45a9a19c..24765afe1baf 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out @@ -195,14 +195,14 @@ and sin(cdecimal1) >= -1.0 POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_test #### A masked pattern was here #### --119.4594594595 -119.46 -119 -120 -119 1.316485E-52 NULL NULL NULL NULL NULL NULL NULL NULL 119.459459459500000000 -0.07885666683797002 NaN 0.9968859644388647 NaN -1.5624254815943668 -6844.522849943508 -2.0849608902209606 -119.4594594595 119.4594594595 -1 NULL -9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.435135135100000000 0.4540668481851705 NaN 0.8909676185918236 NaN 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 -9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.435135135100000000 0.4540668481851705 NaN 0.8909676185918236 NaN 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 -9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.435135135100000000 0.4540668481851705 NaN 0.8909676185918236 NaN 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.151351351400000000 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.151351351400000000 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.151351351400000000 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.151351351400000000 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.151351351400000000 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.151351351400000000 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.151351351400000000 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-119.4594594595 -119.46 -119 -120 -119 1.316485E-52 NULL NULL NULL NULL NULL NULL NULL NULL 119.4594594595 -0.07885666683797002 NaN 0.9968859644388647 NaN -1.5624254815943668 -6844.522849943508 -2.0849608902209606 -119.4594594595 119.4594594595 -1 NULL +9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NaN 0.8909676185918236 NaN 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 +9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NaN 0.8909676185918236 NaN 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 +9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NaN 0.8909676185918236 NaN 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NaN 0.899312607223313 NaN -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL diff --git a/ql/src/test/results/clientpositive/vector_decimal_precision.q.out b/ql/src/test/results/clientpositive/vector_decimal_precision.q.out new file mode 100644 index 000000000000..87898644dfb8 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_precision.q.out @@ -0,0 +1,669 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_PRECISION +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_PRECISION_txt(dec decimal(20,10)) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_PRECISION_txt +POSTHOOK: query: CREATE TABLE DECIMAL_PRECISION_txt(dec decimal(20,10)) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_PRECISION_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv8.txt' INTO TABLE DECIMAL_PRECISION_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_precision_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv8.txt' INTO TABLE DECIMAL_PRECISION_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_precision_txt +PREHOOK: query: CREATE TABLE DECIMAL_PRECISION(dec decimal(20,10)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_PRECISION +POSTHOOK: query: CREATE TABLE DECIMAL_PRECISION(dec decimal(20,10)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_PRECISION +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_PRECISION SELECT * FROM DECIMAL_PRECISION_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision_txt +PREHOOK: Output: default@decimal_precision +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_PRECISION SELECT * FROM DECIMAL_PRECISION_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision_txt +POSTHOOK: Output: default@decimal_precision +POSTHOOK: Lineage: decimal_precision.dec SIMPLE [(decimal_precision_txt)decimal_precision_txt.FieldSchema(name:dec, type:decimal(20,10), comment:null), ] +PREHOOK: query: SELECT * FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +0.0000000000 +0.0000000000 +0.0000000000 +0.0000000000 +0 +0.1234567890 +0.1234567890 +1.2345678901 +1.2345678901 +1.2345678901 +12.3456789012 +12.3456789012 +12.3456789012 +123.4567890123 +123.4567890123 +123.4567890123 +1234.5678901235 +1234.5678901235 +1234.5678901235 +12345.6789012346 +12345.6789012346 +123456.7890123456 +123456.7890123457 +1234567.890123456 +1234567.8901234568 +12345678.90123456 +12345678.9012345679 +123456789.0123456 +123456789.0123456789 +1234567890.123456 +1234567890.1234567890 +PREHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +0.0000000000 1.0000000000 -1.0000000000 +0.0000000000 1.0000000000 -1.0000000000 +0.0000000000 1.0000000000 -1.0000000000 +0.0000000000 1.0000000000 -1.0000000000 +0 1 -1 +0.1234567890 1.1234567890 -0.8765432110 +0.1234567890 1.1234567890 -0.8765432110 +1.2345678901 2.2345678901 0.2345678901 +1.2345678901 2.2345678901 0.2345678901 +1.2345678901 2.2345678901 0.2345678901 +12.3456789012 13.3456789012 11.3456789012 +12.3456789012 13.3456789012 11.3456789012 +12.3456789012 13.3456789012 11.3456789012 +123.4567890123 124.4567890123 122.4567890123 +123.4567890123 124.4567890123 122.4567890123 +123.4567890123 124.4567890123 122.4567890123 +1234.5678901235 1235.5678901235 1233.5678901235 +1234.5678901235 1235.5678901235 1233.5678901235 +1234.5678901235 1235.5678901235 1233.5678901235 +12345.6789012346 12346.6789012346 12344.6789012346 +12345.6789012346 12346.6789012346 12344.6789012346 +123456.7890123456 123457.7890123456 123455.7890123456 +123456.7890123457 123457.7890123457 123455.7890123457 +1234567.890123456 1234568.890123456 1234566.890123456 +1234567.8901234568 1234568.8901234568 1234566.8901234568 +12345678.90123456 12345679.90123456 12345677.90123456 +12345678.9012345679 12345679.9012345679 12345677.9012345679 +123456789.0123456 123456790.0123456 123456788.0123456 +123456789.0123456789 123456790.0123456789 123456788.0123456789 +1234567890.123456 1234567891.123456 1234567889.123456 +1234567890.1234567890 1234567891.1234567890 1234567889.1234567890 +PREHOOK: query: SELECT dec, dec * 2, dec / 3 FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec, dec * 2, dec / 3 FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +0.0000000000 0.0000000000 0 +0.0000000000 0.0000000000 0 +0.0000000000 0.0000000000 0 +0.0000000000 0.0000000000 0 +0 0 0 +0.1234567890 0.2469135780 0.041152263 +0.1234567890 0.2469135780 0.041152263 +1.2345678901 2.4691357802 0.411522630033 +1.2345678901 2.4691357802 0.411522630033 +1.2345678901 2.4691357802 0.411522630033 +12.3456789012 24.6913578024 4.1152263004 +12.3456789012 24.6913578024 4.1152263004 +12.3456789012 24.6913578024 4.1152263004 +123.4567890123 246.9135780246 41.1522630041 +123.4567890123 246.9135780246 41.1522630041 +123.4567890123 246.9135780246 41.1522630041 +1234.5678901235 2469.1357802470 411.522630041167 +1234.5678901235 2469.1357802470 411.522630041167 +1234.5678901235 2469.1357802470 411.522630041167 +12345.6789012346 24691.3578024692 4115.226300411533 +12345.6789012346 24691.3578024692 4115.226300411533 +123456.7890123456 246913.5780246912 41152.2630041152 +123456.7890123457 246913.5780246914 41152.263004115233 +1234567.890123456 2469135.780246912 411522.630041152 +1234567.8901234568 2469135.7802469136 411522.630041152267 +12345678.90123456 24691357.80246912 4115226.30041152 +12345678.9012345679 24691357.8024691358 4115226.300411522633 +123456789.0123456 246913578.0246912 41152263.0041152 +123456789.0123456789 246913578.0246913578 41152263.0041152263 +1234567890.123456 2469135780.246912 411522630.041152 +1234567890.1234567890 2469135780.2469135780 411522630.041152263 +PREHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +0.0000000000 0 +0.0000000000 0 +0.0000000000 0 +0.0000000000 0 +0 0 +0.1234567890 0.013717421 +0.1234567890 0.013717421 +1.2345678901 0.137174210011 +1.2345678901 0.137174210011 +1.2345678901 0.137174210011 +12.3456789012 1.371742100133 +12.3456789012 1.371742100133 +12.3456789012 1.371742100133 +123.4567890123 13.717421001367 +123.4567890123 13.717421001367 +123.4567890123 13.717421001367 +1234.5678901235 137.174210013722 +1234.5678901235 137.174210013722 +1234.5678901235 137.174210013722 +12345.6789012346 1371.742100137178 +12345.6789012346 1371.742100137178 +123456.7890123456 13717.421001371733 +123456.7890123457 13717.421001371744 +1234567.890123456 137174.210013717333 +1234567.8901234568 137174.210013717422 +12345678.90123456 1371742.100137173333 +12345678.9012345679 1371742.100137174211 +123456789.0123456 13717421.001371733333 +123456789.0123456789 13717421.0013717421 +1234567890.123456 137174210.013717333333 +1234567890.1234567890 137174210.013717421 +PREHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +0.0000000000 0 +0.0000000000 0 +0.0000000000 0 +0.0000000000 0 +0 0 +0.1234567890 0.0045724736667 +0.1234567890 0.0045724736667 +1.2345678901 0.0457247366704 +1.2345678901 0.0457247366704 +1.2345678901 0.0457247366704 +12.3456789012 0.4572473667111 +12.3456789012 0.4572473667111 +12.3456789012 0.4572473667111 +123.4567890123 4.5724736671222 +123.4567890123 4.5724736671222 +123.4567890123 4.5724736671222 +1234.5678901235 45.7247366712407 +1234.5678901235 45.7247366712407 +1234.5678901235 45.7247366712407 +12345.6789012346 457.2473667123926 +12345.6789012346 457.2473667123926 +123456.7890123456 4572.4736671239111 +123456.7890123457 4572.4736671239148 +1234567.890123456 45724.7366712391111 +1234567.8901234568 45724.7366712391407 +12345678.90123456 457247.3667123911111 +12345678.9012345679 457247.3667123914037 +123456789.0123456 4572473.6671239111111 +123456789.0123456789 4572473.6671239140333 +1234567890.123456 45724736.6712391111111 +1234567890.1234567890 45724736.6712391403333 +PREHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +0.0000000000 0.00000000000000000000 +0.0000000000 0.00000000000000000000 +0.0000000000 0.00000000000000000000 +0.0000000000 0.00000000000000000000 +0 0 +0.1234567890 0.01524157875019052100 +0.1234567890 0.01524157875019052100 +1.2345678901 1.52415787526596567801 +1.2345678901 1.52415787526596567801 +1.2345678901 1.52415787526596567801 +12.3456789012 152.41578753153483936144 +12.3456789012 152.41578753153483936144 +12.3456789012 152.41578753153483936144 +123.4567890123 15241.57875322755800955129 +123.4567890123 15241.57875322755800955129 +123.4567890123 15241.57875322755800955129 +1234.5678901235 1524157.87532399036884525225 +1234.5678901235 1524157.87532399036884525225 +1234.5678901235 1524157.87532399036884525225 +12345.6789012346 152415787.53238916034140423716 +12345.6789012346 152415787.53238916034140423716 +123456.7890123456 15241578753.23881726870921383936 +123456.7890123457 15241578753.23884196006701630849 +1234567.890123456 1524157875323.881726870921383936 +1234567.8901234568 1524157875323.88370217954558146624 +12345678.90123456 152415787532388.1726870921383936 +12345678.9012345679 152415787532388.36774881877789971041 +123456789.0123456 15241578753238817.26870921383936 +123456789.0123456789 15241578753238836.75019051998750190521 +1234567890.123456 NULL +1234567890.1234567890 NULL +PREHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_precision + Statistics: Num rows: 75 Data size: 3472 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(20,10)) + outputColumnNames: dec + Statistics: Num rows: 75 Data size: 3472 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: avg(dec), sum(dec) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: struct), _col1 (type: decimal(30,10)) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: avg(VALUE._col0), sum(VALUE._col1) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(24,14)), _col1 (type: decimal(30,10)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +88499534.57586576220645 2743485571.8518386284 +PREHOOK: query: SELECT dec * cast('12345678901234567890.12345678' as decimal(38,18)) FROM DECIMAL_PRECISION LIMIT 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec * cast('12345678901234567890.12345678' as decimal(38,18)) FROM DECIMAL_PRECISION LIMIT 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL +PREHOOK: query: SELECT * from DECIMAL_PRECISION WHERE dec > cast('1234567890123456789012345678.12345678' as decimal(38,18)) LIMIT 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT * from DECIMAL_PRECISION WHERE dec > cast('1234567890123456789012345678.12345678' as decimal(38,18)) LIMIT 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +PREHOOK: query: SELECT dec * 12345678901234567890.12345678 FROM DECIMAL_PRECISION LIMIT 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT dec * 12345678901234567890.12345678 FROM DECIMAL_PRECISION LIMIT 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +NULL +PREHOOK: query: SELECT MIN(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT MIN(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +12345678901234567890.12345678 +PREHOOK: query: SELECT COUNT(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(cast('12345678901234567890.12345678' as decimal(38,18))) FROM DECIMAL_PRECISION +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_precision +#### A masked pattern was here #### +75 +PREHOOK: query: DROP TABLE DECIMAL_PRECISION_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_precision_txt +PREHOOK: Output: default@decimal_precision_txt +POSTHOOK: query: DROP TABLE DECIMAL_PRECISION_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_precision_txt +POSTHOOK: Output: default@decimal_precision_txt +PREHOOK: query: DROP TABLE DECIMAL_PRECISION +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_precision +PREHOOK: Output: default@decimal_precision +POSTHOOK: query: DROP TABLE DECIMAL_PRECISION +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_precision +POSTHOOK: Output: default@decimal_precision diff --git a/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out b/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out new file mode 100644 index 000000000000..cb0b5a27396a --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out @@ -0,0 +1,121 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_TRAILING_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_TRAILING_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_TRAILING +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_TRAILING +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_TRAILING_txt ( + id int, + a decimal(10,4), + b decimal(15,8) + ) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ',' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_TRAILING_txt +POSTHOOK: query: CREATE TABLE DECIMAL_TRAILING_txt ( + id int, + a decimal(10,4), + b decimal(15,8) + ) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ',' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_TRAILING_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv10.txt' INTO TABLE DECIMAL_TRAILING_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_trailing_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv10.txt' INTO TABLE DECIMAL_TRAILING_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_trailing_txt +PREHOOK: query: CREATE TABLE DECIMAL_TRAILING ( + id int, + a decimal(10,4), + b decimal(15,8) + ) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_TRAILING +POSTHOOK: query: CREATE TABLE DECIMAL_TRAILING ( + id int, + a decimal(10,4), + b decimal(15,8) + ) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_TRAILING +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_TRAILING SELECT * FROM DECIMAL_TRAILING_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_trailing_txt +PREHOOK: Output: default@decimal_trailing +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_TRAILING SELECT * FROM DECIMAL_TRAILING_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_trailing_txt +POSTHOOK: Output: default@decimal_trailing +POSTHOOK: Lineage: decimal_trailing.a SIMPLE [(decimal_trailing_txt)decimal_trailing_txt.FieldSchema(name:a, type:decimal(10,4), comment:null), ] +POSTHOOK: Lineage: decimal_trailing.b SIMPLE [(decimal_trailing_txt)decimal_trailing_txt.FieldSchema(name:b, type:decimal(15,8), comment:null), ] +POSTHOOK: Lineage: decimal_trailing.id SIMPLE [(decimal_trailing_txt)decimal_trailing_txt.FieldSchema(name:id, type:int, comment:null), ] +PREHOOK: query: SELECT * FROM DECIMAL_TRAILING ORDER BY id +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_trailing +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_TRAILING ORDER BY id +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_trailing +#### A masked pattern was here #### +0 0 0 +1 0 0 +2 NULL NULL +3 1.0000 1.00000000 +4 10.0000 10.00000000 +5 100.0000 100.00000000 +6 1000.0000 1000.00000000 +7 10000.0000 10000.00000000 +8 100000.0000 100000.00000000 +9 NULL 1000000.00000000 +10 NULL NULL +11 NULL NULL +12 NULL NULL +13 NULL NULL +14 NULL NULL +15 NULL NULL +16 NULL NULL +17 NULL NULL +18 1.0000 1.00000000 +19 10.000 10.0000000 +20 100.00 100.000000 +21 1000.0 1000.00000 +22 100000 10000.0000 +23 0.0000 0.00000000 +24 0.000 0.0000000 +25 0.00 0.000000 +26 0.0 0.00000 +27 0 0.00000 +28 12313.2000 134134.31252500 +29 99999.9990 134134.31242553 +PREHOOK: query: DROP TABLE DECIMAL_TRAILING_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_trailing_txt +PREHOOK: Output: default@decimal_trailing_txt +POSTHOOK: query: DROP TABLE DECIMAL_TRAILING_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_trailing_txt +POSTHOOK: Output: default@decimal_trailing_txt +PREHOOK: query: DROP TABLE DECIMAL_TRAILING +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_trailing +PREHOOK: Output: default@decimal_trailing +POSTHOOK: query: DROP TABLE DECIMAL_TRAILING +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_trailing +POSTHOOK: Output: default@decimal_trailing diff --git a/ql/src/test/results/clientpositive/vector_decimal_udf.q.out b/ql/src/test/results/clientpositive/vector_decimal_udf.q.out new file mode 100644 index 000000000000..24a87c58cb7d --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_udf.q.out @@ -0,0 +1,2657 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_UDF_txt (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_UDF_txt +POSTHOOK: query: CREATE TABLE DECIMAL_UDF_txt (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_UDF_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_udf_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_udf_txt +PREHOOK: query: CREATE TABLE DECIMAL_UDF (key decimal(20,10), value int) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_UDF +POSTHOOK: query: CREATE TABLE DECIMAL_UDF (key decimal(20,10), value int) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_UDF +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_UDF SELECT * FROM DECIMAL_UDF_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf_txt +PREHOOK: Output: default@decimal_udf +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_UDF SELECT * FROM DECIMAL_UDF_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf_txt +POSTHOOK: Output: default@decimal_udf +POSTHOOK: Lineage: decimal_udf.key SIMPLE [(decimal_udf_txt)decimal_udf_txt.FieldSchema(name:key, type:decimal(20,10), comment:null), ] +POSTHOOK: Lineage: decimal_udf.value SIMPLE [(decimal_udf_txt)decimal_udf_txt.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: -- addition +EXPLAIN SELECT key + key FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- addition +EXPLAIN SELECT key + key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key + key) (type: decimal(21,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key + key FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key + key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-8800 +NULL +0.0000000000 +0 +200 +20 +2 +0.2 +0.02 +400 +40 +4 +0 +0.4 +0.04 +0.6 +0.66 +0.666 +-0.6 +-0.66 +-0.666 +2.0 +4 +6.28 +-2.24 +-2.24 +-2.244 +2.24 +2.244 +248.00 +250.4 +-2510.98 +6.28 +6.28 +6.280 +2.0000000000 +-2469135780.2469135780 +2469135780.2469135600 +PREHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key + value) (type: decimal(21,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key + value FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key + value FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +0 +NULL +0.0000000000 +0 +200 +20 +2 +0.1 +0.01 +400 +40 +4 +0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +2.0 +4 +6.14 +-2.12 +-2.12 +-12.122 +2.12 +2.122 +248.00 +250.2 +-2510.49 +6.14 +6.14 +7.140 +2.0000000000 +-2469135780.1234567890 +2469135780.1234567800 +PREHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key + (value / 2)) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key + (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key + (value/2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-2200.0 +NULL +0.0 +0.0 +150.0 +15.0 +1.5 +0.1 +0.01 +300.0 +30.0 +3.0 +0.0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +1.5 +3.0 +4.640000000000001 +-1.62 +-1.62 +-6.622 +1.62 +1.622 +186.0 +187.7 +-1882.99 +4.640000000000001 +4.640000000000001 +5.140000000000001 +1.5 +-1.8518518351234567E9 +1.8518518351234567E9 +PREHOOK: query: EXPLAIN SELECT key + '1.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key + '1.0' FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key + '1.0') (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key + '1.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key + '1.0' FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4399.0 +NULL +1.0 +1.0 +101.0 +11.0 +2.0 +1.1 +1.01 +201.0 +21.0 +3.0 +1.0 +1.2 +1.02 +1.3 +1.33 +1.333 +0.7 +0.6699999999999999 +0.667 +2.0 +3.0 +4.140000000000001 +-0.1200000000000001 +-0.1200000000000001 +-0.12200000000000011 +2.12 +2.122 +125.0 +126.2 +-1254.49 +4.140000000000001 +4.140000000000001 +4.140000000000001 +2.0 +-1.2345678891234567E9 +1.2345678911234567E9 +PREHOOK: query: -- substraction +EXPLAIN SELECT key - key FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- substraction +EXPLAIN SELECT key - key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key - key) (type: decimal(21,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key - key FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key - key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +0 +NULL +0.0000000000 +0 +0 +0 +0 +0.0 +0.00 +0 +0 +0 +0 +0.0 +0.00 +0.0 +0.00 +0.000 +0.0 +0.00 +0.000 +0.0 +0 +0.00 +0.00 +0.00 +0.000 +0.00 +0.000 +0.00 +0.0 +0.00 +0.00 +0.00 +0.000 +0.0000000000 +0.0000000000 +0.0000000000 +PREHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key - value) (type: decimal(21,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key - value FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key - value FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-8800 +NULL +0.0000000000 +0 +0 +0 +0 +0.1 +0.01 +0 +0 +0 +0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +0.0 +0 +0.14 +-0.12 +-0.12 +9.878 +0.12 +0.122 +0.00 +0.2 +-0.49 +0.14 +0.14 +-0.860 +0.0000000000 +-0.1234567890 +0.1234567800 +PREHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key - (value / 2)) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key - (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key - (value/2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-6600.0 +NULL +0.0 +0.0 +50.0 +5.0 +0.5 +0.1 +0.01 +100.0 +10.0 +1.0 +0.0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +0.5 +1.0 +1.6400000000000001 +-0.6200000000000001 +-0.6200000000000001 +4.378 +0.6200000000000001 +0.6220000000000001 +62.0 +62.7 +-627.99 +1.6400000000000001 +1.6400000000000001 +1.1400000000000001 +0.5 +-6.172839451234567E8 +6.172839451234567E8 +PREHOOK: query: EXPLAIN SELECT key - '1.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key - '1.0' FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key - '1.0') (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key - '1.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key - '1.0' FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4401.0 +NULL +-1.0 +-1.0 +99.0 +9.0 +0.0 +-0.9 +-0.99 +199.0 +19.0 +1.0 +-1.0 +-0.8 +-0.98 +-0.7 +-0.6699999999999999 +-0.667 +-1.3 +-1.33 +-1.333 +0.0 +1.0 +2.14 +-2.12 +-2.12 +-2.122 +0.1200000000000001 +0.12200000000000011 +123.0 +124.2 +-1256.49 +2.14 +2.14 +2.14 +0.0 +-1.2345678911234567E9 +1.2345678891234567E9 +PREHOOK: query: -- multiplication +EXPLAIN SELECT key * key FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- multiplication +EXPLAIN SELECT key * key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key * key) (type: decimal(38,20)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key * key FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key * key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +19360000 +NULL +0.00000000000000000000 +0 +10000 +100 +1 +0.01 +0.0001 +40000 +400 +4 +0 +0.04 +0.0004 +0.09 +0.1089 +0.110889 +0.09 +0.1089 +0.110889 +1.00 +4 +9.8596 +1.2544 +1.2544 +1.258884 +1.2544 +1.258884 +15376.0000 +15675.04 +1576255.1401 +9.8596 +9.8596 +9.859600 +1.00000000000000000000 +NULL +NULL +PREHOOK: query: EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key * value) > 0) (type: boolean) + Statistics: Num rows: 12 Data size: 1356 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)), value (type: int) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 12 Data size: 1356 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 12 Data size: 1356 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key, value FROM DECIMAL_UDF where key * value > 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key, value FROM DECIMAL_UDF where key * value > 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +100 100 +10 10 +1 1 +200 200 +20 20 +2 2 +1.0 1 +2 2 +3.14 3 +-1.12 -1 +-1.12 -1 +-1.122 -11 +1.12 1 +1.122 1 +124.00 124 +125.2 125 +-1255.49 -1255 +3.14 3 +3.14 3 +3.140 4 +1.0000000000 1 +-1234567890.1234567890 -1234567890 +1234567890.1234567800 1234567890 +PREHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key * value) (type: decimal(31,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key * value FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key * value FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-19360000 +NULL +0.0000000000 +0 +10000 +100 +1 +0.0 +0.00 +40000 +400 +4 +0 +0.0 +0.00 +0.0 +0.00 +0.000 +0.0 +0.00 +0.000 +1.0 +4 +9.42 +1.12 +1.12 +12.342 +1.12 +1.122 +15376.00 +15650.0 +1575639.95 +9.42 +9.42 +12.560 +1.0000000000 +1524157875171467887.5019052100 +1524157875171467876.3907942000 +PREHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key * (value / 2)) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key * (value/2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key * (value/2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-9680000.0 +NULL +0.0 +0.0 +5000.0 +50.0 +0.5 +0.0 +0.0 +20000.0 +200.0 +2.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +-0.0 +-0.0 +-0.0 +0.5 +2.0 +4.71 +0.56 +0.56 +6.171 +0.56 +0.561 +7688.0 +7825.0 +787819.975 +4.71 +4.71 +6.28 +0.5 +7.6207893758573389E17 +7.6207893758573389E17 +PREHOOK: query: EXPLAIN SELECT key * '2.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key * '2.0' FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key * '2.0') (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key * '2.0' FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key * '2.0' FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-8800.0 +NULL +0.0 +0.0 +200.0 +20.0 +2.0 +0.2 +0.02 +400.0 +40.0 +4.0 +0.0 +0.4 +0.04 +0.6 +0.66 +0.666 +-0.6 +-0.66 +-0.666 +2.0 +4.0 +6.28 +-2.24 +-2.24 +-2.244 +2.24 +2.244 +248.0 +250.4 +-2510.98 +6.28 +6.28 +6.28 +2.0 +-2.4691357802469134E9 +2.4691357802469134E9 +PREHOOK: query: -- division +EXPLAIN SELECT key / 0 FROM DECIMAL_UDF limit 1 +PREHOOK: type: QUERY +POSTHOOK: query: -- division +EXPLAIN SELECT key / 0 FROM DECIMAL_UDF limit 1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key / 0) (type: decimal(22,12)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 113 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 113 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key / 0 FROM DECIMAL_UDF limit 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key / 0 FROM DECIMAL_UDF limit 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +NULL +PREHOOK: query: EXPLAIN SELECT key / NULL FROM DECIMAL_UDF limit 1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key / NULL FROM DECIMAL_UDF limit 1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key / null) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 113 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 113 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key / NULL FROM DECIMAL_UDF limit 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key / NULL FROM DECIMAL_UDF limit 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +NULL +PREHOOK: query: EXPLAIN SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key <> 0) (type: boolean) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key / key) (type: decimal(38,24)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +PREHOOK: query: EXPLAIN SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value <> 0) (type: boolean) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key / value) (type: decimal(31,21)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-1 +1 +1 +1 +1 +1 +1 +1 +1 +1.046666666666666666667 +1.12 +1.12 +0.102 +1.12 +1.122 +1 +1.0016 +1.000390438247011952191 +1.046666666666666666667 +1.046666666666666666667 +0.785 +1 +1.0000000001 +1.000000000099999992710 +PREHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value <> 0) (type: boolean) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (key / (value / 2)) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-2.0 +2.0 +2.0 +2.0 +2.0 +2.0 +2.0 +2.0 +2.0 +2.0933333333333333 +2.24 +2.24 +0.20400000000000001 +2.24 +2.244 +2.0 +2.0032 +2.000780876494024 +2.0933333333333333 +2.0933333333333333 +1.57 +2.0 +2.0000000002 +2.0000000002 +PREHOOK: query: EXPLAIN SELECT 1 + (key / '2.0') FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN SELECT 1 + (key / '2.0') FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (1 + (key / '2.0')) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT 1 + (key / '2.0') FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT 1 + (key / '2.0') FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-2199.0 +NULL +1.0 +1.0 +51.0 +6.0 +1.5 +1.05 +1.005 +101.0 +11.0 +2.0 +1.0 +1.1 +1.01 +1.15 +1.165 +1.1665 +0.85 +0.835 +0.8335 +1.5 +2.0 +2.5700000000000003 +0.43999999999999995 +0.43999999999999995 +0.43899999999999995 +1.56 +1.561 +63.0 +63.6 +-626.745 +2.5700000000000003 +2.5700000000000003 +2.5700000000000003 +1.5 +-6.172839440617284E8 +6.172839460617284E8 +PREHOOK: query: -- abs +EXPLAIN SELECT abs(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- abs +EXPLAIN SELECT abs(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: abs(key) (type: decimal(38,18)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT abs(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT abs(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +4400 +NULL +0.0000000000 +0 +100 +10 +1 +0.1 +0.01 +200 +20 +2 +0 +0.2 +0.02 +0.3 +0.33 +0.333 +0.3 +0.33 +0.333 +1.0 +2 +3.14 +1.12 +1.12 +1.122 +1.12 +1.122 +124.00 +125.2 +1255.49 +3.14 +3.14 +3.140 +1.0000000000 +1234567890.1234567890 +1234567890.1234567800 +PREHOOK: query: -- avg +EXPLAIN SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value +PREHOOK: type: QUERY +POSTHOOK: query: -- avg +EXPLAIN SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int), key (type: decimal(20,10)) + outputColumnNames: value, key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(key), count(key), avg(key) + keys: value (type: int) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(30,10)), _col2 (type: bigint), _col3 (type: struct) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0), count(VALUE._col1), avg(VALUE._col2) + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), (_col1 / _col2) (type: decimal(38,23)), _col3 (type: decimal(24,14)), _col1 (type: decimal(30,10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(38,23)), _col2 (type: decimal(24,14)), _col3 (type: decimal(30,10)) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: decimal(38,23)), VALUE._col1 (type: decimal(24,14)), VALUE._col2 (type: decimal(30,10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-1234567890 -1234567890.123456789 -1234567890.123456789 -1234567890.1234567890 +-1255 -1255.49 -1255.49 -1255.49 +-11 -1.122 -1.122 -1.122 +-1 -1.12 -1.12 -2.24 +0 0.02538461538461538461538 0.02538461538462 0.3300000000 +1 1.0484 1.0484 5.2420000000 +2 2 2 4 +3 3.14 3.14 9.42 +4 3.14 3.14 3.140 +10 10 10 10 +20 20 20 20 +100 100 100 100 +124 124 124 124.00 +125 125.2 125.2 125.2 +200 200 200 200 +4400 -4400 -4400 -4400 +1234567890 1234567890.12345678 1234567890.12345678 1234567890.1234567800 +PREHOOK: query: -- negative +EXPLAIN SELECT -key FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- negative +EXPLAIN SELECT -key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (- key) (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT -key FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT -key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +4400 +NULL +0.0000000000 +0 +-100 +-10 +-1 +-0.1 +-0.01 +-200 +-20 +-2 +0 +-0.2 +-0.02 +-0.3 +-0.33 +-0.333 +0.3 +0.33 +0.333 +-1.0 +-2 +-3.14 +1.12 +1.12 +1.122 +-1.12 +-1.122 +-124.00 +-125.2 +1255.49 +-3.14 +-3.14 +-3.140 +-1.0000000000 +1234567890.1234567890 +-1234567890.1234567800 +PREHOOK: query: -- positive +EXPLAIN SELECT +key FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- positive +EXPLAIN SELECT +key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + ListSink + +PREHOOK: query: SELECT +key FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT +key FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4400 +NULL +0.0000000000 +0 +100 +10 +1 +0.1 +0.01 +200 +20 +2 +0 +0.2 +0.02 +0.3 +0.33 +0.333 +-0.3 +-0.33 +-0.333 +1.0 +2 +3.14 +-1.12 +-1.12 +-1.122 +1.12 +1.122 +124.00 +125.2 +-1255.49 +3.14 +3.14 +3.140 +1.0000000000 +-1234567890.1234567890 +1234567890.1234567800 +PREHOOK: query: -- ceiling +EXPlAIN SELECT CEIL(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- ceiling +EXPlAIN SELECT CEIL(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ceil(key) (type: decimal(11,0)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT CEIL(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT CEIL(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4400 +NULL +0 +0 +100 +10 +1 +1 +1 +200 +20 +2 +0 +1 +1 +1 +1 +1 +0 +0 +0 +1 +2 +4 +-1 +-1 +-1 +2 +2 +124 +126 +-1255 +4 +4 +4 +1 +-1234567890 +1234567891 +PREHOOK: query: -- floor +EXPLAIN SELECT FLOOR(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- floor +EXPLAIN SELECT FLOOR(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: floor(key) (type: decimal(11,0)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT FLOOR(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT FLOOR(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4400 +NULL +0 +0 +100 +10 +1 +0 +0 +200 +20 +2 +0 +0 +0 +0 +0 +0 +-1 +-1 +-1 +1 +2 +3 +-2 +-2 +-2 +1 +1 +124 +125 +-1256 +3 +3 +3 +1 +-1234567891 +1234567890 +PREHOOK: query: -- round +EXPLAIN SELECT ROUND(key, 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- round +EXPLAIN SELECT ROUND(key, 2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: round(key, 2) (type: decimal(13,2)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT ROUND(key, 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT ROUND(key, 2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-4400.00 +NULL +0.00 +0.00 +100.00 +10.00 +1.00 +0.10 +0.01 +200.00 +20.00 +2.00 +0.00 +0.20 +0.02 +0.30 +0.33 +0.33 +-0.30 +-0.33 +-0.33 +1.00 +2.00 +3.14 +-1.12 +-1.12 +-1.12 +1.12 +1.12 +124.00 +125.20 +-1255.49 +3.14 +3.14 +3.14 +1.00 +-1234567890.12 +1234567890.12 +PREHOOK: query: -- power +EXPLAIN SELECT POWER(key, 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- power +EXPLAIN SELECT POWER(key, 2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: power(key, 2) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT POWER(key, 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT POWER(key, 2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +1.936E7 +NULL +0.0 +0.0 +10000.0 +100.0 +1.0 +0.010000000000000002 +1.0E-4 +40000.0 +400.0 +4.0 +0.0 +0.04000000000000001 +4.0E-4 +0.09 +0.10890000000000001 +0.11088900000000002 +0.09 +0.10890000000000001 +0.11088900000000002 +1.0 +4.0 +9.8596 +1.2544000000000002 +1.2544000000000002 +1.2588840000000003 +1.2544000000000002 +1.2588840000000003 +15376.0 +15675.04 +1576255.1401 +9.8596 +9.8596 +9.8596 +1.0 +1.52415787532388352E18 +1.52415787532388352E18 +PREHOOK: query: -- modulo +EXPLAIN SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- modulo +EXPLAIN SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ((key + 1) % (key / 2)) (type: decimal(22,12)) + outputColumnNames: _col0 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-2199 +NULL +NULL +NULL +1 +1 +0.0 +0.00 +0.000 +1 +1 +0 +NULL +0.0 +0.00 +0.10 +0.010 +0.0010 +0.10 +0.010 +0.0010 +0.0 +0 +1.00 +-0.12 +-0.12 +-0.122 +0.44 +0.439 +1.00 +1.0 +-626.745 +1.00 +1.00 +1.000 +0.0000000000 +-617283944.0617283945 +1.0000000000 +PREHOOK: query: -- stddev, var +EXPLAIN SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value +PREHOOK: type: QUERY +POSTHOOK: query: -- stddev, var +EXPLAIN SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int), key (type: decimal(20,10)) + outputColumnNames: value, key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: stddev(key), variance(key) + keys: value (type: int) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: struct), _col2 (type: struct) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: stddev(VALUE._col0), variance(VALUE._col1) + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: double), _col2 (type: double) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-1234567890 0.0 0.0 +-1255 0.0 0.0 +-11 0.0 0.0 +-1 0.0 0.0 +0 0.22561046704494161 0.050900082840236685 +1 0.05928102563215321 0.0035142400000000066 +2 0.0 0.0 +3 0.0 0.0 +4 0.0 0.0 +10 0.0 0.0 +20 0.0 0.0 +100 0.0 0.0 +124 0.0 0.0 +125 0.0 0.0 +200 0.0 0.0 +4400 0.0 0.0 +1234567890 0.0 0.0 +PREHOOK: query: -- stddev_samp, var_samp +EXPLAIN SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value +PREHOOK: type: QUERY +POSTHOOK: query: -- stddev_samp, var_samp +EXPLAIN SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int), key (type: decimal(20,10)) + outputColumnNames: value, key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: stddev_samp(key), var_samp(key) + keys: value (type: int) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: struct), _col2 (type: struct) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: stddev_samp(VALUE._col0), var_samp(VALUE._col1) + keys: KEY._col0 (type: int) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: double), _col2 (type: double) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-1234567890 0.0 0.0 +-1255 0.0 0.0 +-11 0.0 0.0 +-1 0.0 0.0 +0 0.2348228191855647 0.055141756410256405 +1 0.06627820154470102 0.004392800000000008 +2 0.0 0.0 +3 0.0 0.0 +4 0.0 0.0 +10 0.0 0.0 +20 0.0 0.0 +100 0.0 0.0 +124 0.0 0.0 +125 0.0 0.0 +200 0.0 0.0 +4400 0.0 0.0 +1234567890 0.0 0.0 +PREHOOK: query: -- histogram +EXPLAIN SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- histogram +EXPLAIN SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)) + outputColumnNames: key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: histogram_numeric(key, 3) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + value expressions: _col0 (type: array) + Reduce Operator Tree: + Group By Operator + aggregations: histogram_numeric(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Select Operator + expressions: _col0 (type: array>) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +[{"x":-1.2345678901234567E9,"y":1.0},{"x":-144.50057142857142,"y":35.0},{"x":1.2345678901234567E9,"y":1.0}] +PREHOOK: query: -- min +EXPLAIN SELECT MIN(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- min +EXPLAIN SELECT MIN(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)) + outputColumnNames: key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: min(key) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(20,10)) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: min(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT MIN(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT MIN(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +-1234567890.1234567890 +PREHOOK: query: -- max +EXPLAIN SELECT MAX(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- max +EXPLAIN SELECT MAX(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)) + outputColumnNames: key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: max(key) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(20,10)) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(20,10)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT MAX(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT MAX(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +1234567890.1234567800 +PREHOOK: query: -- count +EXPLAIN SELECT COUNT(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +POSTHOOK: query: -- count +EXPLAIN SELECT COUNT(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: decimal(20,10)) + outputColumnNames: key + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(key) + 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: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT COUNT(key) FROM DECIMAL_UDF +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(key) FROM DECIMAL_UDF +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf +#### A masked pattern was here #### +37 +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_udf_txt +PREHOOK: Output: default@decimal_udf_txt +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_udf_txt +POSTHOOK: Output: default@decimal_udf_txt +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_udf +PREHOOK: Output: default@decimal_udf +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_udf +POSTHOOK: Output: default@decimal_udf diff --git a/ql/src/test/results/clientpositive/vector_decimal_udf2.q.out b/ql/src/test/results/clientpositive/vector_decimal_udf2.q.out new file mode 100644 index 000000000000..049576171220 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_udf2.q.out @@ -0,0 +1,181 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_UDF2_txt (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_UDF2_txt +POSTHOOK: query: CREATE TABLE DECIMAL_UDF2_txt (key decimal(20,10), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_UDF2_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_udf2_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_udf2_txt +PREHOOK: query: CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_UDF2 +POSTHOOK: query: CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_UDF2 +PREHOOK: query: INSERT OVERWRITE TABLE DECIMAL_UDF2 SELECT * FROM DECIMAL_UDF2_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf2_txt +PREHOOK: Output: default@decimal_udf2 +POSTHOOK: query: INSERT OVERWRITE TABLE DECIMAL_UDF2 SELECT * FROM DECIMAL_UDF2_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf2_txt +POSTHOOK: Output: default@decimal_udf2 +POSTHOOK: Lineage: decimal_udf2.key SIMPLE [(decimal_udf2_txt)decimal_udf2_txt.FieldSchema(name:key, type:decimal(20,10), comment:null), ] +POSTHOOK: Lineage: decimal_udf2.value SIMPLE [(decimal_udf2_txt)decimal_udf2_txt.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: EXPLAIN +SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf2 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key = 10) (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: acos(key) (type: double), asin(key) (type: double), atan(key) (type: double), cos(key) (type: double), sin(key) (type: double), tan(key) (type: double), radians(key) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key) +FROM DECIMAL_UDF2 WHERE key = 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +NaN NaN 1.4711276743037347 -0.8390715290764524 -0.5440211108893698 0.6483608274590866 0.17453292519943295 +PREHOOK: query: EXPLAIN +SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_udf2 + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key = 10) (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: exp(key) (type: double), ln(key) (type: double), log(key) (type: double), log(key, key) (type: double), log(key, value) (type: double), log(value, key) (type: double), log10(key) (type: double), sqrt(key) (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT + exp(key), ln(key), + log(key), log(key, key), log(key, value), log(value, key), + log10(key), sqrt(key) +FROM DECIMAL_UDF2 WHERE key = 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_udf2 +#### A masked pattern was here #### +22026.465794806718 2.302585092994046 2.302585092994046 1.0 1.0 1.0 1.0 3.1622776601683795 +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_udf2_txt +PREHOOK: Output: default@decimal_udf2_txt +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_udf2_txt +POSTHOOK: Output: default@decimal_udf2_txt +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_udf2 +PREHOOK: Output: default@decimal_udf2 +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_udf2 +POSTHOOK: Output: default@decimal_udf2 diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java b/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java index ad84c7097dcd..6ab64e56c37f 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/io/HiveDecimalWritable.java @@ -62,6 +62,10 @@ public void set(HiveDecimal value) { set(value.unscaledValue().toByteArray(), value.scale()); } + public void set(HiveDecimal value, int maxPrecision, int maxScale) { + set(HiveDecimal.enforcePrecisionScale(value, maxPrecision, maxScale)); + } + public void set(HiveDecimalWritable writable) { set(writable.getHiveDecimal()); } From c4ae90de9a8dd66c3c20f1851a693f08a20c8014 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Sat, 1 Nov 2014 21:23:22 +0000 Subject: [PATCH 232/339] HIVE-8656 : CBO: auto_join_filters fails (Julian Hyde via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636061 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/optimizer/optiq/translator/TypeConverter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/TypeConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/TypeConverter.java index 2c30e9dd1d7d..68f3be7948df 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/TypeConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/TypeConverter.java @@ -187,7 +187,7 @@ public static RelDataType convert(PrimitiveTypeInfo type, RelDataTypeFactory dtF throw new RuntimeException("Unsupported Type : " + type.getTypeName()); } - return convertedType; + return dtFactory.createTypeWithNullability(convertedType, true); } public static RelDataType convert(ListTypeInfo lstType, From 64114e2cb0611e07cc2be326b229b8d9b7a5b087 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sun, 2 Nov 2014 05:20:15 +0000 Subject: [PATCH 233/339] HIVE-7576: Add PartitionSpec support in HCatClient API (Mithun Radhakrishnan, reviewed by Sushanth Sowmyan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636085 13f79535-47bb-0310-9956-ffa450edef68 --- .../hcatalog/messaging/MessageFactory.java | 13 ++ .../messaging/json/JSONMessageFactory.java | 23 +++ .../apache/hive/hcatalog/api/HCatClient.java | 56 +++++++ .../hive/hcatalog/api/HCatClientHMSImpl.java | 89 +++++++++- .../hive/hcatalog/api/HCatPartitionSpec.java | 158 ++++++++++++++++++ .../hcatalog/api/MetadataJSONSerializer.java | 41 +++++ .../hive/hcatalog/api/MetadataSerializer.java | 24 +++ .../hive/hcatalog/api/TestHCatClient.java | 137 ++++++++++++++- 8 files changed, 538 insertions(+), 3 deletions(-) create mode 100644 hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatPartitionSpec.java diff --git a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java index 5961388cd87a..2dbcbe543419 100644 --- a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java +++ b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java @@ -19,10 +19,13 @@ package org.apache.hive.hcatalog.messaging; +import org.apache.hadoop.hive.common.classification.InterfaceAudience; +import org.apache.hadoop.hive.common.classification.InterfaceStability; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.Partition; import org.apache.hadoop.hive.metastore.api.Table; +import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy; import org.apache.hadoop.util.ReflectionUtils; import org.apache.hive.hcatalog.messaging.json.JSONMessageFactory; @@ -130,6 +133,16 @@ public static MessageDeserializer getDeserializer(String format, */ public abstract AddPartitionMessage buildAddPartitionMessage(Table table, List partitions); + /** + * Factory method for AddPartitionMessage. + * @param table The Table to which the partitions are added. + * @param partitionSpec The set of Partitions being added. + * @return AddPartitionMessage instance. + */ + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public abstract AddPartitionMessage buildAddPartitionMessage(Table table, PartitionSpecProxy partitionSpec); + /** * Factory method for DropPartitionMessage. * @param table The Table from which the partition is dropped. diff --git a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java index 052a7ec281b7..8a95890f160c 100644 --- a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java +++ b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java @@ -19,9 +19,12 @@ package org.apache.hive.hcatalog.messaging.json; +import org.apache.hadoop.hive.common.classification.InterfaceAudience; +import org.apache.hadoop.hive.common.classification.InterfaceStability; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.Partition; import org.apache.hadoop.hive.metastore.api.Table; +import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy; import org.apache.hive.hcatalog.messaging.AddPartitionMessage; import org.apache.hive.hcatalog.messaging.CreateDatabaseMessage; import org.apache.hive.hcatalog.messaging.CreateTableMessage; @@ -86,6 +89,14 @@ public AddPartitionMessage buildAddPartitionMessage(Table table, List table.getTableName(), getPartitionKeyValues(table, partitions), System.currentTimeMillis()/1000); } + @Override + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public AddPartitionMessage buildAddPartitionMessage(Table table, PartitionSpecProxy partitionSpec) { + return new JSONAddPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(), + table.getTableName(), getPartitionKeyValues(table, partitionSpec), System.currentTimeMillis()/1000); + } + @Override public DropPartitionMessage buildDropPartitionMessage(Table table, Partition partition) { return new JSONDropPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, partition.getDbName(), @@ -107,4 +118,16 @@ private static List> getPartitionKeyValues(Table table, List partitionList.add(getPartitionKeyValues(table, partition)); return partitionList; } + + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + private static List> getPartitionKeyValues(Table table, PartitionSpecProxy partitionSpec) { + List> partitionList = new ArrayList>(); + PartitionSpecProxy.PartitionIterator iterator = partitionSpec.getPartitionIterator(); + while (iterator.hasNext()) { + Partition partition = iterator.next(); + partitionList.add(getPartitionKeyValues(table, partition)); + } + return partitionList; + } } diff --git a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatClient.java b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatClient.java index ccad819a8475..4dee79bd07df 100644 --- a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatClient.java +++ b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatClient.java @@ -22,6 +22,8 @@ import java.util.Map; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.common.classification.InterfaceAudience; +import org.apache.hadoop.hive.common.classification.InterfaceStability; import org.apache.hadoop.hive.metastore.api.PartitionEventType; import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hive.hcatalog.common.HCatException; @@ -212,6 +214,26 @@ public abstract void updateTableSchema(String dbName, String tableName, HCatTabl */ public abstract List deserializePartitions(List hcatPartitionStringReps) throws HCatException; + /** + * Serializer for HCatPartitionSpec. + * @param partitionSpec HCatPartitionSpec to be serialized. + * @return A list of Strings, representing the HCatPartitionSpec as a whole. + * @throws HCatException On failure to serialize. + */ + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public abstract List serializePartitionSpec(HCatPartitionSpec partitionSpec) throws HCatException; + + /** + * Deserializer for HCatPartitionSpec. + * @param hcatPartitionSpecStrings List of strings, representing the HCatPartitionSpec as a whole. + * @return HCatPartitionSpec, reconstructed from the list of strings. + * @throws HCatException On failure to deserialize. + */ + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public abstract HCatPartitionSpec deserializePartitionSpec(List hcatPartitionSpecStrings) throws HCatException; + /** * Creates the table like an existing table. * @@ -279,6 +301,21 @@ public abstract List getPartitions(String dbName, String tblName) public abstract List getPartitions(String dbName, String tblName, Map partitionSpec) throws HCatException; + /** + * Gets partitions in terms of generic HCatPartitionSpec instances. + */ + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public abstract HCatPartitionSpec getPartitionSpecs(String dbName, String tableName, int maxPartitions) throws HCatException; + + /** + * Gets partitions in terms of generic HCatPartitionSpec instances. + */ + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public abstract HCatPartitionSpec getPartitionSpecs(String dbName, String tableName, Map partitionSelector, int maxPartitions) + throws HCatException; + /** * Gets the partition. * @@ -311,6 +348,17 @@ public abstract void addPartition(HCatAddPartitionDesc partInfo) public abstract int addPartitions(List partInfoList) throws HCatException; + /** + * Adds partitions using HCatPartitionSpec. + * @param partitionSpec The HCatPartitionSpec representing the set of partitions added. + * @return The number of partitions added. + * @throws HCatException On failure to add partitions. + */ + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public abstract int addPartitionSpec(HCatPartitionSpec partitionSpec) + throws HCatException; + /** * Drops partition(s) that match the specified (and possibly partial) partition specification. * A partial partition-specification is one where not all partition-keys have associated values. For example, @@ -343,6 +391,14 @@ public abstract void dropPartitions(String dbName, String tableName, public abstract List listPartitionsByFilter(String dbName, String tblName, String filter) throws HCatException; + /** + * List partitions by filter, but as HCatPartitionSpecs. + */ + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public abstract HCatPartitionSpec listPartitionSpecsByFilter(String dbName, String tblName, + String filter, int maxPartitions) throws HCatException; + /** * Mark partition for event. * diff --git a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatClientHMSImpl.java b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatClientHMSImpl.java index b3afa72ef8ce..de580b886821 100644 --- a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatClientHMSImpl.java +++ b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatClientHMSImpl.java @@ -25,6 +25,8 @@ import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.common.classification.InterfaceAudience; +import org.apache.hadoop.hive.common.classification.InterfaceStability; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.MetaStoreUtils; @@ -354,6 +356,31 @@ public List getPartitions(String dbName, String tblName, Map partitionSelector, int maxPartitions) throws HCatException { + return listPartitionSpecsByFilter(dbName, tableName, getFilterString(partitionSelector), maxPartitions); + } + private static String getFilterString(Map partitionSpec) { final String AND = " AND "; @@ -414,7 +441,7 @@ public void addPartition(HCatAddPartitionDesc partInfo) Table tbl = null; try { tbl = hmsClient.getTable(partInfo.getDatabaseName(), - partInfo.getTableName()); + partInfo.getTableName()); // TODO: Should be moved out. if (tbl.getPartitionKeysSize() == 0) { throw new HCatException("The table " + partInfo.getTableName() @@ -511,6 +538,28 @@ public List listPartitionsByFilter(String dbName, return hcatPtns; } + @Override + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public HCatPartitionSpec listPartitionSpecsByFilter(String dbName, String tblName, String filter, int maxPartitions) + throws HCatException { + try { + return new HCatPartitionSpec(getTable(dbName, tblName), + hmsClient.listPartitionSpecsByFilter(dbName, tblName, filter, maxPartitions)); + } + catch(MetaException e) { + throw new HCatException("MetaException while fetching partitions.", e); + } + catch (NoSuchObjectException e) { + throw new ObjectNotFoundException( + "NoSuchObjectException while fetching partitions.", e); + } + catch (TException e) { + throw new ConnectionFailureException( + "TException while fetching partitions.", e); + } + } + @Override public void markPartitionForEvent(String dbName, String tblName, Map partKVs, PartitionEventType eventType) @@ -573,7 +622,7 @@ public String getDelegationToken(String owner, String token = null; try { token = hmsClient.getDelegationToken(owner, - renewerKerberosPrincipalName); + renewerKerberosPrincipalName); } catch (MetaException e) { throw new HCatException( "MetaException while getting delegation token.", e); @@ -750,6 +799,30 @@ public int addPartitions(List partInfoList) return numPartitions; } + @Override + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public int addPartitionSpec(HCatPartitionSpec partitionSpec) throws HCatException { + + try { + return hmsClient.add_partitions_pspec(partitionSpec.toPartitionSpecProxy()); + } catch (InvalidObjectException e) { + throw new HCatException( + "InvalidObjectException while adding partition.", e); + } catch (AlreadyExistsException e) { + throw new HCatException( + "AlreadyExistsException while adding partition.", e); + } catch (MetaException e) { + throw new HCatException("MetaException while adding partition.", e); + } catch (NoSuchObjectException e) { + throw new ObjectNotFoundException("The table " + + "could not be found.", e); + } catch (TException e) { + throw new ConnectionFailureException( + "TException while adding partition.", e); + } + } + @Override public String getMessageBusTopicName(String dbName, String tableName) throws HCatException { try { @@ -825,4 +898,16 @@ public List deserializePartitions(List hcatPartitionStrin } return partitions; } + + @Override + public List serializePartitionSpec(HCatPartitionSpec partitionSpec) throws HCatException { + return MetadataSerializer.get().serializePartitionSpec(partitionSpec); + } + + @Override + public HCatPartitionSpec deserializePartitionSpec(List hcatPartitionSpecStrings) throws HCatException { + HCatPartitionSpec hcatPartitionSpec = MetadataSerializer.get().deserializePartitionSpec(hcatPartitionSpecStrings); + hcatPartitionSpec.hcatTable(getTable(hcatPartitionSpec.getDbName(), hcatPartitionSpec.getTableName())); + return hcatPartitionSpec; + } } diff --git a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatPartitionSpec.java b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatPartitionSpec.java new file mode 100644 index 000000000000..d55cebd1a020 --- /dev/null +++ b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatPartitionSpec.java @@ -0,0 +1,158 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.hive.hcatalog.api; + +import org.apache.hadoop.hive.common.classification.InterfaceAudience; +import org.apache.hadoop.hive.common.classification.InterfaceStability; +import org.apache.hadoop.hive.metastore.api.MetaException; +import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy; +import org.apache.hive.hcatalog.common.HCatException; + +/** + * Generalized representation of a set of HCatPartitions. + */ + +@InterfaceAudience.LimitedPrivate({"Hive"}) +@InterfaceStability.Evolving +public class HCatPartitionSpec { + + protected HCatTable hcatTable; + protected PartitionSpecProxy partitionSpecProxy; + + protected HCatPartitionSpec(HCatTable hcatTable, PartitionSpecProxy partitionSpecProxy) throws HCatException { + this.hcatTable = hcatTable; + this.partitionSpecProxy = partitionSpecProxy; + assert_invariant(); + } + + /** + * Getter for DBName of this HCatPartitionSpec. + * @return The name of the DB. + */ + public String getDbName() { + return partitionSpecProxy.getDbName(); + } + + /** + * Getter for TableName of this HCatPartitionSpec. + * @return The name of the TableName. + */ + public String getTableName() { + return partitionSpecProxy.getTableName(); + } + + /** + * Setter for HCatTable. Required for deserialization. + */ + void hcatTable(HCatTable hcatTable) throws HCatException { + + assert this.hcatTable == null : "Expected hcatTable to be null at this point."; + this.hcatTable = hcatTable; + assert_invariant(); + + } + + /** + * Conversion to a Hive Metastore API PartitionSpecProxy instance. + */ + PartitionSpecProxy toPartitionSpecProxy() { + return partitionSpecProxy; + } + + /** + * Getter for the number of HCatPartitions represented by this HCatPartitionSpec instance. + * @return The number of HCatPartitions. + * @throws HCatException On failure. + */ + public int size() throws HCatException { + return partitionSpecProxy.size(); + } + + /** + * Setter for the "root" location of the HCatPartitionSpec. + * @param location The new "root" location of the HCatPartitionSpec. + * @throws HCatException On failure to set a new location. + */ + public void setRootLocation(String location) throws HCatException { + try { + partitionSpecProxy.setRootLocation(location); + } + catch (MetaException metaException) { + throw new HCatException("Unable to set root-path!", metaException); + } + } + + /** + * Getter for an Iterator to the first HCatPartition in the HCatPartitionSpec. + * @return HCatPartitionIterator to the first HCatPartition. + */ + public HCatPartitionIterator getPartitionIterator() { + return new HCatPartitionIterator(hcatTable, partitionSpecProxy.getPartitionIterator()); + } + + // Assert class invariant. + private void assert_invariant() throws HCatException { + + if (hcatTable != null) { + + if (!hcatTable.getDbName().equalsIgnoreCase(partitionSpecProxy.getDbName())) { + String errorMessage = "Invalid HCatPartitionSpec instance: Table's DBName (" + hcatTable.getDbName() + ") " + + "doesn't match PartitionSpec (" + partitionSpecProxy.getDbName() + ")"; + assert false : errorMessage; + throw new HCatException(errorMessage); + } + + if (!hcatTable.getTableName().equalsIgnoreCase(partitionSpecProxy.getTableName())) { + String errorMessage = "Invalid HCatPartitionSpec instance: Table's TableName (" + hcatTable.getTableName() + ") " + + "doesn't match PartitionSpec (" + partitionSpecProxy.getTableName() + ")"; + assert false : errorMessage; + throw new HCatException(errorMessage); + } + } + } + + + /** + * Iterator over HCatPartitions in the HCatPartitionSpec. + */ + public static class HCatPartitionIterator { // implements java.util.Iterator { + + private HCatTable hcatTable; + private PartitionSpecProxy.PartitionIterator iterator; + + HCatPartitionIterator(HCatTable hcatTable, PartitionSpecProxy.PartitionIterator iterator) { + this.hcatTable = hcatTable; + this.iterator = iterator; + } + + public boolean hasNext() { + return iterator.hasNext(); + } + + public HCatPartition next() throws HCatException { + return new HCatPartition(hcatTable, iterator.next()); + } + + public void remove() { + iterator.remove(); + } + + } // class HCatPartitionIterator; + +} // class HCatPartitionSpec; diff --git a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataJSONSerializer.java b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataJSONSerializer.java index 30ac00fc4e87..d98cea5e0a9a 100644 --- a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataJSONSerializer.java +++ b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataJSONSerializer.java @@ -1,7 +1,11 @@ package org.apache.hive.hcatalog.api; +import org.apache.hadoop.hive.common.classification.InterfaceAudience; +import org.apache.hadoop.hive.common.classification.InterfaceStability; import org.apache.hadoop.hive.metastore.api.Partition; +import org.apache.hadoop.hive.metastore.api.PartitionSpec; import org.apache.hadoop.hive.metastore.api.Table; +import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy; import org.apache.hive.hcatalog.common.HCatException; import org.apache.thrift.TDeserializer; import org.apache.thrift.TException; @@ -10,6 +14,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; +import java.util.List; + /** * MetadataSerializer implementation, that serializes HCat API elements into JSON. */ @@ -68,4 +75,38 @@ public HCatPartition deserializePartition(String hcatPartitionStringRep) throws throw new HCatException("Could not de-serialize HCatPartition.", exception); } } + + @Override + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public List serializePartitionSpec(HCatPartitionSpec hcatPartitionSpec) throws HCatException { + try { + List stringReps = new ArrayList(); + TSerializer serializer = new TSerializer(new TJSONProtocol.Factory()); + for (PartitionSpec partitionSpec : hcatPartitionSpec.partitionSpecProxy.toPartitionSpec()) { + stringReps.add(serializer.toString(partitionSpec, "UTF-8")); + } + return stringReps; + } + catch (TException serializationException) { + throw new HCatException("Failed to serialize!", serializationException); + } + } + + @Override + public HCatPartitionSpec deserializePartitionSpec(List hcatPartitionSpecStrings) throws HCatException { + try { + List partitionSpecList = new ArrayList(); + TDeserializer deserializer = new TDeserializer(new TJSONProtocol.Factory()); + for (String stringRep : hcatPartitionSpecStrings) { + PartitionSpec partSpec = new PartitionSpec(); + deserializer.deserialize(partSpec, stringRep, "UTF-8"); + partitionSpecList.add(partSpec); + } + return new HCatPartitionSpec(null, PartitionSpecProxy.Factory.get(partitionSpecList)); + } + catch (TException deserializationException) { + throw new HCatException("Failed to deserialize!", deserializationException); + } + } } diff --git a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataSerializer.java b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataSerializer.java index dd5da99f2ad7..2ecf503cd487 100644 --- a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataSerializer.java +++ b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataSerializer.java @@ -1,7 +1,11 @@ package org.apache.hive.hcatalog.api; +import org.apache.hadoop.hive.common.classification.InterfaceAudience; +import org.apache.hadoop.hive.common.classification.InterfaceStability; import org.apache.hive.hcatalog.common.HCatException; +import java.util.List; + /** * Interface to serialize HCat API elements. */ @@ -51,4 +55,24 @@ public static MetadataSerializer get() throws HCatException { */ public abstract HCatPartition deserializePartition(String hcatPartitionStringRep) throws HCatException; + /** + * Serializer for HCatPartitionSpec. + * @param hcatPartitionSpec HCatPartitionSpec instance to be serialized. + * @return Serialized string-representations. + * @throws HCatException On failure to serialize. + */ + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public abstract List serializePartitionSpec(HCatPartitionSpec hcatPartitionSpec) throws HCatException; + + /** + * Deserializer for HCatPartitionSpec string-representations. + * @param hcatPartitionSpecStrings List of strings to be converted into an HCatPartitionSpec. + * @return Deserialized HCatPartitionSpec instance. + * @throws HCatException On failure to deserialize. (e.g. incompatible serialization format, etc.) + */ + @InterfaceAudience.LimitedPrivate({"Hive"}) + @InterfaceStability.Evolving + public abstract HCatPartitionSpec deserializePartitionSpec(List hcatPartitionSpecStrings) throws HCatException; + } diff --git a/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java b/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java index ac816605e9d5..fdc513c70e9e 100644 --- a/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java +++ b/hcatalog/webhcat/java-client/src/test/java/org/apache/hive/hcatalog/api/TestHCatClient.java @@ -970,7 +970,7 @@ public void testPartitionRegistrationWithCustomSchema() throws Exception { sourceMetaStore.addPartition(HCatAddPartitionDesc.create(sourcePartition_2).build()); // The source table now has 2 partitions, one in TEXTFILE, the other in ORC. - // Test that adding these partitions to the target-table *without* replicating the table-change. + // Test adding these partitions to the target-table *without* replicating the table-change. List sourcePartitions = sourceMetaStore.getPartitions(dbName, tableName); assertEquals("Unexpected number of source partitions.", 2, sourcePartitions.size()); @@ -1002,4 +1002,139 @@ public void testPartitionRegistrationWithCustomSchema() throws Exception { assertTrue("Unexpected exception! " + unexpected.getMessage(), false); } } + + /** + * Test that partition-definitions can be replicated between HCat-instances, + * independently of table-metadata replication, using PartitionSpec interfaces. + * (This is essentially the same test as testPartitionRegistrationWithCustomSchema(), + * transliterated to use the PartitionSpec APIs.) + * 2 identical tables are created on 2 different HCat instances ("source" and "target"). + * On the source instance, + * 1. One partition is added with the old format ("TEXTFILE"). + * 2. The table is updated with an additional column and the data-format changed to ORC. + * 3. Another partition is added with the new format. + * 4. The partitions' metadata is copied to the target HCat instance, without updating the target table definition. + * 5. The partitions' metadata is tested to be an exact replica of that on the source. + * @throws Exception + */ + @Test + public void testPartitionSpecRegistrationWithCustomSchema() throws Exception { + try { + startReplicationTargetMetaStoreIfRequired(); + + HCatClient sourceMetaStore = HCatClient.create(new Configuration(hcatConf)); + final String dbName = "myDb"; + final String tableName = "myTable"; + + sourceMetaStore.dropDatabase(dbName, true, HCatClient.DropDBMode.CASCADE); + + sourceMetaStore.createDatabase(HCatCreateDBDesc.create(dbName).build()); + List columnSchema = new ArrayList( + Arrays.asList(new HCatFieldSchema("foo", Type.INT, ""), + new HCatFieldSchema("bar", Type.STRING, ""))); + + List partitionSchema = Arrays.asList(new HCatFieldSchema("dt", Type.STRING, ""), + new HCatFieldSchema("grid", Type.STRING, "")); + + HCatTable sourceTable = new HCatTable(dbName, tableName).cols(columnSchema) + .partCols(partitionSchema) + .comment("Source table."); + + sourceMetaStore.createTable(HCatCreateTableDesc.create(sourceTable).build()); + + // Verify that the sourceTable was created successfully. + sourceTable = sourceMetaStore.getTable(dbName, tableName); + assertNotNull("Table couldn't be queried for. ", sourceTable); + + // Partitions added now should inherit table-schema, properties, etc. + Map partitionSpec_1 = new HashMap(); + partitionSpec_1.put("grid", "AB"); + partitionSpec_1.put("dt", "2011_12_31"); + HCatPartition sourcePartition_1 = new HCatPartition(sourceTable, partitionSpec_1, ""); + + sourceMetaStore.addPartition(HCatAddPartitionDesc.create(sourcePartition_1).build()); + assertEquals("Unexpected number of partitions. ", + sourceMetaStore.getPartitions(dbName, tableName).size(), 1); + // Verify that partition_1 was added correctly, and properties were inherited from the HCatTable. + HCatPartition addedPartition_1 = sourceMetaStore.getPartition(dbName, tableName, partitionSpec_1); + assertEquals("Column schema doesn't match.", addedPartition_1.getColumns(), sourceTable.getCols()); + assertEquals("InputFormat doesn't match.", addedPartition_1.getInputFormat(), sourceTable.getInputFileFormat()); + assertEquals("OutputFormat doesn't match.", addedPartition_1.getOutputFormat(), sourceTable.getOutputFileFormat()); + assertEquals("SerDe doesn't match.", addedPartition_1.getSerDe(), sourceTable.getSerdeLib()); + assertEquals("SerDe params don't match.", addedPartition_1.getSerdeParams(), sourceTable.getSerdeParams()); + + // Replicate table definition. + + HCatClient targetMetaStore = HCatClient.create(new Configuration(replicationTargetHCatConf)); + targetMetaStore.dropDatabase(dbName, true, HCatClient.DropDBMode.CASCADE); + + targetMetaStore.createDatabase(HCatCreateDBDesc.create(dbName).build()); + // Make a copy of the source-table, as would be done across class-loaders. + HCatTable targetTable = targetMetaStore.deserializeTable(sourceMetaStore.serializeTable(sourceTable)); + targetMetaStore.createTable(HCatCreateTableDesc.create(targetTable).build()); + targetTable = targetMetaStore.getTable(dbName, tableName); + + assertEquals("Created table doesn't match the source.", + targetTable.diff(sourceTable), HCatTable.NO_DIFF); + + // Modify Table schema at the source. + List newColumnSchema = new ArrayList(columnSchema); + newColumnSchema.add(new HCatFieldSchema("goo_new", Type.DOUBLE, "")); + Map tableParams = new HashMap(1); + tableParams.put("orc.compress", "ZLIB"); + sourceTable.cols(newColumnSchema) // Add a column. + .fileFormat("orcfile") // Change SerDe, File I/O formats. + .tblProps(tableParams) + .serdeParam(serdeConstants.FIELD_DELIM, Character.toString('\001')); + sourceMetaStore.updateTableSchema(dbName, tableName, sourceTable); + sourceTable = sourceMetaStore.getTable(dbName, tableName); + + // Add another partition to the source. + Map partitionSpec_2 = new HashMap(); + partitionSpec_2.put("grid", "AB"); + partitionSpec_2.put("dt", "2012_01_01"); + HCatPartition sourcePartition_2 = new HCatPartition(sourceTable, partitionSpec_2, ""); + sourceMetaStore.addPartition(HCatAddPartitionDesc.create(sourcePartition_2).build()); + + // The source table now has 2 partitions, one in TEXTFILE, the other in ORC. + // Test adding these partitions to the target-table *without* replicating the table-change. + + HCatPartitionSpec sourcePartitionSpec = sourceMetaStore.getPartitionSpecs(dbName, tableName, -1); + assertEquals("Unexpected number of source partitions.", 2, sourcePartitionSpec.size()); + + // Serialize the hcatPartitionSpec. + List partitionSpecString = sourceMetaStore.serializePartitionSpec(sourcePartitionSpec); + + // Deserialize the HCatPartitionSpec using the target HCatClient instance. + HCatPartitionSpec targetPartitionSpec = targetMetaStore.deserializePartitionSpec(partitionSpecString); + assertEquals("Could not add the expected number of partitions.", + sourcePartitionSpec.size(), targetMetaStore.addPartitionSpec(targetPartitionSpec)); + + // Retrieve partitions. + targetPartitionSpec = targetMetaStore.getPartitionSpecs(dbName, tableName, -1); + assertEquals("Could not retrieve the expected number of partitions.", + sourcePartitionSpec.size(), targetPartitionSpec.size()); + + // Assert that the source and target partitions are equivalent. + HCatPartitionSpec.HCatPartitionIterator sourceIterator = sourcePartitionSpec.getPartitionIterator(); + HCatPartitionSpec.HCatPartitionIterator targetIterator = targetPartitionSpec.getPartitionIterator(); + + while (targetIterator.hasNext()) { + assertTrue("Fewer target partitions than source.", sourceIterator.hasNext()); + HCatPartition sourcePartition = sourceIterator.next(); + HCatPartition targetPartition = targetIterator.next(); + assertEquals("Column schema doesn't match.", sourcePartition.getColumns(), targetPartition.getColumns()); + assertEquals("InputFormat doesn't match.", sourcePartition.getInputFormat(), targetPartition.getInputFormat()); + assertEquals("OutputFormat doesn't match.", sourcePartition.getOutputFormat(), targetPartition.getOutputFormat()); + assertEquals("SerDe doesn't match.", sourcePartition.getSerDe(), targetPartition.getSerDe()); + assertEquals("SerDe params don't match.", sourcePartition.getSerdeParams(), targetPartition.getSerdeParams()); + + } + } + catch (Exception unexpected) { + LOG.error( "Unexpected exception! ", unexpected); + assertTrue("Unexpected exception! " + unexpected.getMessage(), false); + } + } + } From 1380adc1b892d370aade90a966b4300b17ba3f36 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sun, 2 Nov 2014 05:48:24 +0000 Subject: [PATCH 234/339] HIVE-8695: TestJdbcWithMiniKdc.testNegativeTokenAuth fails on non-expected error messages (Xiaobing Zhou, reviewed by Thejas M Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636087 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java index 6647ce589fa2..3e46bed7f91e 100644 --- a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java +++ b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java @@ -171,8 +171,8 @@ public void testNegativeTokenAuth() throws Exception { MiniHiveKdc.HIVE_TEST_USER_2); } catch (SQLException e) { // Expected error - assertTrue(e.getMessage().contains("Failed to validate proxy privilege")); - assertTrue(e.getCause().getCause().getMessage().contains("Failed to validate proxy privilege")); + assertTrue(e.getMessage().contains("Error retrieving delegation token for user")); + assertTrue(e.getCause().getCause().getMessage().contains("is not allowed to impersonate")); } finally { hs2Conn.close(); } From 0d0df31ff5cba3de4b9195f3f50efd81d97d330f Mon Sep 17 00:00:00 2001 From: Sushanth Sowmyan Date: Sun, 2 Nov 2014 23:49:37 +0000 Subject: [PATCH 235/339] HIVE-8394 : HIVE-7803 doesn't handle Pig MultiQuery, can cause data-loss. (Mithun Radhakrishnan via Sushanth Sowmyan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636214 13f79535-47bb-0310-9956-ffa450edef68 --- ...micPartitionFileRecordWriterContainer.java | 42 +++-- .../FileOutputCommitterContainer.java | 16 +- .../mapreduce/TaskCommitContextRegistry.java | 148 ++++++++++++++++++ 3 files changed, 195 insertions(+), 11 deletions(-) create mode 100644 hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/TaskCommitContextRegistry.java diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/DynamicPartitionFileRecordWriterContainer.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/DynamicPartitionFileRecordWriterContainer.java index 4df912a93522..60f1b60551f1 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/DynamicPartitionFileRecordWriterContainer.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/DynamicPartitionFileRecordWriterContainer.java @@ -27,11 +27,9 @@ import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.conf.HiveConf; -import org.apache.hadoop.hive.ql.metadata.HiveStorageHandler; import org.apache.hadoop.hive.serde2.SerDe; import org.apache.hadoop.hive.serde2.SerDeException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; -import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.Writable; import org.apache.hadoop.io.WritableComparable; import org.apache.hadoop.mapred.Reporter; @@ -44,14 +42,16 @@ import org.apache.hadoop.util.ReflectionUtils; import org.apache.hive.hcatalog.common.ErrorType; import org.apache.hive.hcatalog.common.HCatException; -import org.apache.hive.hcatalog.common.HCatUtil; import org.apache.hive.hcatalog.data.HCatRecord; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Record writer container for tables using dynamic partitioning. See * {@link FileOutputFormatContainer} for more information */ class DynamicPartitionFileRecordWriterContainer extends FileRecordWriterContainer { + private static final Logger LOG = LoggerFactory.getLogger(DynamicPartitionFileRecordWriterContainer.class); private final List dynamicPartCols; private int maxDynamicPartitions; @@ -97,14 +97,36 @@ public void close(TaskAttemptContext context) throws IOException, InterruptedExc // TaskInputOutput. bwriter.close(reporter); } - for (Map.Entry entry : baseDynamicCommitters - .entrySet()) { - org.apache.hadoop.mapred.TaskAttemptContext currContext = dynamicContexts.get(entry.getKey()); - OutputCommitter baseOutputCommitter = entry.getValue(); - if (baseOutputCommitter.needsTaskCommit(currContext)) { - baseOutputCommitter.commitTask(currContext); + + TaskCommitContextRegistry.getInstance().register(context, new TaskCommitContextRegistry.TaskCommitterProxy() { + @Override + public void abortTask(TaskAttemptContext context) throws IOException { + for (Map.Entry outputJobInfoEntry : dynamicOutputJobInfo.entrySet()) { + String dynKey = outputJobInfoEntry.getKey(); + OutputJobInfo outputJobInfo = outputJobInfoEntry.getValue(); + LOG.info("Aborting task-attempt for " + outputJobInfo.getLocation()); + baseDynamicCommitters.get(dynKey) + .abortTask(dynamicContexts.get(dynKey)); + } } - } + + @Override + public void commitTask(TaskAttemptContext context) throws IOException { + for (Map.Entry outputJobInfoEntry : dynamicOutputJobInfo.entrySet()) { + String dynKey = outputJobInfoEntry.getKey(); + OutputJobInfo outputJobInfo = outputJobInfoEntry.getValue(); + LOG.info("Committing task-attempt for " + outputJobInfo.getLocation()); + TaskAttemptContext dynContext = dynamicContexts.get(dynKey); + OutputCommitter dynCommitter = baseDynamicCommitters.get(dynKey); + if (dynCommitter.needsTaskCommit(dynContext)) { + dynCommitter.commitTask(dynContext); + } + else { + LOG.info("Skipping commitTask() for " + outputJobInfo.getLocation()); + } + } + } + }); } @Override diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/FileOutputCommitterContainer.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/FileOutputCommitterContainer.java index 491da148d4b2..cc90129d32e7 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/FileOutputCommitterContainer.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/FileOutputCommitterContainer.java @@ -118,6 +118,13 @@ public FileOutputCommitterContainer(JobContext context, public void abortTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { getBaseOutputCommitter().abortTask(HCatMapRedUtil.createTaskAttemptContext(context)); + } else { + try { + TaskCommitContextRegistry.getInstance().abortTask(context); + } + finally { + TaskCommitContextRegistry.getInstance().discardCleanupFor(context); + } } } @@ -127,6 +134,13 @@ public void commitTask(TaskAttemptContext context) throws IOException { //See HCATALOG-499 FileOutputFormatContainer.setWorkOutputPath(context); getBaseOutputCommitter().commitTask(HCatMapRedUtil.createTaskAttemptContext(context)); + } else { + try { + TaskCommitContextRegistry.getInstance().commitTask(context); + } + finally { + TaskCommitContextRegistry.getInstance().discardCleanupFor(context); + } } } @@ -136,7 +150,7 @@ public boolean needsTaskCommit(TaskAttemptContext context) throws IOException { return getBaseOutputCommitter().needsTaskCommit(HCatMapRedUtil.createTaskAttemptContext(context)); } else { // called explicitly through FileRecordWriterContainer.close() if dynamic - return false by default - return false; + return true; } } diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/TaskCommitContextRegistry.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/TaskCommitContextRegistry.java new file mode 100644 index 000000000000..8c6d0fcd39d2 --- /dev/null +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/TaskCommitContextRegistry.java @@ -0,0 +1,148 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.hive.hcatalog.mapreduce; + +import org.apache.commons.lang.StringUtils; +import org.apache.hadoop.mapreduce.TaskAttemptContext; +import org.apache.hive.hcatalog.common.HCatConstants; +import org.apache.hive.hcatalog.common.HCatUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.HashMap; + +/** + * Singleton Registry to track the commit of TaskAttempts. + * Used to manage commits for Tasks that create dynamic-partitions. + */ +public class TaskCommitContextRegistry { + + private static final Logger LOG = LoggerFactory.getLogger(TaskCommitContextRegistry.class); + + private static TaskCommitContextRegistry ourInstance = new TaskCommitContextRegistry(); + + /** + * Singleton instance getter. + */ + public static TaskCommitContextRegistry getInstance() { + return ourInstance; + } + + /** + * Implement this interface to register call-backs for committing TaskAttempts. + */ + public static interface TaskCommitterProxy { + + /** + * Call-back for Committer's abortTask(). + */ + public void abortTask(TaskAttemptContext context) throws IOException; + + /** + * Call-back for Committer's abortTask(). + */ + public void commitTask(TaskAttemptContext context) throws IOException; + } + + private HashMap taskCommitters + = new HashMap(); + + /** + * Trigger commit for TaskAttempt, as specified by the TaskAttemptContext argument. + */ + public synchronized void commitTask(TaskAttemptContext context) throws IOException { + String key = generateKey(context); + if (!taskCommitters.containsKey(key)) { + throw new IOException("No callback registered for TaskAttemptID:" + key); + } + + try { + LOG.info("Committing TaskAttempt:" + key); + taskCommitters.get(key).commitTask(context); + } + catch (Throwable t) { + throw new IOException("Could not clean up TaskAttemptID:" + key, t); + } + + } + + private String generateKey(TaskAttemptContext context) throws IOException { + String jobInfoString = context.getConfiguration().get(HCatConstants.HCAT_KEY_OUTPUT_INFO); + if (StringUtils.isBlank(jobInfoString)) { // Avoid the NPE. + throw new IOException("Could not retrieve OutputJobInfo for TaskAttempt " + context.getTaskAttemptID()); + } + OutputJobInfo jobInfo = (OutputJobInfo) HCatUtil.deserialize(jobInfoString); + return context.getTaskAttemptID().toString() + "@" + jobInfo.getLocation(); + } + + /** + * Trigger abort for TaskAttempt, as specified by the TaskAttemptContext argument. + */ + public synchronized void abortTask(TaskAttemptContext context) throws IOException { + String key = generateKey(context); + if (!taskCommitters.containsKey(key)) { + throw new IOException("No callback registered for TaskAttemptID:" + key); + } + + try { + LOG.info("Aborting TaskAttempt:" + key); + taskCommitters.get(key).abortTask(context); + } + catch (Throwable t) { + throw new IOException("Could not clean up TaskAttemptID:" + key, t); + } + } + + /** + * Method to register call-backs to control commits and aborts of TaskAttempts. + * @param context The TaskAttemptContext instance for the task-attempt, identifying the output. + * @param committer Instance of TaskCommitterProxy, to commit/abort a TaskAttempt. + * @throws java.io.IOException On failure. + */ + public synchronized void register(TaskAttemptContext context, TaskCommitterProxy committer) throws IOException { + String key = generateKey(context); + LOG.info("Registering committer for TaskAttemptID:" + key); + if (taskCommitters.containsKey(key)) { + LOG.warn("Replacing previous committer:" + committer); + } + taskCommitters.put(key, committer); + } + + /** + * Method to discard the committer call-backs for a specified TaskAttemptID. + * @param context The TaskAttemptContext instance for the task-attempt, identifying the output. + * @throws java.io.IOException On failure. + */ + public synchronized void discardCleanupFor(TaskAttemptContext context) throws IOException { + String key = generateKey(context); + LOG.info("Discarding all cleanup for TaskAttemptID:" + key); + if (!taskCommitters.containsKey(key)) { + LOG.warn("No committer registered for TaskAttemptID:" + key); + } + else { + taskCommitters.remove(key); + } + } + + // Hide constructor, for make benefit glorious Singleton. + private TaskCommitContextRegistry() { + } +} From 7f9caf72d51f200fece739d8cf1fb4cf57b3d5c2 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Mon, 3 Nov 2014 02:01:29 +0000 Subject: [PATCH 236/339] HIVE-8313: Optimize evaluation for ExprNodeConstantEvaluator and ExprNodeNullEvaluator (Mithun Radhakrishnan, reviewed by Navis) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636228 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/ExprNodeGenericFuncEvaluator.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeGenericFuncEvaluator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeGenericFuncEvaluator.java index 97ee9760ac76..b695bef5d949 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeGenericFuncEvaluator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeGenericFuncEvaluator.java @@ -31,6 +31,9 @@ import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; +import java.util.ArrayList; +import java.util.List; + /** * ExprNodeGenericFuncEvaluator. * @@ -44,6 +47,7 @@ public class ExprNodeGenericFuncEvaluator extends ExprNodeEvaluator childrenNeedingPrepare = + new ArrayList(children.length); for (int i = 0; i < deferredChildren.length; i++) { - deferredChildren[i] = new DeferredExprObject(children[i], isEager); + DeferredExprObject deferredExprObject = new DeferredExprObject(children[i], isEager); + deferredChildren[i] = deferredExprObject; + if (deferredExprObject.needsPrepare()) { + childrenNeedingPrepare.add(deferredExprObject); + } } + this.childrenNeedingPrepare = + childrenNeedingPrepare.toArray(new GenericUDF.DeferredObject[childrenNeedingPrepare.size()]); // Initialize all children first ObjectInspector[] childrenOIs = new ObjectInspector[children.length]; for (int i = 0; i < children.length; i++) { @@ -163,8 +179,8 @@ protected Object _evaluate(Object row, int version) throws HiveException { return ((ConstantObjectInspector) outputOI).getWritableConstantValue(); } rowObject = row; - for (int i = 0; i < deferredChildren.length; i++) { - deferredChildren[i].prepare(version); + for (GenericUDF.DeferredObject deferredObject : childrenNeedingPrepare) { + deferredObject.prepare(version); } return genericUDF.evaluate(deferredChildren); } From fc43dfb792ead3c59f88107a05d88e71bfe33385 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Mon, 3 Nov 2014 02:24:12 +0000 Subject: [PATCH 237/339] HIVE-8495: Add progress bar for Hive on Tez queries (Prasanth J and Mostafa Mokhtar via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636231 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 10 +- pom.xml | 6 + ql/pom.xml | 10 + .../hive/ql/exec/tez/TezJobMonitor.java | 578 ++++++++++++++++-- .../hadoop/hive/ql/exec/tez/TezTask.java | 2 +- .../apache/hadoop/hive/ql/log/PerfLogger.java | 37 +- .../hadoop/hive/ql/session/SessionState.java | 8 + 7 files changed, 604 insertions(+), 47 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 7161240b7758..77807724dccc 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1902,7 +1902,15 @@ public static enum ConfVars { TEZ_SMB_NUMBER_WAVES( "hive.tez.smb.number.waves", (float) 0.5, - "The number of waves in which to run the SMB join. Account for cluster being occupied. Ideally should be 1 wave.") + "The number of waves in which to run the SMB join. Account for cluster being occupied. Ideally should be 1 wave."), + TEZ_EXEC_SUMMARY( + "hive.tez.exec.print.summary", + false, + "Display breakdown of execution steps, for every query executed by the shell."), + TEZ_EXEC_INPLACE_PROGRESS( + "hive.tez.exec.inplace.progress", + true, + "Updates tez job execution progress in-place in the terminal.") ; public final String varname; diff --git a/pom.xml b/pom.xml index 9f2b2b338557..8b099400d02e 100644 --- a/pom.xml +++ b/pom.xml @@ -129,6 +129,7 @@ 7.6.0.v20120127 1.14 0.9.94 + 1.11 1.1 3.5.2 20090211 @@ -335,6 +336,11 @@ jline ${jline.version} + + org.fusesource.jansi + jansi + ${jansi.version} + junit junit diff --git a/ql/pom.xml b/ql/pom.xml index 47e9ec0c00f5..863c6f41b900 100644 --- a/ql/pom.xml +++ b/ql/pom.xml @@ -273,6 +273,16 @@ ${mockito-all.version} test + + jline + jline + ${jline.version} + + + org.fusesource.jansi + jansi + ${jansi.version} + org.apache.tez tez-api diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java index 9bcdeedcff5b..284acbc8ae70 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java @@ -19,29 +19,48 @@ package org.apache.hadoop.hive.ql.exec.tez; import static org.apache.tez.dag.api.client.DAGStatus.State.RUNNING; +import static org.fusesource.jansi.Ansi.ansi; +import static org.fusesource.jansi.internal.CLibrary.STDOUT_FILENO; +import static org.fusesource.jansi.internal.CLibrary.isatty; -import java.io.IOException; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.ql.exec.FileSinkOperator; import org.apache.hadoop.hive.ql.exec.Heartbeater; +import org.apache.hadoop.hive.ql.exec.MapOperator; +import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator; import org.apache.hadoop.hive.ql.lockmgr.HiveTxnManager; import org.apache.hadoop.hive.ql.log.PerfLogger; +import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.ql.session.SessionState.LogHelper; +import org.apache.tez.common.counters.TaskCounter; +import org.apache.tez.common.counters.TezCounter; +import org.apache.tez.common.counters.TezCounters; +import org.apache.tez.dag.api.DAG; import org.apache.tez.dag.api.TezException; +import org.apache.tez.dag.api.Vertex; import org.apache.tez.dag.api.client.DAGClient; import org.apache.tez.dag.api.client.DAGStatus; import org.apache.tez.dag.api.client.Progress; import org.apache.tez.dag.api.client.StatusGetOpts; +import org.apache.tez.dag.api.client.VertexStatus; +import org.fusesource.jansi.Ansi; + +import java.io.IOException; +import java.io.PrintStream; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.Collections; +import java.util.EnumSet; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import jline.Terminal; /** * TezJobMonitor keeps track of a tez job while it's being executed. It will @@ -50,16 +69,47 @@ */ public class TezJobMonitor { - private static final Log LOG = LogFactory.getLog(TezJobMonitor.class.getName()); private static final String CLASS_NAME = TezJobMonitor.class.getName(); + private static final int MIN_TERMINAL_WIDTH = 80; + private static final int COLUMN_1_WIDTH = 16; + private static final int SEPARATOR_WIDTH = 80; + + // keep this within 80 chars width. If more columns needs to be added then update min terminal + // width requirement and separator width accordingly + private static final String HEADER_FORMAT = "%16s%12s %5s %9s %7s %7s %6s %6s"; + private static final String VERTEX_FORMAT = "%-16s%12s %5s %9s %7s %7s %6s %6s"; + private static final String FOOTER_FORMAT = "%-15s %-30s %-4s %-25s"; + private static final String HEADER = String.format(HEADER_FORMAT, + "VERTICES", "STATUS", "TOTAL", "COMPLETED", "RUNNING", "PENDING", "FAILED", "KILLED"); + + // method and dag summary format + private static final String SUMMARY_HEADER_FORMAT = "%-16s %-12s %-12s %-15s %-20s %-15s %-15s %-15s %-15s"; + private static final String SUMMARY_VERTEX_FORMAT = "%-12s %11s %13s %12s %19s %19s %13s %15s %16s"; + private static final String SUMMARY_HEADER = String.format(SUMMARY_HEADER_FORMAT, + "VERTICES", "TOTAL_TASKS", "FAILED_ATTEMPTS", "KILLED_TASKS", "DURATION_SECONDS", + "CPU_TIME_MILLIS", "GC_TIME_MILLIS", "INPUT_RECORDS", "OUTPUT_RECORDS"); + + private static final String TOTAL_PREP_TIME = "TotalPrepTime"; + private static final String METHOD = "METHOD"; + private static final String DURATION = "DURATION(ms)"; + + // in-place progress update related variables + private int lines; + private PrintStream out; + private String separator; private transient LogHelper console; private final PerfLogger perfLogger = PerfLogger.getPerfLogger(); private final int checkInterval = 200; private final int maxRetryInterval = 2500; private final int printInterval = 3000; + private final int progressBarChars = 30; private long lastPrintTime; private Set completed; + + /* Pretty print the values */ + private final NumberFormat secondsFormat; + private final NumberFormat commaFormat; private static final List shutdownList; static { @@ -83,20 +133,111 @@ public void run() { } public TezJobMonitor() { - console = new LogHelper(LOG); + console = SessionState.getConsole(); + secondsFormat = new DecimalFormat("#0.00"); + commaFormat = NumberFormat.getNumberInstance(Locale.US); + // all progress updates are written to info stream and log file. In-place updates can only be + // done to info stream (console) + out = console.getInfoStream(); + separator = ""; + for (int i = 0; i < SEPARATOR_WIDTH; i++) { + separator += "-"; + } + } + + private static boolean isUnixTerminal() { + + String os = System.getProperty("os.name"); + if (os.startsWith("Windows")) { + // we do not support Windows, we will revisit this if we really need it for windows. + return false; + } + + // We must be on some unix variant.. + // check if standard out is a terminal + try { + // isatty system call will return 1 if the file descriptor is terminal else 0 + if (isatty(STDOUT_FILENO) == 0) { + return false; + } + } catch (NoClassDefFoundError ignore) { + // These errors happen if the JNI lib is not available for your platform. + return false; + } catch (UnsatisfiedLinkError ignore) { + // These errors happen if the JNI lib is not available for your platform. + return false; + } + return true; + } + + /** + * NOTE: Use this method only if isUnixTerminal is true. + * Erases the current line and prints the given line. + * @param line - line to print + */ + public void reprintLine(String line) { + out.print(ansi().eraseLine(Ansi.Erase.ALL).a(line).a('\n').toString()); + out.flush(); + lines++; } /** - * monitorExecution handles status printing, failures during execution and final - * status retrieval. + * NOTE: Use this method only if isUnixTerminal is true. + * Erases the current line and prints the given line with the specified color. + * @param line - line to print + * @param color - color for the line + */ + public void reprintLineWithColorAsBold(String line, Ansi.Color color) { + out.print(ansi().eraseLine(Ansi.Erase.ALL).fg(color).bold().a(line).a('\n').boldOff().reset() + .toString()); + out.flush(); + lines++; + } + + /** + * NOTE: Use this method only if isUnixTerminal is true. + * Erases the current line and prints the given multiline. Make sure the specified line is not + * terminated by linebreak. + * @param line - line to print + */ + public void reprintMultiLine(String line) { + int numLines = line.split("\r\n|\r|\n").length; + out.print(ansi().eraseLine(Ansi.Erase.ALL).a(line).a('\n').toString()); + out.flush(); + lines += numLines; + } + + /** + * NOTE: Use this method only if isUnixTerminal is true. + * Repositions the cursor back to line 0. + */ + public void repositionCursor() { + if (lines > 0) { + out.print(ansi().cursorUp(lines).toString()); + out.flush(); + lines = 0; + } + } + + /** + * NOTE: Use this method only if isUnixTerminal is true. + * Gets the width of the terminal + * @return - width of terminal + */ + public int getTerminalWidth() { + return Terminal.getTerminal().getTerminalWidth(); + } + + /** + * monitorExecution handles status printing, failures during execution and final status retrieval. * * @param dagClient client that was used to kick off the job * @param txnMgr transaction manager for this operation * @param conf configuration file for this operation * @return int 0 - success, 1 - killed, 2 - failed */ - public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, - HiveConf conf) throws InterruptedException { + public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, HiveConf conf, + DAG dag) throws InterruptedException { DAGStatus status = null; completed = new HashSet(); @@ -109,6 +250,22 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, Set opts = new HashSet(); Heartbeater heartbeater = new Heartbeater(txnMgr, conf); long startTime = 0; + boolean isProfileEnabled = conf.getBoolVar(conf, HiveConf.ConfVars.TEZ_EXEC_SUMMARY); + boolean inPlaceUpdates = conf.getBoolVar(conf, HiveConf.ConfVars.TEZ_EXEC_INPLACE_PROGRESS); + boolean wideTerminal = false; + boolean isTerminal = inPlaceUpdates == true ? isUnixTerminal() : false; + + // we need at least 80 chars wide terminal to display in-place updates properly + if (isTerminal) { + if (getTerminalWidth() >= MIN_TERMINAL_WIDTH) { + wideTerminal = true; + } + } + + boolean inPlaceEligible = false; + if (inPlaceUpdates && isTerminal && wideTerminal && !console.getIsSilent()) { + inPlaceEligible = true; + } shutdownList.add(dagClient); @@ -116,7 +273,7 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.TEZ_RUN_DAG); perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.TEZ_SUBMIT_TO_RUNNING); - while(true) { + while (true) { try { status = dagClient.getDAGStatus(opts); @@ -127,7 +284,7 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, if (state != lastState || state == RUNNING) { lastState = state; - switch(state) { + switch (state) { case SUBMITTED: console.printInfo("Status: Submitted"); break; @@ -138,23 +295,49 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, if (!running) { perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.TEZ_SUBMIT_TO_RUNNING); console.printInfo("Status: Running (" + dagClient.getExecutionContext() + ")\n"); - for (String s: progressMap.keySet()) { - perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.TEZ_RUN_VERTEX + s); - } startTime = System.currentTimeMillis(); running = true; } - lastReport = printStatus(progressMap, lastReport, console); + if (inPlaceEligible) { + printStatusInPlace(progressMap, startTime, false, dagClient); + // log the progress report to log file as well + console.logInfo(getReport(progressMap)); + } else { + lastReport = printStatus(progressMap, lastReport, console); + } break; case SUCCEEDED: - lastReport = printStatus(progressMap, lastReport, console); - double duration = (System.currentTimeMillis() - startTime)/1000.0; - console.printInfo("Status: Finished successfully in " + String.format("%.2f seconds", duration)); + if (inPlaceEligible) { + printStatusInPlace(progressMap, startTime, false, dagClient); + // log the progress report to log file as well + console.logInfo(getReport(progressMap)); + } else { + lastReport = printStatus(progressMap, lastReport, console); + } + + /* Profile info is collected anyways, isProfileEnabled + * decides if it gets printed or not + */ + if (isProfileEnabled) { + + double duration = (System.currentTimeMillis() - startTime) / 1000.0; + console.printInfo("Status: DAG finished successfully in " + + String.format("%.2f seconds", duration)); + console.printInfo("\n"); + + printMethodsSummary(); + printDagSummary(progressMap, console, dagClient, conf, dag); + } running = false; done = true; break; case KILLED: + if (inPlaceEligible) { + printStatusInPlace(progressMap, startTime, true, dagClient); + // log the progress report to log file as well + console.logInfo(getReport(progressMap)); + } console.printInfo("Status: Killed"); running = false; done = true; @@ -162,6 +345,11 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, break; case FAILED: case ERROR: + if (inPlaceEligible) { + printStatusInPlace(progressMap, startTime, true, dagClient); + // log the progress report to log file as well + console.logInfo(getReport(progressMap)); + } console.printError("Status: Failed"); running = false; done = true; @@ -173,15 +361,15 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, Thread.sleep(checkInterval); } } catch (Exception e) { - console.printInfo("Exception: "+e.getMessage()); - if (++failedCounter % maxRetryInterval/checkInterval == 0 + console.printInfo("Exception: " + e.getMessage()); + if (++failedCounter % maxRetryInterval / checkInterval == 0 || e instanceof InterruptedException) { try { console.printInfo("Killing DAG..."); dagClient.tryKillDAG(); - } catch(IOException io) { + } catch (IOException io) { // best effort - } catch(TezException te) { + } catch (TezException te) { // best effort } e.printStackTrace(); @@ -194,7 +382,7 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, } finally { if (done) { if (rc != 0 && status != null) { - for (String diag: status.getDiagnostics()) { + for (String diag : status.getDiagnostics()) { console.printError(diag); } } @@ -222,7 +410,323 @@ public static void killRunningJobs() { } } + private static long getCounterValueByGroupName(TezCounters vertexCounters, + String groupNamePattern, + String counterName) { + TezCounter tezCounter = vertexCounters.getGroup(groupNamePattern).findCounter(counterName); + return (tezCounter == null) ? 0 : tezCounter.getValue(); + } + + private void printMethodsSummary() { + long totalInPrepTime = 0; + + String[] perfLoggerReportMethods = { + (PerfLogger.PARSE), + (PerfLogger.ANALYZE), + (PerfLogger.TEZ_BUILD_DAG), + (PerfLogger.TEZ_SUBMIT_TO_RUNNING) + }; + + /* Build the method summary header */ + String methodBreakdownHeader = String.format("%-30s %-13s", METHOD, DURATION); + console.printInfo(methodBreakdownHeader); + + for (String method : perfLoggerReportMethods) { + long duration = perfLogger.getDuration(method); + totalInPrepTime += duration; + console.printInfo(String.format("%-30s %11s", method, commaFormat.format(duration))); + } + + /* + * The counters list above don't capture the total time from TimeToSubmit.startTime till + * TezRunDag.startTime, so calculate the duration and print it. + */ + totalInPrepTime = perfLogger.getStartTime(PerfLogger.TEZ_RUN_DAG) - + perfLogger.getStartTime(PerfLogger.TIME_TO_SUBMIT); + + console.printInfo(String.format("%-30s %11s\n", TOTAL_PREP_TIME, commaFormat.format( + totalInPrepTime))); + } + + private void printDagSummary(Map progressMap, LogHelper console, + DAGClient dagClient, HiveConf conf, DAG dag) { + + /* Strings for headers and counters */ + String hiveCountersGroup = conf.getVar(conf, HiveConf.ConfVars.HIVECOUNTERGROUP); + Set statusGetOpts = EnumSet.of(StatusGetOpts.GET_COUNTERS); + TezCounters hiveCounters = null; + try { + hiveCounters = dagClient.getDAGStatus(statusGetOpts).getDAGCounters(); + } catch (IOException e) { + // best attempt, shouldn't really kill DAG for this + } catch (TezException e) { + // best attempt, shouldn't really kill DAG for this + } + + /* If the counters are missing there is no point trying to print progress */ + if (hiveCounters == null) { + return; + } + + /* Print the per Vertex summary */ + console.printInfo(SUMMARY_HEADER); + SortedSet keys = new TreeSet(progressMap.keySet()); + Set statusOptions = new HashSet(1); + statusOptions.add(StatusGetOpts.GET_COUNTERS); + for (String vertexName : keys) { + Progress progress = progressMap.get(vertexName); + if (progress != null) { + final int totalTasks = progress.getTotalTaskCount(); + final int failedTaskAttempts = progress.getFailedTaskAttemptCount(); + final int killedTasks = progress.getKilledTaskCount(); + final double duration = + perfLogger.getDuration(PerfLogger.TEZ_RUN_VERTEX + vertexName) / 1000.0; + VertexStatus vertexStatus = null; + try { + vertexStatus = dagClient.getVertexStatus(vertexName, statusOptions); + } catch (IOException e) { + // best attempt, shouldn't really kill DAG for this + } catch (TezException e) { + // best attempt, shouldn't really kill DAG for this + } + + if (vertexStatus == null) { + continue; + } + + Vertex currentVertex = dag.getVertex(vertexName); + List inputVerticesList = currentVertex.getInputVertices(); + long hiveInputRecordsFromOtherVertices = 0; + if (inputVerticesList.size() > 0) { + + for (Vertex inputVertex : inputVerticesList) { + String inputVertexName = inputVertex.getName(); + hiveInputRecordsFromOtherVertices += getCounterValueByGroupName(hiveCounters, + hiveCountersGroup, String.format("%s_", + ReduceSinkOperator.Counter.RECORDS_OUT_INTERMEDIATE.toString()) + + inputVertexName.replace(" ", "_")); + + hiveInputRecordsFromOtherVertices += getCounterValueByGroupName(hiveCounters, + hiveCountersGroup, String.format("%s_", + FileSinkOperator.Counter.RECORDS_OUT.toString()) + + inputVertexName.replace(" ", "_")); + } + } + + /* + * Get the CPU & GC + * + * counters org.apache.tez.common.counters.TaskCounter + * GC_TIME_MILLIS=37712 + * CPU_MILLISECONDS=2774230 + */ + final TezCounters vertexCounters = vertexStatus.getVertexCounters(); + final double cpuTimeMillis = getCounterValueByGroupName(vertexCounters, + TaskCounter.class.getName(), + TaskCounter.CPU_MILLISECONDS.name()); + + final double gcTimeMillis = getCounterValueByGroupName(vertexCounters, + TaskCounter.class.getName(), + TaskCounter.GC_TIME_MILLIS.name()); + + /* + * Get the HIVE counters + * + * HIVE + * CREATED_FILES=1 + * DESERIALIZE_ERRORS=0 + * RECORDS_IN_Map_1=550076554 + * RECORDS_OUT_INTERMEDIATE_Map_1=854987 + * RECORDS_OUT_Reducer_2=1 + */ + final long hiveInputRecords = getCounterValueByGroupName(hiveCounters, hiveCountersGroup, + MapOperator.Counter.RECORDS_IN.toString()) + hiveInputRecordsFromOtherVertices; + final long hiveOutputIntermediateRecords = getCounterValueByGroupName(hiveCounters, + hiveCountersGroup, ReduceSinkOperator.Counter.RECORDS_OUT_INTERMEDIATE.toString()); + final long hiveOutputRecords = getCounterValueByGroupName(hiveCounters, hiveCountersGroup, + FileSinkOperator.Counter.RECORDS_OUT.toString()) + hiveOutputIntermediateRecords; + + String vertexExecutionStats = String.format(SUMMARY_VERTEX_FORMAT, + vertexName, + totalTasks, + failedTaskAttempts, + killedTasks, + secondsFormat.format((duration)), + commaFormat.format(cpuTimeMillis), + commaFormat.format(gcTimeMillis), + commaFormat.format(hiveInputRecords), + commaFormat.format(hiveOutputRecords)); + console.printInfo(vertexExecutionStats); + } + } + } + + private void printStatusInPlace(Map progressMap, long startTime, + boolean vextexStatusFromAM, DAGClient dagClient) { + StringBuffer reportBuffer = new StringBuffer(); + int sumComplete = 0; + int sumTotal = 0; + + // position the cursor to line 0 + repositionCursor(); + + // print header + // ------------------------------------------------------------------------------- + // VERTICES STATUS TOTAL COMPLETED RUNNING PENDING FAILED KILLED + // ------------------------------------------------------------------------------- + reprintLine(separator); + reprintLineWithColorAsBold(HEADER, Ansi.Color.CYAN); + reprintLine(separator); + + SortedSet keys = new TreeSet(progressMap.keySet()); + int idx = 0; + int maxKeys = keys.size(); + for (String s : keys) { + idx++; + Progress progress = progressMap.get(s); + final int complete = progress.getSucceededTaskCount(); + final int total = progress.getTotalTaskCount(); + final int running = progress.getRunningTaskCount(); + final int failed = progress.getFailedTaskAttemptCount(); + final int pending = progress.getTotalTaskCount() - progress.getSucceededTaskCount() - + progress.getRunningTaskCount(); + final int killed = progress.getKilledTaskCount(); + + // To get vertex status we can use DAGClient.getVertexStatus(), but it will be expensive to + // get status from AM for every refresh of the UI. Lets infer the state from task counts. + // Only if DAG is FAILED or KILLED the vertex status is fetched from AM. + VertexStatus.State vertexState = VertexStatus.State.INITIALIZING; + + // INITED state + if (total > 0) { + vertexState = VertexStatus.State.INITED; + sumComplete += complete; + sumTotal += total; + } + + // RUNNING state + if (complete < total && (complete > 0 || running > 0 || failed > 0)) { + vertexState = VertexStatus.State.RUNNING; + if (!perfLogger.startTimeHasMethod(PerfLogger.TEZ_RUN_VERTEX + s)) { + perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.TEZ_RUN_VERTEX + s); + } + } + + // SUCCEEDED state + if (complete == total) { + vertexState = VertexStatus.State.SUCCEEDED; + if (!completed.contains(s)) { + completed.add(s); + + /* We may have missed the start of the vertex + * due to the 3 seconds interval + */ + if (!perfLogger.startTimeHasMethod(PerfLogger.TEZ_RUN_VERTEX + s)) { + perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.TEZ_RUN_VERTEX + s); + } + + perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.TEZ_RUN_VERTEX + s); + } + } + + // DAG might have been killed, lets try to get vertex state from AM before dying + // KILLED or FAILED state + if (vextexStatusFromAM) { + VertexStatus vertexStatus = null; + try { + vertexStatus = dagClient.getVertexStatus(s, null); + } catch (IOException e) { + // best attempt, shouldn't really kill DAG for this + } catch (TezException e) { + // best attempt, shouldn't really kill DAG for this + } + if (vertexStatus != null) { + vertexState = vertexStatus.getState(); + } + } + + // Map 1 .......... SUCCEEDED 7 7 0 0 0 0 + String nameWithProgress = getNameWithProgress(s, complete, total); + String vertexStr = String.format(VERTEX_FORMAT, + nameWithProgress, + vertexState.toString(), + total, + complete, + running, + pending, + failed, + killed); + reportBuffer.append(vertexStr); + if (idx != maxKeys) { + reportBuffer.append("\n"); + } + } + + reprintMultiLine(reportBuffer.toString()); + + // ------------------------------------------------------------------------------- + // VERTICES: 03/04 [=================>>-----] 86% ELAPSED TIME: 1.71 s + // ------------------------------------------------------------------------------- + reprintLine(separator); + final float progress = (sumTotal == 0) ? 0.0f : (float) sumComplete / (float) sumTotal; + String footer = getFooter(keys.size(), completed.size(), progress, startTime); + reprintLineWithColorAsBold(footer, Ansi.Color.RED); + reprintLine(separator); + } + + // Map 1 .......... + private String getNameWithProgress(String s, int complete, int total) { + float percent = total == 0 ? 0.0f : (float) complete / (float) total; + // lets use the remaining space in column 1 as progress bar + int spaceRemaining = COLUMN_1_WIDTH - s.length() - 1; + String result = s + " "; + int toFill = (int) (spaceRemaining * percent); + for (int i = 0; i < toFill; i++) { + result += "."; + } + return result; + } + + // VERTICES: 03/04 [==================>>-----] 86% ELAPSED TIME: 1.71 s + private String getFooter(int keySize, int completedSize, float progress, long startTime) { + String verticesSummary = String.format("VERTICES: %02d/%02d", completedSize, keySize); + String progressBar = getInPlaceProgressBar(progress); + final int progressPercent = (int) (progress * 100); + String progressStr = "" + progressPercent + "%"; + float et = (float) (System.currentTimeMillis() - startTime) / (float) 1000; + String elapsedTime = "ELAPSED TIME: " + secondsFormat.format(et) + " s"; + String footer = String.format(FOOTER_FORMAT, + verticesSummary, progressBar, progressStr, elapsedTime); + return footer; + } + + // [==================>>-----] + private String getInPlaceProgressBar(float percent) { + StringBuilder bar = new StringBuilder("["); + int remainingChars = progressBarChars - 4; + int completed = (int) (remainingChars * percent); + int pending = remainingChars - completed; + for (int i = 0; i < completed; i++) { + bar.append("="); + } + bar.append(">>"); + for (int i = 0; i < pending; i++) { + bar.append("-"); + } + bar.append("]"); + return bar.toString(); + } + private String printStatus(Map progressMap, String lastReport, LogHelper console) { + String report = getReport(progressMap); + if (!report.equals(lastReport) || System.currentTimeMillis() >= lastPrintTime + printInterval) { + console.printInfo(report); + lastPrintTime = System.currentTimeMillis(); + } + return report; + } + + private String getReport(Map progressMap) { StringBuffer reportBuffer = new StringBuffer(); SortedSet keys = new TreeSet(progressMap.keySet()); @@ -231,7 +735,7 @@ private String printStatus(Map progressMap, String lastReport, final int complete = progress.getSucceededTaskCount(); final int total = progress.getTotalTaskCount(); final int running = progress.getRunningTaskCount(); - final int failed = progress.getFailedTaskCount(); + final int failed = progress.getFailedTaskAttemptCount(); if (total <= 0) { reportBuffer.append(String.format("%s: -/-\t", s, complete, total)); } else { @@ -258,12 +762,6 @@ private String printStatus(Map progressMap, String lastReport, } } - String report = reportBuffer.toString(); - if (!report.equals(lastReport) || System.currentTimeMillis() >= lastPrintTime + printInterval) { - console.printInfo(report); - lastPrintTime = System.currentTimeMillis(); - } - - return report; + return reportBuffer.toString(); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java index e6bbe9a47529..97684a816bae 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java @@ -163,7 +163,7 @@ public int execute(DriverContext driverContext) { // finally monitor will print progress until the job is done TezJobMonitor monitor = new TezJobMonitor(); - rc = monitor.monitorExecution(client, ctx.getHiveTxnManager(), conf); + rc = monitor.monitorExecution(client, ctx.getHiveTxnManager(), conf, dag); // fetch the counters Set statusGetOpts = EnumSet.of(StatusGetOpts.GET_COUNTERS); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java b/ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java index c4327fccc3d6..4e2b1300df14 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java @@ -18,14 +18,14 @@ package org.apache.hadoop.hive.ql.log; -import java.util.HashMap; -import java.util.Map; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.QueryPlan; import org.apache.hadoop.hive.ql.session.SessionState; +import java.util.HashMap; +import java.util.Map; + /** * PerfLogger. * @@ -147,10 +147,37 @@ public void close(Log _log, QueryPlan queryPlan) { } public Long getStartTime(String method) { - return startTimes.get(method); + long startTime = 0L; + + if (startTimes.containsKey(method)) { + startTime = startTimes.get(method); + } + return startTime; } public Long getEndTime(String method) { - return endTimes.get(method); + long endTime = 0L; + + if (endTimes.containsKey(method)) { + endTime = endTimes.get(method); + } + return endTime; } + + public boolean startTimeHasMethod(String method) { + return startTimes.containsKey(method); + } + + public boolean endTimeHasMethod(String method) { + return endTimes.containsKey(method); + } + + public Long getDuration(String method) { + long duration = 0; + if (startTimes.containsKey(method) && endTimes.containsKey(method)) { + duration = endTimes.get(method) - startTimes.get(method); + } + return duration; + } + } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index af633cbdfe16..2806bd1a3b17 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -805,6 +805,14 @@ public boolean getIsSilent() { return (ss != null) ? ss.getIsSilent() : isSilent; } + public void logInfo(String info) { + logInfo(info, null); + } + + public void logInfo(String info, String detail) { + LOG.info(info + StringUtils.defaultString(detail)); + } + public void printInfo(String info) { printInfo(info, null); } From a5f64a7595d6502ec09740d8e877be4c0a27398e Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Mon, 3 Nov 2014 03:58:13 +0000 Subject: [PATCH 238/339] HIVE-8689: handle overflows in statistics better (Sergey Shelukhin reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636236 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/exec/Utilities.java | 9 ++-- .../ql/optimizer/SetReducerParallelism.java | 5 +- .../annotation/StatsRulesProcFactory.java | 51 +++++++++--------- .../hadoop/hive/ql/stats/StatsUtils.java | 53 +++++++++++++------ 4 files changed, 72 insertions(+), 46 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 03d11725d1fa..913288f7280b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -3131,12 +3131,11 @@ public static int estimateNumberOfReducers(HiveConf conf, ContentSummary inputSu public static int estimateReducers(long totalInputFileSize, long bytesPerReducer, int maxReducers, boolean powersOfTwo) { - - int reducers = (int) ((totalInputFileSize + bytesPerReducer - 1) / bytesPerReducer); + double bytes = Math.max(totalInputFileSize, bytesPerReducer); + int reducers = (int) Math.ceil(bytes / bytesPerReducer); reducers = Math.max(1, reducers); reducers = Math.min(maxReducers, reducers); - int reducersLog = (int)(Math.log(reducers) / Math.log(2)) + 1; int reducersPowerTwo = (int)Math.pow(2, reducersLog); @@ -3175,7 +3174,7 @@ public static long getTotalInputFileSize (ContentSummary inputSummary, MapWork w } if (highestSamplePercentage >= 0) { - totalInputFileSize = Math.min((long) (totalInputFileSize * highestSamplePercentage / 100D) + totalInputFileSize = Math.min((long) (totalInputFileSize * (highestSamplePercentage / 100D)) , totalInputFileSize); } return totalInputFileSize; @@ -3199,7 +3198,7 @@ public static long getTotalInputNumFiles (ContentSummary inputSummary, MapWork w } if (highestSamplePercentage >= 0) { - totalInputNumFiles = Math.min((long) (totalInputNumFiles * highestSamplePercentage / 100D) + totalInputNumFiles = Math.min((long) (totalInputNumFiles * (highestSamplePercentage / 100D)) , totalInputNumFiles); } return totalInputNumFiles; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetReducerParallelism.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetReducerParallelism.java index fef2c296b3a2..e9fdeb08ab71 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetReducerParallelism.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetReducerParallelism.java @@ -31,11 +31,13 @@ import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.lib.NodeProcessor; import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx; +import org.apache.hadoop.hive.ql.optimizer.stats.annotation.StatsRulesProcFactory; import org.apache.hadoop.hive.ql.parse.OptimizeTezProcContext; import org.apache.hadoop.hive.ql.parse.SemanticException; import org.apache.hadoop.hive.ql.plan.ExprNodeDesc.ExprNodeDescEqualityWrapper; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc; +import org.apache.hadoop.hive.ql.stats.StatsUtils; import static org.apache.hadoop.hive.ql.plan.ReduceSinkDesc.ReducerTraits.AUTOPARALLEL; import static org.apache.hadoop.hive.ql.plan.ReduceSinkDesc.ReducerTraits.UNIFORM; @@ -82,7 +84,8 @@ public Object process(Node nd, Stack stack, for (Operator sibling: sink.getChildOperators().get(0).getParentOperators()) { if (sibling.getStatistics() != null) { - numberOfBytes += sibling.getStatistics().getDataSize(); + numberOfBytes = StatsUtils.safeAdd( + numberOfBytes, sibling.getStatistics().getDataSize()); } else { LOG.warn("No stats available from: "+sibling); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java index bfbab271b0e2..465d110191dd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java @@ -171,7 +171,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // in case of select(*) the data size does not change if (!sop.getConf().isSelectStar() && !sop.getConf().isSelStarNoCompute()) { long dataSize = StatsUtils.getDataSizeFromColumnStats(stats.getNumRows(), colStats); - stats.setDataSize(StatsUtils.getMaxIfOverflow(dataSize)); + stats.setDataSize(dataSize); } sop.setStatistics(stats); @@ -323,8 +323,8 @@ private long evaluateExpression(Statistics stats, ExprNodeDesc pred, } else if (udf instanceof GenericUDFOPOr) { // for OR condition independently compute and update stats for (ExprNodeDesc child : genFunc.getChildren()) { - newNumRows += evaluateChildExpr(stats, child, aspCtx, neededCols, - fop); + newNumRows = StatsUtils.safeAdd( + evaluateChildExpr(stats, child, aspCtx, neededCols, fop), newNumRows); } } else if (udf instanceof GenericUDFOPNot) { newNumRows = evaluateNotExpr(stats, pred, aspCtx, neededCols, fop); @@ -678,9 +678,9 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, if (cs != null) { long ndv = cs.getCountDistint(); if (cs.getNumNulls() > 0) { - ndv += 1; + ndv = StatsUtils.safeAdd(ndv, 1); } - ndvProduct *= ndv; + ndvProduct = StatsUtils.safeMult(ndvProduct, ndv); } else { if (parentStats.getColumnStatsState().equals(Statistics.State.COMPLETE)) { // the column must be an aggregate column inserted by GBY. We @@ -715,15 +715,16 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, if (mapSideHashAgg) { if (containsGroupingSet) { // Case 4: column stats, hash aggregation, grouping sets - cardinality = Math.min((parentNumRows * sizeOfGroupingSet) / 2, - ndvProduct * parallelism * sizeOfGroupingSet); + cardinality = Math.min( + (StatsUtils.safeMult(parentNumRows, sizeOfGroupingSet)) / 2, + StatsUtils.safeMult(StatsUtils.safeMult(ndvProduct, parallelism), sizeOfGroupingSet)); if (isDebugEnabled) { LOG.debug("[Case 4] STATS-" + gop.toString() + ": cardinality: " + cardinality); } } else { // Case 3: column stats, hash aggregation, NO grouping sets - cardinality = Math.min(parentNumRows / 2, ndvProduct * parallelism); + cardinality = Math.min(parentNumRows / 2, StatsUtils.safeMult(ndvProduct, parallelism)); if (isDebugEnabled) { LOG.debug("[Case 3] STATS-" + gop.toString() + ": cardinality: " + cardinality); @@ -732,7 +733,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, } else { if (containsGroupingSet) { // Case 6: column stats, NO hash aggregation, grouping sets - cardinality = parentNumRows * sizeOfGroupingSet; + cardinality = StatsUtils.safeMult(parentNumRows, sizeOfGroupingSet); if (isDebugEnabled) { LOG.debug("[Case 6] STATS-" + gop.toString() + ": cardinality: " + cardinality); @@ -759,7 +760,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, if (containsGroupingSet) { // Case 8: column stats, grouping sets - cardinality = Math.min(parentNumRows, ndvProduct * sizeOfGroupingSet); + cardinality = Math.min(parentNumRows, StatsUtils.safeMult(ndvProduct, sizeOfGroupingSet)); if (isDebugEnabled) { LOG.debug("[Case 8] STATS-" + gop.toString() + ": cardinality: " + cardinality); @@ -790,7 +791,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, if (containsGroupingSet) { // Case 2: NO column stats, NO hash aggregation, grouping sets - cardinality = parentNumRows * sizeOfGroupingSet; + cardinality = StatsUtils.safeMult(parentNumRows, sizeOfGroupingSet); if (isDebugEnabled) { LOG.debug("[Case 2] STATS-" + gop.toString() + ": cardinality: " + cardinality); @@ -902,7 +903,7 @@ private boolean checkMapSideAggregation(GroupByOperator gop, long avgKeySize = 0; for (ColStatistics cs : colStats) { if (cs != null) { - numEstimatedRows *= cs.getCountDistint(); + numEstimatedRows = StatsUtils.safeMult(numEstimatedRows, cs.getCountDistint()); avgKeySize += Math.ceil(cs.getAvgColLen()); } } @@ -956,7 +957,7 @@ private boolean checkMapSideAggregation(GroupByOperator gop, long hashEntrySize = gop.javaHashEntryOverHead + avgKeySize + avgValSize; // estimated hash table size - long estHashTableSize = StatsUtils.getMaxIfOverflow(numEstimatedRows * hashEntrySize); + long estHashTableSize = StatsUtils.safeMult(numEstimatedRows, hashEntrySize); if (estHashTableSize < maxMemHashAgg) { return true; @@ -1135,7 +1136,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, denom = getEasedOutDenominator(distinctVals); } else { for (Long l : distinctVals) { - denom *= l; + denom = StatsUtils.safeMult(denom, l); } } } else { @@ -1211,13 +1212,13 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, } long maxDataSize = parentSizes.get(maxRowIdx); - long newNumRows = (long) (joinFactor * maxRowCount * (numParents - 1)); - long newDataSize = (long) (joinFactor * maxDataSize * (numParents - 1)); + long newNumRows = StatsUtils.safeMult(StatsUtils.safeMult(maxRowCount, (numParents - 1)), joinFactor); + long newDataSize = StatsUtils.safeMult(StatsUtils.safeMult(maxDataSize, (numParents - 1)), joinFactor); Statistics wcStats = new Statistics(); - wcStats.setNumRows(StatsUtils.getMaxIfOverflow(newNumRows)); - wcStats.setDataSize(StatsUtils.getMaxIfOverflow(newDataSize)); + wcStats.setNumRows(newNumRows); + wcStats.setDataSize(newDataSize); jop.setStatistics(wcStats); - + if (isDebugEnabled) { LOG.debug("[1] STATS-" + jop.toString() + ": " + wcStats.extendedToString()); } @@ -1336,6 +1337,7 @@ private float getSelectivityComplexTree(Operator op) { } } + // No need for overflow checks, assume selectivity is always <= 1.0 float selMultiParent = 1.0f; for(Operator parent : multiParentOp.getParentOperators()) { // In the above example, TS-1 -> RS-1 and TS-2 -> RS-2 are simple trees @@ -1491,7 +1493,7 @@ private long computeNewRowCount(List rowCountParents, long denom) { for (int i = 0; i < rowCountParents.size(); i++) { if (i != maxIdx) { - result *= rowCountParents.get(i); + result = StatsUtils.safeMult(result, rowCountParents.get(i)); } } @@ -1564,7 +1566,7 @@ private long getDenominator(List distinctVals) { long denom = 1; for (int i = 0; i < distinctVals.size(); i++) { if (i != minIdx) { - denom *= distinctVals.get(i); + denom = StatsUtils.safeMult(denom, distinctVals.get(i)); } } return denom; @@ -1608,12 +1610,13 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // in the absence of column statistics, compute data size based on // based on average row size Statistics wcStats = parentStats.clone(); + limit = StatsUtils.getMaxIfOverflow(limit); if (limit <= parentStats.getNumRows()) { long numRows = limit; long avgRowSize = parentStats.getAvgRowSize(); - long dataSize = avgRowSize * limit; - wcStats.setNumRows(StatsUtils.getMaxIfOverflow(numRows)); - wcStats.setDataSize(StatsUtils.getMaxIfOverflow(dataSize)); + long dataSize = StatsUtils.safeMult(avgRowSize, limit); + wcStats.setNumRows(numRows); + wcStats.setDataSize(dataSize); } lop.setStatistics(wcStats); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java index 5a37614834a0..30f63a27cb22 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java @@ -20,6 +20,8 @@ import com.google.common.base.Joiner; import com.google.common.collect.Lists; +import com.google.common.math.DoubleMath; +import com.google.common.math.LongMath; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -390,7 +392,7 @@ private static void setUnknownRcDsToAverage( } if (s <= 0 && rc > 0) { - s = rc * avgRowSize; + s = safeMult(rc, avgRowSize); dataSizes.set(i, s); } } @@ -495,7 +497,7 @@ public static long getSumIgnoreNegatives(List vals) { long result = 0; for (Long l : vals) { if (l > 0) { - result += l; + result = safeAdd(result, l); } } return result; @@ -1259,6 +1261,7 @@ public static long getDataSizeFromColumnStats(long numRows, List if (cs != null) { String colType = cs.getColumnType(); long nonNullCount = numRows - cs.getNumNulls(); + double sizeOf = 0; if (colType.equalsIgnoreCase(serdeConstants.TINYINT_TYPE_NAME) || colType.equalsIgnoreCase(serdeConstants.SMALLINT_TYPE_NAME) || colType.equalsIgnoreCase(serdeConstants.INT_TYPE_NAME) @@ -1266,31 +1269,25 @@ public static long getDataSizeFromColumnStats(long numRows, List || colType.equalsIgnoreCase(serdeConstants.BOOLEAN_TYPE_NAME) || colType.equalsIgnoreCase(serdeConstants.FLOAT_TYPE_NAME) || colType.equalsIgnoreCase(serdeConstants.DOUBLE_TYPE_NAME)) { - - result += nonNullCount * cs.getAvgColLen(); + sizeOf = cs.getAvgColLen(); } else if (colType.equalsIgnoreCase(serdeConstants.STRING_TYPE_NAME) || colType.startsWith(serdeConstants.VARCHAR_TYPE_NAME) || colType.startsWith(serdeConstants.CHAR_TYPE_NAME)) { - int acl = (int) Math.round(cs.getAvgColLen()); - result += nonNullCount * JavaDataModel.get().lengthForStringOfLength(acl); + sizeOf = JavaDataModel.get().lengthForStringOfLength(acl); } else if (colType.equalsIgnoreCase(serdeConstants.BINARY_TYPE_NAME)) { - int acl = (int) Math.round(cs.getAvgColLen()); - result += nonNullCount * JavaDataModel.get().lengthForByteArrayOfSize(acl); + sizeOf = JavaDataModel.get().lengthForByteArrayOfSize(acl); } else if (colType.equalsIgnoreCase(serdeConstants.TIMESTAMP_TYPE_NAME)) { - - result += nonNullCount * JavaDataModel.get().lengthOfTimestamp(); + sizeOf = JavaDataModel.get().lengthOfTimestamp(); } else if (colType.startsWith(serdeConstants.DECIMAL_TYPE_NAME)) { - - result += nonNullCount * JavaDataModel.get().lengthOfDecimal(); + sizeOf = JavaDataModel.get().lengthOfDecimal(); } else if (colType.equalsIgnoreCase(serdeConstants.DATE_TYPE_NAME)) { - - result += nonNullCount * JavaDataModel.get().lengthOfDate(); + sizeOf = JavaDataModel.get().lengthOfDate(); } else { - - result += nonNullCount * cs.getAvgColLen(); + sizeOf = cs.getAvgColLen(); } + result = safeAdd(result, safeMult(nonNullCount, sizeOf)); } } @@ -1436,4 +1433,28 @@ public static long getAvailableMemory(Configuration conf) { public static long getMaxIfOverflow(long val) { return val < 0 ? Long.MAX_VALUE : val; } + + /** Bounded multiplication - overflows become MAX_VALUE */ + public static long safeMult(long a, double b) { + double result = a * b; + return (result > Long.MAX_VALUE) ? Long.MAX_VALUE : (long)result; + } + + /** Bounded addition - overflows become MAX_VALUE */ + public static long safeAdd(long a, long b) { + try { + return LongMath.checkedAdd(a, b); + } catch (ArithmeticException ex) { + return Long.MAX_VALUE; + } + } + + /** Bounded multiplication - overflows become MAX_VALUE */ + public static long safeMult(long a, long b) { + try { + return LongMath.checkedMultiply(a, b); + } catch (ArithmeticException ex) { + return Long.MAX_VALUE; + } + } } From 9ef567c7f88a00f4decf4cf9c724af0b95bf0037 Mon Sep 17 00:00:00 2001 From: Sushanth Sowmyan Date: Mon, 3 Nov 2014 21:30:22 +0000 Subject: [PATCH 239/339] HIVE-8704 : HivePassThroughOutputFormat cannot proxy more than one kind of OF (in one process) (Sushanth Sowmyan, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636451 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/io/HiveFileFormatUtils.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/HiveFileFormatUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/io/HiveFileFormatUtils.java index 93e284e53e98..2ac60c04c013 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/HiveFileFormatUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/HiveFileFormatUtils.java @@ -74,7 +74,12 @@ public final class HiveFileFormatUtils { SequenceFileOutputFormat.class, HiveSequenceFileOutputFormat.class); } - static String realoutputFormat; + private static ThreadLocal tRealOutputFormat = new ThreadLocal() { + @Override + protected String initialValue() { + return null; + } + }; @SuppressWarnings("unchecked") private static Map, Class> @@ -105,11 +110,9 @@ public static synchronized Class getOutputFormatSubs } Class result = outputFormatSubstituteMap .get(origin); - //register this output format into the map for the first time - if ((storagehandlerflag == true) && (result == null)) { + if ((storagehandlerflag == true) && (result == null || result == HivePassThroughOutputFormat.class)) { HiveFileFormatUtils.setRealOutputFormatClassName(origin.getName()); result = HivePassThroughOutputFormat.class; - HiveFileFormatUtils.registerOutputFormatSubstitute((Class) origin,HivePassThroughOutputFormat.class); } return result; } @@ -120,7 +123,7 @@ public static synchronized Class getOutputFormatSubs @SuppressWarnings("unchecked") public static String getRealOutputFormatClassName() { - return realoutputFormat; + return tRealOutputFormat.get(); } /** @@ -129,7 +132,7 @@ public static String getRealOutputFormatClassName() public static void setRealOutputFormatClassName( String destination) { if (destination != null){ - realoutputFormat = destination; + tRealOutputFormat.set(destination); } else { return; From a52b05e47cdc6f58e30cd7d4ed95b3cbdd70e929 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Tue, 4 Nov 2014 00:34:44 +0000 Subject: [PATCH 240/339] HIVE-8714 : getDatabase reports direct SQL error when database is missing (Sergey Shelukhin, reviewed by Ashutosh Chauhan and Sushanth Sowmyan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636481 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/metastore/MetaStoreDirectSql.java | 49 ++++++++++--------- .../hadoop/hive/metastore/ObjectStore.java | 15 ++++-- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java index dea0f914bc98..b6c633cc5399 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java @@ -48,7 +48,6 @@ import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.MetaException; -import org.apache.hadoop.hive.metastore.api.NoSuchObjectException; import org.apache.hadoop.hive.metastore.api.Order; import org.apache.hadoop.hive.metastore.api.Partition; import org.apache.hadoop.hive.metastore.api.PrincipalType; @@ -151,18 +150,17 @@ public boolean isCompatibleDatastore() { * here - for eg., for MySQL, we signal that we want to use ANSI SQL quoting behaviour */ private void doDbSpecificInitializationsBeforeQuery() throws MetaException { - if (isMySql){ - try { - assert pm.currentTransaction().isActive(); // must be inside tx together with queries - trySetAnsiQuotesForMysql(); - } catch (SQLException sqlEx) { - throw new MetaException("Error setting ansi quotes: " + sqlEx.getMessage()); - } + if (!isMySql) return; + try { + assert pm.currentTransaction().isActive(); // must be inside tx together with queries + trySetAnsiQuotesForMysql(); + } catch (SQLException sqlEx) { + throw new MetaException("Error setting ansi quotes: " + sqlEx.getMessage()); } } /** - * MySQL, by default, doesn't recognize ANSI quotes which need to have for Postgres. + * MySQL, by default, doesn't recognize ANSI quotes which we need to have for Postgres. * Try to set the ANSI quotes mode on for the session. Due to connection pooling, needs * to be called in the same transaction as the actual queries. */ @@ -194,18 +192,20 @@ public Database getDatabase(String dbName) throws MetaException{ Object[] params = new Object[] { dbName }; queryDbSelector = pm.newQuery("javax.jdo.query.SQL", queryTextDbSelector); - LOG.debug("getDatabase:query instantiated : " + queryTextDbSelector + " with param ["+params[0]+"]"); + if (LOG.isTraceEnabled()) { + LOG.trace("getDatabase:query instantiated : " + queryTextDbSelector + + " with param [" + params[0] + "]"); + } + @SuppressWarnings("unchecked") List sqlResult = (List)queryDbSelector.executeWithArray(params); if ((sqlResult == null) || sqlResult.isEmpty()) { - LOG.debug("getDatabase:queryDbSelector ran, returned no/empty results, returning NoSuchObjectException"); - throw new MetaException("There is no database named " + dbName); + return null; } assert(sqlResult.size() == 1); - if (sqlResult.get(0) == null){ - LOG.debug("getDatabase:queryDbSelector ran, returned results, but the result entry was null, returning NoSuchObjectException"); - throw new MetaException("There is no database named " + dbName); + if (sqlResult.get(0) == null) { + return null; } Object[] dbline = sqlResult.get(0); @@ -215,25 +215,28 @@ public Database getDatabase(String dbName) throws MetaException{ + " FROM \"DATABASE_PARAMS\" " + " WHERE \"DB_ID\" = ? " + " AND \"PARAM_KEY\" IS NOT NULL"; - Object[] params2 = new Object[] { dbid }; - queryDbParams = pm.newQuery("javax.jdo.query.SQL",queryTextDbParams); - LOG.debug("getDatabase:query2 instantiated : " + queryTextDbParams + " with param ["+params2[0]+"]"); + params[0] = dbid; + queryDbParams = pm.newQuery("javax.jdo.query.SQL", queryTextDbParams); + if (LOG.isTraceEnabled()) { + LOG.trace("getDatabase:query2 instantiated : " + queryTextDbParams + + " with param [" + params[0] + "]"); + } Map dbParams = new HashMap(); - List sqlResult2 = ensureList(queryDbParams.executeWithArray(params2)); - if (!sqlResult2.isEmpty()){ - for (Object[] line : sqlResult2){ + List sqlResult2 = ensureList(queryDbParams.executeWithArray(params)); + if (!sqlResult2.isEmpty()) { + for (Object[] line : sqlResult2) { dbParams.put(extractSqlString(line[0]),extractSqlString(line[1])); } } - LOG.debug("getDatabase: instantiating db object to return"); Database db = new Database(); db.setName(extractSqlString(dbline[1])); db.setLocationUri(extractSqlString(dbline[2])); db.setDescription(extractSqlString(dbline[3])); db.setOwnerName(extractSqlString(dbline[4])); String type = extractSqlString(dbline[5]); - db.setOwnerType((null == type || type.trim().isEmpty()) ? null : PrincipalType.valueOf(type)); + db.setOwnerType( + (null == type || type.trim().isEmpty()) ? null : PrincipalType.valueOf(type)); db.setParameters(dbParams); if (LOG.isDebugEnabled()){ LOG.debug("getDatabase: directsql returning db " + db.getName() diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java index d41d10d41aad..c1a2a46a0554 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -523,17 +523,22 @@ private MDatabase getMDatabase(String name) throws NoSuchObjectException { @Override public Database getDatabase(String name) throws NoSuchObjectException { + MetaException ex = null; + Database db = null; try { - return getDatabaseInternal(name); + db = getDatabaseInternal(name); } catch (MetaException e) { // Signature restriction to NSOE, and NSOE being a flat exception prevents us from // setting the cause of the NSOE as the MetaException. We should not lose the info // we got here, but it's very likely that the MetaException is irrelevant and is // actually an NSOE message, so we should log it and throw an NSOE with the msg. - LOG.warn("Got a MetaException trying to call getDatabase(" - +name+"), returning NoSuchObjectException", e); - throw new NoSuchObjectException(e.getMessage()); + ex = e; } + if (db == null) { + LOG.warn("Failed to get database " + name +", returning NoSuchObjectException", ex); + throw new NoSuchObjectException(name + (ex == null ? "" : (": " + ex.getMessage()))); + } + return db; } public Database getDatabaseInternal(String name) throws MetaException, NoSuchObjectException { @@ -2377,7 +2382,7 @@ private boolean setResult(T results) { } private void handleDirectSqlError(Exception ex) throws MetaException, NoSuchObjectException { - LOG.error("Direct SQL failed" + (allowJdo ? ", falling back to ORM" : ""), ex); + LOG.warn("Direct SQL failed" + (allowJdo ? ", falling back to ORM" : ""), ex); if (!allowJdo) { if (ex instanceof MetaException) { throw (MetaException)ex; From 47774aae5d0f51cfbaab3a8ace706bdda2258e07 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Tue, 4 Nov 2014 02:26:34 +0000 Subject: [PATCH 241/339] HIVE-8715 : Hive 14 upgrade scripts can fail for statistics if database was created using auto-create (Sergey Shelukhin, reviewed by Ashutosh Chauhan and Xiaobing Zhou) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636490 13f79535-47bb-0310-9956-ffa450edef68 --- .../upgrade/mssql/002-HIVE-7784.mssql.sql | 31 +++++++++++++++++++ .../upgrade/mysql/019-HIVE-7784.mysql.sql | 30 ++++++++++++++++++ .../upgrade/oracle/020-HIVE-7784.oracle.sql | 26 ++++++++++++++++ .../postgres/019-HIVE-7784.postgres.sql | 28 +++++++++++++++++ 4 files changed, 115 insertions(+) diff --git a/metastore/scripts/upgrade/mssql/002-HIVE-7784.mssql.sql b/metastore/scripts/upgrade/mssql/002-HIVE-7784.mssql.sql index cc6ba093f47c..b4bbf7b99136 100644 --- a/metastore/scripts/upgrade/mssql/002-HIVE-7784.mssql.sql +++ b/metastore/scripts/upgrade/mssql/002-HIVE-7784.mssql.sql @@ -1 +1,32 @@ +-- +-- Create the table if it doesn't exist. +-- +if not exists (SELECT 1 FROM INFORMATION_SCHEMA.TABLES + WHERE TABLE_NAME='PART_COL_STATS') +CREATE TABLE PART_COL_STATS +( + CS_ID bigint NOT NULL, + AVG_COL_LEN float NULL, + "COLUMN_NAME" varchar(128) NOT NULL, + COLUMN_TYPE varchar(128) NOT NULL, + DB_NAME varchar(128) NOT NULL, + BIG_DECIMAL_HIGH_VALUE varchar(255) NULL, + BIG_DECIMAL_LOW_VALUE varchar(255) NULL, + DOUBLE_HIGH_VALUE float NULL, + DOUBLE_LOW_VALUE float NULL, + LAST_ANALYZED bigint NOT NULL, + LONG_HIGH_VALUE bigint NULL, + LONG_LOW_VALUE bigint NULL, + MAX_COL_LEN bigint NULL, + NUM_DISTINCTS bigint NULL, + NUM_FALSES bigint NULL, + NUM_NULLS bigint NOT NULL, + NUM_TRUES bigint NULL, + PART_ID bigint NULL, + PARTITION_NAME varchar(767) NOT NULL, + "TABLE_NAME" varchar(128) NOT NULL +) +go + + CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME); diff --git a/metastore/scripts/upgrade/mysql/019-HIVE-7784.mysql.sql b/metastore/scripts/upgrade/mysql/019-HIVE-7784.mysql.sql index 5d847bcd5927..6afd6527b3df 100644 --- a/metastore/scripts/upgrade/mysql/019-HIVE-7784.mysql.sql +++ b/metastore/scripts/upgrade/mysql/019-HIVE-7784.mysql.sql @@ -1 +1,31 @@ +-- +-- Create the table if it doesn't exist. +-- +CREATE TABLE IF NOT EXISTS `PART_COL_STATS` ( + `CS_ID` bigint(20) NOT NULL, + `DB_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, + `TABLE_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, + `PARTITION_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, + `COLUMN_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, + `COLUMN_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, + `PART_ID` bigint(20) NOT NULL, + `LONG_LOW_VALUE` bigint(20), + `LONG_HIGH_VALUE` bigint(20), + `DOUBLE_HIGH_VALUE` double(53,4), + `DOUBLE_LOW_VALUE` double(53,4), + `BIG_DECIMAL_LOW_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin, + `BIG_DECIMAL_HIGH_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin, + `NUM_NULLS` bigint(20) NOT NULL, + `NUM_DISTINCTS` bigint(20), + `AVG_COL_LEN` double(53,4), + `MAX_COL_LEN` bigint(20), + `NUM_TRUES` bigint(20), + `NUM_FALSES` bigint(20), + `LAST_ANALYZED` bigint(20) NOT NULL, + PRIMARY KEY (`CS_ID`), + CONSTRAINT `PART_COL_STATS_FK` FOREIGN KEY (`PART_ID`) REFERENCES `PARTITIONS` (`PART_ID`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + + + CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME) USING BTREE; diff --git a/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql b/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql index cc6ba093f47c..611232131fc5 100644 --- a/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql +++ b/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql @@ -1 +1,27 @@ +-- +-- Create the table if it doesn't exist. +-- +CREATE TABLE IF NOT EXISTS PART_COL_STATS ( + CS_ID NUMBER NOT NULL, + DB_NAME VARCHAR2(128) NOT NULL, + TABLE_NAME VARCHAR2(128) NOT NULL, + PARTITION_NAME VARCHAR2(767) NOT NULL, + COLUMN_NAME VARCHAR2(128) NOT NULL, + COLUMN_TYPE VARCHAR2(128) NOT NULL, + PART_ID NUMBER NOT NULL, + LONG_LOW_VALUE NUMBER, + LONG_HIGH_VALUE NUMBER, + DOUBLE_LOW_VALUE NUMBER, + DOUBLE_HIGH_VALUE NUMBER, + BIG_DECIMAL_LOW_VALUE VARCHAR2(4000), + BIG_DECIMAL_HIGH_VALUE VARCHAR2(4000), + NUM_NULLS NUMBER NOT NULL, + NUM_DISTINCTS NUMBER, + AVG_COL_LEN NUMBER, + MAX_COL_LEN NUMBER, + NUM_TRUES NUMBER, + NUM_FALSES NUMBER, + LAST_ANALYZED NUMBER NOT NULL +); + CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME); diff --git a/metastore/scripts/upgrade/postgres/019-HIVE-7784.postgres.sql b/metastore/scripts/upgrade/postgres/019-HIVE-7784.postgres.sql index ac6b74936793..8c452a000512 100644 --- a/metastore/scripts/upgrade/postgres/019-HIVE-7784.postgres.sql +++ b/metastore/scripts/upgrade/postgres/019-HIVE-7784.postgres.sql @@ -1 +1,29 @@ +-- +-- Create the table if it doesn't exist. +-- + +CREATE TABLE IF NOT EXISTS "PART_COL_STATS" ( + "CS_ID" bigint NOT NULL, + "DB_NAME" character varying(128) DEFAULT NULL::character varying, + "TABLE_NAME" character varying(128) DEFAULT NULL::character varying, + "PARTITION_NAME" character varying(767) DEFAULT NULL::character varying, + "COLUMN_NAME" character varying(128) DEFAULT NULL::character varying, + "COLUMN_TYPE" character varying(128) DEFAULT NULL::character varying, + "PART_ID" bigint NOT NULL, + "LONG_LOW_VALUE" bigint, + "LONG_HIGH_VALUE" bigint, + "DOUBLE_LOW_VALUE" double precision, + "DOUBLE_HIGH_VALUE" double precision, + "BIG_DECIMAL_LOW_VALUE" character varying(4000) DEFAULT NULL::character varying, + "BIG_DECIMAL_HIGH_VALUE" character varying(4000) DEFAULT NULL::character varying, + "NUM_NULLS" bigint NOT NULL, + "NUM_DISTINCTS" bigint, + "AVG_COL_LEN" double precision, + "MAX_COL_LEN" bigint, + "NUM_TRUES" bigint, + "NUM_FALSES" bigint, + "LAST_ANALYZED" bigint NOT NULL +); + + CREATE INDEX "PCS_STATS_IDX" ON "PART_COL_STATS" USING btree ("DB_NAME","TABLE_NAME","COLUMN_NAME","PARTITION_NAME"); From 945b3fb7166cd3cabbba30192f568a5540813c5e Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Tue, 4 Nov 2014 18:21:01 +0000 Subject: [PATCH 242/339] HIVE-8703: More Windows unit test fixes (Jason Dere, reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636675 13f79535-47bb-0310-9956-ffa450edef68 --- .../TestAuthorizationApiAuthorizer.java | 2 +- .../StorageBasedMetastoreTestBase.java | 11 +- ...orageBasedMetastoreAuthorizationDrops.java | 40 +++++ .../test/queries/clientpositive/create_like.q | 8 +- .../queries/clientpositive/stats_noscan_2.q | 3 +- .../clientpositive/input_part10_win.q.out | 55 +++--- .../clientpositive/load_dyn_part14_win.q.out | 170 ++++++++---------- .../clientpositive/scriptfile1_win.q.out | 3 +- 8 files changed, 162 insertions(+), 130 deletions(-) diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestAuthorizationApiAuthorizer.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestAuthorizationApiAuthorizer.java index e65bf4d2ae47..e5182b2db84b 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestAuthorizationApiAuthorizer.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestAuthorizationApiAuthorizer.java @@ -156,7 +156,7 @@ public void testCreateRole() throws Exception { FunctionInvoker invoker = new FunctionInvoker() { @Override public void invoke() throws Exception { - msc.create_role(new Role()); + msc.create_role(new Role("role1", 0, "owner")); } }; testFunction(invoker); diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/StorageBasedMetastoreTestBase.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/StorageBasedMetastoreTestBase.java index b59d2e100ee0..1d8ac2469246 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/StorageBasedMetastoreTestBase.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/StorageBasedMetastoreTestBase.java @@ -34,8 +34,10 @@ import org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener; import org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider; import org.apache.hadoop.hive.ql.session.SessionState; +import org.apache.hadoop.hive.ql.WindowsPathUtil; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.util.Shell; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -55,7 +57,11 @@ protected String getAuthorizationProvider(){ } protected HiveConf createHiveConf() throws Exception { - return new HiveConf(this.getClass()); + HiveConf conf = new HiveConf(this.getClass()); + if (Shell.WINDOWS) { + WindowsPathUtil.convertPathsFromWindowsToHdfs(conf); + } + return conf; } @Before @@ -71,9 +77,8 @@ public void setUp() throws Exception { System.setProperty(HiveConf.ConfVars.HIVE_METASTORE_AUTHENTICATOR_MANAGER.varname, InjectableDummyAuthenticator.class.getName()); - MetaStoreUtils.startMetaStore(port, ShimLoader.getHadoopThriftAuthBridge()); - clientHiveConf = createHiveConf(); + MetaStoreUtils.startMetaStore(port, ShimLoader.getHadoopThriftAuthBridge(), clientHiveConf); // Turn off client-side authorization clientHiveConf.setBoolVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED,false); diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationDrops.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationDrops.java index dfaa080f3587..c7b27a68963e 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationDrops.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationDrops.java @@ -18,10 +18,15 @@ package org.apache.hadoop.hive.ql.security; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.Table; import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; +import org.apache.hadoop.hive.shims.ShimLoader; +import org.apache.hadoop.hive.shims.HadoopShims.MiniDFSShim; import org.junit.Assert; import org.junit.Test; @@ -30,6 +35,41 @@ */ public class TestStorageBasedMetastoreAuthorizationDrops extends StorageBasedMetastoreTestBase { + protected static MiniDFSShim dfs = null; + + @Override + protected HiveConf createHiveConf() throws Exception { + // Hadoop FS ACLs do not work with LocalFileSystem, so set up MiniDFS. + HiveConf conf = super.createHiveConf(); + + String currentUserName = ShimLoader.getHadoopShims().getUGIForConf(conf).getShortUserName(); + conf.set("hadoop.proxyuser." + currentUserName + ".groups", "*"); + conf.set("hadoop.proxyuser." + currentUserName + ".hosts", "*"); + dfs = ShimLoader.getHadoopShims().getMiniDfs(conf, 4, true, null); + FileSystem fs = dfs.getFileSystem(); + + Path warehouseDir = new Path(new Path(fs.getUri()), "/warehouse"); + fs.mkdirs(warehouseDir); + conf.setVar(HiveConf.ConfVars.METASTOREWAREHOUSE, warehouseDir.toString()); + conf.setBoolVar(HiveConf.ConfVars.HIVE_WAREHOUSE_SUBDIR_INHERIT_PERMS, true); + + // Set up scratch directory + Path scratchDir = new Path(new Path(fs.getUri()), "/scratchdir"); + conf.setVar(HiveConf.ConfVars.SCRATCHDIR, scratchDir.toString()); + + return conf; + } + + @Override + public void tearDown() throws Exception { + super.tearDown(); + + if (dfs != null) { + dfs.shutdown(); + dfs = null; + } + } + @Test public void testDropDatabase() throws Exception { dropDatabaseByOtherUser("-rwxrwxrwx", 0); diff --git a/ql/src/test/queries/clientpositive/create_like.q b/ql/src/test/queries/clientpositive/create_like.q index 13539a65f512..a43542a10f4d 100644 --- a/ql/src/test/queries/clientpositive/create_like.q +++ b/ql/src/test/queries/clientpositive/create_like.q @@ -21,8 +21,10 @@ INSERT OVERWRITE TABLE table2 SELECT key, value FROM src WHERE key = 100; SELECT * FROM table1; SELECT * FROM table2; -CREATE EXTERNAL TABLE table4 (a INT) LOCATION '${system:hive.root}/data/files/ext_test'; -CREATE EXTERNAL TABLE table5 LIKE table4 LOCATION '${system:hive.root}/data/files/ext_test'; +dfs -cp ${system:hive.root}/data/files/ext_test ${system:test.tmp.dir}/ext_test; + +CREATE EXTERNAL TABLE table4 (a INT) LOCATION '${system:test.tmp.dir}/ext_test'; +CREATE EXTERNAL TABLE table5 LIKE table4 LOCATION '${system:test.tmp.dir}/ext_test'; SELECT * FROM table4; SELECT * FROM table5; @@ -31,5 +33,5 @@ DROP TABLE table5; SELECT * FROM table4; DROP TABLE table4; -CREATE EXTERNAL TABLE table4 (a INT) LOCATION '${system:hive.root}/data/files/ext_test'; +CREATE EXTERNAL TABLE table4 (a INT) LOCATION '${system:test.tmp.dir}/ext_test'; SELECT * FROM table4; diff --git a/ql/src/test/queries/clientpositive/stats_noscan_2.q b/ql/src/test/queries/clientpositive/stats_noscan_2.q index b106b30476c0..8639ab789561 100644 --- a/ql/src/test/queries/clientpositive/stats_noscan_2.q +++ b/ql/src/test/queries/clientpositive/stats_noscan_2.q @@ -1,7 +1,8 @@ +dfs -cp ${system:hive.root}/data/files/ext_test ${system:test.tmp.dir}/analyze_external; -- test analyze table compute statistiscs [noscan] on external table -- 1 test table -CREATE EXTERNAL TABLE anaylyze_external (a INT) LOCATION '${system:hive.root}/data/files/ext_test'; +CREATE EXTERNAL TABLE anaylyze_external (a INT) LOCATION '${system:test.tmp.dir}/analyze_external'; SELECT * FROM anaylyze_external; analyze table anaylyze_external compute statistics noscan; describe formatted anaylyze_external; diff --git a/ql/src/test/results/clientpositive/input_part10_win.q.out b/ql/src/test/results/clientpositive/input_part10_win.q.out index 92df63c983c6..80da57cbade2 100644 --- a/ql/src/test/results/clientpositive/input_part10_win.q.out +++ b/ql/src/test/results/clientpositive/input_part10_win.q.out @@ -9,6 +9,8 @@ CREATE TABLE part_special ( ts STRING ) PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@part_special POSTHOOK: query: -- INCLUDE_OS_WINDOWS -- included only on windows because of difference in file name encoding logic @@ -20,6 +22,7 @@ CREATE TABLE part_special ( ts STRING ) POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default POSTHOOK: Output: default@part_special PREHOOK: query: EXPLAIN INSERT OVERWRITE TABLE part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455') @@ -29,9 +32,6 @@ POSTHOOK: query: EXPLAIN INSERT OVERWRITE TABLE part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455') SELECT 1, 2 FROM src LIMIT 1 POSTHOOK: type: QUERY -ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_TAB (TOK_TABNAME part_special) (TOK_PARTSPEC (TOK_PARTVAL ds '2008 04 08') (TOK_PARTVAL ts '10:11:12=455')))) (TOK_SELECT (TOK_SELEXPR 1) (TOK_SELEXPR 2)) (TOK_LIMIT 1))) - STAGE DEPENDENCIES: Stage-1 is a root stage Stage-0 depends on stages: Stage-1 @@ -40,32 +40,32 @@ STAGE DEPENDENCIES: STAGE PLANS: Stage: Stage-1 Map Reduce - Alias -> Map Operator Tree: - src + Map Operator Tree: TableScan alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: - expr: 1 - type: int - expr: 2 - type: int + expressions: 1 (type: int), 2 (type: int) outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator sort order: - tag: -1 - value expressions: - expr: _col0 - type: int - expr: _col1 - type: int + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col0 (type: int), _col1 (type: int) Reduce Operator Tree: - Extract + Select Operator + expressions: VALUE._col0 (type: int), VALUE._col1 (type: int) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - GlobalTableId: 1 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -88,7 +88,6 @@ STAGE PLANS: Stage: Stage-2 Stats-Aggr Operator - PREHOOK: query: INSERT OVERWRITE TABLE part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455') SELECT 1, 2 FROM src LIMIT 1 PREHOOK: type: QUERY @@ -103,20 +102,20 @@ POSTHOOK: Lineage: part_special PARTITION(ds=2008 04 08,ts=10:11:12=455).a SIMPL POSTHOOK: Lineage: part_special PARTITION(ds=2008 04 08,ts=10:11:12=455).b SIMPLE [] PREHOOK: query: DESCRIBE EXTENDED part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455') PREHOOK: type: DESCTABLE +PREHOOK: Input: default@part_special POSTHOOK: query: DESCRIBE EXTENDED part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455') POSTHOOK: type: DESCTABLE -POSTHOOK: Lineage: part_special PARTITION(ds=2008 04 08,ts=10:11:12=455).a SIMPLE [] -POSTHOOK: Lineage: part_special PARTITION(ds=2008 04 08,ts=10:11:12=455).b SIMPLE [] -a string None -b string None -ds string None -ts string None +POSTHOOK: Input: default@part_special +a string +b string +ds string +ts string # Partition Information # col_name data_type comment -ds string None -ts string None +ds string +ts string #### A masked pattern was here #### PREHOOK: query: SELECT * FROM part_special WHERE ds='2008 04 08' AND ts = '10:11:12=455' @@ -129,6 +128,4 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@part_special POSTHOOK: Input: default@part_special@ds=2008%2004%2008/ts=10%3A11%3A12%3D455 #### A masked pattern was here #### -POSTHOOK: Lineage: part_special PARTITION(ds=2008 04 08,ts=10:11:12=455).a SIMPLE [] -POSTHOOK: Lineage: part_special PARTITION(ds=2008 04 08,ts=10:11:12=455).b SIMPLE [] 1 2 2008 04 08 10:11:12=455 diff --git a/ql/src/test/results/clientpositive/load_dyn_part14_win.q.out b/ql/src/test/results/clientpositive/load_dyn_part14_win.q.out index 13b6c0be9d15..e499552ce0ca 100644 --- a/ql/src/test/results/clientpositive/load_dyn_part14_win.q.out +++ b/ql/src/test/results/clientpositive/load_dyn_part14_win.q.out @@ -5,6 +5,8 @@ PREHOOK: query: -- INCLUDE_OS_WINDOWS create table if not exists nzhang_part14 (key string) partitioned by (value string) PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@nzhang_part14 POSTHOOK: query: -- INCLUDE_OS_WINDOWS -- included only on windows because of difference in file name encoding logic @@ -12,18 +14,21 @@ POSTHOOK: query: -- INCLUDE_OS_WINDOWS create table if not exists nzhang_part14 (key string) partitioned by (value string) POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default POSTHOOK: Output: default@nzhang_part14 PREHOOK: query: describe extended nzhang_part14 PREHOOK: type: DESCTABLE +PREHOOK: Input: default@nzhang_part14 POSTHOOK: query: describe extended nzhang_part14 POSTHOOK: type: DESCTABLE -key string None -value string None +POSTHOOK: Input: default@nzhang_part14 +key string +value string # Partition Information # col_name data_type comment -value string None +value string #### A masked pattern was here #### PREHOOK: query: explain @@ -46,9 +51,6 @@ select key, value from ( select 'k3' as key, ' ' as value from src limit 2 ) T POSTHOOK: type: QUERY -ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_UNION (TOK_UNION (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR 'k1' key) (TOK_SELEXPR (TOK_FUNCTION TOK_STRING TOK_NULL) value)) (TOK_LIMIT 2))) (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR 'k2' key) (TOK_SELEXPR '' value)) (TOK_LIMIT 2)))) (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR 'k3' key) (TOK_SELEXPR ' ' value)) (TOK_LIMIT 2)))) T)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB (TOK_TABNAME nzhang_part14) (TOK_PARTSPEC (TOK_PARTVAL value)))) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL key)) (TOK_SELEXPR (TOK_TABLE_OR_COL value))))) - STAGE DEPENDENCIES: Stage-1 is a root stage Stage-2 depends on stages: Stage-1, Stage-9, Stage-10 @@ -65,88 +67,79 @@ STAGE DEPENDENCIES: STAGE PLANS: Stage: Stage-1 Map Reduce - Alias -> Map Operator Tree: - null-subquery1-subquery2:t-subquery1-subquery2:src + Map Operator Tree: TableScan alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: - expr: 'k2' - type: string - expr: '' - type: string + expressions: 'k2' (type: string), '' (type: string) outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 85000 Basic stats: COMPLETE Column stats: COMPLETE Limit + Number of rows: 2 + Statistics: Num rows: 2 Data size: 340 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator sort order: - tag: -1 - value expressions: - expr: _col0 - type: string - expr: _col1 - type: string + Statistics: Num rows: 2 Data size: 340 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col0 (type: string), _col1 (type: string) Reduce Operator Tree: - Extract + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 340 Basic stats: COMPLETE Column stats: COMPLETE Limit + Number of rows: 2 + Statistics: Num rows: 2 Data size: 340 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - GlobalTableId: 0 table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe Stage: Stage-2 Map Reduce - Alias -> Map Operator Tree: -#### A masked pattern was here #### + Map Operator Tree: TableScan Union + Statistics: Num rows: 6 Data size: 1022 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: - expr: _col0 - type: string - expr: _col1 - type: string + expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 + Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - GlobalTableId: 1 + Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.nzhang_part14 -#### A masked pattern was here #### TableScan Union + Statistics: Num rows: 6 Data size: 1022 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: - expr: _col0 - type: string - expr: _col1 - type: string + expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 + Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - GlobalTableId: 1 + Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.nzhang_part14 -#### A masked pattern was here #### TableScan Union + Statistics: Num rows: 6 Data size: 1022 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: - expr: _col0 - type: string - expr: _col1 - type: string + expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 + Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - GlobalTableId: 1 + Statistics: Num rows: 6 Data size: 1026 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -179,11 +172,10 @@ STAGE PLANS: Stage: Stage-4 Map Reduce - Alias -> Map Operator Tree: -#### A masked pattern was here #### + Map Operator Tree: + TableScan File Output Operator compressed: false - GlobalTableId: 0 table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -192,11 +184,10 @@ STAGE PLANS: Stage: Stage-6 Map Reduce - Alias -> Map Operator Tree: -#### A masked pattern was here #### + Map Operator Tree: + TableScan File Output Operator compressed: false - GlobalTableId: 0 table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -211,68 +202,67 @@ STAGE PLANS: Stage: Stage-9 Map Reduce - Alias -> Map Operator Tree: - null-subquery2:t-subquery2:src + Map Operator Tree: TableScan alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: - expr: 'k3' - type: string - expr: ' ' - type: string + expressions: 'k3' (type: string), ' ' (type: string) outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 85500 Basic stats: COMPLETE Column stats: COMPLETE Limit + Number of rows: 2 + Statistics: Num rows: 2 Data size: 342 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator sort order: - tag: -1 - value expressions: - expr: _col0 - type: string - expr: _col1 - type: string + Statistics: Num rows: 2 Data size: 342 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col0 (type: string), _col1 (type: string) Reduce Operator Tree: - Extract + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 342 Basic stats: COMPLETE Column stats: COMPLETE Limit + Number of rows: 2 + Statistics: Num rows: 2 Data size: 342 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - GlobalTableId: 0 table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe Stage: Stage-10 Map Reduce - Alias -> Map Operator Tree: - null-subquery1-subquery1:t-subquery1-subquery1:src + Map Operator Tree: TableScan alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: - expr: 'k1' - type: string - expr: UDFToString(null) - type: string + expressions: 'k1' (type: string), UDFToString(null) (type: string) outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 85000 Basic stats: COMPLETE Column stats: COMPLETE Limit + Number of rows: 2 + Statistics: Num rows: 2 Data size: 340 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator sort order: - tag: -1 - value expressions: - expr: _col0 - type: string - expr: _col1 - type: string + Statistics: Num rows: 2 Data size: 340 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col0 (type: string), _col1 (type: string) Reduce Operator Tree: - Extract + Select Operator + expressions: VALUE._col0 (type: string), VALUE._col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 340 Basic stats: COMPLETE Column stats: COMPLETE Limit + Number of rows: 2 + Statistics: Num rows: 2 Data size: 340 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - GlobalTableId: 0 table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat - + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe PREHOOK: query: insert overwrite table nzhang_part14 partition(value) select key, value from ( @@ -295,37 +285,35 @@ select key, value from ( ) T POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: default@nzhang_part14@value=%20 +POSTHOOK: Output: default@nzhang_part14@value=%2520 POSTHOOK: Output: default@nzhang_part14@value=__HIVE_DEFAULT_PARTITION__ -POSTHOOK: Lineage: nzhang_part14 PARTITION(value= ).key EXPRESSION [] +POSTHOOK: Lineage: nzhang_part14 PARTITION(value=%20).key EXPRESSION [] POSTHOOK: Lineage: nzhang_part14 PARTITION(value=__HIVE_DEFAULT_PARTITION__).key EXPRESSION [] PREHOOK: query: show partitions nzhang_part14 PREHOOK: type: SHOWPARTITIONS +PREHOOK: Input: default@nzhang_part14 POSTHOOK: query: show partitions nzhang_part14 POSTHOOK: type: SHOWPARTITIONS -POSTHOOK: Lineage: nzhang_part14 PARTITION(value= ).key EXPRESSION [] -POSTHOOK: Lineage: nzhang_part14 PARTITION(value=__HIVE_DEFAULT_PARTITION__).key EXPRESSION [] -value=%20 +POSTHOOK: Input: default@nzhang_part14 +value=%2520 value=__HIVE_DEFAULT_PARTITION__ PREHOOK: query: select * from nzhang_part14 where value <> 'a' order by key, value PREHOOK: type: QUERY PREHOOK: Input: default@nzhang_part14 -PREHOOK: Input: default@nzhang_part14@value=%20 +PREHOOK: Input: default@nzhang_part14@value=%2520 PREHOOK: Input: default@nzhang_part14@value=__HIVE_DEFAULT_PARTITION__ #### A masked pattern was here #### POSTHOOK: query: select * from nzhang_part14 where value <> 'a' order by key, value POSTHOOK: type: QUERY POSTHOOK: Input: default@nzhang_part14 -POSTHOOK: Input: default@nzhang_part14@value=%20 +POSTHOOK: Input: default@nzhang_part14@value=%2520 POSTHOOK: Input: default@nzhang_part14@value=__HIVE_DEFAULT_PARTITION__ #### A masked pattern was here #### -POSTHOOK: Lineage: nzhang_part14 PARTITION(value= ).key EXPRESSION [] -POSTHOOK: Lineage: nzhang_part14 PARTITION(value=__HIVE_DEFAULT_PARTITION__).key EXPRESSION [] k1 __HIVE_DEFAULT_PARTITION__ k1 __HIVE_DEFAULT_PARTITION__ k2 __HIVE_DEFAULT_PARTITION__ k2 __HIVE_DEFAULT_PARTITION__ -k3 -k3 +k3 %20 +k3 %20 diff --git a/ql/src/test/results/clientpositive/scriptfile1_win.q.out b/ql/src/test/results/clientpositive/scriptfile1_win.q.out index 1f84bd3f2a9c..0c9c546d5959 100644 --- a/ql/src/test/results/clientpositive/scriptfile1_win.q.out +++ b/ql/src/test/results/clientpositive/scriptfile1_win.q.out @@ -3,6 +3,7 @@ PREHOOK: query: -- INCLUDE_OS_WINDOWS CREATE TABLE dest1(key INT, value STRING) PREHOOK: type: CREATETABLE PREHOOK: Output: database:default +PREHOOK: Output: default@dest1 POSTHOOK: query: -- INCLUDE_OS_WINDOWS CREATE TABLE dest1(key INT, value STRING) @@ -39,8 +40,6 @@ POSTHOOK: query: SELECT dest1.* FROM dest1 POSTHOOK: type: QUERY POSTHOOK: Input: default@dest1 #### A masked pattern was here #### -POSTHOOK: Lineage: dest1.key SCRIPT [(src)src.FieldSchema(name:key, type:string, comment:default), (src)src.FieldSchema(name:value, type:string, comment:default), ] -POSTHOOK: Lineage: dest1.value SCRIPT [(src)src.FieldSchema(name:key, type:string, comment:default), (src)src.FieldSchema(name:value, type:string, comment:default), ] NULL NULL NULL NULL 10 val_10 From 981d8b1a01269e60d0019ac074e66754f79524aa Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Tue, 4 Nov 2014 18:26:51 +0000 Subject: [PATCH 243/339] HIVE-8713 : Unit test TestParquetTimestampUtils.testTimezone failing (Szehon, reviewed by Brock) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636677 13f79535-47bb-0310-9956-ffa450edef68 --- .../serde/TestParquetTimestampUtils.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/TestParquetTimestampUtils.java b/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/TestParquetTimestampUtils.java index 1776242e91d2..2e788bd8c82c 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/TestParquetTimestampUtils.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/TestParquetTimestampUtils.java @@ -143,22 +143,23 @@ public void testTimezone() { cal.set(Calendar.YEAR, 1968); cal.set(Calendar.MONTH, Calendar.MAY); cal.set(Calendar.DAY_OF_MONTH, 23); - if ((TimeZone.getTimeZone("US/Pacific").inDaylightTime(new Date()))) { - cal.set(Calendar.HOUR_OF_DAY, 18); - } else { - cal.set(Calendar.HOUR_OF_DAY, 17); - } + cal.set(Calendar.HOUR_OF_DAY, 17); cal.set(Calendar.MINUTE, 1); cal.set(Calendar.SECOND, 1); cal.setTimeZone(TimeZone.getTimeZone("US/Pacific")); Timestamp ts = new Timestamp(cal.getTimeInMillis()); ts.setNanos(1); - //18:00 PST = 01:00 GMT (if daylight-savings) - //17:00 PST = 01:00 GMT (if not daylight savings) - //(1*60*60 + 1*60 + 1)*10e9 + 1 + /** + * 17:00 PDT = 00:00 GMT (daylight-savings) + * (0*60*60 + 1*60 + 1)*10e9 + 1 = 61000000001, or + * + * 17:00 PST = 01:00 GMT (if not daylight savings) + * (1*60*60 + 1*60 + 1)*10e9 + 1 = 3661000000001 + */ NanoTime nt = NanoTimeUtils.getNanoTime(ts); - Assert.assertEquals(nt.getTimeOfDayNanos(), 3661000000001L); + long timeOfDayNanos = nt.getTimeOfDayNanos(); + Assert.assertTrue(timeOfDayNanos == 61000000001L || timeOfDayNanos == 3661000000001L); //in both cases, this will be the next day in GMT Assert.assertEquals(nt.getJulianDay(), 2440001); From 24e5fb04b1c03c6fe454424ace47591df55690bd Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Tue, 4 Nov 2014 18:40:48 +0000 Subject: [PATCH 244/339] HIVE-8697: Vectorized round(decimal, negative) produces wrong results (Matt McCline, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636687 13f79535-47bb-0310-9956-ffa450edef68 --- .../exec/vector/expressions/DecimalUtil.java | 18 + ...uncRoundWithNumDigitsDecimalToDecimal.java | 10 +- .../clientpositive/vector_decimal_round.q | 55 ++ .../clientpositive/vector_decimal_round_2.q | 119 +++++ .../tez/vector_decimal_round.q.out | 456 ++++++++++++++++ .../tez/vector_decimal_round_2.q.out | 499 ++++++++++++++++++ .../clientpositive/vector_decimal_round.q.out | 414 +++++++++++++++ .../vector_decimal_round_2.q.out | 471 +++++++++++++++++ 8 files changed, 2037 insertions(+), 5 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_round.q create mode 100644 ql/src/test/queries/clientpositive/vector_decimal_round_2.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_round.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_decimal_round_2.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_round.q.out create mode 100644 ql/src/test/results/clientpositive/vector_decimal_round_2.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalUtil.java index d88f7d77a74b..ef800596deed 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalUtil.java @@ -278,6 +278,24 @@ public static void ceiling(int i, HiveDecimalWritable input, DecimalColumnVector } } + public static void round(int i, HiveDecimal input, int decimalPlaces, DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, RoundUtils.round(input, decimalPlaces)); + } catch (ArithmeticException e) { + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + + public static void round(int i, HiveDecimalWritable input, int decimalPlaces, DecimalColumnVector outputColVector) { + try { + outputColVector.set(i, RoundUtils.round(input.getHiveDecimal(), decimalPlaces)); + } catch (ArithmeticException e) { + outputColVector.noNulls = false; + outputColVector.isNull[i] = true; + } + } + public static void round(int i, HiveDecimal input, DecimalColumnVector outputColVector) { try { outputColVector.set(i, RoundUtils.round(input, outputColVector.scale)); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java index 421a737b253b..9f3e8a3fcacb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java @@ -73,7 +73,7 @@ public void evaluate(VectorizedRowBatch batch) { // All must be selected otherwise size would be zero // Repeating property will not change. outputIsNull[0] = inputIsNull[0]; - DecimalUtil.round(0, vector[0], outputColVector); + DecimalUtil.round(0, vector[0], decimalPlaces, outputColVector); outputColVector.isRepeating = true; } else if (inputColVector.noNulls) { if (batch.selectedInUse) { @@ -82,14 +82,14 @@ public void evaluate(VectorizedRowBatch batch) { // Set isNull because decimal operation can yield a null. outputIsNull[i] = false; - DecimalUtil.round(i, vector[i], outputColVector); + DecimalUtil.round(i, vector[i], decimalPlaces, outputColVector); } } else { // Set isNull because decimal operation can yield a null. Arrays.fill(outputIsNull, 0, n, false); for(int i = 0; i != n; i++) { - DecimalUtil.round(i, vector[i], outputColVector); + DecimalUtil.round(i, vector[i], decimalPlaces, outputColVector); } } outputColVector.isRepeating = false; @@ -98,12 +98,12 @@ public void evaluate(VectorizedRowBatch batch) { for(int j = 0; j != n; j++) { int i = sel[j]; outputIsNull[i] = inputIsNull[i]; - DecimalUtil.round(i, vector[i], outputColVector); + DecimalUtil.round(i, vector[i], decimalPlaces, outputColVector); } } else { System.arraycopy(inputIsNull, 0, outputIsNull, 0, n); for(int i = 0; i != n; i++) { - DecimalUtil.round(i, vector[i], outputColVector); + DecimalUtil.round(i, vector[i], decimalPlaces, outputColVector); } } outputColVector.isRepeating = false; diff --git a/ql/src/test/queries/clientpositive/vector_decimal_round.q b/ql/src/test/queries/clientpositive/vector_decimal_round.q new file mode 100644 index 000000000000..2b7a005db621 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_decimal_round.q @@ -0,0 +1,55 @@ +SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +create table decimal_tbl_txt (dec decimal(10,0)) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +insert into table decimal_tbl_txt values(101); + +select * from decimal_tbl_txt; + +explain +select dec, round(dec, -1) from decimal_tbl_txt order by dec; + +select dec, round(dec, -1) from decimal_tbl_txt order by dec; + +explain +select dec, round(dec, -1) from decimal_tbl_txt order by round(dec, -1); + +select dec, round(dec, -1) from decimal_tbl_txt order by round(dec, -1); + +create table decimal_tbl_rc (dec decimal(10,0)) +row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile; + +insert into table decimal_tbl_rc values(101); + +select * from decimal_tbl_rc; + +explain +select dec, round(dec, -1) from decimal_tbl_rc order by dec; + +select dec, round(dec, -1) from decimal_tbl_rc order by dec; + +explain +select dec, round(dec, -1) from decimal_tbl_rc order by round(dec, -1); + +select dec, round(dec, -1) from decimal_tbl_rc order by round(dec, -1); + +create table decimal_tbl_orc (dec decimal(10,0)) +stored as orc; + +insert into table decimal_tbl_orc values(101); + +select * from decimal_tbl_orc; + +explain +select dec, round(dec, -1) from decimal_tbl_orc order by dec; + +select dec, round(dec, -1) from decimal_tbl_orc order by dec; + +explain +select dec, round(dec, -1) from decimal_tbl_orc order by round(dec, -1); + +select dec, round(dec, -1) from decimal_tbl_orc order by round(dec, -1); \ No newline at end of file diff --git a/ql/src/test/queries/clientpositive/vector_decimal_round_2.q b/ql/src/test/queries/clientpositive/vector_decimal_round_2.q new file mode 100644 index 000000000000..e5f10d5b1532 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_decimal_round_2.q @@ -0,0 +1,119 @@ +SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +create table decimal_tbl_1_orc (dec decimal(38,18)) +STORED AS ORC; + +insert into table decimal_tbl_1_orc values(55555); + +select * from decimal_tbl_1_orc; + +-- EXPLAIN +-- SELECT dec, round(null), round(null, 0), round(125, null), +-- round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +-- FROM decimal_tbl_1_orc ORDER BY dec; + +-- SELECT dec, round(null), round(null, 0), round(125, null), +-- round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +-- FROM decimal_tbl_1_orc ORDER BY dec; + +EXPLAIN +SELECT + round(dec) as d, round(dec, 0), round(dec, 1), round(dec, 2), round(dec, 3), + round(dec, -1), round(dec, -2), round(dec, -3), round(dec, -4), + round(dec, -5), round(dec, -6), round(dec, -7), round(dec, -8) +FROM decimal_tbl_1_orc ORDER BY d; + +SELECT + round(dec) as d, round(dec, 0), round(dec, 1), round(dec, 2), round(dec, 3), + round(dec, -1), round(dec, -2), round(dec, -3), round(dec, -4), + round(dec, -5), round(dec, -6), round(dec, -7), round(dec, -8) +FROM decimal_tbl_1_orc ORDER BY d; + +create table decimal_tbl_2_orc (pos decimal(38,18), neg decimal(38,18)) +STORED AS ORC; + +insert into table decimal_tbl_2_orc values(125.315, -125.315); + +select * from decimal_tbl_2_orc; + +EXPLAIN +SELECT + round(pos) as p, round(pos, 0), + round(pos, 1), round(pos, 2), round(pos, 3), round(pos, 4), + round(pos, -1), round(pos, -2), round(pos, -3), round(pos, -4), + round(neg), round(neg, 0), + round(neg, 1), round(neg, 2), round(neg, 3), round(neg, 4), + round(neg, -1), round(neg, -2), round(neg, -3), round(neg, -4) +FROM decimal_tbl_2_orc ORDER BY p; + +SELECT + round(pos) as p, round(pos, 0), + round(pos, 1), round(pos, 2), round(pos, 3), round(pos, 4), + round(pos, -1), round(pos, -2), round(pos, -3), round(pos, -4), + round(neg), round(neg, 0), + round(neg, 1), round(neg, 2), round(neg, 3), round(neg, 4), + round(neg, -1), round(neg, -2), round(neg, -3), round(neg, -4) +FROM decimal_tbl_2_orc ORDER BY p; + +create table decimal_tbl_3_orc (dec decimal(38,18)) +STORED AS ORC; + +insert into table decimal_tbl_3_orc values(3.141592653589793); + +select * from decimal_tbl_3_orc; + +EXPLAIN +SELECT + round(dec, -15) as d, round(dec, -16), + round(dec, -13), round(dec, -14), + round(dec, -11), round(dec, -12), + round(dec, -9), round(dec, -10), + round(dec, -7), round(dec, -8), + round(dec, -5), round(dec, -6), + round(dec, -3), round(dec, -4), + round(dec, -1), round(dec, -2), + round(dec, 0), round(dec, 1), + round(dec, 2), round(dec, 3), + round(dec, 4), round(dec, 5), + round(dec, 6), round(dec, 7), + round(dec, 8), round(dec, 9), + round(dec, 10), round(dec, 11), + round(dec, 12), round(dec, 13), + round(dec, 13), round(dec, 14), + round(dec, 15), round(dec, 16) +FROM decimal_tbl_3_orc ORDER BY d; + +SELECT + round(dec, -15) as d, round(dec, -16), + round(dec, -13), round(dec, -14), + round(dec, -11), round(dec, -12), + round(dec, -9), round(dec, -10), + round(dec, -7), round(dec, -8), + round(dec, -5), round(dec, -6), + round(dec, -3), round(dec, -4), + round(dec, -1), round(dec, -2), + round(dec, 0), round(dec, 1), + round(dec, 2), round(dec, 3), + round(dec, 4), round(dec, 5), + round(dec, 6), round(dec, 7), + round(dec, 8), round(dec, 9), + round(dec, 10), round(dec, 11), + round(dec, 12), round(dec, 13), + round(dec, 13), round(dec, 14), + round(dec, 15), round(dec, 16) +FROM decimal_tbl_3_orc ORDER BY d; + +create table decimal_tbl_4_orc (pos decimal(38,18), neg decimal(38,18)) +STORED AS ORC; + +insert into table decimal_tbl_4_orc values(1809242.3151111344, -1809242.3151111344); + +select * from decimal_tbl_4_orc; + +EXPLAIN +SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), round(-1809242.3151111344BD, 9) +FROM decimal_tbl_4_orc ORDER BY p; + +SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), round(-1809242.3151111344BD, 9) +FROM decimal_tbl_4_orc ORDER BY p; diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_round.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_round.q.out new file mode 100644 index 000000000000..9ea95b959f6f --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_round.q.out @@ -0,0 +1,456 @@ +PREHOOK: query: create table decimal_tbl_txt (dec decimal(10,0)) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_txt +POSTHOOK: query: create table decimal_tbl_txt (dec decimal(10,0)) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_txt +PREHOOK: query: insert into table decimal_tbl_txt values(101) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@decimal_tbl_txt +POSTHOOK: query: insert into table decimal_tbl_txt values(101) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@decimal_tbl_txt +POSTHOOK: Lineage: decimal_tbl_txt.dec EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +101 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_txt order by dec +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_txt order by dec +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_tbl_txt + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)), round(dec, -1) (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(11,0)) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)), VALUE._col0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_txt order by dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_txt order by dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +101 100 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_txt order by round(dec, -1) +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_txt order by round(dec, -1) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_tbl_txt + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: round(_col0, (- 1)) (type: decimal(11,0)) + sort order: + + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(10,0)) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: decimal(10,0)), KEY.reducesinkkey0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_txt order by round(dec, -1) +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_txt order by round(dec, -1) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +101 100 +PREHOOK: query: create table decimal_tbl_rc (dec decimal(10,0)) +row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_rc +POSTHOOK: query: create table decimal_tbl_rc (dec decimal(10,0)) +row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_rc +PREHOOK: query: insert into table decimal_tbl_rc values(101) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__2 +PREHOOK: Output: default@decimal_tbl_rc +POSTHOOK: query: insert into table decimal_tbl_rc values(101) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__2 +POSTHOOK: Output: default@decimal_tbl_rc +POSTHOOK: Lineage: decimal_tbl_rc.dec EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_rc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_rc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +101 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_rc order by dec +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_rc order by dec +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_tbl_rc + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)), round(dec, -1) (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(11,0)) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)), VALUE._col0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_rc order by dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_rc order by dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +101 100 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_rc order by round(dec, -1) +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_rc order by round(dec, -1) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_tbl_rc + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: round(_col0, (- 1)) (type: decimal(11,0)) + sort order: + + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(10,0)) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: decimal(10,0)), KEY.reducesinkkey0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_rc order by round(dec, -1) +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_rc order by round(dec, -1) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +101 100 +PREHOOK: query: create table decimal_tbl_orc (dec decimal(10,0)) +stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_orc +POSTHOOK: query: create table decimal_tbl_orc (dec decimal(10,0)) +stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_orc +PREHOOK: query: insert into table decimal_tbl_orc values(101) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__3 +PREHOOK: Output: default@decimal_tbl_orc +POSTHOOK: query: insert into table decimal_tbl_orc values(101) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__3 +POSTHOOK: Output: default@decimal_tbl_orc +POSTHOOK: Lineage: decimal_tbl_orc.dec EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +101 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_orc order by dec +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_orc order by dec +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_tbl_orc + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)), round(dec, -1) (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(11,0)) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)), VALUE._col0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_orc order by dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_orc order by dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +101 100 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_orc order by round(dec, -1) +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_orc order by round(dec, -1) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_tbl_orc + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: round(_col0, (- 1)) (type: decimal(11,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(10,0)) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: decimal(10,0)), KEY.reducesinkkey0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_orc order by round(dec, -1) +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_orc order by round(dec, -1) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +101 100 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_round_2.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_round_2.q.out new file mode 100644 index 000000000000..0d00c2d9f1e1 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_round_2.q.out @@ -0,0 +1,499 @@ +PREHOOK: query: create table decimal_tbl_1_orc (dec decimal(38,18)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_1_orc +POSTHOOK: query: create table decimal_tbl_1_orc (dec decimal(38,18)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_1_orc +PREHOOK: query: insert into table decimal_tbl_1_orc values(55555) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@decimal_tbl_1_orc +POSTHOOK: query: insert into table decimal_tbl_1_orc values(55555) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@decimal_tbl_1_orc +POSTHOOK: Lineage: decimal_tbl_1_orc.dec EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_1_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_1_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_1_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_1_orc +#### A masked pattern was here #### +55555 +PREHOOK: query: -- EXPLAIN +-- SELECT dec, round(null), round(null, 0), round(125, null), +-- round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +-- FROM decimal_tbl_1_orc ORDER BY dec; + +-- SELECT dec, round(null), round(null, 0), round(125, null), +-- round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +-- FROM decimal_tbl_1_orc ORDER BY dec; + +EXPLAIN +SELECT + round(dec) as d, round(dec, 0), round(dec, 1), round(dec, 2), round(dec, 3), + round(dec, -1), round(dec, -2), round(dec, -3), round(dec, -4), + round(dec, -5), round(dec, -6), round(dec, -7), round(dec, -8) +FROM decimal_tbl_1_orc ORDER BY d +PREHOOK: type: QUERY +POSTHOOK: query: -- EXPLAIN +-- SELECT dec, round(null), round(null, 0), round(125, null), +-- round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +-- FROM decimal_tbl_1_orc ORDER BY dec; + +-- SELECT dec, round(null), round(null, 0), round(125, null), +-- round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +-- FROM decimal_tbl_1_orc ORDER BY dec; + +EXPLAIN +SELECT + round(dec) as d, round(dec, 0), round(dec, 1), round(dec, 2), round(dec, 3), + round(dec, -1), round(dec, -2), round(dec, -3), round(dec, -4), + round(dec, -5), round(dec, -6), round(dec, -7), round(dec, -8) +FROM decimal_tbl_1_orc ORDER BY d +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_tbl_1_orc + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: round(dec) (type: decimal(21,0)), round(dec, 0) (type: decimal(21,0)), round(dec, 1) (type: decimal(22,1)), round(dec, 2) (type: decimal(23,2)), round(dec, 3) (type: decimal(24,3)), round(dec, -1) (type: decimal(21,0)), round(dec, -2) (type: decimal(21,0)), round(dec, -3) (type: decimal(21,0)), round(dec, -4) (type: decimal(21,0)), round(dec, -5) (type: decimal(21,0)), round(dec, -6) (type: decimal(21,0)), round(dec, -7) (type: decimal(21,0)), round(dec, -8) (type: decimal(21,0)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(21,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(21,0)), _col2 (type: decimal(22,1)), _col3 (type: decimal(23,2)), _col4 (type: decimal(24,3)), _col5 (type: decimal(21,0)), _col6 (type: decimal(21,0)), _col7 (type: decimal(21,0)), _col8 (type: decimal(21,0)), _col9 (type: decimal(21,0)), _col10 (type: decimal(21,0)), _col11 (type: decimal(21,0)), _col12 (type: decimal(21,0)) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(21,0)), VALUE._col0 (type: decimal(21,0)), VALUE._col1 (type: decimal(22,1)), VALUE._col2 (type: decimal(23,2)), VALUE._col3 (type: decimal(24,3)), VALUE._col4 (type: decimal(21,0)), VALUE._col5 (type: decimal(21,0)), VALUE._col6 (type: decimal(21,0)), VALUE._col7 (type: decimal(21,0)), VALUE._col8 (type: decimal(21,0)), VALUE._col9 (type: decimal(21,0)), VALUE._col10 (type: decimal(21,0)), VALUE._col11 (type: decimal(21,0)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + round(dec) as d, round(dec, 0), round(dec, 1), round(dec, 2), round(dec, 3), + round(dec, -1), round(dec, -2), round(dec, -3), round(dec, -4), + round(dec, -5), round(dec, -6), round(dec, -7), round(dec, -8) +FROM decimal_tbl_1_orc ORDER BY d +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_1_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + round(dec) as d, round(dec, 0), round(dec, 1), round(dec, 2), round(dec, 3), + round(dec, -1), round(dec, -2), round(dec, -3), round(dec, -4), + round(dec, -5), round(dec, -6), round(dec, -7), round(dec, -8) +FROM decimal_tbl_1_orc ORDER BY d +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_1_orc +#### A masked pattern was here #### +55555 55555 55555.0 55555.00 55555.000 55560 55600 56000 60000 100000 0 0 0 +PREHOOK: query: create table decimal_tbl_2_orc (pos decimal(38,18), neg decimal(38,18)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_2_orc +POSTHOOK: query: create table decimal_tbl_2_orc (pos decimal(38,18), neg decimal(38,18)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_2_orc +PREHOOK: query: insert into table decimal_tbl_2_orc values(125.315, -125.315) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__2 +PREHOOK: Output: default@decimal_tbl_2_orc +POSTHOOK: query: insert into table decimal_tbl_2_orc values(125.315, -125.315) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__2 +POSTHOOK: Output: default@decimal_tbl_2_orc +POSTHOOK: Lineage: decimal_tbl_2_orc.neg EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +POSTHOOK: Lineage: decimal_tbl_2_orc.pos EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_2_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_2_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_2_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_2_orc +#### A masked pattern was here #### +125.315 -125.315 +PREHOOK: query: EXPLAIN +SELECT + round(pos) as p, round(pos, 0), + round(pos, 1), round(pos, 2), round(pos, 3), round(pos, 4), + round(pos, -1), round(pos, -2), round(pos, -3), round(pos, -4), + round(neg), round(neg, 0), + round(neg, 1), round(neg, 2), round(neg, 3), round(neg, 4), + round(neg, -1), round(neg, -2), round(neg, -3), round(neg, -4) +FROM decimal_tbl_2_orc ORDER BY p +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + round(pos) as p, round(pos, 0), + round(pos, 1), round(pos, 2), round(pos, 3), round(pos, 4), + round(pos, -1), round(pos, -2), round(pos, -3), round(pos, -4), + round(neg), round(neg, 0), + round(neg, 1), round(neg, 2), round(neg, 3), round(neg, 4), + round(neg, -1), round(neg, -2), round(neg, -3), round(neg, -4) +FROM decimal_tbl_2_orc ORDER BY p +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_tbl_2_orc + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: round(pos) (type: decimal(21,0)), round(pos, 0) (type: decimal(21,0)), round(pos, 1) (type: decimal(22,1)), round(pos, 2) (type: decimal(23,2)), round(pos, 3) (type: decimal(24,3)), round(pos, 4) (type: decimal(25,4)), round(pos, -1) (type: decimal(21,0)), round(pos, -2) (type: decimal(21,0)), round(pos, -3) (type: decimal(21,0)), round(pos, -4) (type: decimal(21,0)), round(neg) (type: decimal(21,0)), round(neg, 0) (type: decimal(21,0)), round(neg, 1) (type: decimal(22,1)), round(neg, 2) (type: decimal(23,2)), round(neg, 3) (type: decimal(24,3)), round(neg, 4) (type: decimal(25,4)), round(neg, -1) (type: decimal(21,0)), round(neg, -2) (type: decimal(21,0)), round(neg, -3) (type: decimal(21,0)), round(neg, -4) (type: decimal(21,0)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(21,0)) + sort order: + + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(21,0)), _col2 (type: decimal(22,1)), _col3 (type: decimal(23,2)), _col4 (type: decimal(24,3)), _col5 (type: decimal(25,4)), _col6 (type: decimal(21,0)), _col7 (type: decimal(21,0)), _col8 (type: decimal(21,0)), _col9 (type: decimal(21,0)), _col10 (type: decimal(21,0)), _col11 (type: decimal(21,0)), _col12 (type: decimal(22,1)), _col13 (type: decimal(23,2)), _col14 (type: decimal(24,3)), _col15 (type: decimal(25,4)), _col16 (type: decimal(21,0)), _col17 (type: decimal(21,0)), _col18 (type: decimal(21,0)), _col19 (type: decimal(21,0)) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(21,0)), VALUE._col0 (type: decimal(21,0)), VALUE._col1 (type: decimal(22,1)), VALUE._col2 (type: decimal(23,2)), VALUE._col3 (type: decimal(24,3)), VALUE._col4 (type: decimal(25,4)), VALUE._col5 (type: decimal(21,0)), VALUE._col6 (type: decimal(21,0)), VALUE._col7 (type: decimal(21,0)), VALUE._col8 (type: decimal(21,0)), VALUE._col9 (type: decimal(21,0)), VALUE._col10 (type: decimal(21,0)), VALUE._col11 (type: decimal(22,1)), VALUE._col12 (type: decimal(23,2)), VALUE._col13 (type: decimal(24,3)), VALUE._col14 (type: decimal(25,4)), VALUE._col15 (type: decimal(21,0)), VALUE._col16 (type: decimal(21,0)), VALUE._col17 (type: decimal(21,0)), VALUE._col18 (type: decimal(21,0)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + round(pos) as p, round(pos, 0), + round(pos, 1), round(pos, 2), round(pos, 3), round(pos, 4), + round(pos, -1), round(pos, -2), round(pos, -3), round(pos, -4), + round(neg), round(neg, 0), + round(neg, 1), round(neg, 2), round(neg, 3), round(neg, 4), + round(neg, -1), round(neg, -2), round(neg, -3), round(neg, -4) +FROM decimal_tbl_2_orc ORDER BY p +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_2_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + round(pos) as p, round(pos, 0), + round(pos, 1), round(pos, 2), round(pos, 3), round(pos, 4), + round(pos, -1), round(pos, -2), round(pos, -3), round(pos, -4), + round(neg), round(neg, 0), + round(neg, 1), round(neg, 2), round(neg, 3), round(neg, 4), + round(neg, -1), round(neg, -2), round(neg, -3), round(neg, -4) +FROM decimal_tbl_2_orc ORDER BY p +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_2_orc +#### A masked pattern was here #### +125 125 125.3 125.32 125.315 125.3150 130 100 0 0 -125 -125 -125.3 -125.32 -125.315 -125.3150 -130 -100 0 0 +PREHOOK: query: create table decimal_tbl_3_orc (dec decimal(38,18)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_3_orc +POSTHOOK: query: create table decimal_tbl_3_orc (dec decimal(38,18)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_3_orc +PREHOOK: query: insert into table decimal_tbl_3_orc values(3.141592653589793) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__3 +PREHOOK: Output: default@decimal_tbl_3_orc +POSTHOOK: query: insert into table decimal_tbl_3_orc values(3.141592653589793) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__3 +POSTHOOK: Output: default@decimal_tbl_3_orc +POSTHOOK: Lineage: decimal_tbl_3_orc.dec EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_3_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_3_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_3_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_3_orc +#### A masked pattern was here #### +3.141592653589793 +PREHOOK: query: EXPLAIN +SELECT + round(dec, -15) as d, round(dec, -16), + round(dec, -13), round(dec, -14), + round(dec, -11), round(dec, -12), + round(dec, -9), round(dec, -10), + round(dec, -7), round(dec, -8), + round(dec, -5), round(dec, -6), + round(dec, -3), round(dec, -4), + round(dec, -1), round(dec, -2), + round(dec, 0), round(dec, 1), + round(dec, 2), round(dec, 3), + round(dec, 4), round(dec, 5), + round(dec, 6), round(dec, 7), + round(dec, 8), round(dec, 9), + round(dec, 10), round(dec, 11), + round(dec, 12), round(dec, 13), + round(dec, 13), round(dec, 14), + round(dec, 15), round(dec, 16) +FROM decimal_tbl_3_orc ORDER BY d +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + round(dec, -15) as d, round(dec, -16), + round(dec, -13), round(dec, -14), + round(dec, -11), round(dec, -12), + round(dec, -9), round(dec, -10), + round(dec, -7), round(dec, -8), + round(dec, -5), round(dec, -6), + round(dec, -3), round(dec, -4), + round(dec, -1), round(dec, -2), + round(dec, 0), round(dec, 1), + round(dec, 2), round(dec, 3), + round(dec, 4), round(dec, 5), + round(dec, 6), round(dec, 7), + round(dec, 8), round(dec, 9), + round(dec, 10), round(dec, 11), + round(dec, 12), round(dec, 13), + round(dec, 13), round(dec, 14), + round(dec, 15), round(dec, 16) +FROM decimal_tbl_3_orc ORDER BY d +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_tbl_3_orc + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: round(dec, -15) (type: decimal(21,0)), round(dec, -16) (type: decimal(21,0)), round(dec, -5) (type: decimal(21,0)), round(dec, -6) (type: decimal(21,0)), round(dec, -3) (type: decimal(21,0)), round(dec, -4) (type: decimal(21,0)), round(dec, -1) (type: decimal(21,0)), round(dec, -2) (type: decimal(21,0)), round(dec, 0) (type: decimal(21,0)), round(dec, 1) (type: decimal(22,1)), round(dec, 2) (type: decimal(23,2)), round(dec, 3) (type: decimal(24,3)), round(dec, -13) (type: decimal(21,0)), round(dec, 4) (type: decimal(25,4)), round(dec, 5) (type: decimal(26,5)), round(dec, 6) (type: decimal(27,6)), round(dec, 7) (type: decimal(28,7)), round(dec, 8) (type: decimal(29,8)), round(dec, 9) (type: decimal(30,9)), round(dec, 10) (type: decimal(31,10)), round(dec, 11) (type: decimal(32,11)), round(dec, 12) (type: decimal(33,12)), round(dec, 13) (type: decimal(34,13)), round(dec, -14) (type: decimal(21,0)), round(dec, 14) (type: decimal(35,14)), round(dec, 15) (type: decimal(36,15)), round(dec, 16) (type: decimal(37,16)), round(dec, -11) (type: decimal(21,0)), round(dec, -12) (type: decimal(21,0)), round(dec, -9) (type: decimal(21,0)), round(dec, -10) (type: decimal(21,0)), round(dec, -7) (type: decimal(21,0)), round(dec, -8) (type: decimal(21,0)) + outputColumnNames: _col0, _col1, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col2, _col20, _col21, _col22, _col23, _col24, _col25, _col26, _col27, _col28, _col29, _col3, _col31, _col32, _col33, _col4, _col5, _col6, _col7, _col8, _col9 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(21,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(21,0)), _col2 (type: decimal(21,0)), _col3 (type: decimal(21,0)), _col4 (type: decimal(21,0)), _col5 (type: decimal(21,0)), _col6 (type: decimal(21,0)), _col7 (type: decimal(21,0)), _col8 (type: decimal(21,0)), _col9 (type: decimal(21,0)), _col10 (type: decimal(21,0)), _col11 (type: decimal(21,0)), _col12 (type: decimal(21,0)), _col13 (type: decimal(21,0)), _col14 (type: decimal(21,0)), _col15 (type: decimal(21,0)), _col16 (type: decimal(21,0)), _col17 (type: decimal(22,1)), _col18 (type: decimal(23,2)), _col19 (type: decimal(24,3)), _col20 (type: decimal(25,4)), _col21 (type: decimal(26,5)), _col22 (type: decimal(27,6)), _col23 (type: decimal(28,7)), _col24 (type: decimal(29,8)), _col25 (type: decimal(30,9)), _col26 (type: decimal(31,10)), _col27 (type: decimal(32,11)), _col28 (type: decimal(33,12)), _col29 (type: decimal(34,13)), _col31 (type: decimal(35,14)), _col32 (type: decimal(36,15)), _col33 (type: decimal(37,16)) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(21,0)), VALUE._col0 (type: decimal(21,0)), VALUE._col1 (type: decimal(21,0)), VALUE._col2 (type: decimal(21,0)), VALUE._col3 (type: decimal(21,0)), VALUE._col4 (type: decimal(21,0)), VALUE._col5 (type: decimal(21,0)), VALUE._col6 (type: decimal(21,0)), VALUE._col7 (type: decimal(21,0)), VALUE._col8 (type: decimal(21,0)), VALUE._col9 (type: decimal(21,0)), VALUE._col10 (type: decimal(21,0)), VALUE._col11 (type: decimal(21,0)), VALUE._col12 (type: decimal(21,0)), VALUE._col13 (type: decimal(21,0)), VALUE._col14 (type: decimal(21,0)), VALUE._col15 (type: decimal(21,0)), VALUE._col16 (type: decimal(22,1)), VALUE._col17 (type: decimal(23,2)), VALUE._col18 (type: decimal(24,3)), VALUE._col19 (type: decimal(25,4)), VALUE._col20 (type: decimal(26,5)), VALUE._col21 (type: decimal(27,6)), VALUE._col22 (type: decimal(28,7)), VALUE._col23 (type: decimal(29,8)), VALUE._col24 (type: decimal(30,9)), VALUE._col25 (type: decimal(31,10)), VALUE._col26 (type: decimal(32,11)), VALUE._col27 (type: decimal(33,12)), VALUE._col28 (type: decimal(34,13)), VALUE._col28 (type: decimal(34,13)), VALUE._col29 (type: decimal(35,14)), VALUE._col30 (type: decimal(36,15)), VALUE._col31 (type: decimal(37,16)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + round(dec, -15) as d, round(dec, -16), + round(dec, -13), round(dec, -14), + round(dec, -11), round(dec, -12), + round(dec, -9), round(dec, -10), + round(dec, -7), round(dec, -8), + round(dec, -5), round(dec, -6), + round(dec, -3), round(dec, -4), + round(dec, -1), round(dec, -2), + round(dec, 0), round(dec, 1), + round(dec, 2), round(dec, 3), + round(dec, 4), round(dec, 5), + round(dec, 6), round(dec, 7), + round(dec, 8), round(dec, 9), + round(dec, 10), round(dec, 11), + round(dec, 12), round(dec, 13), + round(dec, 13), round(dec, 14), + round(dec, 15), round(dec, 16) +FROM decimal_tbl_3_orc ORDER BY d +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_3_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + round(dec, -15) as d, round(dec, -16), + round(dec, -13), round(dec, -14), + round(dec, -11), round(dec, -12), + round(dec, -9), round(dec, -10), + round(dec, -7), round(dec, -8), + round(dec, -5), round(dec, -6), + round(dec, -3), round(dec, -4), + round(dec, -1), round(dec, -2), + round(dec, 0), round(dec, 1), + round(dec, 2), round(dec, 3), + round(dec, 4), round(dec, 5), + round(dec, 6), round(dec, 7), + round(dec, 8), round(dec, 9), + round(dec, 10), round(dec, 11), + round(dec, 12), round(dec, 13), + round(dec, 13), round(dec, 14), + round(dec, 15), round(dec, 16) +FROM decimal_tbl_3_orc ORDER BY d +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_3_orc +#### A masked pattern was here #### +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3.1 3.14 3.142 3.1416 3.14159 3.141593 3.1415927 3.14159265 3.141592654 3.1415926536 3.14159265359 3.141592653590 3.1415926535898 3.1415926535898 3.14159265358979 3.141592653589793 3.1415926535897930 +PREHOOK: query: create table decimal_tbl_4_orc (pos decimal(38,18), neg decimal(38,18)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_4_orc +POSTHOOK: query: create table decimal_tbl_4_orc (pos decimal(38,18), neg decimal(38,18)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_4_orc +PREHOOK: query: insert into table decimal_tbl_4_orc values(1809242.3151111344, -1809242.3151111344) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__4 +PREHOOK: Output: default@decimal_tbl_4_orc +POSTHOOK: query: insert into table decimal_tbl_4_orc values(1809242.3151111344, -1809242.3151111344) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__4 +POSTHOOK: Output: default@decimal_tbl_4_orc +POSTHOOK: Lineage: decimal_tbl_4_orc.neg EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +POSTHOOK: Lineage: decimal_tbl_4_orc.pos EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_4_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_4_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_4_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_4_orc +#### A masked pattern was here #### +1809242.3151111344 -1809242.3151111344 +PREHOOK: query: EXPLAIN +SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), round(-1809242.3151111344BD, 9) +FROM decimal_tbl_4_orc ORDER BY p +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), round(-1809242.3151111344BD, 9) +FROM decimal_tbl_4_orc ORDER BY p +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: decimal_tbl_4_orc + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: round(pos, 9) (type: decimal(30,9)), round(neg, 9) (type: decimal(30,9)), round(1809242.3151111344, 9) (type: decimal(17,9)), round((- 1809242.3151111344), 9) (type: decimal(17,9)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(30,9)) + sort order: + + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(30,9)), _col2 (type: decimal(17,9)), _col3 (type: decimal(17,9)) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(30,9)), VALUE._col0 (type: decimal(30,9)), VALUE._col1 (type: decimal(17,9)), VALUE._col2 (type: decimal(17,9)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), round(-1809242.3151111344BD, 9) +FROM decimal_tbl_4_orc ORDER BY p +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_4_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), round(-1809242.3151111344BD, 9) +FROM decimal_tbl_4_orc ORDER BY p +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_4_orc +#### A masked pattern was here #### +1809242.315111134 -1809242.315111134 1809242.315111134 -1809242.315111134 diff --git a/ql/src/test/results/clientpositive/vector_decimal_round.q.out b/ql/src/test/results/clientpositive/vector_decimal_round.q.out new file mode 100644 index 000000000000..25e5cfa514f9 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_round.q.out @@ -0,0 +1,414 @@ +PREHOOK: query: create table decimal_tbl_txt (dec decimal(10,0)) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_txt +POSTHOOK: query: create table decimal_tbl_txt (dec decimal(10,0)) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_txt +PREHOOK: query: insert into table decimal_tbl_txt values(101) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@decimal_tbl_txt +POSTHOOK: query: insert into table decimal_tbl_txt values(101) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@decimal_tbl_txt +POSTHOOK: Lineage: decimal_tbl_txt.dec EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +101 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_txt order by dec +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_txt order by dec +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_tbl_txt + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)), round(dec, -1) (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(11,0)) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)), VALUE._col0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_txt order by dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_txt order by dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +101 100 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_txt order by round(dec, -1) +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_txt order by round(dec, -1) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_tbl_txt + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: round(_col0, (- 1)) (type: decimal(11,0)) + sort order: + + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(10,0)) + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: decimal(10,0)), KEY.reducesinkkey0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_txt order by round(dec, -1) +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_txt order by round(dec, -1) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_txt +#### A masked pattern was here #### +101 100 +PREHOOK: query: create table decimal_tbl_rc (dec decimal(10,0)) +row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_rc +POSTHOOK: query: create table decimal_tbl_rc (dec decimal(10,0)) +row format serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' stored as rcfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_rc +PREHOOK: query: insert into table decimal_tbl_rc values(101) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__2 +PREHOOK: Output: default@decimal_tbl_rc +POSTHOOK: query: insert into table decimal_tbl_rc values(101) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__2 +POSTHOOK: Output: default@decimal_tbl_rc +POSTHOOK: Lineage: decimal_tbl_rc.dec EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_rc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_rc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +101 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_rc order by dec +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_rc order by dec +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_tbl_rc + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)), round(dec, -1) (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(11,0)) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)), VALUE._col0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_rc order by dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_rc order by dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +101 100 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_rc order by round(dec, -1) +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_rc order by round(dec, -1) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_tbl_rc + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: round(_col0, (- 1)) (type: decimal(11,0)) + sort order: + + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(10,0)) + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: decimal(10,0)), KEY.reducesinkkey0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 3 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_rc order by round(dec, -1) +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_rc order by round(dec, -1) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_rc +#### A masked pattern was here #### +101 100 +PREHOOK: query: create table decimal_tbl_orc (dec decimal(10,0)) +stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_orc +POSTHOOK: query: create table decimal_tbl_orc (dec decimal(10,0)) +stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_orc +PREHOOK: query: insert into table decimal_tbl_orc values(101) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__3 +PREHOOK: Output: default@decimal_tbl_orc +POSTHOOK: query: insert into table decimal_tbl_orc values(101) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__3 +POSTHOOK: Output: default@decimal_tbl_orc +POSTHOOK: Lineage: decimal_tbl_orc.dec EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +101 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_orc order by dec +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_orc order by dec +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_tbl_orc + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)), round(dec, -1) (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(10,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(11,0)) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(10,0)), VALUE._col0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_orc order by dec +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_orc order by dec +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +101 100 +PREHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_orc order by round(dec, -1) +PREHOOK: type: QUERY +POSTHOOK: query: explain +select dec, round(dec, -1) from decimal_tbl_orc order by round(dec, -1) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_tbl_orc + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dec (type: decimal(10,0)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: round(_col0, (- 1)) (type: decimal(11,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: decimal(10,0)) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: decimal(10,0)), KEY.reducesinkkey0 (type: decimal(11,0)) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select dec, round(dec, -1) from decimal_tbl_orc order by round(dec, -1) +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +POSTHOOK: query: select dec, round(dec, -1) from decimal_tbl_orc order by round(dec, -1) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_orc +#### A masked pattern was here #### +101 100 diff --git a/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out b/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out new file mode 100644 index 000000000000..482f536050f8 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out @@ -0,0 +1,471 @@ +PREHOOK: query: create table decimal_tbl_1_orc (dec decimal(38,18)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_1_orc +POSTHOOK: query: create table decimal_tbl_1_orc (dec decimal(38,18)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_1_orc +PREHOOK: query: insert into table decimal_tbl_1_orc values(55555) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@decimal_tbl_1_orc +POSTHOOK: query: insert into table decimal_tbl_1_orc values(55555) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@decimal_tbl_1_orc +POSTHOOK: Lineage: decimal_tbl_1_orc.dec EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_1_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_1_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_1_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_1_orc +#### A masked pattern was here #### +55555 +PREHOOK: query: -- EXPLAIN +-- SELECT dec, round(null), round(null, 0), round(125, null), +-- round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +-- FROM decimal_tbl_1_orc ORDER BY dec; + +-- SELECT dec, round(null), round(null, 0), round(125, null), +-- round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +-- FROM decimal_tbl_1_orc ORDER BY dec; + +EXPLAIN +SELECT + round(dec) as d, round(dec, 0), round(dec, 1), round(dec, 2), round(dec, 3), + round(dec, -1), round(dec, -2), round(dec, -3), round(dec, -4), + round(dec, -5), round(dec, -6), round(dec, -7), round(dec, -8) +FROM decimal_tbl_1_orc ORDER BY d +PREHOOK: type: QUERY +POSTHOOK: query: -- EXPLAIN +-- SELECT dec, round(null), round(null, 0), round(125, null), +-- round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +-- FROM decimal_tbl_1_orc ORDER BY dec; + +-- SELECT dec, round(null), round(null, 0), round(125, null), +-- round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +-- FROM decimal_tbl_1_orc ORDER BY dec; + +EXPLAIN +SELECT + round(dec) as d, round(dec, 0), round(dec, 1), round(dec, 2), round(dec, 3), + round(dec, -1), round(dec, -2), round(dec, -3), round(dec, -4), + round(dec, -5), round(dec, -6), round(dec, -7), round(dec, -8) +FROM decimal_tbl_1_orc ORDER BY d +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_tbl_1_orc + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: round(dec) (type: decimal(21,0)), round(dec, 0) (type: decimal(21,0)), round(dec, 1) (type: decimal(22,1)), round(dec, 2) (type: decimal(23,2)), round(dec, 3) (type: decimal(24,3)), round(dec, -1) (type: decimal(21,0)), round(dec, -2) (type: decimal(21,0)), round(dec, -3) (type: decimal(21,0)), round(dec, -4) (type: decimal(21,0)), round(dec, -5) (type: decimal(21,0)), round(dec, -6) (type: decimal(21,0)), round(dec, -7) (type: decimal(21,0)), round(dec, -8) (type: decimal(21,0)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(21,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(21,0)), _col2 (type: decimal(22,1)), _col3 (type: decimal(23,2)), _col4 (type: decimal(24,3)), _col5 (type: decimal(21,0)), _col6 (type: decimal(21,0)), _col7 (type: decimal(21,0)), _col8 (type: decimal(21,0)), _col9 (type: decimal(21,0)), _col10 (type: decimal(21,0)), _col11 (type: decimal(21,0)), _col12 (type: decimal(21,0)) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(21,0)), VALUE._col0 (type: decimal(21,0)), VALUE._col1 (type: decimal(22,1)), VALUE._col2 (type: decimal(23,2)), VALUE._col3 (type: decimal(24,3)), VALUE._col4 (type: decimal(21,0)), VALUE._col5 (type: decimal(21,0)), VALUE._col6 (type: decimal(21,0)), VALUE._col7 (type: decimal(21,0)), VALUE._col8 (type: decimal(21,0)), VALUE._col9 (type: decimal(21,0)), VALUE._col10 (type: decimal(21,0)), VALUE._col11 (type: decimal(21,0)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + round(dec) as d, round(dec, 0), round(dec, 1), round(dec, 2), round(dec, 3), + round(dec, -1), round(dec, -2), round(dec, -3), round(dec, -4), + round(dec, -5), round(dec, -6), round(dec, -7), round(dec, -8) +FROM decimal_tbl_1_orc ORDER BY d +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_1_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + round(dec) as d, round(dec, 0), round(dec, 1), round(dec, 2), round(dec, 3), + round(dec, -1), round(dec, -2), round(dec, -3), round(dec, -4), + round(dec, -5), round(dec, -6), round(dec, -7), round(dec, -8) +FROM decimal_tbl_1_orc ORDER BY d +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_1_orc +#### A masked pattern was here #### +55555 55555 55555.0 55555.00 55555.000 55560 55600 56000 60000 100000 0 0 0 +PREHOOK: query: create table decimal_tbl_2_orc (pos decimal(38,18), neg decimal(38,18)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_2_orc +POSTHOOK: query: create table decimal_tbl_2_orc (pos decimal(38,18), neg decimal(38,18)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_2_orc +PREHOOK: query: insert into table decimal_tbl_2_orc values(125.315, -125.315) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__2 +PREHOOK: Output: default@decimal_tbl_2_orc +POSTHOOK: query: insert into table decimal_tbl_2_orc values(125.315, -125.315) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__2 +POSTHOOK: Output: default@decimal_tbl_2_orc +POSTHOOK: Lineage: decimal_tbl_2_orc.neg EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +POSTHOOK: Lineage: decimal_tbl_2_orc.pos EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_2_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_2_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_2_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_2_orc +#### A masked pattern was here #### +125.315 -125.315 +PREHOOK: query: EXPLAIN +SELECT + round(pos) as p, round(pos, 0), + round(pos, 1), round(pos, 2), round(pos, 3), round(pos, 4), + round(pos, -1), round(pos, -2), round(pos, -3), round(pos, -4), + round(neg), round(neg, 0), + round(neg, 1), round(neg, 2), round(neg, 3), round(neg, 4), + round(neg, -1), round(neg, -2), round(neg, -3), round(neg, -4) +FROM decimal_tbl_2_orc ORDER BY p +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + round(pos) as p, round(pos, 0), + round(pos, 1), round(pos, 2), round(pos, 3), round(pos, 4), + round(pos, -1), round(pos, -2), round(pos, -3), round(pos, -4), + round(neg), round(neg, 0), + round(neg, 1), round(neg, 2), round(neg, 3), round(neg, 4), + round(neg, -1), round(neg, -2), round(neg, -3), round(neg, -4) +FROM decimal_tbl_2_orc ORDER BY p +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_tbl_2_orc + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: round(pos) (type: decimal(21,0)), round(pos, 0) (type: decimal(21,0)), round(pos, 1) (type: decimal(22,1)), round(pos, 2) (type: decimal(23,2)), round(pos, 3) (type: decimal(24,3)), round(pos, 4) (type: decimal(25,4)), round(pos, -1) (type: decimal(21,0)), round(pos, -2) (type: decimal(21,0)), round(pos, -3) (type: decimal(21,0)), round(pos, -4) (type: decimal(21,0)), round(neg) (type: decimal(21,0)), round(neg, 0) (type: decimal(21,0)), round(neg, 1) (type: decimal(22,1)), round(neg, 2) (type: decimal(23,2)), round(neg, 3) (type: decimal(24,3)), round(neg, 4) (type: decimal(25,4)), round(neg, -1) (type: decimal(21,0)), round(neg, -2) (type: decimal(21,0)), round(neg, -3) (type: decimal(21,0)), round(neg, -4) (type: decimal(21,0)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(21,0)) + sort order: + + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(21,0)), _col2 (type: decimal(22,1)), _col3 (type: decimal(23,2)), _col4 (type: decimal(24,3)), _col5 (type: decimal(25,4)), _col6 (type: decimal(21,0)), _col7 (type: decimal(21,0)), _col8 (type: decimal(21,0)), _col9 (type: decimal(21,0)), _col10 (type: decimal(21,0)), _col11 (type: decimal(21,0)), _col12 (type: decimal(22,1)), _col13 (type: decimal(23,2)), _col14 (type: decimal(24,3)), _col15 (type: decimal(25,4)), _col16 (type: decimal(21,0)), _col17 (type: decimal(21,0)), _col18 (type: decimal(21,0)), _col19 (type: decimal(21,0)) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(21,0)), VALUE._col0 (type: decimal(21,0)), VALUE._col1 (type: decimal(22,1)), VALUE._col2 (type: decimal(23,2)), VALUE._col3 (type: decimal(24,3)), VALUE._col4 (type: decimal(25,4)), VALUE._col5 (type: decimal(21,0)), VALUE._col6 (type: decimal(21,0)), VALUE._col7 (type: decimal(21,0)), VALUE._col8 (type: decimal(21,0)), VALUE._col9 (type: decimal(21,0)), VALUE._col10 (type: decimal(21,0)), VALUE._col11 (type: decimal(22,1)), VALUE._col12 (type: decimal(23,2)), VALUE._col13 (type: decimal(24,3)), VALUE._col14 (type: decimal(25,4)), VALUE._col15 (type: decimal(21,0)), VALUE._col16 (type: decimal(21,0)), VALUE._col17 (type: decimal(21,0)), VALUE._col18 (type: decimal(21,0)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + round(pos) as p, round(pos, 0), + round(pos, 1), round(pos, 2), round(pos, 3), round(pos, 4), + round(pos, -1), round(pos, -2), round(pos, -3), round(pos, -4), + round(neg), round(neg, 0), + round(neg, 1), round(neg, 2), round(neg, 3), round(neg, 4), + round(neg, -1), round(neg, -2), round(neg, -3), round(neg, -4) +FROM decimal_tbl_2_orc ORDER BY p +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_2_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + round(pos) as p, round(pos, 0), + round(pos, 1), round(pos, 2), round(pos, 3), round(pos, 4), + round(pos, -1), round(pos, -2), round(pos, -3), round(pos, -4), + round(neg), round(neg, 0), + round(neg, 1), round(neg, 2), round(neg, 3), round(neg, 4), + round(neg, -1), round(neg, -2), round(neg, -3), round(neg, -4) +FROM decimal_tbl_2_orc ORDER BY p +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_2_orc +#### A masked pattern was here #### +125 125 125.3 125.32 125.315 125.3150 130 100 0 0 -125 -125 -125.3 -125.32 -125.315 -125.3150 -130 -100 0 0 +PREHOOK: query: create table decimal_tbl_3_orc (dec decimal(38,18)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_3_orc +POSTHOOK: query: create table decimal_tbl_3_orc (dec decimal(38,18)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_3_orc +PREHOOK: query: insert into table decimal_tbl_3_orc values(3.141592653589793) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__3 +PREHOOK: Output: default@decimal_tbl_3_orc +POSTHOOK: query: insert into table decimal_tbl_3_orc values(3.141592653589793) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__3 +POSTHOOK: Output: default@decimal_tbl_3_orc +POSTHOOK: Lineage: decimal_tbl_3_orc.dec EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_3_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_3_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_3_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_3_orc +#### A masked pattern was here #### +3.141592653589793 +PREHOOK: query: EXPLAIN +SELECT + round(dec, -15) as d, round(dec, -16), + round(dec, -13), round(dec, -14), + round(dec, -11), round(dec, -12), + round(dec, -9), round(dec, -10), + round(dec, -7), round(dec, -8), + round(dec, -5), round(dec, -6), + round(dec, -3), round(dec, -4), + round(dec, -1), round(dec, -2), + round(dec, 0), round(dec, 1), + round(dec, 2), round(dec, 3), + round(dec, 4), round(dec, 5), + round(dec, 6), round(dec, 7), + round(dec, 8), round(dec, 9), + round(dec, 10), round(dec, 11), + round(dec, 12), round(dec, 13), + round(dec, 13), round(dec, 14), + round(dec, 15), round(dec, 16) +FROM decimal_tbl_3_orc ORDER BY d +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + round(dec, -15) as d, round(dec, -16), + round(dec, -13), round(dec, -14), + round(dec, -11), round(dec, -12), + round(dec, -9), round(dec, -10), + round(dec, -7), round(dec, -8), + round(dec, -5), round(dec, -6), + round(dec, -3), round(dec, -4), + round(dec, -1), round(dec, -2), + round(dec, 0), round(dec, 1), + round(dec, 2), round(dec, 3), + round(dec, 4), round(dec, 5), + round(dec, 6), round(dec, 7), + round(dec, 8), round(dec, 9), + round(dec, 10), round(dec, 11), + round(dec, 12), round(dec, 13), + round(dec, 13), round(dec, 14), + round(dec, 15), round(dec, 16) +FROM decimal_tbl_3_orc ORDER BY d +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_tbl_3_orc + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: round(dec, -15) (type: decimal(21,0)), round(dec, -16) (type: decimal(21,0)), round(dec, -5) (type: decimal(21,0)), round(dec, -6) (type: decimal(21,0)), round(dec, -3) (type: decimal(21,0)), round(dec, -4) (type: decimal(21,0)), round(dec, -1) (type: decimal(21,0)), round(dec, -2) (type: decimal(21,0)), round(dec, 0) (type: decimal(21,0)), round(dec, 1) (type: decimal(22,1)), round(dec, 2) (type: decimal(23,2)), round(dec, 3) (type: decimal(24,3)), round(dec, -13) (type: decimal(21,0)), round(dec, 4) (type: decimal(25,4)), round(dec, 5) (type: decimal(26,5)), round(dec, 6) (type: decimal(27,6)), round(dec, 7) (type: decimal(28,7)), round(dec, 8) (type: decimal(29,8)), round(dec, 9) (type: decimal(30,9)), round(dec, 10) (type: decimal(31,10)), round(dec, 11) (type: decimal(32,11)), round(dec, 12) (type: decimal(33,12)), round(dec, 13) (type: decimal(34,13)), round(dec, -14) (type: decimal(21,0)), round(dec, 14) (type: decimal(35,14)), round(dec, 15) (type: decimal(36,15)), round(dec, 16) (type: decimal(37,16)), round(dec, -11) (type: decimal(21,0)), round(dec, -12) (type: decimal(21,0)), round(dec, -9) (type: decimal(21,0)), round(dec, -10) (type: decimal(21,0)), round(dec, -7) (type: decimal(21,0)), round(dec, -8) (type: decimal(21,0)) + outputColumnNames: _col0, _col1, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col2, _col20, _col21, _col22, _col23, _col24, _col25, _col26, _col27, _col28, _col29, _col3, _col31, _col32, _col33, _col4, _col5, _col6, _col7, _col8, _col9 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(21,0)) + sort order: + + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(21,0)), _col2 (type: decimal(21,0)), _col3 (type: decimal(21,0)), _col4 (type: decimal(21,0)), _col5 (type: decimal(21,0)), _col6 (type: decimal(21,0)), _col7 (type: decimal(21,0)), _col8 (type: decimal(21,0)), _col9 (type: decimal(21,0)), _col10 (type: decimal(21,0)), _col11 (type: decimal(21,0)), _col12 (type: decimal(21,0)), _col13 (type: decimal(21,0)), _col14 (type: decimal(21,0)), _col15 (type: decimal(21,0)), _col16 (type: decimal(21,0)), _col17 (type: decimal(22,1)), _col18 (type: decimal(23,2)), _col19 (type: decimal(24,3)), _col20 (type: decimal(25,4)), _col21 (type: decimal(26,5)), _col22 (type: decimal(27,6)), _col23 (type: decimal(28,7)), _col24 (type: decimal(29,8)), _col25 (type: decimal(30,9)), _col26 (type: decimal(31,10)), _col27 (type: decimal(32,11)), _col28 (type: decimal(33,12)), _col29 (type: decimal(34,13)), _col31 (type: decimal(35,14)), _col32 (type: decimal(36,15)), _col33 (type: decimal(37,16)) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(21,0)), VALUE._col0 (type: decimal(21,0)), VALUE._col1 (type: decimal(21,0)), VALUE._col2 (type: decimal(21,0)), VALUE._col3 (type: decimal(21,0)), VALUE._col4 (type: decimal(21,0)), VALUE._col5 (type: decimal(21,0)), VALUE._col6 (type: decimal(21,0)), VALUE._col7 (type: decimal(21,0)), VALUE._col8 (type: decimal(21,0)), VALUE._col9 (type: decimal(21,0)), VALUE._col10 (type: decimal(21,0)), VALUE._col11 (type: decimal(21,0)), VALUE._col12 (type: decimal(21,0)), VALUE._col13 (type: decimal(21,0)), VALUE._col14 (type: decimal(21,0)), VALUE._col15 (type: decimal(21,0)), VALUE._col16 (type: decimal(22,1)), VALUE._col17 (type: decimal(23,2)), VALUE._col18 (type: decimal(24,3)), VALUE._col19 (type: decimal(25,4)), VALUE._col20 (type: decimal(26,5)), VALUE._col21 (type: decimal(27,6)), VALUE._col22 (type: decimal(28,7)), VALUE._col23 (type: decimal(29,8)), VALUE._col24 (type: decimal(30,9)), VALUE._col25 (type: decimal(31,10)), VALUE._col26 (type: decimal(32,11)), VALUE._col27 (type: decimal(33,12)), VALUE._col28 (type: decimal(34,13)), VALUE._col28 (type: decimal(34,13)), VALUE._col29 (type: decimal(35,14)), VALUE._col30 (type: decimal(36,15)), VALUE._col31 (type: decimal(37,16)) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33 + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + round(dec, -15) as d, round(dec, -16), + round(dec, -13), round(dec, -14), + round(dec, -11), round(dec, -12), + round(dec, -9), round(dec, -10), + round(dec, -7), round(dec, -8), + round(dec, -5), round(dec, -6), + round(dec, -3), round(dec, -4), + round(dec, -1), round(dec, -2), + round(dec, 0), round(dec, 1), + round(dec, 2), round(dec, 3), + round(dec, 4), round(dec, 5), + round(dec, 6), round(dec, 7), + round(dec, 8), round(dec, 9), + round(dec, 10), round(dec, 11), + round(dec, 12), round(dec, 13), + round(dec, 13), round(dec, 14), + round(dec, 15), round(dec, 16) +FROM decimal_tbl_3_orc ORDER BY d +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_3_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + round(dec, -15) as d, round(dec, -16), + round(dec, -13), round(dec, -14), + round(dec, -11), round(dec, -12), + round(dec, -9), round(dec, -10), + round(dec, -7), round(dec, -8), + round(dec, -5), round(dec, -6), + round(dec, -3), round(dec, -4), + round(dec, -1), round(dec, -2), + round(dec, 0), round(dec, 1), + round(dec, 2), round(dec, 3), + round(dec, 4), round(dec, 5), + round(dec, 6), round(dec, 7), + round(dec, 8), round(dec, 9), + round(dec, 10), round(dec, 11), + round(dec, 12), round(dec, 13), + round(dec, 13), round(dec, 14), + round(dec, 15), round(dec, 16) +FROM decimal_tbl_3_orc ORDER BY d +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_3_orc +#### A masked pattern was here #### +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3.1 3.14 3.142 3.1416 3.14159 3.141593 3.1415927 3.14159265 3.141592654 3.1415926536 3.14159265359 3.141592653590 3.1415926535898 3.1415926535898 3.14159265358979 3.141592653589793 3.1415926535897930 +PREHOOK: query: create table decimal_tbl_4_orc (pos decimal(38,18), neg decimal(38,18)) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@decimal_tbl_4_orc +POSTHOOK: query: create table decimal_tbl_4_orc (pos decimal(38,18), neg decimal(38,18)) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@decimal_tbl_4_orc +PREHOOK: query: insert into table decimal_tbl_4_orc values(1809242.3151111344, -1809242.3151111344) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__4 +PREHOOK: Output: default@decimal_tbl_4_orc +POSTHOOK: query: insert into table decimal_tbl_4_orc values(1809242.3151111344, -1809242.3151111344) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__4 +POSTHOOK: Output: default@decimal_tbl_4_orc +POSTHOOK: Lineage: decimal_tbl_4_orc.neg EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +POSTHOOK: Lineage: decimal_tbl_4_orc.pos EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from decimal_tbl_4_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_4_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from decimal_tbl_4_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_4_orc +#### A masked pattern was here #### +1809242.3151111344 -1809242.3151111344 +PREHOOK: query: EXPLAIN +SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), round(-1809242.3151111344BD, 9) +FROM decimal_tbl_4_orc ORDER BY p +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), round(-1809242.3151111344BD, 9) +FROM decimal_tbl_4_orc ORDER BY p +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: decimal_tbl_4_orc + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: round(pos, 9) (type: decimal(30,9)), round(neg, 9) (type: decimal(30,9)), round(1809242.3151111344, 9) (type: decimal(17,9)), round((- 1809242.3151111344), 9) (type: decimal(17,9)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(30,9)) + sort order: + + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: decimal(30,9)), _col2 (type: decimal(17,9)), _col3 (type: decimal(17,9)) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(30,9)), VALUE._col0 (type: decimal(30,9)), VALUE._col1 (type: decimal(17,9)), VALUE._col2 (type: decimal(17,9)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), round(-1809242.3151111344BD, 9) +FROM decimal_tbl_4_orc ORDER BY p +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_tbl_4_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT round(pos, 9) as p, round(neg, 9), round(1809242.3151111344BD, 9), round(-1809242.3151111344BD, 9) +FROM decimal_tbl_4_orc ORDER BY p +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_tbl_4_orc +#### A masked pattern was here #### +1809242.315111134 -1809242.315111134 1809242.315111134 -1809242.315111134 From 9a9763c2ca027ac9bbf023dd3d0d281fd6488247 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Wed, 5 Nov 2014 01:25:52 +0000 Subject: [PATCH 245/339] HIVE-8675 Increase thrift server protocol test coverage (Brock Noland, reviewed by Alan Gates) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636791 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 3 + .../jdbc/miniHS2/AbstractHiveService.java | 6 +- .../java/org/apache/hive/jdbc/TestSSL.java | 73 +++++++++++++++++++ .../hive/service/auth/HiveAuthFactory.java | 31 +++++++- .../cli/thrift/ThriftBinaryCLIService.java | 8 +- .../cli/thrift/ThriftHttpCLIService.java | 6 ++ 6 files changed, 121 insertions(+), 6 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 77807724dccc..c9a28dc7dd15 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1583,6 +1583,9 @@ public static enum ConfVars { "table. From 0.12 onwards, they are displayed separately. This flag will let you\n" + "get old behavior, if desired. See, test-case in patch for HIVE-6689."), + HIVE_SSL_PROTOCOL_BLACKLIST("hive.ssl.protocol.blacklist", "SSLv2,SSLv2Hello,SSLv3", + "SSL Versions to disable for all Hive Servers"), + // HiveServer2 specific configs HIVE_SERVER2_MAX_START_ATTEMPTS("hive.server2.max.start.attempts", 30L, new RangeValidator(0L, null), "Number of times HiveServer2 will attempt to start before exiting, sleeping 60 seconds " + diff --git a/itests/hive-unit/src/main/java/org/apache/hive/jdbc/miniHS2/AbstractHiveService.java b/itests/hive-unit/src/main/java/org/apache/hive/jdbc/miniHS2/AbstractHiveService.java index 095b989bb77c..2c1cd07040f6 100644 --- a/itests/hive-unit/src/main/java/org/apache/hive/jdbc/miniHS2/AbstractHiveService.java +++ b/itests/hive-unit/src/main/java/org/apache/hive/jdbc/miniHS2/AbstractHiveService.java @@ -106,7 +106,7 @@ public void setHost(String hostName) { } // get service host - protected String getHost() { + public String getHost() { return hostname; } @@ -127,12 +127,12 @@ public void setHttpPort(int portNum) { } // Get binary service port # - protected int getBinaryPort() { + public int getBinaryPort() { return binaryPort; } // Get http service port # - protected int getHttpPort() { + public int getHttpPort() { return httpPort; } diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestSSL.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestSSL.java index 2bc8d73d81cd..30c4e9946265 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestSSL.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestSSL.java @@ -31,15 +31,21 @@ import java.util.Map; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.util.Shell; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hive.jdbc.miniHS2.MiniHS2; import org.junit.After; +import org.junit.Assert; +import org.junit.Assume; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class TestSSL { + private static final Logger LOG = LoggerFactory.getLogger(TestSSL.class); private static final String KEY_STORE_NAME = "keystore.jks"; private static final String TRUST_STORE_NAME = "truststore.jks"; private static final String KEY_STORE_PASSWORD = "HiveJdbc"; @@ -87,6 +93,73 @@ public void tearDown() throws Exception { System.clearProperty(JAVA_TRUST_STORE_PASS_PROP); } + private int execCommand(String cmd) throws Exception { + int exitCode; + try { + String output = Shell.execCommand("bash", "-c", cmd); + LOG.info("Output from '" + cmd + "': " + output) ; + exitCode = 0; + } catch (Shell.ExitCodeException e) { + exitCode = e.getExitCode(); + LOG.info("Error executing '" + cmd + "', exitCode = " + exitCode, e); + } + return exitCode; + } + + /*** + * Tests to ensure SSLv2 and SSLv3 are disabled + */ + @Test + public void testSSLVersion() throws Exception { + Assume.assumeTrue(execCommand("which openssl") == 0); // we need openssl + Assume.assumeTrue(System.getProperty("os.name").toLowerCase() + .contains("linux")); // we depend on linux openssl exit codes + + setSslConfOverlay(confOverlay); + // Test in binary mode + setBinaryConfOverlay(confOverlay); + // Start HS2 with SSL + miniHS2.start(confOverlay); + + // make SSL connection + hs2Conn = DriverManager.getConnection(miniHS2.getJdbcURL() + ";ssl=true;sslTrustStore=" + + dataFileDir + File.separator + TRUST_STORE_NAME + ";trustStorePassword=" + + KEY_STORE_PASSWORD, System.getProperty("user.name"), "bar"); + hs2Conn.close(); + Assert.assertEquals("Expected exit code of 1", 1, + execCommand("openssl s_client -connect " + miniHS2.getHost() + ":" + miniHS2.getBinaryPort() + + " -ssl2 < /dev/null")); + Assert.assertEquals("Expected exit code of 1", 1, + execCommand("openssl s_client -connect " + miniHS2.getHost() + ":" + miniHS2.getBinaryPort() + + " -ssl3 < /dev/null")); + miniHS2.stop(); + + // Test in http mode + setHttpConfOverlay(confOverlay); + miniHS2.start(confOverlay); + // make SSL connection + try { + hs2Conn = DriverManager.getConnection(miniHS2.getJdbcURL() + + ";ssl=true;sslTrustStore=" + dataFileDir + File.separator + + TRUST_STORE_NAME + ";trustStorePassword=" + KEY_STORE_PASSWORD + + "?hive.server2.transport.mode=" + HS2_HTTP_MODE + + ";hive.server2.thrift.http.path=" + HS2_HTTP_ENDPOINT, + System.getProperty("user.name"), "bar"); + Assert.fail("Expected SQLException during connect"); + } catch (SQLException e) { + LOG.info("Expected exception: " + e, e); + Assert.assertEquals("08S01", e.getSQLState().trim()); + Throwable cause = e.getCause(); + Assert.assertNotNull(cause); + while (cause.getCause() != null) { + cause = cause.getCause(); + } + Assert.assertEquals("org.apache.http.NoHttpResponseException", cause.getClass().getName()); + Assert.assertEquals("The target server failed to respond", cause.getMessage()); + } + miniHS2.stop(); + } + /*** * Test SSL client with non-SSL server fails * @throws Exception diff --git a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index 72bc724f6c16..6c645b8de9b4 100644 --- a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -21,9 +21,13 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; +import javax.net.ssl.SSLServerSocket; import javax.security.auth.login.LoginException; import javax.security.sasl.Sasl; @@ -43,12 +47,16 @@ import org.apache.thrift.transport.TTransport; import org.apache.thrift.transport.TTransportException; import org.apache.thrift.transport.TTransportFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * This class helps in some aspects of authentication. It creates the proper Thrift classes for the * given configuration as well as helps with authenticating requests. */ public class HiveAuthFactory { + private static final Logger LOG = LoggerFactory.getLogger(HiveAuthFactory.class); + public enum AuthTypes { NOSASL("NOSASL"), @@ -218,7 +226,8 @@ public static TServerSocket getServerSocket(String hiveHost, int portNum) } public static TServerSocket getServerSSLSocket(String hiveHost, int portNum, String keyStorePath, - String keyStorePassWord) throws TTransportException, UnknownHostException { + String keyStorePassWord, List sslVersionBlacklist) + throws TTransportException, UnknownHostException { TSSLTransportFactory.TSSLTransportParameters params = new TSSLTransportFactory.TSSLTransportParameters(); params.setKeyStore(keyStorePath, keyStorePassWord); @@ -229,7 +238,25 @@ public static TServerSocket getServerSSLSocket(String hiveHost, int portNum, Str } else { serverAddress = InetAddress.getByName(hiveHost); } - return TSSLTransportFactory.getServerSocket(portNum, 0, serverAddress, params); + TServerSocket thriftServerSocket = TSSLTransportFactory.getServerSocket(portNum, 0, serverAddress, params); + if (thriftServerSocket.getServerSocket() instanceof SSLServerSocket) { + List sslVersionBlacklistLocal = new ArrayList(); + for (String sslVersion : sslVersionBlacklist) { + sslVersionBlacklistLocal.add(sslVersion.trim().toLowerCase()); + } + SSLServerSocket sslServerSocket = (SSLServerSocket)thriftServerSocket.getServerSocket(); + List enabledProtocols = new ArrayList(); + for (String protocol : sslServerSocket.getEnabledProtocols()) { + if (sslVersionBlacklistLocal.contains(protocol.toLowerCase())) { + LOG.debug("Disabling SSL Protocol: " + protocol); + } else { + enabledProtocols.add(protocol); + } + } + sslServerSocket.setEnabledProtocols(enabledProtocols.toArray(new String[0])); + LOG.info("SSL Server Socket Enabled Protocols: " + Arrays.toString(sslServerSocket.getEnabledProtocols())); + } + return thriftServerSocket; } // retrieve delegation token for the given user diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftBinaryCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftBinaryCLIService.java index 028d55edbabb..6e373194f9ea 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftBinaryCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftBinaryCLIService.java @@ -18,6 +18,8 @@ package org.apache.hive.service.cli.thrift; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -56,6 +58,10 @@ public void run() { TTransportFactory transportFactory = hiveAuthFactory.getAuthTransFactory(); TProcessorFactory processorFactory = hiveAuthFactory.getAuthProcFactory(this); TServerSocket serverSocket = null; + List sslVersionBlacklist = new ArrayList(); + for (String sslVersion : hiveConf.getVar(ConfVars.HIVE_SSL_PROTOCOL_BLACKLIST).split(",")) { + sslVersionBlacklist.add(sslVersion); + } if (!hiveConf.getBoolVar(ConfVars.HIVE_SERVER2_USE_SSL)) { serverSocket = HiveAuthFactory.getServerSocket(hiveHost, portNum); } else { @@ -67,7 +73,7 @@ public void run() { String keyStorePassword = ShimLoader.getHadoopShims().getPassword(hiveConf, HiveConf.ConfVars.HIVE_SERVER2_SSL_KEYSTORE_PASSWORD.varname); serverSocket = HiveAuthFactory.getServerSSLSocket(hiveHost, portNum, keyStorePath, - keyStorePassword); + keyStorePassword, sslVersionBlacklist); } // Server args diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java index f7b16487fe12..65d5dfe19b41 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java @@ -18,6 +18,7 @@ package org.apache.hive.service.cli.thrift; +import java.util.Arrays; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -83,6 +84,11 @@ public void run() { + " Not configured for SSL connection"); } SslContextFactory sslContextFactory = new SslContextFactory(); + String[] excludedProtocols = hiveConf.getVar(ConfVars.HIVE_SSL_PROTOCOL_BLACKLIST).split(","); + LOG.info("HTTP Server SSL: adding excluded protocols: " + Arrays.toString(excludedProtocols)); + sslContextFactory.addExcludeProtocols(excludedProtocols); + LOG.info("HTTP Server SSL: SslContextFactory.getExcludeProtocols = " + + Arrays.toString(sslContextFactory.getExcludeProtocols())); sslContextFactory.setKeyStorePath(keyStorePath); sslContextFactory.setKeyStorePassword(keyStorePassword); connector = new SslSelectChannelConnector(sslContextFactory); From 242dbed66f63132a3f555268004116acabf8aaed Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Wed, 5 Nov 2014 03:26:13 +0000 Subject: [PATCH 246/339] HIVE-8705: Support using pre-authenticated subject in kerberized HiveServer2 HTTP mode (Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636794 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hive/jdbc/HiveConnection.java | 11 ++- .../jdbc/HttpKerberosRequestInterceptor.java | 6 +- .../hive/service/auth/HttpAuthUtils.java | 91 +++++++------------ .../service/cli/thrift/ThriftHttpServlet.java | 2 - 4 files changed, 44 insertions(+), 66 deletions(-) diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index d71bde3cbc92..f915699b8c61 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -99,6 +99,7 @@ public class HiveConnection implements java.sql.Connection { private JdbcConnectionParams connParams; private final boolean isEmbeddedMode; private TTransport transport; + private boolean assumeSubject; // TODO should be replaced by CliServiceClient private TCLIService.Iface client; private boolean isClosed = true; @@ -177,6 +178,9 @@ public HiveConnection(String uri, Properties info) throws SQLException { private void openTransport() throws SQLException { while (true) { try { + assumeSubject = + JdbcConnectionParams.AUTH_KERBEROS_AUTH_TYPE_FROM_SUBJECT.equals(sessConfMap + .get(JdbcConnectionParams.AUTH_KERBEROS_AUTH_TYPE)); transport = isHttpTransportMode() ? createHttpTransport() : createBinaryTransport(); if (!transport.isOpen()) { LOG.info("Will try to open client transport with JDBC Uri: " + jdbcUriString); @@ -265,8 +269,9 @@ private DefaultHttpClient getHttpClient(Boolean useSsl) throws SQLException { * In https mode, the entire information is encrypted * TODO: Optimize this with a mix of kerberos + using cookie. */ - requestInterceptor = new HttpKerberosRequestInterceptor( - sessConfMap.get(JdbcConnectionParams.AUTH_PRINCIPAL), host, getServerHttpUrl(false)); + requestInterceptor = + new HttpKerberosRequestInterceptor(sessConfMap.get(JdbcConnectionParams.AUTH_PRINCIPAL), + host, getServerHttpUrl(useSsl), assumeSubject); } else { /** @@ -351,8 +356,6 @@ private TTransport createBinaryTransport() throws SQLException, TTransportExcept } saslProps.put(Sasl.QOP, saslQOP.toString()); saslProps.put(Sasl.SERVER_AUTH, "true"); - boolean assumeSubject = JdbcConnectionParams.AUTH_KERBEROS_AUTH_TYPE_FROM_SUBJECT.equals(sessConfMap - .get(JdbcConnectionParams.AUTH_KERBEROS_AUTH_TYPE)); transport = KerberosSaslHelper.getKerberosTransport( sessConfMap.get(JdbcConnectionParams.AUTH_PRINCIPAL), host, HiveAuthFactory.getSocketTransport(host, port, loginTimeout), saslProps, diff --git a/jdbc/src/java/org/apache/hive/jdbc/HttpKerberosRequestInterceptor.java b/jdbc/src/java/org/apache/hive/jdbc/HttpKerberosRequestInterceptor.java index 9634d74af6f2..2d215473f968 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HttpKerberosRequestInterceptor.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HttpKerberosRequestInterceptor.java @@ -39,15 +39,17 @@ public class HttpKerberosRequestInterceptor implements HttpRequestInterceptor { String principal; String host; String serverHttpUrl; + boolean assumeSubject; // A fair reentrant lock private static ReentrantLock kerberosLock = new ReentrantLock(true); public HttpKerberosRequestInterceptor(String principal, String host, - String serverHttpUrl) { + String serverHttpUrl, boolean assumeSubject) { this.principal = principal; this.host = host; this.serverHttpUrl = serverHttpUrl; + this.assumeSubject = assumeSubject; } @Override @@ -59,7 +61,7 @@ public void process(HttpRequest httpRequest, HttpContext httpContext) // Locking ensures the tokens are unique in case of concurrent requests kerberosLock.lock(); kerberosAuthHeader = HttpAuthUtils.getKerberosServiceTicket( - principal, host, serverHttpUrl); + principal, host, serverHttpUrl, assumeSubject); // Set the session key token (Base64 encoded) in the headers httpRequest.addHeader(HttpAuthUtils.AUTHORIZATION + ": " + HttpAuthUtils.NEGOTIATE + " ", kerberosAuthHeader); diff --git a/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java b/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java index 10b6c7947634..54fa588ad544 100644 --- a/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java +++ b/service/src/java/org/apache/hive/service/auth/HttpAuthUtils.java @@ -18,16 +18,18 @@ package org.apache.hive.service.auth; -import java.io.IOException; +import java.security.AccessControlContext; +import java.security.AccessController; import java.security.PrivilegedExceptionAction; +import javax.security.auth.Subject; + import org.apache.commons.codec.binary.Base64; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.security.UserGroupInformation; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.HttpContext; import org.ietf.jgss.GSSContext; -import org.ietf.jgss.GSSCredential; import org.ietf.jgss.GSSManager; import org.ietf.jgss.GSSName; import org.ietf.jgss.Oid; @@ -36,60 +38,54 @@ * Utility functions for HTTP mode authentication. */ public final class HttpAuthUtils { - public static final String WWW_AUTHENTICATE = "WWW-Authenticate"; public static final String AUTHORIZATION = "Authorization"; public static final String BASIC = "Basic"; public static final String NEGOTIATE = "Negotiate"; - - /** - * @return Stringified Base64 encoded kerberosAuthHeader on success - */ - public static String getKerberosServiceTicket(String principal, String host, String serverHttpUrl) - throws IOException, InterruptedException { - UserGroupInformation clientUGI = getClientUGI("kerberos"); - String serverPrincipal = getServerPrincipal(principal, host); - // Uses the Ticket Granting Ticket in the UserGroupInformation - return clientUGI.doAs( - new HttpKerberosClientAction(serverPrincipal, clientUGI.getUserName(), serverHttpUrl)); - } /** - * Get server principal and verify that hostname is present. - */ - private static String getServerPrincipal(String principal, String host) throws IOException { - return ShimLoader.getHadoopThriftAuthBridge().getServerPrincipal(principal, host); - } - - /** - * JAAS login to setup the client UserGroupInformation. - * Sets up the Kerberos Ticket Granting Ticket, - * in the client UserGroupInformation object. - * - * @return Client's UserGroupInformation + * @return Stringified Base64 encoded kerberosAuthHeader on success + * @throws Exception */ - public static UserGroupInformation getClientUGI(String authType) throws IOException { - return ShimLoader.getHadoopThriftAuthBridge().getCurrentUGIWithConf(authType); + public static String getKerberosServiceTicket(String principal, String host, + String serverHttpUrl, boolean assumeSubject) throws Exception { + String serverPrincipal = + ShimLoader.getHadoopThriftAuthBridge().getServerPrincipal(principal, host); + if (assumeSubject) { + // With this option, we're assuming that the external application, + // using the JDBC driver has done a JAAS kerberos login already + AccessControlContext context = AccessController.getContext(); + Subject subject = Subject.getSubject(context); + if (subject == null) { + throw new Exception("The Subject is not set"); + } + return Subject.doAs(subject, new HttpKerberosClientAction(serverPrincipal, serverHttpUrl)); + } else { + // JAAS login from ticket cache to setup the client UserGroupInformation + UserGroupInformation clientUGI = + ShimLoader.getHadoopThriftAuthBridge().getCurrentUGIWithConf("kerberos"); + return clientUGI.doAs(new HttpKerberosClientAction(serverPrincipal, serverHttpUrl)); + } } private HttpAuthUtils() { throw new UnsupportedOperationException("Can't initialize class"); } + /** + * We'll create an instance of this class within a doAs block so that the client's TGT credentials + * can be read from the Subject + */ public static class HttpKerberosClientAction implements PrivilegedExceptionAction { - public static final String HTTP_RESPONSE = "HTTP_RESPONSE"; public static final String SERVER_HTTP_URL = "SERVER_HTTP_URL"; private final String serverPrincipal; - private final String clientUserName; private final String serverHttpUrl; private final Base64 base64codec; private final HttpContext httpContext; - public HttpKerberosClientAction(String serverPrincipal, String clientUserName, - String serverHttpUrl) { + public HttpKerberosClientAction(String serverPrincipal, String serverHttpUrl) { this.serverPrincipal = serverPrincipal; - this.clientUserName = clientUserName; this.serverHttpUrl = serverHttpUrl; base64codec = new Base64(0); httpContext = new BasicHttpContext(); @@ -102,38 +98,17 @@ public String run() throws Exception { Oid mechOid = new Oid("1.2.840.113554.1.2.2"); // Oid for kerberos principal name Oid krb5PrincipalOid = new Oid("1.2.840.113554.1.2.2.1"); - GSSManager manager = GSSManager.getInstance(); - - // GSS name for client - GSSName clientName = manager.createName(clientUserName, GSSName.NT_USER_NAME); // GSS name for server GSSName serverName = manager.createName(serverPrincipal, krb5PrincipalOid); - - // GSS credentials for client - GSSCredential clientCreds = - manager.createCredential(clientName, GSSCredential.DEFAULT_LIFETIME, mechOid, - GSSCredential.INITIATE_ONLY); - - /* - * Create a GSSContext for mutual authentication with the - * server. - * - serverName is the GSSName that represents the server. - * - krb5Oid is the Oid that represents the mechanism to - * use. The client chooses the mechanism to use. - * - clientCreds are the client credentials - */ + // Create a GSSContext for authentication with the service. + // We're passing client credentials as null since we want them to be read from the Subject. GSSContext gssContext = - manager.createContext(serverName, mechOid, clientCreds, GSSContext.DEFAULT_LIFETIME); - - // Mutual authentication not r + manager.createContext(serverName, mechOid, null, GSSContext.DEFAULT_LIFETIME); gssContext.requestMutualAuth(false); - // Establish context byte[] inToken = new byte[0]; - byte[] outToken = gssContext.initSecContext(inToken, 0, inToken.length); - gssContext.dispose(); // Base64 encoded and stringified token for server return new String(base64codec.encode(outToken)); diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java index c61d3a3e2e08..fde39d277a08 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java @@ -208,11 +208,9 @@ public String run() throws HttpAuthenticationException { // Create a GSS context gssContext = manager.createContext(serverCreds); - // Get service ticket from the authorization header String serviceTicketBase64 = getAuthHeader(request, authType); byte[] inToken = Base64.decodeBase64(serviceTicketBase64.getBytes()); - gssContext.acceptSecContext(inToken, 0, inToken.length); // Authenticate or deny based on its context completion if (!gssContext.isEstablished()) { From d213b2ec1a6fc9d1420f2cdae3e35d1e2c2b7d84 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Wed, 5 Nov 2014 03:27:59 +0000 Subject: [PATCH 247/339] HIVE-8723: Set reasonable connection timeout for CuratorFramework ZooKeeper clients in Hive (Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636795 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/thrift/TestZooKeeperTokenStore.java | 22 ++++--------- jdbc/src/java/org/apache/hive/jdbc/Utils.java | 3 -- .../hive/jdbc/ZooKeeperHiveClientHelper.java | 2 -- .../hive/service/server/HiveServer2.java | 8 ----- .../hive/thrift/ZooKeeperTokenStore.java | 32 +++++++++++-------- 5 files changed, 24 insertions(+), 43 deletions(-) diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestZooKeeperTokenStore.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestZooKeeperTokenStore.java index 26d4d974ac8c..faa51af2f930 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestZooKeeperTokenStore.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestZooKeeperTokenStore.java @@ -43,9 +43,6 @@ public class TestZooKeeperTokenStore extends TestCase { private CuratorFramework zkClient = null; private int zkPort = -1; private ZooKeeperTokenStore ts; - // connect timeout large enough for slower test environments - private final int connectTimeoutMillis = 30000; - private final int sessionTimeoutMillis = 3000; @Override protected void setUp() throws Exception { @@ -55,10 +52,9 @@ protected void setUp() throws Exception { } this.zkCluster = new MiniZooKeeperCluster(); this.zkPort = this.zkCluster.startup(zkDataDir); - - this.zkClient = CuratorFrameworkFactory.builder().connectString("localhost:" + zkPort) - .sessionTimeoutMs(sessionTimeoutMillis).connectionTimeoutMs(connectTimeoutMillis) - .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); + this.zkClient = + CuratorFrameworkFactory.builder().connectString("localhost:" + zkPort) + .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); this.zkClient.start(); } @@ -74,15 +70,9 @@ protected void tearDown() throws Exception { private Configuration createConf(String zkPath) { Configuration conf = new Configuration(); - conf.set( - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR, - "localhost:" + this.zkPort); - conf.set( - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ZNODE, - zkPath); - conf.setLong( - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_TIMEOUTMILLIS, - connectTimeoutMillis); + conf.set(HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR, "localhost:" + + this.zkPort); + conf.set(HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ZNODE, zkPath); return conf; } diff --git a/jdbc/src/java/org/apache/hive/jdbc/Utils.java b/jdbc/src/java/org/apache/hive/jdbc/Utils.java index d981c0300dd1..f2dcb7944d1c 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/Utils.java +++ b/jdbc/src/java/org/apache/hive/jdbc/Utils.java @@ -100,9 +100,6 @@ public static class JdbcConnectionParams { static final String ZOOKEEPER_DEFAULT_NAMESPACE = "hiveserver2"; // Non-configurable params: - // ZOOKEEPER_SESSION_TIMEOUT is not exposed as client configurable - static final int ZOOKEEPER_SESSION_TIMEOUT = 600 * 1000; - static final int ZOOKEEPER_CONNECTION_TIMEOUT = -1; // Currently supports JKS keystore format static final String SSL_TRUST_STORE_TYPE = "JKS"; diff --git a/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java b/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java index d515ce5a03d2..496c82046c7c 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java +++ b/jdbc/src/java/org/apache/hive/jdbc/ZooKeeperHiveClientHelper.java @@ -63,8 +63,6 @@ static String getNextServerUriFromZooKeeper(JdbcConnectionParams connParams) String serverNode; CuratorFramework zooKeeperClient = CuratorFrameworkFactory.builder().connectString(zooKeeperEnsemble) - .sessionTimeoutMs(JdbcConnectionParams.ZOOKEEPER_SESSION_TIMEOUT) - .connectionTimeoutMs(JdbcConnectionParams.ZOOKEEPER_CONNECTION_TIMEOUT) .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); zooKeeperClient.start(); try { diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java b/service/src/java/org/apache/hive/service/server/HiveServer2.java index b814e4bb2eca..4199f0fafc0c 100644 --- a/service/src/java/org/apache/hive/service/server/HiveServer2.java +++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java @@ -143,9 +143,6 @@ public List getAclForPath(String path) { * @throws Exception */ private void addServerInstanceToZooKeeper(HiveConf hiveConf) throws Exception { - int zooKeeperSessionTimeout = - hiveConf.getIntVar(HiveConf.ConfVars.HIVE_ZOOKEEPER_SESSION_TIMEOUT); - int connectTimeoutMillis = -1; String zooKeeperEnsemble = ZooKeeperHiveHelper.getQuorumServers(hiveConf); String rootNamespace = hiveConf.getVar(HiveConf.ConfVars.HIVE_SERVER2_ZOOKEEPER_NAMESPACE); String instanceURI = getServerInstanceURI(hiveConf); @@ -155,7 +152,6 @@ private void addServerInstanceToZooKeeper(HiveConf hiveConf) throws Exception { // Use the zooKeeperAclProvider to create appropriate ACLs zooKeeperClient = CuratorFrameworkFactory.builder().connectString(zooKeeperEnsemble) - .sessionTimeoutMs(zooKeeperSessionTimeout).connectionTimeoutMs(connectTimeoutMillis) .aclProvider(zooKeeperAclProvider).retryPolicy(new ExponentialBackoffRetry(1000, 3)) .build(); zooKeeperClient.start(); @@ -345,14 +341,10 @@ private static void startHiveServer2() throws Throwable { */ static void deleteServerInstancesFromZooKeeper(String versionNumber) throws Exception { HiveConf hiveConf = new HiveConf(); - int zooKeeperSessionTimeout = - hiveConf.getIntVar(HiveConf.ConfVars.HIVE_ZOOKEEPER_SESSION_TIMEOUT); - int connectTimeoutMillis = -1; String zooKeeperEnsemble = ZooKeeperHiveHelper.getQuorumServers(hiveConf); String rootNamespace = hiveConf.getVar(HiveConf.ConfVars.HIVE_SERVER2_ZOOKEEPER_NAMESPACE); CuratorFramework zooKeeperClient = CuratorFrameworkFactory.builder().connectString(zooKeeperEnsemble) - .sessionTimeoutMs(zooKeeperSessionTimeout).connectionTimeoutMs(connectTimeoutMillis) .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); zooKeeperClient.start(); List znodePaths = diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/ZooKeeperTokenStore.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/ZooKeeperTokenStore.java index 16a52e44e731..91e4a69b5683 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/ZooKeeperTokenStore.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/ZooKeeperTokenStore.java @@ -62,8 +62,7 @@ public class ZooKeeperTokenStore implements DelegationTokenStore { private String rootNode = ""; private volatile CuratorFramework zkSession; private String zkConnectString; - private final int zkSessionTimeout = 3000; - private int connectTimeoutMillis = -1; + private int connectTimeoutMillis; private List newNodeAcl = Arrays.asList(new ACL(Perms.ALL, Ids.AUTH_IDS)); /** @@ -101,10 +100,10 @@ private CuratorFramework getSession() { if (zkSession == null || zkSession.getState() == CuratorFrameworkState.STOPPED) { synchronized (this) { if (zkSession == null || zkSession.getState() == CuratorFrameworkState.STOPPED) { - zkSession = CuratorFrameworkFactory.builder().connectString(zkConnectString) - .sessionTimeoutMs(zkSessionTimeout).connectionTimeoutMs(connectTimeoutMillis) - .aclProvider(aclDefaultProvider) - .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); + zkSession = + CuratorFrameworkFactory.builder().connectString(zkConnectString) + .connectionTimeoutMs(connectTimeoutMillis).aclProvider(aclDefaultProvider) + .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); zkSession.start(); } } @@ -431,12 +430,14 @@ public void close() throws IOException { @Override public void init(Object objectStore, ServerMode smode) { this.serverMode = smode; - zkConnectString = conf.get( - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR, null); + zkConnectString = + conf.get(HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR, null); if (zkConnectString == null || zkConnectString.trim().isEmpty()) { // try alternate config param - zkConnectString = conf.get( - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR_ALTERNATE, null); + zkConnectString = + conf.get( + HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR_ALTERNATE, + null); if (zkConnectString == null || zkConnectString.trim().isEmpty()) { throw new IllegalArgumentException("Zookeeper connect string has to be specifed through " + "either " + HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_STR @@ -445,14 +446,17 @@ public void init(Object objectStore, ServerMode smode) { + WHEN_ZK_DSTORE_MSG); } } - connectTimeoutMillis = conf.getInt( - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_TIMEOUTMILLIS, -1); + connectTimeoutMillis = + conf.getInt( + HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_CONNECT_TIMEOUTMILLIS, + CuratorFrameworkFactory.builder().getConnectionTimeoutMs()); String aclStr = conf.get(HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ACL, null); if (StringUtils.isNotBlank(aclStr)) { this.newNodeAcl = parseACLs(aclStr); } - rootNode = conf.get(HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ZNODE, - HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ZNODE_DEFAULT) + serverMode; + rootNode = + conf.get(HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ZNODE, + HadoopThriftAuthBridge20S.Server.DELEGATION_TOKEN_STORE_ZK_ZNODE_DEFAULT) + serverMode; try { // Install the JAAS Configuration for the runtime From 6a082c0414fe6222fe0277fa9b9e22fd1317aae4 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Wed, 5 Nov 2014 07:26:07 +0000 Subject: [PATCH 248/339] HIVE-8720: Update orc_merge tests to make it consistent across OS'es (Prasanth J reviewed by Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636812 13f79535-47bb-0310-9956-ffa450edef68 --- .../test/queries/clientpositive/orc_merge1.q | 6 +- .../test/queries/clientpositive/orc_merge2.q | 2 +- .../test/queries/clientpositive/orc_merge3.q | 2 +- .../test/queries/clientpositive/orc_merge4.q | 6 +- .../test/queries/clientpositive/orc_merge5.q | 8 +- .../test/queries/clientpositive/orc_merge6.q | 16 +- .../test/queries/clientpositive/orc_merge7.q | 16 +- .../clientpositive/orc_merge_incompat1.q | 4 +- .../clientpositive/orc_merge_incompat2.q | 8 +- .../results/clientpositive/orc_merge1.q.out | 126 +----- .../results/clientpositive/orc_merge2.q.out | 43 +-- .../results/clientpositive/orc_merge3.q.out | 36 +- .../results/clientpositive/orc_merge4.q.out | 123 +----- .../results/clientpositive/orc_merge5.q.out | 156 +------- .../results/clientpositive/orc_merge6.q.out | 360 +----------------- .../results/clientpositive/orc_merge7.q.out | 352 +---------------- .../clientpositive/orc_merge_incompat1.q.out | 78 +--- .../clientpositive/orc_merge_incompat2.q.out | 176 +-------- .../clientpositive/tez/orc_merge1.q.out | 126 +----- .../clientpositive/tez/orc_merge2.q.out | 43 +-- .../clientpositive/tez/orc_merge3.q.out | 36 +- .../clientpositive/tez/orc_merge4.q.out | 123 +----- .../clientpositive/tez/orc_merge5.q.out | 156 +------- .../clientpositive/tez/orc_merge6.q.out | 360 +----------------- .../clientpositive/tez/orc_merge7.q.out | 352 +---------------- .../tez/orc_merge_incompat1.q.out | 78 +--- .../tez/orc_merge_incompat2.q.out | 176 +-------- 27 files changed, 102 insertions(+), 2866 deletions(-) diff --git a/ql/src/test/queries/clientpositive/orc_merge1.q b/ql/src/test/queries/clientpositive/orc_merge1.q index 5a9cadea438c..410ef0be2139 100644 --- a/ql/src/test/queries/clientpositive/orc_merge1.q +++ b/ql/src/test/queries/clientpositive/orc_merge1.q @@ -31,7 +31,7 @@ INSERT OVERWRITE TABLE orcfile_merge1 PARTITION (ds='1', part) SELECT key, value, PMOD(HASH(key), 2) as part FROM src; -DESC FORMATTED orcfile_merge1 partition (ds='1', part='0'); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orcfile_merge1/ds=1/part=0/; set hive.merge.tezfiles=true; set hive.merge.mapfiles=true; @@ -46,7 +46,7 @@ INSERT OVERWRITE TABLE orcfile_merge1b PARTITION (ds='1', part) SELECT key, value, PMOD(HASH(key), 2) as part FROM src; -DESC FORMATTED orcfile_merge1b partition (ds='1', part='0'); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orcfile_merge1b/ds=1/part=0/; set hive.merge.orcfile.stripe.level=true; -- auto-merge fast way @@ -59,7 +59,7 @@ INSERT OVERWRITE TABLE orcfile_merge1c PARTITION (ds='1', part) SELECT key, value, PMOD(HASH(key), 2) as part FROM src; -DESC FORMATTED orcfile_merge1c partition (ds='1', part='0'); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orcfile_merge1c/ds=1/part=0/; set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; -- Verify diff --git a/ql/src/test/queries/clientpositive/orc_merge2.q b/ql/src/test/queries/clientpositive/orc_merge2.q index 82115c8ffcf3..9ffc4bc917f9 100644 --- a/ql/src/test/queries/clientpositive/orc_merge2.q +++ b/ql/src/test/queries/clientpositive/orc_merge2.q @@ -18,7 +18,7 @@ INSERT OVERWRITE TABLE orcfile_merge2a PARTITION (one='1', two, three) PMOD(HASH(value), 10) as three FROM src; -DESC FORMATTED orcfile_merge2a partition (one='1', two='0', three='2'); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orcfile_merge2a/one=1/two=0/three=2/; SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) diff --git a/ql/src/test/queries/clientpositive/orc_merge3.q b/ql/src/test/queries/clientpositive/orc_merge3.q index 873b3acea619..444ea656fe27 100644 --- a/ql/src/test/queries/clientpositive/orc_merge3.q +++ b/ql/src/test/queries/clientpositive/orc_merge3.q @@ -19,7 +19,7 @@ EXPLAIN INSERT OVERWRITE TABLE orcfile_merge3b INSERT OVERWRITE TABLE orcfile_merge3b SELECT key, value FROM orcfile_merge3a; -DESC FORMATTED orcfile_merge3b; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orcfile_merge3b/; SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) diff --git a/ql/src/test/queries/clientpositive/orc_merge4.q b/ql/src/test/queries/clientpositive/orc_merge4.q index b5a8e1b21e0f..769d4d39b1c9 100644 --- a/ql/src/test/queries/clientpositive/orc_merge4.q +++ b/ql/src/test/queries/clientpositive/orc_merge4.q @@ -11,7 +11,7 @@ set hive.merge.mapfiles=false; INSERT OVERWRITE TABLE orcfile_merge3a PARTITION (ds='1') SELECT * FROM src; -DESC FORMATTED orcfile_merge3a PARTITION (ds='1'); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orcfile_merge3a/ds=1/; set hive.merge.mapfiles=true; INSERT OVERWRITE TABLE orcfile_merge3a PARTITION (ds='1') @@ -20,8 +20,8 @@ INSERT OVERWRITE TABLE orcfile_merge3a PARTITION (ds='1') INSERT OVERWRITE TABLE orcfile_merge3a PARTITION (ds='2') SELECT * FROM src; -DESC FORMATTED orcfile_merge3a PARTITION (ds='1'); -DESC FORMATTED orcfile_merge3a PARTITION (ds='2'); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orcfile_merge3a/ds=1/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orcfile_merge3a/ds=2/; set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; EXPLAIN INSERT OVERWRITE TABLE orcfile_merge3b diff --git a/ql/src/test/queries/clientpositive/orc_merge5.q b/ql/src/test/queries/clientpositive/orc_merge5.q index 1d6f338c0b68..9682347f7176 100644 --- a/ql/src/test/queries/clientpositive/orc_merge5.q +++ b/ql/src/test/queries/clientpositive/orc_merge5.q @@ -23,7 +23,7 @@ insert overwrite table orc_merge5b select userid,string1,subtype,decimal1,ts fro -- 3 files total analyze table orc_merge5b compute statistics noscan; -desc formatted orc_merge5b; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5b/; select * from orc_merge5b; set hive.merge.orcfile.stripe.level=true; @@ -37,7 +37,7 @@ insert overwrite table orc_merge5b select userid,string1,subtype,decimal1,ts fro -- 1 file after merging analyze table orc_merge5b compute statistics noscan; -desc formatted orc_merge5b; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5b/; select * from orc_merge5b; set hive.merge.orcfile.stripe.level=false; @@ -47,7 +47,7 @@ set hive.merge.mapredfiles=false; insert overwrite table orc_merge5b select userid,string1,subtype,decimal1,ts from orc_merge5 where userid<=13; analyze table orc_merge5b compute statistics noscan; -desc formatted orc_merge5b; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5b/; select * from orc_merge5b; set hive.merge.orcfile.stripe.level=true; @@ -56,6 +56,6 @@ alter table orc_merge5b concatenate; -- 1 file after merging analyze table orc_merge5b compute statistics noscan; -desc formatted orc_merge5b; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5b/; select * from orc_merge5b; diff --git a/ql/src/test/queries/clientpositive/orc_merge6.q b/ql/src/test/queries/clientpositive/orc_merge6.q index 0475eee7f48e..cddc73a4d634 100644 --- a/ql/src/test/queries/clientpositive/orc_merge6.q +++ b/ql/src/test/queries/clientpositive/orc_merge6.q @@ -26,8 +26,8 @@ insert overwrite table orc_merge5a partition (year="2001",hour=24) select userid -- 3 files total analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan; analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan; -desc formatted orc_merge5a partition(year="2000",hour=24); -desc formatted orc_merge5a partition(year="2001",hour=24); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/year=2000/hour=24/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/year=2001/hour=24/; show partitions orc_merge5a; select * from orc_merge5a; @@ -44,8 +44,8 @@ insert overwrite table orc_merge5a partition (year="2001",hour=24) select userid -- 1 file after merging analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan; analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan; -desc formatted orc_merge5a partition(year="2000",hour=24); -desc formatted orc_merge5a partition(year="2001",hour=24); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/year=2000/hour=24/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/year=2001/hour=24/; show partitions orc_merge5a; select * from orc_merge5a; @@ -58,8 +58,8 @@ insert overwrite table orc_merge5a partition (year="2000",hour=24) select userid insert overwrite table orc_merge5a partition (year="2001",hour=24) select userid,string1,subtype,decimal1,ts from orc_merge5 where userid<=13; analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan; analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan; -desc formatted orc_merge5a partition(year="2000",hour=24); -desc formatted orc_merge5a partition(year="2001",hour=24); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/year=2000/hour=24/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/year=2001/hour=24/; show partitions orc_merge5a; select * from orc_merge5a; @@ -71,8 +71,8 @@ alter table orc_merge5a partition(year="2001",hour=24) concatenate; -- 1 file after merging analyze table orc_merge5a partition(year="2000",hour=24) compute statistics noscan; analyze table orc_merge5a partition(year="2001",hour=24) compute statistics noscan; -desc formatted orc_merge5a partition(year="2000",hour=24); -desc formatted orc_merge5a partition(year="2001",hour=24); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/year=2000/hour=24/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/year=2001/hour=24/; show partitions orc_merge5a; select * from orc_merge5a; diff --git a/ql/src/test/queries/clientpositive/orc_merge7.q b/ql/src/test/queries/clientpositive/orc_merge7.q index ec61c1e78593..7e0d352badd2 100644 --- a/ql/src/test/queries/clientpositive/orc_merge7.q +++ b/ql/src/test/queries/clientpositive/orc_merge7.q @@ -30,8 +30,8 @@ insert overwrite table orc_merge5a partition (st) select userid,string1,subtype, -- 3 files total analyze table orc_merge5a partition(st=80.0) compute statistics noscan; analyze table orc_merge5a partition(st=0.8) compute statistics noscan; -desc formatted orc_merge5a partition(st=80.0); -desc formatted orc_merge5a partition(st=0.8); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=80.0/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=0.8/; show partitions orc_merge5a; select * from orc_merge5a where userid<=13; @@ -48,8 +48,8 @@ insert overwrite table orc_merge5a partition (st) select userid,string1,subtype, -- 1 file after merging analyze table orc_merge5a partition(st=80.0) compute statistics noscan; analyze table orc_merge5a partition(st=0.8) compute statistics noscan; -desc formatted orc_merge5a partition(st=80.0); -desc formatted orc_merge5a partition(st=0.8); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=80.0/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=0.8/; show partitions orc_merge5a; select * from orc_merge5a where userid<=13; @@ -62,8 +62,8 @@ insert overwrite table orc_merge5a partition (st) select userid,string1,subtype, insert overwrite table orc_merge5a partition (st) select userid,string1,subtype,decimal1,ts,subtype from orc_merge5; analyze table orc_merge5a partition(st=80.0) compute statistics noscan; analyze table orc_merge5a partition(st=0.8) compute statistics noscan; -desc formatted orc_merge5a partition(st=80.0); -desc formatted orc_merge5a partition(st=0.8); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=80.0/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=0.8/; show partitions orc_merge5a; select * from orc_merge5a where userid<=13; @@ -75,8 +75,8 @@ alter table orc_merge5a partition(st=0.8) concatenate; -- 1 file after merging analyze table orc_merge5a partition(st=80.0) compute statistics noscan; analyze table orc_merge5a partition(st=0.8) compute statistics noscan; -desc formatted orc_merge5a partition(st=80.0); -desc formatted orc_merge5a partition(st=0.8); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=80.0/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=0.8/; show partitions orc_merge5a; select * from orc_merge5a where userid<=13; diff --git a/ql/src/test/queries/clientpositive/orc_merge_incompat1.q b/ql/src/test/queries/clientpositive/orc_merge_incompat1.q index 9b846fe6526c..59cc221e8a7e 100644 --- a/ql/src/test/queries/clientpositive/orc_merge_incompat1.q +++ b/ql/src/test/queries/clientpositive/orc_merge_incompat1.q @@ -22,7 +22,7 @@ insert into table orc_merge5b select userid,string1,subtype,decimal1,ts from orc -- 5 files total analyze table orc_merge5b compute statistics noscan; -desc formatted orc_merge5b; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5b/; select * from orc_merge5b; set hive.merge.orcfile.stripe.level=true; @@ -30,6 +30,6 @@ alter table orc_merge5b concatenate; -- 3 file after merging - all 0.12 format files will be merged and 0.11 files will be left behind analyze table orc_merge5b compute statistics noscan; -desc formatted orc_merge5b; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5b/; select * from orc_merge5b; diff --git a/ql/src/test/queries/clientpositive/orc_merge_incompat2.q b/ql/src/test/queries/clientpositive/orc_merge_incompat2.q index 8aa48f23156b..5deec3c59590 100644 --- a/ql/src/test/queries/clientpositive/orc_merge_incompat2.q +++ b/ql/src/test/queries/clientpositive/orc_merge_incompat2.q @@ -32,8 +32,8 @@ insert into table orc_merge5a partition (st) select userid,string1,subtype,decim analyze table orc_merge5a partition(st=80.0) compute statistics noscan; analyze table orc_merge5a partition(st=0.8) compute statistics noscan; -desc formatted orc_merge5a partition(st=80.0); -desc formatted orc_merge5a partition(st=0.8); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=80.0/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=0.8/; show partitions orc_merge5a; select * from orc_merge5a where userid<=13; @@ -44,8 +44,8 @@ alter table orc_merge5a partition(st=0.8) concatenate; analyze table orc_merge5a partition(st=80.0) compute statistics noscan; analyze table orc_merge5a partition(st=0.8) compute statistics noscan; -desc formatted orc_merge5a partition(st=80.0); -desc formatted orc_merge5a partition(st=0.8); +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=80.0/; +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/orc_merge5a/st=0.8/; show partitions orc_merge5a; select * from orc_merge5a where userid<=13; diff --git a/ql/src/test/results/clientpositive/orc_merge1.q.out b/ql/src/test/results/clientpositive/orc_merge1.q.out index f38709b72d8a..2927791dcbe7 100644 --- a/ql/src/test/results/clientpositive/orc_merge1.q.out +++ b/ql/src/test/results/clientpositive/orc_merge1.q.out @@ -110,48 +110,8 @@ POSTHOOK: Lineage: orcfile_merge1 PARTITION(ds=1,part=0).key EXPRESSION [(src)sr POSTHOOK: Lineage: orcfile_merge1 PARTITION(ds=1,part=0).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1 PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1 PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge1 partition (ds='1', part='0') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge1 -POSTHOOK: query: DESC FORMATTED orcfile_merge1 partition (ds='1', part='0') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge1 -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string -part string - -# Detailed Partition Information -Partition Value: [1, 0] -Database: default -Table: orcfile_merge1 -#### A masked pattern was here #### -Protect Mode: None +Found 2 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 2 - numRows 242 - rawDataSize 22748 - totalSize 1747 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: -- auto-merge slow way EXPLAIN INSERT OVERWRITE TABLE orcfile_merge1b PARTITION (ds='1', part) @@ -266,48 +226,8 @@ POSTHOOK: Lineage: orcfile_merge1b PARTITION(ds=1,part=0).key EXPRESSION [(src)s POSTHOOK: Lineage: orcfile_merge1b PARTITION(ds=1,part=0).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1b PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1b PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge1b partition (ds='1', part='0') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge1b -POSTHOOK: query: DESC FORMATTED orcfile_merge1b partition (ds='1', part='0') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge1b -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string -part string - -# Detailed Partition Information -Partition Value: [1, 0] -Database: default -Table: orcfile_merge1b +Found 1 items #### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 242 - rawDataSize 22748 - totalSize 1332 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: -- auto-merge fast way EXPLAIN INSERT OVERWRITE TABLE orcfile_merge1c PARTITION (ds='1', part) @@ -412,48 +332,8 @@ POSTHOOK: Lineage: orcfile_merge1c PARTITION(ds=1,part=0).key EXPRESSION [(src)s POSTHOOK: Lineage: orcfile_merge1c PARTITION(ds=1,part=0).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1c PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1c PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge1c partition (ds='1', part='0') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge1c -POSTHOOK: query: DESC FORMATTED orcfile_merge1c partition (ds='1', part='0') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge1c -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string -part string - -# Detailed Partition Information -Partition Value: [1, 0] -Database: default -Table: orcfile_merge1c -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 242 - rawDataSize 22748 - totalSize 1623 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: -- Verify SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) diff --git a/ql/src/test/results/clientpositive/orc_merge2.q.out b/ql/src/test/results/clientpositive/orc_merge2.q.out index b927b75eccc8..d4c474f9fee9 100644 --- a/ql/src/test/results/clientpositive/orc_merge2.q.out +++ b/ql/src/test/results/clientpositive/orc_merge2.q.out @@ -173,49 +173,8 @@ POSTHOOK: Lineage: orcfile_merge2a PARTITION(one=1,two=9,three=1).key EXPRESSION POSTHOOK: Lineage: orcfile_merge2a PARTITION(one=1,two=9,three=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge2a PARTITION(one=1,two=9,three=7).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge2a PARTITION(one=1,two=9,three=7).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge2a partition (one='1', two='0', three='2') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge2a -POSTHOOK: query: DESC FORMATTED orcfile_merge2a partition (one='1', two='0', three='2') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge2a -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -one string -two string -three string - -# Detailed Partition Information -Partition Value: [1, 0, 2] -Database: default -Table: orcfile_merge2a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 4 - rawDataSize 376 - totalSize 320 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM orcfile_merge2a diff --git a/ql/src/test/results/clientpositive/orc_merge3.q.out b/ql/src/test/results/clientpositive/orc_merge3.q.out index 6ac84969cf87..7bf12c6c2854 100644 --- a/ql/src/test/results/clientpositive/orc_merge3.q.out +++ b/ql/src/test/results/clientpositive/orc_merge3.q.out @@ -142,42 +142,8 @@ POSTHOOK: Input: default@orcfile_merge3a@ds=2 POSTHOOK: Output: default@orcfile_merge3b POSTHOOK: Lineage: orcfile_merge3b.key SIMPLE [(orcfile_merge3a)orcfile_merge3a.FieldSchema(name:key, type:int, comment:null), ] POSTHOOK: Lineage: orcfile_merge3b.value SIMPLE [(orcfile_merge3a)orcfile_merge3a.FieldSchema(name:value, type:string, comment:null), ] -PREHOOK: query: DESC FORMATTED orcfile_merge3b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge3b -POSTHOOK: query: DESC FORMATTED orcfile_merge3b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge3b -# col_name data_type comment - -key int -value string - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 1000 - rawDataSize 94000 - totalSize 4834 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) FROM orcfile_merge3a diff --git a/ql/src/test/results/clientpositive/orc_merge4.q.out b/ql/src/test/results/clientpositive/orc_merge4.q.out index ed6ed8e4cdc1..828f20415744 100644 --- a/ql/src/test/results/clientpositive/orc_merge4.q.out +++ b/ql/src/test/results/clientpositive/orc_merge4.q.out @@ -36,47 +36,8 @@ POSTHOOK: Input: default@src POSTHOOK: Output: default@orcfile_merge3a@ds=1 POSTHOOK: Lineage: orcfile_merge3a PARTITION(ds=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge3a PARTITION(ds=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='1') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge3a -POSTHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='1') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge3a -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string - -# Detailed Partition Information -Partition Value: [1] -Database: default -Table: orcfile_merge3a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 500 - rawDataSize 47000 - totalSize 2496 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: INSERT OVERWRITE TABLE orcfile_merge3a PARTITION (ds='1') SELECT * FROM src PREHOOK: type: QUERY @@ -101,88 +62,10 @@ POSTHOOK: Input: default@src POSTHOOK: Output: default@orcfile_merge3a@ds=2 POSTHOOK: Lineage: orcfile_merge3a PARTITION(ds=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge3a PARTITION(ds=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='1') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge3a -POSTHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='1') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge3a -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string - -# Detailed Partition Information -Partition Value: [1] -Database: default -Table: orcfile_merge3a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 500 - rawDataSize 47000 - totalSize 2496 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='2') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge3a -POSTHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='2') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge3a -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string - -# Detailed Partition Information -Partition Value: [2] -Database: default -Table: orcfile_merge3a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 500 - rawDataSize 47000 - totalSize 2496 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: EXPLAIN INSERT OVERWRITE TABLE orcfile_merge3b SELECT key, value FROM orcfile_merge3a PREHOOK: type: QUERY diff --git a/ql/src/test/results/clientpositive/orc_merge5.q.out b/ql/src/test/results/clientpositive/orc_merge5.q.out index 840dbf23d46f..77c01c731449 100644 --- a/ql/src/test/results/clientpositive/orc_merge5.q.out +++ b/ql/src/test/results/clientpositive/orc_merge5.q.out @@ -97,45 +97,8 @@ analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b @@ -252,45 +215,8 @@ analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b @@ -323,45 +249,8 @@ POSTHOOK: query: analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b @@ -416,45 +305,8 @@ analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b diff --git a/ql/src/test/results/clientpositive/orc_merge6.q.out b/ql/src/test/results/clientpositive/orc_merge6.q.out index 5f5132072871..05f548c22574 100644 --- a/ql/src/test/results/clientpositive/orc_merge6.q.out +++ b/ql/src/test/results/clientpositive/orc_merge6.q.out @@ -127,96 +127,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 -PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2000, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2001, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 3 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -376,96 +290,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 -PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2000, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2001, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -538,96 +366,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 -PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2000, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2001, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 3 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -720,96 +462,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 -PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2000, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2001, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a diff --git a/ql/src/test/results/clientpositive/orc_merge7.q.out b/ql/src/test/results/clientpositive/orc_merge7.q.out index 2f506cb95211..beff0ed96ca3 100644 --- a/ql/src/test/results/clientpositive/orc_merge7.q.out +++ b/ql/src/test/results/clientpositive/orc_merge7.q.out @@ -160,94 +160,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 1 - rawDataSize 255 - totalSize 513 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 2 - numRows 2 - rawDataSize 510 - totalSize 1044 +Found 2 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -441,94 +357,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 1 - rawDataSize 255 - totalSize 513 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 2 - rawDataSize 510 - totalSize 838 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -640,94 +472,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 1 - rawDataSize 255 - totalSize 513 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 2 - numRows 2 - rawDataSize 510 - totalSize 1044 +Found 2 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -822,94 +570,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 1 - rawDataSize 255 - totalSize 513 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 2 - rawDataSize 510 - totalSize 838 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a diff --git a/ql/src/test/results/clientpositive/orc_merge_incompat1.q.out b/ql/src/test/results/clientpositive/orc_merge_incompat1.q.out index cc81ead978f5..fcd84d1e86a9 100644 --- a/ql/src/test/results/clientpositive/orc_merge_incompat1.q.out +++ b/ql/src/test/results/clientpositive/orc_merge_incompat1.q.out @@ -148,45 +148,8 @@ analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 5 - numRows 15 - rawDataSize 3825 - totalSize 2877 +Found 5 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b @@ -228,45 +191,8 @@ analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 15 - rawDataSize 3825 - totalSize 2340 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b diff --git a/ql/src/test/results/clientpositive/orc_merge_incompat2.q.out b/ql/src/test/results/clientpositive/orc_merge_incompat2.q.out index c944eb6e3d7d..b437e164f2e8 100644 --- a/ql/src/test/results/clientpositive/orc_merge_incompat2.q.out +++ b/ql/src/test/results/clientpositive/orc_merge_incompat2.q.out @@ -218,94 +218,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 4 - numRows 4 - rawDataSize 1020 - totalSize 2060 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 4 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 4 - numRows 8 - rawDataSize 2040 - totalSize 2188 +Found 4 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -407,94 +323,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 4 - rawDataSize 1020 - totalSize 1819 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 3 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 8 - rawDataSize 2040 - totalSize 1928 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a diff --git a/ql/src/test/results/clientpositive/tez/orc_merge1.q.out b/ql/src/test/results/clientpositive/tez/orc_merge1.q.out index c87b1877e91c..461db6007123 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge1.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge1.q.out @@ -117,48 +117,8 @@ POSTHOOK: Lineage: orcfile_merge1 PARTITION(ds=1,part=0).key EXPRESSION [(src)sr POSTHOOK: Lineage: orcfile_merge1 PARTITION(ds=1,part=0).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1 PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1 PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge1 partition (ds='1', part='0') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge1 -POSTHOOK: query: DESC FORMATTED orcfile_merge1 partition (ds='1', part='0') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge1 -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string -part string - -# Detailed Partition Information -Partition Value: [1, 0] -Database: default -Table: orcfile_merge1 -#### A masked pattern was here #### -Protect Mode: None +Found 6 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 6 - numRows 242 - rawDataSize 22748 - totalSize 3037 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: -- auto-merge slow way EXPLAIN INSERT OVERWRITE TABLE orcfile_merge1b PARTITION (ds='1', part) @@ -286,48 +246,8 @@ POSTHOOK: Lineage: orcfile_merge1b PARTITION(ds=1,part=0).key EXPRESSION [(src)s POSTHOOK: Lineage: orcfile_merge1b PARTITION(ds=1,part=0).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1b PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1b PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge1b partition (ds='1', part='0') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge1b -POSTHOOK: query: DESC FORMATTED orcfile_merge1b partition (ds='1', part='0') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge1b -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string -part string - -# Detailed Partition Information -Partition Value: [1, 0] -Database: default -Table: orcfile_merge1b +Found 1 items #### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 242 - rawDataSize 22748 - totalSize 1325 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: -- auto-merge fast way EXPLAIN INSERT OVERWRITE TABLE orcfile_merge1c PARTITION (ds='1', part) @@ -447,48 +367,8 @@ POSTHOOK: Lineage: orcfile_merge1c PARTITION(ds=1,part=0).key EXPRESSION [(src)s POSTHOOK: Lineage: orcfile_merge1c PARTITION(ds=1,part=0).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1c PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge1c PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge1c partition (ds='1', part='0') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge1c -POSTHOOK: query: DESC FORMATTED orcfile_merge1c partition (ds='1', part='0') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge1c -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string -part string - -# Detailed Partition Information -Partition Value: [1, 0] -Database: default -Table: orcfile_merge1c -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 242 - rawDataSize 22748 - totalSize 2392 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: -- Verify SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) diff --git a/ql/src/test/results/clientpositive/tez/orc_merge2.q.out b/ql/src/test/results/clientpositive/tez/orc_merge2.q.out index 0f1917f73323..4eb1a0ff7fea 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge2.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge2.q.out @@ -146,49 +146,8 @@ POSTHOOK: Lineage: orcfile_merge2a PARTITION(one=1,two=9,three=1).key EXPRESSION POSTHOOK: Lineage: orcfile_merge2a PARTITION(one=1,two=9,three=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge2a PARTITION(one=1,two=9,three=7).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge2a PARTITION(one=1,two=9,three=7).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge2a partition (one='1', two='0', three='2') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge2a -POSTHOOK: query: DESC FORMATTED orcfile_merge2a partition (one='1', two='0', three='2') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge2a -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -one string -two string -three string - -# Detailed Partition Information -Partition Value: [1, 0, 2] -Database: default -Table: orcfile_merge2a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 4 - rawDataSize 376 - totalSize 320 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM orcfile_merge2a diff --git a/ql/src/test/results/clientpositive/tez/orc_merge3.q.out b/ql/src/test/results/clientpositive/tez/orc_merge3.q.out index 2f64d302a29c..195e176175f0 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge3.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge3.q.out @@ -115,42 +115,8 @@ POSTHOOK: Input: default@orcfile_merge3a@ds=2 POSTHOOK: Output: default@orcfile_merge3b POSTHOOK: Lineage: orcfile_merge3b.key SIMPLE [(orcfile_merge3a)orcfile_merge3a.FieldSchema(name:key, type:int, comment:null), ] POSTHOOK: Lineage: orcfile_merge3b.value SIMPLE [(orcfile_merge3a)orcfile_merge3a.FieldSchema(name:value, type:string, comment:null), ] -PREHOOK: query: DESC FORMATTED orcfile_merge3b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge3b -POSTHOOK: query: DESC FORMATTED orcfile_merge3b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge3b -# col_name data_type comment - -key int -value string - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 1000 - rawDataSize 94000 - totalSize 2538 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) FROM orcfile_merge3a diff --git a/ql/src/test/results/clientpositive/tez/orc_merge4.q.out b/ql/src/test/results/clientpositive/tez/orc_merge4.q.out index 70015a9757eb..a902fc61bdc6 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge4.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge4.q.out @@ -36,47 +36,8 @@ POSTHOOK: Input: default@src POSTHOOK: Output: default@orcfile_merge3a@ds=1 POSTHOOK: Lineage: orcfile_merge3a PARTITION(ds=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge3a PARTITION(ds=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='1') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge3a -POSTHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='1') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge3a -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string - -# Detailed Partition Information -Partition Value: [1] -Database: default -Table: orcfile_merge3a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 500 - rawDataSize 47000 - totalSize 2496 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: INSERT OVERWRITE TABLE orcfile_merge3a PARTITION (ds='1') SELECT * FROM src PREHOOK: type: QUERY @@ -101,88 +62,10 @@ POSTHOOK: Input: default@src POSTHOOK: Output: default@orcfile_merge3a@ds=2 POSTHOOK: Lineage: orcfile_merge3a PARTITION(ds=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: orcfile_merge3a PARTITION(ds=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -PREHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='1') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge3a -POSTHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='1') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge3a -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string - -# Detailed Partition Information -Partition Value: [1] -Database: default -Table: orcfile_merge3a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 500 - rawDataSize 47000 - totalSize 2496 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='2') -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orcfile_merge3a -POSTHOOK: query: DESC FORMATTED orcfile_merge3a PARTITION (ds='2') -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orcfile_merge3a -# col_name data_type comment - -key int -value string - -# Partition Information -# col_name data_type comment - -ds string - -# Detailed Partition Information -Partition Value: [2] -Database: default -Table: orcfile_merge3a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 500 - rawDataSize 47000 - totalSize 2496 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: EXPLAIN INSERT OVERWRITE TABLE orcfile_merge3b SELECT key, value FROM orcfile_merge3a PREHOOK: type: QUERY diff --git a/ql/src/test/results/clientpositive/tez/orc_merge5.q.out b/ql/src/test/results/clientpositive/tez/orc_merge5.q.out index fdd4c771dab4..e3e56f8996b6 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge5.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge5.q.out @@ -104,45 +104,8 @@ analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b @@ -274,45 +237,8 @@ analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b @@ -345,45 +271,8 @@ POSTHOOK: query: analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b @@ -438,45 +327,8 @@ analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b diff --git a/ql/src/test/results/clientpositive/tez/orc_merge6.q.out b/ql/src/test/results/clientpositive/tez/orc_merge6.q.out index b9057f51f5e6..0552076c9366 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge6.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge6.q.out @@ -134,96 +134,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 -PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2000, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2001, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 3 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -398,96 +312,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 -PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2000, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2001, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -560,96 +388,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 -PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2000, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2001, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 3 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 3 - rawDataSize 765 - totalSize 1133 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -742,96 +484,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@year=2001/hour=24 -PREHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2000",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2000, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(year="2001",hour=24) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -year string -hour int - -# Detailed Partition Information -Partition Value: [2001, 24] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 3 - rawDataSize 765 - totalSize 899 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a diff --git a/ql/src/test/results/clientpositive/tez/orc_merge7.q.out b/ql/src/test/results/clientpositive/tez/orc_merge7.q.out index 454b120b0eaf..4f0678b2466f 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge7.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge7.q.out @@ -167,94 +167,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 1 - rawDataSize 255 - totalSize 513 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 2 - numRows 2 - rawDataSize 510 - totalSize 1044 +Found 2 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -463,94 +379,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 1 - rawDataSize 255 - totalSize 513 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 2 - rawDataSize 510 - totalSize 838 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -662,94 +494,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 1 - rawDataSize 255 - totalSize 513 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 2 - numRows 2 - rawDataSize 510 - totalSize 1044 +Found 2 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -844,94 +592,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 1 - rawDataSize 255 - totalSize 513 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 1 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 1 - numRows 2 - rawDataSize 510 - totalSize 838 +Found 1 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a diff --git a/ql/src/test/results/clientpositive/tez/orc_merge_incompat1.q.out b/ql/src/test/results/clientpositive/tez/orc_merge_incompat1.q.out index 33b5fcdf36b1..83f8b330ab98 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge_incompat1.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge_incompat1.q.out @@ -155,45 +155,8 @@ analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 5 - numRows 15 - rawDataSize 3825 - totalSize 2877 +Found 5 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b @@ -235,45 +198,8 @@ analyze table orc_merge5b compute statistics noscan POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5b POSTHOOK: Output: default@orc_merge5b -PREHOOK: query: desc formatted orc_merge5b -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5b -POSTHOOK: query: desc formatted orc_merge5b -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5b -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Detailed Table Information -Database: default -#### A masked pattern was here #### -Protect Mode: None -Retention: 0 -#### A masked pattern was here #### -Table Type: MANAGED_TABLE -Table Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 15 - rawDataSize 3825 - totalSize 2340 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: select * from orc_merge5b PREHOOK: type: QUERY PREHOOK: Input: default@orc_merge5b diff --git a/ql/src/test/results/clientpositive/tez/orc_merge_incompat2.q.out b/ql/src/test/results/clientpositive/tez/orc_merge_incompat2.q.out index 963ac36646d6..52997c013822 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge_incompat2.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge_incompat2.q.out @@ -225,94 +225,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 4 - numRows 4 - rawDataSize 1020 - totalSize 2060 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 4 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 4 - numRows 8 - rawDataSize 2040 - totalSize 2188 +Found 4 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a @@ -414,94 +330,10 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a POSTHOOK: Output: default@orc_merge5a@st=0.8 -PREHOOK: query: desc formatted orc_merge5a partition(st=80.0) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=80.0) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [80.0] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None -#### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 4 - rawDataSize 1020 - totalSize 1819 -#### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 -PREHOOK: query: desc formatted orc_merge5a partition(st=0.8) -PREHOOK: type: DESCTABLE -PREHOOK: Input: default@orc_merge5a -POSTHOOK: query: desc formatted orc_merge5a partition(st=0.8) -POSTHOOK: type: DESCTABLE -POSTHOOK: Input: default@orc_merge5a -# col_name data_type comment - -userid bigint -string1 string -subtype double -decimal1 decimal(10,0) -ts timestamp - -# Partition Information -# col_name data_type comment - -st double - -# Detailed Partition Information -Partition Value: [0.8] -Database: default -Table: orc_merge5a -#### A masked pattern was here #### -Protect Mode: None +Found 3 items #### A masked pattern was here #### -Partition Parameters: - COLUMN_STATS_ACCURATE true - numFiles 3 - numRows 8 - rawDataSize 2040 - totalSize 1928 +Found 3 items #### A masked pattern was here #### - -# Storage Information -SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde -InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat -OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat -Compressed: No -Num Buckets: -1 -Bucket Columns: [] -Sort Columns: [] -Storage Desc Params: - serialization.format 1 PREHOOK: query: show partitions orc_merge5a PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@orc_merge5a From fea08e8db191e492df13229ae0ffb8f5fd6fad7c Mon Sep 17 00:00:00 2001 From: Sushanth Sowmyan Date: Wed, 5 Nov 2014 07:43:40 +0000 Subject: [PATCH 249/339] HIVE-8719 : LoadSemanticAnalyzer ignores previous partition location if inserting into partition that already exists (Sushanth Sowmyan, reviewed by Alan Gates) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636814 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/parse/LoadSemanticAnalyzer.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java index 8bd24d31f1ae..1ae5b71a4afa 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java @@ -238,6 +238,8 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { // create final load/move work + boolean preservePartitionSpecs = false; + Map partSpec = ts.getPartSpec(); if (partSpec == null) { partSpec = new LinkedHashMap(); @@ -252,9 +254,14 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { throw new SemanticException(ErrorMsg.OFFLINE_TABLE_OR_PARTITION. getMsg(ts.tableName + ":" + part.getName())); } - outputs.add(new WriteEntity(part, - (isOverWrite ? WriteEntity.WriteType.INSERT_OVERWRITE : - WriteEntity.WriteType.INSERT))); + if (isOverWrite){ + outputs.add(new WriteEntity(part, WriteEntity.WriteType.INSERT_OVERWRITE)); + } else { + outputs.add(new WriteEntity(part, WriteEntity.WriteType.INSERT)); + // If partition already exists and we aren't overwriting it, then respect + // its current location info rather than picking it from the parent TableDesc + preservePartitionSpecs = true; + } } else { outputs.add(new WriteEntity(ts.tableHandle, (isOverWrite ? WriteEntity.WriteType.INSERT_OVERWRITE : @@ -269,6 +276,12 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { LoadTableDesc loadTableWork; loadTableWork = new LoadTableDesc(new Path(fromURI), Utilities.getTableDesc(ts.tableHandle), partSpec, isOverWrite); + if (preservePartitionSpecs){ + // Note : preservePartitionSpecs=true implies inheritTableSpecs=false but + // but preservePartitionSpecs=false(default) here is not sufficient enough + // info to set inheritTableSpecs=true + loadTableWork.setInheritTableSpecs(false); + } Task childTask = TaskFactory.get(new MoveWork(getInputs(), getOutputs(), loadTableWork, null, true, isLocal), conf); From dc4b000ddc7a9bdfe2efea7e4e97a89477415046 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Wed, 5 Nov 2014 17:29:02 +0000 Subject: [PATCH 250/339] HIVE-8733: HiveServer2 dynamic service discovery not picking correct IP address when hive.server2.thrift.bind.host is not set (Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636920 13f79535-47bb-0310-9956-ffa450edef68 --- .../service/cli/thrift/ThriftCLIService.java | 23 +++++++++++-------- .../hive/service/server/HiveServer2.java | 2 +- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java index a0a6e183bbd0..cc974db02a5b 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java @@ -19,7 +19,8 @@ package org.apache.hive.service.cli.thrift; import java.io.IOException; -import java.net.InetSocketAddress; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -31,6 +32,7 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hive.service.AbstractService; +import org.apache.hive.service.ServiceException; import org.apache.hive.service.auth.HiveAuthFactory; import org.apache.hive.service.auth.TSetIpAddressProcessor; import org.apache.hive.service.cli.*; @@ -53,7 +55,7 @@ public abstract class ThriftCLIService extends AbstractService implements TCLISe protected static HiveAuthFactory hiveAuthFactory; protected int portNum; - protected InetSocketAddress serverAddress; + protected InetAddress serverAddress; protected String hiveHost; protected TServer server; protected org.eclipse.jetty.server.Server httpServer; @@ -75,13 +77,21 @@ public ThriftCLIService(CLIService cliService, String serviceName) { @Override public synchronized void init(HiveConf hiveConf) { this.hiveConf = hiveConf; - // Initialize common server configs needed in both binary & http modes String portString; hiveHost = System.getenv("HIVE_SERVER2_THRIFT_BIND_HOST"); if (hiveHost == null) { hiveHost = hiveConf.getVar(ConfVars.HIVE_SERVER2_THRIFT_BIND_HOST); } + try { + if (hiveHost != null && !hiveHost.isEmpty()) { + serverAddress = InetAddress.getByName(hiveHost); + } else { + serverAddress = InetAddress.getLocalHost(); + } + } catch (UnknownHostException e) { + throw new ServiceException(e); + } // HTTP mode if (HiveServer2.isHTTPTransportMode(hiveConf)) { workerKeepAliveTime = @@ -105,11 +115,6 @@ public synchronized void init(HiveConf hiveConf) { portNum = hiveConf.getIntVar(ConfVars.HIVE_SERVER2_THRIFT_PORT); } } - if (hiveHost != null && !hiveHost.isEmpty()) { - serverAddress = new InetSocketAddress(hiveHost, portNum); - } else { - serverAddress = new InetSocketAddress(portNum); - } minWorkerThreads = hiveConf.getIntVar(ConfVars.HIVE_SERVER2_THRIFT_MIN_WORKER_THREADS); maxWorkerThreads = hiveConf.getIntVar(ConfVars.HIVE_SERVER2_THRIFT_MAX_WORKER_THREADS); super.init(hiveConf); @@ -148,7 +153,7 @@ public int getPortNumber() { return portNum; } - public InetSocketAddress getServerAddress() { + public InetAddress getServerAddress() { return serverAddress; } diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java b/service/src/java/org/apache/hive/service/server/HiveServer2.java index 4199f0fafc0c..1b0f4028193b 100644 --- a/service/src/java/org/apache/hive/service/server/HiveServer2.java +++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java @@ -252,7 +252,7 @@ private String getServerInstanceURI(HiveConf hiveConf) throws Exception { if ((thriftCLIService == null) || (thriftCLIService.getServerAddress() == null)) { throw new Exception("Unable to get the server address; it hasn't been initialized yet."); } - return thriftCLIService.getServerAddress().getHostName() + ":" + return thriftCLIService.getServerAddress().getHostAddress() + ":" + thriftCLIService.getPortNumber(); } From ea524cadbad05ed65911ca82984f24044a77acc1 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Wed, 5 Nov 2014 18:13:01 +0000 Subject: [PATCH 251/339] HIVE-8727: Dag summary has incorrect row counts and duration per vertex (Mostafa Mokhtar reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636932 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/exec/tez/TezJobMonitor.java | 44 +++++++++++++++---- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java index 284acbc8ae70..7cec6505cc92 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java @@ -83,8 +83,8 @@ public class TezJobMonitor { "VERTICES", "STATUS", "TOTAL", "COMPLETED", "RUNNING", "PENDING", "FAILED", "KILLED"); // method and dag summary format - private static final String SUMMARY_HEADER_FORMAT = "%-16s %-12s %-12s %-15s %-20s %-15s %-15s %-15s %-15s"; - private static final String SUMMARY_VERTEX_FORMAT = "%-12s %11s %13s %12s %19s %19s %13s %15s %16s"; + private static final String SUMMARY_HEADER_FORMAT = "%-16s %-12s %-12s %-12s %-19s %-19s %-15s %-15s %-15s"; + private static final String SUMMARY_VERTEX_FORMAT = "%-16s %11s %16s %12s %16s %18s %18s %14s %16s"; private static final String SUMMARY_HEADER = String.format(SUMMARY_HEADER_FORMAT, "VERTICES", "TOTAL_TASKS", "FAILED_ATTEMPTS", "KILLED_TASKS", "DURATION_SECONDS", "CPU_TIME_MILLIS", "GC_TIME_MILLIS", "INPUT_RECORDS", "OUTPUT_RECORDS"); @@ -539,12 +539,27 @@ private void printDagSummary(Map progressMap, LogHelper consol * RECORDS_OUT_INTERMEDIATE_Map_1=854987 * RECORDS_OUT_Reducer_2=1 */ - final long hiveInputRecords = getCounterValueByGroupName(hiveCounters, hiveCountersGroup, - MapOperator.Counter.RECORDS_IN.toString()) + hiveInputRecordsFromOtherVertices; - final long hiveOutputIntermediateRecords = getCounterValueByGroupName(hiveCounters, - hiveCountersGroup, ReduceSinkOperator.Counter.RECORDS_OUT_INTERMEDIATE.toString()); - final long hiveOutputRecords = getCounterValueByGroupName(hiveCounters, hiveCountersGroup, - FileSinkOperator.Counter.RECORDS_OUT.toString()) + hiveOutputIntermediateRecords; + + final long hiveInputRecords = + getCounterValueByGroupName( + hiveCounters, + hiveCountersGroup, + String.format("%s_", MapOperator.Counter.RECORDS_IN.toString()) + + vertexName.replace(" ", "_")) + + hiveInputRecordsFromOtherVertices; + final long hiveOutputIntermediateRecords = + getCounterValueByGroupName( + hiveCounters, + hiveCountersGroup, + String.format("%s_", ReduceSinkOperator.Counter.RECORDS_OUT_INTERMEDIATE.toString()) + + vertexName.replace(" ", "_")); + final long hiveOutputRecords = + getCounterValueByGroupName( + hiveCounters, + hiveCountersGroup, + String.format("%s_", FileSinkOperator.Counter.RECORDS_OUT.toString()) + + vertexName.replace(" ", "_")) + + hiveOutputIntermediateRecords; String vertexExecutionStats = String.format(SUMMARY_VERTEX_FORMAT, vertexName, @@ -741,9 +756,22 @@ private String getReport(Map progressMap) { } else { if (complete == total && !completed.contains(s)) { completed.add(s); + + /* + * We may have missed the start of the vertex due to the 3 seconds interval + */ + if (!perfLogger.startTimeHasMethod(PerfLogger.TEZ_RUN_VERTEX + s)) { + perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.TEZ_RUN_VERTEX + s); + } + perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.TEZ_RUN_VERTEX + s); } if(complete < total && (complete > 0 || running > 0 || failed > 0)) { + + if (!perfLogger.startTimeHasMethod(PerfLogger.TEZ_RUN_VERTEX + s)) { + perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.TEZ_RUN_VERTEX + s); + } + /* vertex is started, but not complete */ if (failed > 0) { reportBuffer.append(String.format("%s: %d(+%d,-%d)/%d\t", s, complete, running, failed, total)); From 832769b1dd493a73a99f1b02107888ea9ffd9c32 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Wed, 5 Nov 2014 22:16:48 +0000 Subject: [PATCH 252/339] HIVE-8736 : add ordering to cbo_correctness to make result consistent (Sergey Shelukhin, reviewed by Laljo John Pullokkaran) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1636984 13f79535-47bb-0310-9956-ffa450edef68 --- .../queries/clientpositive/cbo_correctness.q | 2 +- .../clientpositive/cbo_correctness.q.out | 34 +++++++++---------- .../clientpositive/tez/cbo_correctness.q.out | 16 ++++----- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/ql/src/test/queries/clientpositive/cbo_correctness.q b/ql/src/test/queries/clientpositive/cbo_correctness.q index bb328f658e0e..f325a3dba941 100644 --- a/ql/src/test/queries/clientpositive/cbo_correctness.q +++ b/ql/src/test/queries/clientpositive/cbo_correctness.q @@ -251,7 +251,7 @@ drop view v3; drop view v4; -- 11. Union All -select * from t1 union all select * from t2 order by key, c_boolean, value, dt; +select * from t1 order by key, c_boolean, value, dt union all select * from t2 order by key, c_boolean, value, dt; select key from (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r2 where key >=0 order by key; select r2.key from (select key, c_int from (select key, c_int from t1 union all select key, c_int from t3 )r1 union all select key, c_int from t3)r2 join (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r3 on r2.key=r3.key where r3.key >=0 order by r2.key; diff --git a/ql/src/test/results/clientpositive/cbo_correctness.q.out b/ql/src/test/results/clientpositive/cbo_correctness.q.out index d98cb5b95e1f..c2afc15f5383 100644 --- a/ql/src/test/results/clientpositive/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/cbo_correctness.q.out @@ -16719,7 +16719,7 @@ POSTHOOK: type: DROPVIEW POSTHOOK: Input: default@v4 POSTHOOK: Output: default@v4 PREHOOK: query: -- 11. Union All -select * from t1 union all select * from t2 order by key, c_boolean, value, dt +select * from t1 order by key, c_boolean, value, dt union all select * from t2 order by key, c_boolean, value, dt PREHOOK: type: QUERY PREHOOK: Input: default@t1 PREHOOK: Input: default@t1@dt=2014 @@ -16727,7 +16727,7 @@ PREHOOK: Input: default@t2 PREHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### POSTHOOK: query: -- 11. Union All -select * from t1 union all select * from t2 order by key, c_boolean, value, dt +select * from t1 order by key, c_boolean, value, dt union all select * from t2 order by key, c_boolean, value, dt POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t1@dt=2014 @@ -16745,33 +16745,33 @@ POSTHOOK: Input: default@t2@dt=2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -2 2 2 2.0 true 2014 -null null NULL NULL NULL 2014 -null null NULL NULL NULL 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +null null NULL NULL NULL 2014 +null null NULL NULL NULL 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 +1 1 1 1.0 false 2014 +1 1 1 1.0 false 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 -1 1 1 1.0 false 2014 -1 1 1 1.0 false 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 +2 2 2 2.0 true 2014 null null NULL NULL NULL 2014 null null NULL NULL NULL 2014 PREHOOK: query: select key from (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r2 where key >=0 order by key diff --git a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out index 2103d08da856..c2afc15f5383 100644 --- a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out @@ -16719,7 +16719,7 @@ POSTHOOK: type: DROPVIEW POSTHOOK: Input: default@v4 POSTHOOK: Output: default@v4 PREHOOK: query: -- 11. Union All -select * from t1 union all select * from t2 order by key, c_boolean, value, dt +select * from t1 order by key, c_boolean, value, dt union all select * from t2 order by key, c_boolean, value, dt PREHOOK: type: QUERY PREHOOK: Input: default@t1 PREHOOK: Input: default@t1@dt=2014 @@ -16727,13 +16727,19 @@ PREHOOK: Input: default@t2 PREHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### POSTHOOK: query: -- 11. Union All -select * from t1 union all select * from t2 order by key, c_boolean, value, dt +select * from t1 order by key, c_boolean, value, dt union all select * from t2 order by key, c_boolean, value, dt POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t1@dt=2014 POSTHOOK: Input: default@t2 POSTHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 +1 1 1 1.0 false 2014 +1 1 1 1.0 false 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 @@ -16744,14 +16750,8 @@ POSTHOOK: Input: default@t2@dt=2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 -1 1 1 1.0 false 2014 -1 1 1 1.0 false 2014 null null NULL NULL NULL 2014 null null NULL NULL NULL 2014 1 1 1 1.0 true 2014 From b38953502c7db4e08bbd17b125298d4b12e54871 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 5 Nov 2014 22:54:12 +0000 Subject: [PATCH 253/339] HIVE-8724: Right outer join produces incorrect result on Tez (Gunther Hagleitner, reviewed by Harish Butani and Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637000 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/exec/CommonMergeJoinOperator.java | 15 ++++- .../hive/ql/exec/tez/ReduceRecordSource.java | 55 +++++++++++++------ .../clientpositive/tez/vector_decimal_3.q.out | 16 ++++++ 3 files changed, 67 insertions(+), 19 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java index 7a4e7cafd4c1..6a066688bd30 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java @@ -134,6 +134,19 @@ public void initializeOp(Configuration hconf) throws HiveException { sources = ((TezContext) MapredContext.get()).getRecordSources(); } + @Override + public void endGroup() throws HiveException { + // we do not want the end group to cause a checkAndGenObject + defaultEndGroup(); + } + + @Override + public void startGroup() throws HiveException { + // we do not want the start group to clear the storage + defaultStartGroup(); + } + + /* * (non-Javadoc) * @@ -275,7 +288,7 @@ private void fetchNextGroup(Byte t) throws HiveException { if (foundNextKeyGroup[t]) { // first promote the next group to be the current group if we reached a // new group in the previous fetch - if ((this.nextKeyWritables[t] != null) || (this.fetchDone[t] == false)) { + if (this.nextKeyWritables[t] != null) { promoteNextGroupToCandidate(t); } else { this.keyWritables[t] = null; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java index 017a72afa137..aa80510168f9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -73,10 +74,10 @@ public class ReduceRecordSource implements RecordSource { // for different tags private SerDe inputValueDeserializer; - TableDesc keyTableDesc; - TableDesc valueTableDesc; + private TableDesc keyTableDesc; + private TableDesc valueTableDesc; - ObjectInspector rowObjectInspector; + private ObjectInspector rowObjectInspector; private Operator reducer; private Object keyObject = null; @@ -84,8 +85,6 @@ public class ReduceRecordSource implements RecordSource { private boolean vectorized = false; - List row = new ArrayList(Utilities.reduceFieldNameList.size()); - private DataOutputBuffer keyBuffer; private DataOutputBuffer valueBuffer; private VectorizedRowBatchCtx batchContext; @@ -111,7 +110,7 @@ public class ReduceRecordSource implements RecordSource { private Iterable valueWritables; - private final boolean grouped = true; + private final GroupIterator groupIterator = new GroupIterator(); void init(JobConf jconf, Operator reducer, boolean vectorized, TableDesc keyTableDesc, TableDesc valueTableDesc, KeyValuesReader reader, boolean handleGroupKey, byte tag, @@ -207,13 +206,19 @@ void init(JobConf jconf, Operator reducer, boolean vectorized, TableDesc keyT @Override public final boolean isGrouped() { - return grouped; + return vectorized; } @Override public boolean pushRecord() throws HiveException { BytesWritable keyWritable; + if (!vectorized && groupIterator.hasNext()) { + // if we have records left in the group we push one of those + groupIterator.next(); + return true; + } + try { if (!reader.next()) { return false; @@ -245,11 +250,13 @@ public boolean pushRecord() throws HiveException { reducer.setGroupKeyObject(keyObject); } - /* this.keyObject passed via reference */ if(vectorized) { processVectors(valueWritables, tag); } else { - processKeyValues(valueWritables, tag); + groupIterator.initialize(valueWritables, keyObject, tag); + if (groupIterator.hasNext()) { + groupIterator.next(); // push first record of group + } } return true; } catch (Throwable e) { @@ -279,16 +286,29 @@ private Object deserializeValue(BytesWritable valueWritable, byte tag) } } - /** - * @param values - * @return true if it is not done and can take more inputs - */ - private void processKeyValues(Iterable values, byte tag) throws HiveException { - List passDownKey = null; - for (Object value : values) { - BytesWritable valueWritable = (BytesWritable) value; + private class GroupIterator { + private final List row = new ArrayList(Utilities.reduceFieldNameList.size()); + private List passDownKey = null; + private Iterator values; + private byte tag; + private Object keyObject; + + public void initialize(Iterable values, Object keyObject, byte tag) { + this.passDownKey = null; + this.values = values.iterator(); + this.tag = tag; + this.keyObject = keyObject; + } + public boolean hasNext() { + return values != null && values.hasNext(); + } + + public void next() throws HiveException { row.clear(); + Object value = values.next(); + BytesWritable valueWritable = (BytesWritable) value; + if (passDownKey == null) { row.add(this.keyObject); } else { @@ -387,7 +407,6 @@ boolean close() throws Exception { } catch (Exception e) { if (!abort) { // signal new failure to map-reduce - l4j.error("Hit error while closing operators - failing tree"); throw new RuntimeException("Hive Runtime Error while closing operators: " + e.getMessage(), e); } diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out index 9c8b02bb7afc..7987d080b373 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out @@ -295,8 +295,14 @@ POSTHOOK: Input: default@decimal_3 -0.33 0 -0.33 0 -0.3 0 -0.3 0 0.000000000000000000 0 0.000000000000000000 0 +0.000000000000000000 0 0 0 +0.000000000000000000 0 0 0 +0 0 0 0 0 0 0.000000000000000000 0 +0 0 0 0 0 0 0.000000000000000000 0 +0 0 0 0 +0 0 0 0 0.01 0 0.01 0 0.02 0 0.02 0 0.1 0 0.1 0 @@ -305,8 +311,14 @@ POSTHOOK: Input: default@decimal_3 0.33 0 0.33 0 0.333 0 0.333 0 1 1 1 1 +1 1 1.0 1 +1 1 1.000000000000000000 1 +1.0 1 1.000000000000000000 1 +1.0 1 1.0 1 1.0 1 1 1 +1.000000000000000000 1 1.000000000000000000 1 1.000000000000000000 1 1 1 +1.000000000000000000 1 1.0 1 1.12 1 1.12 1 1.122 1 1.122 1 2 2 2 2 @@ -322,9 +334,13 @@ POSTHOOK: Input: default@decimal_3 3.14 3 3.14 3 3.14 3 3.14 3 3.14 3 3.14 3 +3.14 3 3.140 4 +3.14 3 3.140 4 +3.14 3 3.140 4 3.140 4 3.14 3 3.140 4 3.14 3 3.140 4 3.14 3 +3.140 4 3.140 4 10 10 10 10 20 20 20 20 100 100 100 100 From b32fa0c21f07d4179408c1c35b376efbd2ea0f2d Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 5 Nov 2014 23:52:46 +0000 Subject: [PATCH 254/339] HIVE-8716: Partition filters are not pushed down with lateral view (Prasanth J via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637010 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/optimizer/ColumnPrunerProcFactory.java | 24 ++-- .../SortedDynPartitionOptimizer.java | 26 ++-- .../JoinCondTypeCheckProcFactory.java | 21 ++-- .../physical/GenMRSkewJoinProcessor.java | 22 ++-- .../hive/ql/parse/SemanticAnalyzer.java | 115 ++++++++--------- .../hive/ql/plan/ExprNodeColumnDesc.java | 13 +- .../clientnegative/udf_assert_true.q.out | 12 +- .../clientnegative/udf_assert_true2.q.out | 6 +- .../results/clientpositive/lateral_view.q.out | 36 +++--- .../clientpositive/lateral_view_noalias.q.out | 22 ++-- .../clientpositive/lateral_view_ppd.q.out | 75 +++++------ .../results/clientpositive/udtf_stack.q.out | 12 +- .../test/results/clientpositive/union26.q.out | 119 ++++++++---------- 13 files changed, 229 insertions(+), 274 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java index ba28bc71ffe2..2dc66f7efc99 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java @@ -18,16 +18,6 @@ package org.apache.hadoop.hive.ql.optimizer; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Stack; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.AbstractMapJoinOperator; @@ -39,7 +29,6 @@ import org.apache.hadoop.hive.ql.exec.LateralViewForwardOperator; import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator; import org.apache.hadoop.hive.ql.exec.LimitOperator; -import org.apache.hadoop.hive.ql.exec.MapJoinOperator; import org.apache.hadoop.hive.ql.exec.Operator; import org.apache.hadoop.hive.ql.exec.OperatorFactory; import org.apache.hadoop.hive.ql.exec.PTFOperator; @@ -76,6 +65,16 @@ import org.apache.hadoop.hive.serde2.objectinspector.StructField; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Stack; + /** * Factory for generating the different node processors used by ColumnPruner. */ @@ -600,8 +599,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, // revert output cols of SEL(*) to ExprNodeColumnDesc String[] tabcol = rr.reverseLookup(col); ColumnInfo colInfo = rr.get(tabcol[0], tabcol[1]); - ExprNodeColumnDesc colExpr = new ExprNodeColumnDesc(colInfo.getType(), - colInfo.getInternalName(), colInfo.getTabAlias(), colInfo.getIsVirtualCol()); + ExprNodeColumnDesc colExpr = new ExprNodeColumnDesc(colInfo); colList.add(colExpr); outputColNames.add(col); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java index d79879cfcb89..477be1daaaf2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java @@ -18,14 +18,8 @@ package org.apache.hadoop.hive.ql.optimizer; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Stack; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -72,8 +66,14 @@ import org.apache.hadoop.hive.ql.plan.TableDesc; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Stack; /** * When dynamic partitioning (with or without bucketing and sorting) is enabled, this optimization @@ -209,8 +209,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, ArrayList newValueCols = Lists.newArrayList(); Map colExprMap = Maps.newHashMap(); for (ColumnInfo ci : valColInfo) { - newValueCols.add(new ExprNodeColumnDesc(ci.getType(), ci.getInternalName(), ci - .getTabAlias(), ci.isHiddenVirtualCol())); + newValueCols.add(new ExprNodeColumnDesc(ci)); colExprMap.put(ci.getInternalName(), newValueCols.get(newValueCols.size() - 1)); } ReduceSinkDesc rsConf = getReduceSinkDesc(partitionPositions, sortPositions, sortOrder, @@ -476,8 +475,7 @@ private ArrayList getPositionsToExprNodes(List pos, for (Integer idx : pos) { ColumnInfo ci = colInfos.get(idx); - ExprNodeColumnDesc encd = new ExprNodeColumnDesc(ci.getType(), ci.getInternalName(), - ci.getTabAlias(), ci.isHiddenVirtualCol()); + ExprNodeColumnDesc encd = new ExprNodeColumnDesc(ci); cols.add(encd); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/JoinCondTypeCheckProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/JoinCondTypeCheckProcFactory.java index 406c18ef7c0c..38156c67d7aa 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/JoinCondTypeCheckProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/JoinCondTypeCheckProcFactory.java @@ -17,15 +17,6 @@ */ package org.apache.hadoop.hive.ql.optimizer.optiq.translator; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Stack; - import org.apache.hadoop.hive.ql.ErrorMsg; import org.apache.hadoop.hive.ql.exec.ColumnInfo; import org.apache.hadoop.hive.ql.exec.FunctionInfo; @@ -47,6 +38,15 @@ import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPOr; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Stack; + /** * JoinCondTypeCheckProcFactory is used by Optiq planner(CBO) to generate Join Conditions from Join Condition AST. * Reasons for sub class: @@ -99,8 +99,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, if (!qualifiedAccess) { colInfo = getColInfo(ctx, null, tableOrCol, expr); // It's a column. - return new ExprNodeColumnDesc(colInfo.getType(), colInfo.getInternalName(), - colInfo.getTabAlias(), colInfo.getIsVirtualCol()); + return new ExprNodeColumnDesc(colInfo); } else if (hasTableAlias(ctx, tableOrCol, expr)) { return null; } else { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/GenMRSkewJoinProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/GenMRSkewJoinProcessor.java index 8afe21893eab..7b4709f21135 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/GenMRSkewJoinProcessor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/GenMRSkewJoinProcessor.java @@ -18,13 +18,6 @@ package org.apache.hadoop.hive.ql.optimizer.physical; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.exec.ColumnInfo; @@ -60,6 +53,13 @@ import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + /** * GenMRSkewJoinProcessor. * @@ -192,9 +192,7 @@ public static void processSkewJoin(JoinOperator joinOp, String newColName = i + "_VALUE_" + k; // any name, it does not matter. ColumnInfo columnInfo = new ColumnInfo(newColName, type, alias.toString(), false); columnInfos.add(columnInfo); - newValueExpr.add(new ExprNodeColumnDesc( - columnInfo.getType(), columnInfo.getInternalName(), - columnInfo.getTabAlias(), false)); + newValueExpr.add(new ExprNodeColumnDesc(columnInfo)); if (!first) { colNames = colNames + ","; colTypes = colTypes + ","; @@ -216,9 +214,7 @@ public static void processSkewJoin(JoinOperator joinOp, ColumnInfo columnInfo = new ColumnInfo(joinKeys.get(k), TypeInfoFactory .getPrimitiveTypeInfo(joinKeyTypes.get(k)), alias.toString(), false); columnInfos.add(columnInfo); - newKeyExpr.add(new ExprNodeColumnDesc( - columnInfo.getType(), columnInfo.getInternalName(), - columnInfo.getTabAlias(), false)); + newKeyExpr.add(new ExprNodeColumnDesc(columnInfo)); } newJoinValues.put(alias, newValueExpr); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 9c944b66f4a8..88fd0fca4d4f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -20,34 +20,12 @@ import static org.apache.hadoop.hive.conf.HiveConf.ConfVars.HIVESTATSDBCLASS; -import java.io.IOException; -import java.io.Serializable; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.UndeclaredThrowableException; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.BitSet; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.TreeSet; -import java.util.UUID; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.regex.Pattern; -import java.util.regex.PatternSyntaxException; - import com.google.common.annotations.VisibleForTesting; - -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.tools.Frameworks; +import com.google.common.base.Function; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableList.Builder; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; import org.antlr.runtime.ClassicToken; import org.antlr.runtime.Token; @@ -122,7 +100,6 @@ import org.apache.hadoop.hive.ql.metadata.Table; import org.apache.hadoop.hive.ql.metadata.VirtualColumn; import org.apache.hadoop.hive.ql.optimizer.Optimizer; -import org.apache.hadoop.hive.ql.optimizer.unionproc.UnionProcContext; import org.apache.hadoop.hive.ql.optimizer.optiq.HiveDefaultRelMetadataProvider; import org.apache.hadoop.hive.ql.optimizer.optiq.HiveOptiqUtil; import org.apache.hadoop.hive.ql.optimizer.optiq.HiveTypeSystemImpl; @@ -146,6 +123,7 @@ import org.apache.hadoop.hive.ql.optimizer.optiq.translator.RexNodeConverter; import org.apache.hadoop.hive.ql.optimizer.optiq.translator.SqlFunctionConverter; import org.apache.hadoop.hive.ql.optimizer.optiq.translator.TypeConverter; +import org.apache.hadoop.hive.ql.optimizer.unionproc.UnionProcContext; import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.tableSpec.SpecType; import org.apache.hadoop.hive.ql.parse.PTFInvocationSpec.OrderExpression; import org.apache.hadoop.hive.ql.parse.PTFInvocationSpec.OrderSpec; @@ -279,30 +257,51 @@ import org.eigenbase.reltype.RelDataTypeFactory; import org.eigenbase.reltype.RelDataTypeField; import org.eigenbase.rex.RexBuilder; +import org.eigenbase.rex.RexFieldCollation; import org.eigenbase.rex.RexInputRef; import org.eigenbase.rex.RexNode; import org.eigenbase.rex.RexUtil; import org.eigenbase.rex.RexWindowBound; -import org.eigenbase.rex.RexFieldCollation; import org.eigenbase.sql.SqlAggFunction; -import org.eigenbase.sql.SqlWindow; -import org.eigenbase.sql.parser.SqlParserPos; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.sql2rel.RelFieldTrimmer; import org.eigenbase.sql.SqlCall; import org.eigenbase.sql.SqlExplainLevel; import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlNode; import org.eigenbase.sql.SqlLiteral; +import org.eigenbase.sql.SqlNode; +import org.eigenbase.sql.SqlWindow; +import org.eigenbase.sql.parser.SqlParserPos; +import org.eigenbase.sql.type.SqlTypeName; +import org.eigenbase.sql2rel.RelFieldTrimmer; import org.eigenbase.util.CompositeList; import org.eigenbase.util.ImmutableIntList; import org.eigenbase.util.Pair; -import com.google.common.base.Function; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableList.Builder; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; +import java.io.IOException; +import java.io.Serializable; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.UndeclaredThrowableException; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.BitSet; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.TreeSet; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; + +import net.hydromatic.optiq.SchemaPlus; +import net.hydromatic.optiq.tools.Frameworks; /** * Implementation of the semantic analyzer. It generates the query plan. @@ -4133,9 +4132,7 @@ private Operator genGroupByPlanGroupByOperator1(QBParseInfo parseInfo, throw new SemanticException(ErrorMsg.INVALID_COLUMN.getMsg(grpbyExpr)); } - groupByKeys.add(new ExprNodeColumnDesc(exprInfo.getType(), exprInfo - .getInternalName(), exprInfo.getTabAlias(), exprInfo - .getIsVirtualCol())); + groupByKeys.add(new ExprNodeColumnDesc(exprInfo)); String field = getColumnInternalName(i); outputColumnNames.add(field); ColumnInfo oColInfo = new ColumnInfo(field, exprInfo.getType(), "", false); @@ -6931,9 +6928,7 @@ private Operator genReduceSinkPlanForSortingBucketing(Table tab, Operator input, for (ColumnInfo colInfo : inputRR.getColumnInfos()) { String internalName = getColumnInternalName(i++); outputColumns.add(internalName); - valueCols.add(new ExprNodeColumnDesc(colInfo.getType(), colInfo - .getInternalName(), colInfo.getTabAlias(), colInfo - .getIsVirtualCol())); + valueCols.add(new ExprNodeColumnDesc(colInfo)); colExprMap.put(internalName, valueCols .get(valueCols.size() - 1)); } @@ -7062,8 +7057,7 @@ private Operator genReduceSinkPlan(String dest, QB qb, Operator input, ColumnInfo colInfo = columnInfos.get(i); String[] nm = inputRR.reverseLookup(colInfo.getInternalName()); String[] nm2 = inputRR.getAlternateMappings(colInfo.getInternalName()); - ExprNodeColumnDesc value = new ExprNodeColumnDesc(colInfo.getType(), - colInfo.getInternalName(), colInfo.getTabAlias(), colInfo.getIsVirtualCol()); + ExprNodeColumnDesc value = new ExprNodeColumnDesc(colInfo); // backtrack can be null when input is script operator ExprNodeDesc valueBack = ExprNodeDescUtils.backtrack(value, dummy, input); @@ -7315,8 +7309,7 @@ private Operator genJoinReduceSinkChild(QB qb, ExprNodeDesc[] joinKeys, ColumnInfo colInfo = columns.get(i); String[] nm = inputRR.reverseLookup(colInfo.getInternalName()); String[] nm2 = inputRR.getAlternateMappings(colInfo.getInternalName()); - ExprNodeDesc expr = new ExprNodeColumnDesc(colInfo.getType(), - colInfo.getInternalName(), colInfo.getTabAlias(), colInfo.getIsVirtualCol()); + ExprNodeDesc expr = new ExprNodeColumnDesc(colInfo); // backtrack can be null when input is script operator ExprNodeDesc exprBack = ExprNodeDescUtils.backtrack(expr, dummy, child); @@ -8404,12 +8397,9 @@ private Operator insertSelectAllPlanForGroupBy(Operator input) new HashMap(); for (int i = 0; i < columns.size(); i++) { ColumnInfo col = columns.get(i); - colList.add(new ExprNodeColumnDesc(col.getType(), col.getInternalName(), - col.getTabAlias(), col.getIsVirtualCol())); + colList.add(new ExprNodeColumnDesc(col)); columnNames.add(col.getInternalName()); - columnExprMap.put(col.getInternalName(), - new ExprNodeColumnDesc(col.getType(), col.getInternalName(), - col.getTabAlias(), col.getIsVirtualCol())); + columnExprMap.put(col.getInternalName(), new ExprNodeColumnDesc(col)); } Operator output = putOpInsertMap(OperatorFactory.getAndMakeChild( new SelectDesc(colList, columnNames, true), new RowSchema(inputRR @@ -9266,8 +9256,7 @@ private ExprNodeDesc genSamplePredicate(TableSample ts, for (String col : bucketCols) { ColumnInfo ci = rwsch.get(alias, col); // TODO: change type to the one in the table schema - args.add(new ExprNodeColumnDesc(ci.getType(), ci.getInternalName(), ci - .getTabAlias(), ci.getIsVirtualCol())); + args.add(new ExprNodeColumnDesc(ci)); } } else { for (ASTNode expr : ts.getExprs()) { @@ -9848,8 +9837,7 @@ private Operator genLateralViewPlan(QB qb, Operator op, ASTNode lateralViewTree) for (ColumnInfo col : source.getColumnInfos()) { String[] tabCol = source.reverseLookup(col.getInternalName()); lvForwardRR.put(tabCol[0], tabCol[1], col); - ExprNodeDesc colExpr = new ExprNodeColumnDesc(col.getType(), col.getInternalName(), - col.getTabAlias(), false); + ExprNodeDesc colExpr = new ExprNodeColumnDesc(col); colList.add(colExpr); colNames.add(colExpr.getName()); lvfColExprMap.put(col.getInternalName(), colExpr); @@ -9938,8 +9926,7 @@ private void LVmergeRowResolvers(RowResolver source, RowResolver dest, String tableAlias = tableCol[0]; String colAlias = tableCol[1]; dest.put(tableAlias, colAlias, newCol); - colExprMap.put(internalName, new ExprNodeColumnDesc(c.getType(), c.getInternalName(), - c.getTabAlias(), c.getIsVirtualCol())); + colExprMap.put(internalName, new ExprNodeColumnDesc(c)); } } @@ -12000,9 +11987,7 @@ void buildPTFReduceSinkDetails(PartitionedTableFunctionDef tabDef, */ int pos = 0; for (ColumnInfo colInfo : colInfoList) { - ExprNodeDesc valueColExpr = new ExprNodeColumnDesc(colInfo.getType(), colInfo - .getInternalName(), colInfo.getTabAlias(), colInfo - .getIsVirtualCol()); + ExprNodeDesc valueColExpr = new ExprNodeColumnDesc(colInfo); valueCols.add(valueColExpr); String internalName = SemanticAnalyzer.getColumnInternalName(pos++); outputColumnNames.add(internalName); @@ -12247,9 +12232,7 @@ private Operator genReduceSinkPlanForWindowing(WindowingSpec spec, RowResolver rsNewRR = new RowResolver(); int pos = 0; for (ColumnInfo colInfo : colInfoList) { - ExprNodeDesc valueColExpr = new ExprNodeColumnDesc(colInfo.getType(), colInfo - .getInternalName(), colInfo.getTabAlias(), colInfo - .getIsVirtualCol()); + ExprNodeDesc valueColExpr = new ExprNodeColumnDesc(colInfo); valueCols.add(valueColExpr); String internalName = SemanticAnalyzer.getColumnInternalName(pos++); outputColumnNames.add(internalName); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeColumnDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeColumnDesc.java index 250208e7524b..9a320545c226 100755 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeColumnDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeColumnDesc.java @@ -18,14 +18,15 @@ package org.apache.hadoop.hive.ql.plan; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.hadoop.hive.ql.exec.ColumnInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + /** * ExprNodeColumnDesc. * @@ -56,6 +57,10 @@ public class ExprNodeColumnDesc extends ExprNodeDesc implements Serializable { public ExprNodeColumnDesc() { } + public ExprNodeColumnDesc(ColumnInfo ci) { + this(ci.getType(), ci.getInternalName(), ci.getTabAlias(), ci.getIsVirtualCol()); + } + public ExprNodeColumnDesc(TypeInfo typeInfo, String column, String tabAlias, boolean isPartitionColOrVirtualCol) { super(typeInfo); diff --git a/ql/src/test/results/clientnegative/udf_assert_true.q.out b/ql/src/test/results/clientnegative/udf_assert_true.q.out index 819d723c1ad4..4a5b30de3b20 100644 --- a/ql/src/test/results/clientnegative/udf_assert_true.q.out +++ b/ql/src/test/results/clientnegative/udf_assert_true.q.out @@ -21,10 +21,10 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 158000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: assert_true((_col5 > 0)) (type: void) outputColumnNames: _col0 @@ -48,7 +48,7 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 158000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: assert_true((_col5 > 0)) (type: void) outputColumnNames: _col0 @@ -98,10 +98,10 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 158000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: assert_true((_col5 < 2)) (type: void) outputColumnNames: _col0 @@ -125,7 +125,7 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 158000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: assert_true((_col5 < 2)) (type: void) outputColumnNames: _col0 diff --git a/ql/src/test/results/clientnegative/udf_assert_true2.q.out b/ql/src/test/results/clientnegative/udf_assert_true2.q.out index 9760d0d97ad9..3684a3f6c5c4 100644 --- a/ql/src/test/results/clientnegative/udf_assert_true2.q.out +++ b/ql/src/test/results/clientnegative/udf_assert_true2.q.out @@ -16,10 +16,10 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 158000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: (1 + assert_true((_col5 < 2))) (type: double) outputColumnNames: _col0 @@ -43,7 +43,7 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 158000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: (1 + assert_true((_col5 < 2))) (type: double) outputColumnNames: _col0 diff --git a/ql/src/test/results/clientpositive/lateral_view.q.out b/ql/src/test/results/clientpositive/lateral_view.q.out index 66c296831d79..25ed62fc53da 100644 --- a/ql/src/test/results/clientpositive/lateral_view.q.out +++ b/ql/src/test/results/clientpositive/lateral_view.q.out @@ -132,14 +132,14 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 162000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 162000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 3 Statistics: Num rows: 3 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE @@ -159,11 +159,11 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 162000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 162000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 3 Statistics: Num rows: 3 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE @@ -199,12 +199,12 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 162000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Forward - Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 162000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: int) outputColumnNames: _col5 @@ -259,9 +259,9 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 162000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Forward - Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 162000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: int) outputColumnNames: _col5 @@ -332,12 +332,12 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 158000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Forward - Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 158000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator Statistics: Num rows: 1000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator @@ -390,9 +390,9 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5 - Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 158000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Forward - Statistics: Num rows: 1000 Data size: 24000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 158000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator Statistics: Num rows: 1000 Data size: 268000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator @@ -519,10 +519,10 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 1406 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col4 - Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 162000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col4 (type: int) outputColumnNames: _col0 @@ -546,7 +546,7 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col4 - Statistics: Num rows: 1000 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 162000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col4 (type: int) outputColumnNames: _col0 diff --git a/ql/src/test/results/clientpositive/lateral_view_noalias.q.out b/ql/src/test/results/clientpositive/lateral_view_noalias.q.out index e1445bf3a43b..51a29d0c9dc5 100644 --- a/ql/src/test/results/clientpositive/lateral_view_noalias.q.out +++ b/ql/src/test/results/clientpositive/lateral_view_noalias.q.out @@ -18,14 +18,14 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 326000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: string), _col6 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 326000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 2 Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE @@ -45,11 +45,11 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 326000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: string), _col6 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 326000 Basic stats: COMPLETE Column stats: COMPLETE Limit Number of rows: 2 Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE @@ -158,10 +158,10 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 326000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: string), _col6 (type: int) outputColumnNames: _col0, _col1 @@ -182,7 +182,7 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 326000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: string), _col6 (type: int) outputColumnNames: _col0, _col1 @@ -259,10 +259,10 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 326000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: string), _col6 (type: int) outputColumnNames: _col0, _col1 @@ -283,7 +283,7 @@ STAGE PLANS: function name: explode Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 326000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: string), _col6 (type: int) outputColumnNames: _col0, _col1 diff --git a/ql/src/test/results/clientpositive/lateral_view_ppd.q.out b/ql/src/test/results/clientpositive/lateral_view_ppd.q.out index 12200302d03d..b186192c2be2 100644 --- a/ql/src/test/results/clientpositive/lateral_view_ppd.q.out +++ b/ql/src/test/results/clientpositive/lateral_view_ppd.q.out @@ -175,23 +175,44 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - Filter Operator - predicate: ((ds = '2008-04-08') and (hr = '12')) (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - Lateral View Forward - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: value (type: string) - outputColumnNames: value - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Lateral View Forward + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: string) + outputColumnNames: value + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Lateral View Join Operator + outputColumnNames: _col1, _col7 + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col1 (type: string), _col7 (type: int) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 12 + Statistics: Num rows: 12 Data size: 120 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 12 Data size: 120 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Select Operator + expressions: array(1,2,3) (type: array) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + UDTF Operator + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + function name: explode Lateral View Join Operator outputColumnNames: _col1, _col7 - Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string), _col7 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 12 Statistics: Num rows: 12 Data size: 120 Basic stats: COMPLETE Column stats: NONE @@ -202,30 +223,6 @@ STAGE PLANS: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - Select Operator - expressions: array(1,2,3) (type: array) - outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - UDTF Operator - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - function name: explode - Lateral View Join Operator - outputColumnNames: _col1, _col7 - Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col1 (type: string), _col7 (type: int) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE - Limit - Number of rows: 12 - Statistics: Num rows: 12 Data size: 120 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 12 Data size: 120 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Stage: Stage-0 Fetch Operator @@ -236,18 +233,12 @@ STAGE PLANS: PREHOOK: query: SELECT value, myCol FROM (SELECT * FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol) a WHERE ds='2008-04-08' AND hr="12" LIMIT 12 PREHOOK: type: QUERY PREHOOK: Input: default@srcpart -PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 -PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 -PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### POSTHOOK: query: SELECT value, myCol FROM (SELECT * FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol) a WHERE ds='2008-04-08' AND hr="12" LIMIT 12 POSTHOOK: type: QUERY POSTHOOK: Input: default@srcpart -POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 -POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 -POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### val_238 1 val_238 2 diff --git a/ql/src/test/results/clientpositive/udtf_stack.q.out b/ql/src/test/results/clientpositive/udtf_stack.q.out index 43f0a76e3901..80edb65d0359 100644 --- a/ql/src/test/results/clientpositive/udtf_stack.q.out +++ b/ql/src/test/results/clientpositive/udtf_stack.q.out @@ -21,10 +21,10 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 1000 Data size: 111000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 245000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: string), _col6 (type: array) outputColumnNames: _col0, _col1 @@ -48,7 +48,7 @@ STAGE PLANS: function name: stack Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 1000 Data size: 111000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 245000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: string), _col6 (type: array) outputColumnNames: _col0, _col1 @@ -88,10 +88,10 @@ STAGE PLANS: Lateral View Forward Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - Statistics: Num rows: 500 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 500 Data size: 134000 Basic stats: COMPLETE Column stats: COMPLETE Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 1000 Data size: 135000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 269000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: string), _col6 (type: array) outputColumnNames: _col0, _col1 @@ -115,7 +115,7 @@ STAGE PLANS: function name: stack Lateral View Join Operator outputColumnNames: _col5, _col6 - Statistics: Num rows: 1000 Data size: 135000 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1000 Data size: 269000 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col5 (type: string), _col6 (type: array) outputColumnNames: _col0, _col1 diff --git a/ql/src/test/results/clientpositive/union26.q.out b/ql/src/test/results/clientpositive/union26.q.out index cdc558a0b266..4f9e0d4fb118 100644 --- a/ql/src/test/results/clientpositive/union26.q.out +++ b/ql/src/test/results/clientpositive/union26.q.out @@ -103,91 +103,88 @@ STAGE PLANS: Map Operator Tree: TableScan alias: srcpart - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - Filter Operator - predicate: ((ds = '2008-04-08') and (hr = '11')) (type: boolean) - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - Lateral View Forward - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: key (type: string), value (type: string) - outputColumnNames: key, value - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Lateral View Forward + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: key, value + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Lateral View Join Operator + outputColumnNames: _col0, _col1, _col7 + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE + Union + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count(1) + keys: _col0 (type: string), _col1 (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string) + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE + value expressions: _col2 (type: bigint) + Select Operator + expressions: array(1,2,3) (type: array) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + UDTF Operator + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + function name: explode Lateral View Join Operator outputColumnNames: _col0, _col1, _col7 - Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE Union - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE value expressions: _col2 (type: bigint) - Select Operator - expressions: array(1,2,3) (type: array) - outputColumnNames: _col0 - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - UDTF Operator - Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE - function name: explode - Lateral View Join Operator - outputColumnNames: _col0, _col1, _col7 - Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 4000 Data size: 42496 Basic stats: COMPLETE Column stats: NONE - Union - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE - Select Operator - expressions: _col0 (type: string), _col1 (type: string) - outputColumnNames: _col0, _col1 - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE - Group By Operator - aggregations: count(1) - keys: _col0 (type: string), _col1 (type: string) - mode: hash - outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: string), _col1 (type: string) - sort order: ++ - Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE - value expressions: _col2 (type: bigint) TableScan Union - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) keys: _col0 (type: string), _col1 (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string) sort order: ++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string) - Statistics: Num rows: 4275 Data size: 45417 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1275 Data size: 13545 Basic stats: COMPLETE Column stats: NONE value expressions: _col2 (type: bigint) Reduce Operator Tree: Group By Operator @@ -195,14 +192,14 @@ STAGE PLANS: keys: KEY._col0 (type: string), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 2137 Data size: 22703 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 637 Data size: 6767 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col2 (type: bigint), _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 2137 Data size: 22703 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 637 Data size: 6767 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 2137 Data size: 22703 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 637 Data size: 6767 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -238,8 +235,6 @@ PREHOOK: type: QUERY PREHOOK: Input: default@srcpart PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 -PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 -PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### POSTHOOK: query: SELECT count(1) as counts, @@ -265,8 +260,6 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@srcpart POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 -POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 -POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### 10 100 val_100 10 103 val_103 @@ -601,8 +594,6 @@ PREHOOK: type: QUERY PREHOOK: Input: default@srcpart PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 -PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 -PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### POSTHOOK: query: SELECT count(1) as counts, @@ -628,8 +619,6 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@srcpart POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 -POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 -POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### 10 100 val_100 10 103 val_103 @@ -964,8 +953,6 @@ PREHOOK: type: QUERY PREHOOK: Input: default@srcpart PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 -PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 -PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### POSTHOOK: query: SELECT count(1) as counts, @@ -991,8 +978,6 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@srcpart POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 -POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 -POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 #### A masked pattern was here #### 10 100 val_100 10 103 val_103 From c6ec508c975e1df6999f2b15fab2cefc2d3851e7 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Thu, 6 Nov 2014 00:37:03 +0000 Subject: [PATCH 255/339] HIVE-8740: Sorted dynamic partition does not work correctly with constant folding (Prasanth J reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637019 13f79535-47bb-0310-9956-ffa450edef68 --- .../SortedDynPartitionOptimizer.java | 20 +- .../dynpart_sort_optimization_acid.q | 117 ++ .../dynpart_sort_optimization_acid.q.out | 1264 +++++++++++++++++ 3 files changed, 1398 insertions(+), 3 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/dynpart_sort_optimization_acid.q create mode 100644 ql/src/test/results/clientpositive/dynpart_sort_optimization_acid.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java index 477be1daaaf2..de20302583e3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java @@ -157,7 +157,11 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // the reduce sink key. Since both key columns are not prefix subset // ReduceSinkDeDuplication will not merge them together resulting in 2 MR jobs. // To avoid that we will remove the RS (and EX) inserted by enforce bucketing/sorting. - removeRSInsertedByEnforceBucketing(fsOp); + if (!removeRSInsertedByEnforceBucketing(fsOp)) { + LOG.debug("Bailing out of sort dynamic partition optimization as some partition columns " + + "got constant folded."); + return null; + } // unlink connection between FS and its parent Operator fsParent = fsOp.getParentOperators().get(0); @@ -262,7 +266,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // Remove RS and EX introduced by enforce bucketing/sorting config // Convert PARENT -> RS -> EX -> FS to PARENT -> FS - private void removeRSInsertedByEnforceBucketing(FileSinkOperator fsOp) { + private boolean removeRSInsertedByEnforceBucketing(FileSinkOperator fsOp) { HiveConf hconf = parseCtx.getConf(); boolean enforceBucketing = HiveConf.getBoolVar(hconf, ConfVars.HIVEENFORCEBUCKETING); boolean enforceSorting = HiveConf.getBoolVar(hconf, ConfVars.HIVEENFORCESORTING); @@ -297,17 +301,27 @@ private void removeRSInsertedByEnforceBucketing(FileSinkOperator fsOp) { Operator rsGrandChild = rsChild.getChildOperators().get(0); if (rsChild instanceof ExtractOperator) { + // if schema size cannot be matched, then it could be because of constant folding + // converting partition column expression to constant expression. The constant + // expression will then get pruned by column pruner since it will not reference to + // any columns. + if (rsParent.getSchema().getSignature().size() != + rsChild.getSchema().getSignature().size()) { + return false; + } rsParent.getChildOperators().clear(); rsParent.getChildOperators().add(rsGrandChild); rsGrandChild.getParentOperators().clear(); rsGrandChild.getParentOperators().add(rsParent); parseCtx.removeOpParseCtx(rsToRemove); parseCtx.removeOpParseCtx(rsChild); - LOG.info("Removed " + rsParent.getOperatorId() + " and " + rsChild.getOperatorId() + LOG.info("Removed " + rsToRemove.getOperatorId() + " and " + rsChild.getOperatorId() + " as it was introduced by enforce bucketing/sorting."); } } } + + return true; } private List getPartitionPositions(DynamicPartitionCtx dpCtx, RowSchema schema) { diff --git a/ql/src/test/queries/clientpositive/dynpart_sort_optimization_acid.q b/ql/src/test/queries/clientpositive/dynpart_sort_optimization_acid.q new file mode 100644 index 000000000000..f2c0f0bac403 --- /dev/null +++ b/ql/src/test/queries/clientpositive/dynpart_sort_optimization_acid.q @@ -0,0 +1,117 @@ +set hive.support.concurrency=true; +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +set hive.enforce.bucketing=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +set hive.optimize.sort.dynamic.partition=false; + +-- single level partition, sorted dynamic partition disabled +drop table acid; +CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true'); +insert into table acid partition(ds) select key,value,ds from srcpart; +select count(*) from acid where ds='2008-04-08'; + +insert into table acid partition(ds='2008-04-08') values("foo", "bar"); +select count(*) from acid where ds='2008-04-08'; + +explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08'; +update acid set key = 'foo' where value = 'bar' and ds='2008-04-08'; +select count(*) from acid where ds='2008-04-08'; + +explain update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08'); +update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08'); +select count(*) from acid where ds in ('2008-04-08'); + +delete from acid where key = 'foo' and ds='2008-04-08'; +select count(*) from acid where ds='2008-04-08'; + +set hive.optimize.sort.dynamic.partition=true; + +-- single level partition, sorted dynamic partition enabled +drop table acid; +CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true'); +insert into table acid partition(ds) select key,value,ds from srcpart; +select count(*) from acid where ds='2008-04-08'; + +insert into table acid partition(ds='2008-04-08') values("foo", "bar"); +select count(*) from acid where ds='2008-04-08'; + +explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08'; +update acid set key = 'foo' where value = 'bar' and ds='2008-04-08'; +select count(*) from acid where ds='2008-04-08'; + +explain update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08'); +update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08'); +select count(*) from acid where ds in ('2008-04-08'); + +delete from acid where key = 'foo' and ds='2008-04-08'; +select count(*) from acid where ds='2008-04-08'; + +set hive.optimize.sort.dynamic.partition=false; + +-- 2 level partition, sorted dynamic partition disabled +drop table acid; +CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string, hr int) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true'); +insert into table acid partition(ds,hr) select * from srcpart; +select count(*) from acid where ds='2008-04-08' and hr=11; + +insert into table acid partition(ds='2008-04-08',hr=11) values("foo", "bar"); +select count(*) from acid where ds='2008-04-08' and hr=11; + +explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11; +update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11; +select count(*) from acid where ds='2008-04-08' and hr=11; + +explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11; +update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11; +select count(*) from acid where ds='2008-04-08' and hr>=11; + +delete from acid where key = 'foo' and ds='2008-04-08' and hr=11; +select count(*) from acid where ds='2008-04-08' and hr=11; + +set hive.optimize.sort.dynamic.partition=true; + +-- 2 level partition, sorted dynamic partition enabled +drop table acid; +CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string, hr int) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true'); +insert into table acid partition(ds,hr) select * from srcpart; +select count(*) from acid where ds='2008-04-08' and hr=11; + +insert into table acid partition(ds='2008-04-08',hr=11) values("foo", "bar"); +select count(*) from acid where ds='2008-04-08' and hr=11; + +explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11; +update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11; +select count(*) from acid where ds='2008-04-08' and hr=11; + +explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11; +update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11; +select count(*) from acid where ds='2008-04-08' and hr>=11; + +delete from acid where key = 'foo' and ds='2008-04-08' and hr=11; +select count(*) from acid where ds='2008-04-08' and hr=11; + +set hive.optimize.sort.dynamic.partition=true; +set hive.optimize.constant.propagation=false; + +-- 2 level partition, sorted dynamic partition enabled, constant propagation disabled +drop table acid; +CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string, hr int) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true'); +insert into table acid partition(ds,hr) select * from srcpart; +select count(*) from acid where ds='2008-04-08' and hr=11; + +insert into table acid partition(ds='2008-04-08',hr=11) values("foo", "bar"); +select count(*) from acid where ds='2008-04-08' and hr=11; + +explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11; +update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11; +select count(*) from acid where ds='2008-04-08' and hr=11; + +explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11; +update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11; +select count(*) from acid where ds='2008-04-08' and hr>=11; + +delete from acid where key = 'foo' and ds='2008-04-08' and hr=11; +select count(*) from acid where ds='2008-04-08' and hr=11; + +set hive.optimize.sort.dynamic.partition=true; diff --git a/ql/src/test/results/clientpositive/dynpart_sort_optimization_acid.q.out b/ql/src/test/results/clientpositive/dynpart_sort_optimization_acid.q.out new file mode 100644 index 000000000000..8ebbdc354e67 --- /dev/null +++ b/ql/src/test/results/clientpositive/dynpart_sort_optimization_acid.q.out @@ -0,0 +1,1264 @@ +PREHOOK: query: -- single level partition, sorted dynamic partition disabled +drop table acid +PREHOOK: type: DROPTABLE +POSTHOOK: query: -- single level partition, sorted dynamic partition disabled +drop table acid +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid +POSTHOOK: query: CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid +PREHOOK: query: insert into table acid partition(ds) select key,value,ds from srcpart +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@acid +POSTHOOK: query: insert into table acid partition(ds) select key,value,ds from srcpart +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: Output: default@acid@ds=2008-04-09 +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select count(*) from acid where ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +1000 +PREHOOK: query: insert into table acid partition(ds='2008-04-08') values("foo", "bar") +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: query: insert into table acid partition(ds='2008-04-08') values("foo", "bar") +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08).key SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08).value SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: select count(*) from acid where ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +1001 +PREHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' +PREHOOK: type: QUERY +POSTHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: acid + Filter Operator + predicate: (value = 'bar') (type: boolean) + Select Operator + expressions: ROW__ID (type: struct), 'foo' (type: string) + outputColumnNames: _col0, _col1 + Reduce Output Operator + key expressions: _col0 (type: struct) + sort order: + + Map-reduce partition columns: UDFToInteger(_col0) (type: int) + value expressions: _col1 (type: string) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: struct), VALUE._col0 (type: string), 'bar' (type: string), '2008-04-08' (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-0 + Move Operator + tables: + partition: + ds + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +PREHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +POSTHOOK: Output: default@acid@ds=2008-04-08 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +1001 +PREHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08') +PREHOOK: type: QUERY +POSTHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08') +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: acid + Filter Operator + predicate: (value = 'bar') (type: boolean) + Select Operator + expressions: ROW__ID (type: struct), 'foo' (type: string), ds (type: string) + outputColumnNames: _col0, _col1, _col3 + Reduce Output Operator + key expressions: _col0 (type: struct) + sort order: + + Map-reduce partition columns: UDFToInteger(_col0) (type: int) + value expressions: _col1 (type: string), _col3 (type: string) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: struct), VALUE._col0 (type: string), 'bar' (type: string), VALUE._col2 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-0 + Move Operator + tables: + partition: + ds + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08') +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +PREHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: query: update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +POSTHOOK: Output: default@acid@ds=2008-04-08 +PREHOOK: query: select count(*) from acid where ds in ('2008-04-08') +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds in ('2008-04-08') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +1001 +PREHOOK: query: delete from acid where key = 'foo' and ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +PREHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: query: delete from acid where key = 'foo' and ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +POSTHOOK: Output: default@acid@ds=2008-04-08 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +1000 +PREHOOK: query: -- single level partition, sorted dynamic partition enabled +drop table acid +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@acid +PREHOOK: Output: default@acid +POSTHOOK: query: -- single level partition, sorted dynamic partition enabled +drop table acid +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@acid +POSTHOOK: Output: default@acid +PREHOOK: query: CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid +POSTHOOK: query: CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid +PREHOOK: query: insert into table acid partition(ds) select key,value,ds from srcpart +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@acid +POSTHOOK: query: insert into table acid partition(ds) select key,value,ds from srcpart +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: Output: default@acid@ds=2008-04-09 +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select count(*) from acid where ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +1000 +PREHOOK: query: insert into table acid partition(ds='2008-04-08') values("foo", "bar") +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__2 +PREHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: query: insert into table acid partition(ds='2008-04-08') values("foo", "bar") +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__2 +POSTHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08).key SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08).value SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: select count(*) from acid where ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +1001 +PREHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' +PREHOOK: type: QUERY +POSTHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: acid + Filter Operator + predicate: (value = 'bar') (type: boolean) + Select Operator + expressions: ROW__ID (type: struct), 'foo' (type: string) + outputColumnNames: _col0, _col1 + Reduce Output Operator + key expressions: _col0 (type: struct) + sort order: + + Map-reduce partition columns: UDFToInteger(_col0) (type: int) + value expressions: _col1 (type: string) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: struct), VALUE._col0 (type: string), 'bar' (type: string), '2008-04-08' (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-0 + Move Operator + tables: + partition: + ds + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +PREHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +POSTHOOK: Output: default@acid@ds=2008-04-08 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +1001 +PREHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08') +PREHOOK: type: QUERY +POSTHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08') +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: acid + Filter Operator + predicate: (value = 'bar') (type: boolean) + Select Operator + expressions: ROW__ID (type: struct), 'foo' (type: string), ds (type: string) + outputColumnNames: _col0, _col1, _col3 + Reduce Output Operator + key expressions: _col0 (type: struct) + sort order: + + Map-reduce partition columns: UDFToInteger(_col0) (type: int) + value expressions: _col1 (type: string), _col3 (type: string) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: struct), VALUE._col0 (type: string), 'bar' (type: string), VALUE._col2 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-0 + Move Operator + tables: + partition: + ds + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08') +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +PREHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: query: update acid set key = 'foo' where value = 'bar' and ds in ('2008-04-08') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +POSTHOOK: Output: default@acid@ds=2008-04-08 +PREHOOK: query: select count(*) from acid where ds in ('2008-04-08') +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds in ('2008-04-08') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +1001 +PREHOOK: query: delete from acid where key = 'foo' and ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +PREHOOK: Output: default@acid@ds=2008-04-08 +POSTHOOK: query: delete from acid where key = 'foo' and ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +POSTHOOK: Output: default@acid@ds=2008-04-08 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08 +#### A masked pattern was here #### +1000 +PREHOOK: query: -- 2 level partition, sorted dynamic partition disabled +drop table acid +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@acid +PREHOOK: Output: default@acid +POSTHOOK: query: -- 2 level partition, sorted dynamic partition disabled +drop table acid +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@acid +POSTHOOK: Output: default@acid +PREHOOK: query: CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string, hr int) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid +POSTHOOK: query: CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string, hr int) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid +PREHOOK: query: insert into table acid partition(ds,hr) select * from srcpart +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@acid +POSTHOOK: query: insert into table acid partition(ds,hr) select * from srcpart +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-09/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-09/hr=12 +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=12).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=12).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=12).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=12).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +500 +PREHOOK: query: insert into table acid partition(ds='2008-04-08',hr=11) values("foo", "bar") +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__3 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: query: insert into table acid partition(ds='2008-04-08',hr=11) values("foo", "bar") +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__3 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).key SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).value SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +501 +PREHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +POSTHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: acid + Filter Operator + predicate: (value = 'bar') (type: boolean) + Select Operator + expressions: ROW__ID (type: struct), 'foo' (type: string) + outputColumnNames: _col0, _col1 + Reduce Output Operator + key expressions: _col0 (type: struct) + sort order: + + Map-reduce partition columns: UDFToInteger(_col0) (type: int) + value expressions: _col1 (type: string) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: struct), VALUE._col0 (type: string), 'bar' (type: string), '2008-04-08' (type: string), 11 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-0 + Move Operator + tables: + partition: + ds + hr + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +501 +PREHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +PREHOOK: type: QUERY +POSTHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: acid + Filter Operator + predicate: (value = 'bar') (type: boolean) + Select Operator + expressions: ROW__ID (type: struct), 'foo' (type: string), hr (type: int) + outputColumnNames: _col0, _col1, _col4 + Reduce Output Operator + key expressions: _col0 (type: struct) + sort order: + + Map-reduce partition columns: UDFToInteger(_col0) (type: int) + value expressions: _col1 (type: string), _col4 (type: int) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: struct), VALUE._col0 (type: string), 'bar' (type: string), '2008-04-08' (type: string), VALUE._col3 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-0 + Move Operator + tables: + partition: + ds + hr + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Input: default@acid@ds=2008-04-08/hr=12 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=12 +POSTHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=12 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr>=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Input: default@acid@ds=2008-04-08/hr=12 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr>=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=12 +#### A masked pattern was here #### +1001 +PREHOOK: query: delete from acid where key = 'foo' and ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: query: delete from acid where key = 'foo' and ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +500 +PREHOOK: query: -- 2 level partition, sorted dynamic partition enabled +drop table acid +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@acid +PREHOOK: Output: default@acid +POSTHOOK: query: -- 2 level partition, sorted dynamic partition enabled +drop table acid +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@acid +POSTHOOK: Output: default@acid +PREHOOK: query: CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string, hr int) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid +POSTHOOK: query: CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string, hr int) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid +PREHOOK: query: insert into table acid partition(ds,hr) select * from srcpart +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@acid +POSTHOOK: query: insert into table acid partition(ds,hr) select * from srcpart +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-09/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-09/hr=12 +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=12).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=12).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=12).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=12).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +500 +PREHOOK: query: insert into table acid partition(ds='2008-04-08',hr=11) values("foo", "bar") +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__4 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: query: insert into table acid partition(ds='2008-04-08',hr=11) values("foo", "bar") +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__4 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).key SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).value SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +501 +PREHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +POSTHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: acid + Filter Operator + predicate: (value = 'bar') (type: boolean) + Select Operator + expressions: ROW__ID (type: struct), 'foo' (type: string) + outputColumnNames: _col0, _col1 + Reduce Output Operator + key expressions: _col0 (type: struct) + sort order: + + Map-reduce partition columns: UDFToInteger(_col0) (type: int) + value expressions: _col1 (type: string) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: struct), VALUE._col0 (type: string), 'bar' (type: string), '2008-04-08' (type: string), 11 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-0 + Move Operator + tables: + partition: + ds + hr + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +501 +PREHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +PREHOOK: type: QUERY +POSTHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: acid + Filter Operator + predicate: (value = 'bar') (type: boolean) + Select Operator + expressions: ROW__ID (type: struct), 'foo' (type: string), hr (type: int) + outputColumnNames: _col0, _col1, _col4 + Reduce Output Operator + key expressions: _col0 (type: struct) + sort order: + + Map-reduce partition columns: UDFToInteger(_col0) (type: int) + value expressions: _col1 (type: string), _col4 (type: int) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: struct), VALUE._col0 (type: string), 'bar' (type: string), '2008-04-08' (type: string), VALUE._col3 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-0 + Move Operator + tables: + partition: + ds + hr + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Input: default@acid@ds=2008-04-08/hr=12 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=12 +POSTHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=12 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr>=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Input: default@acid@ds=2008-04-08/hr=12 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr>=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=12 +#### A masked pattern was here #### +1001 +PREHOOK: query: delete from acid where key = 'foo' and ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: query: delete from acid where key = 'foo' and ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +500 +PREHOOK: query: -- 2 level partition, sorted dynamic partition enabled, constant propagation disabled +drop table acid +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@acid +PREHOOK: Output: default@acid +POSTHOOK: query: -- 2 level partition, sorted dynamic partition enabled, constant propagation disabled +drop table acid +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@acid +POSTHOOK: Output: default@acid +PREHOOK: query: CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string, hr int) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@acid +POSTHOOK: query: CREATE TABLE acid(key string, value string) PARTITIONED BY(ds string, hr int) CLUSTERED BY(key) INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@acid +PREHOOK: query: insert into table acid partition(ds,hr) select * from srcpart +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@acid +POSTHOOK: query: insert into table acid partition(ds,hr) select * from srcpart +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-09/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-09/hr=12 +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=12).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=12).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=12).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-09,hr=12).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +500 +PREHOOK: query: insert into table acid partition(ds='2008-04-08',hr=11) values("foo", "bar") +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__5 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: query: insert into table acid partition(ds='2008-04-08',hr=11) values("foo", "bar") +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__5 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).key SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: acid PARTITION(ds=2008-04-08,hr=11).value SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +501 +PREHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +POSTHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: acid + Filter Operator + predicate: (value = 'bar') (type: boolean) + Select Operator + expressions: ROW__ID (type: struct), 'foo' (type: string), value (type: string), ds (type: string), hr (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Reduce Output Operator + key expressions: _col0 (type: struct) + sort order: + + value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: struct), VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col3 (type: string), _col4 (type: int), '_bucket_number' (type: string), _col0 (type: struct) + sort order: ++++ + Map-reduce partition columns: _col3 (type: string), _col4 (type: int) + value expressions: _col0 (type: struct), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int), '_bucket_number' (type: string) + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-0 + Move Operator + tables: + partition: + ds + hr + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +501 +PREHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +PREHOOK: type: QUERY +POSTHOOK: query: explain update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: acid + Filter Operator + predicate: (value = 'bar') (type: boolean) + Select Operator + expressions: ROW__ID (type: struct), 'foo' (type: string), value (type: string), ds (type: string), hr (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Reduce Output Operator + key expressions: _col0 (type: struct) + sort order: + + value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int) + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: struct), VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col3 (type: string), _col4 (type: int), '_bucket_number' (type: string), _col0 (type: struct) + sort order: ++++ + Map-reduce partition columns: _col3 (type: string), _col4 (type: int) + value expressions: _col0 (type: struct), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int), '_bucket_number' (type: string) + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-0 + Move Operator + tables: + partition: + ds + hr + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: default.acid + + Stage: Stage-3 + Stats-Aggr Operator + +PREHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Input: default@acid@ds=2008-04-08/hr=12 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=12 +POSTHOOK: query: update acid set key = 'foo' where value = 'bar' and ds='2008-04-08' and hr>=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=12 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=12 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr>=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Input: default@acid@ds=2008-04-08/hr=12 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr>=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=12 +#### A masked pattern was here #### +1001 +PREHOOK: query: delete from acid where key = 'foo' and ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +PREHOOK: Output: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: query: delete from acid where key = 'foo' and ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +POSTHOOK: Output: default@acid@ds=2008-04-08/hr=11 +PREHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +PREHOOK: type: QUERY +PREHOOK: Input: default@acid +PREHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from acid where ds='2008-04-08' and hr=11 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@acid +POSTHOOK: Input: default@acid@ds=2008-04-08/hr=11 +#### A masked pattern was here #### +500 From 3b5400d4d7242cedb11c7562436a5993c5278afe Mon Sep 17 00:00:00 2001 From: Brock Noland Date: Thu, 6 Nov 2014 17:41:32 +0000 Subject: [PATCH 256/339] Merge HIVE-8698 - default log4j.properties not included in jar files anymore (Thejas via Brock) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637171 13f79535-47bb-0310-9956-ffa450edef68 --- common/pom.xml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/common/pom.xml b/common/pom.xml index 01c74ba63286..42e80e2ac809 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -118,14 +118,6 @@ dist - - - ../conf/ - - hive-default.xml.template - - - org.apache.maven.plugins From bf38f90acedb2fb612682793a6fbd959bd7d80ad Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Thu, 6 Nov 2014 20:01:27 +0000 Subject: [PATCH 257/339] HIVE-8748 : jdbc uber jar is missing commons-logging (Ashutosh Chauhan via Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637200 13f79535-47bb-0310-9956-ffa450edef68 --- jdbc/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/jdbc/pom.xml b/jdbc/pom.xml index bdf214c4091e..6519f93bed41 100644 --- a/jdbc/pom.xml +++ b/jdbc/pom.xml @@ -167,6 +167,12 @@ org/apache/hadoop/hive/thrift/* + + commons-logging:commons-logging + + ** + + *:* From 1bb90b324095626245358d8af782c11383d89c2e Mon Sep 17 00:00:00 2001 From: Eugene Koifman Date: Thu, 6 Nov 2014 20:20:31 +0000 Subject: [PATCH 258/339] HIVE-8754 Sqoop job submission via WebHCat doesn't properly localize required jdbc jars in secure cluster (Eugene Koifman, reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637207 13f79535-47bb-0310-9956-ffa450edef68 --- .../hcatalog/templeton/SqoopDelegator.java | 22 ++++++++++++++++--- .../hcatalog/templeton/tool/LaunchMapper.java | 14 ++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SqoopDelegator.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SqoopDelegator.java index 292f69585e1c..b205bdab531a 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SqoopDelegator.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SqoopDelegator.java @@ -83,6 +83,20 @@ private List makeArgs(String command, String optionsFile, String otherFi args.add("-D" + TempletonControllerJob.TOKEN_FILE_ARG_PLACEHOLDER); args.add("-D" + TempletonControllerJob.MAPREDUCE_JOB_TAGS_ARG_PLACEHOLDER); } + if(i == 0 && TempletonUtils.isset(libdir) && TempletonUtils.isset(appConf.sqoopArchive())) { + //http://sqoop.apache.org/docs/1.4.5/SqoopUserGuide.html#_using_generic_and_specific_arguments + String libJars = null; + for(String s : args) { + if(s.startsWith(JobSubmissionConstants.Sqoop.LIB_JARS)) { + libJars = s.substring(s.indexOf("=") + 1); + break; + } + } + //the jars in libJars will be localized to CWD of the launcher task; then -libjars will + //cause them to be localized for the Sqoop MR job tasks + args.add(TempletonUtils.quoteForWindows("-libjars")); + args.add(TempletonUtils.quoteForWindows(libJars)); + } } } else if (TempletonUtils.isset(optionsFile)) { args.add("--options-file"); @@ -114,11 +128,13 @@ private List makeBasicArgs(String optionsFile, String otherFiles, /**Sqoop accesses databases via JDBC. This means it needs to have appropriate JDBC drivers available. Normally, the user would install Sqoop and place these jars into SQOOP_HOME/lib. When WebHCat is configured to auto-ship the Sqoop tar file, we - need to make sure that relevant JDBC jars are available on target node. + need to make sure that relevant JDBC jars are available on target node but we cannot modify + lib/ of exploded tar because Dist Cache intentionally prevents this. The user is expected to place any JDBC jars into an HDFS directory and specify this - dir in "libdir" parameter. All the files in this dir will be copied to lib/ of the - exploded Sqoop tar ball on target node. + dir in "libdir" parameter. WebHCat then ensures that these jars are localized for the launcher task + and made available to Sqoop. {@link org.apache.hive.hcatalog.templeton.tool.LaunchMapper#handleSqoop(org.apache.hadoop.conf.Configuration, java.util.Map)} + {@link #makeArgs(String, String, String, String, String, boolean, String)} */ LOG.debug("libdir=" + libdir); List jarList = TempletonUtils.hadoopFsListChildren(libdir, appConf, runAs); diff --git a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java index 557d1dac9ad0..c30684107d3c 100644 --- a/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java +++ b/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java @@ -18,7 +18,6 @@ */ package org.apache.hive.hcatalog.templeton.tool; -import com.google.common.io.Files; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; @@ -101,11 +100,18 @@ private static void handleSqoop(Configuration conf, Map env) thr if(TempletonUtils.isset(conf.get(Sqoop.LIB_JARS))) { //LIB_JARS should only be set if Sqoop is auto-shipped LOG.debug(Sqoop.LIB_JARS + "=" + conf.get(Sqoop.LIB_JARS)); - //copy these (which have now been localized) jars to sqoop/lib - String destDir = conf.get(AppConfig.SQOOP_HOME_PATH) + File.separator + "lib"; String[] files = conf.getStrings(Sqoop.LIB_JARS); + StringBuilder jdbcJars = new StringBuilder(); for(String f : files) { - Files.copy(new File(f), new File(destDir + File.separator + f)); + jdbcJars.append(f).append(File.pathSeparator); + } + jdbcJars.setLength(jdbcJars.length() - 1); + //this makes the jars available to Sqoop client + if(TempletonUtils.isset(System.getenv("HADOOP_CLASSPATH"))) { + env.put("HADOOP_CLASSPATH", System.getenv("HADOOP_CLASSPATH") + File.pathSeparator + jdbcJars.toString()); + } + else { + env.put("HADOOP_CLASSPATH", jdbcJars.toString()); } } } From d801f1bb1ef0259d222fa17d33bc4c239028ef03 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Thu, 6 Nov 2014 20:53:14 +0000 Subject: [PATCH 259/339] HIVE-8711 DB deadlocks not handled in TxnHandler for Postgres, Oracle, and SQLServer (Alan Gates, reviewed by Eugene Koifman) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637217 13f79535-47bb-0310-9956-ffa450edef68 --- .../metastore/txn/CompactionTxnHandler.java | 14 +-- .../hadoop/hive/metastore/txn/TxnHandler.java | 53 +++++--- .../hive/metastore/txn/TestTxnHandler.java | 114 ++++++++++++++++++ 3 files changed, 155 insertions(+), 26 deletions(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java index c4a95812aad2..acfc07a96b7e 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java @@ -127,7 +127,7 @@ public void setRunAs(long cq_id, String user) throws MetaException { dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "setRunAs"); + detectDeadlock(dbConn, e, "setRunAs"); } finally { closeDbConn(dbConn); closeStmt(stmt); @@ -192,7 +192,7 @@ public CompactionInfo findNextToCompact(String workerId) throws MetaException { dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "findNextToCompact"); + detectDeadlock(dbConn, e, "findNextToCompact"); throw new MetaException("Unable to connect to transaction database " + StringUtils.stringifyException(e)); } finally { @@ -234,7 +234,7 @@ public void markCompacted(CompactionInfo info) throws MetaException { dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "markCompacted"); + detectDeadlock(dbConn, e, "markCompacted"); throw new MetaException("Unable to connect to transaction database " + StringUtils.stringifyException(e)); } finally { @@ -377,7 +377,7 @@ public void markCleaned(CompactionInfo info) throws MetaException { dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "markCleaned"); + detectDeadlock(dbConn, e, "markCleaned"); throw new MetaException("Unable to connect to transaction database " + StringUtils.stringifyException(e)); } finally { @@ -429,7 +429,7 @@ public void cleanEmptyAbortedTxns() throws MetaException { dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "cleanEmptyAbortedTxns"); + detectDeadlock(dbConn, e, "cleanEmptyAbortedTxns"); throw new MetaException("Unable to connect to transaction database " + StringUtils.stringifyException(e)); } finally { @@ -475,7 +475,7 @@ public void revokeFromLocalWorkers(String hostname) throws MetaException { dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "revokeFromLocalWorkers"); + detectDeadlock(dbConn, e, "revokeFromLocalWorkers"); throw new MetaException("Unable to connect to transaction database " + StringUtils.stringifyException(e)); } finally { @@ -522,7 +522,7 @@ public void revokeTimedoutWorkers(long timeout) throws MetaException { dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "revokeTimedoutWorkers"); + detectDeadlock(dbConn, e, "revokeTimedoutWorkers"); throw new MetaException("Unable to connect to transaction database " + StringUtils.stringifyException(e)); } finally { diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java index 567e2e6b8d9c..50f58d094f0c 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java @@ -65,13 +65,13 @@ public class TxnHandler { static final protected char TXN_OPEN = 'o'; // Lock states - static final private char LOCK_ACQUIRED = 'a'; - static final private char LOCK_WAITING = 'w'; + static final protected char LOCK_ACQUIRED = 'a'; + static final protected char LOCK_WAITING = 'w'; // Lock types - static final private char LOCK_EXCLUSIVE = 'e'; - static final private char LOCK_SHARED = 'r'; - static final private char LOCK_SEMI_SHARED = 'w'; + static final protected char LOCK_EXCLUSIVE = 'e'; + static final protected char LOCK_SHARED = 'r'; + static final protected char LOCK_SEMI_SHARED = 'w'; static final private int ALLOWED_REPEATED_DEADLOCKS = 5; static final private Log LOG = LogFactory.getLog(TxnHandler.class.getName()); @@ -301,7 +301,7 @@ public OpenTxnsResponse openTxns(OpenTxnRequest rqst) throws MetaException { dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "openTxns"); + detectDeadlock(dbConn, e, "openTxns"); throw new MetaException("Unable to select from transaction database " + StringUtils.stringifyException(e)); } finally { @@ -336,7 +336,7 @@ public void abortTxn(AbortTxnRequest rqst) throws NoSuchTxnException, MetaExcept dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "abortTxn"); + detectDeadlock(dbConn, e, "abortTxn"); throw new MetaException("Unable to update transaction database " + StringUtils.stringifyException(e)); } finally { @@ -393,7 +393,7 @@ public void commitTxn(CommitTxnRequest rqst) dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "commitTxn"); + detectDeadlock(dbConn, e, "commitTxn"); throw new MetaException("Unable to update transaction database " + StringUtils.stringifyException(e)); } finally { @@ -419,7 +419,7 @@ public LockResponse lock(LockRequest rqst) dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "lock"); + detectDeadlock(dbConn, e, "lock"); throw new MetaException("Unable to update transaction database " + StringUtils.stringifyException(e)); } finally { @@ -444,7 +444,7 @@ public LockResponse lockNoWait(LockRequest rqst) dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "lockNoWait"); + detectDeadlock(dbConn, e, "lockNoWait"); throw new MetaException("Unable to update transaction database " + StringUtils.stringifyException(e)); } finally { @@ -479,7 +479,7 @@ public LockResponse checkLock(CheckLockRequest rqst) dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "checkLock"); + detectDeadlock(dbConn, e, "checkLock"); throw new MetaException("Unable to update transaction database " + StringUtils.stringifyException(e)); } finally { @@ -534,7 +534,7 @@ public void unlock(UnlockRequest rqst) dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "unlock"); + detectDeadlock(dbConn, e, "unlock"); throw new MetaException("Unable to update transaction database " + StringUtils.stringifyException(e)); } finally { @@ -613,7 +613,7 @@ public void heartbeat(HeartbeatRequest ids) dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "heartbeat"); + detectDeadlock(dbConn, e, "heartbeat"); throw new MetaException("Unable to select from transaction database " + StringUtils.stringifyException(e)); } finally { @@ -652,7 +652,7 @@ public HeartbeatTxnRangeResponse heartbeatTxnRange(HeartbeatTxnRangeRequest rqst dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "heartbeatTxnRange"); + detectDeadlock(dbConn, e, "heartbeatTxnRange"); throw new MetaException("Unable to select from transaction database " + StringUtils.stringifyException(e)); } finally { @@ -735,7 +735,7 @@ public void compact(CompactionRequest rqst) throws MetaException { dbConn.rollback(); } catch (SQLException e1) { } - detectDeadlock(e, "compact"); + detectDeadlock(dbConn, e, "compact"); throw new MetaException("Unable to select from transaction database " + StringUtils.stringifyException(e)); } finally { @@ -898,15 +898,30 @@ void close(ResultSet rs, Statement stmt, Connection dbConn) { * Determine if an exception was a deadlock. Unfortunately there is no standard way to do * this, so we have to inspect the error messages and catch the telltale signs for each * different database. + * @param conn database connection * @param e exception that was thrown. * @param caller name of the method calling this * @throws org.apache.hadoop.hive.metastore.txn.TxnHandler.DeadlockException when deadlock * detected and retry count has not been exceeded. */ - protected void detectDeadlock(SQLException e, String caller) throws DeadlockException { - final String mysqlDeadlock = - "Deadlock found when trying to get lock; try restarting transaction"; - if (e.getMessage().contains(mysqlDeadlock) || e instanceof SQLTransactionRollbackException) { + protected void detectDeadlock(Connection conn, + SQLException e, + String caller) throws DeadlockException, MetaException { + + // If you change this function, remove the @Ignore from TestTxnHandler.deadlockIsDetected() + // to test these changes. + // MySQL and MSSQL use 40001 as the state code for rollback. Postgres uses 40001 and 40P01. + // Oracle seems to return different SQLStates each time, but the message always contains + // "deadlock detected", so I've used that instead. + // Derby and newer MySQL driver use the new SQLTransactionRollbackException + if (dbProduct == null) { + determineDatabaseProduct(conn); + } + if (e instanceof SQLTransactionRollbackException || + ((dbProduct == DatabaseProduct.MYSQL || dbProduct == DatabaseProduct.POSTGRES || + dbProduct == DatabaseProduct.SQLSERVER) && e.getSQLState().equals("40001")) || + (dbProduct == DatabaseProduct.POSTGRES && e.getSQLState().equals("40P01")) || + (dbProduct == DatabaseProduct.ORACLE && (e.getMessage().contains("deadlock detected")))) { if (deadlockCnt++ < ALLOWED_REPEATED_DEADLOCKS) { LOG.warn("Deadlock detected in " + caller + ", trying again."); throw new DeadlockException(); diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandler.java b/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandler.java index 787952e59a8a..446b1741ada9 100644 --- a/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandler.java +++ b/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandler.java @@ -20,13 +20,18 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.metastore.MetaStoreThread; import org.apache.hadoop.hive.metastore.api.*; import org.apache.log4j.Level; import org.apache.log4j.LogManager; import org.junit.After; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -1082,6 +1087,115 @@ public void showLocks() throws Exception { for (int i = 0; i < saw.length; i++) assertTrue("Didn't see lock id " + i, saw[i]); } + @Test + @Ignore + public void deadlockDetected() throws Exception { + Connection conn = txnHandler.getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Statement stmt = conn.createStatement(); + long now = txnHandler.getDbTime(conn); + stmt.executeUpdate("insert into TXNS (txn_id, txn_state, txn_started, txn_last_heartbeat, " + + "txn_user, txn_host) values (1, 'o', " + now + ", " + now + ", 'shagy', " + + "'scooby.com')"); + stmt.executeUpdate("insert into HIVE_LOCKS (hl_lock_ext_id, hl_lock_int_id, hl_txnid, " + + "hl_db, hl_table, hl_partition, hl_lock_state, hl_lock_type, hl_last_heartbeat, " + + "hl_user, hl_host) values (1, 1, 1, 'mydb', 'mytable', 'mypartition', '" + + txnHandler.LOCK_WAITING + "', '" + txnHandler.LOCK_EXCLUSIVE + "', " + now + ", 'fred', " + + "'scooby.com')"); + conn.commit(); + txnHandler.closeDbConn(conn); + + final MetaStoreThread.BooleanPointer sawDeadlock = new MetaStoreThread.BooleanPointer(); + + final Connection conn1 = txnHandler.getDbConn(Connection.TRANSACTION_SERIALIZABLE); + final Connection conn2 = txnHandler.getDbConn(Connection.TRANSACTION_SERIALIZABLE); + try { + + for (int i = 0; i < 5; i++) { + Thread t1 = new Thread() { + @Override + public void run() { + try { + try { + updateTxns(conn1); + updateLocks(conn1); + Thread.sleep(1000); + conn1.commit(); + LOG.debug("no exception, no deadlock"); + } catch (SQLException e) { + try { + txnHandler.detectDeadlock(conn1, e, "thread t1"); + LOG.debug("Got an exception, but not a deadlock, SQLState is " + + e.getSQLState() + " class of exception is " + e.getClass().getName() + + " msg is <" + e.getMessage() + ">"); + } catch (TxnHandler.DeadlockException de) { + LOG.debug("Forced a deadlock, SQLState is " + e.getSQLState() + " class of " + + "exception is " + e.getClass().getName() + " msg is <" + e + .getMessage() + ">"); + sawDeadlock.boolVal = true; + } + } + conn1.rollback(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + }; + + Thread t2 = new Thread() { + @Override + public void run() { + try { + try { + updateLocks(conn2); + updateTxns(conn2); + Thread.sleep(1000); + conn2.commit(); + LOG.debug("no exception, no deadlock"); + } catch (SQLException e) { + try { + txnHandler.detectDeadlock(conn2, e, "thread t2"); + LOG.debug("Got an exception, but not a deadlock, SQLState is " + + e.getSQLState() + " class of exception is " + e.getClass().getName() + + " msg is <" + e.getMessage() + ">"); + } catch (TxnHandler.DeadlockException de) { + LOG.debug("Forced a deadlock, SQLState is " + e.getSQLState() + " class of " + + "exception is " + e.getClass().getName() + " msg is <" + e + .getMessage() + ">"); + sawDeadlock.boolVal = true; + } + } + conn2.rollback(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + }; + + t1.start(); + t2.start(); + t1.join(); + t2.join(); + if (sawDeadlock.boolVal) break; + } + assertTrue(sawDeadlock.boolVal); + } finally { + conn1.rollback(); + txnHandler.closeDbConn(conn1); + conn2.rollback(); + txnHandler.closeDbConn(conn2); + } + } + + private void updateTxns(Connection conn) throws SQLException { + Statement stmt = conn.createStatement(); + stmt.executeUpdate("update TXNS set txn_last_heartbeat = txn_last_heartbeat + 1"); + } + + private void updateLocks(Connection conn) throws SQLException { + Statement stmt = conn.createStatement(); + stmt.executeUpdate("update HIVE_LOCKS set hl_last_heartbeat = hl_last_heartbeat + 1"); + } + @Before public void setUp() throws Exception { TxnDbUtil.prepDb(); From 880b05fc4c063f7c814336445a17ddc2ec60a609 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Thu, 6 Nov 2014 21:51:17 +0000 Subject: [PATCH 260/339] HIVE-8737: setEnv is not portable, which fails TestCliDriverMethods#testprocessInitFiles on Windows (Xiaobing Zhou via Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637234 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/cli/TestCliDriverMethods.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java b/cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java index 63668bca8a99..2126cf23cc9a 100644 --- a/cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java +++ b/cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java @@ -58,6 +58,7 @@ import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; import org.apache.hadoop.hive.service.HiveClient; import org.apache.hadoop.hive.service.HiveServerException; +import org.apache.hadoop.util.Shell; import org.apache.thrift.TException; @@ -375,8 +376,14 @@ public void testprocessInitFiles() throws Exception { } } - private static void setEnv(String key, String value) throws Exception { + if (Shell.WINDOWS) + setEnvWindows(key, value); + else + setEnvLinux(key, value); + } + + private static void setEnvLinux(String key, String value) throws Exception { Class[] classes = Collections.class.getDeclaredClasses(); Map env = (Map) System.getenv(); for (Class cl : classes) { @@ -394,6 +401,26 @@ private static void setEnv(String key, String value) throws Exception { } } + private static void setEnvWindows(String key, String value) throws Exception { + Class processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment"); + Field theEnvironmentField = processEnvironmentClass.getDeclaredField("theEnvironment"); + theEnvironmentField.setAccessible(true); + Map env = (Map) theEnvironmentField.get(null); + if (value == null) { + env.remove(key); + } else { + env.put(key, value); + } + + Field theCaseInsensitiveEnvironmentField = processEnvironmentClass.getDeclaredField("theCaseInsensitiveEnvironment"); + theCaseInsensitiveEnvironmentField.setAccessible(true); + Map cienv = (Map) theCaseInsensitiveEnvironmentField.get(null); + if (value == null) { + cienv.remove(key); + } else { + cienv.put(key, value); + } + } private static class FakeCliDriver extends CliDriver { From aebbe11c0e7f2d6bf9b63a8591c48b1d639b2184 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Fri, 7 Nov 2014 01:01:39 +0000 Subject: [PATCH 261/339] HIVE-8735: statistics update can fail due to long paths (Sergey Shelukhin reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637280 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/stats/jdbc/JDBCStatsAggregator.java | 4 +++- .../hive/ql/stats/jdbc/JDBCStatsPublisher.java | 12 ++++++++---- .../ql/stats/jdbc/JDBCStatsSetupConstants.java | 3 +++ .../hive/ql/stats/jdbc/JDBCStatsUtils.java | 17 ++++++++++++++--- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java index b074ca97e894..d6067e7a231f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java @@ -134,6 +134,7 @@ public ResultSet run(PreparedStatement stmt) throws SQLException { } }; + fileID = JDBCStatsUtils.truncateRowId(fileID); String keyPrefix = Utilities.escapeSqlLike(fileID) + "%"; for (int failures = 0;; failures++) { try { @@ -147,7 +148,7 @@ public ResultSet run(PreparedStatement stmt) throws SQLException { if (result.next()) { retval = result.getLong(1); } else { - LOG.warn("Warning. Nothing published. Nothing aggregated."); + LOG.warn("Nothing published. Nothing aggregated."); return null; } return Long.toString(retval); @@ -217,6 +218,7 @@ public Void run(PreparedStatement stmt) throws SQLException { }; try { + rowID = JDBCStatsUtils.truncateRowId(rowID); String keyPrefix = Utilities.escapeSqlLike(rowID) + "%"; PreparedStatement delStmt = Utilities.prepareWithRetry(conn, diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java index 5e317ab9e3b0..c1621e029b02 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java @@ -139,7 +139,11 @@ public boolean publishStat(String fileID, Map stats) { + " stats: " + JDBCStatsUtils.getSupportedStatistics()); return false; } - LOG.info("Stats publishing for key " + fileID); + String rowId = JDBCStatsUtils.truncateRowId(fileID); + if (LOG.isInfoEnabled()) { + String truncateSuffix = (rowId != fileID) ? " (from " + fileID + ")" : ""; // object equality + LOG.info("Stats publishing for key " + rowId + truncateSuffix); + } Utilities.SQLCommand execUpdate = new Utilities.SQLCommand() { @Override @@ -153,7 +157,7 @@ public Void run(PreparedStatement stmt) throws SQLException { for (int failures = 0;; failures++) { try { - insStmt.setString(1, fileID); + insStmt.setString(1, rowId); for (int i = 0; i < JDBCStatsUtils.getSupportedStatistics().size(); i++) { insStmt.setString(i + 2, stats.get(supportedStatistics.get(i))); } @@ -172,10 +176,10 @@ public Void run(PreparedStatement stmt) throws SQLException { for (i = 0; i < JDBCStatsUtils.getSupportedStatistics().size(); i++) { updStmt.setString(i + 1, stats.get(supportedStatistics.get(i))); } - updStmt.setString(supportedStatistics.size() + 1, fileID); + updStmt.setString(supportedStatistics.size() + 1, rowId); updStmt.setString(supportedStatistics.size() + 2, stats.get(JDBCStatsUtils.getBasicStat())); - updStmt.setString(supportedStatistics.size() + 3, fileID); + updStmt.setString(supportedStatistics.size() + 3, rowId); Utilities.executeWithRetry(execUpdate, updStmt, waitWindow, maxRetries); return true; } catch (SQLRecoverableException ue) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsSetupConstants.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsSetupConstants.java index 70badf228d06..b999f8ae9948 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsSetupConstants.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsSetupConstants.java @@ -34,4 +34,7 @@ public final class JDBCStatsSetupConstants { public static final String PART_STAT_RAW_DATA_SIZE_COLUMN_NAME = "RAW_DATA_SIZE"; + // 255 is an old value that we will keep for now; it can be increased to 4000; limits are + // MySQL - 65535, SQL Server - 8000, Oracle - 4000, Derby - 32762, Postgres - large. + public static final int ID_COLUMN_VARCHAR_SIZE = 255; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java index 4625d277bfc5..383314bdd99d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java @@ -24,6 +24,7 @@ import java.util.Map; import org.apache.hadoop.hive.common.StatsSetupConst; +import org.apache.hadoop.util.hash.MurmurHash; public class JDBCStatsUtils { @@ -124,9 +125,10 @@ public static String getBasicStat() { * Prepares CREATE TABLE query */ public static String getCreate(String comment) { - String create = "CREATE TABLE /* " + comment + " */ " + JDBCStatsUtils.getStatTableName() + - " (" + getTimestampColumnName() + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP, " + - JDBCStatsUtils.getIdColumnName() + " VARCHAR(255) PRIMARY KEY "; + String create = "CREATE TABLE /* " + comment + " */ " + JDBCStatsUtils.getStatTableName() + + " (" + getTimestampColumnName() + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP, " + + JDBCStatsUtils.getIdColumnName() + " VARCHAR(" + + JDBCStatsSetupConstants.ID_COLUMN_VARCHAR_SIZE + ") PRIMARY KEY "; for (int i = 0; i < supportedStats.size(); i++) { create += ", " + getStatColumnName(supportedStats.get(i)) + " BIGINT "; } @@ -191,4 +193,13 @@ public static String getDeleteAggr(String rowID, String comment) { return delete; } + /** + * Make sure the row ID fits into the row ID column in the table. + * @param rowId Row ID. + * @return Resulting row ID truncated to correct length, if necessary. + */ + public static String truncateRowId(String rowId) { + return (rowId.length() <= JDBCStatsSetupConstants.ID_COLUMN_VARCHAR_SIZE) + ? rowId : Integer.toHexString(MurmurHash.getInstance().hash(rowId.getBytes())); + } } From 96086eb3e4c86c32b45b0618546033dd5f6d50b0 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 7 Nov 2014 07:41:28 +0000 Subject: [PATCH 262/339] HIVE-8732: ORC string statistics are not merged correctly (Owen O'Malley, reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637303 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/io/orc/OrcProto.java | 234 +++++++++++++++++- .../hive/ql/io/orc/ColumnStatisticsImpl.java | 12 +- .../hadoop/hive/ql/io/orc/FileDump.java | 2 + .../apache/hadoop/hive/ql/io/orc/OrcFile.java | 20 ++ .../hadoop/hive/ql/io/orc/OrcInputFormat.java | 15 +- .../hadoop/hive/ql/io/orc/OrcNewSplit.java | 6 +- .../hadoop/hive/ql/io/orc/OrcSplit.java | 6 +- .../apache/hadoop/hive/ql/io/orc/Reader.java | 10 + .../hadoop/hive/ql/io/orc/ReaderImpl.java | 52 +++- .../hadoop/hive/ql/io/orc/WriterImpl.java | 3 +- .../hadoop/hive/ql/io/orc/orc_proto.proto | 7 + .../hive/ql/io/orc/TestColumnStatistics.java | 176 +++++++++++++ .../hive/ql/io/orc/TestInputOutputFormat.java | 6 +- .../orc-file-dump-dictionary-threshold.out | 3 +- ql/src/test/resources/orc-file-dump.out | 3 +- .../clientpositive/alter_merge_orc.q.out | 24 +- .../alter_merge_stats_orc.q.out | 22 +- .../clientpositive/annotate_stats_part.q.out | 54 ++-- .../clientpositive/annotate_stats_table.q.out | 24 +- .../dynpart_sort_opt_vectorization.q.out | 16 +- .../dynpart_sort_optimization2.q.out | 8 +- .../extrapolate_part_stats_full.q.out | Bin 35875 -> 35875 bytes .../extrapolate_part_stats_partial.q.out | Bin 90774 -> 90774 bytes .../results/clientpositive/orc_analyze.q.out | 22 +- .../clientpositive/tez/alter_merge_orc.q.out | 24 +- .../tez/alter_merge_stats_orc.q.out | 22 +- .../tez/dynpart_sort_opt_vectorization.q.out | 16 +- .../tez/dynpart_sort_optimization2.q.out | 8 +- .../clientpositive/tez/orc_analyze.q.out | 22 +- .../tez/vector_decimal_10_0.q.out | 10 +- .../clientpositive/tez/vectorized_ptf.q.out | 108 ++++---- .../clientpositive/vectorized_ptf.q.out | 104 ++++---- 32 files changed, 764 insertions(+), 275 deletions(-) create mode 100644 ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestColumnStatistics.java diff --git a/ql/src/gen/protobuf/gen-java/org/apache/hadoop/hive/ql/io/orc/OrcProto.java b/ql/src/gen/protobuf/gen-java/org/apache/hadoop/hive/ql/io/orc/OrcProto.java index 2ba283863483..662e0580edfc 100644 --- a/ql/src/gen/protobuf/gen-java/org/apache/hadoop/hive/ql/io/orc/OrcProto.java +++ b/ql/src/gen/protobuf/gen-java/org/apache/hadoop/hive/ql/io/orc/OrcProto.java @@ -16333,14 +16333,32 @@ public interface PostScriptOrBuilder // repeated uint32 version = 4 [packed = true]; /** * repeated uint32 version = 4 [packed = true]; + * + *
+     * the version of the file format
+     *   [0, 11] = Hive 0.11
+     *   [0, 12] = Hive 0.12
+     * 
*/ java.util.List getVersionList(); /** * repeated uint32 version = 4 [packed = true]; + * + *
+     * the version of the file format
+     *   [0, 11] = Hive 0.11
+     *   [0, 12] = Hive 0.12
+     * 
*/ int getVersionCount(); /** * repeated uint32 version = 4 [packed = true]; + * + *
+     * the version of the file format
+     *   [0, 11] = Hive 0.11
+     *   [0, 12] = Hive 0.12
+     * 
*/ int getVersion(int index); @@ -16354,6 +16372,28 @@ public interface PostScriptOrBuilder */ long getMetadataLength(); + // optional uint32 writerVersion = 6; + /** + * optional uint32 writerVersion = 6; + * + *
+     * Version of the writer:
+     *   0 (or missing) = original
+     *   1 = HIVE-8732 fixed
+     * 
+ */ + boolean hasWriterVersion(); + /** + * optional uint32 writerVersion = 6; + * + *
+     * Version of the writer:
+     *   0 (or missing) = original
+     *   1 = HIVE-8732 fixed
+     * 
+ */ + int getWriterVersion(); + // optional string magic = 8000; /** * optional string magic = 8000; @@ -16483,8 +16523,13 @@ private PostScript( metadataLength_ = input.readUInt64(); break; } - case 64002: { + case 48: { bitField0_ |= 0x00000010; + writerVersion_ = input.readUInt32(); + break; + } + case 64002: { + bitField0_ |= 0x00000020; magic_ = input.readBytes(); break; } @@ -16584,6 +16629,12 @@ public long getCompressionBlockSize() { private java.util.List version_; /** * repeated uint32 version = 4 [packed = true]; + * + *
+     * the version of the file format
+     *   [0, 11] = Hive 0.11
+     *   [0, 12] = Hive 0.12
+     * 
*/ public java.util.List getVersionList() { @@ -16591,12 +16642,24 @@ public long getCompressionBlockSize() { } /** * repeated uint32 version = 4 [packed = true]; + * + *
+     * the version of the file format
+     *   [0, 11] = Hive 0.11
+     *   [0, 12] = Hive 0.12
+     * 
*/ public int getVersionCount() { return version_.size(); } /** * repeated uint32 version = 4 [packed = true]; + * + *
+     * the version of the file format
+     *   [0, 11] = Hive 0.11
+     *   [0, 12] = Hive 0.12
+     * 
*/ public int getVersion(int index) { return version_.get(index); @@ -16619,6 +16682,34 @@ public long getMetadataLength() { return metadataLength_; } + // optional uint32 writerVersion = 6; + public static final int WRITERVERSION_FIELD_NUMBER = 6; + private int writerVersion_; + /** + * optional uint32 writerVersion = 6; + * + *
+     * Version of the writer:
+     *   0 (or missing) = original
+     *   1 = HIVE-8732 fixed
+     * 
+ */ + public boolean hasWriterVersion() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional uint32 writerVersion = 6; + * + *
+     * Version of the writer:
+     *   0 (or missing) = original
+     *   1 = HIVE-8732 fixed
+     * 
+ */ + public int getWriterVersion() { + return writerVersion_; + } + // optional string magic = 8000; public static final int MAGIC_FIELD_NUMBER = 8000; private java.lang.Object magic_; @@ -16630,7 +16721,7 @@ public long getMetadataLength() { * */ public boolean hasMagic() { - return ((bitField0_ & 0x00000010) == 0x00000010); + return ((bitField0_ & 0x00000020) == 0x00000020); } /** * optional string magic = 8000; @@ -16680,6 +16771,7 @@ private void initFields() { compressionBlockSize_ = 0L; version_ = java.util.Collections.emptyList(); metadataLength_ = 0L; + writerVersion_ = 0; magic_ = ""; } private byte memoizedIsInitialized = -1; @@ -16714,6 +16806,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeUInt64(5, metadataLength_); } if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeUInt32(6, writerVersion_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { output.writeBytes(8000, getMagicBytes()); } getUnknownFields().writeTo(output); @@ -16756,6 +16851,10 @@ public int getSerializedSize() { .computeUInt64Size(5, metadataLength_); } if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(6, writerVersion_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += com.google.protobuf.CodedOutputStream .computeBytesSize(8000, getMagicBytes()); } @@ -16889,8 +16988,10 @@ public Builder clear() { bitField0_ = (bitField0_ & ~0x00000008); metadataLength_ = 0L; bitField0_ = (bitField0_ & ~0x00000010); - magic_ = ""; + writerVersion_ = 0; bitField0_ = (bitField0_ & ~0x00000020); + magic_ = ""; + bitField0_ = (bitField0_ & ~0x00000040); return this; } @@ -16943,6 +17044,10 @@ public org.apache.hadoop.hive.ql.io.orc.OrcProto.PostScript buildPartial() { if (((from_bitField0_ & 0x00000020) == 0x00000020)) { to_bitField0_ |= 0x00000010; } + result.writerVersion_ = writerVersion_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000020; + } result.magic_ = magic_; result.bitField0_ = to_bitField0_; onBuilt(); @@ -16982,8 +17087,11 @@ public Builder mergeFrom(org.apache.hadoop.hive.ql.io.orc.OrcProto.PostScript ot if (other.hasMetadataLength()) { setMetadataLength(other.getMetadataLength()); } + if (other.hasWriterVersion()) { + setWriterVersion(other.getWriterVersion()); + } if (other.hasMagic()) { - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000040; magic_ = other.magic_; onChanged(); } @@ -17126,6 +17234,12 @@ private void ensureVersionIsMutable() { } /** * repeated uint32 version = 4 [packed = true]; + * + *
+       * the version of the file format
+       *   [0, 11] = Hive 0.11
+       *   [0, 12] = Hive 0.12
+       * 
*/ public java.util.List getVersionList() { @@ -17133,18 +17247,36 @@ private void ensureVersionIsMutable() { } /** * repeated uint32 version = 4 [packed = true]; + * + *
+       * the version of the file format
+       *   [0, 11] = Hive 0.11
+       *   [0, 12] = Hive 0.12
+       * 
*/ public int getVersionCount() { return version_.size(); } /** * repeated uint32 version = 4 [packed = true]; + * + *
+       * the version of the file format
+       *   [0, 11] = Hive 0.11
+       *   [0, 12] = Hive 0.12
+       * 
*/ public int getVersion(int index) { return version_.get(index); } /** * repeated uint32 version = 4 [packed = true]; + * + *
+       * the version of the file format
+       *   [0, 11] = Hive 0.11
+       *   [0, 12] = Hive 0.12
+       * 
*/ public Builder setVersion( int index, int value) { @@ -17155,6 +17287,12 @@ public Builder setVersion( } /** * repeated uint32 version = 4 [packed = true]; + * + *
+       * the version of the file format
+       *   [0, 11] = Hive 0.11
+       *   [0, 12] = Hive 0.12
+       * 
*/ public Builder addVersion(int value) { ensureVersionIsMutable(); @@ -17164,6 +17302,12 @@ public Builder addVersion(int value) { } /** * repeated uint32 version = 4 [packed = true]; + * + *
+       * the version of the file format
+       *   [0, 11] = Hive 0.11
+       *   [0, 12] = Hive 0.12
+       * 
*/ public Builder addAllVersion( java.lang.Iterable values) { @@ -17174,6 +17318,12 @@ public Builder addAllVersion( } /** * repeated uint32 version = 4 [packed = true]; + * + *
+       * the version of the file format
+       *   [0, 11] = Hive 0.11
+       *   [0, 12] = Hive 0.12
+       * 
*/ public Builder clearVersion() { version_ = java.util.Collections.emptyList(); @@ -17215,6 +17365,63 @@ public Builder clearMetadataLength() { return this; } + // optional uint32 writerVersion = 6; + private int writerVersion_ ; + /** + * optional uint32 writerVersion = 6; + * + *
+       * Version of the writer:
+       *   0 (or missing) = original
+       *   1 = HIVE-8732 fixed
+       * 
+ */ + public boolean hasWriterVersion() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * optional uint32 writerVersion = 6; + * + *
+       * Version of the writer:
+       *   0 (or missing) = original
+       *   1 = HIVE-8732 fixed
+       * 
+ */ + public int getWriterVersion() { + return writerVersion_; + } + /** + * optional uint32 writerVersion = 6; + * + *
+       * Version of the writer:
+       *   0 (or missing) = original
+       *   1 = HIVE-8732 fixed
+       * 
+ */ + public Builder setWriterVersion(int value) { + bitField0_ |= 0x00000020; + writerVersion_ = value; + onChanged(); + return this; + } + /** + * optional uint32 writerVersion = 6; + * + *
+       * Version of the writer:
+       *   0 (or missing) = original
+       *   1 = HIVE-8732 fixed
+       * 
+ */ + public Builder clearWriterVersion() { + bitField0_ = (bitField0_ & ~0x00000020); + writerVersion_ = 0; + onChanged(); + return this; + } + // optional string magic = 8000; private java.lang.Object magic_ = ""; /** @@ -17225,7 +17432,7 @@ public Builder clearMetadataLength() { * */ public boolean hasMagic() { - return ((bitField0_ & 0x00000020) == 0x00000020); + return ((bitField0_ & 0x00000040) == 0x00000040); } /** * optional string magic = 8000; @@ -17277,7 +17484,7 @@ public Builder setMagic( if (value == null) { throw new NullPointerException(); } - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000040; magic_ = value; onChanged(); return this; @@ -17290,7 +17497,7 @@ public Builder setMagic( * */ public Builder clearMagic() { - bitField0_ = (bitField0_ & ~0x00000020); + bitField0_ = (bitField0_ & ~0x00000040); magic_ = getDefaultInstance().getMagic(); onChanged(); return this; @@ -17307,7 +17514,7 @@ public Builder setMagicBytes( if (value == null) { throw new NullPointerException(); } - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000040; magic_ = value; onChanged(); return this; @@ -17513,13 +17720,14 @@ public Builder setMagicBytes( "em\022\024\n\014numberOfRows\030\006 \001(\004\022F\n\nstatistics\030\007" + " \003(\01322.org.apache.hadoop.hive.ql.io.orc." + "ColumnStatistics\022\026\n\016rowIndexStride\030\010 \001(\r" + - "\"\305\001\n\nPostScript\022\024\n\014footerLength\030\001 \001(\004\022F\n" + + "\"\334\001\n\nPostScript\022\024\n\014footerLength\030\001 \001(\004\022F\n" + "\013compression\030\002 \001(\01621.org.apache.hadoop.h" + "ive.ql.io.orc.CompressionKind\022\034\n\024compres" + "sionBlockSize\030\003 \001(\004\022\023\n\007version\030\004 \003(\rB\002\020\001" + - "\022\026\n\016metadataLength\030\005 \001(\004\022\016\n\005magic\030\300> \001(\t", - "*:\n\017CompressionKind\022\010\n\004NONE\020\000\022\010\n\004ZLIB\020\001\022" + - "\n\n\006SNAPPY\020\002\022\007\n\003LZO\020\003" + "\022\026\n\016metadataLength\030\005 \001(\004\022\025\n\rwriterVersio", + "n\030\006 \001(\r\022\016\n\005magic\030\300> \001(\t*:\n\017CompressionKi" + + "nd\022\010\n\004NONE\020\000\022\010\n\004ZLIB\020\001\022\n\n\006SNAPPY\020\002\022\007\n\003LZ" + + "O\020\003" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -17651,7 +17859,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_org_apache_hadoop_hive_ql_io_orc_PostScript_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_org_apache_hadoop_hive_ql_io_orc_PostScript_descriptor, - new java.lang.String[] { "FooterLength", "Compression", "CompressionBlockSize", "Version", "MetadataLength", "Magic", }); + new java.lang.String[] { "FooterLength", "Compression", "CompressionBlockSize", "Version", "MetadataLength", "WriterVersion", "Magic", }); return null; } }; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java index 65b5ca890faa..3235b0e24329 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java @@ -394,7 +394,8 @@ void merge(ColumnStatisticsImpl other) { } else if (str.minimum != null) { if (minimum.compareTo(str.minimum) > 0) { minimum = new Text(str.getMinimum()); - } else if (maximum.compareTo(str.maximum) < 0) { + } + if (maximum.compareTo(str.maximum) < 0) { maximum = new Text(str.getMaximum()); } } @@ -563,7 +564,8 @@ void merge(ColumnStatisticsImpl other) { } else if (dec.minimum != null) { if (minimum.compareTo(dec.minimum) > 0) { minimum = dec.minimum; - } else if (maximum.compareTo(dec.maximum) < 0) { + } + if (maximum.compareTo(dec.maximum) < 0) { maximum = dec.maximum; } if (sum == null || dec.sum == null) { @@ -671,7 +673,8 @@ void merge(ColumnStatisticsImpl other) { } else if (dateStats.minimum != null) { if (minimum > dateStats.minimum) { minimum = dateStats.minimum; - } else if (maximum < dateStats.maximum) { + } + if (maximum < dateStats.maximum) { maximum = dateStats.maximum; } } @@ -767,7 +770,8 @@ void merge(ColumnStatisticsImpl other) { } else if (timestampStats.minimum != null) { if (minimum > timestampStats.minimum) { minimum = timestampStats.minimum; - } else if (maximum < timestampStats.maximum) { + } + if (maximum < timestampStats.maximum) { maximum = timestampStats.maximum; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/FileDump.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/FileDump.java index 6b230e9a6b9a..845e2e68651e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/FileDump.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/FileDump.java @@ -65,6 +65,8 @@ public static void main(String[] args) throws Exception { System.out.println("Structure for " + filename); Path path = new Path(filename); Reader reader = OrcFile.createReader(path, OrcFile.readerOptions(conf)); + System.out.println("File Version: " + reader.getFileVersion().getName() + + " with " + reader.getWriterVersion()); RecordReaderImpl rows = (RecordReaderImpl) reader.rows(); System.out.println("Rows: " + reader.getNumberOfRows()); System.out.println("Compression: " + reader.getCompression()); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFile.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFile.java index 39326c96d48d..b46937caa112 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFile.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFile.java @@ -97,6 +97,26 @@ public int getMinor() { } } + /** + * Records the version of the writer in terms of which bugs have been fixed. + * For bugs in the writer, but the old readers already read the new data + * correctly, bump this version instead of the Version. + */ + public static enum WriterVersion { + ORIGINAL(0), + HIVE_8732(1); // corrupted stripe/file maximum column statistics + + private final int id; + + public int getId() { + return id; + } + + private WriterVersion(int id) { + this.id = id; + } + } + public static enum EncodingStrategy { SPEED, COMPRESSION; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java index 9340ce6db9f0..3ed6be21b737 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java @@ -630,6 +630,7 @@ static final class SplitGenerator implements Runnable { private final boolean isOriginal; private final List deltas; private final boolean hasBase; + private OrcFile.WriterVersion writerVersion; SplitGenerator(Context context, FileSystem fs, FileStatus file, FileInfo fileInfo, @@ -775,7 +776,9 @@ public void run() { Reader.Options options = new Reader.Options(); setIncludedColumns(options, types, context.conf, isOriginal); setSearchArgument(options, types, context.conf, isOriginal); - if (options.getSearchArgument() != null) { + // only do split pruning if HIVE-8732 has been fixed in the writer + if (options.getSearchArgument() != null && + writerVersion != OrcFile.WriterVersion.ORIGINAL) { SearchArgument sarg = options.getSearchArgument(); List sargLeaves = sarg.getLeaves(); List stripeStats = metadata.getStripeStatistics(); @@ -866,6 +869,7 @@ private void populateAndCacheStripeDetails() { fileMetaInfo = fileInfo.fileMetaInfo; metadata = fileInfo.metadata; types = fileInfo.types; + writerVersion = fileInfo.writerVersion; // For multiple runs, in case sendSplitsInFooter changes if (fileMetaInfo == null && context.footerInSplits) { orcReader = OrcFile.createReader(file.getPath(), @@ -873,6 +877,7 @@ private void populateAndCacheStripeDetails() { fileInfo.fileMetaInfo = ((ReaderImpl) orcReader).getFileMetaInfo(); fileInfo.metadata = orcReader.getMetadata(); fileInfo.types = orcReader.getTypes(); + fileInfo.writerVersion = orcReader.getWriterVersion(); } } else { orcReader = OrcFile.createReader(file.getPath(), @@ -880,13 +885,14 @@ private void populateAndCacheStripeDetails() { stripes = orcReader.getStripes(); metadata = orcReader.getMetadata(); types = orcReader.getTypes(); + writerVersion = orcReader.getWriterVersion(); fileMetaInfo = context.footerInSplits ? ((ReaderImpl) orcReader).getFileMetaInfo() : null; if (context.cacheStripeDetails) { // Populate into cache. Context.footerCache.put(file.getPath(), new FileInfo(file.getModificationTime(), file.getLen(), stripes, - metadata, types, fileMetaInfo)); + metadata, types, fileMetaInfo, writerVersion)); } } } catch (Throwable th) { @@ -981,18 +987,21 @@ private static class FileInfo { ReaderImpl.FileMetaInfo fileMetaInfo; Metadata metadata; List types; + private OrcFile.WriterVersion writerVersion; FileInfo(long modificationTime, long size, List stripeInfos, Metadata metadata, List types, - ReaderImpl.FileMetaInfo fileMetaInfo) { + ReaderImpl.FileMetaInfo fileMetaInfo, + OrcFile.WriterVersion writerVersion) { this.modificationTime = modificationTime; this.size = size; this.stripeInfos = stripeInfos; this.fileMetaInfo = fileMetaInfo; this.metadata = metadata; this.types = types; + this.writerVersion = writerVersion; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcNewSplit.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcNewSplit.java index edf5e8e41345..da23544d5eeb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcNewSplit.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcNewSplit.java @@ -38,6 +38,7 @@ public class OrcNewSplit extends FileSplit { private boolean isOriginal; private boolean hasBase; private final List deltas = new ArrayList(); + private OrcFile.WriterVersion writerVersion; protected OrcNewSplit(){ //The FileSplit() constructor in hadoop 0.20 and 1.x is package private so can't use it. @@ -83,6 +84,7 @@ public void write(DataOutput out) throws IOException { WritableUtils.writeVInt(out, footerBuff.limit() - footerBuff.position()); out.write(footerBuff.array(), footerBuff.position(), footerBuff.limit() - footerBuff.position()); + WritableUtils.writeVInt(out, fileMetaInfo.writerVersion.getId()); } } @@ -111,9 +113,11 @@ public void readFields(DataInput in) throws IOException { int footerBuffSize = WritableUtils.readVInt(in); ByteBuffer footerBuff = ByteBuffer.allocate(footerBuffSize); in.readFully(footerBuff.array(), 0, footerBuffSize); + OrcFile.WriterVersion writerVersion = + ReaderImpl.getWriterVersion(WritableUtils.readVInt(in)); fileMetaInfo = new ReaderImpl.FileMetaInfo(compressionType, bufferSize, - metadataSize, footerBuff); + metadataSize, footerBuff, writerVersion); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSplit.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSplit.java index 48160c16d540..84192d5bab88 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSplit.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSplit.java @@ -42,6 +42,7 @@ public class OrcSplit extends FileSplit { private boolean isOriginal; private boolean hasBase; private final List deltas = new ArrayList(); + private OrcFile.WriterVersion writerVersion; static final int BASE_FLAG = 4; static final int ORIGINAL_FLAG = 2; @@ -92,6 +93,7 @@ public void write(DataOutput out) throws IOException { WritableUtils.writeVInt(out, footerBuff.limit() - footerBuff.position()); out.write(footerBuff.array(), footerBuff.position(), footerBuff.limit() - footerBuff.position()); + WritableUtils.writeVInt(out, fileMetaInfo.writerVersion.getId()); } } @@ -120,9 +122,11 @@ public void readFields(DataInput in) throws IOException { int footerBuffSize = WritableUtils.readVInt(in); ByteBuffer footerBuff = ByteBuffer.allocate(footerBuffSize); in.readFully(footerBuff.array(), 0, footerBuffSize); + OrcFile.WriterVersion writerVersion = + ReaderImpl.getWriterVersion(WritableUtils.readVInt(in)); fileMetaInfo = new ReaderImpl.FileMetaInfo(compressionType, bufferSize, - metadataSize, footerBuff); + metadataSize, footerBuff, writerVersion); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/Reader.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/Reader.java index df5afd1ca2e3..f85c21b55e1a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/Reader.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/Reader.java @@ -128,6 +128,16 @@ public interface Reader { */ List getTypes(); + /** + * Get the file format version. + */ + OrcFile.Version getFileVersion(); + + /** + * Get the version of the writer of this file. + */ + OrcFile.WriterVersion getWriterVersion(); + /** * Options for creating a RecordReader. */ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ReaderImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ReaderImpl.java index 13f79df00af6..03f808556f54 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ReaderImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ReaderImpl.java @@ -62,6 +62,7 @@ final class ReaderImpl implements Reader { private long deserializedSize = -1; private final Configuration conf; private final List versionList; + private final OrcFile.WriterVersion writerVersion; //serialized footer - Keeping this around for use by getFileMetaInfo() // will help avoid cpu cycles spend in deserializing at cost of increased @@ -181,6 +182,22 @@ public List getTypes() { return footer.getTypesList(); } + @Override + public OrcFile.Version getFileVersion() { + for (OrcFile.Version version: OrcFile.Version.values()) { + if (version.getMajor() == versionList.get(0) && + version.getMinor() == versionList.get(1)) { + return version; + } + } + return OrcFile.Version.V_0_11; + } + + @Override + public OrcFile.WriterVersion getWriterVersion() { + return writerVersion; + } + @Override public int getRowIndexStride() { return footer.getRowIndexStride(); @@ -309,8 +326,22 @@ static void checkOrcVersion(Log log, Path path, List version) { this.footer = rInfo.footer; this.inspector = rInfo.inspector; this.versionList = footerMetaData.versionList; + this.writerVersion = footerMetaData.writerVersion; } + /** + * Get the WriterVersion based on the ORC file postscript. + * @param writerVersion the integer writer version + * @return + */ + static OrcFile.WriterVersion getWriterVersion(int writerVersion) { + for(OrcFile.WriterVersion version: OrcFile.WriterVersion.values()) { + if (version.getId() == writerVersion) { + return version; + } + } + return OrcFile.WriterVersion.ORIGINAL; + } private static FileMetaInfo extractMetaInfoFromFooter(FileSystem fs, Path path, @@ -346,6 +377,12 @@ private static FileMetaInfo extractMetaInfoFromFooter(FileSystem fs, int footerSize = (int) ps.getFooterLength(); int metadataSize = (int) ps.getMetadataLength(); + OrcFile.WriterVersion writerVersion; + if (ps.hasWriterVersion()) { + writerVersion = getWriterVersion(ps.getWriterVersion()); + } else { + writerVersion = OrcFile.WriterVersion.ORIGINAL; + } //check compression codec switch (ps.getCompression()) { @@ -391,7 +428,8 @@ private static FileMetaInfo extractMetaInfoFromFooter(FileSystem fs, (int) ps.getCompressionBlockSize(), (int) ps.getMetadataLength(), buffer, - ps.getVersionList() + ps.getVersionList(), + writerVersion ); } @@ -451,25 +489,29 @@ static class FileMetaInfo{ final int metadataSize; final ByteBuffer footerBuffer; final List versionList; + final OrcFile.WriterVersion writerVersion; FileMetaInfo(String compressionType, int bufferSize, int metadataSize, - ByteBuffer footerBuffer) { - this(compressionType, bufferSize, metadataSize, footerBuffer, null); + ByteBuffer footerBuffer, OrcFile.WriterVersion writerVersion) { + this(compressionType, bufferSize, metadataSize, footerBuffer, null, + writerVersion); } FileMetaInfo(String compressionType, int bufferSize, int metadataSize, - ByteBuffer footerBuffer, List versionList){ + ByteBuffer footerBuffer, List versionList, + OrcFile.WriterVersion writerVersion){ this.compressionType = compressionType; this.bufferSize = bufferSize; this.metadataSize = metadataSize; this.footerBuffer = footerBuffer; this.versionList = versionList; + this.writerVersion = writerVersion; } } public FileMetaInfo getFileMetaInfo(){ return new FileMetaInfo(compressionKind.toString(), bufferSize, - metadataSize, footerByteBuffer, versionList); + metadataSize, footerByteBuffer, versionList, writerVersion); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/WriterImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/WriterImpl.java index 620d4d454779..9e69de6de391 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/WriterImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/WriterImpl.java @@ -2230,7 +2230,8 @@ private int writePostScript(int footerLength, int metadataLength) throws IOExcep .setMetadataLength(metadataLength) .setMagic(OrcFile.MAGIC) .addVersion(version.getMajor()) - .addVersion(version.getMinor()); + .addVersion(version.getMinor()) + .setWriterVersion(OrcFile.WriterVersion.HIVE_8732.getId()); if (compress != CompressionKind.NONE) { builder.setCompressionBlockSize(bufferSize); } diff --git a/ql/src/protobuf/org/apache/hadoop/hive/ql/io/orc/orc_proto.proto b/ql/src/protobuf/org/apache/hadoop/hive/ql/io/orc/orc_proto.proto index 31c49f1d3aec..cbfe57b96170 100644 --- a/ql/src/protobuf/org/apache/hadoop/hive/ql/io/orc/orc_proto.proto +++ b/ql/src/protobuf/org/apache/hadoop/hive/ql/io/orc/orc_proto.proto @@ -191,8 +191,15 @@ message PostScript { optional uint64 footerLength = 1; optional CompressionKind compression = 2; optional uint64 compressionBlockSize = 3; + // the version of the file format + // [0, 11] = Hive 0.11 + // [0, 12] = Hive 0.12 repeated uint32 version = 4 [packed = true]; optional uint64 metadataLength = 5; + // Version of the writer: + // 0 (or missing) = original + // 1 = HIVE-8732 fixed + optional uint32 writerVersion = 6; // Leave this last in the record optional string magic = 8000; } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestColumnStatistics.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestColumnStatistics.java new file mode 100644 index 000000000000..dbd38c8a3008 --- /dev/null +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestColumnStatistics.java @@ -0,0 +1,176 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.io.orc; + +import org.apache.hadoop.hive.common.type.HiveDecimal; +import org.apache.hadoop.hive.serde2.io.DateWritable; +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; +import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; +import org.apache.hadoop.io.Text; +import org.junit.Test; + +import java.sql.Timestamp; + +import static junit.framework.Assert.assertEquals; + +/** + * Test ColumnStatisticsImpl for ORC. + */ +public class TestColumnStatistics { + + @Test + public void testLongMerge() throws Exception { + ObjectInspector inspector = + PrimitiveObjectInspectorFactory.javaIntObjectInspector; + + ColumnStatisticsImpl stats1 = ColumnStatisticsImpl.create(inspector); + ColumnStatisticsImpl stats2 = ColumnStatisticsImpl.create(inspector); + stats1.updateInteger(10); + stats1.updateInteger(10); + stats2.updateInteger(1); + stats2.updateInteger(1000); + stats1.merge(stats2); + IntegerColumnStatistics typed = (IntegerColumnStatistics) stats1; + assertEquals(1, typed.getMinimum()); + assertEquals(1000, typed.getMaximum()); + stats1.reset(); + stats1.updateInteger(-10); + stats1.updateInteger(10000); + stats1.merge(stats2); + assertEquals(-10, typed.getMinimum()); + assertEquals(10000, typed.getMaximum()); + } + + @Test + public void testDoubleMerge() throws Exception { + ObjectInspector inspector = + PrimitiveObjectInspectorFactory.javaDoubleObjectInspector; + + ColumnStatisticsImpl stats1 = ColumnStatisticsImpl.create(inspector); + ColumnStatisticsImpl stats2 = ColumnStatisticsImpl.create(inspector); + stats1.updateDouble(10.0); + stats1.updateDouble(100.0); + stats2.updateDouble(1.0); + stats2.updateDouble(1000.0); + stats1.merge(stats2); + DoubleColumnStatistics typed = (DoubleColumnStatistics) stats1; + assertEquals(1.0, typed.getMinimum(), 0.001); + assertEquals(1000.0, typed.getMaximum(), 0.001); + stats1.reset(); + stats1.updateDouble(-10); + stats1.updateDouble(10000); + stats1.merge(stats2); + assertEquals(-10, typed.getMinimum(), 0.001); + assertEquals(10000, typed.getMaximum(), 0.001); + } + + + @Test + public void testStringMerge() throws Exception { + ObjectInspector inspector = + PrimitiveObjectInspectorFactory.javaStringObjectInspector; + + ColumnStatisticsImpl stats1 = ColumnStatisticsImpl.create(inspector); + ColumnStatisticsImpl stats2 = ColumnStatisticsImpl.create(inspector); + stats1.updateString(new Text("bob")); + stats1.updateString(new Text("david")); + stats1.updateString(new Text("charles")); + stats2.updateString(new Text("anne")); + stats2.updateString(new Text("erin")); + stats1.merge(stats2); + StringColumnStatistics typed = (StringColumnStatistics) stats1; + assertEquals("anne", typed.getMinimum()); + assertEquals("erin", typed.getMaximum()); + stats1.reset(); + stats1.updateString(new Text("aaa")); + stats1.updateString(new Text("zzz")); + stats1.merge(stats2); + assertEquals("aaa", typed.getMinimum()); + assertEquals("zzz", typed.getMaximum()); + } + + @Test + public void testDateMerge() throws Exception { + ObjectInspector inspector = + PrimitiveObjectInspectorFactory.javaDateObjectInspector; + + ColumnStatisticsImpl stats1 = ColumnStatisticsImpl.create(inspector); + ColumnStatisticsImpl stats2 = ColumnStatisticsImpl.create(inspector); + stats1.updateDate(new DateWritable(1000)); + stats1.updateDate(new DateWritable(100)); + stats2.updateDate(new DateWritable(10)); + stats2.updateDate(new DateWritable(2000)); + stats1.merge(stats2); + DateColumnStatistics typed = (DateColumnStatistics) stats1; + assertEquals(new DateWritable(10), typed.getMinimum()); + assertEquals(new DateWritable(2000), typed.getMaximum()); + stats1.reset(); + stats1.updateDate(new DateWritable(-10)); + stats1.updateDate(new DateWritable(10000)); + stats1.merge(stats2); + assertEquals(-10, typed.getMinimum().getDays()); + assertEquals(10000, typed.getMaximum().getDays()); + } + + @Test + public void testTimestampMerge() throws Exception { + ObjectInspector inspector = + PrimitiveObjectInspectorFactory.javaTimestampObjectInspector; + + ColumnStatisticsImpl stats1 = ColumnStatisticsImpl.create(inspector); + ColumnStatisticsImpl stats2 = ColumnStatisticsImpl.create(inspector); + stats1.updateTimestamp(new Timestamp(10)); + stats1.updateTimestamp(new Timestamp(100)); + stats2.updateTimestamp(new Timestamp(1)); + stats2.updateTimestamp(new Timestamp(1000)); + stats1.merge(stats2); + TimestampColumnStatistics typed = (TimestampColumnStatistics) stats1; + assertEquals(1, typed.getMinimum().getTime()); + assertEquals(1000, typed.getMaximum().getTime()); + stats1.reset(); + stats1.updateTimestamp(new Timestamp(-10)); + stats1.updateTimestamp(new Timestamp(10000)); + stats1.merge(stats2); + assertEquals(-10, typed.getMinimum().getTime()); + assertEquals(10000, typed.getMaximum().getTime()); + } + + @Test + public void testDecimalMerge() throws Exception { + ObjectInspector inspector = + PrimitiveObjectInspectorFactory.javaHiveDecimalObjectInspector; + + ColumnStatisticsImpl stats1 = ColumnStatisticsImpl.create(inspector); + ColumnStatisticsImpl stats2 = ColumnStatisticsImpl.create(inspector); + stats1.updateDecimal(HiveDecimal.create(10)); + stats1.updateDecimal(HiveDecimal.create(100)); + stats2.updateDecimal(HiveDecimal.create(1)); + stats2.updateDecimal(HiveDecimal.create(1000)); + stats1.merge(stats2); + DecimalColumnStatistics typed = (DecimalColumnStatistics) stats1; + assertEquals(1, typed.getMinimum().longValue()); + assertEquals(1000, typed.getMaximum().longValue()); + stats1.reset(); + stats1.updateDecimal(HiveDecimal.create(-10)); + stats1.updateDecimal(HiveDecimal.create(10000)); + stats1.merge(stats2); + assertEquals(-10, typed.getMinimum().longValue()); + assertEquals(10000, typed.getMaximum().longValue()); + } +} diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java index 697f59b05dc8..7b7c5cb730da 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java @@ -1620,14 +1620,14 @@ public void testCombinationInputFormatWithAcid() throws Exception { assertEquals("mock:/combinationAcid/p=0/base_0000010/bucket_00000", split.getPath().toString()); assertEquals(0, split.getStart()); - assertEquals(580, split.getLength()); + assertEquals(582, split.getLength()); split = (HiveInputFormat.HiveInputSplit) splits[1]; assertEquals("org.apache.hadoop.hive.ql.io.orc.OrcInputFormat", split.inputFormatClassName()); assertEquals("mock:/combinationAcid/p=0/base_0000010/bucket_00001", split.getPath().toString()); assertEquals(0, split.getStart()); - assertEquals(601, split.getLength()); + assertEquals(603, split.getLength()); CombineHiveInputFormat.CombineHiveInputSplit combineSplit = (CombineHiveInputFormat.CombineHiveInputSplit) splits[2]; assertEquals(BUCKETS, combineSplit.getNumPaths()); @@ -1635,7 +1635,7 @@ public void testCombinationInputFormatWithAcid() throws Exception { assertEquals("mock:/combinationAcid/p=1/00000" + bucket + "_0", combineSplit.getPath(bucket).toString()); assertEquals(0, combineSplit.getOffset(bucket)); - assertEquals(225, combineSplit.getLength(bucket)); + assertEquals(227, combineSplit.getLength(bucket)); } String[] hosts = combineSplit.getLocations(); assertEquals(2, hosts.length); diff --git a/ql/src/test/resources/orc-file-dump-dictionary-threshold.out b/ql/src/test/resources/orc-file-dump-dictionary-threshold.out index 380f0e05a2b2..519fa07694fb 100644 --- a/ql/src/test/resources/orc-file-dump-dictionary-threshold.out +++ b/ql/src/test/resources/orc-file-dump-dictionary-threshold.out @@ -1,4 +1,5 @@ Structure for TestFileDump.testDump.orc +File Version: 0.12 with HIVE_8732 Rows: 21000 Compression: ZLIB Compression size: 10000 @@ -182,6 +183,6 @@ Stripes: Row group index column 3: Entry 0: count: 1000 min: Darkness,-230-368-488-586-862-930-1686-2044-2636-2652-2872-3108-3162-3192-3404-3442-3508-3542-3550-3712-3980-4146-4204-4336-4390-4418-4424-4490-4512-4650-4768-4924-4950-5210-5524-5630-5678-5710-5758-5952-6238-6252-6300-6366-6668-6712-6926-6942-7100-7194-7802-8030-8452-8608-8640-8862-8868-9134-9234-9412-9602-9608-9642-9678-9740-9780-10426-10510-10514-10706-10814-10870-10942-11028-11244-11326-11462-11496-11656-11830-12022-12178-12418-12832-13304-13448-13590-13618-13908-14188-14246-14340-14364-14394-14762-14850-14964-15048-15494-15674-15726-16006-16056-16180-16304-16332-16452-16598-16730-16810-16994-17210-17268-17786-17962-18214-18444-18446-18724-18912-18952-19164-19348-19400-19546-19776-19896-20084 max: worst-54-290-346-648-908-996-1038-1080-1560-1584-1620-1744-1770-1798-1852-1966-2162-2244-2286-2296-2534-2660-3114-3676-3788-4068-4150-4706-4744-5350-5420-5582-5696-5726-6006-6020-6024-6098-6184-6568-6636-6802-6994-7004-7318-7498-7758-7780-7798-7920-7952-7960-7988-8232-8256-8390-8416-8478-8620-8840-8984-9038-9128-9236-9248-9344-9594-9650-9714-9928-9938-10178-10368-10414-10502-10732-10876-11008-11158-11410-11722-11836-11964-12054-12096-12126-12136-12202-12246-12298-12616-12774-12782-12790-12802-12976-13216-13246-13502-13766-14454-14974-15004-15124-15252-15294-15356-15530-15610-16316-16936-17024-17122-17214-17310-17528-17682-17742-17870-17878-18010-18410-18524-18788-19204-19254-19518-19596-19786-19874-19904-20390-20752-20936 positions: 0,0,0,0,0 -File length: 2033557 bytes +File length: 2033559 bytes Padding length: 0 bytes Padding ratio: 0% diff --git a/ql/src/test/resources/orc-file-dump.out b/ql/src/test/resources/orc-file-dump.out index d67b53a9310d..d0cb1be0d59a 100644 --- a/ql/src/test/resources/orc-file-dump.out +++ b/ql/src/test/resources/orc-file-dump.out @@ -1,4 +1,5 @@ Structure for TestFileDump.testDump.orc +File Version: 0.12 with HIVE_8732 Rows: 21000 Compression: ZLIB Compression size: 10000 @@ -187,6 +188,6 @@ Stripes: Row group index column 3: Entry 0: count: 1000 min: Darkness, max: worst positions: 0,0,0 -File length: 270760 bytes +File length: 270762 bytes Padding length: 0 bytes Padding ratio: 0% diff --git a/ql/src/test/results/clientpositive/alter_merge_orc.q.out b/ql/src/test/results/clientpositive/alter_merge_orc.q.out index 78f40f4e0320..22914a8f04c4 100644 --- a/ql/src/test/results/clientpositive/alter_merge_orc.q.out +++ b/ql/src/test/results/clientpositive/alter_merge_orc.q.out @@ -48,9 +48,9 @@ columns:struct columns { i32 key, string value} partitioned:false partitionColumns: totalNumberFiles:3 -totalFileSize:7488 -maxFileSize:2496 -minFileSize:2496 +totalFileSize:7494 +maxFileSize:2498 +minFileSize:2498 #### A masked pattern was here #### PREHOOK: query: select count(1) from src_orc_merge_test @@ -91,9 +91,9 @@ columns:struct columns { i32 key, string value} partitioned:false partitionColumns: totalNumberFiles:1 -totalFileSize:7167 -maxFileSize:7167 -minFileSize:7167 +totalFileSize:7169 +maxFileSize:7169 +minFileSize:7169 #### A masked pattern was here #### PREHOOK: query: select count(1) from src_orc_merge_test @@ -171,9 +171,9 @@ columns:struct columns { i32 key, string value} partitioned:true partitionColumns:struct partition_columns { string ds} totalNumberFiles:3 -totalFileSize:7488 -maxFileSize:2496 -minFileSize:2496 +totalFileSize:7494 +maxFileSize:2498 +minFileSize:2498 #### A masked pattern was here #### PREHOOK: query: select count(1) from src_orc_merge_test_part @@ -218,9 +218,9 @@ columns:struct columns { i32 key, string value} partitioned:true partitionColumns:struct partition_columns { string ds} totalNumberFiles:1 -totalFileSize:7167 -maxFileSize:7167 -minFileSize:7167 +totalFileSize:7169 +maxFileSize:7169 +minFileSize:7169 #### A masked pattern was here #### PREHOOK: query: select count(1) from src_orc_merge_test_part diff --git a/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out b/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out index f8486ade7d7f..cdcc18a7330a 100644 --- a/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out +++ b/ql/src/test/results/clientpositive/alter_merge_stats_orc.q.out @@ -48,9 +48,9 @@ columns:struct columns { i32 key, string value} partitioned:false partitionColumns: totalNumberFiles:3 -totalFileSize:7488 -maxFileSize:2496 -minFileSize:2496 +totalFileSize:7494 +maxFileSize:2498 +minFileSize:2498 #### A masked pattern was here #### PREHOOK: query: desc extended src_orc_merge_test_stat @@ -94,7 +94,7 @@ Table Parameters: numFiles 3 numRows 1500 rawDataSize 141000 - totalSize 7488 + totalSize 7494 #### A masked pattern was here #### # Storage Information @@ -146,7 +146,7 @@ Table Parameters: numFiles 1 numRows 1500 rawDataSize 141000 - totalSize 7167 + totalSize 7169 #### A masked pattern was here #### # Storage Information @@ -216,9 +216,9 @@ columns:struct columns { i32 key, string value} partitioned:true partitionColumns:struct partition_columns { string ds} totalNumberFiles:3 -totalFileSize:7488 -maxFileSize:2496 -minFileSize:2496 +totalFileSize:7494 +maxFileSize:2498 +minFileSize:2498 #### A masked pattern was here #### PREHOOK: query: desc formatted src_orc_merge_test_part_stat partition (ds='2011') @@ -249,7 +249,7 @@ Partition Parameters: numFiles 3 numRows 1500 rawDataSize 141000 - totalSize 7488 + totalSize 7494 #### A masked pattern was here #### # Storage Information @@ -300,7 +300,7 @@ Partition Parameters: numFiles 3 numRows 1500 rawDataSize 141000 - totalSize 7488 + totalSize 7494 #### A masked pattern was here #### # Storage Information @@ -359,7 +359,7 @@ Partition Parameters: numFiles 1 numRows 1500 rawDataSize 141000 - totalSize 7167 + totalSize 7169 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/annotate_stats_part.q.out b/ql/src/test/results/clientpositive/annotate_stats_part.q.out index b767a3217c22..fb3c17b908c2 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_part.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_part.q.out @@ -98,11 +98,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 5 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 5 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 5 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 5 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- partition level analyze statistics for specific parition @@ -135,11 +135,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 2 Data size: 323 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 325 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), '__HIVE_DEFAULT_PARTITION__' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 2 Data size: 323 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 325 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- basicStatState: PARTIAL colStatState: NONE @@ -158,11 +158,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 9 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 9 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 9 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 9 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: NONE @@ -181,11 +181,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 402 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), '2001' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 7 Data size: 402 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- partition level analyze statistics for all partitions @@ -222,11 +222,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 325 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), '__HIVE_DEFAULT_PARTITION__' (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 325 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: NONE @@ -245,11 +245,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: NONE @@ -268,11 +268,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- both partitions will be pruned @@ -331,11 +331,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: zip (type: bigint) outputColumnNames: _col0 - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: PARTIAL @@ -354,7 +354,7 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string) outputColumnNames: _col0 @@ -377,7 +377,7 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: year (type: string) outputColumnNames: _col0 @@ -402,7 +402,7 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int) outputColumnNames: _col0, _col1 @@ -425,7 +425,7 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 402 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: state (type: string), locid (type: int) outputColumnNames: _col0, _col1 @@ -448,11 +448,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 325 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: state (type: string), locid (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1 Data size: 323 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 325 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: PARTIAL @@ -471,11 +471,11 @@ STAGE PLANS: Processor Tree: TableScan alias: loc_orc - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 8 Data size: 723 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 8 Data size: 727 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- This is to test filter expression evaluation on partition column @@ -496,7 +496,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 402 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (locid > 0) (type: boolean) Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE @@ -532,7 +532,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 402 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (locid > 0) (type: boolean) Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE @@ -568,7 +568,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: loc_orc - Statistics: Num rows: 7 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 402 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (locid > 0) (type: boolean) Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE diff --git a/ql/src/test/results/clientpositive/annotate_stats_table.q.out b/ql/src/test/results/clientpositive/annotate_stats_table.q.out index eed5daaa7e07..a74d85cef590 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_table.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_table.q.out @@ -89,11 +89,11 @@ STAGE PLANS: Processor Tree: TableScan alias: emp_orc - Statistics: Num rows: 3 Data size: 364 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 366 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: lastname (type: string), deptid (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 3 Data size: 364 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 3 Data size: 366 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- table level analyze statistics @@ -122,11 +122,11 @@ STAGE PLANS: Processor Tree: TableScan alias: emp_orc - Statistics: Num rows: 48 Data size: 364 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 48 Data size: 366 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: lastname (type: string), deptid (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 48 Data size: 364 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 48 Data size: 366 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- column level partial statistics @@ -155,11 +155,11 @@ STAGE PLANS: Processor Tree: TableScan alias: emp_orc - Statistics: Num rows: 48 Data size: 364 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 48 Data size: 366 Basic stats: COMPLETE Column stats: PARTIAL Select Operator expressions: lastname (type: string), deptid (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 48 Data size: 364 Basic stats: COMPLETE Column stats: PARTIAL + Statistics: Num rows: 48 Data size: 366 Basic stats: COMPLETE Column stats: PARTIAL ListSink PREHOOK: query: -- all selected columns have statistics @@ -180,7 +180,7 @@ STAGE PLANS: Processor Tree: TableScan alias: emp_orc - Statistics: Num rows: 48 Data size: 364 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 48 Data size: 366 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: deptid (type: int) outputColumnNames: _col0 @@ -213,11 +213,11 @@ STAGE PLANS: Processor Tree: TableScan alias: emp_orc - Statistics: Num rows: 48 Data size: 364 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 48 Data size: 366 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: lastname (type: string), deptid (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 48 Data size: 364 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 48 Data size: 366 Basic stats: COMPLETE Column stats: COMPLETE ListSink PREHOOK: query: -- basicStatState: COMPLETE colStatState: COMPLETE @@ -236,7 +236,7 @@ STAGE PLANS: Processor Tree: TableScan alias: emp_orc - Statistics: Num rows: 48 Data size: 364 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 48 Data size: 366 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: lastname (type: string) outputColumnNames: _col0 @@ -259,7 +259,7 @@ STAGE PLANS: Processor Tree: TableScan alias: emp_orc - Statistics: Num rows: 48 Data size: 364 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 48 Data size: 366 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: deptid (type: int) outputColumnNames: _col0 @@ -282,7 +282,7 @@ STAGE PLANS: Processor Tree: TableScan alias: emp_orc - Statistics: Num rows: 48 Data size: 364 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 48 Data size: 366 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: lastname (type: string), deptid (type: int) outputColumnNames: _col0, _col1 diff --git a/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out b/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out index 4dcbb0fc46c9..b21cb116f678 100644 --- a/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out +++ b/ql/src/test/results/clientpositive/dynpart_sort_opt_vectorization.q.out @@ -880,7 +880,7 @@ Partition Parameters: numFiles 2 numRows 32 rawDataSize 640 - totalSize 1348 + totalSize 1352 #### A masked pattern was here #### # Storage Information @@ -924,7 +924,7 @@ Partition Parameters: numFiles 2 numRows 6 rawDataSize 120 - totalSize 1050 + totalSize 1054 #### A masked pattern was here #### # Storage Information @@ -968,7 +968,7 @@ Partition Parameters: numFiles 2 numRows 14 rawDataSize 280 - totalSize 1166 + totalSize 1170 #### A masked pattern was here #### # Storage Information @@ -1012,7 +1012,7 @@ Partition Parameters: numFiles 2 numRows 6 rawDataSize 120 - totalSize 1050 + totalSize 1054 #### A masked pattern was here #### # Storage Information @@ -1055,7 +1055,7 @@ Partition Parameters: numFiles 8 numRows 32 rawDataSize 640 - totalSize 4340 + totalSize 4356 #### A masked pattern was here #### # Storage Information @@ -1098,7 +1098,7 @@ Partition Parameters: numFiles 8 numRows 6 rawDataSize 120 - totalSize 2094 + totalSize 2110 #### A masked pattern was here #### # Storage Information @@ -1141,7 +1141,7 @@ Partition Parameters: numFiles 8 numRows 32 rawDataSize 640 - totalSize 4326 + totalSize 4342 #### A masked pattern was here #### # Storage Information @@ -1184,7 +1184,7 @@ Partition Parameters: numFiles 8 numRows 6 rawDataSize 120 - totalSize 2094 + totalSize 2110 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/dynpart_sort_optimization2.q.out b/ql/src/test/results/clientpositive/dynpart_sort_optimization2.q.out index 9b57bbbc3ed1..5ee36f7b55d6 100644 --- a/ql/src/test/results/clientpositive/dynpart_sort_optimization2.q.out +++ b/ql/src/test/results/clientpositive/dynpart_sort_optimization2.q.out @@ -1183,7 +1183,7 @@ Partition Parameters: numFiles 1 numRows 11 rawDataSize 88 - totalSize 417 + totalSize 419 #### A masked pattern was here #### # Storage Information @@ -1245,7 +1245,7 @@ Partition Parameters: numFiles 1 numRows 13 rawDataSize 104 - totalSize 440 + totalSize 442 #### A masked pattern was here #### # Storage Information @@ -1404,7 +1404,7 @@ Partition Parameters: numFiles 1 numRows 11 rawDataSize 88 - totalSize 417 + totalSize 419 #### A masked pattern was here #### # Storage Information @@ -1466,7 +1466,7 @@ Partition Parameters: numFiles 1 numRows 13 rawDataSize 104 - totalSize 440 + totalSize 442 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/extrapolate_part_stats_full.q.out b/ql/src/test/results/clientpositive/extrapolate_part_stats_full.q.out index 29cfefaf3e8dfe46d2f93030bbe28741e558dca2..d0057dd70616f5d6c115a451808487f6ae8a48ab 100644 GIT binary patch delta 176 zcmZ2HgK6;$rVY;GjHa6z{Zkk>%bHX$ZB~#jV`eml3ouW%bHX$ZB~#jV`emj3ouW;v}a637Sd#%EbxzS^Lfn) zOq=_w?=nwLaJjL$e%4$jCQAbh{eeI==3h8yWilh<^!tg7MVrq=pW>v69h3Xbr%ry` zAUxU3V$}}LFrVZua*+WA`DzwmD2r?^I6Q-i(E=2#VeE{SAbJ(c^cWXL ziR}e?j4q6m4}2(}eE0HoCNpr*uVUGpaB~e4qd7z&&;*3KvdNu~ZbD@Cu}m*;VPpXr zv72%7gO@kANdxWM4m5T(LT|!NiR}u(Ksz=c_~6e7Gjg-QKcM+whwK9y;KJy^IGO)U m#dK?S#v7YA?z_yq{aykiBje-=77^R+c^R|VhPq#NFaiKW*)xp* delta 809 zcmbPsly%xs)(tyl8I89yN;9S~PX3@IJh|bn$mR_l$5|PTFa$N3Cky=J+k9Sg0@L=5 z_Kc~>8Z?P*pa$^U+O+ z%s!Us1ul#%AOm(YPJZz6=H`w2Rq@MnY>xmn;J(0s5n x_5lrWVf0{}%zvh0x-~oF4MqcywU?N;-%DU*WSl&~B4WEeFJl(lF!S0DMgSK_G>-rP diff --git a/ql/src/test/results/clientpositive/orc_analyze.q.out b/ql/src/test/results/clientpositive/orc_analyze.q.out index e718b297ce11..b422db530f6d 100644 --- a/ql/src/test/results/clientpositive/orc_analyze.q.out +++ b/ql/src/test/results/clientpositive/orc_analyze.q.out @@ -107,7 +107,7 @@ Table Parameters: numFiles 1 numRows 100 rawDataSize 52600 - totalSize 3121 + totalSize 3123 #### A masked pattern was here #### # Storage Information @@ -197,7 +197,7 @@ Table Parameters: numFiles 1 numRows 100 rawDataSize 52600 - totalSize 3121 + totalSize 3123 #### A masked pattern was here #### # Storage Information @@ -313,7 +313,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 21950 - totalSize 2024 + totalSize 2026 #### A masked pattern was here #### # Storage Information @@ -358,7 +358,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 22050 - totalSize 2043 + totalSize 2045 #### A masked pattern was here #### # Storage Information @@ -460,7 +460,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 21950 - totalSize 2024 + totalSize 2026 #### A masked pattern was here #### # Storage Information @@ -505,7 +505,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 22050 - totalSize 2043 + totalSize 2045 #### A masked pattern was here #### # Storage Information @@ -627,7 +627,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 21950 - totalSize 2024 + totalSize 2026 #### A masked pattern was here #### # Storage Information @@ -672,7 +672,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 22050 - totalSize 2043 + totalSize 2045 #### A masked pattern was here #### # Storage Information @@ -780,7 +780,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 21950 - totalSize 2024 + totalSize 2026 #### A masked pattern was here #### # Storage Information @@ -825,7 +825,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 22050 - totalSize 2043 + totalSize 2045 #### A masked pattern was here #### # Storage Information @@ -992,7 +992,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 21950 - totalSize 2024 + totalSize 2026 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/tez/alter_merge_orc.q.out b/ql/src/test/results/clientpositive/tez/alter_merge_orc.q.out index 78f40f4e0320..22914a8f04c4 100644 --- a/ql/src/test/results/clientpositive/tez/alter_merge_orc.q.out +++ b/ql/src/test/results/clientpositive/tez/alter_merge_orc.q.out @@ -48,9 +48,9 @@ columns:struct columns { i32 key, string value} partitioned:false partitionColumns: totalNumberFiles:3 -totalFileSize:7488 -maxFileSize:2496 -minFileSize:2496 +totalFileSize:7494 +maxFileSize:2498 +minFileSize:2498 #### A masked pattern was here #### PREHOOK: query: select count(1) from src_orc_merge_test @@ -91,9 +91,9 @@ columns:struct columns { i32 key, string value} partitioned:false partitionColumns: totalNumberFiles:1 -totalFileSize:7167 -maxFileSize:7167 -minFileSize:7167 +totalFileSize:7169 +maxFileSize:7169 +minFileSize:7169 #### A masked pattern was here #### PREHOOK: query: select count(1) from src_orc_merge_test @@ -171,9 +171,9 @@ columns:struct columns { i32 key, string value} partitioned:true partitionColumns:struct partition_columns { string ds} totalNumberFiles:3 -totalFileSize:7488 -maxFileSize:2496 -minFileSize:2496 +totalFileSize:7494 +maxFileSize:2498 +minFileSize:2498 #### A masked pattern was here #### PREHOOK: query: select count(1) from src_orc_merge_test_part @@ -218,9 +218,9 @@ columns:struct columns { i32 key, string value} partitioned:true partitionColumns:struct partition_columns { string ds} totalNumberFiles:1 -totalFileSize:7167 -maxFileSize:7167 -minFileSize:7167 +totalFileSize:7169 +maxFileSize:7169 +minFileSize:7169 #### A masked pattern was here #### PREHOOK: query: select count(1) from src_orc_merge_test_part diff --git a/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out b/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out index f8486ade7d7f..cdcc18a7330a 100644 --- a/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out +++ b/ql/src/test/results/clientpositive/tez/alter_merge_stats_orc.q.out @@ -48,9 +48,9 @@ columns:struct columns { i32 key, string value} partitioned:false partitionColumns: totalNumberFiles:3 -totalFileSize:7488 -maxFileSize:2496 -minFileSize:2496 +totalFileSize:7494 +maxFileSize:2498 +minFileSize:2498 #### A masked pattern was here #### PREHOOK: query: desc extended src_orc_merge_test_stat @@ -94,7 +94,7 @@ Table Parameters: numFiles 3 numRows 1500 rawDataSize 141000 - totalSize 7488 + totalSize 7494 #### A masked pattern was here #### # Storage Information @@ -146,7 +146,7 @@ Table Parameters: numFiles 1 numRows 1500 rawDataSize 141000 - totalSize 7167 + totalSize 7169 #### A masked pattern was here #### # Storage Information @@ -216,9 +216,9 @@ columns:struct columns { i32 key, string value} partitioned:true partitionColumns:struct partition_columns { string ds} totalNumberFiles:3 -totalFileSize:7488 -maxFileSize:2496 -minFileSize:2496 +totalFileSize:7494 +maxFileSize:2498 +minFileSize:2498 #### A masked pattern was here #### PREHOOK: query: desc formatted src_orc_merge_test_part_stat partition (ds='2011') @@ -249,7 +249,7 @@ Partition Parameters: numFiles 3 numRows 1500 rawDataSize 141000 - totalSize 7488 + totalSize 7494 #### A masked pattern was here #### # Storage Information @@ -300,7 +300,7 @@ Partition Parameters: numFiles 3 numRows 1500 rawDataSize 141000 - totalSize 7488 + totalSize 7494 #### A masked pattern was here #### # Storage Information @@ -359,7 +359,7 @@ Partition Parameters: numFiles 1 numRows 1500 rawDataSize 141000 - totalSize 7167 + totalSize 7169 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out index 71e3eb5094ac..6f614413b55f 100644 --- a/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_opt_vectorization.q.out @@ -932,7 +932,7 @@ Partition Parameters: numFiles 2 numRows 32 rawDataSize 640 - totalSize 1348 + totalSize 1352 #### A masked pattern was here #### # Storage Information @@ -976,7 +976,7 @@ Partition Parameters: numFiles 2 numRows 6 rawDataSize 120 - totalSize 1050 + totalSize 1054 #### A masked pattern was here #### # Storage Information @@ -1020,7 +1020,7 @@ Partition Parameters: numFiles 2 numRows 14 rawDataSize 280 - totalSize 1166 + totalSize 1170 #### A masked pattern was here #### # Storage Information @@ -1064,7 +1064,7 @@ Partition Parameters: numFiles 2 numRows 6 rawDataSize 120 - totalSize 1050 + totalSize 1054 #### A masked pattern was here #### # Storage Information @@ -1107,7 +1107,7 @@ Partition Parameters: numFiles 8 numRows 32 rawDataSize 640 - totalSize 4340 + totalSize 4356 #### A masked pattern was here #### # Storage Information @@ -1150,7 +1150,7 @@ Partition Parameters: numFiles 8 numRows 6 rawDataSize 120 - totalSize 2094 + totalSize 2110 #### A masked pattern was here #### # Storage Information @@ -1193,7 +1193,7 @@ Partition Parameters: numFiles 8 numRows 32 rawDataSize 640 - totalSize 4326 + totalSize 4342 #### A masked pattern was here #### # Storage Information @@ -1236,7 +1236,7 @@ Partition Parameters: numFiles 8 numRows 6 rawDataSize 120 - totalSize 2094 + totalSize 2110 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization2.q.out b/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization2.q.out index 52bef6f2250a..42e2cdef8249 100644 --- a/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization2.q.out +++ b/ql/src/test/results/clientpositive/tez/dynpart_sort_optimization2.q.out @@ -1234,7 +1234,7 @@ Partition Parameters: numFiles 1 numRows 11 rawDataSize 88 - totalSize 417 + totalSize 419 #### A masked pattern was here #### # Storage Information @@ -1296,7 +1296,7 @@ Partition Parameters: numFiles 1 numRows 13 rawDataSize 104 - totalSize 440 + totalSize 442 #### A masked pattern was here #### # Storage Information @@ -1466,7 +1466,7 @@ Partition Parameters: numFiles 1 numRows 11 rawDataSize 88 - totalSize 417 + totalSize 419 #### A masked pattern was here #### # Storage Information @@ -1528,7 +1528,7 @@ Partition Parameters: numFiles 1 numRows 13 rawDataSize 104 - totalSize 440 + totalSize 442 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/tez/orc_analyze.q.out b/ql/src/test/results/clientpositive/tez/orc_analyze.q.out index e718b297ce11..b422db530f6d 100644 --- a/ql/src/test/results/clientpositive/tez/orc_analyze.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_analyze.q.out @@ -107,7 +107,7 @@ Table Parameters: numFiles 1 numRows 100 rawDataSize 52600 - totalSize 3121 + totalSize 3123 #### A masked pattern was here #### # Storage Information @@ -197,7 +197,7 @@ Table Parameters: numFiles 1 numRows 100 rawDataSize 52600 - totalSize 3121 + totalSize 3123 #### A masked pattern was here #### # Storage Information @@ -313,7 +313,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 21950 - totalSize 2024 + totalSize 2026 #### A masked pattern was here #### # Storage Information @@ -358,7 +358,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 22050 - totalSize 2043 + totalSize 2045 #### A masked pattern was here #### # Storage Information @@ -460,7 +460,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 21950 - totalSize 2024 + totalSize 2026 #### A masked pattern was here #### # Storage Information @@ -505,7 +505,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 22050 - totalSize 2043 + totalSize 2045 #### A masked pattern was here #### # Storage Information @@ -627,7 +627,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 21950 - totalSize 2024 + totalSize 2026 #### A masked pattern was here #### # Storage Information @@ -672,7 +672,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 22050 - totalSize 2043 + totalSize 2045 #### A masked pattern was here #### # Storage Information @@ -780,7 +780,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 21950 - totalSize 2024 + totalSize 2026 #### A masked pattern was here #### # Storage Information @@ -825,7 +825,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 22050 - totalSize 2043 + totalSize 2045 #### A masked pattern was here #### # Storage Information @@ -992,7 +992,7 @@ Partition Parameters: numFiles 1 numRows 50 rawDataSize 21950 - totalSize 2024 + totalSize 2026 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out index 8974bb8f940b..4f97ecdb7a33 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out @@ -53,25 +53,25 @@ STAGE PLANS: Map Operator Tree: TableScan alias: decimal - Statistics: Num rows: 1 Data size: 219 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 221 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: dec (type: decimal(10,0)) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 219 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 221 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: decimal(10,0)) sort order: + - Statistics: Num rows: 1 Data size: 219 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 221 Basic stats: COMPLETE Column stats: NONE Execution mode: vectorized Reducer 2 Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: decimal(10,0)) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 219 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 221 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 219 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 221 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/tez/vectorized_ptf.q.out b/ql/src/test/results/clientpositive/tez/vectorized_ptf.q.out index 9473714a709f..5fcfeb9a3d78 100644 --- a/ql/src/test/results/clientpositive/tez/vectorized_ptf.q.out +++ b/ql/src/test/results/clientpositive/tez/vectorized_ptf.q.out @@ -264,7 +264,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -284,7 +284,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -554,7 +554,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -574,7 +574,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -621,7 +621,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -641,7 +641,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -871,7 +871,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -891,7 +891,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -1128,7 +1128,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -1148,7 +1148,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -1416,7 +1416,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -1436,7 +1436,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -1714,7 +1714,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -1734,7 +1734,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -1981,7 +1981,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2001,7 +2001,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -2045,7 +2045,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2065,7 +2065,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -2295,7 +2295,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2315,7 +2315,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -2359,7 +2359,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2379,7 +2379,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -2617,7 +2617,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2637,7 +2637,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -2894,7 +2894,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2914,7 +2914,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -3173,7 +3173,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -3193,7 +3193,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -3462,7 +3462,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -3482,7 +3482,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -3788,7 +3788,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -3808,7 +3808,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -4177,7 +4177,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -4197,7 +4197,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -4241,7 +4241,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -4261,7 +4261,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -4501,7 +4501,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -4521,7 +4521,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -4783,7 +4783,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -4803,7 +4803,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -5248,7 +5248,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -5268,7 +5268,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -5756,7 +5756,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -5776,7 +5776,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -6113,7 +6113,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -6133,7 +6133,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -6466,7 +6466,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -6486,7 +6486,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -6816,7 +6816,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -6836,7 +6836,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -7214,7 +7214,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -7234,7 +7234,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -7563,7 +7563,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -7583,7 +7583,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part diff --git a/ql/src/test/results/clientpositive/vectorized_ptf.q.out b/ql/src/test/results/clientpositive/vectorized_ptf.q.out index e807d119eb30..da8a57580629 100644 --- a/ql/src/test/results/clientpositive/vectorized_ptf.q.out +++ b/ql/src/test/results/clientpositive/vectorized_ptf.q.out @@ -259,7 +259,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -279,7 +279,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -605,7 +605,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -625,7 +625,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -942,7 +942,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -962,7 +962,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -1193,7 +1193,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -1213,7 +1213,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -1522,7 +1522,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -1542,7 +1542,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -1861,7 +1861,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -1881,7 +1881,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -2212,7 +2212,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2232,7 +2232,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -2341,7 +2341,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2361,7 +2361,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -2559,7 +2559,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2579,7 +2579,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -2688,7 +2688,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2708,7 +2708,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -2917,7 +2917,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -2937,7 +2937,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -3235,7 +3235,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -3255,7 +3255,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -3555,7 +3555,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -3575,7 +3575,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -3885,7 +3885,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -3905,7 +3905,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -4299,7 +4299,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -4319,7 +4319,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -4726,7 +4726,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -4746,7 +4746,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -4855,7 +4855,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -4875,7 +4875,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -5133,7 +5133,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -5153,7 +5153,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -5455,7 +5455,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -5475,7 +5475,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -6006,7 +6006,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -6026,7 +6026,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -6646,7 +6646,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -6666,7 +6666,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -7091,7 +7091,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -7111,7 +7111,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -7579,7 +7579,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -7599,7 +7599,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -8017,7 +8017,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -8037,7 +8037,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -8550,7 +8550,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -8570,7 +8570,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part @@ -8987,7 +8987,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde @@ -9007,7 +9007,7 @@ STAGE PLANS: serialization.ddl struct part { i32 p_partkey, string p_name, string p_mfgr, string p_brand, string p_type, i32 p_size, string p_container, double p_retailprice, string p_comment} serialization.format 1 serialization.lib org.apache.hadoop.hive.ql.io.orc.OrcSerde - totalSize 2597 + totalSize 2599 #### A masked pattern was here #### serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde name: default.part From 19ed2f3a209cb776f348c6c6fc80819fe01f0ac7 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 7 Nov 2014 07:50:44 +0000 Subject: [PATCH 263/339] HIVE-8759: HiveServer2 dynamic service discovery should add hostname instead of ipaddress to ZooKeeper (Vaibhav Gumashta, reviewed by Thejas M Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637305 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/java/org/apache/hive/service/server/HiveServer2.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java b/service/src/java/org/apache/hive/service/server/HiveServer2.java index 1b0f4028193b..4199f0fafc0c 100644 --- a/service/src/java/org/apache/hive/service/server/HiveServer2.java +++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java @@ -252,7 +252,7 @@ private String getServerInstanceURI(HiveConf hiveConf) throws Exception { if ((thriftCLIService == null) || (thriftCLIService.getServerAddress() == null)) { throw new Exception("Unable to get the server address; it hasn't been initialized yet."); } - return thriftCLIService.getServerAddress().getHostAddress() + ":" + return thriftCLIService.getServerAddress().getHostName() + ":" + thriftCLIService.getPortNumber(); } From ed1ce85cd9de784662e31526b26e4862ead27aa9 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 7 Nov 2014 08:00:58 +0000 Subject: [PATCH 264/339] HIVE-8766: Hive RetryHMSHandler should be retrying the metastore operation in case of NucleusException (Hari Sankar Sivarama Subramaniyan, reviewed by Thejas M Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637307 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/metastore/RetryingHMSHandler.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/RetryingHMSHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/RetryingHMSHandler.java index b18eb21b34b3..01ad36a4f0aa 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/RetryingHMSHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/RetryingHMSHandler.java @@ -34,6 +34,7 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.MetaException; import org.apache.hadoop.hive.metastore.api.NoSuchObjectException; +import org.datanucleus.exceptions.NucleusException; @InterfaceAudience.Private @InterfaceStability.Evolving @@ -132,8 +133,9 @@ public Object invoke(final Object proxy, final Method method, final Object[] arg } throw e.getCause(); } else if (e.getCause() instanceof MetaException && e.getCause().getCause() != null - && e.getCause().getCause() instanceof javax.jdo.JDOException) { - // The JDOException may be wrapped further in a MetaException + && (e.getCause().getCause() instanceof javax.jdo.JDOException || + e.getCause().getCause() instanceof NucleusException)) { + // The JDOException or the Nucleus Exception may be wrapped further in a MetaException caughtException = e.getCause().getCause(); } else { LOG.error(ExceptionUtils.getStackTrace(e.getCause())); From 90931bcfef196ca262ca682e2e4d0a16569b8e83 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 7 Nov 2014 09:12:17 +0000 Subject: [PATCH 265/339] HIVE-8771: Abstract merge file operator does not move/rename incompatible files correctly (Prasanth J via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637318 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/AbstractFileMergeOperator.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/AbstractFileMergeOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/AbstractFileMergeOperator.java index 107eb9de273e..6c80a141c901 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/AbstractFileMergeOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/AbstractFileMergeOperator.java @@ -212,14 +212,13 @@ public void closeOp(boolean abort) throws HiveException { // move any incompatible files to final path if (!incompatFileSet.isEmpty()) { for (Path incompatFile : incompatFileSet) { - String fileName = incompatFile.getName(); - Path destFile = new Path(finalPath.getParent(), fileName); + Path destDir = finalPath.getParent(); try { - Utilities.renameOrMoveFiles(fs, incompatFile, destFile); + Utilities.renameOrMoveFiles(fs, incompatFile, destDir); LOG.info("Moved incompatible file " + incompatFile + " to " + - destFile); + destDir); } catch (HiveException e) { - LOG.error("Unable to move " + incompatFile + " to " + destFile); + LOG.error("Unable to move " + incompatFile + " to " + destDir); throw new IOException(e); } } From d7ad1339c7a736f5582e039880eac2b2206cdb74 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Fri, 7 Nov 2014 17:31:30 +0000 Subject: [PATCH 266/339] HIVE-8779: Tez in-place progress UI can show wrong estimated time for sub-second queries (Prasanth J reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637415 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java index 7cec6505cc92..80ccc8ef5e17 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java @@ -290,6 +290,7 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, Hi break; case INITING: console.printInfo("Status: Initializing"); + startTime = System.currentTimeMillis(); break; case RUNNING: if (!running) { From a557465522c9a3edbb90c6b77033190c0e2bd434 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Fri, 7 Nov 2014 17:34:03 +0000 Subject: [PATCH 267/339] HIVE-8778: ORC split elimination can cause NPE when column statistics is null (Prasanth J reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637418 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/io/orc/RecordReaderImpl.java | 13 +- .../hive/ql/io/orc/TestInputOutputFormat.java | 147 +++++++++++++++--- 2 files changed, 132 insertions(+), 28 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java index f8fa316b8da2..a6a0ec1a0e02 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java @@ -2364,20 +2364,21 @@ static TruthValue evaluatePredicate(OrcProto.ColumnStatistics index, PredicateLeaf predicate) { ColumnStatistics cs = ColumnStatisticsImpl.deserialize(index); Object minValue = getMin(cs); + Object maxValue = getMax(cs); + return evaluatePredicateRange(predicate, minValue, maxValue); + } + + static TruthValue evaluatePredicateRange(PredicateLeaf predicate, Object min, + Object max) { // if we didn't have any values, everything must have been null - if (minValue == null) { + if (min == null) { if (predicate.getOperator() == PredicateLeaf.Operator.IS_NULL) { return TruthValue.YES; } else { return TruthValue.NULL; } } - Object maxValue = getMax(cs); - return evaluatePredicateRange(predicate, minValue, maxValue); - } - static TruthValue evaluatePredicateRange(PredicateLeaf predicate, Object min, - Object max) { Location loc; try { // Predicate object and stats object can be one of the following base types diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java index 7b7c5cb730da..d1acd88797dd 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java @@ -21,27 +21,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import java.io.DataInput; -import java.io.DataOutput; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.sql.Date; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; -import java.util.TimeZone; -import java.util.TreeSet; - import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.FSDataInputStream; @@ -66,9 +45,9 @@ import org.apache.hadoop.hive.ql.io.HiveInputFormat; import org.apache.hadoop.hive.ql.io.HiveOutputFormat; import org.apache.hadoop.hive.ql.io.InputFormatChecker; -import org.apache.hadoop.hive.ql.io.sarg.SearchArgumentFactory; import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf; import org.apache.hadoop.hive.ql.io.sarg.SearchArgument; +import org.apache.hadoop.hive.ql.io.sarg.SearchArgumentFactory; import org.apache.hadoop.hive.ql.plan.MapWork; import org.apache.hadoop.hive.ql.plan.PartitionDesc; import org.apache.hadoop.hive.ql.plan.TableDesc; @@ -104,6 +83,27 @@ import org.junit.Test; import org.junit.rules.TestName; +import java.io.DataInput; +import java.io.DataOutput; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.sql.Date; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.TimeZone; +import java.util.TreeSet; + public class TestInputOutputFormat { Path workDir = new Path(System.getProperty("test.tmp.dir","target/tmp")); @@ -1032,6 +1032,24 @@ public void testInOutFormat() throws Exception { reader.close(); } + static class SimpleRow implements Writable { + Text z; + + public SimpleRow(Text t) { + this.z = t; + } + + @Override + public void write(DataOutput dataOutput) throws IOException { + throw new UnsupportedOperationException("unsupported"); + } + + @Override + public void readFields(DataInput dataInput) throws IOException { + throw new UnsupportedOperationException("unsupported"); + } + } + static class NestedRow implements Writable { int z; MyRow r; @@ -1685,4 +1703,89 @@ public void testSetSearchArgument() throws Exception { assertEquals("cost", leaves.get(0).getColumnName()); assertEquals(PredicateLeaf.Operator.IS_NULL, leaves.get(0).getOperator()); } + + @Test + @SuppressWarnings("unchecked,deprecation") + public void testSplitElimination() throws Exception { + Properties properties = new Properties(); + StructObjectInspector inspector; + synchronized (TestOrcFile.class) { + inspector = (StructObjectInspector) + ObjectInspectorFactory.getReflectionObjectInspector(NestedRow.class, + ObjectInspectorFactory.ObjectInspectorOptions.JAVA); + } + SerDe serde = new OrcSerde(); + OutputFormat outFormat = new OrcOutputFormat(); + conf.setInt("mapred.max.split.size", 50); + RecordWriter writer = + outFormat.getRecordWriter(fs, conf, testFilePath.toString(), + Reporter.NULL); + writer.write(NullWritable.get(), + serde.serialize(new NestedRow(1,2,3), inspector)); + writer.write(NullWritable.get(), + serde.serialize(new NestedRow(4,5,6), inspector)); + writer.write(NullWritable.get(), + serde.serialize(new NestedRow(7,8,9), inspector)); + writer.close(Reporter.NULL); + serde = new OrcSerde(); + SearchArgument sarg = + SearchArgumentFactory.newBuilder() + .startAnd() + .lessThan("z", new Integer(0)) + .end() + .build(); + conf.set("sarg.pushdown", sarg.toKryo()); + conf.set("hive.io.file.readcolumn.names", "z,r"); + properties.setProperty("columns", "z,r"); + properties.setProperty("columns.types", "int:struct"); + SerDeUtils.initializeSerDe(serde, conf, properties, null); + inspector = (StructObjectInspector) serde.getObjectInspector(); + InputFormat in = new OrcInputFormat(); + FileInputFormat.setInputPaths(conf, testFilePath.toString()); + InputSplit[] splits = in.getSplits(conf, 1); + assertEquals(0, splits.length); + } + + @Test + @SuppressWarnings("unchecked,deprecation") + public void testSplitEliminationNullStats() throws Exception { + Properties properties = new Properties(); + StructObjectInspector inspector; + synchronized (TestOrcFile.class) { + inspector = (StructObjectInspector) + ObjectInspectorFactory.getReflectionObjectInspector(SimpleRow.class, + ObjectInspectorFactory.ObjectInspectorOptions.JAVA); + } + SerDe serde = new OrcSerde(); + OutputFormat outFormat = new OrcOutputFormat(); + conf.setInt("mapred.max.split.size", 50); + RecordWriter writer = + outFormat.getRecordWriter(fs, conf, testFilePath.toString(), + Reporter.NULL); + writer.write(NullWritable.get(), + serde.serialize(new SimpleRow(null), inspector)); + writer.write(NullWritable.get(), + serde.serialize(new SimpleRow(null), inspector)); + writer.write(NullWritable.get(), + serde.serialize(new SimpleRow(null), inspector)); + writer.close(Reporter.NULL); + serde = new OrcSerde(); + SearchArgument sarg = + SearchArgumentFactory.newBuilder() + .startAnd() + .lessThan("z", new String("foo")) + .end() + .build(); + conf.set("sarg.pushdown", sarg.toKryo()); + conf.set("hive.io.file.readcolumn.names", "z"); + properties.setProperty("columns", "z"); + properties.setProperty("columns.types", "string"); + SerDeUtils.initializeSerDe(serde, conf, properties, null); + inspector = (StructObjectInspector) serde.getObjectInspector(); + InputFormat in = new OrcInputFormat(); + FileInputFormat.setInputPaths(conf, testFilePath.toString()); + InputSplit[] splits = in.getSplits(conf, 1); + assertEquals(0, splits.length); + } + } From 43c53df440b778389487ecac4518e2a7a7d9f8ff Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Fri, 7 Nov 2014 22:08:23 +0000 Subject: [PATCH 268/339] HIVE-8618: Add SORT_QUERY_RESULTS for test that doesn't guarantee order #3 (Chao via Xuefu) - adding to branch-0.14 git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637472 13f79535-47bb-0310-9956-ffa450edef68 --- .../test/queries/clientpositive/auto_join26.q | 2 +- .../test/queries/clientpositive/date_join1.q | 2 + ql/src/test/queries/clientpositive/join40.q | 2 + .../clientpositive/vector_decimal_mapjoin.q | 4 +- .../results/clientpositive/auto_join26.q.out | 4 +- .../results/clientpositive/date_join1.q.out | 36 +- .../test/results/clientpositive/join40.q.out | 1260 +++++++++-------- .../vector_decimal_mapjoin.q.out | 110 +- 8 files changed, 719 insertions(+), 701 deletions(-) diff --git a/ql/src/test/queries/clientpositive/auto_join26.q b/ql/src/test/queries/clientpositive/auto_join26.q index dc09ff71c02a..89876375d15f 100644 --- a/ql/src/test/queries/clientpositive/auto_join26.q +++ b/ql/src/test/queries/clientpositive/auto_join26.q @@ -1,4 +1,4 @@ ---SORT_QUERY_RESULTS +-- SORT_QUERY_RESULTS CREATE TABLE dest_j1(key INT, cnt INT); set hive.auto.convert.join = true; diff --git a/ql/src/test/queries/clientpositive/date_join1.q b/ql/src/test/queries/clientpositive/date_join1.q index 34bb8c8990a6..7bb7a0d496c8 100644 --- a/ql/src/test/queries/clientpositive/date_join1.q +++ b/ql/src/test/queries/clientpositive/date_join1.q @@ -1,5 +1,7 @@ drop table date_join1; +-- SORT_QUERY_RESULTS + create table date_join1 ( ORIGIN_CITY_NAME string, DEST_CITY_NAME string, diff --git a/ql/src/test/queries/clientpositive/join40.q b/ql/src/test/queries/clientpositive/join40.q index e93f08289ac2..64b65e04514e 100644 --- a/ql/src/test/queries/clientpositive/join40.q +++ b/ql/src/test/queries/clientpositive/join40.q @@ -1,5 +1,7 @@ set hive.join.cache.size=1; +-- SORT_QUERY_RESULTS + EXPLAIN SELECT x.key, x.value, y.key, y.value FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y.key); diff --git a/ql/src/test/queries/clientpositive/vector_decimal_mapjoin.q b/ql/src/test/queries/clientpositive/vector_decimal_mapjoin.q index 54c906e81cd9..f341a11fc92f 100644 --- a/ql/src/test/queries/clientpositive/vector_decimal_mapjoin.q +++ b/ql/src/test/queries/clientpositive/vector_decimal_mapjoin.q @@ -1,3 +1,5 @@ +-- SORT_QUERY_RESULTS + CREATE TABLE decimal_mapjoin STORED AS ORC AS SELECT cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2, @@ -16,4 +18,4 @@ EXPLAIN SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2 SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2 FROM decimal_mapjoin l JOIN decimal_mapjoin r ON l.cint = r.cint - WHERE l.cint = 6981; \ No newline at end of file + WHERE l.cint = 6981; diff --git a/ql/src/test/results/clientpositive/auto_join26.q.out b/ql/src/test/results/clientpositive/auto_join26.q.out index 637e1a610b8c..d494d9578528 100644 --- a/ql/src/test/results/clientpositive/auto_join26.q.out +++ b/ql/src/test/results/clientpositive/auto_join26.q.out @@ -1,10 +1,10 @@ -PREHOOK: query: --SORT_QUERY_RESULTS +PREHOOK: query: -- SORT_QUERY_RESULTS CREATE TABLE dest_j1(key INT, cnt INT) PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@dest_j1 -POSTHOOK: query: --SORT_QUERY_RESULTS +POSTHOOK: query: -- SORT_QUERY_RESULTS CREATE TABLE dest_j1(key INT, cnt INT) POSTHOOK: type: CREATETABLE diff --git a/ql/src/test/results/clientpositive/date_join1.q.out b/ql/src/test/results/clientpositive/date_join1.q.out index 8a9d3122069e..d551f5b79447 100644 --- a/ql/src/test/results/clientpositive/date_join1.q.out +++ b/ql/src/test/results/clientpositive/date_join1.q.out @@ -2,7 +2,9 @@ PREHOOK: query: drop table date_join1 PREHOOK: type: DROPTABLE POSTHOOK: query: drop table date_join1 POSTHOOK: type: DROPTABLE -PREHOOK: query: create table date_join1 ( +PREHOOK: query: -- SORT_QUERY_RESULTS + +create table date_join1 ( ORIGIN_CITY_NAME string, DEST_CITY_NAME string, FL_DATE date, @@ -12,7 +14,9 @@ PREHOOK: query: create table date_join1 ( PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@date_join1 -POSTHOOK: query: create table date_join1 ( +POSTHOOK: query: -- SORT_QUERY_RESULTS + +create table date_join1 ( ORIGIN_CITY_NAME string, DEST_CITY_NAME string, FL_DATE date, @@ -47,27 +51,27 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@date_join1 #### A masked pattern was here #### 1064 2000-11-20 1064 2000-11-20 -1142 2000-11-21 1142 2000-11-21 -1599 2000-11-22 1599 2000-11-22 -361 2000-11-23 361 2000-11-23 -897 2000-11-24 897 2000-11-24 -1531 2000-11-25 1531 2000-11-25 -1610 2000-11-26 1610 2000-11-26 -3198 2000-11-27 3198 2000-11-27 -1142 2000-11-28 1064 2000-11-28 -1142 2000-11-28 1142 2000-11-28 1064 2000-11-28 1064 2000-11-28 1064 2000-11-28 1142 2000-11-28 1064 2010-10-20 1064 2010-10-20 +1064 2010-10-28 1064 2010-10-28 +1142 2000-11-21 1142 2000-11-21 +1142 2000-11-28 1064 2000-11-28 +1142 2000-11-28 1142 2000-11-28 1142 2010-10-21 1142 2010-10-21 -1599 2010-10-22 1599 2010-10-22 -361 2010-10-23 361 2010-10-23 -897 2010-10-24 897 2010-10-24 +1142 2010-10-29 1142 2010-10-29 +1531 2000-11-25 1531 2000-11-25 1531 2010-10-25 1531 2010-10-25 +1599 2000-11-22 1599 2000-11-22 +1599 2010-10-22 1599 2010-10-22 +1610 2000-11-26 1610 2000-11-26 1610 2010-10-26 1610 2010-10-26 +3198 2000-11-27 3198 2000-11-27 3198 2010-10-27 3198 2010-10-27 -1064 2010-10-28 1064 2010-10-28 -1142 2010-10-29 1142 2010-10-29 +361 2000-11-23 361 2000-11-23 +361 2010-10-23 361 2010-10-23 +897 2000-11-24 897 2000-11-24 +897 2010-10-24 897 2010-10-24 PREHOOK: query: drop table date_join1 PREHOOK: type: DROPTABLE PREHOOK: Input: default@date_join1 diff --git a/ql/src/test/results/clientpositive/join40.q.out b/ql/src/test/results/clientpositive/join40.q.out index d99be8444930..024dd3b1b1c8 100644 --- a/ql/src/test/results/clientpositive/join40.q.out +++ b/ql/src/test/results/clientpositive/join40.q.out @@ -1,7 +1,11 @@ -PREHOOK: query: EXPLAIN SELECT x.key, x.value, y.key, y.value +PREHOOK: query: -- SORT_QUERY_RESULTS + +EXPLAIN SELECT x.key, x.value, y.key, y.value FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y.key) PREHOOK: type: QUERY -POSTHOOK: query: EXPLAIN SELECT x.key, x.value, y.key, y.value +POSTHOOK: query: -- SORT_QUERY_RESULTS + +EXPLAIN SELECT x.key, x.value, y.key, y.value FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y.key) POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -1855,6 +1859,64 @@ SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +2 val_2 2 val_2 2 val_2 +4 val_4 4 val_4 4 val_4 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +8 val_8 8 val_8 8 val_8 +9 val_9 9 val_9 9 val_9 NULL NULL NULL NULL 10 val_10 NULL NULL NULL NULL 100 val_100 NULL NULL NULL NULL 100 val_100 @@ -2345,64 +2407,6 @@ NULL NULL NULL NULL 97 val_97 NULL NULL NULL NULL 97 val_97 NULL NULL NULL NULL 98 val_98 NULL NULL NULL NULL 98 val_98 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -2 val_2 2 val_2 2 val_2 -4 val_4 4 val_4 4 val_4 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -8 val_8 8 val_8 8 val_8 -9 val_9 9 val_9 9 val_9 PREHOOK: query: EXPLAIN SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key < 15) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value @@ -2516,6 +2520,64 @@ SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +2 val_2 2 val_2 2 val_2 +4 val_4 4 val_4 4 val_4 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +8 val_8 8 val_8 8 val_8 +9 val_9 9 val_9 9 val_9 NULL NULL NULL NULL 10 val_10 NULL NULL NULL NULL 100 val_100 NULL NULL NULL NULL 100 val_100 @@ -3006,64 +3068,6 @@ NULL NULL NULL NULL 97 val_97 NULL NULL NULL NULL 97 val_97 NULL NULL NULL NULL 98 val_98 NULL NULL NULL NULL 98 val_98 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -0 val_0 0 val_0 0 val_0 -2 val_2 2 val_2 2 val_2 -4 val_4 4 val_4 4 val_4 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -5 val_5 5 val_5 5 val_5 -8 val_8 8 val_8 8 val_8 -9 val_9 9 val_9 9 val_9 PREHOOK: query: EXPLAIN SELECT /*+ MAPJOIN(y) */ x.key, x.value, y.key, y.value FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y.key) @@ -3151,572 +3155,572 @@ FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y. POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -238 val_238 NULL NULL -86 val_86 86 val_86 -311 val_311 NULL NULL -27 val_27 27 val_27 -165 val_165 NULL NULL -409 val_409 NULL NULL -255 val_255 NULL NULL -278 val_278 NULL NULL -98 val_98 98 val_98 -98 val_98 98 val_98 -484 val_484 NULL NULL -265 val_265 NULL NULL -193 val_193 NULL NULL -401 val_401 NULL NULL -150 val_150 NULL NULL -273 val_273 NULL NULL -224 val_224 NULL NULL -369 val_369 NULL NULL -66 val_66 66 val_66 -128 val_128 NULL NULL -213 val_213 NULL NULL -146 val_146 NULL NULL -406 val_406 NULL NULL -429 val_429 NULL NULL -374 val_374 NULL NULL -152 val_152 NULL NULL -469 val_469 NULL NULL +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +10 val_10 10 val_10 +100 val_100 100 val_100 +100 val_100 100 val_100 +100 val_100 100 val_100 +100 val_100 100 val_100 +103 val_103 NULL NULL +103 val_103 NULL NULL +104 val_104 NULL NULL +104 val_104 NULL NULL +105 val_105 NULL NULL +11 val_11 11 val_11 +111 val_111 NULL NULL +113 val_113 NULL NULL +113 val_113 NULL NULL +114 val_114 NULL NULL +116 val_116 NULL NULL +118 val_118 NULL NULL +118 val_118 NULL NULL +119 val_119 NULL NULL +119 val_119 NULL NULL +119 val_119 NULL NULL +12 val_12 12 val_12 +12 val_12 12 val_12 +12 val_12 12 val_12 +12 val_12 12 val_12 +120 val_120 NULL NULL +120 val_120 NULL NULL +125 val_125 NULL NULL +125 val_125 NULL NULL +126 val_126 NULL NULL +128 val_128 NULL NULL +128 val_128 NULL NULL +128 val_128 NULL NULL +129 val_129 NULL NULL +129 val_129 NULL NULL +131 val_131 NULL NULL +133 val_133 NULL NULL +134 val_134 NULL NULL +134 val_134 NULL NULL +136 val_136 NULL NULL +137 val_137 NULL NULL +137 val_137 NULL NULL +138 val_138 NULL NULL +138 val_138 NULL NULL +138 val_138 NULL NULL +138 val_138 NULL NULL +143 val_143 NULL NULL 145 val_145 NULL NULL -495 val_495 NULL NULL -37 val_37 37 val_37 -37 val_37 37 val_37 -327 val_327 NULL NULL -281 val_281 NULL NULL -277 val_277 NULL NULL -209 val_209 NULL NULL +146 val_146 NULL NULL +146 val_146 NULL NULL +149 val_149 NULL NULL +149 val_149 NULL NULL 15 val_15 15 val_15 15 val_15 15 val_15 -82 val_82 82 val_82 -403 val_403 NULL NULL -166 val_166 NULL NULL -417 val_417 NULL NULL -430 val_430 NULL NULL -252 val_252 NULL NULL -292 val_292 NULL NULL -219 val_219 NULL NULL -287 val_287 NULL NULL +15 val_15 15 val_15 +15 val_15 15 val_15 +150 val_150 NULL NULL +152 val_152 NULL NULL +152 val_152 NULL NULL 153 val_153 NULL NULL -193 val_193 NULL NULL -338 val_338 NULL NULL -446 val_446 NULL NULL -459 val_459 NULL NULL -394 val_394 NULL NULL -237 val_237 NULL NULL -482 val_482 NULL NULL -174 val_174 NULL NULL -413 val_413 NULL NULL -494 val_494 NULL NULL -207 val_207 NULL NULL -199 val_199 NULL NULL -466 val_466 NULL NULL -208 val_208 NULL NULL -174 val_174 NULL NULL -399 val_399 NULL NULL -396 val_396 NULL NULL -247 val_247 NULL NULL -417 val_417 NULL NULL -489 val_489 NULL NULL +155 val_155 NULL NULL +156 val_156 NULL NULL +157 val_157 NULL NULL +158 val_158 NULL NULL +160 val_160 NULL NULL 162 val_162 NULL NULL -377 val_377 NULL NULL -397 val_397 NULL NULL -309 val_309 NULL NULL -365 val_365 NULL NULL -266 val_266 NULL NULL -439 val_439 NULL NULL -342 val_342 NULL NULL -367 val_367 NULL NULL -325 val_325 NULL NULL +163 val_163 NULL NULL +164 val_164 NULL NULL +164 val_164 NULL NULL +165 val_165 NULL NULL +165 val_165 NULL NULL +166 val_166 NULL NULL 167 val_167 NULL NULL -195 val_195 NULL NULL -475 val_475 NULL NULL +167 val_167 NULL NULL +167 val_167 NULL NULL +168 val_168 NULL NULL +169 val_169 NULL NULL +169 val_169 NULL NULL +169 val_169 NULL NULL +169 val_169 NULL NULL 17 val_17 17 val_17 -113 val_113 NULL NULL -155 val_155 NULL NULL -203 val_203 NULL NULL -339 val_339 NULL NULL -0 val_0 0 val_0 -0 val_0 0 val_0 -0 val_0 0 val_0 -455 val_455 NULL NULL -128 val_128 NULL NULL -311 val_311 NULL NULL -316 val_316 NULL NULL -57 val_57 57 val_57 -302 val_302 NULL NULL -205 val_205 NULL NULL -149 val_149 NULL NULL -438 val_438 NULL NULL -345 val_345 NULL NULL -129 val_129 NULL NULL 170 val_170 NULL NULL +172 val_172 NULL NULL +172 val_172 NULL NULL +174 val_174 NULL NULL +174 val_174 NULL NULL +175 val_175 NULL NULL +175 val_175 NULL NULL +176 val_176 NULL NULL +176 val_176 NULL NULL +177 val_177 NULL NULL +178 val_178 NULL NULL +179 val_179 NULL NULL +179 val_179 NULL NULL +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +180 val_180 NULL NULL +181 val_181 NULL NULL +183 val_183 NULL NULL +186 val_186 NULL NULL +187 val_187 NULL NULL +187 val_187 NULL NULL +187 val_187 NULL NULL +189 val_189 NULL NULL +19 val_19 19 val_19 +190 val_190 NULL NULL +191 val_191 NULL NULL +191 val_191 NULL NULL +192 val_192 NULL NULL +193 val_193 NULL NULL +193 val_193 NULL NULL +193 val_193 NULL NULL +194 val_194 NULL NULL +195 val_195 NULL NULL +195 val_195 NULL NULL +196 val_196 NULL NULL +197 val_197 NULL NULL +197 val_197 NULL NULL +199 val_199 NULL NULL +199 val_199 NULL NULL +199 val_199 NULL NULL +2 val_2 2 val_2 20 val_20 20 val_20 -489 val_489 NULL NULL -157 val_157 NULL NULL -378 val_378 NULL NULL -221 val_221 NULL NULL -92 val_92 92 val_92 -111 val_111 NULL NULL -47 val_47 47 val_47 -72 val_72 72 val_72 -72 val_72 72 val_72 -4 val_4 4 val_4 -280 val_280 NULL NULL -35 val_35 35 val_35 -35 val_35 35 val_35 -35 val_35 35 val_35 -427 val_427 NULL NULL -277 val_277 NULL NULL +200 val_200 NULL NULL +200 val_200 NULL NULL +201 val_201 NULL NULL +202 val_202 NULL NULL +203 val_203 NULL NULL +203 val_203 NULL NULL +205 val_205 NULL NULL +205 val_205 NULL NULL +207 val_207 NULL NULL +207 val_207 NULL NULL 208 val_208 NULL NULL -356 val_356 NULL NULL -399 val_399 NULL NULL -169 val_169 NULL NULL -382 val_382 NULL NULL -498 val_498 NULL NULL -125 val_125 NULL NULL -386 val_386 NULL NULL -437 val_437 NULL NULL -469 val_469 NULL NULL -192 val_192 NULL NULL -286 val_286 NULL NULL -187 val_187 NULL NULL -176 val_176 NULL NULL -54 val_54 54 val_54 -459 val_459 NULL NULL -51 val_51 51 val_51 -51 val_51 51 val_51 -138 val_138 NULL NULL -103 val_103 NULL NULL -239 val_239 NULL NULL +208 val_208 NULL NULL +208 val_208 NULL NULL +209 val_209 NULL NULL +209 val_209 NULL NULL 213 val_213 NULL NULL +213 val_213 NULL NULL +214 val_214 NULL NULL 216 val_216 NULL NULL -430 val_430 NULL NULL -278 val_278 NULL NULL -176 val_176 NULL NULL -289 val_289 NULL NULL +216 val_216 NULL NULL +217 val_217 NULL NULL +217 val_217 NULL NULL +218 val_218 NULL NULL +219 val_219 NULL NULL +219 val_219 NULL NULL 221 val_221 NULL NULL -65 val_65 65 val_65 -318 val_318 NULL NULL -332 val_332 NULL NULL -311 val_311 NULL NULL -275 val_275 NULL NULL -137 val_137 NULL NULL -241 val_241 NULL NULL -83 val_83 83 val_83 -83 val_83 83 val_83 -333 val_333 NULL NULL -180 val_180 NULL NULL -284 val_284 NULL NULL -12 val_12 12 val_12 -12 val_12 12 val_12 +221 val_221 NULL NULL +222 val_222 NULL NULL +223 val_223 NULL NULL +223 val_223 NULL NULL +224 val_224 NULL NULL +224 val_224 NULL NULL +226 val_226 NULL NULL +228 val_228 NULL NULL +229 val_229 NULL NULL +229 val_229 NULL NULL 230 val_230 NULL NULL -181 val_181 NULL NULL -67 val_67 67 val_67 -67 val_67 67 val_67 -260 val_260 NULL NULL -404 val_404 NULL NULL -384 val_384 NULL NULL -489 val_489 NULL NULL -353 val_353 NULL NULL -373 val_373 NULL NULL -272 val_272 NULL NULL -138 val_138 NULL NULL -217 val_217 NULL NULL -84 val_84 84 val_84 -84 val_84 84 val_84 -348 val_348 NULL NULL -466 val_466 NULL NULL -58 val_58 58 val_58 -58 val_58 58 val_58 -8 val_8 8 val_8 -411 val_411 NULL NULL 230 val_230 NULL NULL -208 val_208 NULL NULL -348 val_348 NULL NULL +230 val_230 NULL NULL +230 val_230 NULL NULL +230 val_230 NULL NULL +233 val_233 NULL NULL +233 val_233 NULL NULL +235 val_235 NULL NULL +237 val_237 NULL NULL +237 val_237 NULL NULL +238 val_238 NULL NULL +238 val_238 NULL NULL +239 val_239 NULL NULL +239 val_239 NULL NULL 24 val_24 24 val_24 24 val_24 24 val_24 -463 val_463 NULL NULL -431 val_431 NULL NULL -179 val_179 NULL NULL -172 val_172 NULL NULL -42 val_42 42 val_42 -42 val_42 42 val_42 -129 val_129 NULL NULL -158 val_158 NULL NULL -119 val_119 NULL NULL -496 val_496 NULL NULL -0 val_0 0 val_0 -0 val_0 0 val_0 -0 val_0 0 val_0 -322 val_322 NULL NULL -197 val_197 NULL NULL -468 val_468 NULL NULL -393 val_393 NULL NULL -454 val_454 NULL NULL -100 val_100 100 val_100 -100 val_100 100 val_100 -298 val_298 NULL NULL -199 val_199 NULL NULL -191 val_191 NULL NULL -418 val_418 NULL NULL -96 val_96 96 val_96 +24 val_24 24 val_24 +24 val_24 24 val_24 +241 val_241 NULL NULL +242 val_242 NULL NULL +242 val_242 NULL NULL +244 val_244 NULL NULL +247 val_247 NULL NULL +248 val_248 NULL NULL +249 val_249 NULL NULL +252 val_252 NULL NULL +255 val_255 NULL NULL +255 val_255 NULL NULL +256 val_256 NULL NULL +256 val_256 NULL NULL +257 val_257 NULL NULL +258 val_258 NULL NULL 26 val_26 26 val_26 26 val_26 26 val_26 -165 val_165 NULL NULL -327 val_327 NULL NULL -230 val_230 NULL NULL -205 val_205 NULL NULL -120 val_120 NULL NULL -131 val_131 NULL NULL -51 val_51 51 val_51 -51 val_51 51 val_51 -404 val_404 NULL NULL -43 val_43 43 val_43 -436 val_436 NULL NULL -156 val_156 NULL NULL -469 val_469 NULL NULL -468 val_468 NULL NULL -308 val_308 NULL NULL -95 val_95 95 val_95 -95 val_95 95 val_95 -196 val_196 NULL NULL -288 val_288 NULL NULL -481 val_481 NULL NULL -457 val_457 NULL NULL -98 val_98 98 val_98 -98 val_98 98 val_98 +26 val_26 26 val_26 +26 val_26 26 val_26 +260 val_260 NULL NULL +262 val_262 NULL NULL +263 val_263 NULL NULL +265 val_265 NULL NULL +265 val_265 NULL NULL +266 val_266 NULL NULL +27 val_27 27 val_27 +272 val_272 NULL NULL +272 val_272 NULL NULL +273 val_273 NULL NULL +273 val_273 NULL NULL +273 val_273 NULL NULL +274 val_274 NULL NULL +275 val_275 NULL NULL +277 val_277 NULL NULL +277 val_277 NULL NULL +277 val_277 NULL NULL +277 val_277 NULL NULL +278 val_278 NULL NULL +278 val_278 NULL NULL +28 val_28 28 val_28 +280 val_280 NULL NULL +280 val_280 NULL NULL +281 val_281 NULL NULL +281 val_281 NULL NULL 282 val_282 NULL NULL -197 val_197 NULL NULL -187 val_187 NULL NULL -318 val_318 NULL NULL -318 val_318 NULL NULL -409 val_409 NULL NULL -470 val_470 NULL NULL -137 val_137 NULL NULL -369 val_369 NULL NULL -316 val_316 NULL NULL -169 val_169 NULL NULL -413 val_413 NULL NULL -85 val_85 85 val_85 -77 val_77 77 val_77 -0 val_0 0 val_0 -0 val_0 0 val_0 -0 val_0 0 val_0 -490 val_490 NULL NULL -87 val_87 87 val_87 -364 val_364 NULL NULL -179 val_179 NULL NULL -118 val_118 NULL NULL -134 val_134 NULL NULL -395 val_395 NULL NULL 282 val_282 NULL NULL -138 val_138 NULL NULL -238 val_238 NULL NULL -419 val_419 NULL NULL -15 val_15 15 val_15 -15 val_15 15 val_15 -118 val_118 NULL NULL -72 val_72 72 val_72 -72 val_72 72 val_72 -90 val_90 90 val_90 -90 val_90 90 val_90 -90 val_90 90 val_90 -307 val_307 NULL NULL -19 val_19 19 val_19 -435 val_435 NULL NULL -10 val_10 10 val_10 -277 val_277 NULL NULL -273 val_273 NULL NULL +283 val_283 NULL NULL +284 val_284 NULL NULL +285 val_285 NULL NULL +286 val_286 NULL NULL +287 val_287 NULL NULL +288 val_288 NULL NULL +288 val_288 NULL NULL +289 val_289 NULL NULL +291 val_291 NULL NULL +292 val_292 NULL NULL +296 val_296 NULL NULL +298 val_298 NULL NULL +298 val_298 NULL NULL +298 val_298 NULL NULL +30 val_30 30 val_30 +302 val_302 NULL NULL +305 val_305 NULL NULL 306 val_306 NULL NULL -224 val_224 NULL NULL +307 val_307 NULL NULL +307 val_307 NULL NULL +308 val_308 NULL NULL 309 val_309 NULL NULL -389 val_389 NULL NULL +309 val_309 NULL NULL +310 val_310 NULL NULL +311 val_311 NULL NULL +311 val_311 NULL NULL +311 val_311 NULL NULL +315 val_315 NULL NULL +316 val_316 NULL NULL +316 val_316 NULL NULL +316 val_316 NULL NULL +317 val_317 NULL NULL +317 val_317 NULL NULL +318 val_318 NULL NULL +318 val_318 NULL NULL +318 val_318 NULL NULL +321 val_321 NULL NULL +321 val_321 NULL NULL +322 val_322 NULL NULL +322 val_322 NULL NULL +323 val_323 NULL NULL +325 val_325 NULL NULL +325 val_325 NULL NULL 327 val_327 NULL NULL -242 val_242 NULL NULL -369 val_369 NULL NULL -392 val_392 NULL NULL -272 val_272 NULL NULL +327 val_327 NULL NULL +327 val_327 NULL NULL +33 val_33 33 val_33 331 val_331 NULL NULL -401 val_401 NULL NULL -242 val_242 NULL NULL -452 val_452 NULL NULL -177 val_177 NULL NULL -226 val_226 NULL NULL -5 val_5 5 val_5 -5 val_5 5 val_5 -5 val_5 5 val_5 -497 val_497 NULL NULL -402 val_402 NULL NULL -396 val_396 NULL NULL -317 val_317 NULL NULL -395 val_395 NULL NULL -58 val_58 58 val_58 -58 val_58 58 val_58 +331 val_331 NULL NULL +332 val_332 NULL NULL +333 val_333 NULL NULL +333 val_333 NULL NULL +335 val_335 NULL NULL +336 val_336 NULL NULL +338 val_338 NULL NULL +339 val_339 NULL NULL +34 val_34 34 val_34 +341 val_341 NULL NULL +342 val_342 NULL NULL +342 val_342 NULL NULL +344 val_344 NULL NULL +344 val_344 NULL NULL +345 val_345 NULL NULL +348 val_348 NULL NULL +348 val_348 NULL NULL +348 val_348 NULL NULL +348 val_348 NULL NULL +348 val_348 NULL NULL 35 val_35 35 val_35 35 val_35 35 val_35 35 val_35 35 val_35 -336 val_336 NULL NULL -95 val_95 95 val_95 -95 val_95 95 val_95 -11 val_11 11 val_11 -168 val_168 NULL NULL -34 val_34 34 val_34 -229 val_229 NULL NULL -233 val_233 NULL NULL -143 val_143 NULL NULL -472 val_472 NULL NULL -322 val_322 NULL NULL -498 val_498 NULL NULL -160 val_160 NULL NULL -195 val_195 NULL NULL +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +351 val_351 NULL NULL +353 val_353 NULL NULL +353 val_353 NULL NULL +356 val_356 NULL NULL +360 val_360 NULL NULL +362 val_362 NULL NULL +364 val_364 NULL NULL +365 val_365 NULL NULL +366 val_366 NULL NULL +367 val_367 NULL NULL +367 val_367 NULL NULL +368 val_368 NULL NULL +369 val_369 NULL NULL +369 val_369 NULL NULL +369 val_369 NULL NULL +37 val_37 37 val_37 +37 val_37 37 val_37 +37 val_37 37 val_37 +37 val_37 37 val_37 +373 val_373 NULL NULL +374 val_374 NULL NULL +375 val_375 NULL NULL +377 val_377 NULL NULL +378 val_378 NULL NULL +379 val_379 NULL NULL +382 val_382 NULL NULL +382 val_382 NULL NULL +384 val_384 NULL NULL +384 val_384 NULL NULL +384 val_384 NULL NULL +386 val_386 NULL NULL +389 val_389 NULL NULL +392 val_392 NULL NULL +393 val_393 NULL NULL +394 val_394 NULL NULL +395 val_395 NULL NULL +395 val_395 NULL NULL +396 val_396 NULL NULL +396 val_396 NULL NULL +396 val_396 NULL NULL +397 val_397 NULL NULL +397 val_397 NULL NULL +399 val_399 NULL NULL +399 val_399 NULL NULL +4 val_4 4 val_4 +400 val_400 NULL NULL +401 val_401 NULL NULL +401 val_401 NULL NULL +401 val_401 NULL NULL +401 val_401 NULL NULL +401 val_401 NULL NULL +402 val_402 NULL NULL +403 val_403 NULL NULL +403 val_403 NULL NULL +403 val_403 NULL NULL +404 val_404 NULL NULL +404 val_404 NULL NULL +406 val_406 NULL NULL +406 val_406 NULL NULL +406 val_406 NULL NULL +406 val_406 NULL NULL +407 val_407 NULL NULL +409 val_409 NULL NULL +409 val_409 NULL NULL +409 val_409 NULL NULL +41 val_41 41 val_41 +411 val_411 NULL NULL +413 val_413 NULL NULL +413 val_413 NULL NULL +414 val_414 NULL NULL +414 val_414 NULL NULL +417 val_417 NULL NULL +417 val_417 NULL NULL +417 val_417 NULL NULL +418 val_418 NULL NULL +419 val_419 NULL NULL 42 val_42 42 val_42 42 val_42 42 val_42 -321 val_321 NULL NULL +42 val_42 42 val_42 +42 val_42 42 val_42 +421 val_421 NULL NULL +424 val_424 NULL NULL +424 val_424 NULL NULL +427 val_427 NULL NULL +429 val_429 NULL NULL +429 val_429 NULL NULL +43 val_43 43 val_43 430 val_430 NULL NULL -119 val_119 NULL NULL -489 val_489 NULL NULL -458 val_458 NULL NULL -78 val_78 78 val_78 -76 val_76 76 val_76 -76 val_76 76 val_76 -41 val_41 41 val_41 -223 val_223 NULL NULL -492 val_492 NULL NULL -149 val_149 NULL NULL +430 val_430 NULL NULL +430 val_430 NULL NULL +431 val_431 NULL NULL +431 val_431 NULL NULL +431 val_431 NULL NULL +432 val_432 NULL NULL +435 val_435 NULL NULL +436 val_436 NULL NULL +437 val_437 NULL NULL +438 val_438 NULL NULL +438 val_438 NULL NULL +438 val_438 NULL NULL +439 val_439 NULL NULL +439 val_439 NULL NULL +44 val_44 44 val_44 +443 val_443 NULL NULL +444 val_444 NULL NULL +446 val_446 NULL NULL +448 val_448 NULL NULL 449 val_449 NULL NULL -218 val_218 NULL NULL -228 val_228 NULL NULL -138 val_138 NULL NULL +452 val_452 NULL NULL 453 val_453 NULL NULL -30 val_30 30 val_30 -209 val_209 NULL NULL -64 val_64 64 val_64 +454 val_454 NULL NULL +454 val_454 NULL NULL +454 val_454 NULL NULL +455 val_455 NULL NULL +457 val_457 NULL NULL +458 val_458 NULL NULL +458 val_458 NULL NULL +459 val_459 NULL NULL +459 val_459 NULL NULL +460 val_460 NULL NULL +462 val_462 NULL NULL +462 val_462 NULL NULL +463 val_463 NULL NULL +463 val_463 NULL NULL +466 val_466 NULL NULL +466 val_466 NULL NULL +466 val_466 NULL NULL +467 val_467 NULL NULL 468 val_468 NULL NULL -76 val_76 76 val_76 -76 val_76 76 val_76 -74 val_74 74 val_74 -342 val_342 NULL NULL -69 val_69 69 val_69 -230 val_230 NULL NULL -33 val_33 33 val_33 -368 val_368 NULL NULL -103 val_103 NULL NULL -296 val_296 NULL NULL -113 val_113 NULL NULL -216 val_216 NULL NULL -367 val_367 NULL NULL -344 val_344 NULL NULL -167 val_167 NULL NULL -274 val_274 NULL NULL -219 val_219 NULL NULL -239 val_239 NULL NULL -485 val_485 NULL NULL -116 val_116 NULL NULL -223 val_223 NULL NULL -256 val_256 NULL NULL -263 val_263 NULL NULL -70 val_70 70 val_70 -70 val_70 70 val_70 -70 val_70 70 val_70 -487 val_487 NULL NULL +468 val_468 NULL NULL +468 val_468 NULL NULL +468 val_468 NULL NULL +469 val_469 NULL NULL +469 val_469 NULL NULL +469 val_469 NULL NULL +469 val_469 NULL NULL +469 val_469 NULL NULL +47 val_47 47 val_47 +470 val_470 NULL NULL +472 val_472 NULL NULL +475 val_475 NULL NULL +477 val_477 NULL NULL +478 val_478 NULL NULL +478 val_478 NULL NULL +479 val_479 NULL NULL 480 val_480 NULL NULL -401 val_401 NULL NULL -288 val_288 NULL NULL -191 val_191 NULL NULL +480 val_480 NULL NULL +480 val_480 NULL NULL +481 val_481 NULL NULL +482 val_482 NULL NULL +483 val_483 NULL NULL +484 val_484 NULL NULL +485 val_485 NULL NULL +487 val_487 NULL NULL +489 val_489 NULL NULL +489 val_489 NULL NULL +489 val_489 NULL NULL +489 val_489 NULL NULL +490 val_490 NULL NULL +491 val_491 NULL NULL +492 val_492 NULL NULL +492 val_492 NULL NULL +493 val_493 NULL NULL +494 val_494 NULL NULL +495 val_495 NULL NULL +496 val_496 NULL NULL +497 val_497 NULL NULL +498 val_498 NULL NULL +498 val_498 NULL NULL +498 val_498 NULL NULL +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 5 val_5 5 val_5 5 val_5 5 val_5 5 val_5 -244 val_244 NULL NULL -438 val_438 NULL NULL -128 val_128 NULL NULL -467 val_467 NULL NULL -432 val_432 NULL NULL -202 val_202 NULL NULL -316 val_316 NULL NULL -229 val_229 NULL NULL -469 val_469 NULL NULL -463 val_463 NULL NULL -280 val_280 NULL NULL -2 val_2 2 val_2 -35 val_35 35 val_35 -35 val_35 35 val_35 -35 val_35 35 val_35 -283 val_283 NULL NULL -331 val_331 NULL NULL -235 val_235 NULL NULL -80 val_80 80 val_80 -44 val_44 44 val_44 -193 val_193 NULL NULL -321 val_321 NULL NULL -335 val_335 NULL NULL -104 val_104 NULL NULL -466 val_466 NULL NULL -366 val_366 NULL NULL -175 val_175 NULL NULL -403 val_403 NULL NULL -483 val_483 NULL NULL -53 val_53 53 val_53 -105 val_105 NULL NULL -257 val_257 NULL NULL -406 val_406 NULL NULL -409 val_409 NULL NULL -190 val_190 NULL NULL -406 val_406 NULL NULL -401 val_401 NULL NULL -114 val_114 NULL NULL -258 val_258 NULL NULL -90 val_90 90 val_90 -90 val_90 90 val_90 -90 val_90 90 val_90 -203 val_203 NULL NULL -262 val_262 NULL NULL -348 val_348 NULL NULL -424 val_424 NULL NULL -12 val_12 12 val_12 -12 val_12 12 val_12 -396 val_396 NULL NULL -201 val_201 NULL NULL -217 val_217 NULL NULL -164 val_164 NULL NULL -431 val_431 NULL NULL -454 val_454 NULL NULL -478 val_478 NULL NULL -298 val_298 NULL NULL -125 val_125 NULL NULL -431 val_431 NULL NULL -164 val_164 NULL NULL -424 val_424 NULL NULL -187 val_187 NULL NULL -382 val_382 NULL NULL 5 val_5 5 val_5 5 val_5 5 val_5 5 val_5 5 val_5 +51 val_51 51 val_51 +51 val_51 51 val_51 +51 val_51 51 val_51 +51 val_51 51 val_51 +53 val_53 53 val_53 +54 val_54 54 val_54 +57 val_57 57 val_57 +58 val_58 58 val_58 +58 val_58 58 val_58 +58 val_58 58 val_58 +58 val_58 58 val_58 +64 val_64 64 val_64 +65 val_65 65 val_65 +66 val_66 66 val_66 +67 val_67 67 val_67 +67 val_67 67 val_67 +67 val_67 67 val_67 +67 val_67 67 val_67 +69 val_69 69 val_69 70 val_70 70 val_70 70 val_70 70 val_70 70 val_70 70 val_70 -397 val_397 NULL NULL -480 val_480 NULL NULL -291 val_291 NULL NULL -24 val_24 24 val_24 -24 val_24 24 val_24 -351 val_351 NULL NULL -255 val_255 NULL NULL -104 val_104 NULL NULL 70 val_70 70 val_70 70 val_70 70 val_70 70 val_70 70 val_70 -163 val_163 NULL NULL -438 val_438 NULL NULL -119 val_119 NULL NULL -414 val_414 NULL NULL -200 val_200 NULL NULL -491 val_491 NULL NULL -237 val_237 NULL NULL -439 val_439 NULL NULL -360 val_360 NULL NULL -248 val_248 NULL NULL -479 val_479 NULL NULL -305 val_305 NULL NULL -417 val_417 NULL NULL -199 val_199 NULL NULL -444 val_444 NULL NULL -120 val_120 NULL NULL -429 val_429 NULL NULL -169 val_169 NULL NULL -443 val_443 NULL NULL -323 val_323 NULL NULL -325 val_325 NULL NULL -277 val_277 NULL NULL -230 val_230 NULL NULL -478 val_478 NULL NULL -178 val_178 NULL NULL -468 val_468 NULL NULL -310 val_310 NULL NULL -317 val_317 NULL NULL -333 val_333 NULL NULL -493 val_493 NULL NULL -460 val_460 NULL NULL -207 val_207 NULL NULL -249 val_249 NULL NULL -265 val_265 NULL NULL -480 val_480 NULL NULL +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +72 val_72 72 val_72 +72 val_72 72 val_72 +72 val_72 72 val_72 +72 val_72 72 val_72 +74 val_74 74 val_74 +76 val_76 76 val_76 +76 val_76 76 val_76 +76 val_76 76 val_76 +76 val_76 76 val_76 +77 val_77 77 val_77 +78 val_78 78 val_78 +8 val_8 8 val_8 +80 val_80 80 val_80 +82 val_82 82 val_82 +83 val_83 83 val_83 +83 val_83 83 val_83 83 val_83 83 val_83 83 val_83 83 val_83 -136 val_136 NULL NULL -353 val_353 NULL NULL -172 val_172 NULL NULL -214 val_214 NULL NULL -462 val_462 NULL NULL -233 val_233 NULL NULL -406 val_406 NULL NULL -133 val_133 NULL NULL -175 val_175 NULL NULL -189 val_189 NULL NULL -454 val_454 NULL NULL -375 val_375 NULL NULL -401 val_401 NULL NULL -421 val_421 NULL NULL -407 val_407 NULL NULL -384 val_384 NULL NULL -256 val_256 NULL NULL -26 val_26 26 val_26 -26 val_26 26 val_26 -134 val_134 NULL NULL -67 val_67 67 val_67 -67 val_67 67 val_67 -384 val_384 NULL NULL -379 val_379 NULL NULL -18 val_18 18 val_18 -18 val_18 18 val_18 -462 val_462 NULL NULL -492 val_492 NULL NULL -100 val_100 100 val_100 -100 val_100 100 val_100 -298 val_298 NULL NULL -9 val_9 9 val_9 -341 val_341 NULL NULL -498 val_498 NULL NULL -146 val_146 NULL NULL -458 val_458 NULL NULL -362 val_362 NULL NULL -186 val_186 NULL NULL -285 val_285 NULL NULL -348 val_348 NULL NULL -167 val_167 NULL NULL -18 val_18 18 val_18 -18 val_18 18 val_18 -273 val_273 NULL NULL -183 val_183 NULL NULL -281 val_281 NULL NULL -344 val_344 NULL NULL -97 val_97 97 val_97 -97 val_97 97 val_97 -469 val_469 NULL NULL -315 val_315 NULL NULL 84 val_84 84 val_84 84 val_84 84 val_84 -28 val_28 28 val_28 -37 val_37 37 val_37 -37 val_37 37 val_37 -448 val_448 NULL NULL -152 val_152 NULL NULL -348 val_348 NULL NULL -307 val_307 NULL NULL -194 val_194 NULL NULL -414 val_414 NULL NULL -477 val_477 NULL NULL -222 val_222 NULL NULL -126 val_126 NULL NULL +84 val_84 84 val_84 +84 val_84 84 val_84 +85 val_85 85 val_85 +86 val_86 86 val_86 +87 val_87 87 val_87 +9 val_9 9 val_9 90 val_90 90 val_90 90 val_90 90 val_90 90 val_90 90 val_90 -169 val_169 NULL NULL -403 val_403 NULL NULL -400 val_400 NULL NULL -200 val_200 NULL NULL +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +92 val_92 92 val_92 +95 val_95 95 val_95 +95 val_95 95 val_95 +95 val_95 95 val_95 +95 val_95 95 val_95 +96 val_96 96 val_96 +97 val_97 97 val_97 +97 val_97 97 val_97 97 val_97 97 val_97 97 val_97 97 val_97 +98 val_98 98 val_98 +98 val_98 98 val_98 +98 val_98 98 val_98 +98 val_98 98 val_98 PREHOOK: query: EXPLAIN SELECT COUNT(1) FROM SRC A JOIN SRC B ON (A.KEY=B.KEY) PREHOOK: type: QUERY diff --git a/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out b/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out index 852623f2ec2c..193e6f760ae8 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out @@ -1,4 +1,6 @@ -PREHOOK: query: CREATE TABLE decimal_mapjoin STORED AS ORC AS +PREHOOK: query: -- SORT_QUERY_RESULTS + +CREATE TABLE decimal_mapjoin STORED AS ORC AS SELECT cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2, cint @@ -7,7 +9,9 @@ PREHOOK: type: CREATETABLE_AS_SELECT PREHOOK: Input: default@alltypesorc PREHOOK: Output: database:default PREHOOK: Output: default@decimal_mapjoin -POSTHOOK: query: CREATE TABLE decimal_mapjoin STORED AS ORC AS +POSTHOOK: query: -- SORT_QUERY_RESULTS + +CREATE TABLE decimal_mapjoin STORED AS ORC AS SELECT cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(20,10)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(23,14)) AS cdecimal2, cint @@ -109,103 +113,103 @@ POSTHOOK: query: SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2 POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_mapjoin #### A masked pattern was here #### +6981 6981 -515.6210729730 -617.5607769230769 +6981 6981 -515.6210729730 -617.5607769230769 +6981 6981 -515.6210729730 -617.5607769230769 +6981 6981 -515.6210729730 -617.5607769230769 +6981 6981 -515.6210729730 6984454.211097692 +6981 6981 -515.6210729730 6984454.211097692 +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 -515.6210729730 NULL +6981 6981 5831542.269248378 -617.5607769230769 +6981 6981 5831542.269248378 -617.5607769230769 +6981 6981 5831542.269248378 6984454.211097692 +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 5831542.269248378 NULL +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL -617.5607769230769 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 +6981 6981 NULL 6984454.211097692 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 5831542.269248378 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 5831542.269248378 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 5831542.269248378 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 5831542.269248378 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 NULL 6984454.211097692 -6981 6981 NULL 6984454.211097692 -6981 6981 NULL 6984454.211097692 -6981 6981 NULL 6984454.211097692 -6981 6981 5831542.269248378 6984454.211097692 -6981 6981 NULL 6984454.211097692 -6981 6981 NULL 6984454.211097692 -6981 6981 NULL 6984454.211097692 -6981 6981 -515.6210729730 6984454.211097692 -6981 6981 -515.6210729730 6984454.211097692 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 5831542.269248378 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 5831542.269248378 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 5831542.269248378 NULL 6981 6981 NULL NULL 6981 6981 NULL NULL 6981 6981 NULL NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 NULL -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 5831542.269248378 -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 5831542.269248378 -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 NULL -617.5607769230769 -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 -515.6210729730 -617.5607769230769 From 668f235768621f0c3d69b55c6ebe2d41bf900a30 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Fri, 7 Nov 2014 22:14:43 +0000 Subject: [PATCH 269/339] HIVE-8745: Joins on decimal keys return different results whether they are run as reduce join or map join - This reverts HIVE-7373 git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637473 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/common/type/Decimal128.java | 88 +-- .../hadoop/hive/common/type/HiveDecimal.java | 13 +- .../hive/common/type/TestDecimal128.java | 28 +- .../hive/common/type/TestHiveDecimal.java | 40 +- .../vector/expressions/TestDecimalUtil.java | 33 +- .../expressions/TestVectorTypeCasts.java | 7 +- .../ql/io/sarg/TestSearchArgumentImpl.java | 2 +- .../udf/generic/TestGenericUDFOPDivide.java | 2 +- .../queries/clientpositive/decimal_join2.q | 26 + .../alter_partition_change_col.q.out | 28 +- .../results/clientpositive/avro_decimal.q.out | 10 +- .../clientpositive/avro_decimal_native.q.out | 10 +- .../clientpositive/char_pad_convert.q.out | 4 +- .../results/clientpositive/decimal_2.q.out | 2 +- .../results/clientpositive/decimal_3.q.out | 104 +-- .../results/clientpositive/decimal_4.q.out | 24 +- .../results/clientpositive/decimal_5.q.out | 24 +- .../results/clientpositive/decimal_6.q.out | 20 +- .../clientpositive/decimal_join2.q.out | 371 ++++++++++ .../clientpositive/decimal_precision.q.out | 90 +-- .../clientpositive/decimal_trailing.q.out | 38 +- .../results/clientpositive/decimal_udf.q.out | 292 ++++---- .../orc_predicate_pushdown.q.out | 4 +- .../clientpositive/parquet_decimal.q.out | 10 +- .../clientpositive/parquet_decimal1.q.out | 6 +- .../results/clientpositive/serde_regex.q.out | 14 +- .../clientpositive/tez/mapjoin_decimal.q.out | 636 +++++++++--------- .../clientpositive/tez/update_all_types.q.out | 30 +- .../tez/vector_between_in.q.out | 8 +- .../tez/vector_data_types.q.out | 4 +- .../clientpositive/tez/vector_decimal_2.q.out | 2 +- .../clientpositive/tez/vector_decimal_3.q.out | 120 ++-- .../clientpositive/tez/vector_decimal_4.q.out | 48 +- .../clientpositive/tez/vector_decimal_5.q.out | 24 +- .../clientpositive/tez/vector_decimal_6.q.out | 40 +- .../tez/vector_decimal_aggregate.q.out | 8 +- .../tez/vector_decimal_cast.q.out | 20 +- .../tez/vector_decimal_expressions.q.out | 6 +- .../tez/vector_decimal_mapjoin.q.out | 40 +- .../tez/vector_decimal_precision.q.out | 90 +-- .../tez/vector_decimal_trailing.q.out | 38 +- .../tez/vector_decimal_udf.q.out | 292 ++++---- .../tez/vector_reduce_groupby_decimal.q.out | 12 +- .../results/clientpositive/udf_case.q.out | 2 +- .../results/clientpositive/udf_when.q.out | 2 +- .../clientpositive/update_all_types.q.out | 30 +- .../clientpositive/vector_aggregate_9.q.out | 2 +- .../clientpositive/vector_between_in.q.out | 8 +- .../clientpositive/vector_data_types.q.out | 4 +- .../clientpositive/vector_decimal_2.q.out | 2 +- .../clientpositive/vector_decimal_3.q.out | 104 +-- .../clientpositive/vector_decimal_4.q.out | 48 +- .../clientpositive/vector_decimal_5.q.out | 24 +- .../clientpositive/vector_decimal_6.q.out | 40 +- .../vector_decimal_aggregate.q.out | 8 +- .../clientpositive/vector_decimal_cast.q.out | 20 +- .../vector_decimal_expressions.q.out | 6 +- .../vector_decimal_mapjoin.q.out | 40 +- .../vector_decimal_precision.q.out | 90 +-- .../vector_decimal_round_2.q.out | 6 +- .../vector_decimal_trailing.q.out | 38 +- .../clientpositive/vector_decimal_udf.q.out | 292 ++++---- .../vector_reduce_groupby_decimal.q.out | 12 +- .../clientpositive/windowing_decimal.q.out | 10 +- .../clientpositive/windowing_navfn.q.out | 20 +- .../clientpositive/windowing_rank.q.out | 60 +- .../binarysortable/BinarySortableSerDe.java | 2 +- 67 files changed, 1971 insertions(+), 1607 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/decimal_join2.q create mode 100644 ql/src/test/results/clientpositive/decimal_join2.q.out diff --git a/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java b/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java index bd3e99777fa8..d4cc32dd0d41 100644 --- a/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java +++ b/common/src/java/org/apache/hadoop/hive/common/type/Decimal128.java @@ -102,13 +102,6 @@ public final class Decimal128 extends Number implements Comparable { */ private short scale; - /** - * This is the actual scale detected from the value passed to this Decimal128. - * The value is always equals or less than #scale. It is used to return the correct - * decimal string from {@link #getHiveDecimalString()}. - */ - private short actualScale; - /** * -1 means negative, 0 means zero, 1 means positive. * @@ -134,7 +127,6 @@ public Decimal128() { this.unscaledValue = new UnsignedInt128(); this.scale = 0; this.signum = 0; - this.actualScale = 0; } /** @@ -147,7 +139,6 @@ public Decimal128(Decimal128 o) { this.unscaledValue = new UnsignedInt128(o.unscaledValue); this.scale = o.scale; this.signum = o.signum; - this.actualScale = o.actualScale; } /** @@ -187,7 +178,6 @@ public Decimal128(UnsignedInt128 unscaledVal, short scale, boolean negative) { checkScaleRange(scale); this.unscaledValue = new UnsignedInt128(unscaledVal); this.scale = scale; - this.actualScale = scale; if (unscaledValue.isZero()) { this.signum = 0; } else { @@ -274,7 +264,6 @@ public Decimal128 update(Decimal128 o) { this.unscaledValue.update(o.unscaledValue); this.scale = o.scale; this.signum = o.signum; - this.actualScale = o.actualScale; return this; } @@ -303,7 +292,7 @@ public Decimal128 update(long val) { /** * Update the value of this object with the given {@code long} with the given - * scale. + * scal. * * @param val * {@code long} value to be set to {@code Decimal128}. @@ -325,8 +314,6 @@ public Decimal128 update(long val, short scale) { if (scale != 0) { changeScaleDestructive(scale); } - // set actualScale to 0 because there is no fractional digits on integer values - this.actualScale = 0; return this; } @@ -354,11 +341,6 @@ public Decimal128 update(double val, short scale) { checkScaleRange(scale); this.scale = scale; - // Obtains the scale of the double value to keep a record of the original - // scale. This will be used to print the HiveDecimal string with the - // correct value scale. - this.actualScale = (short) BigDecimal.valueOf(val).scale(); - // Translate the double into sign, exponent and significand, according // to the formulae in JLS, Section 20.10.22. long valBits = Double.doubleToLongBits(val); @@ -382,10 +364,6 @@ public Decimal128 update(double val, short scale) { exponent++; } - // Calculate the real number of fractional digits from the double value - this.actualScale -= (exponent > 0) ? exponent : 0; - this.actualScale = (this.actualScale < 0) ? 0 : this.actualScale; - // so far same as java.math.BigDecimal, but the scaling below is // specific to ANSI SQL Numeric. @@ -448,7 +426,6 @@ public Decimal128 update(double val, short scale) { public Decimal128 update(IntBuffer buf, int precision) { int scaleAndSignum = buf.get(); this.scale = (short) (scaleAndSignum >> 16); - this.actualScale = this.scale; this.signum = (byte) (scaleAndSignum & 0xFF); this.unscaledValue.update(buf, precision); assert ((signum == 0) == unscaledValue.isZero()); @@ -465,7 +442,6 @@ public Decimal128 update(IntBuffer buf, int precision) { public Decimal128 update128(IntBuffer buf) { int scaleAndSignum = buf.get(); this.scale = (short) (scaleAndSignum >> 16); - this.actualScale = this.scale; this.signum = (byte) (scaleAndSignum & 0xFF); this.unscaledValue.update128(buf); assert ((signum == 0) == unscaledValue.isZero()); @@ -482,7 +458,6 @@ public Decimal128 update128(IntBuffer buf) { public Decimal128 update96(IntBuffer buf) { int scaleAndSignum = buf.get(); this.scale = (short) (scaleAndSignum >> 16); - this.actualScale = this.scale; this.signum = (byte) (scaleAndSignum & 0xFF); this.unscaledValue.update96(buf); assert ((signum == 0) == unscaledValue.isZero()); @@ -499,7 +474,6 @@ public Decimal128 update96(IntBuffer buf) { public Decimal128 update64(IntBuffer buf) { int scaleAndSignum = buf.get(); this.scale = (short) (scaleAndSignum >> 16); - this.actualScale = this.scale; this.signum = (byte) (scaleAndSignum & 0xFF); this.unscaledValue.update64(buf); assert ((signum == 0) == unscaledValue.isZero()); @@ -516,7 +490,6 @@ public Decimal128 update64(IntBuffer buf) { public Decimal128 update32(IntBuffer buf) { int scaleAndSignum = buf.get(); this.scale = (short) (scaleAndSignum >> 16); - this.actualScale = this.scale; this.signum = (byte) (scaleAndSignum & 0xFF); this.unscaledValue.update32(buf); assert ((signum == 0) == unscaledValue.isZero()); @@ -537,7 +510,6 @@ public Decimal128 update32(IntBuffer buf) { public Decimal128 update(int[] array, int offset, int precision) { int scaleAndSignum = array[offset]; this.scale = (short) (scaleAndSignum >> 16); - this.actualScale = this.scale; this.signum = (byte) (scaleAndSignum & 0xFF); this.unscaledValue.update(array, offset + 1, precision); return this; @@ -555,7 +527,6 @@ public Decimal128 update(int[] array, int offset, int precision) { public Decimal128 update128(int[] array, int offset) { int scaleAndSignum = array[offset]; this.scale = (short) (scaleAndSignum >> 16); - this.actualScale = this.scale; this.signum = (byte) (scaleAndSignum & 0xFF); this.unscaledValue.update128(array, offset + 1); return this; @@ -573,7 +544,6 @@ public Decimal128 update128(int[] array, int offset) { public Decimal128 update96(int[] array, int offset) { int scaleAndSignum = array[offset]; this.scale = (short) (scaleAndSignum >> 16); - this.actualScale = this.scale; this.signum = (byte) (scaleAndSignum & 0xFF); this.unscaledValue.update96(array, offset + 1); return this; @@ -591,7 +561,6 @@ public Decimal128 update96(int[] array, int offset) { public Decimal128 update64(int[] array, int offset) { int scaleAndSignum = array[offset]; this.scale = (short) (scaleAndSignum >> 16); - this.actualScale = this.scale; this.signum = (byte) (scaleAndSignum & 0xFF); this.unscaledValue.update64(array, offset + 1); return this; @@ -609,7 +578,6 @@ public Decimal128 update64(int[] array, int offset) { public Decimal128 update32(int[] array, int offset) { int scaleAndSignum = array[offset]; this.scale = (short) (scaleAndSignum >> 16); - this.actualScale = this.scale; this.signum = (byte) (scaleAndSignum & 0xFF); this.unscaledValue.update32(array, offset + 1); return this; @@ -632,6 +600,7 @@ public Decimal128 update(BigDecimal bigDecimal) { * @param scale */ public Decimal128 update(BigInteger bigInt, short scale) { + this.scale = scale; this.signum = (byte) bigInt.compareTo(BigInteger.ZERO); if (signum == 0) { update(0); @@ -640,9 +609,6 @@ public Decimal128 update(BigInteger bigInt, short scale) { } else { unscaledValue.update(bigInt); } - this.scale = scale; - this.actualScale = scale; - return this; } @@ -765,9 +731,6 @@ public Decimal128 update(char[] str, int offset, int length, short scale) { this.unscaledValue.addDestructive(accumulated); } - this.actualScale = (short) (fractionalDigits - exponent); - this.actualScale = (this.actualScale < 0) ? 0 : this.actualScale; - int scaleAdjust = scale - fractionalDigits + exponent; if (scaleAdjust > 0) { this.unscaledValue.scaleUpTenDestructive((short) scaleAdjust); @@ -961,7 +924,6 @@ public void changeScaleDestructive(short scale) { this.unscaledValue.scaleUpTenDestructive((short) -scaleDown); } this.scale = scale; - this.actualScale = scale; this.unscaledValue.throwIfExceedsTenToThirtyEight(); } @@ -1163,7 +1125,6 @@ public void multiplyDestructiveNativeDecimal128(Decimal128 right, short newScale if (this.signum == 0 || right.signum == 0) { this.zeroClear(); this.scale = newScale; - this.actualScale = newScale; return; } @@ -1193,7 +1154,6 @@ public void multiplyDestructiveNativeDecimal128(Decimal128 right, short newScale } this.scale = newScale; - this.actualScale = newScale; this.signum = (byte) (this.signum * right.signum); if (this.unscaledValue.isZero()) { this.signum = 0; // because of scaling down, this could happen @@ -1284,7 +1244,6 @@ public void divideDestructiveNativeDecimal128(Decimal128 right, short newScale, } if (this.signum == 0) { this.scale = newScale; - this.actualScale = newScale; remainder.update(this); return; } @@ -1312,7 +1271,6 @@ public void divideDestructiveNativeDecimal128(Decimal128 right, short newScale, } this.scale = newScale; - this.actualScale = newScale; this.signum = (byte) (this.unscaledValue.isZero() ? 0 : (this.signum * right.signum)); remainder.scale = scale; @@ -1773,13 +1731,17 @@ private static void checkScaleRange(short scale) { private int [] tmpArray = new int[2]; /** - * Returns the string representation of this value. It returns the original - * {@code actualScale} fractional part when this value was created. However, + * Returns the string representation of this value. It discards the trailing zeros + * in the fractional part to match the HiveDecimal's string representation. However, * don't use this string representation for the reconstruction of the object. * * @return string representation of this value */ public String getHiveDecimalString() { + if (this.signum == 0) { + return "0"; + } + StringBuilder buf = new StringBuilder(50); if (this.signum < 0) { buf.append('-'); @@ -1790,40 +1752,32 @@ public String getHiveDecimalString() { int trailingZeros = tmpArray[1]; int numIntegerDigits = unscaledLength - this.scale; if (numIntegerDigits > 0) { + // write out integer part first // then write out fractional part for (int i=0; i < numIntegerDigits; i++) { buf.append(unscaled[i]); } - if (this.actualScale > 0) { + if (this.scale > trailingZeros) { buf.append('.'); - - if (trailingZeros > this.actualScale) { - for (int i=0; i < (trailingZeros - this.scale); i++) { - buf.append("0"); - } - } - - for (int i = numIntegerDigits; i < (numIntegerDigits + this.actualScale); i++) { + for (int i = numIntegerDigits; i < (unscaledLength - trailingZeros); i++) { buf.append(unscaled[i]); } } } else { + // no integer part buf.append('0'); - if (this.actualScale > 0) { + if (this.scale > trailingZeros) { + // fractional part has, starting with zeros buf.append('.'); - - if (this.actualScale > trailingZeros) { - for (int i = unscaledLength; i < this.scale; ++i) { - buf.append('0'); - } + for (int i = unscaledLength; i < this.scale; ++i) { + buf.append('0'); } - - for (int i = 0; i < (numIntegerDigits + this.actualScale); i++) { + for (int i = 0; i < (unscaledLength - trailingZeros); i++) { buf.append(unscaled[i]); } } @@ -1882,10 +1836,9 @@ public String toFormalString() { @Override public String toString() { - return toFormalString() + "(Decimal128: scale=" + scale + ", actualScale=" - + this.actualScale + ", signum=" + signum + ", BigDecimal.toString=" - + toBigDecimal().toString() + ", unscaledValue=[" + unscaledValue.toString() - + "])"; + return toFormalString() + "(Decimal128: scale=" + scale + ", signum=" + + signum + ", BigDecimal.toString=" + toBigDecimal().toString() + + ", unscaledValue=[" + unscaledValue.toString() + "])"; } /** @@ -2003,7 +1956,6 @@ public Decimal128 updateVarianceDestructive( */ public Decimal128 fastUpdateFromInternalStorage(byte[] internalStorage, short scale) { this.scale = scale; - this.actualScale = scale; this.signum = this.unscaledValue.fastUpdateFromInternalStorage(internalStorage); return this; diff --git a/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java b/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java index 0bb84e18d423..c2bf6d79ab95 100644 --- a/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java +++ b/common/src/java/org/apache/hadoop/hive/common/type/HiveDecimal.java @@ -30,6 +30,7 @@ public class HiveDecimal implements Comparable { public static final int MAX_PRECISION = 38; public static final int MAX_SCALE = 38; + /** * Default precision/scale when user doesn't specify in the column metadata, such as * decimal and decimal(8). @@ -112,7 +113,7 @@ public int compareTo(HiveDecimal dec) { @Override public int hashCode() { - return trim(bd).hashCode(); + return bd.hashCode(); } @Override @@ -168,7 +169,7 @@ public HiveDecimal subtract(HiveDecimal dec) { } public HiveDecimal multiply(HiveDecimal dec) { - return create(bd.multiply(dec.bd), true); + return create(bd.multiply(dec.bd), false); } public BigInteger unscaledValue() { @@ -201,7 +202,7 @@ public HiveDecimal remainder(HiveDecimal dec) { } public HiveDecimal divide(HiveDecimal dec) { - return create(trim(bd.divide(dec.bd, MAX_SCALE, RoundingMode.HALF_UP)), true); + return create(bd.divide(dec.bd, MAX_SCALE, RoundingMode.HALF_UP), true); } /** @@ -231,6 +232,8 @@ private static BigDecimal normalize(BigDecimal bd, boolean allowRounding) { return null; } + bd = trim(bd); + int intDigits = bd.precision() - bd.scale(); if (intDigits > MAX_PRECISION) { @@ -241,6 +244,8 @@ private static BigDecimal normalize(BigDecimal bd, boolean allowRounding) { if (bd.scale() > maxScale ) { if (allowRounding) { bd = bd.setScale(maxScale, RoundingMode.HALF_UP); + // Trimming is again necessary, because rounding may introduce new trailing 0's. + bd = trim(bd); } else { bd = null; } @@ -254,6 +259,8 @@ public static BigDecimal enforcePrecisionScale(BigDecimal bd, int maxPrecision, return null; } + bd = trim(bd); + if (bd.scale() > maxScale) { bd = bd.setScale(maxScale, RoundingMode.HALF_UP); } diff --git a/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java b/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java index 0786ccacce6d..46236a520088 100644 --- a/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java +++ b/common/src/test/org/apache/hadoop/hive/common/type/TestDecimal128.java @@ -811,7 +811,7 @@ public void testToHiveDecimalString() { assertEquals("0.00923076923", d2.getHiveDecimalString()); Decimal128 d3 = new Decimal128("0.00923076000", (short) 15); - assertEquals("0.00923076000", d3.getHiveDecimalString()); + assertEquals("0.00923076", d3.getHiveDecimalString()); Decimal128 d4 = new Decimal128("4294967296.01", (short) 15); assertEquals("4294967296.01", d4.getHiveDecimalString()); @@ -849,37 +849,15 @@ public void testToHiveDecimalString() { d11.update(hd6.bigDecimalValue()); assertEquals(hd6.toString(), d11.getHiveDecimalString()); - // The trailing zeros from a double value are trimmed automatically - // by the double data type Decimal128 d12 = new Decimal128(27.000, (short)3); - HiveDecimal hd7 = HiveDecimal.create(new BigDecimal("27.0")); + HiveDecimal hd7 = HiveDecimal.create(new BigDecimal("27.000")); assertEquals(hd7.toString(), d12.getHiveDecimalString()); - assertEquals("27.0", d12.getHiveDecimalString()); + assertEquals("27", d12.getHiveDecimalString()); Decimal128 d13 = new Decimal128(1234123000, (short)3); HiveDecimal hd8 = HiveDecimal.create(new BigDecimal("1234123000")); assertEquals(hd8.toString(), d13.getHiveDecimalString()); assertEquals("1234123000", d13.getHiveDecimalString()); - - Decimal128 d14 = new Decimal128(1.33e4, (short)10); - HiveDecimal hd9 = HiveDecimal.create(new BigDecimal("1.33e4")); - assertEquals(hd9.toString(), d14.getHiveDecimalString()); - assertEquals("13300", d14.getHiveDecimalString()); - - Decimal128 d15 = new Decimal128(1.33e-4, (short)10); - HiveDecimal hd10 = HiveDecimal.create(new BigDecimal("1.33e-4")); - assertEquals(hd10.toString(), d15.getHiveDecimalString()); - assertEquals("0.000133", d15.getHiveDecimalString()); - - Decimal128 d16 = new Decimal128("1.33e4", (short)10); - HiveDecimal hd11 = HiveDecimal.create(new BigDecimal("1.33e4")); - assertEquals(hd11.toString(), d16.getHiveDecimalString()); - assertEquals("13300", d16.getHiveDecimalString()); - - Decimal128 d17 = new Decimal128("1.33e-4", (short)10); - HiveDecimal hd12 = HiveDecimal.create(new BigDecimal("1.33e-4")); - assertEquals(hd12.toString(), d17.getHiveDecimalString()); - assertEquals("0.000133", d17.getHiveDecimalString()); } @Test diff --git a/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java b/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java index 959989a14392..ba5ef71d29fa 100644 --- a/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java +++ b/common/src/test/org/apache/hadoop/hive/common/type/TestHiveDecimal.java @@ -57,35 +57,27 @@ public void testPrecisionScaleEnforcement() { Assert.assertEquals("-1786135888657847525803324040144343378.1", dec.toString()); dec = HiveDecimal.create("005.34000"); - Assert.assertEquals(dec.precision(), 6); - Assert.assertEquals(dec.scale(), 5); + Assert.assertEquals(dec.precision(), 3); + Assert.assertEquals(dec.scale(), 2); dec = HiveDecimal.create("178613588865784752580332404014434337809799306448796128931113691624"); Assert.assertNull(dec); - // Leaving trailing zeros - Assert.assertEquals("0.0", HiveDecimal.enforcePrecisionScale(new BigDecimal("0.0"), 2, 1).toString()); - Assert.assertEquals("0.00", HiveDecimal.enforcePrecisionScale(new BigDecimal("0.00"), 3, 2).toString()); - Assert.assertEquals("0.0000", HiveDecimal.enforcePrecisionScale(new BigDecimal("0.0000"), 10, 4).toString()); - Assert.assertEquals("100.00000", HiveDecimal.enforcePrecisionScale(new BigDecimal("100.00000"), 15, 5).toString()); - Assert.assertEquals("100.00", HiveDecimal.enforcePrecisionScale(new BigDecimal("100.00"), 15, 5).toString()); - - // Rounding numbers - Assert.assertEquals("0.01", HiveDecimal.enforcePrecisionScale(new BigDecimal("0.012"), 3, 2).toString()); - Assert.assertEquals("0.02", HiveDecimal.enforcePrecisionScale(new BigDecimal("0.015"), 3, 2).toString()); - Assert.assertEquals("0.01", HiveDecimal.enforcePrecisionScale(new BigDecimal("0.0145"), 3, 2).toString()); - // Rounding numbers that increase int digits Assert.assertEquals("10", HiveDecimal.enforcePrecisionScale(new BigDecimal("9.5"), 2, 0).toString()); Assert.assertNull(HiveDecimal.enforcePrecisionScale(new BigDecimal("9.5"), 1, 0)); Assert.assertEquals("9", HiveDecimal.enforcePrecisionScale(new BigDecimal("9.4"), 1, 0).toString()); + } - // Integers with no scale values are not modified (zeros are not null) - Assert.assertEquals("0", HiveDecimal.enforcePrecisionScale(new BigDecimal("0"), 1, 0).toString()); - Assert.assertEquals("30", HiveDecimal.enforcePrecisionScale(new BigDecimal("30"), 2, 0).toString()); - Assert.assertEquals("5", HiveDecimal.enforcePrecisionScale(new BigDecimal("5"), 3, 2).toString()); + @Test + @Concurrent(count=4) + @Repeating(repetition=100) + public void testTrailingZeroRemovalAfterEnforcement() { + String decStr = "8.090000000000000000000000000000000000000123456"; + HiveDecimal dec = HiveDecimal.create(decStr); + Assert.assertEquals("8.09", dec.toString()); } @Test @@ -94,7 +86,7 @@ public void testPrecisionScaleEnforcement() { public void testMultiply() { HiveDecimal dec1 = HiveDecimal.create("0.00001786135888657847525803"); HiveDecimal dec2 = HiveDecimal.create("3.0000123456789"); - Assert.assertNotNull(dec1.multiply(dec2)); + Assert.assertNull(dec1.multiply(dec2)); dec1 = HiveDecimal.create("178613588865784752580323232232323444.4"); dec2 = HiveDecimal.create("178613588865784752580302323232.3"); @@ -106,11 +98,11 @@ public void testMultiply() { dec1 = HiveDecimal.create("3.140"); dec2 = HiveDecimal.create("1.00"); - Assert.assertEquals("3.14000", dec1.multiply(dec2).toString()); + Assert.assertEquals("3.14", dec1.multiply(dec2).toString()); dec1 = HiveDecimal.create("43.010"); dec2 = HiveDecimal.create("2"); - Assert.assertEquals("86.020", dec1.multiply(dec2).toString()); + Assert.assertEquals("86.02", dec1.multiply(dec2).toString()); } @Test @@ -125,7 +117,7 @@ public void testPow() { Assert.assertNull(dec1); dec1 = HiveDecimal.create("3.140"); - Assert.assertEquals("9.859600", dec1.pow(2).toString()); + Assert.assertEquals("9.8596", dec1.pow(2).toString()); } @Test @@ -155,7 +147,7 @@ public void testPlus() { dec1 = HiveDecimal.create("3.140"); dec2 = HiveDecimal.create("1.00"); - Assert.assertEquals("4.140", dec1.add(dec2).toString()); + Assert.assertEquals("4.14", dec1.add(dec2).toString()); } @@ -165,7 +157,7 @@ public void testPlus() { public void testSubtract() { HiveDecimal dec1 = HiveDecimal.create("3.140"); HiveDecimal dec2 = HiveDecimal.create("1.00"); - Assert.assertEquals("2.140", dec1.subtract(dec2).toString()); + Assert.assertEquals("2.14", dec1.subtract(dec2).toString()); } @Test diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestDecimalUtil.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestDecimalUtil.java index e0ca6fbcc2ea..da9ebca15408 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestDecimalUtil.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestDecimalUtil.java @@ -38,8 +38,9 @@ public void testFloor() { DecimalUtil.floor(0, d1, dcv); Assert.assertEquals(0, expected1.compareTo(dcv.vector[0].getHiveDecimal())); + // As of HIVE-8745, these decimal values should be trimmed of trailing zeros. HiveDecimal d2 = HiveDecimal.create("23.00000"); - Assert.assertEquals(5, d2.scale()); + Assert.assertEquals(0, d2.scale()); HiveDecimal expected2 = HiveDecimal.create("23"); DecimalUtil.floor(0, d2, dcv); Assert.assertEquals(0, expected2.compareTo(dcv.vector[0].getHiveDecimal())); @@ -50,19 +51,19 @@ public void testFloor() { Assert.assertEquals(0, expected3.compareTo(dcv.vector[0].getHiveDecimal())); HiveDecimal d4 = HiveDecimal.create("-17.00000"); - Assert.assertEquals(5, d4.scale()); + Assert.assertEquals(0, d4.scale()); HiveDecimal expected4 = HiveDecimal.create("-17"); DecimalUtil.floor(0, d4, dcv); Assert.assertEquals(0, expected4.compareTo(dcv.vector[0].getHiveDecimal())); HiveDecimal d5 = HiveDecimal.create("-0.30000"); - Assert.assertEquals(5, d5.scale()); + Assert.assertEquals(1, d5.scale()); HiveDecimal expected5 = HiveDecimal.create("-1"); DecimalUtil.floor(0, d5, dcv); Assert.assertEquals(0, expected5.compareTo(dcv.vector[0].getHiveDecimal())); HiveDecimal d6 = HiveDecimal.create("0.30000"); - Assert.assertEquals(5, d6.scale()); + Assert.assertEquals(1, d6.scale()); HiveDecimal expected6 = HiveDecimal.create("0"); DecimalUtil.floor(0, d6, dcv); Assert.assertEquals(0, expected6.compareTo(dcv.vector[0].getHiveDecimal())); @@ -76,8 +77,9 @@ public void testCeiling() { DecimalUtil.ceiling(0, d1, dcv); Assert.assertEquals(0, expected1.compareTo(dcv.vector[0].getHiveDecimal())); + // As of HIVE-8745, these decimal values should be trimmed of trailing zeros. HiveDecimal d2 = HiveDecimal.create("23.00000"); - Assert.assertEquals(5, d2.scale()); + Assert.assertEquals(0, d2.scale()); HiveDecimal expected2 = HiveDecimal.create("23"); DecimalUtil.ceiling(0, d2, dcv); Assert.assertEquals(0, expected2.compareTo(dcv.vector[0].getHiveDecimal())); @@ -88,19 +90,19 @@ public void testCeiling() { Assert.assertEquals(0, expected3.compareTo(dcv.vector[0].getHiveDecimal())); HiveDecimal d4 = HiveDecimal.create("-17.00000"); - Assert.assertEquals(5, d4.scale()); + Assert.assertEquals(0, d4.scale()); HiveDecimal expected4 = HiveDecimal.create("-17"); DecimalUtil.ceiling(0, d4, dcv); Assert.assertEquals(0, expected4.compareTo(dcv.vector[0].getHiveDecimal())); HiveDecimal d5 = HiveDecimal.create("-0.30000"); - Assert.assertEquals(5, d5.scale()); + Assert.assertEquals(1, d5.scale()); HiveDecimal expected5 = HiveDecimal.create("0"); DecimalUtil.ceiling(0, d5, dcv); Assert.assertEquals(0, expected5.compareTo(dcv.vector[0].getHiveDecimal())); HiveDecimal d6 = HiveDecimal.create("0.30000"); - Assert.assertEquals(5, d6.scale()); + Assert.assertEquals(1, d6.scale()); HiveDecimal expected6 = HiveDecimal.create("1"); DecimalUtil.ceiling(0, d6, dcv); Assert.assertEquals(0, expected6.compareTo(dcv.vector[0].getHiveDecimal())); @@ -127,8 +129,9 @@ public void testRound() { DecimalUtil.round(0, d1, dcv); Assert.assertEquals(0, expected1.compareTo(dcv.vector[0].getHiveDecimal())); + // As of HIVE-8745, these decimal values should be trimmed of trailing zeros. HiveDecimal d2 = HiveDecimal.create("23.00000"); - Assert.assertEquals(5, d2.scale()); + Assert.assertEquals(0, d2.scale()); HiveDecimal expected2 = HiveDecimal.create("23"); DecimalUtil.round(0, d2, dcv); Assert.assertEquals(0, expected2.compareTo(dcv.vector[0].getHiveDecimal())); @@ -139,7 +142,7 @@ public void testRound() { Assert.assertEquals(0, expected3.compareTo(dcv.vector[0].getHiveDecimal())); HiveDecimal d4 = HiveDecimal.create("-17.00000"); - Assert.assertEquals(5, d4.scale()); + Assert.assertEquals(0, d4.scale()); HiveDecimal expected4 = HiveDecimal.create("-17"); DecimalUtil.round(0, d4, dcv); Assert.assertEquals(0, expected4.compareTo(dcv.vector[0].getHiveDecimal())); @@ -163,8 +166,9 @@ public void testRoundWithDigits() { DecimalUtil.round(0, d1, dcv); Assert.assertEquals(0, expected1.compareTo(dcv.vector[0].getHiveDecimal())); + // As of HIVE-8745, these decimal values should be trimmed of trailing zeros. HiveDecimal d2 = HiveDecimal.create("23.56700"); - Assert.assertEquals(5, d2.scale()); + Assert.assertEquals(3, d2.scale()); HiveDecimal expected2 = HiveDecimal.create("23.567"); DecimalUtil.round(0, d2, dcv); Assert.assertEquals(0, expected2.compareTo(dcv.vector[0].getHiveDecimal())); @@ -175,7 +179,7 @@ public void testRoundWithDigits() { Assert.assertEquals(0, expected3.compareTo(dcv.vector[0].getHiveDecimal())); HiveDecimal d4 = HiveDecimal.create("-17.23400"); - Assert.assertEquals(5, d4.scale()); + Assert.assertEquals(3, d4.scale()); HiveDecimal expected4 = HiveDecimal.create("-17.234"); DecimalUtil.round(0, d4, dcv); Assert.assertEquals(0, expected4.compareTo(dcv.vector[0].getHiveDecimal())); @@ -204,8 +208,9 @@ public void testNegate() { DecimalUtil.negate(0, d2, dcv); Assert.assertEquals(0, expected2.compareTo(dcv.vector[0].getHiveDecimal())); + // As of HIVE-8745, these decimal values should be trimmed of trailing zeros. HiveDecimal d3 = HiveDecimal.create("0.00000"); - Assert.assertEquals(5, d3.scale()); + Assert.assertEquals(0, d3.scale()); HiveDecimal expected3 = HiveDecimal.create("0"); DecimalUtil.negate(0, d3, dcv); Assert.assertEquals(0, expected3.compareTo(dcv.vector[0].getHiveDecimal())); @@ -223,7 +228,7 @@ public void testSign() { Assert.assertEquals(-1, lcv.vector[0]); HiveDecimal d3 = HiveDecimal.create("0.00000"); - Assert.assertEquals(5, d3.scale()); + Assert.assertEquals(0, d3.scale()); d3.setScale(5); DecimalUtil.sign(0, d3, lcv); Assert.assertEquals(0, lcv.vector[0]); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java index 0802e3ba6629..c867a3cfb1d9 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java @@ -323,18 +323,19 @@ public void testCastDecimalToString() { expr.evaluate(b); BytesColumnVector r = (BytesColumnVector) b.cols[1]; - byte[] v = toBytes("1.10"); + // As of HIVE-8745, these decimal values should be trimmed of trailing zeros. + byte[] v = toBytes("1.1"); assertTrue(((Integer) v.length).toString() + " " + r.length[0], v.length == r.length[0]); Assert.assertEquals(0, StringExpr.compare(v, 0, v.length, r.vector[0], r.start[0], r.length[0])); - v = toBytes("-2.20"); + v = toBytes("-2.2"); Assert.assertEquals(0, StringExpr.compare(v, 0, v.length, r.vector[1], r.start[1], r.length[1])); - v = toBytes("9999999999999999.00"); + v = toBytes("9999999999999999"); Assert.assertEquals(0, StringExpr.compare(v, 0, v.length, r.vector[2], r.start[2], r.length[2])); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java b/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java index 831ef8c8ec64..c91644c9629b 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java @@ -2830,7 +2830,7 @@ public void testBuilderComplexTypes() throws Exception { .build(); assertEquals("leaf-0 = (LESS_THAN x 1970-01-11)\n" + "leaf-1 = (LESS_THAN_EQUALS y hi)\n" + - "leaf-2 = (EQUALS z 1.0)\n" + + "leaf-2 = (EQUALS z 1)\n" + "expr = (and leaf-0 leaf-1 leaf-2)", sarg.toString()); sarg = SearchArgumentFactory.newBuilder() diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFOPDivide.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFOPDivide.java index ce578a0934ef..4c5b3a574040 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFOPDivide.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFOPDivide.java @@ -187,7 +187,7 @@ public void testDecimalDivideDecimal() throws HiveException { PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.getDecimalTypeInfo(11, 7), oi.getTypeInfo()); HiveDecimalWritable res = (HiveDecimalWritable) udf.evaluate(args); - Assert.assertEquals(HiveDecimal.create("0.0617100"), res.getHiveDecimal()); + Assert.assertEquals(HiveDecimal.create("0.06171"), res.getHiveDecimal()); } @Test diff --git a/ql/src/test/queries/clientpositive/decimal_join2.q b/ql/src/test/queries/clientpositive/decimal_join2.q new file mode 100644 index 000000000000..fb45367646da --- /dev/null +++ b/ql/src/test/queries/clientpositive/decimal_join2.q @@ -0,0 +1,26 @@ +DROP TABLE IF EXISTS DECIMAL_3_txt; +DROP TABLE IF EXISTS DECIMAL_3; + +CREATE TABLE DECIMAL_3_txt(key decimal(38,18), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_3_txt; + +CREATE TABLE DECIMAL_3 STORED AS ORC AS SELECT * FROM DECIMAL_3_txt; + +set hive.auto.convert.join=false; +EXPLAIN +SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value; + +SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value; + +set hive.auto.convert.join=true; +EXPLAIN +SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value; + +SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value; + +DROP TABLE DECIMAL_3_txt; +DROP TABLE DECIMAL_3; diff --git a/ql/src/test/results/clientpositive/alter_partition_change_col.q.out b/ql/src/test/results/clientpositive/alter_partition_change_col.q.out index 148bff47dcf7..0d97b7ac4315 100644 --- a/ql/src/test/results/clientpositive/alter_partition_change_col.q.out +++ b/ql/src/test/results/clientpositive/alter_partition_change_col.q.out @@ -280,7 +280,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 #### A masked pattern was here #### -Beck 0.0 abc 123 +Beck 0 abc 123 Beck 77.341 abc 123 Beck 79.9 abc 123 Cluck 5.96 abc 123 @@ -288,7 +288,7 @@ Mary 33.33 abc 123 Mary 4.329 abc 123 Snow 55.71 abc 123 Tom -12.25 abc 123 -Tom 19.00 abc 123 +Tom 19 abc 123 Tom 234.79 abc 123 PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' PREHOOK: type: QUERY @@ -347,7 +347,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 #### A masked pattern was here #### -Beck 0.0 abc 123 +Beck 0 abc 123 Beck 77.341 abc 123 Beck 79.9 abc 123 Cluck 5.96 abc 123 @@ -355,7 +355,7 @@ Mary 33.33 abc 123 Mary 4.329 abc 123 Snow 55.71 abc 123 Tom -12.25 abc 123 -Tom 19.00 abc 123 +Tom 19 abc 123 Tom 234.79 abc 123 PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' PREHOOK: type: QUERY @@ -367,7 +367,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 #### A masked pattern was here #### -Beck 0.0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 0 __HIVE_DEFAULT_PARTITION__ 123 Beck 77.341 __HIVE_DEFAULT_PARTITION__ 123 Beck 79.9 __HIVE_DEFAULT_PARTITION__ 123 Cluck 5.96 __HIVE_DEFAULT_PARTITION__ 123 @@ -375,7 +375,7 @@ Mary 33.33 __HIVE_DEFAULT_PARTITION__ 123 Mary 4.329 __HIVE_DEFAULT_PARTITION__ 123 Snow 55.71 __HIVE_DEFAULT_PARTITION__ 123 Tom -12.25 __HIVE_DEFAULT_PARTITION__ 123 -Tom 19.00 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19 __HIVE_DEFAULT_PARTITION__ 123 Tom 234.79 __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: -- Try out replace columns alter table alter_partition_change_col1 partition (p1='abc', p2='123') replace columns (c1 string) @@ -449,7 +449,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 #### A masked pattern was here #### -Beck 0.0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 0 __HIVE_DEFAULT_PARTITION__ 123 Beck 77.341 __HIVE_DEFAULT_PARTITION__ 123 Beck 79.9 __HIVE_DEFAULT_PARTITION__ 123 Cluck 5.96 __HIVE_DEFAULT_PARTITION__ 123 @@ -457,7 +457,7 @@ Mary 33.33 __HIVE_DEFAULT_PARTITION__ 123 Mary 4.329 __HIVE_DEFAULT_PARTITION__ 123 Snow 55.71 __HIVE_DEFAULT_PARTITION__ 123 Tom -12.25 __HIVE_DEFAULT_PARTITION__ 123 -Tom 19.00 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19 __HIVE_DEFAULT_PARTITION__ 123 Tom 234.79 __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: alter table alter_partition_change_col1 replace columns (c1 string) PREHOOK: type: ALTERTABLE_REPLACECOLS @@ -593,7 +593,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 #### A masked pattern was here #### -Beck 0.0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 0 __HIVE_DEFAULT_PARTITION__ 123 Beck 77.341 __HIVE_DEFAULT_PARTITION__ 123 Beck 79.9 __HIVE_DEFAULT_PARTITION__ 123 Cluck 5.96 __HIVE_DEFAULT_PARTITION__ 123 @@ -601,7 +601,7 @@ Mary 33.33 __HIVE_DEFAULT_PARTITION__ 123 Mary 4.329 __HIVE_DEFAULT_PARTITION__ 123 Snow 55.71 __HIVE_DEFAULT_PARTITION__ 123 Tom -12.25 __HIVE_DEFAULT_PARTITION__ 123 -Tom 19.00 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19 __HIVE_DEFAULT_PARTITION__ 123 Tom 234.79 __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: alter table alter_partition_change_col1 partition (p1='abc', p2='123') add columns (c2 decimal(14,4)) PREHOOK: type: ALTERTABLE_ADDCOLS @@ -638,7 +638,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=abc/p2=123 #### A masked pattern was here #### -Beck 0.0 abc 123 +Beck 0 abc 123 Beck 77.341 abc 123 Beck 79.9 abc 123 Cluck 5.96 abc 123 @@ -646,7 +646,7 @@ Mary 33.33 abc 123 Mary 4.329 abc 123 Snow 55.71 abc 123 Tom -12.25 abc 123 -Tom 19.00 abc 123 +Tom 19 abc 123 Tom 234.79 abc 123 PREHOOK: query: select * from alter_partition_change_col1 where p1='__HIVE_DEFAULT_PARTITION__' PREHOOK: type: QUERY @@ -658,7 +658,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@alter_partition_change_col1 POSTHOOK: Input: default@alter_partition_change_col1@p1=__HIVE_DEFAULT_PARTITION__/p2=123 #### A masked pattern was here #### -Beck 0.0 __HIVE_DEFAULT_PARTITION__ 123 +Beck 0 __HIVE_DEFAULT_PARTITION__ 123 Beck 77.341 __HIVE_DEFAULT_PARTITION__ 123 Beck 79.9 __HIVE_DEFAULT_PARTITION__ 123 Cluck 5.96 __HIVE_DEFAULT_PARTITION__ 123 @@ -666,7 +666,7 @@ Mary 33.33 __HIVE_DEFAULT_PARTITION__ 123 Mary 4.329 __HIVE_DEFAULT_PARTITION__ 123 Snow 55.71 __HIVE_DEFAULT_PARTITION__ 123 Tom -12.25 __HIVE_DEFAULT_PARTITION__ 123 -Tom 19.00 __HIVE_DEFAULT_PARTITION__ 123 +Tom 19 __HIVE_DEFAULT_PARTITION__ 123 Tom 234.79 __HIVE_DEFAULT_PARTITION__ 123 PREHOOK: query: -- Try changing column for all partitions at once alter table alter_partition_change_col1 partition (p1, p2='123') change column c2 c2 decimal(10,0) diff --git a/ql/src/test/results/clientpositive/avro_decimal.q.out b/ql/src/test/results/clientpositive/avro_decimal.q.out index 921a418f2649..88268ceb3a5d 100644 --- a/ql/src/test/results/clientpositive/avro_decimal.q.out +++ b/ql/src/test/results/clientpositive/avro_decimal.q.out @@ -106,9 +106,9 @@ Mary 4.33 Cluck 5.96 Tom -12.25 Mary 33.33 -Tom 19.00 -Beck 0.00 -Beck 79.90 +Tom 19 +Beck 0 +Beck 79.9 PREHOOK: query: DROP TABLE IF EXISTS avro_dec1 PREHOOK: type: DROPTABLE POSTHOOK: query: DROP TABLE IF EXISTS avro_dec1 @@ -175,10 +175,10 @@ POSTHOOK: Input: default@avro_dec1 77.3 55.7 4.3 -6.0 +6 12.3 33.3 -19.0 +19 3.2 79.9 PREHOOK: query: DROP TABLE dec diff --git a/ql/src/test/results/clientpositive/avro_decimal_native.q.out b/ql/src/test/results/clientpositive/avro_decimal_native.q.out index 60b4ccc0e9a6..c8ae0fb2404c 100644 --- a/ql/src/test/results/clientpositive/avro_decimal_native.q.out +++ b/ql/src/test/results/clientpositive/avro_decimal_native.q.out @@ -92,9 +92,9 @@ Mary 4.33 Cluck 5.96 Tom -12.25 Mary 33.33 -Tom 19.00 -Beck 0.00 -Beck 79.90 +Tom 19 +Beck 0 +Beck 79.9 PREHOOK: query: DROP TABLE IF EXISTS avro_dec1 PREHOOK: type: DROPTABLE POSTHOOK: query: DROP TABLE IF EXISTS avro_dec1 @@ -143,10 +143,10 @@ POSTHOOK: Input: default@avro_dec1 77.3 55.7 4.3 -6.0 +6 12.3 33.3 -19.0 +19 3.2 79.9 PREHOOK: query: DROP TABLE dec diff --git a/ql/src/test/results/clientpositive/char_pad_convert.q.out b/ql/src/test/results/clientpositive/char_pad_convert.q.out index 63568af15e6c..26102e43f81f 100644 --- a/ql/src/test/results/clientpositive/char_pad_convert.q.out +++ b/ql/src/test/results/clientpositive/char_pad_convert.q.out @@ -144,7 +144,7 @@ select lpad(f, 4, ' '), POSTHOOK: type: QUERY POSTHOOK: Input: default@over1k #### A masked pattern was here #### -74.7 42 zzzzzTRUE 20 dd45.40 yard du +74.7 42 zzzzzTRUE 20 ddd45.4 yard du 26.4 37 zzzzzTRUE 20 dd29.62 history 96.9 18 zzzzFALSE 20 dd27.32 history 13.0 34 zzzzFALSE 20 dd23.91 topolog @@ -190,7 +190,7 @@ POSTHOOK: query: select rpad(f, 4, ' '), POSTHOOK: type: QUERY POSTHOOK: Input: default@over1k #### A masked pattern was here #### -74.7 42 TRUEzzzzz 20 45.40dd yard du +74.7 42 TRUEzzzzz 20 45.4ddd yard du 26.4 37 TRUEzzzzz 20 29.62dd history 96.9 18 FALSEzzzz 20 27.32dd history 13.0 34 FALSEzzzz 20 23.91dd topolog diff --git a/ql/src/test/results/clientpositive/decimal_2.q.out b/ql/src/test/results/clientpositive/decimal_2.q.out index 759ecf47a618..934590c66df8 100644 --- a/ql/src/test/results/clientpositive/decimal_2.q.out +++ b/ql/src/test/results/clientpositive/decimal_2.q.out @@ -264,7 +264,7 @@ POSTHOOK: query: select cast(0.99999999999999999999 as decimal(20,19)) from deci POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_2 #### A masked pattern was here #### -1.0 +1 PREHOOK: query: select cast('0.99999999999999999999' as decimal(20,20)) from decimal_2 PREHOOK: type: QUERY PREHOOK: Input: default@decimal_2 diff --git a/ql/src/test/results/clientpositive/decimal_3.q.out b/ql/src/test/results/clientpositive/decimal_3.q.out index acaae655d631..8e9a30a8e2e5 100644 --- a/ql/src/test/results/clientpositive/decimal_3.q.out +++ b/ql/src/test/results/clientpositive/decimal_3.q.out @@ -33,7 +33,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -42,7 +42,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.000000000000000000 0 +0 0 0 0 0 0 0.01 0 @@ -53,8 +53,8 @@ NULL 0 0.33 0 0.333 0 1 1 -1.0 1 -1.000000000000000000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 @@ -62,14 +62,14 @@ NULL 0 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -78,14 +78,14 @@ POSTHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 200 200 125.2 125 -124.00 124 +124 124 100 100 20 20 10 10 -3.140 4 +3.14 4 3.14 3 3.14 3 3.14 3 @@ -93,8 +93,8 @@ POSTHOOK: Input: default@decimal_3 2 2 1.122 1 1.12 1 -1.000000000000000000 1 -1.0 1 +1 1 +1 1 1 1 0.333 0 0.33 0 @@ -105,7 +105,7 @@ POSTHOOK: Input: default@decimal_3 0.01 0 0 0 0 0 -0.000000000000000000 0 +0 0 -0.3 0 -0.33 0 -0.333 0 @@ -114,7 +114,7 @@ POSTHOOK: Input: default@decimal_3 -1.122 -11 -1255.49 -1255 -4400 4400 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 NULL 0 PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value PREHOOK: type: QUERY @@ -125,7 +125,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -134,7 +134,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.000000000000000000 0 +0 0 0 0 0 0 0.01 0 @@ -145,8 +145,8 @@ NULL 0 0.33 0 0.333 0 1 1 -1.0 1 -1.000000000000000000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 @@ -154,14 +154,14 @@ NULL 0 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT DISTINCT key FROM DECIMAL_3 ORDER BY key PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -171,7 +171,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL --1234567890.1234567890 +-1234567890.123456789 -4400 -1255.49 -1.122 @@ -179,7 +179,7 @@ NULL -0.333 -0.33 -0.3 -0.000000000000000000 +0 0.01 0.02 0.1 @@ -195,10 +195,10 @@ NULL 10 20 100 -124.00 +124 125.2 200 -1234567890.1234567800 +1234567890.12345678 PREHOOK: query: SELECT key, sum(value) FROM DECIMAL_3 GROUP BY key ORDER BY key PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -208,7 +208,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -216,7 +216,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.000000000000000000 0 +0 0 0.01 0 0.02 0 0.1 0 @@ -232,10 +232,10 @@ NULL 0 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -244,23 +244,23 @@ POSTHOOK: query: SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY v POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### --1234567890 -1234567890.1234567890 +-1234567890 -1234567890.123456789 -1255 -1255.49 -11 -1.122 -1 -2.24 -0 0.330000000000000000 -1 5.242000000000000000 +0 0.33 +1 5.242 2 4 3 9.42 -4 3.140 +4 3.14 10 10 20 20 100 100 -124 124.00 +124 124 125 125.2 200 200 4400 -4400 -1234567890 1234567890.1234567800 +1234567890 1234567890.12345678 PREHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -269,7 +269,7 @@ POSTHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) O POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### --1234567890.1234567890 -1234567890 -1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -1234567890.123456789 -1234567890 -4400 4400 -4400 4400 -1255.49 -1255 -1255.49 -1255 -1.122 -11 -1.122 -11 @@ -280,7 +280,11 @@ POSTHOOK: Input: default@decimal_3 -0.333 0 -0.333 0 -0.33 0 -0.33 0 -0.3 0 -0.3 0 -0.000000000000000000 0 0.000000000000000000 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -293,8 +297,14 @@ POSTHOOK: Input: default@decimal_3 0.33 0 0.33 0 0.333 0 0.333 0 1 1 1 1 -1.0 1 1.0 1 -1.000000000000000000 1 1.000000000000000000 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 1.12 1 1.12 1 1.122 1 1.122 1 2 2 2 2 @@ -310,14 +320,20 @@ POSTHOOK: Input: default@decimal_3 3.14 3 3.14 3 3.14 3 3.14 3 3.14 3 3.14 3 -3.140 4 3.140 4 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 4 10 10 10 10 20 20 20 20 100 100 100 100 -124.00 124 124.00 124 +124 124 124 124 125.2 125 125.2 125 200 200 200 200 -1234567890.1234567800 1234567890 1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 1234567890.12345678 1234567890 PREHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.14 ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -329,7 +345,7 @@ POSTHOOK: Input: default@decimal_3 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 PREHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.140 ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -341,7 +357,7 @@ POSTHOOK: Input: default@decimal_3 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 PREHOOK: query: DROP TABLE DECIMAL_3 PREHOOK: type: DROPTABLE PREHOOK: Input: default@decimal_3 diff --git a/ql/src/test/results/clientpositive/decimal_4.q.out b/ql/src/test/results/clientpositive/decimal_4.q.out index a31d27a950ea..50662af1ed5c 100644 --- a/ql/src/test/results/clientpositive/decimal_4.q.out +++ b/ql/src/test/results/clientpositive/decimal_4.q.out @@ -57,7 +57,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_4_1 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -66,7 +66,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.0000000000000000000000000 0 +0 0 0 0 0 0 0.01 0 @@ -78,7 +78,7 @@ NULL 0 0.333 0 0.9999999999999999999999999 1 1 1 -1.0 1 +1 1 1.12 1 1.122 1 2 2 @@ -86,14 +86,14 @@ NULL 0 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key PREHOOK: type: QUERY PREHOOK: Input: default@decimal_4_2 @@ -103,7 +103,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_4_2 #### A masked pattern was here #### NULL NULL --1234567890.1234567890 -3703703670.3703703670 +-1234567890.123456789 -3703703670.370370367 -4400 -13200 -1255.49 -3766.47 -1.122 -3.366 @@ -112,7 +112,7 @@ NULL NULL -0.333 -0.999 -0.33 -0.99 -0.3 -0.9 -0.0000000000000000000000000 0.0000000000000000000000000 +0 0 0 0 0 0 0.01 0.03 @@ -124,7 +124,7 @@ NULL NULL 0.333 0.999 0.9999999999999999999999999 2.9999999999999999999999997 1 3 -1.0 3.0 +1 3 1.12 3.36 1.122 3.366 2 6 @@ -132,14 +132,14 @@ NULL NULL 3.14 9.42 3.14 9.42 3.14 9.42 -3.140 9.420 +3.14 9.42 10 30 20 60 100 300 -124.00 372.00 +124 372 125.2 375.6 200 600 -1234567890.1234567800 3703703670.3703703400 +1234567890.12345678 3703703670.37037034 PREHOOK: query: DROP TABLE DECIMAL_4_1 PREHOOK: type: DROPTABLE PREHOOK: Input: default@decimal_4_1 diff --git a/ql/src/test/results/clientpositive/decimal_5.q.out b/ql/src/test/results/clientpositive/decimal_5.q.out index 6df509761ca0..0f24b8a9e863 100644 --- a/ql/src/test/results/clientpositive/decimal_5.q.out +++ b/ql/src/test/results/clientpositive/decimal_5.q.out @@ -43,7 +43,7 @@ NULL -0.333 -0.33 -0.3 -0.00000 +0 0 0 0.01 @@ -54,8 +54,8 @@ NULL 0.33 0.333 1 -1.0 -1.00000 +1 +1 1.12 1.122 2 @@ -63,11 +63,11 @@ NULL 3.14 3.14 3.14 -3.140 +3.14 10 20 100 -124.00 +124 125.2 200 PREHOOK: query: SELECT DISTINCT key FROM DECIMAL_5 ORDER BY key @@ -86,7 +86,7 @@ NULL -0.333 -0.33 -0.3 -0.00000 +0 0.01 0.02 0.1 @@ -102,7 +102,7 @@ NULL 10 20 100 -124.00 +124 125.2 200 PREHOOK: query: SELECT cast(key as decimal) FROM DECIMAL_5 @@ -161,7 +161,7 @@ POSTHOOK: Input: default@decimal_5 #### A masked pattern was here #### NULL NULL -0.000 +0 0 100 10 @@ -180,7 +180,7 @@ NULL -0.3 -0.33 -0.333 -1.0 +1 2 3.14 -1.12 @@ -188,13 +188,13 @@ NULL -1.122 1.12 1.122 -124.00 +124 125.2 NULL 3.14 3.14 -3.140 -1.000 +3.14 +1 NULL NULL PREHOOK: query: DROP TABLE DECIMAL_5 diff --git a/ql/src/test/results/clientpositive/decimal_6.q.out b/ql/src/test/results/clientpositive/decimal_6.q.out index 2bbd48ad0d47..0344fa9e1de0 100644 --- a/ql/src/test/results/clientpositive/decimal_6.q.out +++ b/ql/src/test/results/clientpositive/decimal_6.q.out @@ -91,16 +91,16 @@ NULL -0.333 -0.3 -0.3 -0.00000 -0.0000 +0 +0 0 0 0.333 0.333 -1.0 -1.0 -1.0000 -1.00000 +1 +1 +1 +1 1.12 1.12 1.122 @@ -111,14 +111,14 @@ NULL 3.14 3.14 3.14 -3.140 -3.140 +3.14 +3.14 10 10 10.7343 10.73433 -124.00 -124.00 +124 +124 125.2 125.2 23232.23435 diff --git a/ql/src/test/results/clientpositive/decimal_join2.q.out b/ql/src/test/results/clientpositive/decimal_join2.q.out new file mode 100644 index 000000000000..f9c33b7d6527 --- /dev/null +++ b/ql/src/test/results/clientpositive/decimal_join2.q.out @@ -0,0 +1,371 @@ +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_3_txt +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_3_txt +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_3 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_3 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE DECIMAL_3_txt(key decimal(38,18), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_3_txt +POSTHOOK: query: CREATE TABLE DECIMAL_3_txt(key decimal(38,18), value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_3_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_3_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@decimal_3_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_3_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@decimal_3_txt +PREHOOK: query: CREATE TABLE DECIMAL_3 STORED AS ORC AS SELECT * FROM DECIMAL_3_txt +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@decimal_3_txt +PREHOOK: Output: database:default +PREHOOK: Output: default@DECIMAL_3 +POSTHOOK: query: CREATE TABLE DECIMAL_3 STORED AS ORC AS SELECT * FROM DECIMAL_3_txt +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@decimal_3_txt +POSTHOOK: Output: database:default +POSTHOOK: Output: default@DECIMAL_3 +PREHOOK: query: EXPLAIN +SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: decimal(38,18)) + sort order: + + Map-reduce partition columns: key (type: decimal(38,18)) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + TableScan + alias: a + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: decimal(38,18)) + sort order: + + Map-reduce partition columns: key (type: decimal(38,18)) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {KEY.reducesinkkey0} {VALUE._col0} + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 20 Data size: 2362 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(38,18)), _col1 (type: int), _col5 (type: decimal(38,18)), _col6 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 20 Data size: 2362 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + key expressions: _col0 (type: decimal(38,18)), _col1 (type: int), _col2 (type: decimal(38,18)), _col3 (type: int) + sort order: ++++ + Statistics: Num rows: 20 Data size: 2362 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(38,18)), KEY.reducesinkkey1 (type: int), KEY.reducesinkkey2 (type: decimal(38,18)), KEY.reducesinkkey3 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 20 Data size: 2362 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 2362 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +-1234567890.123456789 -1234567890 -1234567890.123456789 -1234567890 +-4400 4400 -4400 4400 +-1255.49 -1255 -1255.49 -1255 +-1.122 -11 -1.122 -11 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-0.333 0 -0.333 0 +-0.33 0 -0.33 0 +-0.3 0 -0.3 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0.01 0 0.01 0 +0.02 0 0.02 0 +0.1 0 0.1 0 +0.2 0 0.2 0 +0.3 0 0.3 0 +0.33 0 0.33 0 +0.333 0 0.333 0 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1.12 1 1.12 1 +1.122 1 1.122 1 +2 2 2 2 +2 2 2 2 +2 2 2 2 +2 2 2 2 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 4 +10 10 10 10 +20 20 20 20 +100 100 100 100 +124 124 124 124 +125.2 125 125.2 125 +200 200 200 200 +1234567890.12345678 1234567890 1234567890.12345678 1234567890 +PREHOOK: query: EXPLAIN +SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-5 is a root stage + Stage-2 depends on stages: Stage-5 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-5 + Map Reduce Local Work + Alias -> Map Local Tables: + a + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + a + TableScan + alias: a + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + HashTable Sink Operator + condition expressions: + 0 {value} + 1 {key} {value} + keys: + 0 key (type: decimal(38,18)) + 1 key (type: decimal(38,18)) + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {key} {value} + 1 {key} {value} + keys: + 0 key (type: decimal(38,18)) + 1 key (type: decimal(38,18)) + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 20 Data size: 2362 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: decimal(38,18)), _col1 (type: int), _col5 (type: decimal(38,18)), _col6 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 20 Data size: 2362 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: decimal(38,18)), _col1 (type: int), _col2 (type: decimal(38,18)), _col3 (type: int) + sort order: ++++ + Statistics: Num rows: 20 Data size: 2362 Basic stats: COMPLETE Column stats: NONE + Local Work: + Map Reduce Local Work + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: decimal(38,18)), KEY.reducesinkkey1 (type: int), KEY.reducesinkkey2 (type: decimal(38,18)), KEY.reducesinkkey3 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 20 Data size: 2362 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 20 Data size: 2362 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.key, b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@decimal_3 +#### A masked pattern was here #### +-1234567890.123456789 -1234567890 -1234567890.123456789 -1234567890 +-4400 4400 -4400 4400 +-1255.49 -1255 -1255.49 -1255 +-1.122 -11 -1.122 -11 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-0.333 0 -0.333 0 +-0.33 0 -0.33 0 +-0.3 0 -0.3 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0.01 0 0.01 0 +0.02 0 0.02 0 +0.1 0 0.1 0 +0.2 0 0.2 0 +0.3 0 0.3 0 +0.33 0 0.33 0 +0.333 0 0.333 0 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1.12 1 1.12 1 +1.122 1 1.122 1 +2 2 2 2 +2 2 2 2 +2 2 2 2 +2 2 2 2 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 4 +10 10 10 10 +20 20 20 20 +100 100 100 100 +124 124 124 124 +125.2 125 125.2 125 +200 200 200 200 +1234567890.12345678 1234567890 1234567890.12345678 1234567890 +PREHOOK: query: DROP TABLE DECIMAL_3_txt +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_3_txt +PREHOOK: Output: default@decimal_3_txt +POSTHOOK: query: DROP TABLE DECIMAL_3_txt +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_3_txt +POSTHOOK: Output: default@decimal_3_txt +PREHOOK: query: DROP TABLE DECIMAL_3 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@decimal_3 +PREHOOK: Output: default@decimal_3 +POSTHOOK: query: DROP TABLE DECIMAL_3 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@decimal_3 +POSTHOOK: Output: default@decimal_3 diff --git a/ql/src/test/results/clientpositive/decimal_precision.q.out b/ql/src/test/results/clientpositive/decimal_precision.q.out index 94c63cb9d28d..f3f2cbc1a259 100644 --- a/ql/src/test/results/clientpositive/decimal_precision.q.out +++ b/ql/src/test/results/clientpositive/decimal_precision.q.out @@ -76,13 +76,13 @@ NULL NULL NULL NULL -0.0000000000 -0.0000000000 -0.0000000000 -0.0000000000 0 -0.1234567890 -0.1234567890 +0 +0 +0 +0 +0.123456789 +0.123456789 1.2345678901 1.2345678901 1.2345678901 @@ -106,7 +106,7 @@ NULL 123456789.0123456 123456789.0123456789 1234567890.123456 -1234567890.1234567890 +1234567890.123456789 PREHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -159,13 +159,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 1.0000000000 -1.0000000000 -0.0000000000 1.0000000000 -1.0000000000 -0.0000000000 1.0000000000 -1.0000000000 -0.0000000000 1.0000000000 -1.0000000000 0 1 -1 -0.1234567890 1.1234567890 -0.8765432110 -0.1234567890 1.1234567890 -0.8765432110 +0 1 -1 +0 1 -1 +0 1 -1 +0 1 -1 +0.123456789 1.123456789 -0.876543211 +0.123456789 1.123456789 -0.876543211 1.2345678901 2.2345678901 0.2345678901 1.2345678901 2.2345678901 0.2345678901 1.2345678901 2.2345678901 0.2345678901 @@ -189,7 +189,7 @@ NULL NULL NULL 123456789.0123456 123456790.0123456 123456788.0123456 123456789.0123456789 123456790.0123456789 123456788.0123456789 1234567890.123456 1234567891.123456 1234567889.123456 -1234567890.1234567890 1234567891.1234567890 1234567889.1234567890 +1234567890.123456789 1234567891.123456789 1234567889.123456789 PREHOOK: query: SELECT dec, dec * 2, dec / 3 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -242,13 +242,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0.0000000000 0 -0.0000000000 0.0000000000 0 -0.0000000000 0.0000000000 0 -0.0000000000 0.0000000000 0 0 0 0 -0.1234567890 0.2469135780 0.041152263 -0.1234567890 0.2469135780 0.041152263 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0.123456789 0.246913578 0.041152263 +0.123456789 0.246913578 0.041152263 1.2345678901 2.4691357802 0.411522630033 1.2345678901 2.4691357802 0.411522630033 1.2345678901 2.4691357802 0.411522630033 @@ -258,9 +258,9 @@ NULL NULL NULL 123.4567890123 246.9135780246 41.1522630041 123.4567890123 246.9135780246 41.1522630041 123.4567890123 246.9135780246 41.1522630041 -1234.5678901235 2469.1357802470 411.522630041167 -1234.5678901235 2469.1357802470 411.522630041167 -1234.5678901235 2469.1357802470 411.522630041167 +1234.5678901235 2469.135780247 411.522630041167 +1234.5678901235 2469.135780247 411.522630041167 +1234.5678901235 2469.135780247 411.522630041167 12345.6789012346 24691.3578024692 4115.226300411533 12345.6789012346 24691.3578024692 4115.226300411533 123456.7890123456 246913.5780246912 41152.2630041152 @@ -272,7 +272,7 @@ NULL NULL NULL 123456789.0123456 246913578.0246912 41152263.0041152 123456789.0123456789 246913578.0246913578 41152263.0041152263 1234567890.123456 2469135780.246912 411522630.041152 -1234567890.1234567890 2469135780.2469135780 411522630.041152263 +1234567890.123456789 2469135780.246913578 411522630.041152263 PREHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -325,13 +325,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 0 0 -0.1234567890 0.013717421 -0.1234567890 0.013717421 +0 0 +0 0 +0 0 +0 0 +0.123456789 0.013717421 +0.123456789 0.013717421 1.2345678901 0.137174210011 1.2345678901 0.137174210011 1.2345678901 0.137174210011 @@ -355,7 +355,7 @@ NULL NULL 123456789.0123456 13717421.001371733333 123456789.0123456789 13717421.0013717421 1234567890.123456 137174210.013717333333 -1234567890.1234567890 137174210.013717421 +1234567890.123456789 137174210.013717421 PREHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -408,13 +408,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 0 0 -0.1234567890 0.0045724736667 -0.1234567890 0.0045724736667 +0 0 +0 0 +0 0 +0 0 +0.123456789 0.0045724736667 +0.123456789 0.0045724736667 1.2345678901 0.0457247366704 1.2345678901 0.0457247366704 1.2345678901 0.0457247366704 @@ -438,7 +438,7 @@ NULL NULL 123456789.0123456 4572473.6671239111111 123456789.0123456789 4572473.6671239140333 1234567890.123456 45724736.6712391111111 -1234567890.1234567890 45724736.6712391403333 +1234567890.123456789 45724736.6712391403333 PREHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -491,13 +491,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0.00000000000000000000 -0.0000000000 0.00000000000000000000 -0.0000000000 0.00000000000000000000 -0.0000000000 0.00000000000000000000 0 0 -0.1234567890 0.01524157875019052100 -0.1234567890 0.01524157875019052100 +0 0 +0 0 +0 0 +0 0 +0.123456789 0.015241578750190521 +0.123456789 0.015241578750190521 1.2345678901 1.52415787526596567801 1.2345678901 1.52415787526596567801 1.2345678901 1.52415787526596567801 @@ -521,7 +521,7 @@ NULL NULL 123456789.0123456 15241578753238817.26870921383936 123456789.0123456789 15241578753238836.75019051998750190521 1234567890.123456 NULL -1234567890.1234567890 NULL +1234567890.123456789 NULL PREHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION diff --git a/ql/src/test/results/clientpositive/decimal_trailing.q.out b/ql/src/test/results/clientpositive/decimal_trailing.q.out index c6991fd15b6b..6cfe282f1fa2 100644 --- a/ql/src/test/results/clientpositive/decimal_trailing.q.out +++ b/ql/src/test/results/clientpositive/decimal_trailing.q.out @@ -43,13 +43,13 @@ POSTHOOK: Input: default@decimal_trailing 0 0 0 1 0 0 2 NULL NULL -3 1.0000 1.00000000 -4 10.0000 10.00000000 -5 100.0000 100.00000000 -6 1000.0000 1000.00000000 -7 10000.0000 10000.00000000 -8 100000.0000 100000.00000000 -9 NULL 1000000.00000000 +3 1 1 +4 10 10 +5 100 100 +6 1000 1000 +7 10000 10000 +8 100000 100000 +9 NULL 1000000 10 NULL NULL 11 NULL NULL 12 NULL NULL @@ -58,18 +58,18 @@ POSTHOOK: Input: default@decimal_trailing 15 NULL NULL 16 NULL NULL 17 NULL NULL -18 1.0000 1.00000000 -19 10.000 10.0000000 -20 100.00 100.000000 -21 1000.0 1000.00000 -22 100000 10000.0000 -23 0.0000 0.00000000 -24 0.000 0.0000000 -25 0.00 0.000000 -26 0.0 0.00000 -27 0 0.00000 -28 12313.2000 134134.31252500 -29 99999.9990 134134.31242553 +18 1 1 +19 10 10 +20 100 100 +21 1000 1000 +22 100000 10000 +23 0 0 +24 0 0 +25 0 0 +26 0 0 +27 0 0 +28 12313.2 134134.312525 +29 99999.999 134134.31242553 PREHOOK: query: DROP TABLE DECIMAL_TRAILING PREHOOK: type: DROPTABLE PREHOOK: Input: default@decimal_trailing diff --git a/ql/src/test/results/clientpositive/decimal_udf.q.out b/ql/src/test/results/clientpositive/decimal_udf.q.out index 6bd876a5a2f8..1a303468cb98 100644 --- a/ql/src/test/results/clientpositive/decimal_udf.q.out +++ b/ql/src/test/results/clientpositive/decimal_udf.q.out @@ -57,7 +57,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -8800 NULL -0.0000000000 +0 0 200 20 @@ -76,7 +76,7 @@ NULL -0.6 -0.66 -0.666 -2.0 +2 4 6.28 -2.24 @@ -84,15 +84,15 @@ NULL -2.244 2.24 2.244 -248.00 +248 250.4 -2510.98 6.28 6.28 -6.280 -2.0000000000 --2469135780.2469135780 -2469135780.2469135600 +6.28 +2 +-2469135780.246913578 +2469135780.24691356 PREHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF @@ -124,7 +124,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 0 NULL -0.0000000000 +0 0 200 20 @@ -143,7 +143,7 @@ NULL -0.3 -0.33 -0.333 -2.0 +2 4 6.14 -2.12 @@ -151,15 +151,15 @@ NULL -12.122 2.12 2.122 -248.00 +248 250.2 -2510.49 6.14 6.14 -7.140 -2.0000000000 --2469135780.1234567890 -2469135780.1234567800 +7.14 +2 +-2469135780.123456789 +2469135780.12345678 PREHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF @@ -327,42 +327,42 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 0 NULL -0.0000000000 0 0 0 0 -0.0 -0.00 0 0 0 0 -0.0 -0.00 -0.0 -0.00 -0.000 -0.0 -0.00 -0.000 -0.0 0 -0.00 -0.00 -0.00 -0.000 -0.00 -0.000 -0.00 -0.0 -0.00 -0.00 -0.00 -0.000 -0.0000000000 -0.0000000000 -0.0000000000 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 PREHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF @@ -394,7 +394,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -8800 NULL -0.0000000000 +0 0 0 0 @@ -413,7 +413,7 @@ NULL -0.3 -0.33 -0.333 -0.0 +0 0 0.14 -0.12 @@ -421,15 +421,15 @@ NULL 9.878 0.12 0.122 -0.00 +0 0.2 -0.49 0.14 0.14 --0.860 -0.0000000000 --0.1234567890 -0.1234567800 +-0.86 +0 +-0.123456789 +0.12345678 PREHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF @@ -597,7 +597,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 19360000 NULL -0.00000000000000000000 +0 0 10000 100 @@ -616,7 +616,7 @@ NULL 0.09 0.1089 0.110889 -1.00 +1 4 9.8596 1.2544 @@ -624,13 +624,13 @@ NULL 1.258884 1.2544 1.258884 -15376.0000 +15376 15675.04 1576255.1401 9.8596 9.8596 -9.859600 -1.00000000000000000000 +9.8596 +1 NULL NULL PREHOOK: query: EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0 @@ -671,7 +671,7 @@ POSTHOOK: Input: default@decimal_udf 200 200 20 20 2 2 -1.0 1 +1 1 2 2 3.14 3 -1.12 -1 @@ -679,15 +679,15 @@ POSTHOOK: Input: default@decimal_udf -1.122 -11 1.12 1 1.122 1 -124.00 124 +124 124 125.2 125 -1255.49 -1255 3.14 3 3.14 3 -3.140 4 -1.0000000000 1 --1234567890.1234567890 -1234567890 -1234567890.1234567800 1234567890 +3.14 4 +1 1 +-1234567890.123456789 -1234567890 +1234567890.12345678 1234567890 PREHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF @@ -719,26 +719,26 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -19360000 NULL -0.0000000000 +0 0 10000 100 1 -0.0 -0.00 +0 +0 40000 400 4 0 -0.0 -0.00 -0.0 -0.00 -0.000 -0.0 -0.00 -0.000 -1.0 +0 +0 +0 +0 +0 +0 +0 +0 +1 4 9.42 1.12 @@ -746,15 +746,15 @@ NULL 12.342 1.12 1.122 -15376.00 -15650.0 +15376 +15650 1575639.95 9.42 9.42 -12.560 -1.0000000000 -1524157875171467887.5019052100 -1524157875171467876.3907942000 +12.56 +1 +1524157875171467887.50190521 +1524157875171467876.3907942 PREHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF @@ -1078,7 +1078,7 @@ POSTHOOK: Input: default@decimal_udf 0.785 1 1.0000000001 -1.000000000099999992710 +1.00000000009999999271 PREHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 @@ -1235,7 +1235,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 4400 NULL -0.0000000000 +0 0 100 10 @@ -1254,7 +1254,7 @@ NULL 0.3 0.33 0.333 -1.0 +1 2 3.14 1.12 @@ -1262,15 +1262,15 @@ NULL 1.122 1.12 1.122 -124.00 +124 125.2 1255.49 3.14 3.14 -3.140 -1.0000000000 -1234567890.1234567890 -1234567890.1234567800 +3.14 +1 +1234567890.123456789 +1234567890.12345678 PREHOOK: query: -- avg EXPLAIN SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value PREHOOK: type: QUERY @@ -1359,23 +1359,23 @@ POSTHOOK: query: SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DE POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### --1234567890 -1234567890.123456789 -1234567890.123456789 -1234567890.1234567890 +-1234567890 -1234567890.123456789 -1234567890.123456789 -1234567890.123456789 -1255 -1255.49 -1255.49 -1255.49 -11 -1.122 -1.122 -1.122 -1 -1.12 -1.12 -2.24 -0 0.02538461538461538461538 0.02538461538462 0.3300000000 -1 1.0484 1.0484 5.2420000000 +0 0.02538461538461538461538 0.02538461538462 0.33 +1 1.0484 1.0484 5.242 2 2 2 4 3 3.14 3.14 9.42 -4 3.14 3.14 3.140 +4 3.14 3.14 3.14 10 10 10 10 20 20 20 20 100 100 100 100 -124 124 124 124.00 +124 124 124 124 125 125.2 125.2 125.2 200 200 200 200 4400 -4400 -4400 -4400 -1234567890 1234567890.12345678 1234567890.12345678 1234567890.1234567800 +1234567890 1234567890.12345678 1234567890.12345678 1234567890.12345678 PREHOOK: query: -- negative EXPLAIN SELECT -key FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -1409,7 +1409,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 4400 NULL -0.0000000000 +0 0 -100 -10 @@ -1428,7 +1428,7 @@ NULL 0.3 0.33 0.333 --1.0 +-1 -2 -3.14 1.12 @@ -1436,15 +1436,15 @@ NULL 1.122 -1.12 -1.122 --124.00 +-124 -125.2 1255.49 -3.14 -3.14 --3.140 --1.0000000000 -1234567890.1234567890 --1234567890.1234567800 +-3.14 +-1 +1234567890.123456789 +-1234567890.12345678 PREHOOK: query: -- positive EXPLAIN SELECT +key FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -1478,7 +1478,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -4400 NULL -0.0000000000 +0 0 100 10 @@ -1497,7 +1497,7 @@ NULL -0.3 -0.33 -0.333 -1.0 +1 2 3.14 -1.12 @@ -1505,15 +1505,15 @@ NULL -1.122 1.12 1.122 -124.00 +124 125.2 -1255.49 3.14 3.14 -3.140 -1.0000000000 --1234567890.1234567890 -1234567890.1234567800 +3.14 +1 +-1234567890.123456789 +1234567890.12345678 PREHOOK: query: -- ceiling EXPlAIN SELECT CEIL(key) FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -1683,42 +1683,42 @@ POSTHOOK: query: SELECT ROUND(key, 2) FROM DECIMAL_UDF POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### --4400.00 +-4400 NULL -0.00 -0.00 -100.00 -10.00 -1.00 -0.10 +0 +0 +100 +10 +1 +0.1 0.01 -200.00 -20.00 -2.00 -0.00 -0.20 +200 +20 +2 +0 +0.2 0.02 -0.30 +0.3 0.33 0.33 --0.30 +-0.3 -0.33 -0.33 -1.00 -2.00 +1 +2 3.14 -1.12 -1.12 -1.12 1.12 1.12 -124.00 -125.20 +124 +125.2 -1255.49 3.14 3.14 3.14 -1.00 +1 -1234567890.12 1234567890.12 PREHOOK: query: -- power @@ -1827,38 +1827,38 @@ NULL NULL 1 1 -0.0 -0.00 -0.000 +0 +0 +0 1 1 0 NULL -0.0 -0.00 -0.10 -0.010 -0.0010 -0.10 -0.010 -0.0010 -0.0 0 -1.00 +0 +0.1 +0.01 +0.001 +0.1 +0.01 +0.001 +0 +0 +1 -0.12 -0.12 -0.122 0.44 0.439 -1.00 -1.0 +1 +1 -626.745 -1.00 -1.00 -1.000 -0.0000000000 +1 +1 +1 +0 -617283944.0617283945 -1.0000000000 +1 PREHOOK: query: -- stddev, var EXPLAIN SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value PREHOOK: type: QUERY @@ -2150,7 +2150,7 @@ POSTHOOK: query: SELECT MIN(key) FROM DECIMAL_UDF POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### --1234567890.1234567890 +-1234567890.123456789 PREHOOK: query: -- max EXPLAIN SELECT MAX(key) FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -2213,7 +2213,7 @@ POSTHOOK: query: SELECT MAX(key) FROM DECIMAL_UDF POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -1234567890.1234567800 +1234567890.12345678 PREHOOK: query: -- count EXPLAIN SELECT COUNT(key) FROM DECIMAL_UDF PREHOOK: type: QUERY diff --git a/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out b/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out index 359d4ac3c2d8..9a7b2b7c8d56 100644 --- a/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out +++ b/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out @@ -259,7 +259,7 @@ POSTHOOK: query: SELECT * FROM orc_pred WHERE t>2 limit 1 POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_pred #### A masked pattern was here #### -124 336 65664 4294967435 74.72 42.47 true bob davidson 2013-03-01 09:11:58.703302 45.40 yard duty +124 336 65664 4294967435 74.72 42.47 true bob davidson 2013-03-01 09:11:58.703302 45.4 yard duty PREHOOK: query: SELECT * FROM orc_pred WHERE t>2 limit 1 PREHOOK: type: QUERY PREHOOK: Input: default@orc_pred @@ -268,7 +268,7 @@ POSTHOOK: query: SELECT * FROM orc_pred WHERE t>2 limit 1 POSTHOOK: type: QUERY POSTHOOK: Input: default@orc_pred #### A masked pattern was here #### -124 336 65664 4294967435 74.72 42.47 true bob davidson 2013-03-01 09:11:58.703302 45.40 yard duty +124 336 65664 4294967435 74.72 42.47 true bob davidson 2013-03-01 09:11:58.703302 45.4 yard duty PREHOOK: query: SELECT SUM(HASH(t)) FROM orc_pred WHERE t IS NOT NULL AND t < 0 diff --git a/ql/src/test/results/clientpositive/parquet_decimal.q.out b/ql/src/test/results/clientpositive/parquet_decimal.q.out index 5767c57d1017..cd87b925e197 100644 --- a/ql/src/test/results/clientpositive/parquet_decimal.q.out +++ b/ql/src/test/results/clientpositive/parquet_decimal.q.out @@ -63,9 +63,9 @@ Mary 4.33 Cluck 5.96 Tom -12.25 Mary 33.33 -Tom 19.00 -Beck 0.00 -Beck 79.90 +Tom 19 +Beck 0 +Beck 79.9 PREHOOK: query: TRUNCATE TABLE parq_dec PREHOOK: type: TRUNCATETABLE PREHOOK: Output: default@parq_dec @@ -140,12 +140,12 @@ POSTHOOK: Input: default@parq_dec1 77.3 55.7 4.3 -6.0 +6 12.3 33.3 0.2 3.2 -8.0 +8 PREHOOK: query: DROP TABLE dec PREHOOK: type: DROPTABLE PREHOOK: Input: default@dec diff --git a/ql/src/test/results/clientpositive/parquet_decimal1.q.out b/ql/src/test/results/clientpositive/parquet_decimal1.q.out index 0f71b1efb251..bd146f89bd67 100644 --- a/ql/src/test/results/clientpositive/parquet_decimal1.q.out +++ b/ql/src/test/results/clientpositive/parquet_decimal1.q.out @@ -28,7 +28,7 @@ POSTHOOK: query: SELECT * FROM dec_comp POSTHOOK: type: QUERY POSTHOOK: Input: default@dec_comp #### A masked pattern was here #### -[3.14,6.28,7.30] {"k1":92.77,"k2":29.39} {"i":5,"d":9.03} +[3.14,6.28,7.3] {"k1":92.77,"k2":29.39} {"i":5,"d":9.03} [12.4,1.33,0.34] {"k2":2.79,"k4":29.09} {"i":11,"d":0.03} PREHOOK: query: DROP TABLE IF EXISTS parq_dec_comp PREHOOK: type: DROPTABLE @@ -72,8 +72,8 @@ POSTHOOK: query: SELECT * FROM parq_dec_comp POSTHOOK: type: QUERY POSTHOOK: Input: default@parq_dec_comp #### A masked pattern was here #### -[3.14,6.28,7.30] {"k2":29.39,"k1":92.77} {"i":5,"d":9.03} -[12.40,1.33,0.34] {"k4":29.09,"k2":2.79} {"i":11,"d":0.03} +[3.14,6.28,7.3] {"k2":29.39,"k1":92.77} {"i":5,"d":9.03} +[12.4,1.33,0.34] {"k4":29.09,"k2":2.79} {"i":11,"d":0.03} PREHOOK: query: DROP TABLE dec_comp PREHOOK: type: DROPTABLE PREHOOK: Input: default@dec_comp diff --git a/ql/src/test/results/clientpositive/serde_regex.q.out b/ql/src/test/results/clientpositive/serde_regex.q.out index 65eef4f21221..19187ba5421d 100644 --- a/ql/src/test/results/clientpositive/serde_regex.q.out +++ b/ql/src/test/results/clientpositive/serde_regex.q.out @@ -201,7 +201,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@serde_regex1 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -210,7 +210,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.000000000000000000 0 +0 0 0 0 0 0 0.01 0 @@ -221,8 +221,8 @@ NULL 0 0.33 0 0.333 0 1 1 -1.0 1 -1.000000000000000000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 @@ -230,14 +230,14 @@ NULL 0 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: DROP TABLE serde_regex1 PREHOOK: type: DROPTABLE PREHOOK: Input: default@serde_regex1 diff --git a/ql/src/test/results/clientpositive/tez/mapjoin_decimal.q.out b/ql/src/test/results/clientpositive/tez/mapjoin_decimal.q.out index a2f677d29c02..bffcd2380a81 100644 --- a/ql/src/test/results/clientpositive/tez/mapjoin_decimal.q.out +++ b/ql/src/test/results/clientpositive/tez/mapjoin_decimal.q.out @@ -151,112 +151,112 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t2 #### A masked pattern was here #### -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -45.00 45 -45.00 45 -45.00 45 -45.00 45 -45.00 45 -79.00 79 -79.00 79 -79.00 79 -79.00 79 -79.00 79 -79.00 79 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -6.00 6 -6.00 6 -6.00 6 -6.00 6 -6.00 6 -6.00 6 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +45 45 +45 45 +45 45 +45 45 +45 45 +79 79 +79 79 +79 79 +79 79 +79 79 +79 79 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +6 6 +6 6 +6 6 +6 6 +6 6 +6 6 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +70 70 +70 70 +70 70 +70 70 +70 70 +70 70 +70 70 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 PREHOOK: query: select t1.dec, t2.dec from t1 join t2 on (t1.dec=t2.dec) PREHOOK: type: QUERY PREHOOK: Input: default@t1 @@ -267,112 +267,112 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t2 #### A masked pattern was here #### -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -45.00 45 -45.00 45 -45.00 45 -45.00 45 -45.00 45 -79.00 79 -79.00 79 -79.00 79 -79.00 79 -79.00 79 -79.00 79 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -6.00 6 -6.00 6 -6.00 6 -6.00 6 -6.00 6 -6.00 6 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +45 45 +45 45 +45 45 +45 45 +45 45 +79 79 +79 79 +79 79 +79 79 +79 79 +79 79 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +6 6 +6 6 +6 6 +6 6 +6 6 +6 6 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +70 70 +70 70 +70 70 +70 70 +70 70 +70 70 +70 70 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 PREHOOK: query: select t1.dec, t2.dec from t1 join t2 on (t1.dec=t2.dec) PREHOOK: type: QUERY PREHOOK: Input: default@t1 @@ -383,109 +383,109 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t2 #### A masked pattern was here #### -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -9.00 9 -45.00 45 -45.00 45 -45.00 45 -45.00 45 -45.00 45 -79.00 79 -79.00 79 -79.00 79 -79.00 79 -79.00 79 -79.00 79 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -17.00 17 -6.00 6 -6.00 6 -6.00 6 -6.00 6 -6.00 6 -6.00 6 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -62.00 62 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -64.00 64 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -89.00 89 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -70.00 70 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 -14.00 14 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +9 9 +45 45 +45 45 +45 45 +45 45 +45 45 +79 79 +79 79 +79 79 +79 79 +79 79 +79 79 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +17 17 +6 6 +6 6 +6 6 +6 6 +6 6 +6 6 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +62 62 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +64 64 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +89 89 +70 70 +70 70 +70 70 +70 70 +70 70 +70 70 +70 70 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 +14 14 diff --git a/ql/src/test/results/clientpositive/tez/update_all_types.q.out b/ql/src/test/results/clientpositive/tez/update_all_types.q.out index f1353d068ad6..eba4dde4cf60 100644 --- a/ql/src/test/results/clientpositive/tez/update_all_types.q.out +++ b/ql/src/test/results/clientpositive/tez/update_all_types.q.out @@ -87,16 +87,16 @@ POSTHOOK: query: select * from acid_uat order by i POSTHOOK: type: QUERY POSTHOOK: Input: default@acid_uat #### A masked pattern was here #### -11 NULL -1073279343 -1595604468 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true +11 NULL -1073279343 -1595604468 11.0 NULL 11 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true NULL -7382 -1073051226 -1887561756 NULL -7382.0 NULL NULL 1970-01-01 A34p7oRr2WvUJNf A34p7oRr2WvUJNf 4hA4KQj2vD3fI6gX82220d false -11 NULL -1072910839 2048385991 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false +11 NULL -1072910839 2048385991 11.0 NULL 11 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false NULL 8373 -1072081801 1864027286 NULL 8373.0 NULL NULL 1970-01-01 dPkN74F7 dPkN74F7 4KWs6gw7lv2WYd66P true NULL -5470 -1072076362 1864027286 NULL -5470.0 NULL NULL 1970-01-01 2uLyD28144vklju213J1mr 2uLyD28144vklju213J1mr 4KWs6gw7lv2WYd66P true --51 NULL -1071480828 -1401575336 -51.0 NULL -51.0 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true -8 NULL -1071363017 1349676361 8.0 NULL 8.0 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true +-51 NULL -1071480828 -1401575336 -51.0 NULL -51 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true +8 NULL -1071363017 1349676361 8.0 NULL 8 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true NULL -741 -1070883071 -1645852809 NULL -741.0 NULL NULL 1970-01-01 0ruyd6Y50JpdGRf6HqD 0ruyd6Y50JpdGRf6HqD xH7445Rals48VOulSyR5F false NULL -947 -1070551679 1864027286 NULL -947.0 NULL NULL 1970-01-01 iUR3Q iUR3Q 4KWs6gw7lv2WYd66P false -11 NULL -1069736047 -453772520 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true +11 NULL -1069736047 -453772520 11.0 NULL 11 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true PREHOOK: query: update acid_uat set ti = 1, si = 2, @@ -141,15 +141,15 @@ POSTHOOK: query: select * from acid_uat order by i POSTHOOK: type: QUERY POSTHOOK: Input: default@acid_uat #### A masked pattern was here #### -11 NULL -1073279343 -1595604468 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true +11 NULL -1073279343 -1595604468 11.0 NULL 11 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true NULL -7382 -1073051226 -1887561756 NULL -7382.0 NULL NULL 1970-01-01 A34p7oRr2WvUJNf A34p7oRr2WvUJNf 4hA4KQj2vD3fI6gX82220d false -11 NULL -1072910839 2048385991 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false +11 NULL -1072910839 2048385991 11.0 NULL 11 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false NULL 8373 -1072081801 1864027286 NULL 8373.0 NULL NULL 1970-01-01 dPkN74F7 dPkN74F7 4KWs6gw7lv2WYd66P true NULL -5470 -1072076362 1864027286 NULL -5470.0 NULL NULL 1970-01-01 2uLyD28144vklju213J1mr 2uLyD28144vklju213J1mr 4KWs6gw7lv2WYd66P true --51 NULL -1071480828 -1401575336 -51.0 NULL -51.0 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true -8 NULL -1071363017 1349676361 8.0 NULL 8.0 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true +-51 NULL -1071480828 -1401575336 -51.0 NULL -51 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true +8 NULL -1071363017 1349676361 8.0 NULL 8 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true NULL -947 -1070551679 1864027286 NULL -947.0 NULL NULL 1970-01-01 iUR3Q iUR3Q 4KWs6gw7lv2WYd66P false -11 NULL -1069736047 -453772520 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true +11 NULL -1069736047 -453772520 11.0 NULL 11 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true 1 2 3 4 3.14 6.28 5.99 NULL 2014-09-01 its a beautiful day in the neighbhorhood a beautiful day for a neighbor wont you be mine true PREHOOK: query: update acid_uat set ti = ti * 2, @@ -175,13 +175,13 @@ POSTHOOK: query: select * from acid_uat order by i POSTHOOK: type: QUERY POSTHOOK: Input: default@acid_uat #### A masked pattern was here #### -11 NULL -1073279343 -1595604468 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true +11 NULL -1073279343 -1595604468 11.0 NULL 11 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true NULL -7382 -1073051226 -1887561756 NULL -7382.0 NULL NULL 1970-01-01 A34p7oRr2WvUJNf A34p7oRr2WvUJNf 4hA4KQj2vD3fI6gX82220d false -11 NULL -1072910839 2048385991 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false +11 NULL -1072910839 2048385991 11.0 NULL 11 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false NULL 8373 -1072081801 1864027286 NULL 8373.0 NULL NULL 1970-01-01 dPkN74F7 dPkN74F7 4KWs6gw7lv2WYd66P true NULL -5470 -1072076362 1864027286 NULL -5470.0 NULL NULL 1970-01-01 2uLyD28144vklju213J1mr 2uLyD28144vklju213J1mr 4KWs6gw7lv2WYd66P true --102 -51 -1071480828 -1401575336 -51.0 -51.0 -51.0 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true -8 NULL -1071363017 1349676361 8.0 NULL 8.0 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true +-102 -51 -1071480828 -1401575336 -51.0 -51.0 -51 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true +8 NULL -1071363017 1349676361 8.0 NULL 8 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true NULL -947 -1070551679 1864027286 NULL -947.0 NULL NULL 1970-01-01 iUR3Q iUR3Q 4KWs6gw7lv2WYd66P false -11 NULL -1069736047 -453772520 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true +11 NULL -1069736047 -453772520 11.0 NULL 11 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true 1 2 3 4 3.14 6.28 5.99 NULL 2014-09-01 its a beautiful day in the neighbhorhood a beautiful day for a neighbor wont you be mine true diff --git a/ql/src/test/results/clientpositive/tez/vector_between_in.q.out b/ql/src/test/results/clientpositive/tez/vector_between_in.q.out index ad8c4c0eb25b..bf979001ef03 100644 --- a/ql/src/test/results/clientpositive/tez/vector_between_in.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_between_in.q.out @@ -699,19 +699,19 @@ POSTHOOK: Input: default@decimal_date_test -18.5162162162 -17.3216216216 -16.7243243243 --16.1270270270 +-16.127027027 -15.5297297297 -10.7513513514 -9.5567567568 -8.3621621622 --5.9729729730 +-5.972972973 -3.5837837838 4.1810810811 4.7783783784 4.7783783784 5.3756756757 -5.9729729730 -5.9729729730 +5.972972973 +5.972972973 11.3486486486 11.3486486486 11.9459459459 diff --git a/ql/src/test/results/clientpositive/tez/vector_data_types.q.out b/ql/src/test/results/clientpositive/tez/vector_data_types.q.out index 3f38a45170e5..eca2cbc5543b 100644 --- a/ql/src/test/results/clientpositive/tez/vector_data_types.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_data_types.q.out @@ -157,7 +157,7 @@ POSTHOOK: query: SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc OR POSTHOOK: type: QUERY POSTHOOK: Input: default@over1korc #### A masked pattern was here #### -108 301 65536 4294967357 90.05 17.59 true ethan johnson 2013-03-01 09:11:58.703271 75.70 undecided +108 301 65536 4294967357 90.05 17.59 true ethan johnson 2013-03-01 09:11:58.703271 75.7 undecided 118 497 65536 4294967381 50.32 12.72 false david nixon 2013-03-01 09:11:58.703285 83.48 values clariffication 18 280 65536 4294967320 32.92 45.94 false holly white 2013-03-01 09:11:58.703086 58.86 topology 69 489 65536 4294967404 33.52 17.99 false oscar ichabod 2013-03-01 09:11:58.703247 32.68 topology @@ -250,7 +250,7 @@ POSTHOOK: query: SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc OR POSTHOOK: type: QUERY POSTHOOK: Input: default@over1korc #### A masked pattern was here #### -108 301 65536 4294967357 90.05 17.59 true ethan johnson 2013-03-01 09:11:58.703271 75.70 undecided +108 301 65536 4294967357 90.05 17.59 true ethan johnson 2013-03-01 09:11:58.703271 75.7 undecided 118 497 65536 4294967381 50.32 12.72 false david nixon 2013-03-01 09:11:58.703285 83.48 values clariffication 18 280 65536 4294967320 32.92 45.94 false holly white 2013-03-01 09:11:58.703086 58.86 topology 69 489 65536 4294967404 33.52 17.99 false oscar ichabod 2013-03-01 09:11:58.703247 32.68 topology diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_2.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_2.q.out index af9459f10709..ba848227312d 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_2.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_2.q.out @@ -1605,7 +1605,7 @@ POSTHOOK: query: select cast(0.99999999999999999999 as decimal(20,19)) as c from POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_2 #### A masked pattern was here #### -1.0 +1 PREHOOK: query: explain select cast('0.99999999999999999999' as decimal(20,20)) as c from decimal_2 order by c PREHOOK: type: QUERY diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out index 7987d080b373..75f872e2797a 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out @@ -47,7 +47,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -56,7 +56,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.000000000000000000 0 +0 0 0 0 0 0 0.01 0 @@ -67,8 +67,8 @@ NULL 0 0.33 0 0.333 0 1 1 -1.0 1 -1.000000000000000000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 @@ -76,14 +76,14 @@ NULL 0 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -92,14 +92,14 @@ POSTHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 200 200 125.2 125 -124.00 124 +124 124 100 100 20 20 10 10 -3.140 4 +3.14 4 3.14 3 3.14 3 3.14 3 @@ -107,8 +107,8 @@ POSTHOOK: Input: default@decimal_3 2 2 1.122 1 1.12 1 -1.000000000000000000 1 -1.0 1 +1 1 +1 1 1 1 0.333 0 0.33 0 @@ -119,7 +119,7 @@ POSTHOOK: Input: default@decimal_3 0.01 0 0 0 0 0 -0.000000000000000000 0 +0 0 -0.3 0 -0.33 0 -0.333 0 @@ -128,7 +128,7 @@ POSTHOOK: Input: default@decimal_3 -1.122 -11 -1255.49 -1255 -4400 4400 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 NULL 0 PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value PREHOOK: type: QUERY @@ -139,7 +139,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -148,7 +148,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.000000000000000000 0 +0 0 0 0 0 0 0.01 0 @@ -159,8 +159,8 @@ NULL 0 0.33 0 0.333 0 1 1 -1.0 1 -1.000000000000000000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 @@ -168,14 +168,14 @@ NULL 0 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT DISTINCT key FROM DECIMAL_3 ORDER BY key PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -185,7 +185,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL --1234567890.1234567890 +-1234567890.123456789 -4400 -1255.49 -1.122 @@ -193,7 +193,7 @@ NULL -0.333 -0.33 -0.3 -0.000000000000000000 +0 0.01 0.02 0.1 @@ -209,10 +209,10 @@ NULL 10 20 100 -124.00 +124 125.2 200 -1234567890.1234567800 +1234567890.12345678 PREHOOK: query: SELECT key, sum(value) FROM DECIMAL_3 GROUP BY key ORDER BY key PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -222,7 +222,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -230,7 +230,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.000000000000000000 0 +0 0 0.01 0 0.02 0 0.1 0 @@ -246,10 +246,10 @@ NULL 0 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -258,23 +258,23 @@ POSTHOOK: query: SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY v POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### --1234567890 -1234567890.1234567890 +-1234567890 -1234567890.123456789 -1255 -1255.49 -11 -1.122 -1 -2.24 -0 0.330000000000000000 -1 5.242000000000000000 +0 0.33 +1 5.242 2 4 3 9.42 -4 3.140 +4 3.14 10 10 20 20 100 100 -124 124.00 +124 124 125 125.2 200 200 4400 -4400 -1234567890 1234567890.1234567800 +1234567890 1234567890.12345678 PREHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -283,7 +283,7 @@ POSTHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) O POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### --1234567890.1234567890 -1234567890 -1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -1234567890.123456789 -1234567890 -4400 4400 -4400 4400 -1255.49 -1255 -1255.49 -1255 -1.122 -11 -1.122 -11 @@ -294,13 +294,13 @@ POSTHOOK: Input: default@decimal_3 -0.333 0 -0.333 0 -0.33 0 -0.33 0 -0.3 0 -0.3 0 -0.000000000000000000 0 0.000000000000000000 0 -0.000000000000000000 0 0 0 -0.000000000000000000 0 0 0 0 0 0 0 -0 0 0.000000000000000000 0 0 0 0 0 -0 0 0.000000000000000000 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0.01 0 0.01 0 @@ -311,14 +311,14 @@ POSTHOOK: Input: default@decimal_3 0.33 0 0.33 0 0.333 0 0.333 0 1 1 1 1 -1 1 1.0 1 -1 1 1.000000000000000000 1 -1.0 1 1.000000000000000000 1 -1.0 1 1.0 1 -1.0 1 1 1 -1.000000000000000000 1 1.000000000000000000 1 -1.000000000000000000 1 1 1 -1.000000000000000000 1 1.0 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 1.12 1 1.12 1 1.122 1 1.122 1 2 2 2 2 @@ -334,20 +334,20 @@ POSTHOOK: Input: default@decimal_3 3.14 3 3.14 3 3.14 3 3.14 3 3.14 3 3.14 3 -3.14 3 3.140 4 -3.14 3 3.140 4 -3.14 3 3.140 4 -3.140 4 3.14 3 -3.140 4 3.14 3 -3.140 4 3.14 3 -3.140 4 3.140 4 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 4 10 10 10 10 20 20 20 20 100 100 100 100 -124.00 124 124.00 124 +124 124 124 124 125.2 125 125.2 125 200 200 200 200 -1234567890.1234567800 1234567890 1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 1234567890.12345678 1234567890 PREHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.14 ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -359,7 +359,7 @@ POSTHOOK: Input: default@decimal_3 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 PREHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.140 ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -371,7 +371,7 @@ POSTHOOK: Input: default@decimal_3 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 PREHOOK: query: DROP TABLE DECIMAL_3_txt PREHOOK: type: DROPTABLE PREHOOK: Input: default@decimal_3_txt diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_4.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_4.q.out index 483ae1f279e6..613f5a8da93d 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_4.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_4.q.out @@ -57,7 +57,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_4_1 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -66,7 +66,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.0000000000000000000000000 0 +0 0 0 0 0 0 0.01 0 @@ -78,7 +78,7 @@ NULL 0 0.333 0 0.9999999999999999999999999 1 1 1 -1.0 1 +1 1 1.12 1 1.122 1 2 2 @@ -86,14 +86,14 @@ NULL 0 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_4_2 @@ -103,7 +103,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_4_2 #### A masked pattern was here #### NULL NULL --1234567890.1234567890 -3703703670.3703703670 +-1234567890.123456789 -3703703670.370370367 -4400 -13200 -1255.49 -3766.47 -1.122 -3.366 @@ -112,7 +112,7 @@ NULL NULL -0.333 -0.999 -0.33 -0.99 -0.3 -0.9 -0.0000000000000000000000000 0.0000000000000000000000000 +0 0 0 0 0 0 0.01 0.03 @@ -124,7 +124,7 @@ NULL NULL 0.333 0.999 0.9999999999999999999999999 2.9999999999999999999999997 1 3 -1.0 3.0 +1 3 1.12 3.36 1.122 3.366 2 6 @@ -132,14 +132,14 @@ NULL NULL 3.14 9.42 3.14 9.42 3.14 9.42 -3.140 9.420 +3.14 9.42 10 30 20 60 100 300 -124.00 372.00 +124 372 125.2 375.6 200 600 -1234567890.1234567800 3703703670.3703703400 +1234567890.12345678 3703703670.37037034 PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key PREHOOK: type: QUERY PREHOOK: Input: default@decimal_4_2 @@ -149,7 +149,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_4_2 #### A masked pattern was here #### NULL NULL --1234567890.1234567890 -3703703670.3703703670 +-1234567890.123456789 -3703703670.370370367 -4400 -13200 -1255.49 -3766.47 -1.122 -3.366 @@ -158,7 +158,7 @@ NULL NULL -0.333 -0.999 -0.33 -0.99 -0.3 -0.9 -0.0000000000000000000000000 0.0000000000000000000000000 +0 0 0 0 0 0 0.01 0.03 @@ -170,7 +170,7 @@ NULL NULL 0.333 0.999 0.9999999999999999999999999 2.9999999999999999999999997 1 3 -1.0 3.0 +1 3 1.12 3.36 1.122 3.366 2 6 @@ -178,14 +178,14 @@ NULL NULL 3.14 9.42 3.14 9.42 3.14 9.42 -3.140 9.420 +3.14 9.42 10 30 20 60 100 300 -124.00 372.00 +124 372 125.2 375.6 200 600 -1234567890.1234567800 3703703670.3703703400 +1234567890.12345678 3703703670.37037034 PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_4_2 @@ -195,7 +195,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_4_2 #### A masked pattern was here #### NULL NULL --1234567890.1234567890 -3703703670.3703703670 +-1234567890.123456789 -3703703670.370370367 -4400 -13200 -1255.49 -3766.47 -1.122 -3.366 @@ -204,7 +204,7 @@ NULL NULL -0.333 -0.999 -0.33 -0.99 -0.3 -0.9 -0.0000000000000000000000000 0.0000000000000000000000000 +0 0 0 0 0 0 0.01 0.03 @@ -216,7 +216,7 @@ NULL NULL 0.333 0.999 0.9999999999999999999999999 2.9999999999999999999999997 1 3 -1.0 3.0 +1 3 1.12 3.36 1.122 3.366 2 6 @@ -224,14 +224,14 @@ NULL NULL 3.14 9.42 3.14 9.42 3.14 9.42 -3.140 9.420 +3.14 9.42 10 30 20 60 100 300 -124.00 372.00 +124 372 125.2 375.6 200 600 -1234567890.1234567800 3703703670.3703703400 +1234567890.12345678 3703703670.37037034 PREHOOK: query: DROP TABLE DECIMAL_4_1 PREHOOK: type: DROPTABLE PREHOOK: Input: default@decimal_4_1 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_5.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_5.q.out index 01b5f42b44c3..34c33513eb39 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_5.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_5.q.out @@ -67,7 +67,7 @@ NULL -0.333 -0.33 -0.3 -0.00000 +0 0 0 0.01 @@ -78,8 +78,8 @@ NULL 0.33 0.333 1 -1.0 -1.00000 +1 +1 1.12 1.122 2 @@ -87,11 +87,11 @@ NULL 3.14 3.14 3.14 -3.140 +3.14 10 20 100 -124.00 +124 125.2 200 PREHOOK: query: SELECT DISTINCT key FROM DECIMAL_5 ORDER BY key @@ -110,7 +110,7 @@ NULL -0.333 -0.33 -0.3 -0.00000 +0 0.01 0.02 0.1 @@ -126,7 +126,7 @@ NULL 10 20 100 -124.00 +124 125.2 200 PREHOOK: query: SELECT cast(key as decimal) FROM DECIMAL_5 @@ -185,7 +185,7 @@ POSTHOOK: Input: default@decimal_5 #### A masked pattern was here #### NULL NULL -0.000 +0 0 100 10 @@ -204,7 +204,7 @@ NULL -0.3 -0.33 -0.333 -1.0 +1 2 3.14 -1.12 @@ -212,13 +212,13 @@ NULL -1.122 1.12 1.122 -124.00 +124 125.2 NULL 3.14 3.14 -3.140 -1.000 +3.14 +1 NULL NULL PREHOOK: query: DROP TABLE DECIMAL_5_txt diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out index 7ecd50056a2e..9cdd7fc03b4f 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out @@ -125,20 +125,20 @@ NULL 1234567890 -1.12 -1 -0.333 0 -0.3 0 -0.00000 0 +0 0 0 0 0.333 0 -1.0 1 -1.00000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 10.73433 5 -124.00 124 +124 124 125.2 125 23232.23435 2 PREHOOK: query: SELECT * FROM DECIMAL_6_2 ORDER BY key, value @@ -157,20 +157,20 @@ NULL 0 -1.12 -1 -0.333 0 -0.3 0 -0.0000 0 +0 0 0 0 0.333 0 -1.0 1 -1.0000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 10.7343 5 -124.00 124 +124 124 125.2 125 23232.2344 2 2389432.2375 3 @@ -213,16 +213,16 @@ NULL -0.333 -0.3 -0.3 -0.00000 -0.0000 +0 +0 0 0 0.333 0.333 -1.0 -1.0 -1.0000 -1.00000 +1 +1 +1 +1 1.12 1.12 1.122 @@ -233,14 +233,14 @@ NULL 3.14 3.14 3.14 -3.140 -3.140 +3.14 +3.14 10 10 10.7343 10.73433 -124.00 -124.00 +124 +124 125.2 125.2 23232.23435 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out index e4b2c56190d8..0037e2a0bd45 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out @@ -115,9 +115,9 @@ POSTHOOK: Input: default@decimal_vgby #### A masked pattern was here #### NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 3072 11160.715384615385 -5147.907692307693 6010604.3076923073536 -3728 6 5831542.269248378 -3367.6517567568 5817556.0411483778 6 6984454.211097692 -4033.445769230769 6967702.8672438458471 --563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 +-563 2 -515.621072973 -3367.6517567568 -3883.2728297298 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 762 2 5831542.269248378 1531.2194054054 5833073.4886537834 2 6984454.211097692 1833.9456923076925 6986288.1567899996925 -6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 +6981 3 5831542.269248378 -515.621072973 5830511.027102432 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 1024 11697.969230769231 -11712.99230769231 -416182.64030769233089 528534767 1024 5831542.269248378 -9777.1594594595 11646372.8607481068 1024 6984454.211097692 -11710.130769230771 13948892.79980307629003 626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 1024 11645.746153846154 -11712.276923076923 12625.04759999997746 @@ -219,9 +219,9 @@ POSTHOOK: Input: default@decimal_vgby #### A masked pattern was here #### NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 1633.60810810806667 5695.483082135364 5696.4103077145055 3072 11160.715384615385 -5147.907692307693 6010604.3076923073536 1956.576923076922966667 6821.495748565159 6822.606289190924 -3728 6 5831542.269248378 -3367.6517567568 5817556.0411483778 969592.67352472963333 2174330.2092403853 2381859.406131774 6 6984454.211097692 -4033.445769230769 6967702.8672438458471 1161283.811207307641183333 2604201.2704476737 2852759.5602156054 --563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 -1941.6364148649 1426.0153418918999 2016.6902366556308 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 -2325.50327307692295 1707.9424961538462 2415.395441814127 +-563 2 -515.621072973 -3367.6517567568 -3883.2728297298 -1941.6364148649 1426.0153418918999 2016.6902366556308 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 -2325.50327307692295 1707.9424961538462 2415.395441814127 762 2 5831542.269248378 1531.2194054054 5833073.4886537834 2916536.7443268917 2915005.5249214866 4122440.3477364695 2 6984454.211097692 1833.9456923076925 6986288.1567899996925 3493144.07839499984625 3491310.1327026924 4937458.140118758 -6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 1943503.67570081066667 2749258.455012492 3367140.1929065133 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 2327739.696514615282066667 3292794.4113115156 4032833.0678006653 +6981 3 5831542.269248378 -515.621072973 5830511.027102432 1943503.67570081066667 2749258.455012492 3367140.1929065133 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 2327739.696514615282066667 3292794.4113115156 4032833.0678006653 253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 -339.33992366976309 5708.9563478862 5711.745967572779 1024 11697.969230769231 -11712.99230769231 -416182.64030769233089 -406.428359675480791885 6837.632716002934 6840.973851172274 528534767 1024 5831542.269248378 -9777.1594594595 11646372.8607481068 11373.41099682432305 257528.92988206653 257654.7686043977 1024 6984454.211097692 -11710.130769230771 13948892.79980307629003 13621.965624807691689482 308443.1074570801 308593.82484083984 626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 10.29399661106318 5742.09145323734 5744.897264034267 1024 11645.746153846154 -11712.276923076923 12625.04759999997746 12.329148046874977988 6877.318722794877 6880.679250101603 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_cast.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_cast.q.out index e2fe3a21118a..59b80f209dbc 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_cast.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_cast.q.out @@ -29,13 +29,13 @@ POSTHOOK: query: SELECT cdouble, cint, cboolean1, ctimestamp1, CAST(cdouble AS D POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### --13326.0 528534767 true 1969-12-31 15:59:46.674 -13326.0 528534767 1 -13 --15813.0 528534767 true 1969-12-31 15:59:55.787 -15813.0 528534767 1 -4 --9566.0 528534767 true 1969-12-31 15:59:44.187 -9566.0 528534767 1 -16 -15007.0 528534767 true 1969-12-31 15:59:50.434 15007.0 528534767 1 -10 -7021.0 528534767 true 1969-12-31 16:00:15.007 7021.0 528534767 1 15 -4963.0 528534767 true 1969-12-31 16:00:07.021 4963.0 528534767 1 7 --7824.0 528534767 true 1969-12-31 16:00:04.963 -7824.0 528534767 1 5 --15431.0 528534767 true 1969-12-31 15:59:52.176 -15431.0 528534767 1 -8 --15549.0 528534767 true 1969-12-31 15:59:44.569 -15549.0 528534767 1 -15 -5780.0 528534767 true 1969-12-31 15:59:44.451 5780.0 528534767 1 -16 +-13326.0 528534767 true 1969-12-31 15:59:46.674 -13326 528534767 1 -13 +-15813.0 528534767 true 1969-12-31 15:59:55.787 -15813 528534767 1 -4 +-9566.0 528534767 true 1969-12-31 15:59:44.187 -9566 528534767 1 -16 +15007.0 528534767 true 1969-12-31 15:59:50.434 15007 528534767 1 -10 +7021.0 528534767 true 1969-12-31 16:00:15.007 7021 528534767 1 15 +4963.0 528534767 true 1969-12-31 16:00:07.021 4963 528534767 1 7 +-7824.0 528534767 true 1969-12-31 16:00:04.963 -7824 528534767 1 5 +-15431.0 528534767 true 1969-12-31 15:59:52.176 -15431 528534767 1 -8 +-15549.0 528534767 true 1969-12-31 15:59:44.569 -15549 528534767 1 -15 +5780.0 528534767 true 1969-12-31 15:59:44.451 5780 528534767 1 -16 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out index 7faa6305faff..a1e95e8b1723 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out @@ -40,12 +40,12 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_test #### A masked pattern was here #### 19699.417463617423 -12507.913305613346 0.8351496686995997 2.8303425077026896E7 3.6405405405 8963 10735 -17 8963 true 10735.776923076923 8963.641 10735.776923076923 1969-12-31 18:29:23.64054054 -9216.339708939685 -5851.806444906470 0.8353975893550668 6195112.1797296945 3.6243243243 4193 5022 -98 4193 true 5022.715384615385 4193.6245 5022.715384615385 1969-12-31 17:09:53.624324324 +9216.339708939685 -5851.80644490647 0.8353975893550668 6195112.1797296945 3.6243243243 4193 5022 -98 4193 true 5022.715384615385 4193.6245 5022.715384615385 1969-12-31 17:09:53.624324324 6514.8403326403464 -4136.5212058211928 0.8355907765708067 3095563.9418919063 4.3864864865 2964 3550 -34 2964 true 3550.4538461538464 2964.3865 3550.4538461538464 1969-12-31 16:49:24.386486486 7587.301455301477 -4817.467775467754 0.8354976172734904 4198623.24324327 2.3783783784 3452 4134 38 3452 true 4134.923076923077 3452.3784 4134.923076923077 1969-12-31 16:57:32.378378378 -19197.9729729730 -12189.5270270270 0.835155361813429 2.6880848817567654E7 5.4729729730 8735 10462 -34 8735 true 10462.5 8735.473 10462.5 1969-12-31 18:25:35.472972973 +19197.972972973 -12189.527027027 0.835155361813429 2.6880848817567654E7 5.472972973 8735 10462 -34 8735 true 10462.5 8735.473 10462.5 1969-12-31 18:25:35.472972973 17098.9945945946 -10856.8054054054 0.8351828165813104 2.132423090270272E7 0.3945945946 7780 9318 102 7780 true 9318.6 7780.3945 9318.6 1969-12-31 18:09:40.394594594 12433.723076923077 -7894.646153846154 0.8352770361086894 1.12754688E7 7.6 5657 6776 120 5657 true 6776.123076923077 5657.6 6776.123076923077 1969-12-31 17:34:17.6 7247.316839916862 -4601.598544698524 0.8355241651897876 3830775.6932432684 7.6783783784 3297 3949 109 3297 true 3949.638461538462 3297.6785 3949.638461538462 1969-12-31 16:54:57.678378378 -14757.1700623700465 -9369.8914760914930 0.8352226654922171 1.5883214124324286E7 4.8162162162 6714 8042 106 6714 true 8042.3538461538465 6714.8164 8042.3538461538465 1969-12-31 17:51:54.816216216 +14757.1700623700465 -9369.891476091493 0.8352226654922171 1.5883214124324286E7 4.8162162162 6714 8042 106 6714 true 8042.3538461538465 6714.8164 8042.3538461538465 1969-12-31 17:51:54.816216216 10964.832016631993 -6961.991060291086 0.8353232978714221 8768719.779729689 9.2243243243 4989 5975 87 4989 true 5975.607692307693 4989.224 5975.607692307693 1969-12-31 17:23:09.224324324 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out index 6a5ccc65cff8..049be2611e59 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out @@ -109,26 +109,26 @@ POSTHOOK: query: SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2 POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_mapjoin #### A masked pattern was here #### -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 -515.6210729730 6984454.211097692 -6981 6981 -515.6210729730 6984454.211097692 -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL +6981 6981 -515.621072973 -617.5607769230769 +6981 6981 -515.621072973 -617.5607769230769 +6981 6981 -515.621072973 -617.5607769230769 +6981 6981 -515.621072973 -617.5607769230769 +6981 6981 -515.621072973 6984454.211097692 +6981 6981 -515.621072973 6984454.211097692 +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL 6981 6981 5831542.269248378 -617.5607769230769 6981 6981 5831542.269248378 -617.5607769230769 6981 6981 5831542.269248378 6984454.211097692 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_precision.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_precision.q.out index d15562313be7..3d9d89a768b3 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_precision.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_precision.q.out @@ -99,13 +99,13 @@ NULL NULL NULL NULL -0.0000000000 -0.0000000000 -0.0000000000 -0.0000000000 0 -0.1234567890 -0.1234567890 +0 +0 +0 +0 +0.123456789 +0.123456789 1.2345678901 1.2345678901 1.2345678901 @@ -129,7 +129,7 @@ NULL 123456789.0123456 123456789.0123456789 1234567890.123456 -1234567890.1234567890 +1234567890.123456789 PREHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -182,13 +182,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 1.0000000000 -1.0000000000 -0.0000000000 1.0000000000 -1.0000000000 -0.0000000000 1.0000000000 -1.0000000000 -0.0000000000 1.0000000000 -1.0000000000 0 1 -1 -0.1234567890 1.1234567890 -0.8765432110 -0.1234567890 1.1234567890 -0.8765432110 +0 1 -1 +0 1 -1 +0 1 -1 +0 1 -1 +0.123456789 1.123456789 -0.876543211 +0.123456789 1.123456789 -0.876543211 1.2345678901 2.2345678901 0.2345678901 1.2345678901 2.2345678901 0.2345678901 1.2345678901 2.2345678901 0.2345678901 @@ -212,7 +212,7 @@ NULL NULL NULL 123456789.0123456 123456790.0123456 123456788.0123456 123456789.0123456789 123456790.0123456789 123456788.0123456789 1234567890.123456 1234567891.123456 1234567889.123456 -1234567890.1234567890 1234567891.1234567890 1234567889.1234567890 +1234567890.123456789 1234567891.123456789 1234567889.123456789 PREHOOK: query: SELECT dec, dec * 2, dec / 3 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -265,13 +265,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0.0000000000 0 -0.0000000000 0.0000000000 0 -0.0000000000 0.0000000000 0 -0.0000000000 0.0000000000 0 0 0 0 -0.1234567890 0.2469135780 0.041152263 -0.1234567890 0.2469135780 0.041152263 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0.123456789 0.246913578 0.041152263 +0.123456789 0.246913578 0.041152263 1.2345678901 2.4691357802 0.411522630033 1.2345678901 2.4691357802 0.411522630033 1.2345678901 2.4691357802 0.411522630033 @@ -281,9 +281,9 @@ NULL NULL NULL 123.4567890123 246.9135780246 41.1522630041 123.4567890123 246.9135780246 41.1522630041 123.4567890123 246.9135780246 41.1522630041 -1234.5678901235 2469.1357802470 411.522630041167 -1234.5678901235 2469.1357802470 411.522630041167 -1234.5678901235 2469.1357802470 411.522630041167 +1234.5678901235 2469.135780247 411.522630041167 +1234.5678901235 2469.135780247 411.522630041167 +1234.5678901235 2469.135780247 411.522630041167 12345.6789012346 24691.3578024692 4115.226300411533 12345.6789012346 24691.3578024692 4115.226300411533 123456.7890123456 246913.5780246912 41152.2630041152 @@ -295,7 +295,7 @@ NULL NULL NULL 123456789.0123456 246913578.0246912 41152263.0041152 123456789.0123456789 246913578.0246913578 41152263.0041152263 1234567890.123456 2469135780.246912 411522630.041152 -1234567890.1234567890 2469135780.2469135780 411522630.041152263 +1234567890.123456789 2469135780.246913578 411522630.041152263 PREHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -348,13 +348,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 0 0 -0.1234567890 0.013717421 -0.1234567890 0.013717421 +0 0 +0 0 +0 0 +0 0 +0.123456789 0.013717421 +0.123456789 0.013717421 1.2345678901 0.137174210011 1.2345678901 0.137174210011 1.2345678901 0.137174210011 @@ -378,7 +378,7 @@ NULL NULL 123456789.0123456 13717421.001371733333 123456789.0123456789 13717421.0013717421 1234567890.123456 137174210.013717333333 -1234567890.1234567890 137174210.013717421 +1234567890.123456789 137174210.013717421 PREHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -431,13 +431,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 0 0 -0.1234567890 0.0045724736667 -0.1234567890 0.0045724736667 +0 0 +0 0 +0 0 +0 0 +0.123456789 0.0045724736667 +0.123456789 0.0045724736667 1.2345678901 0.0457247366704 1.2345678901 0.0457247366704 1.2345678901 0.0457247366704 @@ -461,7 +461,7 @@ NULL NULL 123456789.0123456 4572473.6671239111111 123456789.0123456789 4572473.6671239140333 1234567890.123456 45724736.6712391111111 -1234567890.1234567890 45724736.6712391403333 +1234567890.123456789 45724736.6712391403333 PREHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -514,13 +514,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0.00000000000000000000 -0.0000000000 0.00000000000000000000 -0.0000000000 0.00000000000000000000 -0.0000000000 0.00000000000000000000 0 0 -0.1234567890 0.01524157875019052100 -0.1234567890 0.01524157875019052100 +0 0 +0 0 +0 0 +0 0 +0.123456789 0.015241578750190521 +0.123456789 0.015241578750190521 1.2345678901 1.52415787526596567801 1.2345678901 1.52415787526596567801 1.2345678901 1.52415787526596567801 @@ -544,7 +544,7 @@ NULL NULL 123456789.0123456 15241578753238817.26870921383936 123456789.0123456789 15241578753238836.75019051998750190521 1234567890.123456 NULL -1234567890.1234567890 NULL +1234567890.123456789 NULL PREHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_trailing.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_trailing.q.out index cb0b5a27396a..ffdb1c9b67be 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_trailing.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_trailing.q.out @@ -76,13 +76,13 @@ POSTHOOK: Input: default@decimal_trailing 0 0 0 1 0 0 2 NULL NULL -3 1.0000 1.00000000 -4 10.0000 10.00000000 -5 100.0000 100.00000000 -6 1000.0000 1000.00000000 -7 10000.0000 10000.00000000 -8 100000.0000 100000.00000000 -9 NULL 1000000.00000000 +3 1 1 +4 10 10 +5 100 100 +6 1000 1000 +7 10000 10000 +8 100000 100000 +9 NULL 1000000 10 NULL NULL 11 NULL NULL 12 NULL NULL @@ -91,18 +91,18 @@ POSTHOOK: Input: default@decimal_trailing 15 NULL NULL 16 NULL NULL 17 NULL NULL -18 1.0000 1.00000000 -19 10.000 10.0000000 -20 100.00 100.000000 -21 1000.0 1000.00000 -22 100000 10000.0000 -23 0.0000 0.00000000 -24 0.000 0.0000000 -25 0.00 0.000000 -26 0.0 0.00000 -27 0 0.00000 -28 12313.2000 134134.31252500 -29 99999.9990 134134.31242553 +18 1 1 +19 10 10 +20 100 100 +21 1000 1000 +22 100000 10000 +23 0 0 +24 0 0 +25 0 0 +26 0 0 +27 0 0 +28 12313.2 134134.312525 +29 99999.999 134134.31242553 PREHOOK: query: DROP TABLE DECIMAL_TRAILING_txt PREHOOK: type: DROPTABLE PREHOOK: Input: default@decimal_trailing_txt diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out index 8e847f6a82b2..266b4cbcebb2 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out @@ -97,7 +97,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -8800 NULL -0.0000000000 +0 0 200 20 @@ -116,7 +116,7 @@ NULL -0.6 -0.66 -0.666 -2.0 +2 4 6.28 -2.24 @@ -124,15 +124,15 @@ NULL -2.244 2.24 2.244 -248.00 +248 250.4 -2510.98 6.28 6.28 -6.280 -2.0000000000 --2469135780.2469135780 -2469135780.2469135600 +6.28 +2 +-2469135780.246913578 +2469135780.24691356 PREHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF @@ -180,7 +180,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 0 NULL -0.0000000000 +0 0 200 20 @@ -199,7 +199,7 @@ NULL -0.3 -0.33 -0.333 -2.0 +2 4 6.14 -2.12 @@ -207,15 +207,15 @@ NULL -12.122 2.12 2.122 -248.00 +248 250.2 -2510.49 6.14 6.14 -7.140 -2.0000000000 --2469135780.1234567890 -2469135780.1234567800 +7.14 +2 +-2469135780.123456789 +2469135780.12345678 PREHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF @@ -430,42 +430,42 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 0 NULL -0.0000000000 0 0 0 0 -0.0 -0.00 0 0 0 0 -0.0 -0.00 -0.0 -0.00 -0.000 -0.0 -0.00 -0.000 -0.0 0 -0.00 -0.00 -0.00 -0.000 -0.00 -0.000 -0.00 -0.0 -0.00 -0.00 -0.00 -0.000 -0.0000000000 -0.0000000000 -0.0000000000 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 PREHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF @@ -513,7 +513,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -8800 NULL -0.0000000000 +0 0 0 0 @@ -532,7 +532,7 @@ NULL -0.3 -0.33 -0.333 -0.0 +0 0 0.14 -0.12 @@ -540,15 +540,15 @@ NULL 9.878 0.12 0.122 -0.00 +0 0.2 -0.49 0.14 0.14 --0.860 -0.0000000000 --0.1234567890 -0.1234567800 +-0.86 +0 +-0.123456789 +0.12345678 PREHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF @@ -763,7 +763,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 19360000 NULL -0.00000000000000000000 +0 0 10000 100 @@ -782,7 +782,7 @@ NULL 0.09 0.1089 0.110889 -1.00 +1 4 9.8596 1.2544 @@ -790,13 +790,13 @@ NULL 1.258884 1.2544 1.258884 -15376.0000 +15376 15675.04 1576255.1401 9.8596 9.8596 -9.859600 -1.00000000000000000000 +9.8596 +1 NULL NULL PREHOOK: query: EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0 @@ -853,7 +853,7 @@ POSTHOOK: Input: default@decimal_udf 200 200 20 20 2 2 -1.0 1 +1 1 2 2 3.14 3 -1.12 -1 @@ -861,15 +861,15 @@ POSTHOOK: Input: default@decimal_udf -1.122 -11 1.12 1 1.122 1 -124.00 124 +124 124 125.2 125 -1255.49 -1255 3.14 3 3.14 3 -3.140 4 -1.0000000000 1 --1234567890.1234567890 -1234567890 -1234567890.1234567800 1234567890 +3.14 4 +1 1 +-1234567890.123456789 -1234567890 +1234567890.12345678 1234567890 PREHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF @@ -917,26 +917,26 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -19360000 NULL -0.0000000000 +0 0 10000 100 1 -0.0 -0.00 +0 +0 40000 400 4 0 -0.0 -0.00 -0.0 -0.00 -0.000 -0.0 -0.00 -0.000 -1.0 +0 +0 +0 +0 +0 +0 +0 +0 +1 4 9.42 1.12 @@ -944,15 +944,15 @@ NULL 12.342 1.12 1.122 -15376.00 -15650.0 +15376 +15650 1575639.95 9.42 9.42 -12.560 -1.0000000000 -1524157875171467887.5019052100 -1524157875171467876.3907942000 +12.56 +1 +1524157875171467887.50190521 +1524157875171467876.3907942 PREHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF @@ -1370,7 +1370,7 @@ POSTHOOK: Input: default@decimal_udf 0.785 1 1.0000000001 -1.000000000099999992710 +1.00000000009999999271 PREHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 @@ -1574,7 +1574,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 4400 NULL -0.0000000000 +0 0 100 10 @@ -1593,7 +1593,7 @@ NULL 0.3 0.33 0.333 -1.0 +1 2 3.14 1.12 @@ -1601,15 +1601,15 @@ NULL 1.122 1.12 1.122 -124.00 +124 125.2 1255.49 3.14 3.14 -3.140 -1.0000000000 -1234567890.1234567890 -1234567890.1234567800 +3.14 +1 +1234567890.123456789 +1234567890.12345678 PREHOOK: query: -- avg EXPLAIN SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value PREHOOK: type: QUERY @@ -1696,23 +1696,23 @@ POSTHOOK: query: SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DE POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### --1234567890 -1234567890.123456789 -1234567890.123456789 -1234567890.1234567890 +-1234567890 -1234567890.123456789 -1234567890.123456789 -1234567890.123456789 -1255 -1255.49 -1255.49 -1255.49 -11 -1.122 -1.122 -1.122 -1 -1.12 -1.12 -2.24 -0 0.02538461538461538461538 0.02538461538462 0.3300000000 -1 1.0484 1.0484 5.2420000000 +0 0.02538461538461538461538 0.02538461538462 0.33 +1 1.0484 1.0484 5.242 2 2 2 4 3 3.14 3.14 9.42 -4 3.14 3.14 3.140 +4 3.14 3.14 3.14 10 10 10 10 20 20 20 20 100 100 100 100 -124 124 124 124.00 +124 124 124 124 125 125.2 125.2 125.2 200 200 200 200 4400 -4400 -4400 -4400 -1234567890 1234567890.12345678 1234567890.12345678 1234567890.1234567800 +1234567890 1234567890.12345678 1234567890.12345678 1234567890.12345678 PREHOOK: query: -- negative EXPLAIN SELECT -key FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -1762,7 +1762,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 4400 NULL -0.0000000000 +0 0 -100 -10 @@ -1781,7 +1781,7 @@ NULL 0.3 0.33 0.333 --1.0 +-1 -2 -3.14 1.12 @@ -1789,15 +1789,15 @@ NULL 1.122 -1.12 -1.122 --124.00 +-124 -125.2 1255.49 -3.14 -3.14 --3.140 --1.0000000000 -1234567890.1234567890 --1234567890.1234567800 +-3.14 +-1 +1234567890.123456789 +-1234567890.12345678 PREHOOK: query: -- positive EXPLAIN SELECT +key FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -1829,7 +1829,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -4400 NULL -0.0000000000 +0 0 100 10 @@ -1848,7 +1848,7 @@ NULL -0.3 -0.33 -0.333 -1.0 +1 2 3.14 -1.12 @@ -1856,15 +1856,15 @@ NULL -1.122 1.12 1.122 -124.00 +124 125.2 -1255.49 3.14 3.14 -3.140 -1.0000000000 --1234567890.1234567890 -1234567890.1234567800 +3.14 +1 +-1234567890.123456789 +1234567890.12345678 PREHOOK: query: -- ceiling EXPlAIN SELECT CEIL(key) FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -2082,42 +2082,42 @@ POSTHOOK: query: SELECT ROUND(key, 2) FROM DECIMAL_UDF POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### --4400.00 +-4400 NULL -0.00 -0.00 -100.00 -10.00 -1.00 -0.10 +0 +0 +100 +10 +1 +0.1 0.01 -200.00 -20.00 -2.00 -0.00 -0.20 +200 +20 +2 +0 +0.2 0.02 -0.30 +0.3 0.33 0.33 --0.30 +-0.3 -0.33 -0.33 -1.00 -2.00 +1 +2 3.14 -1.12 -1.12 -1.12 1.12 1.12 -124.00 -125.20 +124 +125.2 -1255.49 3.14 3.14 3.14 -1.00 +1 -1234567890.12 1234567890.12 PREHOOK: query: -- power @@ -2257,38 +2257,38 @@ NULL NULL 1 1 -0.0 -0.00 -0.000 +0 +0 +0 1 1 0 NULL -0.0 -0.00 -0.10 -0.010 -0.0010 -0.10 -0.010 -0.0010 -0.0 0 -1.00 +0 +0.1 +0.01 +0.001 +0.1 +0.01 +0.001 +0 +0 +1 -0.12 -0.12 -0.122 0.44 0.439 -1.00 -1.0 +1 +1 -626.745 -1.00 -1.00 -1.000 -0.0000000000 +1 +1 +1 +0 -617283944.0617283945 -1.0000000000 +1 PREHOOK: query: -- stddev, var EXPLAIN SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value PREHOOK: type: QUERY @@ -2608,7 +2608,7 @@ POSTHOOK: query: SELECT MIN(key) FROM DECIMAL_UDF POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### --1234567890.1234567890 +-1234567890.123456789 PREHOOK: query: -- max EXPLAIN SELECT MAX(key) FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -2679,7 +2679,7 @@ POSTHOOK: query: SELECT MAX(key) FROM DECIMAL_UDF POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -1234567890.1234567800 +1234567890.12345678 PREHOOK: query: -- count EXPLAIN SELECT COUNT(key) FROM DECIMAL_UDF PREHOOK: type: QUERY diff --git a/ql/src/test/results/clientpositive/tez/vector_reduce_groupby_decimal.q.out b/ql/src/test/results/clientpositive/tez/vector_reduce_groupby_decimal.q.out index 14acfc5cd76f..d38faabba9e8 100644 --- a/ql/src/test/results/clientpositive/tez/vector_reduce_groupby_decimal.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_reduce_groupby_decimal.q.out @@ -132,7 +132,7 @@ POSTHOOK: Input: default@decimal_test -1066226047 -9439.0 -5637.8891891892 -6752.515384615385 -5637.8891891892 -1065117869 2538.0 1515.9405405405 1815.646153846154 1515.9405405405 -1064949302 6454.0 3854.9567567568 4617.092307692308 3854.9567567568 --1063498122 -11480.0 -6856.9729729730 -8212.615384615387 -6856.9729729730 +-1063498122 -11480.0 -6856.972972973 -8212.615384615387 -6856.972972973 -1062973443 10541.0 6296.1108108108 7540.869230769231 6296.1108108108 -1061614989 -4234.0 -2528.9567567568 -3028.938461538462 -2528.9567567568 -1061057428 -1085.0 -648.0675675676 -776.1923076923077 -648.0675675676 @@ -140,14 +140,14 @@ POSTHOOK: Input: default@decimal_test -1059338191 7322.0 4373.4108108108 5238.046153846154 4373.4108108108 -1059047258 12452.0 7437.5459459459 8907.969230769231 7437.5459459459 -1056684111 13991.0 8356.7864864865 10008.946153846155 8356.7864864865 --1055945837 13690.0 8177.0 9793.615384615387 8177.0 +-1055945837 13690.0 8177 9793.615384615387 8177 -1055669248 2570.0 1535.0540540541 1838.538461538462 1535.0540540541 -1055316250 -14990.0 -8953.4864864865 -10723.615384615385 -8953.4864864865 -1053385587 14504.0 8663.2 10375.938461538462 8663.2 -1053238077 -3704.0 -2212.3891891892 -2649.784615384616 -2212.3891891892 -1052745800 -12404.0 -7408.8756756757 -8873.630769230771 -7408.8756756757 -1052322972 -7433.0 -4439.7108108108 -5317.453846153847 -4439.7108108108 --1050684541 -8261.0 -4934.2729729730 -5909.792307692308 -4934.2729729730 +-1050684541 -8261.0 -4934.272972973 -5909.792307692308 -4934.272972973 -1050657303 -6999.0 -4180.4837837838 -5006.976923076923 -4180.4837837838 -1050165799 8634.0 5157.0648648649 6176.63076923077 5157.0648648649 -1048934049 -524.0 -312.9837837838 -374.86153846153854 -312.9837837838 @@ -158,12 +158,12 @@ POSTHOOK: Input: default@decimal_test -1045087657 -5865.0 -3503.1486486486 -4195.7307692307695 -3503.1486486486 -1044207190 5381.0 3214.0567567568 3849.4846153846156 3214.0567567568 -1044093617 -3422.0 -2043.9513513514 -2448.046153846154 -2043.9513513514 --1043573508 16216.0 9685.7729729730 11600.676923076924 9685.7729729730 +-1043573508 16216.0 9685.772972973 11600.676923076924 9685.772972973 -1043132597 12302.0 7347.9513513514 8800.66153846154 7347.9513513514 -1043082182 9180.0 5483.1891891892 6567.2307692307695 5483.1891891892 --1042805968 5133.0 3065.9270270270 3672.0692307692307 3065.9270270270 +-1042805968 5133.0 3065.927027027 3672.0692307692307 3065.927027027 -1042712895 9296.0 5552.4756756757 6650.215384615385 5552.4756756757 --1042396242 9583.0 5723.9000000000 6855.53076923077 5723.9000000000 +-1042396242 9583.0 5723.9 6855.53076923077 5723.9 -1041734429 -836.0 -499.3405405405 -598.0615384615385 -499.3405405405 -1041391389 -12970.0 -7746.9459459459 -9278.538461538463 -7746.9459459459 -1041252354 756.0 451.5567567568 540.8307692307692 451.5567567568 diff --git a/ql/src/test/results/clientpositive/udf_case.q.out b/ql/src/test/results/clientpositive/udf_case.q.out index 29905ab219e0..ed0aac031363 100644 --- a/ql/src/test/results/clientpositive/udf_case.q.out +++ b/ql/src/test/results/clientpositive/udf_case.q.out @@ -208,4 +208,4 @@ FROM src tablesample (1 rows) POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -123.0 123.0 abcd +123 123.0 abcd diff --git a/ql/src/test/results/clientpositive/udf_when.q.out b/ql/src/test/results/clientpositive/udf_when.q.out index 696d7b0068d5..52f15b374aff 100644 --- a/ql/src/test/results/clientpositive/udf_when.q.out +++ b/ql/src/test/results/clientpositive/udf_when.q.out @@ -191,4 +191,4 @@ FROM src tablesample (1 rows) POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -123.0 123.0 abcd +123 123.0 abcd diff --git a/ql/src/test/results/clientpositive/update_all_types.q.out b/ql/src/test/results/clientpositive/update_all_types.q.out index f1353d068ad6..eba4dde4cf60 100644 --- a/ql/src/test/results/clientpositive/update_all_types.q.out +++ b/ql/src/test/results/clientpositive/update_all_types.q.out @@ -87,16 +87,16 @@ POSTHOOK: query: select * from acid_uat order by i POSTHOOK: type: QUERY POSTHOOK: Input: default@acid_uat #### A masked pattern was here #### -11 NULL -1073279343 -1595604468 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true +11 NULL -1073279343 -1595604468 11.0 NULL 11 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true NULL -7382 -1073051226 -1887561756 NULL -7382.0 NULL NULL 1970-01-01 A34p7oRr2WvUJNf A34p7oRr2WvUJNf 4hA4KQj2vD3fI6gX82220d false -11 NULL -1072910839 2048385991 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false +11 NULL -1072910839 2048385991 11.0 NULL 11 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false NULL 8373 -1072081801 1864027286 NULL 8373.0 NULL NULL 1970-01-01 dPkN74F7 dPkN74F7 4KWs6gw7lv2WYd66P true NULL -5470 -1072076362 1864027286 NULL -5470.0 NULL NULL 1970-01-01 2uLyD28144vklju213J1mr 2uLyD28144vklju213J1mr 4KWs6gw7lv2WYd66P true --51 NULL -1071480828 -1401575336 -51.0 NULL -51.0 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true -8 NULL -1071363017 1349676361 8.0 NULL 8.0 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true +-51 NULL -1071480828 -1401575336 -51.0 NULL -51 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true +8 NULL -1071363017 1349676361 8.0 NULL 8 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true NULL -741 -1070883071 -1645852809 NULL -741.0 NULL NULL 1970-01-01 0ruyd6Y50JpdGRf6HqD 0ruyd6Y50JpdGRf6HqD xH7445Rals48VOulSyR5F false NULL -947 -1070551679 1864027286 NULL -947.0 NULL NULL 1970-01-01 iUR3Q iUR3Q 4KWs6gw7lv2WYd66P false -11 NULL -1069736047 -453772520 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true +11 NULL -1069736047 -453772520 11.0 NULL 11 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true PREHOOK: query: update acid_uat set ti = 1, si = 2, @@ -141,15 +141,15 @@ POSTHOOK: query: select * from acid_uat order by i POSTHOOK: type: QUERY POSTHOOK: Input: default@acid_uat #### A masked pattern was here #### -11 NULL -1073279343 -1595604468 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true +11 NULL -1073279343 -1595604468 11.0 NULL 11 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true NULL -7382 -1073051226 -1887561756 NULL -7382.0 NULL NULL 1970-01-01 A34p7oRr2WvUJNf A34p7oRr2WvUJNf 4hA4KQj2vD3fI6gX82220d false -11 NULL -1072910839 2048385991 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false +11 NULL -1072910839 2048385991 11.0 NULL 11 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false NULL 8373 -1072081801 1864027286 NULL 8373.0 NULL NULL 1970-01-01 dPkN74F7 dPkN74F7 4KWs6gw7lv2WYd66P true NULL -5470 -1072076362 1864027286 NULL -5470.0 NULL NULL 1970-01-01 2uLyD28144vklju213J1mr 2uLyD28144vklju213J1mr 4KWs6gw7lv2WYd66P true --51 NULL -1071480828 -1401575336 -51.0 NULL -51.0 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true -8 NULL -1071363017 1349676361 8.0 NULL 8.0 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true +-51 NULL -1071480828 -1401575336 -51.0 NULL -51 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true +8 NULL -1071363017 1349676361 8.0 NULL 8 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true NULL -947 -1070551679 1864027286 NULL -947.0 NULL NULL 1970-01-01 iUR3Q iUR3Q 4KWs6gw7lv2WYd66P false -11 NULL -1069736047 -453772520 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true +11 NULL -1069736047 -453772520 11.0 NULL 11 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true 1 2 3 4 3.14 6.28 5.99 NULL 2014-09-01 its a beautiful day in the neighbhorhood a beautiful day for a neighbor wont you be mine true PREHOOK: query: update acid_uat set ti = ti * 2, @@ -175,13 +175,13 @@ POSTHOOK: query: select * from acid_uat order by i POSTHOOK: type: QUERY POSTHOOK: Input: default@acid_uat #### A masked pattern was here #### -11 NULL -1073279343 -1595604468 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true +11 NULL -1073279343 -1595604468 11.0 NULL 11 1969-12-31 16:00:02.351 NULL oj1YrV5Wa oj1YrV5Wa P76636jJ6qM17d7DIy true NULL -7382 -1073051226 -1887561756 NULL -7382.0 NULL NULL 1970-01-01 A34p7oRr2WvUJNf A34p7oRr2WvUJNf 4hA4KQj2vD3fI6gX82220d false -11 NULL -1072910839 2048385991 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false +11 NULL -1072910839 2048385991 11.0 NULL 11 1969-12-31 16:00:02.351 NULL 0iqrc5 0iqrc5 KbaDXiN85adbHRx58v false NULL 8373 -1072081801 1864027286 NULL 8373.0 NULL NULL 1970-01-01 dPkN74F7 dPkN74F7 4KWs6gw7lv2WYd66P true NULL -5470 -1072076362 1864027286 NULL -5470.0 NULL NULL 1970-01-01 2uLyD28144vklju213J1mr 2uLyD28144vklju213J1mr 4KWs6gw7lv2WYd66P true --102 -51 -1071480828 -1401575336 -51.0 -51.0 -51.0 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true -8 NULL -1071363017 1349676361 8.0 NULL 8.0 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true +-102 -51 -1071480828 -1401575336 -51.0 -51.0 -51 1969-12-31 16:00:08.451 NULL aw724t8c5558x2xneC624 aw724t8c5558x2xneC624 4uE7l74tESBiKfu7c8wM7GA true +8 NULL -1071363017 1349676361 8.0 NULL 8 1969-12-31 16:00:15.892 NULL Anj0oF Anj0oF IwE1G7Qb0B1NEfV030g true NULL -947 -1070551679 1864027286 NULL -947.0 NULL NULL 1970-01-01 iUR3Q iUR3Q 4KWs6gw7lv2WYd66P false -11 NULL -1069736047 -453772520 11.0 NULL 11.0 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true +11 NULL -1069736047 -453772520 11.0 NULL 11 1969-12-31 16:00:02.351 NULL k17Am8uPHWk02cEf1jet k17Am8uPHWk02cEf1jet qrXLLNX1 true 1 2 3 4 3.14 6.28 5.99 NULL 2014-09-01 its a beautiful day in the neighbhorhood a beautiful day for a neighbor wont you be mine true diff --git a/ql/src/test/results/clientpositive/vector_aggregate_9.q.out b/ql/src/test/results/clientpositive/vector_aggregate_9.q.out index c0fe295e0e33..3a3e2de1caa5 100644 --- a/ql/src/test/results/clientpositive/vector_aggregate_9.q.out +++ b/ql/src/test/results/clientpositive/vector_aggregate_9.q.out @@ -164,4 +164,4 @@ POSTHOOK: query: select min(dc), max(dc), sum(dc), avg(dc) from vectortab2korc POSTHOOK: type: QUERY POSTHOOK: Input: default@vectortab2korc #### A masked pattern was here #### --4997414117561.546875 4994550248722.298828 -10252745435816.024410 -5399023399.587163986308583465 +-4997414117561.546875 4994550248722.298828 -10252745435816.02441 -5399023399.587163986308583465 diff --git a/ql/src/test/results/clientpositive/vector_between_in.q.out b/ql/src/test/results/clientpositive/vector_between_in.q.out index e21dd852281b..22c40feb1275 100644 --- a/ql/src/test/results/clientpositive/vector_between_in.q.out +++ b/ql/src/test/results/clientpositive/vector_between_in.q.out @@ -643,19 +643,19 @@ POSTHOOK: Input: default@decimal_date_test -18.5162162162 -17.3216216216 -16.7243243243 --16.1270270270 +-16.127027027 -15.5297297297 -10.7513513514 -9.5567567568 -8.3621621622 --5.9729729730 +-5.972972973 -3.5837837838 4.1810810811 4.7783783784 4.7783783784 5.3756756757 -5.9729729730 -5.9729729730 +5.972972973 +5.972972973 11.3486486486 11.3486486486 11.9459459459 diff --git a/ql/src/test/results/clientpositive/vector_data_types.q.out b/ql/src/test/results/clientpositive/vector_data_types.q.out index 07d58ed124d6..65aa5e9b3ce4 100644 --- a/ql/src/test/results/clientpositive/vector_data_types.q.out +++ b/ql/src/test/results/clientpositive/vector_data_types.q.out @@ -151,7 +151,7 @@ POSTHOOK: query: SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc OR POSTHOOK: type: QUERY POSTHOOK: Input: default@over1korc #### A masked pattern was here #### -108 301 65536 4294967357 90.05 17.59 true ethan johnson 2013-03-01 09:11:58.703271 75.70 undecided +108 301 65536 4294967357 90.05 17.59 true ethan johnson 2013-03-01 09:11:58.703271 75.7 undecided 118 497 65536 4294967381 50.32 12.72 false david nixon 2013-03-01 09:11:58.703285 83.48 values clariffication 18 280 65536 4294967320 32.92 45.94 false holly white 2013-03-01 09:11:58.703086 58.86 topology 69 489 65536 4294967404 33.52 17.99 false oscar ichabod 2013-03-01 09:11:58.703247 32.68 topology @@ -237,7 +237,7 @@ POSTHOOK: query: SELECT t, si, i, b, f, d, bo, s, ts, dec, bin FROM over1korc OR POSTHOOK: type: QUERY POSTHOOK: Input: default@over1korc #### A masked pattern was here #### -108 301 65536 4294967357 90.05 17.59 true ethan johnson 2013-03-01 09:11:58.703271 75.70 undecided +108 301 65536 4294967357 90.05 17.59 true ethan johnson 2013-03-01 09:11:58.703271 75.7 undecided 118 497 65536 4294967381 50.32 12.72 false david nixon 2013-03-01 09:11:58.703285 83.48 values clariffication 18 280 65536 4294967320 32.92 45.94 false holly white 2013-03-01 09:11:58.703086 58.86 topology 69 489 65536 4294967404 33.52 17.99 false oscar ichabod 2013-03-01 09:11:58.703247 32.68 topology diff --git a/ql/src/test/results/clientpositive/vector_decimal_2.q.out b/ql/src/test/results/clientpositive/vector_decimal_2.q.out index d27381067f9f..fceb027c4e42 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_2.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_2.q.out @@ -1423,7 +1423,7 @@ POSTHOOK: query: select cast(0.99999999999999999999 as decimal(20,19)) as c from POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_2 #### A masked pattern was here #### -1.0 +1 PREHOOK: query: explain select cast('0.99999999999999999999' as decimal(20,20)) as c from decimal_2 order by c PREHOOK: type: QUERY diff --git a/ql/src/test/results/clientpositive/vector_decimal_3.q.out b/ql/src/test/results/clientpositive/vector_decimal_3.q.out index e982e1b848e6..75f872e2797a 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_3.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_3.q.out @@ -47,7 +47,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -56,7 +56,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.000000000000000000 0 +0 0 0 0 0 0 0.01 0 @@ -67,8 +67,8 @@ NULL 0 0.33 0 0.333 0 1 1 -1.0 1 -1.000000000000000000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 @@ -76,14 +76,14 @@ NULL 0 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -92,14 +92,14 @@ POSTHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 200 200 125.2 125 -124.00 124 +124 124 100 100 20 20 10 10 -3.140 4 +3.14 4 3.14 3 3.14 3 3.14 3 @@ -107,8 +107,8 @@ POSTHOOK: Input: default@decimal_3 2 2 1.122 1 1.12 1 -1.000000000000000000 1 -1.0 1 +1 1 +1 1 1 1 0.333 0 0.33 0 @@ -119,7 +119,7 @@ POSTHOOK: Input: default@decimal_3 0.01 0 0 0 0 0 -0.000000000000000000 0 +0 0 -0.3 0 -0.33 0 -0.333 0 @@ -128,7 +128,7 @@ POSTHOOK: Input: default@decimal_3 -1.122 -11 -1255.49 -1255 -4400 4400 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 NULL 0 PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value PREHOOK: type: QUERY @@ -139,7 +139,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -148,7 +148,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.000000000000000000 0 +0 0 0 0 0 0 0.01 0 @@ -159,8 +159,8 @@ NULL 0 0.33 0 0.333 0 1 1 -1.0 1 -1.000000000000000000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 @@ -168,14 +168,14 @@ NULL 0 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT DISTINCT key FROM DECIMAL_3 ORDER BY key PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -185,7 +185,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL --1234567890.1234567890 +-1234567890.123456789 -4400 -1255.49 -1.122 @@ -193,7 +193,7 @@ NULL -0.333 -0.33 -0.3 -0.000000000000000000 +0 0.01 0.02 0.1 @@ -209,10 +209,10 @@ NULL 10 20 100 -124.00 +124 125.2 200 -1234567890.1234567800 +1234567890.12345678 PREHOOK: query: SELECT key, sum(value) FROM DECIMAL_3 GROUP BY key ORDER BY key PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -222,7 +222,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -230,7 +230,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.000000000000000000 0 +0 0 0.01 0 0.02 0 0.1 0 @@ -246,10 +246,10 @@ NULL 0 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -258,23 +258,23 @@ POSTHOOK: query: SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY v POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### --1234567890 -1234567890.1234567890 +-1234567890 -1234567890.123456789 -1255 -1255.49 -11 -1.122 -1 -2.24 -0 0.330000000000000000 -1 5.242000000000000000 +0 0.33 +1 5.242 2 4 3 9.42 -4 3.140 +4 3.14 10 10 20 20 100 100 -124 124.00 +124 124 125 125.2 200 200 4400 -4400 -1234567890 1234567890.1234567800 +1234567890 1234567890.12345678 PREHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -283,7 +283,7 @@ POSTHOOK: query: SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) O POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_3 #### A masked pattern was here #### --1234567890.1234567890 -1234567890 -1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -1234567890.123456789 -1234567890 -4400 4400 -4400 4400 -1255.49 -1255 -1255.49 -1255 -1.122 -11 -1.122 -11 @@ -294,7 +294,11 @@ POSTHOOK: Input: default@decimal_3 -0.333 0 -0.333 0 -0.33 0 -0.33 0 -0.3 0 -0.3 0 -0.000000000000000000 0 0.000000000000000000 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -307,8 +311,14 @@ POSTHOOK: Input: default@decimal_3 0.33 0 0.33 0 0.333 0 0.333 0 1 1 1 1 -1.0 1 1.0 1 -1.000000000000000000 1 1.000000000000000000 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 1.12 1 1.12 1 1.122 1 1.122 1 2 2 2 2 @@ -324,14 +334,20 @@ POSTHOOK: Input: default@decimal_3 3.14 3 3.14 3 3.14 3 3.14 3 3.14 3 3.14 3 -3.140 4 3.140 4 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 4 10 10 10 10 20 20 20 20 100 100 100 100 -124.00 124 124.00 124 +124 124 124 124 125.2 125 125.2 125 200 200 200 200 -1234567890.1234567800 1234567890 1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 1234567890.12345678 1234567890 PREHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.14 ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -343,7 +359,7 @@ POSTHOOK: Input: default@decimal_3 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 PREHOOK: query: SELECT * FROM DECIMAL_3 WHERE key=3.140 ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_3 @@ -355,7 +371,7 @@ POSTHOOK: Input: default@decimal_3 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 PREHOOK: query: DROP TABLE DECIMAL_3_txt PREHOOK: type: DROPTABLE PREHOOK: Input: default@decimal_3_txt diff --git a/ql/src/test/results/clientpositive/vector_decimal_4.q.out b/ql/src/test/results/clientpositive/vector_decimal_4.q.out index 483ae1f279e6..613f5a8da93d 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_4.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_4.q.out @@ -57,7 +57,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_4_1 #### A masked pattern was here #### NULL 0 --1234567890.1234567890 -1234567890 +-1234567890.123456789 -1234567890 -4400 4400 -1255.49 -1255 -1.122 -11 @@ -66,7 +66,7 @@ NULL 0 -0.333 0 -0.33 0 -0.3 0 -0.0000000000000000000000000 0 +0 0 0 0 0 0 0.01 0 @@ -78,7 +78,7 @@ NULL 0 0.333 0 0.9999999999999999999999999 1 1 1 -1.0 1 +1 1 1.12 1 1.122 1 2 2 @@ -86,14 +86,14 @@ NULL 0 3.14 3 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 20 20 100 100 -124.00 124 +124 124 125.2 125 200 200 -1234567890.1234567800 1234567890 +1234567890.12345678 1234567890 PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_4_2 @@ -103,7 +103,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_4_2 #### A masked pattern was here #### NULL NULL --1234567890.1234567890 -3703703670.3703703670 +-1234567890.123456789 -3703703670.370370367 -4400 -13200 -1255.49 -3766.47 -1.122 -3.366 @@ -112,7 +112,7 @@ NULL NULL -0.333 -0.999 -0.33 -0.99 -0.3 -0.9 -0.0000000000000000000000000 0.0000000000000000000000000 +0 0 0 0 0 0 0.01 0.03 @@ -124,7 +124,7 @@ NULL NULL 0.333 0.999 0.9999999999999999999999999 2.9999999999999999999999997 1 3 -1.0 3.0 +1 3 1.12 3.36 1.122 3.366 2 6 @@ -132,14 +132,14 @@ NULL NULL 3.14 9.42 3.14 9.42 3.14 9.42 -3.140 9.420 +3.14 9.42 10 30 20 60 100 300 -124.00 372.00 +124 372 125.2 375.6 200 600 -1234567890.1234567800 3703703670.3703703400 +1234567890.12345678 3703703670.37037034 PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key PREHOOK: type: QUERY PREHOOK: Input: default@decimal_4_2 @@ -149,7 +149,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_4_2 #### A masked pattern was here #### NULL NULL --1234567890.1234567890 -3703703670.3703703670 +-1234567890.123456789 -3703703670.370370367 -4400 -13200 -1255.49 -3766.47 -1.122 -3.366 @@ -158,7 +158,7 @@ NULL NULL -0.333 -0.999 -0.33 -0.99 -0.3 -0.9 -0.0000000000000000000000000 0.0000000000000000000000000 +0 0 0 0 0 0 0.01 0.03 @@ -170,7 +170,7 @@ NULL NULL 0.333 0.999 0.9999999999999999999999999 2.9999999999999999999999997 1 3 -1.0 3.0 +1 3 1.12 3.36 1.122 3.366 2 6 @@ -178,14 +178,14 @@ NULL NULL 3.14 9.42 3.14 9.42 3.14 9.42 -3.140 9.420 +3.14 9.42 10 30 20 60 100 300 -124.00 372.00 +124 372 125.2 375.6 200 600 -1234567890.1234567800 3703703670.3703703400 +1234567890.12345678 3703703670.37037034 PREHOOK: query: SELECT * FROM DECIMAL_4_2 ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@decimal_4_2 @@ -195,7 +195,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_4_2 #### A masked pattern was here #### NULL NULL --1234567890.1234567890 -3703703670.3703703670 +-1234567890.123456789 -3703703670.370370367 -4400 -13200 -1255.49 -3766.47 -1.122 -3.366 @@ -204,7 +204,7 @@ NULL NULL -0.333 -0.999 -0.33 -0.99 -0.3 -0.9 -0.0000000000000000000000000 0.0000000000000000000000000 +0 0 0 0 0 0 0.01 0.03 @@ -216,7 +216,7 @@ NULL NULL 0.333 0.999 0.9999999999999999999999999 2.9999999999999999999999997 1 3 -1.0 3.0 +1 3 1.12 3.36 1.122 3.366 2 6 @@ -224,14 +224,14 @@ NULL NULL 3.14 9.42 3.14 9.42 3.14 9.42 -3.140 9.420 +3.14 9.42 10 30 20 60 100 300 -124.00 372.00 +124 372 125.2 375.6 200 600 -1234567890.1234567800 3703703670.3703703400 +1234567890.12345678 3703703670.37037034 PREHOOK: query: DROP TABLE DECIMAL_4_1 PREHOOK: type: DROPTABLE PREHOOK: Input: default@decimal_4_1 diff --git a/ql/src/test/results/clientpositive/vector_decimal_5.q.out b/ql/src/test/results/clientpositive/vector_decimal_5.q.out index 01b5f42b44c3..34c33513eb39 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_5.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_5.q.out @@ -67,7 +67,7 @@ NULL -0.333 -0.33 -0.3 -0.00000 +0 0 0 0.01 @@ -78,8 +78,8 @@ NULL 0.33 0.333 1 -1.0 -1.00000 +1 +1 1.12 1.122 2 @@ -87,11 +87,11 @@ NULL 3.14 3.14 3.14 -3.140 +3.14 10 20 100 -124.00 +124 125.2 200 PREHOOK: query: SELECT DISTINCT key FROM DECIMAL_5 ORDER BY key @@ -110,7 +110,7 @@ NULL -0.333 -0.33 -0.3 -0.00000 +0 0.01 0.02 0.1 @@ -126,7 +126,7 @@ NULL 10 20 100 -124.00 +124 125.2 200 PREHOOK: query: SELECT cast(key as decimal) FROM DECIMAL_5 @@ -185,7 +185,7 @@ POSTHOOK: Input: default@decimal_5 #### A masked pattern was here #### NULL NULL -0.000 +0 0 100 10 @@ -204,7 +204,7 @@ NULL -0.3 -0.33 -0.333 -1.0 +1 2 3.14 -1.12 @@ -212,13 +212,13 @@ NULL -1.122 1.12 1.122 -124.00 +124 125.2 NULL 3.14 3.14 -3.140 -1.000 +3.14 +1 NULL NULL PREHOOK: query: DROP TABLE DECIMAL_5_txt diff --git a/ql/src/test/results/clientpositive/vector_decimal_6.q.out b/ql/src/test/results/clientpositive/vector_decimal_6.q.out index 7ecd50056a2e..9cdd7fc03b4f 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_6.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_6.q.out @@ -125,20 +125,20 @@ NULL 1234567890 -1.12 -1 -0.333 0 -0.3 0 -0.00000 0 +0 0 0 0 0.333 0 -1.0 1 -1.00000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 10.73433 5 -124.00 124 +124 124 125.2 125 23232.23435 2 PREHOOK: query: SELECT * FROM DECIMAL_6_2 ORDER BY key, value @@ -157,20 +157,20 @@ NULL 0 -1.12 -1 -0.333 0 -0.3 0 -0.0000 0 +0 0 0 0 0.333 0 -1.0 1 -1.0000 1 +1 1 +1 1 1.12 1 1.122 1 2 2 3.14 3 3.14 3 -3.140 4 +3.14 4 10 10 10.7343 5 -124.00 124 +124 124 125.2 125 23232.2344 2 2389432.2375 3 @@ -213,16 +213,16 @@ NULL -0.333 -0.3 -0.3 -0.00000 -0.0000 +0 +0 0 0 0.333 0.333 -1.0 -1.0 -1.0000 -1.00000 +1 +1 +1 +1 1.12 1.12 1.122 @@ -233,14 +233,14 @@ NULL 3.14 3.14 3.14 -3.140 -3.140 +3.14 +3.14 10 10 10.7343 10.73433 -124.00 -124.00 +124 +124 125.2 125.2 23232.23435 diff --git a/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out b/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out index 7f2cd53144cd..586f29b2b026 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out @@ -108,9 +108,9 @@ POSTHOOK: Input: default@decimal_vgby #### A masked pattern was here #### NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 3072 11160.715384615385 -5147.907692307693 6010604.3076923073536 -3728 6 5831542.269248378 -3367.6517567568 5817556.0411483778 6 6984454.211097692 -4033.445769230769 6967702.8672438458471 --563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 +-563 2 -515.621072973 -3367.6517567568 -3883.2728297298 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 762 2 5831542.269248378 1531.2194054054 5833073.4886537834 2 6984454.211097692 1833.9456923076925 6986288.1567899996925 -6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 +6981 3 5831542.269248378 -515.621072973 5830511.027102432 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 1024 11697.969230769231 -11712.99230769231 -416182.64030769233089 528534767 1024 5831542.269248378 -9777.1594594595 11646372.8607481068 1024 6984454.211097692 -11710.130769230771 13948892.79980307629003 626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 1024 11645.746153846154 -11712.276923076923 12625.04759999997746 @@ -206,9 +206,9 @@ POSTHOOK: Input: default@decimal_vgby #### A masked pattern was here #### NULL 3072 9318.4351351351 -4298.1513513514 5018444.1081079808 1633.60810810806667 5695.483082135364 5696.4103077145055 3072 11160.715384615385 -5147.907692307693 6010604.3076923073536 1956.576923076922966667 6821.495748565159 6822.606289190924 -3728 6 5831542.269248378 -3367.6517567568 5817556.0411483778 969592.67352472963333 2174330.2092403853 2381859.406131774 6 6984454.211097692 -4033.445769230769 6967702.8672438458471 1161283.811207307641183333 2604201.2704476737 2852759.5602156054 --563 2 -515.6210729730 -3367.6517567568 -3883.2728297298 -1941.6364148649 1426.0153418918999 2016.6902366556308 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 -2325.50327307692295 1707.9424961538462 2415.395441814127 +-563 2 -515.621072973 -3367.6517567568 -3883.2728297298 -1941.6364148649 1426.0153418918999 2016.6902366556308 2 -617.5607769230769 -4033.445769230769 -4651.0065461538459 -2325.50327307692295 1707.9424961538462 2415.395441814127 762 2 5831542.269248378 1531.2194054054 5833073.4886537834 2916536.7443268917 2915005.5249214866 4122440.3477364695 2 6984454.211097692 1833.9456923076925 6986288.1567899996925 3493144.07839499984625 3491310.1327026924 4937458.140118758 -6981 3 5831542.269248378 -515.6210729730 5830511.0271024320 1943503.67570081066667 2749258.455012492 3367140.1929065133 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 2327739.696514615282066667 3292794.4113115156 4032833.0678006653 +6981 3 5831542.269248378 -515.621072973 5830511.027102432 1943503.67570081066667 2749258.455012492 3367140.1929065133 3 6984454.211097692 -617.5607769230769 6983219.0895438458462 2327739.696514615282066667 3292794.4113115156 4032833.0678006653 253665376 1024 9767.0054054054 -9779.5486486487 -347484.0818378374 -339.33992366976309 5708.9563478862 5711.745967572779 1024 11697.969230769231 -11712.99230769231 -416182.64030769233089 -406.428359675480791885 6837.632716002934 6840.973851172274 528534767 1024 5831542.269248378 -9777.1594594595 11646372.8607481068 11373.41099682432305 257528.92988206653 257654.7686043977 1024 6984454.211097692 -11710.130769230771 13948892.79980307629003 13621.965624807691689482 308443.1074570801 308593.82484083984 626923679 1024 9723.4027027027 -9778.9513513514 10541.0525297287 10.29399661106318 5742.09145323734 5744.897264034267 1024 11645.746153846154 -11712.276923076923 12625.04759999997746 12.329148046874977988 6877.318722794877 6880.679250101603 diff --git a/ql/src/test/results/clientpositive/vector_decimal_cast.q.out b/ql/src/test/results/clientpositive/vector_decimal_cast.q.out index d4890466d499..2053452e6a51 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_cast.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_cast.q.out @@ -46,13 +46,13 @@ POSTHOOK: query: SELECT cdouble, cint, cboolean1, ctimestamp1, CAST(cdouble AS D POSTHOOK: type: QUERY POSTHOOK: Input: default@alltypesorc #### A masked pattern was here #### --13326.0 528534767 true 1969-12-31 15:59:46.674 -13326.0 528534767 1 -13 --15813.0 528534767 true 1969-12-31 15:59:55.787 -15813.0 528534767 1 -4 --9566.0 528534767 true 1969-12-31 15:59:44.187 -9566.0 528534767 1 -16 -15007.0 528534767 true 1969-12-31 15:59:50.434 15007.0 528534767 1 -10 -7021.0 528534767 true 1969-12-31 16:00:15.007 7021.0 528534767 1 15 -4963.0 528534767 true 1969-12-31 16:00:07.021 4963.0 528534767 1 7 --7824.0 528534767 true 1969-12-31 16:00:04.963 -7824.0 528534767 1 5 --15431.0 528534767 true 1969-12-31 15:59:52.176 -15431.0 528534767 1 -8 --15549.0 528534767 true 1969-12-31 15:59:44.569 -15549.0 528534767 1 -15 -5780.0 528534767 true 1969-12-31 15:59:44.451 5780.0 528534767 1 -16 +-13326.0 528534767 true 1969-12-31 15:59:46.674 -13326 528534767 1 -13 +-15813.0 528534767 true 1969-12-31 15:59:55.787 -15813 528534767 1 -4 +-9566.0 528534767 true 1969-12-31 15:59:44.187 -9566 528534767 1 -16 +15007.0 528534767 true 1969-12-31 15:59:50.434 15007 528534767 1 -10 +7021.0 528534767 true 1969-12-31 16:00:15.007 7021 528534767 1 15 +4963.0 528534767 true 1969-12-31 16:00:07.021 4963 528534767 1 7 +-7824.0 528534767 true 1969-12-31 16:00:04.963 -7824 528534767 1 5 +-15431.0 528534767 true 1969-12-31 15:59:52.176 -15431 528534767 1 -8 +-15549.0 528534767 true 1969-12-31 15:59:44.569 -15549 528534767 1 -15 +5780.0 528534767 true 1969-12-31 15:59:44.451 5780 528534767 1 -16 diff --git a/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out b/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out index 2c15b9abb9b3..9c3b0768f6ae 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out @@ -57,12 +57,12 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_test #### A masked pattern was here #### 19699.417463617423 -12507.913305613346 0.8351496686995997 2.8303425077026896E7 3.6405405405 8963 10735 -17 8963 true 10735.776923076923 8963.641 10735.776923076923 1969-12-31 18:29:23.64054054 -9216.339708939685 -5851.806444906470 0.8353975893550668 6195112.1797296945 3.6243243243 4193 5022 -98 4193 true 5022.715384615385 4193.6245 5022.715384615385 1969-12-31 17:09:53.624324324 +9216.339708939685 -5851.80644490647 0.8353975893550668 6195112.1797296945 3.6243243243 4193 5022 -98 4193 true 5022.715384615385 4193.6245 5022.715384615385 1969-12-31 17:09:53.624324324 6514.8403326403464 -4136.5212058211928 0.8355907765708067 3095563.9418919063 4.3864864865 2964 3550 -34 2964 true 3550.4538461538464 2964.3865 3550.4538461538464 1969-12-31 16:49:24.386486486 7587.301455301477 -4817.467775467754 0.8354976172734904 4198623.24324327 2.3783783784 3452 4134 38 3452 true 4134.923076923077 3452.3784 4134.923076923077 1969-12-31 16:57:32.378378378 -19197.9729729730 -12189.5270270270 0.835155361813429 2.6880848817567654E7 5.4729729730 8735 10462 -34 8735 true 10462.5 8735.473 10462.5 1969-12-31 18:25:35.472972973 +19197.972972973 -12189.527027027 0.835155361813429 2.6880848817567654E7 5.472972973 8735 10462 -34 8735 true 10462.5 8735.473 10462.5 1969-12-31 18:25:35.472972973 17098.9945945946 -10856.8054054054 0.8351828165813104 2.132423090270272E7 0.3945945946 7780 9318 102 7780 true 9318.6 7780.3945 9318.6 1969-12-31 18:09:40.394594594 12433.723076923077 -7894.646153846154 0.8352770361086894 1.12754688E7 7.6 5657 6776 120 5657 true 6776.123076923077 5657.6 6776.123076923077 1969-12-31 17:34:17.6 7247.316839916862 -4601.598544698524 0.8355241651897876 3830775.6932432684 7.6783783784 3297 3949 109 3297 true 3949.638461538462 3297.6785 3949.638461538462 1969-12-31 16:54:57.678378378 -14757.1700623700465 -9369.8914760914930 0.8352226654922171 1.5883214124324286E7 4.8162162162 6714 8042 106 6714 true 8042.3538461538465 6714.8164 8042.3538461538465 1969-12-31 17:51:54.816216216 +14757.1700623700465 -9369.891476091493 0.8352226654922171 1.5883214124324286E7 4.8162162162 6714 8042 106 6714 true 8042.3538461538465 6714.8164 8042.3538461538465 1969-12-31 17:51:54.816216216 10964.832016631993 -6961.991060291086 0.8353232978714221 8768719.779729689 9.2243243243 4989 5975 87 4989 true 5975.607692307693 4989.224 5975.607692307693 1969-12-31 17:23:09.224324324 diff --git a/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out b/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out index 193e6f760ae8..c88322d34fd9 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_mapjoin.q.out @@ -113,26 +113,26 @@ POSTHOOK: query: SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2 POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_mapjoin #### A masked pattern was here #### -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 -515.6210729730 -617.5607769230769 -6981 6981 -515.6210729730 6984454.211097692 -6981 6981 -515.6210729730 6984454.211097692 -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL -6981 6981 -515.6210729730 NULL +6981 6981 -515.621072973 -617.5607769230769 +6981 6981 -515.621072973 -617.5607769230769 +6981 6981 -515.621072973 -617.5607769230769 +6981 6981 -515.621072973 -617.5607769230769 +6981 6981 -515.621072973 6984454.211097692 +6981 6981 -515.621072973 6984454.211097692 +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL +6981 6981 -515.621072973 NULL 6981 6981 5831542.269248378 -617.5607769230769 6981 6981 5831542.269248378 -617.5607769230769 6981 6981 5831542.269248378 6984454.211097692 diff --git a/ql/src/test/results/clientpositive/vector_decimal_precision.q.out b/ql/src/test/results/clientpositive/vector_decimal_precision.q.out index 87898644dfb8..438ebc407112 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_precision.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_precision.q.out @@ -99,13 +99,13 @@ NULL NULL NULL NULL -0.0000000000 -0.0000000000 -0.0000000000 -0.0000000000 0 -0.1234567890 -0.1234567890 +0 +0 +0 +0 +0.123456789 +0.123456789 1.2345678901 1.2345678901 1.2345678901 @@ -129,7 +129,7 @@ NULL 123456789.0123456 123456789.0123456789 1234567890.123456 -1234567890.1234567890 +1234567890.123456789 PREHOOK: query: SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -182,13 +182,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 1.0000000000 -1.0000000000 -0.0000000000 1.0000000000 -1.0000000000 -0.0000000000 1.0000000000 -1.0000000000 -0.0000000000 1.0000000000 -1.0000000000 0 1 -1 -0.1234567890 1.1234567890 -0.8765432110 -0.1234567890 1.1234567890 -0.8765432110 +0 1 -1 +0 1 -1 +0 1 -1 +0 1 -1 +0.123456789 1.123456789 -0.876543211 +0.123456789 1.123456789 -0.876543211 1.2345678901 2.2345678901 0.2345678901 1.2345678901 2.2345678901 0.2345678901 1.2345678901 2.2345678901 0.2345678901 @@ -212,7 +212,7 @@ NULL NULL NULL 123456789.0123456 123456790.0123456 123456788.0123456 123456789.0123456789 123456790.0123456789 123456788.0123456789 1234567890.123456 1234567891.123456 1234567889.123456 -1234567890.1234567890 1234567891.1234567890 1234567889.1234567890 +1234567890.123456789 1234567891.123456789 1234567889.123456789 PREHOOK: query: SELECT dec, dec * 2, dec / 3 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -265,13 +265,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0.0000000000 0 -0.0000000000 0.0000000000 0 -0.0000000000 0.0000000000 0 -0.0000000000 0.0000000000 0 0 0 0 -0.1234567890 0.2469135780 0.041152263 -0.1234567890 0.2469135780 0.041152263 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0.123456789 0.246913578 0.041152263 +0.123456789 0.246913578 0.041152263 1.2345678901 2.4691357802 0.411522630033 1.2345678901 2.4691357802 0.411522630033 1.2345678901 2.4691357802 0.411522630033 @@ -281,9 +281,9 @@ NULL NULL NULL 123.4567890123 246.9135780246 41.1522630041 123.4567890123 246.9135780246 41.1522630041 123.4567890123 246.9135780246 41.1522630041 -1234.5678901235 2469.1357802470 411.522630041167 -1234.5678901235 2469.1357802470 411.522630041167 -1234.5678901235 2469.1357802470 411.522630041167 +1234.5678901235 2469.135780247 411.522630041167 +1234.5678901235 2469.135780247 411.522630041167 +1234.5678901235 2469.135780247 411.522630041167 12345.6789012346 24691.3578024692 4115.226300411533 12345.6789012346 24691.3578024692 4115.226300411533 123456.7890123456 246913.5780246912 41152.2630041152 @@ -295,7 +295,7 @@ NULL NULL NULL 123456789.0123456 246913578.0246912 41152263.0041152 123456789.0123456789 246913578.0246913578 41152263.0041152263 1234567890.123456 2469135780.246912 411522630.041152 -1234567890.1234567890 2469135780.2469135780 411522630.041152263 +1234567890.123456789 2469135780.246913578 411522630.041152263 PREHOOK: query: SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -348,13 +348,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 0 0 -0.1234567890 0.013717421 -0.1234567890 0.013717421 +0 0 +0 0 +0 0 +0 0 +0.123456789 0.013717421 +0.123456789 0.013717421 1.2345678901 0.137174210011 1.2345678901 0.137174210011 1.2345678901 0.137174210011 @@ -378,7 +378,7 @@ NULL NULL 123456789.0123456 13717421.001371733333 123456789.0123456789 13717421.0013717421 1234567890.123456 137174210.013717333333 -1234567890.1234567890 137174210.013717421 +1234567890.123456789 137174210.013717421 PREHOOK: query: SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -431,13 +431,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 -0.0000000000 0 0 0 -0.1234567890 0.0045724736667 -0.1234567890 0.0045724736667 +0 0 +0 0 +0 0 +0 0 +0.123456789 0.0045724736667 +0.123456789 0.0045724736667 1.2345678901 0.0457247366704 1.2345678901 0.0457247366704 1.2345678901 0.0457247366704 @@ -461,7 +461,7 @@ NULL NULL 123456789.0123456 4572473.6671239111111 123456789.0123456789 4572473.6671239140333 1234567890.123456 45724736.6712391111111 -1234567890.1234567890 45724736.6712391403333 +1234567890.123456789 45724736.6712391403333 PREHOOK: query: SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec PREHOOK: type: QUERY PREHOOK: Input: default@decimal_precision @@ -514,13 +514,13 @@ NULL NULL NULL NULL NULL NULL NULL NULL -0.0000000000 0.00000000000000000000 -0.0000000000 0.00000000000000000000 -0.0000000000 0.00000000000000000000 -0.0000000000 0.00000000000000000000 0 0 -0.1234567890 0.01524157875019052100 -0.1234567890 0.01524157875019052100 +0 0 +0 0 +0 0 +0 0 +0.123456789 0.015241578750190521 +0.123456789 0.015241578750190521 1.2345678901 1.52415787526596567801 1.2345678901 1.52415787526596567801 1.2345678901 1.52415787526596567801 @@ -544,7 +544,7 @@ NULL NULL 123456789.0123456 15241578753238817.26870921383936 123456789.0123456789 15241578753238836.75019051998750190521 1234567890.123456 NULL -1234567890.1234567890 NULL +1234567890.123456789 NULL PREHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION diff --git a/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out b/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out index 482f536050f8..c4a015dd4242 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_round_2.q.out @@ -114,7 +114,7 @@ FROM decimal_tbl_1_orc ORDER BY d POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_tbl_1_orc #### A masked pattern was here #### -55555 55555 55555.0 55555.00 55555.000 55560 55600 56000 60000 100000 0 0 0 +55555 55555 55555 55555 55555 55560 55600 56000 60000 100000 0 0 0 PREHOOK: query: create table decimal_tbl_2_orc (pos decimal(38,18), neg decimal(38,18)) STORED AS ORC PREHOOK: type: CREATETABLE @@ -226,7 +226,7 @@ FROM decimal_tbl_2_orc ORDER BY p POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_tbl_2_orc #### A masked pattern was here #### -125 125 125.3 125.32 125.315 125.3150 130 100 0 0 -125 -125 -125.3 -125.32 -125.315 -125.3150 -130 -100 0 0 +125 125 125.3 125.32 125.315 125.315 130 100 0 0 -125 -125 -125.3 -125.32 -125.315 -125.315 -130 -100 0 0 PREHOOK: query: create table decimal_tbl_3_orc (dec decimal(38,18)) STORED AS ORC PREHOOK: type: CREATETABLE @@ -381,7 +381,7 @@ FROM decimal_tbl_3_orc ORDER BY d POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_tbl_3_orc #### A masked pattern was here #### -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3.1 3.14 3.142 3.1416 3.14159 3.141593 3.1415927 3.14159265 3.141592654 3.1415926536 3.14159265359 3.141592653590 3.1415926535898 3.1415926535898 3.14159265358979 3.141592653589793 3.1415926535897930 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3.1 3.14 3.142 3.1416 3.14159 3.141593 3.1415927 3.14159265 3.141592654 3.1415926536 3.14159265359 3.14159265359 3.1415926535898 3.1415926535898 3.14159265358979 3.141592653589793 3.141592653589793 PREHOOK: query: create table decimal_tbl_4_orc (pos decimal(38,18), neg decimal(38,18)) STORED AS ORC PREHOOK: type: CREATETABLE diff --git a/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out b/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out index cb0b5a27396a..ffdb1c9b67be 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_trailing.q.out @@ -76,13 +76,13 @@ POSTHOOK: Input: default@decimal_trailing 0 0 0 1 0 0 2 NULL NULL -3 1.0000 1.00000000 -4 10.0000 10.00000000 -5 100.0000 100.00000000 -6 1000.0000 1000.00000000 -7 10000.0000 10000.00000000 -8 100000.0000 100000.00000000 -9 NULL 1000000.00000000 +3 1 1 +4 10 10 +5 100 100 +6 1000 1000 +7 10000 10000 +8 100000 100000 +9 NULL 1000000 10 NULL NULL 11 NULL NULL 12 NULL NULL @@ -91,18 +91,18 @@ POSTHOOK: Input: default@decimal_trailing 15 NULL NULL 16 NULL NULL 17 NULL NULL -18 1.0000 1.00000000 -19 10.000 10.0000000 -20 100.00 100.000000 -21 1000.0 1000.00000 -22 100000 10000.0000 -23 0.0000 0.00000000 -24 0.000 0.0000000 -25 0.00 0.000000 -26 0.0 0.00000 -27 0 0.00000 -28 12313.2000 134134.31252500 -29 99999.9990 134134.31242553 +18 1 1 +19 10 10 +20 100 100 +21 1000 1000 +22 100000 10000 +23 0 0 +24 0 0 +25 0 0 +26 0 0 +27 0 0 +28 12313.2 134134.312525 +29 99999.999 134134.31242553 PREHOOK: query: DROP TABLE DECIMAL_TRAILING_txt PREHOOK: type: DROPTABLE PREHOOK: Input: default@decimal_trailing_txt diff --git a/ql/src/test/results/clientpositive/vector_decimal_udf.q.out b/ql/src/test/results/clientpositive/vector_decimal_udf.q.out index 24a87c58cb7d..05cd5b369f98 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_udf.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_udf.q.out @@ -94,7 +94,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -8800 NULL -0.0000000000 +0 0 200 20 @@ -113,7 +113,7 @@ NULL -0.6 -0.66 -0.666 -2.0 +2 4 6.28 -2.24 @@ -121,15 +121,15 @@ NULL -2.244 2.24 2.244 -248.00 +248 250.4 -2510.98 6.28 6.28 -6.280 -2.0000000000 --2469135780.2469135780 -2469135780.2469135600 +6.28 +2 +-2469135780.246913578 +2469135780.24691356 PREHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key + value FROM DECIMAL_UDF @@ -174,7 +174,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 0 NULL -0.0000000000 +0 0 200 20 @@ -193,7 +193,7 @@ NULL -0.3 -0.33 -0.333 -2.0 +2 4 6.14 -2.12 @@ -201,15 +201,15 @@ NULL -12.122 2.12 2.122 -248.00 +248 250.2 -2510.49 6.14 6.14 -7.140 -2.0000000000 --2469135780.1234567890 -2469135780.1234567800 +7.14 +2 +-2469135780.123456789 +2469135780.12345678 PREHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF @@ -415,42 +415,42 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 0 NULL -0.0000000000 0 0 0 0 -0.0 -0.00 0 0 0 0 -0.0 -0.00 -0.0 -0.00 -0.000 -0.0 -0.00 -0.000 -0.0 0 -0.00 -0.00 -0.00 -0.000 -0.00 -0.000 -0.00 -0.0 -0.00 -0.00 -0.00 -0.000 -0.0000000000 -0.0000000000 -0.0000000000 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 PREHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key - value FROM DECIMAL_UDF @@ -495,7 +495,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -8800 NULL -0.0000000000 +0 0 0 0 @@ -514,7 +514,7 @@ NULL -0.3 -0.33 -0.333 -0.0 +0 0 0.14 -0.12 @@ -522,15 +522,15 @@ NULL 9.878 0.12 0.122 -0.00 +0 0.2 -0.49 0.14 0.14 --0.860 -0.0000000000 --0.1234567890 -0.1234567800 +-0.86 +0 +-0.123456789 +0.12345678 PREHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF @@ -736,7 +736,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 19360000 NULL -0.00000000000000000000 +0 0 10000 100 @@ -755,7 +755,7 @@ NULL 0.09 0.1089 0.110889 -1.00 +1 4 9.8596 1.2544 @@ -763,13 +763,13 @@ NULL 1.258884 1.2544 1.258884 -15376.0000 +15376 15675.04 1576255.1401 9.8596 9.8596 -9.859600 -1.00000000000000000000 +9.8596 +1 NULL NULL PREHOOK: query: EXPLAIN SELECT key, value FROM DECIMAL_UDF where key * value > 0 @@ -823,7 +823,7 @@ POSTHOOK: Input: default@decimal_udf 200 200 20 20 2 2 -1.0 1 +1 1 2 2 3.14 3 -1.12 -1 @@ -831,15 +831,15 @@ POSTHOOK: Input: default@decimal_udf -1.122 -11 1.12 1 1.122 1 -124.00 124 +124 124 125.2 125 -1255.49 -1255 3.14 3 3.14 3 -3.140 4 -1.0000000000 1 --1234567890.1234567890 -1234567890 -1234567890.1234567800 1234567890 +3.14 4 +1 1 +-1234567890.123456789 -1234567890 +1234567890.12345678 1234567890 PREHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key * value FROM DECIMAL_UDF @@ -884,26 +884,26 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -19360000 NULL -0.0000000000 +0 0 10000 100 1 -0.0 -0.00 +0 +0 40000 400 4 0 -0.0 -0.00 -0.0 -0.00 -0.000 -0.0 -0.00 -0.000 -1.0 +0 +0 +0 +0 +0 +0 +0 +0 +1 4 9.42 1.12 @@ -911,15 +911,15 @@ NULL 12.342 1.12 1.122 -15376.00 -15650.0 +15376 +15650 1575639.95 9.42 9.42 -12.560 -1.0000000000 -1524157875171467887.5019052100 -1524157875171467876.3907942000 +12.56 +1 +1524157875171467887.50190521 +1524157875171467876.3907942 PREHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF @@ -1319,7 +1319,7 @@ POSTHOOK: Input: default@decimal_udf 0.785 1 1.0000000001 -1.000000000099999992710 +1.00000000009999999271 PREHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 @@ -1514,7 +1514,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 4400 NULL -0.0000000000 +0 0 100 10 @@ -1533,7 +1533,7 @@ NULL 0.3 0.33 0.333 -1.0 +1 2 3.14 1.12 @@ -1541,15 +1541,15 @@ NULL 1.122 1.12 1.122 -124.00 +124 125.2 1255.49 3.14 3.14 -3.140 -1.0000000000 -1234567890.1234567890 -1234567890.1234567800 +3.14 +1 +1234567890.123456789 +1234567890.12345678 PREHOOK: query: -- avg EXPLAIN SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value PREHOOK: type: QUERY @@ -1639,23 +1639,23 @@ POSTHOOK: query: SELECT value, sum(key) / count(key), avg(key), sum(key) FROM DE POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### --1234567890 -1234567890.123456789 -1234567890.123456789 -1234567890.1234567890 +-1234567890 -1234567890.123456789 -1234567890.123456789 -1234567890.123456789 -1255 -1255.49 -1255.49 -1255.49 -11 -1.122 -1.122 -1.122 -1 -1.12 -1.12 -2.24 -0 0.02538461538461538461538 0.02538461538462 0.3300000000 -1 1.0484 1.0484 5.2420000000 +0 0.02538461538461538461538 0.02538461538462 0.33 +1 1.0484 1.0484 5.242 2 2 2 4 3 3.14 3.14 9.42 -4 3.14 3.14 3.140 +4 3.14 3.14 3.14 10 10 10 10 20 20 20 20 100 100 100 100 -124 124 124 124.00 +124 124 124 124 125 125.2 125.2 125.2 200 200 200 200 4400 -4400 -4400 -4400 -1234567890 1234567890.12345678 1234567890.12345678 1234567890.1234567800 +1234567890 1234567890.12345678 1234567890.12345678 1234567890.12345678 PREHOOK: query: -- negative EXPLAIN SELECT -key FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -1702,7 +1702,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### 4400 NULL -0.0000000000 +0 0 -100 -10 @@ -1721,7 +1721,7 @@ NULL 0.3 0.33 0.333 --1.0 +-1 -2 -3.14 1.12 @@ -1729,15 +1729,15 @@ NULL 1.122 -1.12 -1.122 --124.00 +-124 -125.2 1255.49 -3.14 -3.14 --3.140 --1.0000000000 -1234567890.1234567890 --1234567890.1234567800 +-3.14 +-1 +1234567890.123456789 +-1234567890.12345678 PREHOOK: query: -- positive EXPLAIN SELECT +key FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -1771,7 +1771,7 @@ POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -4400 NULL -0.0000000000 +0 0 100 10 @@ -1790,7 +1790,7 @@ NULL -0.3 -0.33 -0.333 -1.0 +1 2 3.14 -1.12 @@ -1798,15 +1798,15 @@ NULL -1.122 1.12 1.122 -124.00 +124 125.2 -1255.49 3.14 3.14 -3.140 -1.0000000000 --1234567890.1234567890 -1234567890.1234567800 +3.14 +1 +-1234567890.123456789 +1234567890.12345678 PREHOOK: query: -- ceiling EXPlAIN SELECT CEIL(key) FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -2015,42 +2015,42 @@ POSTHOOK: query: SELECT ROUND(key, 2) FROM DECIMAL_UDF POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### --4400.00 +-4400 NULL -0.00 -0.00 -100.00 -10.00 -1.00 -0.10 +0 +0 +100 +10 +1 +0.1 0.01 -200.00 -20.00 -2.00 -0.00 -0.20 +200 +20 +2 +0 +0.2 0.02 -0.30 +0.3 0.33 0.33 --0.30 +-0.3 -0.33 -0.33 -1.00 -2.00 +1 +2 3.14 -1.12 -1.12 -1.12 1.12 1.12 -124.00 -125.20 +124 +125.2 -1255.49 3.14 3.14 3.14 -1.00 +1 -1234567890.12 1234567890.12 PREHOOK: query: -- power @@ -2184,38 +2184,38 @@ NULL NULL 1 1 -0.0 -0.00 -0.000 +0 +0 +0 1 1 0 NULL -0.0 -0.00 -0.10 -0.010 -0.0010 -0.10 -0.010 -0.0010 -0.0 0 -1.00 +0 +0.1 +0.01 +0.001 +0.1 +0.01 +0.001 +0 +0 +1 -0.12 -0.12 -0.122 0.44 0.439 -1.00 -1.0 +1 +1 -626.745 -1.00 -1.00 -1.000 -0.0000000000 +1 +1 +1 +0 -617283944.0617283945 -1.0000000000 +1 PREHOOK: query: -- stddev, var EXPLAIN SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value PREHOOK: type: QUERY @@ -2510,7 +2510,7 @@ POSTHOOK: query: SELECT MIN(key) FROM DECIMAL_UDF POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### --1234567890.1234567890 +-1234567890.123456789 PREHOOK: query: -- max EXPLAIN SELECT MAX(key) FROM DECIMAL_UDF PREHOOK: type: QUERY @@ -2574,7 +2574,7 @@ POSTHOOK: query: SELECT MAX(key) FROM DECIMAL_UDF POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf #### A masked pattern was here #### -1234567890.1234567800 +1234567890.12345678 PREHOOK: query: -- count EXPLAIN SELECT COUNT(key) FROM DECIMAL_UDF PREHOOK: type: QUERY diff --git a/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out b/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out index 2343508f76dd..527a117187cb 100644 --- a/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out +++ b/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out @@ -134,7 +134,7 @@ POSTHOOK: Input: default@decimal_test -1066226047 -9439.0 -5637.8891891892 -6752.515384615385 -5637.8891891892 -1065117869 2538.0 1515.9405405405 1815.646153846154 1515.9405405405 -1064949302 6454.0 3854.9567567568 4617.092307692308 3854.9567567568 --1063498122 -11480.0 -6856.9729729730 -8212.615384615387 -6856.9729729730 +-1063498122 -11480.0 -6856.972972973 -8212.615384615387 -6856.972972973 -1062973443 10541.0 6296.1108108108 7540.869230769231 6296.1108108108 -1061614989 -4234.0 -2528.9567567568 -3028.938461538462 -2528.9567567568 -1061057428 -1085.0 -648.0675675676 -776.1923076923077 -648.0675675676 @@ -142,14 +142,14 @@ POSTHOOK: Input: default@decimal_test -1059338191 7322.0 4373.4108108108 5238.046153846154 4373.4108108108 -1059047258 12452.0 7437.5459459459 8907.969230769231 7437.5459459459 -1056684111 13991.0 8356.7864864865 10008.946153846155 8356.7864864865 --1055945837 13690.0 8177.0 9793.615384615387 8177.0 +-1055945837 13690.0 8177 9793.615384615387 8177 -1055669248 2570.0 1535.0540540541 1838.538461538462 1535.0540540541 -1055316250 -14990.0 -8953.4864864865 -10723.615384615385 -8953.4864864865 -1053385587 14504.0 8663.2 10375.938461538462 8663.2 -1053238077 -3704.0 -2212.3891891892 -2649.784615384616 -2212.3891891892 -1052745800 -12404.0 -7408.8756756757 -8873.630769230771 -7408.8756756757 -1052322972 -7433.0 -4439.7108108108 -5317.453846153847 -4439.7108108108 --1050684541 -8261.0 -4934.2729729730 -5909.792307692308 -4934.2729729730 +-1050684541 -8261.0 -4934.272972973 -5909.792307692308 -4934.272972973 -1050657303 -6999.0 -4180.4837837838 -5006.976923076923 -4180.4837837838 -1050165799 8634.0 5157.0648648649 6176.63076923077 5157.0648648649 -1048934049 -524.0 -312.9837837838 -374.86153846153854 -312.9837837838 @@ -160,12 +160,12 @@ POSTHOOK: Input: default@decimal_test -1045087657 -5865.0 -3503.1486486486 -4195.7307692307695 -3503.1486486486 -1044207190 5381.0 3214.0567567568 3849.4846153846156 3214.0567567568 -1044093617 -3422.0 -2043.9513513514 -2448.046153846154 -2043.9513513514 --1043573508 16216.0 9685.7729729730 11600.676923076924 9685.7729729730 +-1043573508 16216.0 9685.772972973 11600.676923076924 9685.772972973 -1043132597 12302.0 7347.9513513514 8800.66153846154 7347.9513513514 -1043082182 9180.0 5483.1891891892 6567.2307692307695 5483.1891891892 --1042805968 5133.0 3065.9270270270 3672.0692307692307 3065.9270270270 +-1042805968 5133.0 3065.927027027 3672.0692307692307 3065.927027027 -1042712895 9296.0 5552.4756756757 6650.215384615385 5552.4756756757 --1042396242 9583.0 5723.9000000000 6855.53076923077 5723.9000000000 +-1042396242 9583.0 5723.9 6855.53076923077 5723.9 -1041734429 -836.0 -499.3405405405 -598.0615384615385 -499.3405405405 -1041391389 -12970.0 -7746.9459459459 -9278.538461538463 -7746.9459459459 -1041252354 756.0 451.5567567568 540.8307692307692 451.5567567568 diff --git a/ql/src/test/results/clientpositive/windowing_decimal.q.out b/ql/src/test/results/clientpositive/windowing_decimal.q.out index 2354b6b393e6..08dd6abd9a96 100644 --- a/ql/src/test/results/clientpositive/windowing_decimal.q.out +++ b/ql/src/test/results/clientpositive/windowing_decimal.q.out @@ -99,8 +99,8 @@ from part_dec POSTHOOK: type: QUERY POSTHOOK: Input: default@part_dec #### A masked pattern was here #### -Manufacturer#1 1173.15 1173.15 2346.30 -Manufacturer#1 1173.15 1173.15 2346.30 +Manufacturer#1 1173.15 1173.15 2346.3 +Manufacturer#1 1173.15 1173.15 2346.3 Manufacturer#1 1414.42 1173.15 3760.72 Manufacturer#1 1602.59 1173.15 5363.31 Manufacturer#1 1632.66 1173.15 6995.97 @@ -118,7 +118,7 @@ Manufacturer#3 1922.98 1190.27 7532.61 Manufacturer#4 1206.26 1206.26 1206.26 Manufacturer#4 1290.35 1206.26 2496.61 Manufacturer#4 1375.42 1206.26 3872.03 -Manufacturer#4 1620.67 1206.26 5492.70 +Manufacturer#4 1620.67 1206.26 5492.7 Manufacturer#4 1844.92 1206.26 7337.62 Manufacturer#5 1018.1 1018.1 1018.1 Manufacturer#5 1464.48 1018.1 2482.58 @@ -139,8 +139,8 @@ from part_dec POSTHOOK: type: QUERY POSTHOOK: Input: default@part_dec #### A masked pattern was here #### -Manufacturer#1 1173.15 1173.15 2346.30 -Manufacturer#1 1173.15 1173.15 2346.30 +Manufacturer#1 1173.15 1173.15 2346.3 +Manufacturer#1 1173.15 1173.15 2346.3 Manufacturer#1 1414.42 1414.42 1414.42 Manufacturer#1 1602.59 1602.59 1602.59 Manufacturer#1 1632.66 1632.66 1632.66 diff --git a/ql/src/test/results/clientpositive/windowing_navfn.q.out b/ql/src/test/results/clientpositive/windowing_navfn.q.out index 4256640dbd4d..531ab6b6b238 100644 --- a/ql/src/test/results/clientpositive/windowing_navfn.q.out +++ b/ql/src/test/results/clientpositive/windowing_navfn.q.out @@ -277,13 +277,13 @@ POSTHOOK: Input: default@over10k 65536 98.42 65536 0.93 65536 83.48 -65536 75.70 +65536 75.7 65536 88.04 65536 94.09 65536 33.45 65536 44.41 65536 22.15 -65536 20.50 +65536 20.5 65536 58.86 65536 30.91 65536 74.47 @@ -300,9 +300,9 @@ POSTHOOK: Input: default@over10k 65536 80.26 65536 35.07 65536 95.88 -65536 30.60 +65536 30.6 65536 46.97 -65536 58.80 +65536 58.8 65536 5.72 65536 29.27 65536 62.25 @@ -326,7 +326,7 @@ POSTHOOK: Input: default@over10k 65537 35.86 65537 47.75 65537 1.12 -65537 52.90 +65537 52.9 65537 53.92 65537 43.45 65537 7.52 @@ -340,20 +340,20 @@ POSTHOOK: Input: default@over10k 65537 56.48 65537 83.21 65537 56.52 -65537 36.60 -65537 59.70 +65537 36.6 +65537 59.7 65537 80.14 -65537 66.30 +65537 66.3 65537 94.87 65537 40.92 -65537 25.20 +65537 25.2 65537 7.36 65538 NULL 65538 53.35 65538 54.64 65538 76.67 65538 15.17 -65538 1.20 +65538 1.2 65538 13.71 65538 81.59 65538 43.33 diff --git a/ql/src/test/results/clientpositive/windowing_rank.q.out b/ql/src/test/results/clientpositive/windowing_rank.q.out index 67975f3eaaa0..6a74a8ee90d6 100644 --- a/ql/src/test/results/clientpositive/windowing_rank.q.out +++ b/ql/src/test/results/clientpositive/windowing_rank.q.out @@ -508,16 +508,16 @@ where rnk = 1 limit 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@over10k #### A masked pattern was here #### -2013-03-01 09:11:58.70307 0.50 1 -2013-03-01 09:11:58.70307 0.50 1 -2013-03-01 09:11:58.70307 0.50 1 -2013-03-01 09:11:58.70307 0.50 1 -2013-03-01 09:11:58.70307 0.50 1 -2013-03-01 09:11:58.70307 0.50 1 -2013-03-01 09:11:58.70307 0.50 1 -2013-03-01 09:11:58.70307 0.50 1 -2013-03-01 09:11:58.70307 0.50 1 -2013-03-01 09:11:58.70307 0.50 1 +2013-03-01 09:11:58.70307 0.5 1 +2013-03-01 09:11:58.70307 0.5 1 +2013-03-01 09:11:58.70307 0.5 1 +2013-03-01 09:11:58.70307 0.5 1 +2013-03-01 09:11:58.70307 0.5 1 +2013-03-01 09:11:58.70307 0.5 1 +2013-03-01 09:11:58.70307 0.5 1 +2013-03-01 09:11:58.70307 0.5 1 +2013-03-01 09:11:58.70307 0.5 1 +2013-03-01 09:11:58.70307 0.5 1 PREHOOK: query: select ts, dec, rnk from (select ts, dec, @@ -546,16 +546,16 @@ where dec = 89.5 limit 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@over10k #### A masked pattern was here #### -2013-03-01 09:11:58.703124 89.50 1 -2013-03-01 09:11:58.703124 89.50 1 -2013-03-01 09:11:58.703124 89.50 1 -2013-03-01 09:11:58.703124 89.50 1 -2013-03-01 09:11:58.703124 89.50 1 -2013-03-01 09:11:58.703124 89.50 1 -2013-03-01 09:11:58.703124 89.50 1 -2013-03-01 09:11:58.703124 89.50 1 -2013-03-01 09:11:58.703124 89.50 1 -2013-03-01 09:11:58.703124 89.50 1 +2013-03-01 09:11:58.703124 89.5 1 +2013-03-01 09:11:58.703124 89.5 1 +2013-03-01 09:11:58.703124 89.5 1 +2013-03-01 09:11:58.703124 89.5 1 +2013-03-01 09:11:58.703124 89.5 1 +2013-03-01 09:11:58.703124 89.5 1 +2013-03-01 09:11:58.703124 89.5 1 +2013-03-01 09:11:58.703124 89.5 1 +2013-03-01 09:11:58.703124 89.5 1 +2013-03-01 09:11:58.703124 89.5 1 PREHOOK: query: select ts, dec, rnk from (select ts, dec, @@ -586,13 +586,13 @@ where rnk = 1 limit 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@over10k #### A masked pattern was here #### -2013-03-01 09:11:58.70307 37.30 1 -2013-03-01 09:11:58.70307 37.30 1 -2013-03-01 09:11:58.70307 37.30 1 -2013-03-01 09:11:58.70307 37.30 1 -2013-03-01 09:11:58.70307 37.30 1 -2013-03-01 09:11:58.70307 37.30 1 -2013-03-01 09:11:58.70307 37.30 1 -2013-03-01 09:11:58.70307 37.30 1 -2013-03-01 09:11:58.70307 37.30 1 -2013-03-01 09:11:58.70307 37.30 1 +2013-03-01 09:11:58.70307 37.3 1 +2013-03-01 09:11:58.70307 37.3 1 +2013-03-01 09:11:58.70307 37.3 1 +2013-03-01 09:11:58.70307 37.3 1 +2013-03-01 09:11:58.70307 37.3 1 +2013-03-01 09:11:58.70307 37.3 1 +2013-03-01 09:11:58.70307 37.3 1 +2013-03-01 09:11:58.70307 37.3 1 +2013-03-01 09:11:58.70307 37.3 1 +2013-03-01 09:11:58.70307 37.3 1 diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/BinarySortableSerDe.java b/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/BinarySortableSerDe.java index 06a8c2f53ccc..523ad7d3d792 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/BinarySortableSerDe.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/BinarySortableSerDe.java @@ -776,7 +776,7 @@ static void serialize(ByteStream.Output buffer, Object o, ObjectInspector oi, // get the scale factor to turn big decimal into a decimal < 1 int factor = dec.precision() - dec.scale(); - factor = sign != -1 ? factor : -factor; + factor = sign == 1 ? factor : -factor; // convert the absolute big decimal to string dec.scaleByPowerOfTen(Math.abs(dec.scale())); From f83d4771c04ff74eaffba3ee80b3154211200dc8 Mon Sep 17 00:00:00 2001 From: Jianyong Dai Date: Fri, 7 Nov 2014 23:00:05 +0000 Subject: [PATCH 270/339] HIVE-8484: HCatalog throws an exception if Pig job is of type 'fetch' (Lorand Bendig via Daniel Dai) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637478 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/java/org/apache/hive/hcatalog/common/HCatUtil.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatUtil.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatUtil.java index 4fdb5c985108..c901f62e1a99 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatUtil.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatUtil.java @@ -83,8 +83,9 @@ public class HCatUtil { private static volatile HiveClientCache hiveClientCache; public static boolean checkJobContextIfRunningFromBackend(JobContext j) { - if (j.getConfiguration().get("mapred.task.id", "").equals("") && - !("true".equals(j.getConfiguration().get("pig.illustrating")))) { + if (j.getConfiguration().get("pig.job.converted.fetch", "").equals("") && + j.getConfiguration().get("mapred.task.id", "").equals("") && + !("true".equals(j.getConfiguration().get("pig.illustrating")))) { return false; } return true; From ce751e7bf20b7fd02b5d66be14856ddfff20d9db Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 8 Nov 2014 00:21:09 +0000 Subject: [PATCH 271/339] HIVE-8781: Nullsafe joins are busted on Tez (Gunther Hagleitner, reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637491 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 1 + .../hive/ql/exec/CommonMergeJoinOperator.java | 7 +- .../hive/ql/optimizer/ConvertJoinMapJoin.java | 3 + .../clientpositive/tez/join_nullsafe.q.out | 1641 +++++++++++++++++ .../tez/tez_union_group_by.q.out | 1 + 5 files changed, 1651 insertions(+), 2 deletions(-) create mode 100644 ql/src/test/results/clientpositive/tez/join_nullsafe.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 3ae001defe07..b2f2e668e928 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -95,6 +95,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ insert_update_delete.q,\ join0.q,\ join1.q,\ + join_nullsafe.q,\ leftsemijoin.q,\ limit_pushdown.q,\ load_dyn_part1.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java index 6a066688bd30..1da893318ff3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java @@ -438,8 +438,11 @@ private int compareKeys(List k1, List k2) { WritableComparable key_1 = (WritableComparable) k1.get(i); WritableComparable key_2 = (WritableComparable) k2.get(i); if (key_1 == null && key_2 == null) { - return nullsafes != null && nullsafes[i] ? 0 : -1; // just return k1 is - // smaller than k2 + if (nullsafes != null && nullsafes[i]) { + continue; + } else { + return -1; + } } else if (key_1 == null) { return -1; } else if (key_2 == null) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java index bedc3acb756e..04bafdafc289 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java @@ -240,6 +240,9 @@ private void convertJoinSMBJoin(JoinOperator joinOp, OptimizeTezProcContext cont new MapJoinDesc(null, null, joinDesc.getExprs(), null, null, joinDesc.getOutputColumnNames(), mapJoinConversionPos, joinDesc.getConds(), joinDesc.getFilters(), joinDesc.getNoOuterJoin(), null); + mapJoinDesc.setNullSafes(joinDesc.getNullSafes()); + mapJoinDesc.setFilterMap(joinDesc.getFilterMap()); + mapJoinDesc.resetOrder(); } @SuppressWarnings("unchecked") diff --git a/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out b/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out new file mode 100644 index 000000000000..b71028a34602 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out @@ -0,0 +1,1641 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +CREATE TABLE myinput1(key int, value int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@myinput1 +POSTHOOK: query: -- SORT_QUERY_RESULTS + +CREATE TABLE myinput1(key int, value int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@myinput1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in8.txt' INTO TABLE myinput1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@myinput1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in8.txt' INTO TABLE myinput1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@myinput1 +PREHOOK: query: -- merging +explain select * from myinput1 a join myinput1 b on a.key<=>b.value +PREHOOK: type: QUERY +POSTHOOK: query: -- merging +explain select * from myinput1 a join myinput1 b on a.key<=>b.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: value (type: int) + sort order: + + Map-reduce partition columns: value (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: int) + Map 3 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {VALUE._col0} {KEY.reducesinkkey0} + nullSafes: [true] + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 3 Data size: 28 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: int), _col5 (type: int), _col6 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 3 Data size: 28 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 3 Data size: 28 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL NULL +PREHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key=c.key +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key=c.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: value is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: value (type: int) + sort order: + + Map-reduce partition columns: value (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: int) + Map 3 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Map 4 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {VALUE._col0} {KEY.reducesinkkey0} + 2 {KEY.reducesinkkey0} {VALUE._col0} + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: int), _col5 (type: int), _col6 (type: int), _col10 (type: int), _col11 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key=c.key +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key=c.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 10 NULL +100 100 100 100 100 100 +PREHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key<=>c.key +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key<=>c.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: value (type: int) + sort order: + + Map-reduce partition columns: value (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: int) + Map 3 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Map 4 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {VALUE._col0} {KEY.reducesinkkey0} + 2 {KEY.reducesinkkey0} {VALUE._col0} + nullSafes: [true] + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: int), _col5 (type: int), _col6 (type: int), _col10 (type: int), _col11 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key<=>c.key +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key<=>c.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 10 NULL +100 100 100 100 100 100 +NULL 10 10 NULL NULL 10 +NULL 10 10 NULL NULL 35 +NULL 10 10 NULL NULL NULL +NULL 10 48 NULL NULL 10 +NULL 10 48 NULL NULL 35 +NULL 10 48 NULL NULL NULL +NULL 10 NULL NULL NULL 10 +NULL 10 NULL NULL NULL 35 +NULL 10 NULL NULL NULL NULL +NULL 35 10 NULL NULL 10 +NULL 35 10 NULL NULL 35 +NULL 35 10 NULL NULL NULL +NULL 35 48 NULL NULL 10 +NULL 35 48 NULL NULL 35 +NULL 35 48 NULL NULL NULL +NULL 35 NULL NULL NULL 10 +NULL 35 NULL NULL NULL 35 +NULL 35 NULL NULL NULL NULL +NULL NULL 10 NULL NULL 10 +NULL NULL 10 NULL NULL 35 +NULL NULL 10 NULL NULL NULL +NULL NULL 48 NULL NULL 10 +NULL NULL 48 NULL NULL 35 +NULL NULL 48 NULL NULL NULL +NULL NULL NULL NULL NULL 10 +NULL NULL NULL NULL NULL 35 +NULL NULL NULL NULL NULL NULL +PREHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value=b.key join myinput1 c on a.key<=>c.key AND a.value=c.value +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value=b.key join myinput1 c on a.key<=>c.key AND a.value=c.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: value (type: int), key (type: int) + sort order: ++ + Map-reduce partition columns: value (type: int), key (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Map 3 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: value is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int), value (type: int) + sort order: ++ + Map-reduce partition columns: key (type: int), value (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Map 4 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: value is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int), value (type: int) + sort order: ++ + Map-reduce partition columns: key (type: int), value (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} {KEY.reducesinkkey1} + 1 {KEY.reducesinkkey1} {KEY.reducesinkkey0} + 2 {KEY.reducesinkkey0} {KEY.reducesinkkey1} + nullSafes: [true, false] + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: int), _col5 (type: int), _col6 (type: int), _col10 (type: int), _col11 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value=b.key join myinput1 c on a.key<=>c.key AND a.value=c.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value=b.key join myinput1 c on a.key<=>c.key AND a.value=c.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +100 100 100 100 100 100 +NULL 10 10 NULL NULL 10 +PREHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value<=>b.key join myinput1 c on a.key<=>c.key AND a.value<=>c.value +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value<=>b.key join myinput1 c on a.key<=>c.key AND a.value<=>c.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: value (type: int), key (type: int) + sort order: ++ + Map-reduce partition columns: value (type: int), key (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Map 3 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int), value (type: int) + sort order: ++ + Map-reduce partition columns: key (type: int), value (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Map 4 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int), value (type: int) + sort order: ++ + Map-reduce partition columns: key (type: int), value (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} {KEY.reducesinkkey1} + 1 {KEY.reducesinkkey1} {KEY.reducesinkkey0} + 2 {KEY.reducesinkkey0} {KEY.reducesinkkey1} + nullSafes: [true, true] + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: int), _col5 (type: int), _col6 (type: int), _col10 (type: int), _col11 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value<=>b.key join myinput1 c on a.key<=>c.key AND a.value<=>c.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value<=>b.key join myinput1 c on a.key<=>c.key AND a.value<=>c.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 10 NULL +100 100 100 100 100 100 +NULL 10 10 NULL NULL 10 +NULL NULL NULL NULL NULL NULL +PREHOOK: query: -- outer joins +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: -- outer joins +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +48 NULL NULL NULL +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +48 NULL NULL NULL +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: -- map joins +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: -- map joins +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL NULL +PREHOOK: query: CREATE TABLE smb_input(key int, value int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@smb_input +POSTHOOK: query: CREATE TABLE smb_input(key int, value int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@smb_input +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in4.txt' into table smb_input +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@smb_input +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in4.txt' into table smb_input +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@smb_input +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in5.txt' into table smb_input +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@smb_input +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in5.txt' into table smb_input +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@smb_input +PREHOOK: query: -- smbs +CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@smb_input1 +POSTHOOK: query: -- smbs +CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@smb_input1 +PREHOOK: query: CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@smb_input2 +POSTHOOK: query: CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@smb_input2 +PREHOOK: query: from smb_input +insert overwrite table smb_input1 select * +insert overwrite table smb_input2 select * +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input +PREHOOK: Output: default@smb_input1 +PREHOOK: Output: default@smb_input2 +POSTHOOK: query: from smb_input +insert overwrite table smb_input1 select * +insert overwrite table smb_input2 select * +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input +POSTHOOK: Output: default@smb_input1 +POSTHOOK: Output: default@smb_input2 +POSTHOOK: Lineage: smb_input1.key SIMPLE [(smb_input)smb_input.FieldSchema(name:key, type:int, comment:null), ] +POSTHOOK: Lineage: smb_input1.value SIMPLE [(smb_input)smb_input.FieldSchema(name:value, type:int, comment:null), ] +POSTHOOK: Lineage: smb_input2.key SIMPLE [(smb_input)smb_input.FieldSchema(name:key, type:int, comment:null), ] +POSTHOOK: Lineage: smb_input2.value SIMPLE [(smb_input)smb_input.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 1000 +10 100 10 1000 +10 1000 10 100 +10 1000 10 100 +10 1000 10 1000 +100 100 100 100 +12 100 12 100 +12 100 12 NULL +12 NULL 12 100 +12 NULL 12 NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 NULL 10050 +NULL 10050 NULL 35 +NULL 10050 NULL NULL +NULL 35 NULL 10050 +NULL 35 NULL 35 +NULL 35 NULL NULL +NULL NULL NULL 10050 +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key AND a.value <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key AND a.value <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 1000 10 1000 +100 100 100 100 +12 100 12 100 +12 NULL 12 NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 NULL 10050 +NULL 35 NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input1 b ON a.key <=> b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input1 b ON a.key <=> b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 1000 +10 100 10 1000 +10 1000 10 100 +10 1000 10 100 +10 1000 10 1000 +100 100 100 100 +12 100 12 100 +12 100 12 NULL +12 NULL 12 100 +12 NULL 12 NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 NULL 10050 +NULL 10050 NULL 35 +NULL 10050 NULL NULL +NULL 35 NULL 10050 +NULL 35 NULL 35 +NULL 35 NULL NULL +NULL NULL NULL 10050 +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 1000 +10 100 10 1000 +10 1000 10 100 +10 1000 10 100 +10 1000 10 1000 +100 100 100 100 +12 100 12 100 +12 100 12 NULL +12 NULL 12 100 +12 NULL 12 NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 NULL 10050 +NULL 10050 NULL 35 +NULL 10050 NULL NULL +NULL 35 NULL 10050 +NULL 35 NULL 35 +NULL 35 NULL NULL +NULL NULL NULL 10050 +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input1 b ON a.key <=> b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input1 b ON a.key <=> b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 1000 +10 100 10 1000 +10 1000 10 100 +10 1000 10 100 +10 1000 10 1000 +100 100 100 100 +12 100 12 100 +12 100 12 NULL +12 NULL 12 100 +12 NULL 12 NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 NULL 10050 +NULL 10050 NULL 35 +NULL 10050 NULL NULL +NULL 35 NULL 10050 +NULL 35 NULL 35 +NULL 35 NULL NULL +NULL NULL NULL 10050 +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +35 10035 NULL 35 +NULL 10050 12 NULL +NULL 10050 NULL NULL +NULL 35 12 NULL +NULL 35 NULL NULL +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +35 10035 NULL 35 +NULL 10050 12 NULL +NULL 10050 NULL NULL +NULL 35 12 NULL +NULL 35 NULL NULL +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input2 b ON a.key <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input2 b ON a.key <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +10 100 NULL NULL +10 100 NULL NULL +10 1000 NULL NULL +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +12 100 NULL NULL +12 NULL NULL NULL +15 10015 NULL NULL +20 10020 NULL NULL +25 10025 NULL NULL +30 10030 NULL NULL +35 10035 NULL 35 +40 10040 NULL NULL +40 10040 NULL NULL +5 10005 NULL NULL +50 10050 NULL NULL +50 10050 NULL NULL +50 10050 NULL NULL +60 10040 NULL NULL +60 10040 NULL NULL +70 10040 NULL NULL +70 10040 NULL NULL +80 10040 NULL NULL +80 10040 NULL NULL +NULL 10050 12 NULL +NULL 10050 NULL NULL +NULL 35 12 NULL +NULL 35 NULL NULL +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input2 b ON a.key <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input2 b ON a.key <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +35 10035 NULL 35 +NULL 10050 12 NULL +NULL 10050 NULL NULL +NULL 35 12 NULL +NULL 35 NULL NULL +NULL NULL 10 1000 +NULL NULL 12 NULL +NULL NULL 15 10015 +NULL NULL 20 10020 +NULL NULL 25 10025 +NULL NULL 30 10030 +NULL NULL 35 10035 +NULL NULL 40 10040 +NULL NULL 40 10040 +NULL NULL 5 10005 +NULL NULL 50 10050 +NULL NULL 50 10050 +NULL NULL 50 10050 +NULL NULL 60 10040 +NULL NULL 60 10040 +NULL NULL 70 10040 +NULL NULL 70 10040 +NULL NULL 80 10040 +NULL NULL 80 10040 +NULL NULL NULL 10050 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 100 100 +10 100 100 100 +10 100 12 100 +10 100 12 100 +10 1000 10 1000 +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +12 100 10 100 +12 100 10 100 +12 100 100 100 +12 100 12 100 +12 NULL 12 NULL +12 NULL NULL NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 NULL 10050 +NULL 35 NULL 35 +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a RIGHT OUTER JOIN smb_input2 b ON a.value <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a RIGHT OUTER JOIN smb_input2 b ON a.value <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 100 100 +10 100 100 100 +10 100 12 100 +10 100 12 100 +10 1000 10 1000 +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +12 100 10 100 +12 100 10 100 +12 100 100 100 +12 100 12 100 +12 NULL 12 NULL +12 NULL NULL NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 NULL 10050 +NULL 35 NULL 35 +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 100 100 +10 100 100 100 +10 100 12 100 +10 100 12 100 +10 1000 10 1000 +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +12 100 10 100 +12 100 10 100 +12 100 100 100 +12 100 12 100 +12 NULL 12 NULL +12 NULL NULL NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 NULL 10050 +NULL 35 NULL 35 +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a LEFT OUTER JOIN smb_input2 b ON a.value <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a LEFT OUTER JOIN smb_input2 b ON a.value <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 100 100 +10 100 100 100 +10 100 12 100 +10 100 12 100 +10 1000 10 1000 +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +12 100 10 100 +12 100 10 100 +12 100 100 100 +12 100 12 100 +12 NULL 12 NULL +12 NULL NULL NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 NULL 10050 +NULL 35 NULL 35 +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: --HIVE-3315 join predicate transitive +explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.key is NULL +PREHOOK: type: QUERY +POSTHOOK: query: --HIVE-3315 join predicate transitive +explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.key is NULL +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: value is null (type: boolean) + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: null (type: void) + sort order: + + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: int) + Map 3 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is null (type: boolean) + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: null (type: void) + sort order: + + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {VALUE._col0} + 1 {VALUE._col0} + nullSafes: [true] + outputColumnNames: _col1, _col5 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: null (type: void), _col1 (type: int), _col5 (type: int), null (type: void) + outputColumnNames: _col0, _col1, _col2, _col3 + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.key is NULL +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.key is NULL +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL NULL diff --git a/ql/src/test/results/clientpositive/tez/tez_union_group_by.q.out b/ql/src/test/results/clientpositive/tez/tez_union_group_by.q.out index 59a6e578f2b4..f5bad7f82b2f 100644 --- a/ql/src/test/results/clientpositive/tez/tez_union_group_by.q.out +++ b/ql/src/test/results/clientpositive/tez/tez_union_group_by.q.out @@ -180,6 +180,7 @@ STAGE PLANS: condition expressions: 0 {VALUE._col0} 1 + nullSafes: [false, true] outputColumnNames: _col0 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator From 787b5f5c6569b7e60a1d31c0445cd1b468b123eb Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 8 Nov 2014 01:12:52 +0000 Subject: [PATCH 272/339] HIVE-8760: Pass a copy of HiveConf to hooks (Gunther Hagleitner, reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637497 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hadoop/hive/ql/hooks/ATSHook.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java b/ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java index cdc929ac35fe..4db825b41f91 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java @@ -27,6 +27,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.QueryPlan; import org.apache.hadoop.hive.ql.exec.ExplainTask; import org.apache.hadoop.hive.ql.exec.Task; @@ -89,6 +90,8 @@ public void run() { @Override public void run(final HookContext hookContext) throws Exception { final long currentTime = System.currentTimeMillis(); + final HiveConf conf = new HiveConf(hookContext.getConf()); + executor.submit(new Runnable() { @Override public void run() { @@ -110,19 +113,19 @@ public void run() { switch(hookContext.getHookType()) { case PRE_EXEC_HOOK: ExplainTask explain = new ExplainTask(); - explain.initialize(hookContext.getConf(), plan, null); + explain.initialize(conf, plan, null); String query = plan.getQueryStr(); List> rootTasks = plan.getRootTasks(); JSONObject explainPlan = explain.getJSONPlan(null, null, rootTasks, plan.getFetchTask(), true, false, false); - fireAndForget(hookContext.getConf(), createPreHookEvent(queryId, query, + fireAndForget(conf, createPreHookEvent(queryId, query, explainPlan, queryStartTime, user, numMrJobs, numTezJobs)); break; case POST_EXEC_HOOK: - fireAndForget(hookContext.getConf(), createPostHookEvent(queryId, currentTime, user, true)); + fireAndForget(conf, createPostHookEvent(queryId, currentTime, user, true)); break; case ON_FAILURE_HOOK: - fireAndForget(hookContext.getConf(), createPostHookEvent(queryId, currentTime, user, false)); + fireAndForget(conf, createPostHookEvent(queryId, currentTime, user, false)); break; default: //ignore From 0d1250ef9cc8f5b7b177b04e19c08bb9944db133 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Sat, 8 Nov 2014 03:22:52 +0000 Subject: [PATCH 273/339] HIVE-8772 : zookeeper info logs are always printed from beeline with service discovery mode (Thejas Nair, reviewed by Vaibhav Gumashta) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637506 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/resources/beeline-log4j.properties | 24 +++++++++++++++++++ bin/ext/beeline.sh | 3 ++- packaging/src/main/assembly/bin.xml | 5 ++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 beeline/src/main/resources/beeline-log4j.properties diff --git a/beeline/src/main/resources/beeline-log4j.properties b/beeline/src/main/resources/beeline-log4j.properties new file mode 100644 index 000000000000..fe47d948281b --- /dev/null +++ b/beeline/src/main/resources/beeline-log4j.properties @@ -0,0 +1,24 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +log4j.rootLogger=WARN, console + +######## console appender ######## +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.target=System.err +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n +log4j.appender.console.encoding=UTF-8 diff --git a/bin/ext/beeline.sh b/bin/ext/beeline.sh index ddd590690438..a957fe17349b 100644 --- a/bin/ext/beeline.sh +++ b/bin/ext/beeline.sh @@ -25,7 +25,8 @@ beeline () { superCsvJarPath=`ls ${HIVE_LIB}/super-csv-*.jar` jlineJarPath=`ls ${HIVE_LIB}/jline-*.jar` jdbcStandaloneJarPath=`ls ${HIVE_LIB}/hive-jdbc-*-standalone.jar` - export HADOOP_CLASSPATH=${beelineJarPath}:${superCsvJarPath}:${jlineJarPath}:${jdbcStandaloneJarPath} + export HADOOP_CLASSPATH=${HIVE_CONF_DIR}:${beelineJarPath}:${superCsvJarPath}:${jlineJarPath}:${jdbcStandaloneJarPath} + export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Dlog4j.configuration=beeline-log4j.properties " exec $HADOOP jar ${beelineJarPath} $CLASS $HIVE_OPTS "$@" } diff --git a/packaging/src/main/assembly/bin.xml b/packaging/src/main/assembly/bin.xml index 860d5e799b8d..3f66b1f65a75 100644 --- a/packaging/src/main/assembly/bin.xml +++ b/packaging/src/main/assembly/bin.xml @@ -327,6 +327,11 @@ conf hive-exec-log4j.properties.template + + ${project.parent.basedir}/beeline/src/main/resources/beeline-log4j.properties + conf + beeline-log4j.properties.template + ${project.parent.basedir}/hcatalog/README.txt hcatalog/share/doc/hcatalog From a47a693a5d5582730cb12e622abfbb48aa3ae1b8 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 8 Nov 2014 08:01:16 +0000 Subject: [PATCH 274/339] HIVE-8782: HBase handler doesn't compile with hadoop-1 (Jimmy Xiang, reviewed by Xuefu and Sergey) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637522 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/hbase/HBaseStorageHandler.java | 3 ++- .../java/org/apache/hadoop/hive/shims/Hadoop20Shims.java | 5 +++++ .../java/org/apache/hadoop/hive/shims/Hadoop20SShims.java | 5 +++++ .../java/org/apache/hadoop/hive/shims/Hadoop23Shims.java | 5 +++++ .../main/java/org/apache/hadoop/hive/shims/HadoopShims.java | 2 ++ 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java b/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java index 330bc266bb23..6a9bd0ebcab0 100644 --- a/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java +++ b/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java @@ -59,6 +59,7 @@ import org.apache.hadoop.hive.ql.plan.TableDesc; import org.apache.hadoop.hive.serde2.Deserializer; import org.apache.hadoop.hive.serde2.SerDe; +import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.mapred.InputFormat; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapred.OutputFormat; @@ -479,7 +480,7 @@ public void configureJobConf(TableDesc tableDesc, JobConf jobConf) { // Get credentials using the configuration instance which has HBase properties JobConf hbaseJobConf = new JobConf(getConf()); org.apache.hadoop.hbase.mapred.TableMapReduceUtil.initCredentials(hbaseJobConf); - jobConf.getCredentials().mergeAll(hbaseJobConf.getCredentials()); + ShimLoader.getHadoopShims().mergeCredentials(jobConf, hbaseJobConf); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java b/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java index 569a939bde2a..28e52f1265c3 100644 --- a/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java +++ b/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java @@ -899,6 +899,11 @@ public void getMergedCredentials(JobConf jobConf) throws IOException { throw new IOException("Merging of credentials not supported in this version of hadoop"); } + @Override + public void mergeCredentials(JobConf dest, JobConf src) throws IOException { + throw new IOException("Merging of credentials not supported in this version of hadoop"); + } + protected void run(FsShell shell, String[] command) throws Exception { LOG.debug(ArrayUtils.toString(command)); shell.run(command); diff --git a/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java b/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java index 07946df1b0fc..0a213d148bb1 100644 --- a/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java +++ b/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java @@ -522,6 +522,11 @@ public void getMergedCredentials(JobConf jobConf) throws IOException { throw new IOException("Merging of credentials not supported in this version of hadoop"); } + @Override + public void mergeCredentials(JobConf dest, JobConf src) throws IOException { + throw new IOException("Merging of credentials not supported in this version of hadoop"); + } + @Override public String getPassword(Configuration conf, String name) { // No password API, just retrieve value from conf diff --git a/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java b/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java index 9829c1b54ed2..0df9a7a76706 100644 --- a/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java +++ b/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java @@ -755,6 +755,11 @@ public void getMergedCredentials(JobConf jobConf) throws IOException { jobConf.getCredentials().mergeAll(UserGroupInformation.getCurrentUser().getCredentials()); } + @Override + public void mergeCredentials(JobConf dest, JobConf src) throws IOException { + dest.getCredentials().mergeAll(src.getCredentials()); + } + protected static final Method accessMethod; protected static final Method getPasswordMethod; diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java index 3a652ca36e8b..38c5f7506411 100644 --- a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java +++ b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java @@ -703,6 +703,8 @@ public interface DirectDecompressorShim { public void getMergedCredentials(JobConf jobConf) throws IOException; + public void mergeCredentials(JobConf dest, JobConf src) throws IOException; + /** * Check if the configured UGI has access to the path for the given file system action. * Method will return successfully if action is permitted. AccessControlExceptoin will From cf26a8027856c1f4d4ba5a18723c4cd268b62e0f Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Sat, 8 Nov 2014 18:36:21 +0000 Subject: [PATCH 275/339] HIVE-8785 : HiveServer2 LogDivertAppender should be more selective for beeline getLogs (Thejas Nair, reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637584 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 5 +- .../hive/beeline/TestBeeLineWithArgs.java | 2 +- .../org/apache/hive/jdbc/TestJdbcDriver2.java | 2 + .../TestEmbeddedThriftBinaryCLIService.java | 2 + .../org/apache/hive/jdbc/HiveConnection.java | 5 +- .../hadoop/hive/ql/exec/tez/TezTask.java | 4 +- .../cli/operation/LogDivertAppender.java | 49 +++++++++++++------ .../cli/operation/OperationManager.java | 39 ++++++++++----- .../EmbeddedThriftBinaryCLIService.java | 7 ++- .../operation/TestOperationLoggingAPI.java | 33 +++++++++---- 10 files changed, 108 insertions(+), 40 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index c9a28dc7dd15..c8504df0665e 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1527,12 +1527,13 @@ public static enum ConfVars { // operation log configuration HIVE_SERVER2_LOGGING_OPERATION_ENABLED("hive.server2.logging.operation.enabled", true, - "When true, HS2 will save operation logs"), + "When true, HS2 will save operation logs and make them available for clients"), HIVE_SERVER2_LOGGING_OPERATION_LOG_LOCATION("hive.server2.logging.operation.log.location", "${system:java.io.tmpdir}" + File.separator + "${system:user.name}" + File.separator + "operation_logs", "Top level directory where operation logs are stored if logging functionality is enabled"), - + HIVE_SERVER2_LOGGING_OPERATION_VERBOSE("hive.server2.logging.operation.verbose", false, + "When true, HS2 operation logs available for clients will be verbose"), // logging configuration HIVE_LOG4J_FILE("hive.log4j.file", "", "Hive log4j configuration file.\n" + diff --git a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java index 8126cdfa5e16..4fa8aef13769 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java @@ -529,7 +529,7 @@ public void testEmbeddedBeelineConnection() throws Throwable{ public void testQueryProgress() throws Throwable { final String SCRIPT_TEXT = "set hive.support.concurrency = false;\n" + "select count(*) from " + tableName + ";\n"; - final String EXPECTED_PATTERN = "Parsing command"; + final String EXPECTED_PATTERN = "number of splits"; testScriptFile(SCRIPT_TEXT, EXPECTED_PATTERN, true, getBaseArgs(miniHS2.getBaseJdbcURL())); } diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java index 560ee4268614..8eb900538b24 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java @@ -50,6 +50,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.metastore.TableType; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.hive.ql.processors.DfsProcessor; @@ -104,6 +105,7 @@ public TestJdbcDriver2() { public static void setUpBeforeClass() throws SQLException, ClassNotFoundException{ Class.forName(driverName); Connection con1 = getConnection("default"); + System.setProperty(ConfVars.HIVE_SERVER2_LOGGING_OPERATION_VERBOSE.varname, "" + true); Statement stmt1 = con1.createStatement(); assertNotNull("Statement is null", stmt1); diff --git a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/TestEmbeddedThriftBinaryCLIService.java b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/TestEmbeddedThriftBinaryCLIService.java index ebda296a7791..e7be18ae56b6 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/TestEmbeddedThriftBinaryCLIService.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/TestEmbeddedThriftBinaryCLIService.java @@ -18,6 +18,7 @@ package org.apache.hive.service.cli; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hive.service.cli.thrift.EmbeddedThriftBinaryCLIService; import org.apache.hive.service.cli.thrift.ThriftCLIService; import org.apache.hive.service.cli.thrift.ThriftCLIServiceClient; @@ -35,6 +36,7 @@ public class TestEmbeddedThriftBinaryCLIService extends CLIServiceTest { @BeforeClass public static void setUpBeforeClass() throws Exception { service = new EmbeddedThriftBinaryCLIService(); + service.init(new HiveConf()); client = new ThriftCLIServiceClient(service); } diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index f915699b8c61..cfac55b1111c 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -52,6 +52,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hive.jdbc.Utils.JdbcConnectionParams; import org.apache.hive.service.auth.HiveAuthFactory; @@ -143,7 +144,9 @@ public HiveConnection(String uri, Properties info) throws SQLException { isEmbeddedMode = connParams.isEmbeddedMode(); if (isEmbeddedMode) { - client = new EmbeddedThriftBinaryCLIService(); + EmbeddedThriftBinaryCLIService embeddedClient = new EmbeddedThriftBinaryCLIService(); + embeddedClient.init(new HiveConf()); + client = embeddedClient; } else { // extract user/password from JDBC connection properties if its not supplied in the // connection URL diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java index 97684a816bae..fc83a867573a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java @@ -27,6 +27,7 @@ import java.util.Map; import java.util.Set; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.ql.Context; @@ -170,7 +171,8 @@ public int execute(DriverContext driverContext) { counters = client.getDAGStatus(statusGetOpts).getDAGCounters(); TezSessionPoolManager.getInstance().returnSession(session); - if (LOG.isInfoEnabled() && counters != null) { + if (LOG.isInfoEnabled() && counters != null + && conf.getBoolVar(conf, HiveConf.ConfVars.TEZ_EXEC_SUMMARY)) { for (CounterGroup group: counters) { LOG.info(group.getDisplayName() +":"); for (TezCounter counter: group) { diff --git a/service/src/java/org/apache/hive/service/cli/operation/LogDivertAppender.java b/service/src/java/org/apache/hive/service/cli/operation/LogDivertAppender.java index 7e619194bb95..3bf296024e1a 100644 --- a/service/src/java/org/apache/hive/service/cli/operation/LogDivertAppender.java +++ b/service/src/java/org/apache/hive/service/cli/operation/LogDivertAppender.java @@ -18,13 +18,17 @@ package org.apache.hive.service.cli.operation; import java.io.CharArrayWriter; +import java.util.regex.Pattern; +import org.apache.hadoop.hive.ql.exec.Task; import org.apache.log4j.Layout; import org.apache.log4j.Logger; import org.apache.log4j.WriterAppender; import org.apache.log4j.spi.Filter; import org.apache.log4j.spi.LoggingEvent; +import com.google.common.base.Joiner; + /** * An Appender to divert logs from individual threads to the LogObject they belong to. */ @@ -33,20 +37,29 @@ public class LogDivertAppender extends WriterAppender { private final OperationManager operationManager; /** - * A log filter that exclude messages coming from the logger with the given name. - * We apply this filter on the Loggers used by the log diversion stuff, so that + * A log filter that filters messages coming from the logger with the given names. + * It be used as a white list filter or a black list filter. + * We apply black list filter on the Loggers used by the log diversion stuff, so that * they don't generate more logs for themselves when they process logs. + * White list filter is used for less verbose log collection */ - private static class NameExclusionFilter extends Filter { - private String excludeLoggerName = null; + private static class NameFilter extends Filter { + private final Pattern namePattern; + private final boolean excludeMatches; - public NameExclusionFilter(String excludeLoggerName) { - this.excludeLoggerName = excludeLoggerName; + public NameFilter(boolean isExclusionFilter, String [] loggerNames) { + this.excludeMatches = isExclusionFilter; + String matchRegex = Joiner.on("|").join(loggerNames); + this.namePattern = Pattern.compile(matchRegex); } @Override public int decide(LoggingEvent ev) { - if (ev.getLoggerName().equals(excludeLoggerName)) { + boolean isMatch = namePattern.matcher(ev.getLoggerName()).matches(); + if (excludeMatches == isMatch) { + // Deny if this is black-list filter (excludeMatches = true) and it + // matched + // or if this is whitelist filter and it didn't match return Filter.DENY; } return Filter.NEUTRAL; @@ -56,21 +69,29 @@ public int decide(LoggingEvent ev) { /** This is where the log message will go to */ private final CharArrayWriter writer = new CharArrayWriter(); - public LogDivertAppender(Layout layout, OperationManager operationManager) { + public LogDivertAppender(Layout layout, OperationManager operationManager, boolean isVerbose) { setLayout(layout); setWriter(writer); setName("LogDivertAppender"); this.operationManager = operationManager; - // Filter out messages coming from log processing classes, or we'll run an infinite loop. - addFilter(new NameExclusionFilter(LOG.getName())); - addFilter(new NameExclusionFilter(OperationLog.class.getName())); - addFilter(new NameExclusionFilter(OperationManager.class.getName())); + if (isVerbose) { + // Filter out messages coming from log processing classes, or we'll run an + // infinite loop. + String[] exclLoggerNames = { LOG.getName(), OperationLog.class.getName(), + OperationManager.class.getName() }; + addFilter(new NameFilter(true, exclLoggerNames)); + } else { + // in non verbose mode, show only select logger messages + String[] inclLoggerNames = { "org.apache.hadoop.mapreduce.JobSubmitter", + "org.apache.hadoop.mapreduce.Job", "SessionState", Task.class.getName() }; + addFilter(new NameFilter(false, inclLoggerNames)); + } } /** - * Overrides WriterAppender.subAppend(), which does the real logging. - * No need to worry about concurrency since log4j calls this synchronously. + * Overrides WriterAppender.subAppend(), which does the real logging. No need + * to worry about concurrency since log4j calls this synchronously. */ @Override protected void subAppend(LoggingEvent event) { diff --git a/service/src/java/org/apache/hive/service/cli/operation/OperationManager.java b/service/src/java/org/apache/hive/service/cli/operation/OperationManager.java index a57b6e5d322a..76be71363f27 100644 --- a/service/src/java/org/apache/hive/service/cli/operation/OperationManager.java +++ b/service/src/java/org/apache/hive/service/cli/operation/OperationManager.java @@ -18,8 +18,8 @@ package org.apache.hive.service.cli.operation; -import java.util.Enumeration; import java.util.ArrayList; +import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -30,16 +30,26 @@ import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.Schema; import org.apache.hive.service.AbstractService; -import org.apache.hive.service.cli.*; +import org.apache.hive.service.cli.FetchOrientation; +import org.apache.hive.service.cli.HiveSQLException; +import org.apache.hive.service.cli.OperationHandle; +import org.apache.hive.service.cli.OperationState; +import org.apache.hive.service.cli.OperationStatus; +import org.apache.hive.service.cli.RowSet; +import org.apache.hive.service.cli.RowSetFactory; +import org.apache.hive.service.cli.TableSchema; import org.apache.hive.service.cli.session.HiveSession; -import org.apache.log4j.*; +import org.apache.log4j.Appender; +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Layout; +import org.apache.log4j.Logger; +import org.apache.log4j.PatternLayout; /** * OperationManager. * */ public class OperationManager extends AbstractService { - private static final String DEFAULT_LAYOUT_PATTERN = "%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n"; private final Log LOG = LogFactory.getLog(OperationManager.class.getName()); private HiveConf hiveConf; @@ -54,7 +64,8 @@ public OperationManager() { public synchronized void init(HiveConf hiveConf) { this.hiveConf = hiveConf; if (hiveConf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_LOGGING_OPERATION_ENABLED)) { - initOperationLogCapture(); + boolean isVerbose = hiveConf.getBoolVar(HiveConf.ConfVars.HIVE_SERVER2_LOGGING_OPERATION_VERBOSE); + initOperationLogCapture(isVerbose); } else { LOG.debug("Operation level logging is turned off"); } @@ -73,7 +84,7 @@ public synchronized void stop() { super.stop(); } - private void initOperationLogCapture() { + private void initOperationLogCapture(boolean isVerbose) { // There should be a ConsoleAppender. Copy its Layout. Logger root = Logger.getRootLogger(); Layout layout = null; @@ -87,13 +98,19 @@ private void initOperationLogCapture() { } } - if (layout == null) { - layout = new PatternLayout(DEFAULT_LAYOUT_PATTERN); - LOG.info("Cannot find a Layout from a ConsoleAppender. Using default Layout pattern."); - } + final String VERBOSE_PATTERN = "%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n"; + final String NONVERBOSE_PATTERN = "%-5p : %m%n"; + if (isVerbose) { + if (layout == null) { + layout = new PatternLayout(VERBOSE_PATTERN); + LOG.info("Cannot find a Layout from a ConsoleAppender. Using default Layout pattern."); + } + } else { + layout = new PatternLayout(NONVERBOSE_PATTERN); + } // Register another Appender (with the same layout) that talks to us. - Appender ap = new LogDivertAppender(layout, this); + Appender ap = new LogDivertAppender(layout, this, isVerbose); root.addAppender(ap); } diff --git a/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java index 61700c1fc803..ac6353733713 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java @@ -33,8 +33,13 @@ public EmbeddedThriftBinaryCLIService() { super(new CLIService(null)); isEmbedded = true; HiveConf.setLoadHiveServer2Config(true); - cliService.init(new HiveConf()); + } + + @Override + public synchronized void init(HiveConf hiveConf) { + cliService.init(hiveConf); cliService.start(); + super.init(hiveConf); } public ICLIService getService() { diff --git a/service/src/test/org/apache/hive/service/cli/operation/TestOperationLoggingAPI.java b/service/src/test/org/apache/hive/service/cli/operation/TestOperationLoggingAPI.java index 4e63a30d959a..42bdf214b517 100644 --- a/service/src/test/org/apache/hive/service/cli/operation/TestOperationLoggingAPI.java +++ b/service/src/test/org/apache/hive/service/cli/operation/TestOperationLoggingAPI.java @@ -17,29 +17,38 @@ */ package org.apache.hive.service.cli.operation; -import org.junit.Assert; +import java.io.File; + import org.apache.hadoop.hive.conf.HiveConf; -import org.apache.hive.service.cli.*; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; +import org.apache.hive.service.cli.FetchOrientation; +import org.apache.hive.service.cli.FetchType; +import org.apache.hive.service.cli.HiveSQLException; +import org.apache.hive.service.cli.OperationHandle; +import org.apache.hive.service.cli.OperationState; +import org.apache.hive.service.cli.OperationStatus; +import org.apache.hive.service.cli.RowSet; +import org.apache.hive.service.cli.SessionHandle; import org.apache.hive.service.cli.thrift.EmbeddedThriftBinaryCLIService; import org.apache.hive.service.cli.thrift.ThriftCLIServiceClient; import org.junit.After; +import org.junit.Assert; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; -import java.io.File; - /** * TestOperationLoggingAPI * Test the FetchResults of TFetchType.LOG in thrift level. */ public class TestOperationLoggingAPI { - private HiveConf hiveConf = new HiveConf(); - private String tableName = "testOperationLoggingAPI_table"; + private static HiveConf hiveConf; + private final String tableName = "testOperationLoggingAPI_table"; private File dataFile; private ThriftCLIServiceClient client; private SessionHandle sessionHandle; - private String sql = "select * from " + tableName; - private String[] expectedLogs = { + private final String sql = "select * from " + tableName; + private final String[] expectedLogs = { "Parsing command", "Parse Completed", "Starting Semantic Analysis", @@ -47,6 +56,12 @@ public class TestOperationLoggingAPI { "Starting command" }; + @BeforeClass + public static void setUpBeforeClass() { + hiveConf = new HiveConf(); + hiveConf.setBoolean(ConfVars.HIVE_SERVER2_LOGGING_OPERATION_VERBOSE.varname, true); + } + /** * Start embedded mode, open a session, and create a table for cases usage * @throws Exception @@ -247,7 +262,7 @@ private void verifyFetchedLog(RowSet rowSet) { private void verifyFetchedLog(String logs) { for (String log : expectedLogs) { - Assert.assertTrue(logs.contains(log)); + Assert.assertTrue("Checking for presence of " + log, logs.contains(log)); } } } From 4302632cac538d06a58dcd202260e603601afe54 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Sat, 8 Nov 2014 19:19:05 +0000 Subject: [PATCH 276/339] HIVE-8764: Windows: HiveServer2 TCP SSL cannot recognize localhost (Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637589 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/service/auth/HiveAuthFactory.java | 23 +++++++++++-------- .../service/cli/thrift/ThriftCLIService.java | 10 ++++---- .../hive/service/server/HiveServer2.java | 4 ++-- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index 6c645b8de9b4..23ba79ca63e1 100644 --- a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -218,6 +218,7 @@ public static TServerSocket getServerSocket(String hiveHost, int portNum) throws TTransportException { InetSocketAddress serverAddress; if (hiveHost == null || hiveHost.isEmpty()) { + // Wildcard bind serverAddress = new InetSocketAddress(portNum); } else { serverAddress = new InetSocketAddress(hiveHost, portNum); @@ -226,25 +227,26 @@ public static TServerSocket getServerSocket(String hiveHost, int portNum) } public static TServerSocket getServerSSLSocket(String hiveHost, int portNum, String keyStorePath, - String keyStorePassWord, List sslVersionBlacklist) - throws TTransportException, UnknownHostException { + String keyStorePassWord, List sslVersionBlacklist) throws TTransportException, + UnknownHostException { TSSLTransportFactory.TSSLTransportParameters params = - new TSSLTransportFactory.TSSLTransportParameters(); + new TSSLTransportFactory.TSSLTransportParameters(); params.setKeyStore(keyStorePath, keyStorePassWord); - - InetAddress serverAddress; + InetSocketAddress serverAddress; if (hiveHost == null || hiveHost.isEmpty()) { - serverAddress = InetAddress.getLocalHost(); + // Wildcard bind + serverAddress = new InetSocketAddress(portNum); } else { - serverAddress = InetAddress.getByName(hiveHost); + serverAddress = new InetSocketAddress(hiveHost, portNum); } - TServerSocket thriftServerSocket = TSSLTransportFactory.getServerSocket(portNum, 0, serverAddress, params); + TServerSocket thriftServerSocket = + TSSLTransportFactory.getServerSocket(portNum, 0, serverAddress.getAddress(), params); if (thriftServerSocket.getServerSocket() instanceof SSLServerSocket) { List sslVersionBlacklistLocal = new ArrayList(); for (String sslVersion : sslVersionBlacklist) { sslVersionBlacklistLocal.add(sslVersion.trim().toLowerCase()); } - SSLServerSocket sslServerSocket = (SSLServerSocket)thriftServerSocket.getServerSocket(); + SSLServerSocket sslServerSocket = (SSLServerSocket) thriftServerSocket.getServerSocket(); List enabledProtocols = new ArrayList(); for (String protocol : sslServerSocket.getEnabledProtocols()) { if (sslVersionBlacklistLocal.contains(protocol.toLowerCase())) { @@ -254,7 +256,8 @@ public static TServerSocket getServerSSLSocket(String hiveHost, int portNum, Str } } sslServerSocket.setEnabledProtocols(enabledProtocols.toArray(new String[0])); - LOG.info("SSL Server Socket Enabled Protocols: " + Arrays.toString(sslServerSocket.getEnabledProtocols())); + LOG.info("SSL Server Socket Enabled Protocols: " + + Arrays.toString(sslServerSocket.getEnabledProtocols())); } return thriftServerSocket; } diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java index cc974db02a5b..3a8ae70d8bd3 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java @@ -55,7 +55,7 @@ public abstract class ThriftCLIService extends AbstractService implements TCLISe protected static HiveAuthFactory hiveAuthFactory; protected int portNum; - protected InetAddress serverAddress; + protected InetAddress serverIPAddress; protected String hiveHost; protected TServer server; protected org.eclipse.jetty.server.Server httpServer; @@ -85,9 +85,9 @@ public synchronized void init(HiveConf hiveConf) { } try { if (hiveHost != null && !hiveHost.isEmpty()) { - serverAddress = InetAddress.getByName(hiveHost); + serverIPAddress = InetAddress.getByName(hiveHost); } else { - serverAddress = InetAddress.getLocalHost(); + serverIPAddress = InetAddress.getLocalHost(); } } catch (UnknownHostException e) { throw new ServiceException(e); @@ -153,8 +153,8 @@ public int getPortNumber() { return portNum; } - public InetAddress getServerAddress() { - return serverAddress; + public InetAddress getServerIPAddress() { + return serverIPAddress; } @Override diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java b/service/src/java/org/apache/hive/service/server/HiveServer2.java index 4199f0fafc0c..17e1d851d602 100644 --- a/service/src/java/org/apache/hive/service/server/HiveServer2.java +++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java @@ -249,10 +249,10 @@ private void setRegisteredWithZooKeeper(boolean registeredWithZooKeeper) { } private String getServerInstanceURI(HiveConf hiveConf) throws Exception { - if ((thriftCLIService == null) || (thriftCLIService.getServerAddress() == null)) { + if ((thriftCLIService == null) || (thriftCLIService.getServerIPAddress() == null)) { throw new Exception("Unable to get the server address; it hasn't been initialized yet."); } - return thriftCLIService.getServerAddress().getHostName() + ":" + return thriftCLIService.getServerIPAddress().getHostName() + ":" + thriftCLIService.getPortNumber(); } From 07e2f8ecf4ad0afeab5ad0b04a148fae2d44b96c Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 8 Nov 2014 20:27:02 +0000 Subject: [PATCH 277/339] HIVE-8768: CBO: Fix filter selectivity for 'in clause' & '<>' (Laljo John Pullokkaran via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637595 13f79535-47bb-0310-9956-ffa450edef68 --- .../rules/HivePushFilterPastJoinRule.java | 64 ++++++++++--------- .../stats/FilterSelectivityEstimator.java | 49 +++++++++++--- .../translator/SqlFunctionConverter.java | 1 + 3 files changed, 76 insertions(+), 38 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java index ec720478a16a..cf03a4ff185c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java @@ -95,36 +95,40 @@ public void onMatch(RelOptRuleCall call) { * not equi join conditions. */ @Override - protected void validateJoinFilters(List aboveFilters, - List joinFilters, JoinRelBase join, JoinRelType joinType) { - if (joinType.equals(JoinRelType.INNER)) { - ListIterator filterIter = joinFilters.listIterator(); - while (filterIter.hasNext()) { - RexNode exp = filterIter.next(); - if (exp instanceof RexCall) { - RexCall c = (RexCall) exp; - if (c.getOperator().getKind() == SqlKind.EQUALS) { - boolean validHiveJoinFilter = true; - for (RexNode rn : c.getOperands()) { - // NOTE: Hive dis-allows projections from both left - // & - // right side - // of join condition. Example: Hive disallows - // (r1.x=r2.x)=(r1.y=r2.y) on join condition. - if (filterRefersToBothSidesOfJoin(rn, join)) { - validHiveJoinFilter = false; - break; - } - } - if (validHiveJoinFilter) - continue; - } - } - aboveFilters.add(exp); - filterIter.remove(); - } - } - } + protected void validateJoinFilters(List aboveFilters, List joinFilters, + JoinRelBase join, JoinRelType joinType) { + if (joinType.equals(JoinRelType.INNER)) { + ListIterator filterIter = joinFilters.listIterator(); + while (filterIter.hasNext()) { + RexNode exp = filterIter.next(); + if (exp instanceof RexCall) { + RexCall c = (RexCall) exp; + if ((c.getOperator().getKind() == SqlKind.EQUALS) + || (c.getOperator().getKind() == SqlKind.LESS_THAN) + || (c.getOperator().getKind() == SqlKind.GREATER_THAN) + || (c.getOperator().getKind() == SqlKind.LESS_THAN_OR_EQUAL) + || (c.getOperator().getKind() == SqlKind.GREATER_THAN_OR_EQUAL)) { + boolean validHiveJoinFilter = true; + for (RexNode rn : c.getOperands()) { + // NOTE: Hive dis-allows projections from both left + // & + // right side + // of join condition. Example: Hive disallows + // (r1.x=r2.x)=(r1.y=r2.y) on join condition. + if (filterRefersToBothSidesOfJoin(rn, join)) { + validHiveJoinFilter = false; + break; + } + } + if (validHiveJoinFilter) + continue; + } + } + aboveFilters.add(exp); + filterIter.remove(); + } + } + } private boolean filterRefersToBothSidesOfJoin(RexNode filter, JoinRelBase j) { boolean refersToBothSides = false; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/FilterSelectivityEstimator.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/FilterSelectivityEstimator.java index ba07363c09d3..28bf2ad50665 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/FilterSelectivityEstimator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/stats/FilterSelectivityEstimator.java @@ -18,6 +18,9 @@ package org.apache.hadoop.hive.ql.optimizer.optiq.stats; import java.util.BitSet; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import org.apache.hadoop.hive.ql.optimizer.optiq.RelOptHiveTable; import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveTableScanRel; @@ -32,6 +35,10 @@ import org.eigenbase.rex.RexNode; import org.eigenbase.rex.RexVisitorImpl; import org.eigenbase.sql.SqlKind; +import org.eigenbase.sql.SqlOperator; +import org.eigenbase.sql.type.SqlTypeUtil; + +import com.google.common.collect.Sets; public class FilterSelectivityEstimator extends RexVisitorImpl { private final RelNode childRel; @@ -61,7 +68,7 @@ public Double visitCall(RexCall call) { } Double selectivity = null; - SqlKind op = call.getKind(); + SqlKind op = getOp(call); switch (op) { case AND: { @@ -74,6 +81,7 @@ public Double visitCall(RexCall call) { break; } + case NOT: case NOT_EQUALS: { selectivity = computeNotEqualitySelectivity(call); break; @@ -88,7 +96,16 @@ public Double visitCall(RexCall call) { } case IN: { - selectivity = ((double) 1 / ((double) call.operands.size())); + // TODO: 1) check for duplicates 2) We assume in clause values to be + // present in NDV which may not be correct (Range check can find it) 3) We + // assume values in NDV set is uniformly distributed over col values + // (account for skewness - histogram). + selectivity = computeFunctionSelectivity(call) * (call.operands.size() - 1); + if (selectivity <= 0.0) { + selectivity = 0.10; + } else if (selectivity >= 1.0) { + selectivity = 1.0; + } break; } @@ -152,18 +169,19 @@ private Double computeDisjunctionSelectivity(RexCall call) { } tmpCardinality = childCardinality * tmpSelectivity; - if (tmpCardinality > 1) + if (tmpCardinality > 1 && tmpCardinality < childCardinality) { tmpSelectivity = (1 - tmpCardinality / childCardinality); - else + } else { tmpSelectivity = 1.0; + } selectivity *= tmpSelectivity; } - if (selectivity > 1) - return (1 - selectivity); - else - return 1.0; + if (selectivity < 0.0) + selectivity = 0.0; + + return (1 - selectivity); } /** @@ -225,4 +243,19 @@ private boolean isPartitionPredicate(RexNode expr, RelNode r) { } return false; } + + private SqlKind getOp(RexCall call) { + SqlKind op = call.getKind(); + + if (call.getKind().equals(SqlKind.OTHER_FUNCTION) + && SqlTypeUtil.inBooleanFamily(call.getType())) { + SqlOperator sqlOp = call.getOperator(); + String opName = (sqlOp != null) ? sqlOp.getName() : ""; + if (opName.equalsIgnoreCase("in")) { + op = SqlKind.IN; + } + } + + return op; + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java index c6efff69ebba..7f52c2958744 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java @@ -278,6 +278,7 @@ private static class StaticBlockBuilder { registerFunction(">=", SqlStdOperatorTable.GREATER_THAN_OR_EQUAL, hToken(HiveParser.GREATERTHANOREQUALTO, ">=")); registerFunction("!", SqlStdOperatorTable.NOT, hToken(HiveParser.KW_NOT, "not")); + registerFunction("<>", SqlStdOperatorTable.NOT_EQUALS, hToken(HiveParser.NOTEQUAL, "<>")); } private void registerFunction(String name, SqlOperator optiqFn, HiveToken hiveToken) { From 18a4a30ac406c4de7518d4a5c30d34d55a22183d Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sat, 8 Nov 2014 22:24:09 +0000 Subject: [PATCH 278/339] HIVE-8794: Hive on Tez leaks AMs when killed before first dag is run (Gunther Hagleitner, reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637601 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java | 7 +++++++ .../apache/hadoop/hive/ql/exec/tez/TezSessionState.java | 1 + 2 files changed, 8 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java index 80ccc8ef5e17..dea346069515 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java @@ -45,6 +45,8 @@ import org.apache.tez.dag.api.client.VertexStatus; import org.fusesource.jansi.Ansi; +import com.google.common.base.Preconditions; + import java.io.IOException; import java.io.PrintStream; import java.text.DecimalFormat; @@ -132,6 +134,11 @@ public void run() { }); } + public static void initShutdownHook() { + Preconditions.checkNotNull(shutdownList, + "Shutdown hook was not properly initialized"); + } + public TezJobMonitor() { console = SessionState.getConsole(); secondsFormat = new DecimalFormat("#0.00"); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java index bb99357b83f6..65a00901968b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java @@ -187,6 +187,7 @@ public void open(HiveConf conf, String[] additionalFiles) LOG.info("Opening new Tez Session (id: " + sessionId + ", scratch dir: " + tezScratchDir + ")"); + TezJobMonitor.initShutdownHook(); session.start(); if (HiveConf.getBoolVar(conf, ConfVars.HIVE_PREWARM_ENABLED)) { From a6fa58edabe6ceb91af23cf32ebc26c27b9a89af Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sun, 9 Nov 2014 00:36:39 +0000 Subject: [PATCH 279/339] HIVE-8798: Some Oracle deadlocks not being caught in TxnHandler (Alan Gates via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637615 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/metastore/txn/TxnHandler.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java index 50f58d094f0c..04e65ea2cdf5 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java @@ -911,8 +911,9 @@ protected void detectDeadlock(Connection conn, // If you change this function, remove the @Ignore from TestTxnHandler.deadlockIsDetected() // to test these changes. // MySQL and MSSQL use 40001 as the state code for rollback. Postgres uses 40001 and 40P01. - // Oracle seems to return different SQLStates each time, but the message always contains - // "deadlock detected", so I've used that instead. + // Oracle seems to return different SQLStates and messages each time, + // so I've tried to capture the different error messages (there appear to be fewer different + // error messages than SQL states). // Derby and newer MySQL driver use the new SQLTransactionRollbackException if (dbProduct == null) { determineDatabaseProduct(conn); @@ -921,7 +922,8 @@ protected void detectDeadlock(Connection conn, ((dbProduct == DatabaseProduct.MYSQL || dbProduct == DatabaseProduct.POSTGRES || dbProduct == DatabaseProduct.SQLSERVER) && e.getSQLState().equals("40001")) || (dbProduct == DatabaseProduct.POSTGRES && e.getSQLState().equals("40P01")) || - (dbProduct == DatabaseProduct.ORACLE && (e.getMessage().contains("deadlock detected")))) { + (dbProduct == DatabaseProduct.ORACLE && (e.getMessage().contains("deadlock detected") + || e.getMessage().contains("can't serialize access for this transaction")))) { if (deadlockCnt++ < ALLOWED_REPEATED_DEADLOCKS) { LOG.warn("Deadlock detected in " + caller + ", trying again."); throw new DeadlockException(); From e5faff5305b391f9f0690ee9b134aab63be6c5c8 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sun, 9 Nov 2014 02:17:44 +0000 Subject: [PATCH 280/339] HIVE-8799: boatload of missing apache headers (Gunther Hagleitner, reviewed by Thejas M Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637619 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/accumulo/AccumuloHiveRow.java | 17 +++++++++++++++++ .../hive/accumulo/AccumuloStorageHandler.java | 17 +++++++++++++++++ .../hadoop/hive/accumulo/LazyAccumuloRow.java | 16 ++++++++++++++++ .../mr/HiveAccumuloTableInputFormat.java | 17 +++++++++++++++++ .../predicate/AccumuloPredicateHandler.java | 17 +++++++++++++++++ .../predicate/PrimitiveComparisonFilter.java | 17 +++++++++++++++++ .../accumulo/predicate/compare/CompareOp.java | 17 +++++++++++++++++ .../predicate/compare/DoubleCompare.java | 17 +++++++++++++++++ .../accumulo/predicate/compare/Equal.java | 17 +++++++++++++++++ .../predicate/compare/GreaterThan.java | 17 +++++++++++++++++ .../predicate/compare/GreaterThanOrEqual.java | 17 +++++++++++++++++ .../predicate/compare/IntCompare.java | 17 +++++++++++++++++ .../accumulo/predicate/compare/LessThan.java | 17 +++++++++++++++++ .../predicate/compare/LessThanOrEqual.java | 17 +++++++++++++++++ .../hive/accumulo/predicate/compare/Like.java | 17 +++++++++++++++++ .../predicate/compare/LongCompare.java | 17 +++++++++++++++++ .../accumulo/predicate/compare/NotEqual.java | 17 +++++++++++++++++ .../compare/PrimitiveComparison.java | 17 +++++++++++++++++ .../predicate/compare/StringCompare.java | 17 +++++++++++++++++ .../hive/accumulo/serde/AccumuloSerDe.java | 17 +++++++++++++++++ .../mr/TestHiveAccumuloTableInputFormat.java | 16 ++++++++++++++++ .../TestAccumuloPredicateHandler.java | 17 +++++++++++++++++ .../predicate/compare/TestDoubleCompare.java | 16 ++++++++++++++++ .../predicate/compare/TestIntCompare.java | 16 ++++++++++++++++ .../predicate/compare/TestLongComparison.java | 17 +++++++++++++++++ .../predicate/compare/TestStringCompare.java | 17 +++++++++++++++++ .../accumulo/serde/TestAccumuloSerDe.java | 17 +++++++++++++++++ .../common/util/Decimal128FastBuffer.java | 17 ++++++++++++++++- .../hive/hbase/TestHBaseKeyFactory3.java | 18 ++++++++++++++++++ .../hcatalog/api/MetadataJSONSerializer.java | 19 +++++++++++++++++++ .../hive/hcatalog/api/MetadataSerializer.java | 19 +++++++++++++++++++ .../spec/CompositePartitionSpecProxy.java | 18 ++++++++++++++++++ .../spec/PartitionListComposingSpecProxy.java | 18 ++++++++++++++++++ .../partition/spec/PartitionSpecProxy.java | 18 ++++++++++++++++++ .../spec/PartitionSpecWithSharedSDProxy.java | 18 ++++++++++++++++++ .../MockPartitionExpressionForMetastore.java | 18 ++++++++++++++++++ .../TestHiveMetaStorePartitionSpecs.java | 18 ++++++++++++++++++ pom.xml | 5 +++++ .../hadoop/hive/ql/exec/PTFTopNHash.java | 18 ++++++++++++++++++ .../MapJoinBytesTableContainer.java | 18 ++++++++++++++++++ .../ql/io/orc/TimestampColumnStatistics.java | 18 ++++++++++++++++++ .../ql/io/sarg/SearchArgumentFactory.java | 18 ++++++++++++++++++ .../hadoop/hive/ql/lib/ForwardWalker.java | 18 ++++++++++++++++++ .../metadata/SessionHiveMetaStoreClient.java | 18 ++++++++++++++++++ .../hive/ql/optimizer/MergeJoinProc.java | 18 ++++++++++++++++++ .../annotation/AnnotateWithOpTraits.java | 18 ++++++++++++++++++ .../hive/ql/optimizer/optiq/TraitsUtil.java | 18 ++++++++++++++++++ .../optiq/cost/HiveVolcanoPlanner.java | 18 ++++++++++++++++++ .../hadoop/hive/ql/plan/MergeJoinWork.java | 18 ++++++++++++++++++ .../hadoop/hive/ql/stats/StatsSetupConst.java | 0 .../hive/ql/exec/TestFileSinkOperator.java | 18 ++++++++++++++++++ .../primitive/TestParquetByteInspector.java | 18 ++++++++++++++++++ .../primitive/TestParquetShortInspector.java | 18 ++++++++++++++++++ .../udf/generic/TestGenericUDFOPNumeric.java | 18 ++++++++++++++++++ .../avro/AvroObjectInspectorException.java | 18 ++++++++++++++++++ .../hive/serde2/io/TestDateWritable.java | 18 ++++++++++++++++++ 56 files changed, 946 insertions(+), 1 deletion(-) delete mode 100644 ql/src/java/org/apache/hadoop/hive/ql/stats/StatsSetupConst.java diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/AccumuloHiveRow.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/AccumuloHiveRow.java index c6ee5c4ad119..144afe3c7a58 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/AccumuloHiveRow.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/AccumuloHiveRow.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo; import java.io.DataInput; diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/AccumuloStorageHandler.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/AccumuloStorageHandler.java index f7642ccfe493..64eb18b9f44b 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/AccumuloStorageHandler.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/AccumuloStorageHandler.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo; import java.io.IOException; diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/LazyAccumuloRow.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/LazyAccumuloRow.java index 03cd2501e897..3dc2d3cd1be5 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/LazyAccumuloRow.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/LazyAccumuloRow.java @@ -1,3 +1,19 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.apache.hadoop.hive.accumulo; import java.util.ArrayList; diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/mr/HiveAccumuloTableInputFormat.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/mr/HiveAccumuloTableInputFormat.java index 385b2f4e3381..08d396ea60a3 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/mr/HiveAccumuloTableInputFormat.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/mr/HiveAccumuloTableInputFormat.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.mr; import java.io.IOException; diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/AccumuloPredicateHandler.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/AccumuloPredicateHandler.java index 5edc9b5c7f26..534e77f78ecf 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/AccumuloPredicateHandler.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/AccumuloPredicateHandler.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate; import java.util.ArrayList; diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/PrimitiveComparisonFilter.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/PrimitiveComparisonFilter.java index c303d494f95c..ef459aa15e67 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/PrimitiveComparisonFilter.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/PrimitiveComparisonFilter.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate; import java.io.IOException; diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/CompareOp.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/CompareOp.java index 0585333a7450..59768e5aee02 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/CompareOp.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/CompareOp.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; /** diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/DoubleCompare.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/DoubleCompare.java index 210ad725d9c3..53fd6e34b034 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/DoubleCompare.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/DoubleCompare.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; import java.math.BigDecimal; diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/Equal.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/Equal.java index 3a34f12ebd94..54d987ae5d4c 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/Equal.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/Equal.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; /** diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/GreaterThan.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/GreaterThan.java index a47b2a33d9b9..f098114e5141 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/GreaterThan.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/GreaterThan.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; /** diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/GreaterThanOrEqual.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/GreaterThanOrEqual.java index c502a45334ad..1877da2f28a8 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/GreaterThanOrEqual.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/GreaterThanOrEqual.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; /** diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/IntCompare.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/IntCompare.java index d7de1ffd139b..826355bde5b3 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/IntCompare.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/IntCompare.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; import java.nio.ByteBuffer; diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LessThan.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LessThan.java index 2933131509a3..9e3c30ff808e 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LessThan.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LessThan.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; /** diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LessThanOrEqual.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LessThanOrEqual.java index 86acb730f354..d21b6bf7e35b 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LessThanOrEqual.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LessThanOrEqual.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; /** diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/Like.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/Like.java index 612641de8def..f34d3cc0a24e 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/Like.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/Like.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; /** diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LongCompare.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LongCompare.java index b32874f3cd6c..afd03d6238af 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LongCompare.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/LongCompare.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; import java.nio.ByteBuffer; diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/NotEqual.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/NotEqual.java index 22b84bab753e..e1bd7980c2ad 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/NotEqual.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/NotEqual.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; /** diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/PrimitiveComparison.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/PrimitiveComparison.java index 26e194f94e4f..b9a3e3e6d5ec 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/PrimitiveComparison.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/PrimitiveComparison.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; /** diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/StringCompare.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/StringCompare.java index b71b8a823583..0e038ad23f26 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/StringCompare.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/predicate/compare/StringCompare.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; import java.util.regex.Pattern; diff --git a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/serde/AccumuloSerDe.java b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/serde/AccumuloSerDe.java index 240521f2f577..66ab01e377cf 100644 --- a/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/serde/AccumuloSerDe.java +++ b/accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/serde/AccumuloSerDe.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.serde; import java.io.IOException; diff --git a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/mr/TestHiveAccumuloTableInputFormat.java b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/mr/TestHiveAccumuloTableInputFormat.java index e2ad8ef96542..e8beeb6858e2 100644 --- a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/mr/TestHiveAccumuloTableInputFormat.java +++ b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/mr/TestHiveAccumuloTableInputFormat.java @@ -1,3 +1,19 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.apache.hadoop.hive.accumulo.mr; import static org.junit.Assert.assertArrayEquals; diff --git a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/TestAccumuloPredicateHandler.java b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/TestAccumuloPredicateHandler.java index c0b14e1f94a9..97e14a2e5493 100644 --- a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/TestAccumuloPredicateHandler.java +++ b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/TestAccumuloPredicateHandler.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate; import static org.junit.Assert.assertArrayEquals; diff --git a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestDoubleCompare.java b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestDoubleCompare.java index a6049c83ef0c..ca989a9707af 100644 --- a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestDoubleCompare.java +++ b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestDoubleCompare.java @@ -1,3 +1,19 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.apache.hadoop.hive.accumulo.predicate.compare; import static org.junit.Assert.assertEquals; diff --git a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestIntCompare.java b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestIntCompare.java index 9847a1837ae0..9fb631549d1c 100644 --- a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestIntCompare.java +++ b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestIntCompare.java @@ -1,3 +1,19 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.apache.hadoop.hive.accumulo.predicate.compare; import static org.junit.Assert.assertEquals; diff --git a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestLongComparison.java b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestLongComparison.java index 2abd41b10aed..fe10c3f0b9dc 100644 --- a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestLongComparison.java +++ b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestLongComparison.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; import static org.junit.Assert.assertEquals; diff --git a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestStringCompare.java b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestStringCompare.java index 08716bc88931..7b1960f09044 100644 --- a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestStringCompare.java +++ b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/predicate/compare/TestStringCompare.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.predicate.compare; import static org.junit.Assert.assertFalse; diff --git a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/serde/TestAccumuloSerDe.java b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/serde/TestAccumuloSerDe.java index bf3acd092113..18b84e4d8966 100644 --- a/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/serde/TestAccumuloSerDe.java +++ b/accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/serde/TestAccumuloSerDe.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.accumulo.serde; import static org.junit.Assert.assertEquals; diff --git a/common/src/java/org/apache/hive/common/util/Decimal128FastBuffer.java b/common/src/java/org/apache/hive/common/util/Decimal128FastBuffer.java index aeca82f9eeb1..c0961fa6d07f 100644 --- a/common/src/java/org/apache/hive/common/util/Decimal128FastBuffer.java +++ b/common/src/java/org/apache/hive/common/util/Decimal128FastBuffer.java @@ -1,6 +1,21 @@ /** - * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ + package org.apache.hive.common.util; import java.nio.ByteBuffer; diff --git a/hbase-handler/src/test/org/apache/hadoop/hive/hbase/TestHBaseKeyFactory3.java b/hbase-handler/src/test/org/apache/hadoop/hive/hbase/TestHBaseKeyFactory3.java index dfcbaf52026f..27847674af1a 100644 --- a/hbase-handler/src/test/org/apache/hadoop/hive/hbase/TestHBaseKeyFactory3.java +++ b/hbase-handler/src/test/org/apache/hadoop/hive/hbase/TestHBaseKeyFactory3.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.hbase; import java.io.IOException; diff --git a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataJSONSerializer.java b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataJSONSerializer.java index d98cea5e0a9a..3bcfca868a71 100644 --- a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataJSONSerializer.java +++ b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataJSONSerializer.java @@ -1,3 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + package org.apache.hive.hcatalog.api; import org.apache.hadoop.hive.common.classification.InterfaceAudience; diff --git a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataSerializer.java b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataSerializer.java index 2ecf503cd487..2d499813fe82 100644 --- a/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataSerializer.java +++ b/hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/MetadataSerializer.java @@ -1,3 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + package org.apache.hive.hcatalog.api; import org.apache.hadoop.hive.common.classification.InterfaceAudience; diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/CompositePartitionSpecProxy.java b/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/CompositePartitionSpecProxy.java index 7e08cd9e5f57..6a1b315092b5 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/CompositePartitionSpecProxy.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/CompositePartitionSpecProxy.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.metastore.partition.spec; import org.apache.commons.logging.Log; diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionListComposingSpecProxy.java b/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionListComposingSpecProxy.java index 9bdb142ec81e..154011ebf5a9 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionListComposingSpecProxy.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionListComposingSpecProxy.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.metastore.partition.spec; import org.apache.hadoop.hive.metastore.api.MetaException; diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionSpecProxy.java b/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionSpecProxy.java index 12f9e1db99e7..fdb086749be9 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionSpecProxy.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionSpecProxy.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.metastore.partition.spec; import org.apache.hadoop.hive.metastore.api.MetaException; diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionSpecWithSharedSDProxy.java b/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionSpecWithSharedSDProxy.java index e1960ed3693f..6a3e147eea5a 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionSpecWithSharedSDProxy.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/partition/spec/PartitionSpecWithSharedSDProxy.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.metastore.partition.spec; import org.apache.hadoop.hive.metastore.api.MetaException; diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/MockPartitionExpressionForMetastore.java b/metastore/src/test/org/apache/hadoop/hive/metastore/MockPartitionExpressionForMetastore.java index ecbc8c8048d9..cdc192778b54 100644 --- a/metastore/src/test/org/apache/hadoop/hive/metastore/MockPartitionExpressionForMetastore.java +++ b/metastore/src/test/org/apache/hadoop/hive/metastore/MockPartitionExpressionForMetastore.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.metastore; import org.apache.hadoop.hive.metastore.api.MetaException; diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStorePartitionSpecs.java b/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStorePartitionSpecs.java index 17a57f08c78a..e48f55c2806c 100644 --- a/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStorePartitionSpecs.java +++ b/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStorePartitionSpecs.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.metastore; import org.apache.hadoop.hive.conf.HiveConf; diff --git a/pom.xml b/pom.xml index 8b099400d02e..adf54bbe87ad 100644 --- a/pom.xml +++ b/pom.xml @@ -866,6 +866,11 @@ **/gen-java/** **/testdata/** **/ptest2/*.md + **/test/org/apache/hadoop/hive/hbase/avro/** + **/avro_test.avpr + **/xmlReport.pl + **/*.html + **/sit diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFTopNHash.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFTopNHash.java index de7d71b4e048..f93b42020a9d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFTopNHash.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFTopNHash.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.exec; import java.io.IOException; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinBytesTableContainer.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinBytesTableContainer.java index e84e65e8db61..bd5f3ac1b4d8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinBytesTableContainer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinBytesTableContainer.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.exec.persistence; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/TimestampColumnStatistics.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/TimestampColumnStatistics.java index 9073f4fd0481..ef42f5064c35 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/TimestampColumnStatistics.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/TimestampColumnStatistics.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.io.orc; import java.sql.Timestamp; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentFactory.java index 8ffd1a12b8f9..f4a2e6529426 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentFactory.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.io.sarg; import org.apache.hadoop.hive.ql.io.sarg.SearchArgument; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/lib/ForwardWalker.java b/ql/src/java/org/apache/hadoop/hive/ql/lib/ForwardWalker.java index aac31fa7034e..9d2090d4756f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/lib/ForwardWalker.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/lib/ForwardWalker.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.lib; import org.apache.hadoop.hive.ql.exec.Operator; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java index ecd376d9474b..f1f723c939b4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.metadata; import java.io.IOException; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java index e6444813ec87..5b16e5bcc8b6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MergeJoinProc.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.optimizer; import java.util.Stack; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/metainfo/annotation/AnnotateWithOpTraits.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/metainfo/annotation/AnnotateWithOpTraits.java index da91d38b5382..c304e97aebfb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/metainfo/annotation/AnnotateWithOpTraits.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/metainfo/annotation/AnnotateWithOpTraits.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.optimizer.metainfo.annotation; import java.util.ArrayList; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/TraitsUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/TraitsUtil.java index 9b653d399b3d..4b44a28ca775 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/TraitsUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/TraitsUtil.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.optimizer.optiq; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/cost/HiveVolcanoPlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/cost/HiveVolcanoPlanner.java index 15596bc3f374..5deb801649f4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/cost/HiveVolcanoPlanner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/cost/HiveVolcanoPlanner.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.optimizer.optiq.cost; import org.eigenbase.rel.RelCollationTraitDef; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/MergeJoinWork.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/MergeJoinWork.java index 9e72ccc56066..3dbdba603f38 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/MergeJoinWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/MergeJoinWork.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.plan; import java.util.ArrayList; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsSetupConst.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsSetupConst.java deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFileSinkOperator.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFileSinkOperator.java index 3fb770f238f1..7bb27421082e 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFileSinkOperator.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestFileSinkOperator.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.exec; import org.apache.commons.logging.Log; diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/primitive/TestParquetByteInspector.java b/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/primitive/TestParquetByteInspector.java index f1ffca6f937f..7d1b9a5d494e 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/primitive/TestParquetByteInspector.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/primitive/TestParquetByteInspector.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.io.parquet.serde.primitive; import static org.junit.Assert.assertEquals; diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/primitive/TestParquetShortInspector.java b/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/primitive/TestParquetShortInspector.java index 6538d35799b0..f5803f2e9b57 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/primitive/TestParquetShortInspector.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/serde/primitive/TestParquetShortInspector.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.io.parquet.serde.primitive; import static org.junit.Assert.assertEquals; diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFOPNumeric.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFOPNumeric.java index 75f2b3a1fc1b..9a56ac18b498 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFOPNumeric.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFOPNumeric.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.ql.udf.generic; import org.apache.hadoop.hive.conf.HiveConf; diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroObjectInspectorException.java b/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroObjectInspectorException.java index fe4b2eb6939b..1953c0435e84 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroObjectInspectorException.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroObjectInspectorException.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.serde2.avro; /** diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java index 8b5bfbd2c604..fd95ccf46722 100644 --- a/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java +++ b/serde/src/test/org/apache/hadoop/hive/serde2/io/TestDateWritable.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.hadoop.hive.serde2.io; import com.google.code.tempusfugit.concurrency.annotations.*; From eb39bb0c9e3819888a4a003fcb63831da0f2eb71 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sun, 9 Nov 2014 02:49:00 +0000 Subject: [PATCH 281/339] HIVE-8800: Update release notes and notice for hive .14 (Gunther Hagleitner, reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637622 13f79535-47bb-0310-9956-ffa450edef68 --- NOTICE | 4 +- RELEASE_NOTES.txt | 1117 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1119 insertions(+), 2 deletions(-) diff --git a/NOTICE b/NOTICE index 636472e061a4..5d08ed7f301a 100644 --- a/NOTICE +++ b/NOTICE @@ -1,9 +1,9 @@ Apache Hive -Copyright 2008-2013 The Apache Software Foundation +Copyright 2008-2014 The Apache Software Foundation This product includes software developed by The Apache Software Foundation (http://www.apache.org/). This product includes Jersey (https://jersey.java.net/) -Copyright (c) 2010-2013 Oracle and/or its affiliates. +Copyright (c) 2010-2014 Oracle and/or its affiliates. diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index e8c072888daf..ec6598df6c85 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -1,3 +1,1120 @@ +Release Notes - Hive - Version 0.14.0 + +** Sub-task + * [HIVE-4629] - HS2 should support an API to retrieve query logs + * [HIVE-5176] - Wincompat : Changes for allowing various path compatibilities with Windows + * [HIVE-5179] - Wincompat : change script tests from bash to sh + * [HIVE-5579] - Update statistics rules for different types of joins + * [HIVE-5760] - Add vectorized support for CHAR/VARCHAR data types + * [HIVE-5804] - Support column statistics for expressions in GBY attributes, JOIN condition etc. when annotating operator tree with statistics + * [HIVE-5805] - Support for operators like PTF, Script, Extract etc. in statistics annotation. + * [HIVE-5868] - Add statistics rule for Union operator + * [HIVE-5949] - In statistics annotation add flag to say if statistics is estimated or accurate + * [HIVE-5998] - Add vectorized reader for Parquet files + * [HIVE-6031] - explain subquery rewrite for where clause predicates + * [HIVE-6123] - Implement checkstyle in maven + * [HIVE-6252] - sql std auth - support 'with admin option' in revoke role metastore api + * [HIVE-6290] - Add support for hbase filters for composite keys + * [HIVE-6367] - Implement Decimal in ParquetSerde + * [HIVE-6394] - Implement Timestmap in ParquetSerde + * [HIVE-6445] - Add qop support for kerberos over http in HiveServer2 + * [HIVE-6626] - Hive does not expand the DOWNLOADED_RESOURCES_DIR path + * [HIVE-6627] - HiveServer2 should handle scratch dir permissions / errors in a better way + * [HIVE-6714] - Fix getMapSize() of LazyMap + * [HIVE-6735] - Make scalable dynamic partitioning work in vectorized mode + * [HIVE-6760] - Scalable dynamic partitioning should bail out properly for list bucketing + * [HIVE-6761] - Hashcode computation does not use maximum parallelism for scalable dynamic partitioning + * [HIVE-6798] - Update column stats based on filter expression in stats annotation + * [HIVE-6815] - Version of the HIVE-6374 for Hive 0.13 + * [HIVE-6982] - Export all .sh equivalent for windows (.cmd files) in bin, bin/ext + * [HIVE-6993] - Update hive for Tez VertexLocationHint and getAVailableResource API changes + * [HIVE-7029] - Vectorize ReduceWork + * [HIVE-7078] - Need file sink operators that work with ACID + * [HIVE-7094] - Separate out static/dynamic partitioning code in FileRecordWriterContainer + * [HIVE-7156] - Group-By operator stat-annotation only uses distinct approx to generate rollups + * [HIVE-7184] - TestHadoop20SAuthBridge no longer compiles after HADOOP-10448 + * [HIVE-7204] - Use NULL vertex location hint for Prewarm DAG vertices + * [HIVE-7262] - Partitioned Table Function (PTF) query fails on ORC table when attempting to vectorize + * [HIVE-7286] - Parameterize HCatMapReduceTest for testing against all Hive storage formats + * [HIVE-7291] - Refactor TestParser to understand test-property file + * [HIVE-7350] - Changes related to TEZ-692, TEZ-1169, TEZ-1234 + * [HIVE-7357] - Add vectorized support for BINARY data type + * [HIVE-7398] - Parent GBY of MUX is removed even it's not for semijoin + * [HIVE-7404] - Revoke privilege should support revoking of grant option + * [HIVE-7405] - Vectorize GROUP BY on the Reduce-Side (Part 1 – Basic) + * [HIVE-7420] - Parameterize tests for HCatalog Pig interfaces for testing against all storage formats + * [HIVE-7427] - Changes for EdgeConfigurations + * [HIVE-7457] - Minor HCatalog Pig Adapter test clean up + * [HIVE-7491] - Stats annotation fails to evaluate constant expressions in filter operator + * [HIVE-7513] - Add ROW__ID VirtualColumn + * [HIVE-7535] - Make use of number of nulls column statistics in filter rule + * [HIVE-7536] - Make use of decimal column statistics in statistics annotation + * [HIVE-7544] - Changes related to TEZ-1288 (FastTezSerialization) + * [HIVE-7548] - Precondition checks should not fail the merge task in case of automatic trigger + * [HIVE-7571] - RecordUpdater should read virtual columns from row + * [HIVE-7589] - Some fixes and improvements to statistics annotation rules + * [HIVE-7601] - Bring up tez-branch upto the API changes from TEZ-1058, TEZ-1303, TEZ-1346, TEZ-1041 + * [HIVE-7639] - Bring tez-branch upto api changes in TEZ-1379, TEZ-1057, TEZ-1382 + * [HIVE-7646] - Modify parser to support new grammar for Insert,Update,Delete + * [HIVE-7655] - CBO: Reading of partitioned table stats slows down explain + * [HIVE-7656] - Bring tez-branch up-to the API changes made by TEZ-1372 + * [HIVE-7663] - OrcRecordUpdater needs to implement getStats + * [HIVE-7679] - JOIN operator should update the column stats when number of rows changes + * [HIVE-7734] - Join stats annotation rule is not updating columns statistics correctly + * [HIVE-7735] - Implement Char, Varchar in ParquetSerDe + * [HIVE-7788] - Generate plans for insert, update, and delete + * [HIVE-7790] - Update privileges to check for update and delete + * [HIVE-7808] - Changes to work against Tez-0.5 RC + * [HIVE-7809] - Fix ObjectRegistry to work with Tez 0.5 + * [HIVE-7820] - union_null.q is not deterministic + * [HIVE-7825] - Bring tez-branch up-to the API changes made by TEZ-1472, TEZ-1469 + * [HIVE-7836] - Ease-out denominator for multi-attribute join case in statistics annotation + * [HIVE-7864] - [CBO] Query fails if it refers only partitioning column + * [HIVE-7869] - Build long running HS2 test framework + * [HIVE-7904] - Missing null check cause NPE when updating join column stats in statistics annotation + * [HIVE-7905] - CBO: more cost model changes + * [HIVE-7907] - Bring up tez branch to changes in TEZ-1038, TEZ-1500 + * [HIVE-7935] - Support dynamic service discovery for HiveServer2 + * [HIVE-7979] - Fix testconfiguration.property file in Tez branch + * [HIVE-7990] - With fetch column stats disabled number of elements in grouping set is not taken into account + * [HIVE-7991] - Incorrect calculation of number of rows in JoinStatsRule.process results in overflow + * [HIVE-7992] - StatsRulesProcFactory should gracefully handle overflows + * [HIVE-7994] - BMJ test fails on tez + * [HIVE-7995] - Column statistics from expression does not handle fields within complex types + * [HIVE-8006] - CBO Trunk Merge: Test fail that includes Table Sample, rows(), query hints + * [HIVE-8016] - CBO: PPD to honor hive Join Cond, Casting fixes, Add annotations for IF, Code cleanup + * [HIVE-8021] - CBO: support CTAS and insert ... select + * [HIVE-8046] - CBO: fix issues with Windowing queries + * [HIVE-8069] - CBO: RowResolver after SubQuery predicate handling should be reset to outer query block RR + * [HIVE-8111] - CBO trunk merge: duplicated casts for arithmetic expressions in Hive and CBO + * [HIVE-8125] - CBO Trunk Merge: On Failure Fall Back to Non CBO + * [HIVE-8144] - CBO: HiveProjectRel factory should create RelSubSets + * [HIVE-8145] - CBO: bail from Optiq planning if a Select list contains multiple references to the same name + * [HIVE-8159] - CBO: bail from Optiq planning if a Select list contains multiple references to the same name + * [HIVE-8168] - With dynamic partition enabled fact table selectivity is not taken into account when generating the physical plan (Use CBO cardinality using physical plan generation) + * [HIVE-8172] - HiveServer2 dynamic service discovery should let the JDBC client use default ZooKeeper namespace + * [HIVE-8173] - HiveServer2 dynamic service discovery: figure out best ZooKeeper ACLs for security + * [HIVE-8186] - Self join may fail if one side have virtual column(s) and other doesn't + * [HIVE-8193] - Hook HiveServer2 dynamic service discovery with session time out + * [HIVE-8194] - CBO: bail for having clause referring select expr aliases + * [HIVE-8199] - CBO Trunk Merge: quote2 test fails due to incorrect literal translation + * [HIVE-8223] - CBO Trunk Merge: partition_wise_fileformat2 select result depends on ordering + * [HIVE-8228] - CBO: fix couple of issues with partition pruning + * [HIVE-8237] - CBO: Use Fully qualified table name (db.tablename in ReloptHiveTable) + * [HIVE-8288] - HiveServer2 dynamic discovery should create znodes organized by version number & add support for removing server uri's of a particular version from the server script. + * [HIVE-8309] - CBO: Fix OB by removing constraining DT, Use external names for col Aliases, Remove unnecessary Selects, Make DT Name counter query specific + * [HIVE-8377] - Enable Kerberized SSL for HiveServer2 in http mode + * [HIVE-8454] - Select Operator does not rename column stats properly in case of select star + * [HIVE-8522] - CBO: Update Calcite Version to 0.9.2-incubating-SNAPSHOT + * [HIVE-8530] - CBO: Preserve types of literals + * [HIVE-8549] - NPE in PK-FK inference when one side of join is complex tree + * [HIVE-8580] - Support LateralViewJoinOperator and LateralViewForwardOperator in stats annotation + * [HIVE-8582] - CBO: Outer Join Simplification is broken + * [HIVE-8653] - CBO: Push Semi Join through, Project/Filter/Join + * [HIVE-8654] - CBO: parquet_ctas test returns incorrect results + * [HIVE-8655] - CBO: ppr_pushdown, udf_substr produces incorrect results due to broken tablesample handling + * [HIVE-8656] - CBO: auto_join_filters fails + * [HIVE-8657] - CBO: inputddl5, udf_reverse tests fail + * [HIVE-8662] - CBO: tez_dml fails + * [HIVE-8768] - CBO: Fix filter selectivity for "in clause" & "<>" + + + +** Bug + * [HIVE-1363] - 'SHOW TABLE EXTENDED LIKE' command does not strip single/double quotes + * [HIVE-1608] - use sequencefile as the default for storing intermediate results + * [HIVE-1879] - Remove hive.metastore.metadb.dir property from hive-default.xml and HiveConf + * [HIVE-2137] - JDBC driver doesn't encode string properly. + * [HIVE-2390] - Add UNIONTYPE serialization support to LazyBinarySerDe + * [HIVE-2597] - Repeated key in GROUP BY is erroneously displayed when using DISTINCT + * [HIVE-3392] - Hive unnecessarily validates table SerDes when dropping a table + * [HIVE-3685] - TestCliDriver (script_pipe.q) failed with IBM JDK + * [HIVE-3925] - dependencies of fetch task are not shown by explain + * [HIVE-4064] - Handle db qualified names consistently across all HiveQL statements + * [HIVE-4118] - ANALYZE TABLE ... COMPUTE STATISTICS FOR COLUMNS fails when using fully qualified table name + * [HIVE-4274] - Table created using HCatalog java client doesn't set the owner + * [HIVE-4561] - Column stats : LOW_VALUE (or HIGH_VALUE) will always be 0.0000 ,if all the column values larger than 0.0 (or if all column values smaller than 0.0) + * [HIVE-4576] - templeton.hive.properties does not allow values with commas + * [HIVE-4577] - hive CLI can't handle hadoop dfs command with space and quotes. + * [HIVE-4723] - DDLSemanticAnalyzer.addTablePartsOutputs eats several exceptions + * [HIVE-4795] - Delete/Alter/Describe actions fail when SerDe is not on class path + * [HIVE-4965] - Add support so that PTFs can stream their output; Windowing PTF should do this + * [HIVE-5077] - Provide an option to run local task in process + * [HIVE-5092] - Fix hiveserver2 mapreduce local job on Windows + * [HIVE-5150] - UnsatisfiedLinkError when running hive unit tests on Windows + * [HIVE-5268] - HiveServer2 accumulates orphaned OperationHandle objects when a client fails while executing query + * [HIVE-5315] - Cannot attach debugger to Hiveserver2 + * [HIVE-5336] - HCatSchema.remove(HCatFieldSchema hcatFieldSchema) should renumber the fieldPositionMap and the fieldPositionMap should not be cached by the end user + * [HIVE-5376] - Hive does not honor type for partition columns when altering column type + * [HIVE-5434] - Creating a new HiveConnection does not handle the case when properties are supplied separately from connection string + * [HIVE-5456] - Queries fail on avro backed table with empty partition + * [HIVE-5607] - Hive fails to parse the "%" (mod) sign after brackets. + * [HIVE-5631] - Index creation on a skew table fails + * [HIVE-5664] - Drop cascade database fails when the db has any tables with indexes + * [HIVE-5677] - Beeline warns about unavailable files if HIVE_OPTS is set + * [HIVE-5789] - WebHCat E2E tests do not launch on Windows + * [HIVE-5847] - DatabaseMetadata.getColumns() doesn't show correct column size for char/varchar/decimal + * [HIVE-5870] - Move TestJDBCDriver2.testNewConnectionConfiguration to TestJDBCWithMiniHS2 + * [HIVE-6035] - Windows: percentComplete returned by job status from WebHCat is null + * [HIVE-6093] - table creation should fail when user does not have permissions on db + * [HIVE-6149] - TestJdbcDriver2 is unable to drop a database created from previous runs ("hbasedb") + * [HIVE-6176] - Beeline gives bogus error message if an unaccepted command line option is given + * [HIVE-6187] - Add test to verify that DESCRIBE TABLE works with quoted table names + * [HIVE-6195] - Create unit tests to exercise behaviour when creating a HBase Table in Hive + * [HIVE-6200] - Hive custom SerDe cannot load DLL added by "ADD FILE" command + * [HIVE-6245] - HS2 creates DBs/Tables with wrong ownership when HMS setugi is true + * [HIVE-6305] - test use of quoted identifiers in user/role names + * [HIVE-6313] - Minimr tests in hadoop-1 hangs on shutdown + * [HIVE-6321] - hiveserver2 --help says Unrecognized option: -h + * [HIVE-6322] - Fix file_with_header_footer_negative.q + * [HIVE-6331] - HIVE-5279 deprecated UDAF class without explanation/documentation/alternative + * [HIVE-6374] - Hive job submitted with non-default name node (fs.default.name) doesn't process locations properly + * [HIVE-6437] - DefaultHiveAuthorizationProvider should not initialize a new HiveConf + * [HIVE-6446] - Ability to specify hadoop.bin.path from command line -D + * [HIVE-6447] - Bucket map joins in hive-tez + * [HIVE-6480] - Metastore server startup script ignores ENV settings + * [HIVE-6487] - PTest2 do not copy failed source directories + * [HIVE-6508] - Mismatched results between vector and non-vector mode with decimal field + * [HIVE-6511] - casting from decimal to tinyint,smallint, int and bigint generates different result when vectorization is on + * [HIVE-6515] - Custom vertex in hive-tez should be able to accept multiple MR-inputs + * [HIVE-6521] - WebHCat cannot fetch correct percentComplete for Hive jobs + * [HIVE-6531] - Runtime errors in vectorized execution. + * [HIVE-6538] - yet another annoying exception in test logs + * [HIVE-6549] - remove templeton.jar from webhcat-default.xml, remove hcatalog/bin/hive-config.sh + * [HIVE-6550] - SemanticAnalyzer.reset() doesn't clear all the state + * [HIVE-6555] - TestSchemaTool is failing on trunk after branching + * [HIVE-6560] - varchar and char types cannot be cast to binary + * [HIVE-6563] - hdfs jar being pulled in when creating a hadoop-2 based hive tar ball + * [HIVE-6564] - WebHCat E2E tests that launch MR jobs fail on check job completion timeout + * [HIVE-6569] - HCatalog still has references to deprecated property hive.metastore.local + * [HIVE-6570] - Hive variable substitution does not work with the "source" command + * [HIVE-6571] - query id should be available for logging during query compilation + * [HIVE-6583] - wrong sql comments : ----... instead of -- ---... + * [HIVE-6586] - Update parameters in HiveConf.java after commit HIVE-6037 + * [HIVE-6592] - WebHCat E2E test abort when pointing to https url of webhdfs + * [HIVE-6594] - UnsignedInt128 addition does not increase internal int array count resulting in corrupted values during serialization + * [HIVE-6597] - WebHCat E2E tests doAsTests_6 and doAsTests_7 need to be updated + * [HIVE-6598] - Importing the project into eclipse as maven project have some issues + * [HIVE-6601] - alter database commands should support schema synonym keyword + * [HIVE-6602] - Multi-user HiveServer2 throws error + * [HIVE-6612] - Misspelling "schemaTool completeted" + * [HIVE-6620] - UDF printf doesn't take either CHAR or VARCHAR as the first argument + * [HIVE-6622] - UDF translate doesn't take either CHAR or VARCHAR as any of its arguments + * [HIVE-6637] - UDF in_file() doesn't take CHAR or VARCHAR as input + * [HIVE-6648] - Permissions are not inherited correctly when tables have multiple partition columns + * [HIVE-6652] - Beeline gives evasive error message for any unrecognized command line arguement + * [HIVE-6669] - sourcing txn-script from schema script results in failure for mysql & oracle + * [HIVE-6683] - Beeline does not accept comments at end of line + * [HIVE-6684] - Beeline does not accept comments that are preceded by spaces + * [HIVE-6695] - bin/hcat should include hbase jar and dependencies in the classpath [followup/clone of HCATALOG-621] + * [HIVE-6698] - hcat.py script does not correctly load the hbase storage handler jars + * [HIVE-6707] - Lazy maps are broken (LazyMap and LazyBinaryMap) + * [HIVE-6709] - HiveServer2 help command is not recognizing properly. + * [HIVE-6711] - ORC maps uses getMapSize() from MapOI which is unreliable + * [HIVE-6715] - Hive JDBC should include username into open session request for non-sasl connection + * [HIVE-6724] - HCatStorer throws ClassCastException while storing tinyint/smallint data + * [HIVE-6726] - Hcat cli does not close SessionState + * [HIVE-6727] - Table level stats for external tables are set incorrectly + * [HIVE-6741] - HiveServer2 startup fails in secure (kerberos) mode due to backward incompatible hadoop change + * [HIVE-6745] - HCat MultiOutputFormat hardcodes DistributedCache keynames + * [HIVE-6756] - alter table set fileformat should set serde too + * [HIVE-6768] - remove hcatalog/webhcat/svr/src/main/config/override-container-log4j.properties + * [HIVE-6773] - Update readme for ptest2 framework + * [HIVE-6782] - HiveServer2Concurrency issue when running with tez intermittently, throwing "org.apache.tez.dag.api.SessionNotRunning: Application not running" error + * [HIVE-6783] - Incompatible schema for maps between parquet-hive and parquet-pig + * [HIVE-6784] - parquet-hive should allow column type change + * [HIVE-6785] - query fails when partitioned table's table level serde is ParquetHiveSerDe and partition level serde is of different SerDe + * [HIVE-6788] - Abandoned opened transactions not being timed out + * [HIVE-6792] - hive.warehouse.subdir.inherit.perms doesn't work correctly in CTAS + * [HIVE-6793] - DDLSemanticAnalyzer.analyzeShowRoles() should use HiveAuthorizationTaskFactory + * [HIVE-6807] - add HCatStorer ORC test to test missing columns + * [HIVE-6811] - LOAD command does not work with relative paths on Windows + * [HIVE-6817] - Some hadoop2-only tests need diffs to be updated + * [HIVE-6820] - HiveServer(2) ignores HIVE_OPTS + * [HIVE-6822] - TestAvroSerdeUtils fails with -Phadoop-2 + * [HIVE-6824] - Hive HBase query fails on Tez due to missing jars - part 2 + * [HIVE-6826] - Hive-tez has issues when different partitions work off of different input types + * [HIVE-6828] - Hive tez bucket map join conversion interferes with map join conversion + * [HIVE-6835] - Reading of partitioned Avro data fails if partition schema does not match table schema + * [HIVE-6843] - INSTR for UTF-8 returns incorrect position + * [HIVE-6847] - Improve / fix bugs in Hive scratch dir setup + * [HIVE-6853] - show create table for hbase tables should exclude LOCATION + * [HIVE-6858] - Unit tests decimal_udf.q, vectorization_div0.q fail with jdk-7. + * [HIVE-6861] - more hadoop2 only golden files to fix + * [HIVE-6862] - add DB schema DDL and upgrade 12to13 scripts for MS SQL Server + * [HIVE-6868] - Create table in HCatalog sets different SerDe defaults than what is set through the CLI + * [HIVE-6870] - Fix maven.repo.local setting in Hive build + * [HIVE-6871] - Build fixes to allow Windows to run TestCliDriver + * [HIVE-6877] - TestOrcRawRecordMerger is deleting test.tmp.dir + * [HIVE-6880] - TestHWISessionManager fails with -Phadoop-2 + * [HIVE-6883] - Dynamic partitioning optimization does not honor sort order or order by + * [HIVE-6884] - HiveLockObject and enclosed HiveLockObjectData override equal() method but didn't do so for hashcode() + * [HIVE-6888] - Hive leaks MapWork objects via Utilities::gWorkMap + * [HIVE-6890] - Bug in HiveStreaming API causes problems if hive-site.xml is missing on streaming client side + * [HIVE-6891] - Alter rename partition Perm inheritance and general partition/table group inheritance + * [HIVE-6893] - out of sequence error in HiveMetastore server + * [HIVE-6898] - Functions in hive are failing with java.lang.ClassNotFoundException on Tez + * [HIVE-6900] - HostUtil.getTaskLogUrl signature change causes compilation to fail + * [HIVE-6901] - Explain plan doesn't show operator tree for the fetch operator + * [HIVE-6908] - TestThriftBinaryCLIService.testExecuteStatementAsync has intermittent failures + * [HIVE-6910] - Invalid column access info for partitioned table + * [HIVE-6913] - Hive unable to find the hashtable file during complex multi-staged map join + * [HIVE-6915] - Hive Hbase queries fail on secure Tez cluster + * [HIVE-6916] - Export/import inherit permissions from parent directory + * [HIVE-6919] - hive sql std auth select query fails on partitioned tables + * [HIVE-6921] - index creation fails with sql std auth turned on + * [HIVE-6922] - NullPointerException in collect_set() UDAF + * [HIVE-6927] - Add support for MSSQL in schematool + * [HIVE-6928] - Beeline should not chop off "describe extended" results by default + * [HIVE-6931] - Windows unit test fixes + * [HIVE-6932] - hive README needs update + * [HIVE-6934] - PartitionPruner doesn't handle top level constant expression correctly + * [HIVE-6936] - Provide table properties to InputFormats + * [HIVE-6937] - Fix test reporting url's after jenkins move from bigtop + * [HIVE-6939] - TestExecDriver.testMapRedPlan3 fails on hadoop-2 + * [HIVE-6944] - WebHCat e2e tests broken by HIVE-6432 + * [HIVE-6945] - issues with dropping partitions on Oracle + * [HIVE-6946] - Make it easier to run WebHCat e2e tests + * [HIVE-6947] - More fixes for tests on hadoop-2 + * [HIVE-6952] - Hive 0.13 HiveOutputFormat breaks backwards compatibility + * [HIVE-6954] - After ALTER FILEFORMAT, DESCRIBE throwing exception + * [HIVE-6955] - ExprNodeColDesc isSame doesn't account for tabAlias: this affects trait Propagation in Joins + * [HIVE-6956] - Duplicate partitioning column for union when dynamic partition sort optimization is enabled + * [HIVE-6957] - SQL authorization does not work with HS2 binary mode and Kerberos auth + * [HIVE-6959] - Enable Constant propagation optimizer for Hive Vectorization + * [HIVE-6960] - Set Hive pom to use Hadoop-2.4 + * [HIVE-6961] - Drop partitions treats partition columns as strings + * [HIVE-6965] - Transaction manager should use RDBMS time instead of machine time + * [HIVE-6966] - More fixes for TestCliDriver on Windows + * [HIVE-6967] - Hive transaction manager fails when SQLServer is used as an RDBMS + * [HIVE-6968] - list bucketing feature does not update the location map for unpartitioned tables + * [HIVE-6972] - jdbc HTTP configuration options should be part of sessionConf part of connection string + * [HIVE-6976] - Show query id only when there's jobs on the cluster + * [HIVE-6978] - beeline always exits with 0 status, should exit with non-zero status on error + * [HIVE-6979] - Hadoop-2 test failures related to quick stats not being populated correctly + * [HIVE-6984] - Analyzing partitioned table with NULL values for the partition column failed with NPE + * [HIVE-6985] - sql std auth - privileges grants to public role not being honored + * [HIVE-6986] - MatchPath fails with small resultExprString + * [HIVE-6987] - Metastore qop settings won't work with Hadoop-2.4 + * [HIVE-6989] - Error with arithmetic operators with javaXML serialization + * [HIVE-6990] - Direct SQL fails when the explicit schema setting is different from the default one + * [HIVE-6994] - parquet-hive createArray strips null elements + * [HIVE-6995] - GenericUDFBridge should log exception when it is unable to instantiate UDF object + * [HIVE-6996] - FS based stats broken with indexed tables + * [HIVE-7001] - fs.permissions.umask-mode is getting unset when Session is started + * [HIVE-7003] - Fix typo in README + * [HIVE-7004] - Fix more unit test failures on hadoop-2 + * [HIVE-7005] - MiniTez tests have non-deterministic explain plans + * [HIVE-7006] - Fix ql_rewrite_gbtoidx.q output file + * [HIVE-7009] - HIVE_USER_INSTALL_DIR could not bet set to non-HDFS filesystem + * [HIVE-7011] - HiveInputFormat's split generation isn't thread safe + * [HIVE-7012] - Wrong RS de-duplication in the ReduceSinkDeDuplication Optimizer + * [HIVE-7015] - Failing to inherit group/permission should not fail the operation + * [HIVE-7016] - Hive returns wrong results when execute UDF on top of DISTINCT column + * [HIVE-7017] - Insertion into Parquet tables fails under Tez + * [HIVE-7021] - HiveServer2 memory leak on failed queries + * [HIVE-7023] - Bucket mapjoin is broken when the number of small aliases is two or more + * [HIVE-7027] - Hive job fails when referencing a view that explodes an array + * [HIVE-7030] - Remove hive.hadoop.classpath from hiveserver2.cmd + * [HIVE-7031] - Utiltites.createEmptyFile uses File.Separator instead of Path.Separator to create an empty file in HDFS + * [HIVE-7033] - grant statements should check if the role exists + * [HIVE-7035] - Templeton returns 500 for user errors - when job cannot be found + * [HIVE-7037] - Add additional tests for transform clauses with Tez + * [HIVE-7041] - DoubleWritable/ByteWritable should extend their hadoop counterparts + * [HIVE-7042] - Fix stats_partscan_1_23.q and orc_createas1.q for hadoop-2 + * [HIVE-7043] - When using the tez session pool via hive, once sessions time out, all queries go to the default queue + * [HIVE-7045] - Wrong results in multi-table insert aggregating without group by clause + * [HIVE-7050] - Display table level column stats in DESCRIBE FORMATTED TABLE + * [HIVE-7051] - Display partition level column stats in DESCRIBE FORMATTED PARTITION + * [HIVE-7052] - Optimize split calculation time + * [HIVE-7053] - Unable to fetch column stats from decimal columns + * [HIVE-7055] - config not propagating for PTFOperator + * [HIVE-7057] - webhcat e2e deployment scripts don't have x bit set + * [HIVE-7060] - Column stats give incorrect min and distinct_count + * [HIVE-7061] - sql std auth - insert queries without overwrite should not require delete privileges + * [HIVE-7062] - Support Streaming mode in Windowing + * [HIVE-7063] - Optimize for the Top N within a Group use case + * [HIVE-7065] - Hive jobs in webhcat run in default mr mode even in Hive on Tez setup + * [HIVE-7066] - hive-exec jar is missing avro core + * [HIVE-7067] - Min() and Max() on Timestamp and Date columns for ORC returns wrong results + * [HIVE-7071] - Use custom Tez split generator to support schema evolution + * [HIVE-7072] - HCatLoader only loads first region of hbase table + * [HIVE-7075] - JsonSerde raises NullPointerException when object key is not lower case + * [HIVE-7076] - Plugin (exec hook) to log to application timeline data to Yarn + * [HIVE-7077] - Hive contrib compilation maybe broken with removal of org.apache.hadoop.record + * [HIVE-7079] - Hive logs errors about missing tables when parsing CTE expressions + * [HIVE-7080] - In PTest framework, Add logs URL to the JIRA comment + * [HIVE-7082] - Vectorized parquet reader should create assigners only for the columns it assigns, not for scratch columns + * [HIVE-7083] - Fix test failures on trunk + * [HIVE-7087] - Remove lineage information after query completion + * [HIVE-7092] - Insert overwrite should not delete the original directory + * [HIVE-7096] - Support grouped splits in Tez partitioned broadcast join + * [HIVE-7099] - Add Decimal datatype support for Windowing + * [HIVE-7104] - Unit tests are disabled + * [HIVE-7105] - Enable ReduceRecordProcessor to generate VectorizedRowBatches + * [HIVE-7107] - Fix HiveServer1 JDBC Driver spec compliancy issue + * [HIVE-7109] - Resource leak in HBaseStorageHandler + * [HIVE-7112] - Tez processor swallows errors + * [HIVE-7114] - Extra Tez session is started during HiveServer2 startup + * [HIVE-7116] - HDFS FileSystem object cache causes permission issues in creating tmp directories + * [HIVE-7117] - Partitions not inheriting table permissions after alter rename partition + * [HIVE-7118] - Oracle upgrade schema scripts do not map Java long datatype columns correctly for transaction related tables + * [HIVE-7119] - Extended ACL's should be inherited if warehouse perm inheritance enabled + * [HIVE-7123] - Follow-up of HIVE-6367 + * [HIVE-7130] - schematool is broken for minor version upgrades (eg 0.13.x) + * [HIVE-7131] - Dependencies of fetch task for tez are not shown properly + * [HIVE-7135] - Fix test fail of TestTezTask.testSubmit + * [HIVE-7143] - Add Streaming support in Windowing mode for more UDAFs (min/max, lead/lag, fval/lval) + * [HIVE-7144] - GC pressure during ORC StringDictionary writes + * [HIVE-7146] - posexplode() UDTF fails with a NullPointerException on NULL columns + * [HIVE-7147] - ORC PPD should handle CHAR/VARCHAR types + * [HIVE-7149] - Parquet not able to handle negative decimal numbers + * [HIVE-7154] - TestMetrics fails intermittently on the trunk + * [HIVE-7155] - WebHCat controller job exceeds container memory limit + * [HIVE-7159] - For inner joins push a 'is not null predicate' to the join sources for every non nullSafe join condition + * [HIVE-7161] - TestMetastoreVersion fails intermittently on trunk + * [HIVE-7162] - hadoop-1 build broken by HIVE-7071 + * [HIVE-7165] - Fix hive-default.xml.template errors & omissions + * [HIVE-7167] - Hive Metastore fails to start with SQLServerException + * [HIVE-7169] - HiveServer2 in Http Mode should have a configurable IdleMaxTime timeout + * [HIVE-7170] - Fix display_colstats_tbllvl.q in trunk + * [HIVE-7173] - Support HIVE-4867 on mapjoin of MR Tasks + * [HIVE-7174] - Do not accept string as scale and precision when reading Avro schema + * [HIVE-7176] - FileInputStream is not closed in Commands#properties() + * [HIVE-7182] - ResultSet is not closed in JDBCStatsPublisher#init() + * [HIVE-7183] - Size of partColumnGrants should be checked in ObjectStore#removeRole() + * [HIVE-7187] - Reconcile jetty versions in hive + * [HIVE-7188] - sum(if()) returns wrong results with vectorization + * [HIVE-7190] - WebHCat launcher task failure can cause two concurent user jobs to run + * [HIVE-7191] - optimized map join hash table has a bug when it reaches 2Gb + * [HIVE-7192] - Hive Streaming - Some required settings are not mentioned in the documentation + * [HIVE-7199] - Cannot alter table to parquet + * [HIVE-7200] - Beeline output displays column heading even if --showHeader=false is set + * [HIVE-7201] - Fix TestHiveConf#testConfProperties test case + * [HIVE-7202] - DbTxnManager deadlocks in hcatalog.cli.TestSematicAnalysis.testAlterTblFFpart() + * [HIVE-7209] - allow metastore authorization api calls to be restricted to certain invokers + * [HIVE-7210] - NPE with "No plan file found" when running Driver instances on multiple threads + * [HIVE-7213] - COUNT(*) returns out-dated count value after TRUNCATE + * [HIVE-7220] - Empty dir in external table causes issue (root_dir_external_table.q failure) + * [HIVE-7225] - Unclosed Statement's in TxnHandler + * [HIVE-7226] - Windowing Streaming mode causes NPE for empty partitions + * [HIVE-7228] - StreamPrinter should be joined to calling thread + * [HIVE-7229] - String is compared using equal in HiveMetaStore#HMSHandler#init() + * [HIVE-7232] - VectorReduceSink is emitting incorrect JOIN keys + * [HIVE-7234] - Select on decimal column throws NPE + * [HIVE-7235] - TABLESAMPLE on join table is regarded as alias + * [HIVE-7236] - Tez progress monitor should indicate running/failed tasks + * [HIVE-7237] - hive.exec.parallel=true w/ Hive 0.13/Tez causes application to linger forever + * [HIVE-7241] - Wrong lock acquired for alter table rename partition + * [HIVE-7242] - alter table drop partition is acquiring the wrong type of lock + * [HIVE-7245] - Fix parquet_columnar + * [HIVE-7246] - Hive transaction manager hardwires bonecp as the JDBC pooling implementation + * [HIVE-7247] - Fix itests using hadoop-1 profile + * [HIVE-7249] - HiveTxnManager.closeTxnManger() throws if called after commitTxn() + * [HIVE-7251] - Fix StorageDescriptor usage in unit tests + * [HIVE-7257] - UDF format_number() does not work on FLOAT types + * [HIVE-7263] - Missing fixes from review of parquet-timestamp + * [HIVE-7265] - BINARY columns use BytesWritable::getBytes() without ::getLength() + * [HIVE-7268] - On Windows Hive jobs in Webhcat always run on default MR mode + * [HIVE-7271] - Speed up unit tests + * [HIVE-7274] - Update PTest2 to JClouds 1.7.3 + * [HIVE-7279] - UDF format_number() does not work on DECIMAL types + * [HIVE-7281] - DbTxnManager acquiring wrong level of lock for dynamic partitioning + * [HIVE-7282] - HCatLoader fail to load Orc map with null key + * [HIVE-7287] - hive --rcfilecat command is broken on Windows + * [HIVE-7294] - sql std auth - authorize show grant statements + * [HIVE-7298] - desc database extended does not show properties of the database + * [HIVE-7302] - Allow Auto-reducer parallelism to be turned off by a logical optimizer + * [HIVE-7303] - IllegalMonitorStateException when stmtHandle is null in HiveStatement + * [HIVE-7304] - Transitive Predicate Propagation doesn't happen properly after HIVE-7159 + * [HIVE-7314] - Wrong results of UDF when hive.cache.expr.evaluation is set + * [HIVE-7317] - authorization_explain.q fails when run in sequence + * [HIVE-7323] - Date type stats in ORC sometimes go stale + * [HIVE-7325] - Support non-constant expressions for ARRAY/MAP type indices. + * [HIVE-7326] - Hive complains invalid column reference with 'having' aggregate predicates + * [HIVE-7339] - hive --orcfiledump command is not supported on Windows + * [HIVE-7342] - support hiveserver2,metastore specific config files + * [HIVE-7344] - Add streaming support in Windowing mode for FirstVal, LastVal + * [HIVE-7345] - Beeline changes its prompt to reflect successful database connection even after failing to connect + * [HIVE-7346] - Wrong results caused by hive ppd under specific join condition + * [HIVE-7352] - Queries without tables fail under Tez + * [HIVE-7353] - HiveServer2 using embedded MetaStore leaks JDOPersistanceManager + * [HIVE-7354] - windows:Need to set hbase jars in hadoop classpath explicitly + * [HIVE-7356] - Table level stats collection fail for partitioned tables + * [HIVE-7359] - Stats based compute query replies fail to do simple column transforms + * [HIVE-7363] - VectorExpressionWriterDecimal is missing null check in setValue() + * [HIVE-7366] - getDatabase using direct sql + * [HIVE-7373] - Hive should not remove trailing zeros for decimal numbers + * [HIVE-7374] - SHOW COMPACTIONS fail with remote metastore when there are no compations + * [HIVE-7376] - add minimizeJar to jdbc/pom.xml + * [HIVE-7385] - Optimize for empty relation scans + * [HIVE-7389] - Reduce number of metastore calls in MoveTask (when loading dynamic partitions) + * [HIVE-7393] - Tez jobs sometimes fail with NPE processing input splits + * [HIVE-7394] - ORC writer logging fails when the padding is < 0.01 + * [HIVE-7396] - BucketingSortingReduceSinkOptimizer throws NullPointException during ETL + * [HIVE-7397] - Set the default threshold for fetch task conversion to 1Gb + * [HIVE-7399] - Timestamp type is not copied by ObjectInspectorUtils.copyToStandardObject + * [HIVE-7409] - Add workaround for a deadlock issue of Class.getAnnotation() + * [HIVE-7412] - column stats collection throws exception if all values for a column is null + * [HIVE-7414] - Update golden file for MiniTez temp_table.q + * [HIVE-7415] - Test TestMinimrCliDriver.testCliDriver_ql_rewrite_gbtoidx failing + * [HIVE-7417] - select count(1) from ... where true; fails in optimizer + * [HIVE-7419] - Missing break in SemanticAnalyzer#getTableDescFromSerDe() + * [HIVE-7421] - Make VectorUDFDateString use the same date parsing and formatting as GenericUDFDate + * [HIVE-7422] - Array out of bounds exception involving ql.exec.vector.expressions.aggregates.gen.VectorUDAFAvgDouble + * [HIVE-7423] - produce hive-exec-core.jar from ql module + * [HIVE-7424] - HiveException: Error evaluating concat(concat(' ', str2), ' ') in ql.exec.vector.VectorSelectOperator.processOp + * [HIVE-7426] - ClassCastException: ...IntWritable cannot be cast to ...Text involving ql.udf.generic.GenericUDFBasePad.evaluate + * [HIVE-7429] - Set replication for archive called before file exists + * [HIVE-7433] - ColumnMappins.ColumnMapping should expose public accessors for its fields + * [HIVE-7441] - Custom partition scheme gets rewritten with hive scheme upon concatenate + * [HIVE-7450] - Database should inherit perms of warehouse dir + * [HIVE-7451] - pass function name in create/drop function to authorization api + * [HIVE-7452] - Boolean comparison is done through reference equality rather than using equals + * [HIVE-7459] - Fix NPE when an empty file is included in a Hive query that uses CombineHiveInputFormat + * [HIVE-7470] - Wrong Thrift declaration for {{ShowCompactResponseElement}} + * [HIVE-7472] - CLONE - Import fails for tables created with default text, sequence and orc file formats using HCatalog API + * [HIVE-7473] - Null values in DECIMAL columns cause serialization issues with HCatalog + * [HIVE-7475] - Beeline requires newline at the end of each query in a file + * [HIVE-7481] - The planning side changes for SMB join on hive-tez + * [HIVE-7482] - The execution side changes for SMB join in hive-tez + * [HIVE-7486] - Delete jar should close current classloader + * [HIVE-7488] - pass column names being used for inputs to authorization api + * [HIVE-7490] - Revert ORC stripe size + * [HIVE-7494] - ORC returns empty rows for constant folded date queries + * [HIVE-7508] - Kerberos support for streaming + * [HIVE-7514] - Vectorization does not handle constant expression whose value is NULL + * [HIVE-7521] - Reference equality is used on Boolean in NullScanOptimizer#WhereFalseProcessor#process() + * [HIVE-7522] - Update .q.out for cluster_tasklog_retrieval.q test + * [HIVE-7529] - load data query fails on hdfs federation + viewfs + * [HIVE-7531] - auxpath parameter does not handle paths relative to current working directory. + * [HIVE-7533] - sql std auth - set authorization privileges for tables when created from hive cli + * [HIVE-7538] - Fix eclipse:eclipse after HIVE-7496 + * [HIVE-7539] - streaming windowing UDAF seems to be broken without Partition Spec + * [HIVE-7553] - avoid the scheduling maintenance window for every jar change + * [HIVE-7557] - When reduce is vectorized, dynpart_sort_opt_vectorization.q under Tez fails + * [HIVE-7558] - HCatLoader reuses credentials across jobs + * [HIVE-7563] - ClassLoader should be released from LogFactory + * [HIVE-7574] - CommonJoinOperator.checkAndGenObject calls LOG.Trace per row from probe side in a HashMap join consuming 4% of the CPU + * [HIVE-7576] - Add PartitionSpec support in HCatClient API + * [HIVE-7579] - error message for 'drop admin role' in sql std auth mode is not informative + * [HIVE-7583] - Use FileSystem.access() if available to check file access for user + * [HIVE-7592] - List Jars or Files are not supported by Beeline + * [HIVE-7595] - isKerberosMode() does a case sensitive comparison + * [HIVE-7599] - NPE in MergeTask#main() when -format is absent + * [HIVE-7600] - ConstantPropagateProcFactory uses reference equality on Boolean + * [HIVE-7618] - TestDDLWithRemoteMetastoreSecondNamenode unit test failure + * [HIVE-7620] - Hive metastore fails to start in secure mode due to "java.lang.NoSuchFieldError: SASL_PROPS" error + * [HIVE-7623] - hive partition rename fails if filesystem cache is disabled + * [HIVE-7629] - Problem in SMB Joins between two Parquet tables + * [HIVE-7634] - Use Configuration.getPassword() if available to eliminate passwords from hive-site.xml + * [HIVE-7635] - Query having same aggregate functions but different case throws IndexOutOfBoundsException + * [HIVE-7637] - Change throws clause for Hadoop23Shims.ProxyFileSystem23.access() + * [HIVE-7638] - Disallow CREATE VIEW when created with a temporary table + * [HIVE-7645] - Hive CompactorMR job set NUM_BUCKETS mistake + * [HIVE-7647] - Beeline does not honor --headerInterval and --color when executing with "-e" + * [HIVE-7648] - authorization check api should provide table for create table,drop/create index, and db for create/switch db + * [HIVE-7649] - Support column stats with temporary tables + * [HIVE-7658] - Hive search order for hive-site.xml when using --config option + * [HIVE-7664] - VectorizedBatchUtil.addRowToBatchFrom is not optimized for Vectorized execution and takes 25% CPU + * [HIVE-7666] - Join selectivity calculation should use exponential back-off for conjunction predicates + * [HIVE-7667] - handle cast for long in get_aggr_stats() api for metastore for mysql + * [HIVE-7669] - parallel order by clause on a string column fails with IOException: Split points are out of order + * [HIVE-7673] - Authorization api: missing privilege objects in create table/view + * [HIVE-7676] - JDBC: Support more DatabaseMetaData, ResultSetMetaData methods + * [HIVE-7678] - add more test cases for tables qualified with database/schema name + * [HIVE-7680] - Do not throw SQLException for HiveStatement getMoreResults and setEscapeProcessing(false) + * [HIVE-7681] - qualified tablenames usage does not work with several alter-table commands + * [HIVE-7682] - HadoopThriftAuthBridge20S should not reset configuration unless required + * [HIVE-7683] - Test TestMinimrCliDriver.testCliDriver_ql_rewrite_gbtoidx is still failing + * [HIVE-7694] - SMB join on tables differing by number of sorted by columns with same join prefix fails + * [HIVE-7695] - hive stats issue when insert query is appending data into table + * [HIVE-7700] - authorization api - HivePrivilegeObject for permanent function should have database name set + * [HIVE-7701] - Upgrading tez to 0.4.1 causes metadata only query to fail. + * [HIVE-7704] - Create tez task for fast file merging + * [HIVE-7710] - Rename table across database might fail + * [HIVE-7712] - hive-exec-0.13.0.2.1.2.0-402.jar contains avro classes compiled against hadoop-v1 + * [HIVE-7722] - TestJdbcDriver2.testDatabaseMetaData fails after HIVE-7676 + * [HIVE-7723] - Explain plan for complex query with lots of partitions is slow due to in-efficient collection used to find a matching ReadEntity + * [HIVE-7730] - Extend ReadEntity to add accessed columns from query + * [HIVE-7733] - Ambiguous column reference error on query + * [HIVE-7738] - tez select sum(decimal) from union all of decimal and null throws NPE + * [HIVE-7741] - Don't synchronize WriterImpl.addRow() when dynamic.partition is enabled + * [HIVE-7744] - In Windowing Streaming mode Avg and Sum give incorrect results when Wdw size is same as partition size + * [HIVE-7753] - Same operand appears on both sides of > in DataType#compareByteArray() + * [HIVE-7759] - document hive cli authorization behavior when SQL std auth is enabled + * [HIVE-7760] - Constants in VirtualColumn should be final + * [HIVE-7764] - Support all JDBC-HiveServer2 authentication modes on a secure cluster + * [HIVE-7769] - add --SORT_BEFORE_DIFF to union all .q tests + * [HIVE-7770] - Undo backward-incompatible behaviour change introduced by HIVE-7341 + * [HIVE-7771] - ORC PPD fails for some decimal predicates + * [HIVE-7774] - Issues with location path for temporary external tables + * [HIVE-7777] - Add CSV Serde based on OpenCSV + * [HIVE-7784] - Created the needed indexes on Hive.PART_COL_STATS for CBO + * [HIVE-7786] - add --SORT_BEFORE_DIFF to union all tez .q.out files + * [HIVE-7787] - Reading Parquet file with enum in Thrift Encoding throws NoSuchFieldError + * [HIVE-7800] - Parquet Column Index Access Schema Size Checking + * [HIVE-7807] - Refer to umask property using FsPermission.UMASK_LABEL. + * [HIVE-7812] - Disable CombineHiveInputFormat when ACID format is used + * [HIVE-7813] - Hive join key not null shouldn't be generated for partition column + * [HIVE-7823] - HIVE-6185 removed Partition.getPartition + * [HIVE-7824] - CLIServer.getOperationStatus eats ExceutionException + * [HIVE-7828] - TestCLIDriver.parquet_join.q is failing on trunk + * [HIVE-7829] - Entity.getLocation can throw an NPE + * [HIVE-7834] - Use min, max and NDV from the stats to better estimate many to many vs one to many inner joins + * [HIVE-7840] - Generated hive-default.xml.template mistakenly refers to property "name"s as "key"s + * [HIVE-7841] - Case, When, Lead, Lag UDF is missing annotation + * [HIVE-7846] - authorization api should support group, not assume case insensitive role names + * [HIVE-7847] - query orc partitioned table fail when table column type change + * [HIVE-7851] - Fix NPE in split generation on Tez 0.5 + * [HIVE-7857] - Hive query fails after Tez session times out + * [HIVE-7859] - Tune zlib compression in ORC to account for the encoding strategy + * [HIVE-7863] - Potential null reference in TxnDbUtil#prepareDb() + * [HIVE-7865] - Extend TestFileDump test case to printout ORC row index information + * [HIVE-7878] - add -- SORT_BEFORE_DIFF to optimize_nullscan.q test + * [HIVE-7883] - DBTxnManager trying to close already closed metastore client connection + * [HIVE-7887] - VectorFileSinkOp does not publish the stats correctly + * [HIVE-7889] - Query fails with char partition column + * [HIVE-7890] - SessionState creates HMS Client while not impersonating + * [HIVE-7891] - Table-creation fails through HCatClient for Oracle-based metastore. + * [HIVE-7892] - Thrift Set type not working with Hive + * [HIVE-7895] - Storage based authorization should consider sticky bit for drop actions + * [HIVE-7897] - ObjectStore not using getPassword() for JDO connection string + * [HIVE-7899] - txnMgr should be session specific + * [HIVE-7901] - CLONE - pig -useHCatalog with embedded metastore fails to pass command line args to metastore (org.apache.hive.hcatalog version) + * [HIVE-7902] - Cleanup hbase-handler/pom.xml dependency list + * [HIVE-7911] - Guaranteed ClassCastException in AccumuloRangeGenerator + * [HIVE-7913] - Simplify filter predicates for CBO + * [HIVE-7914] - Simplify join predicates for CBO to avoid cross products + * [HIVE-7915] - Expose High and Low value in plan.ColStatistics + * [HIVE-7919] - sql std auth: user with 'admin option' for role should be able to list all users in the role + * [HIVE-7927] - Checking sticky bit needs shim + * [HIVE-7936] - Support for handling Thrift Union types + * [HIVE-7943] - hive.security.authorization.createtable.owner.grants is ineffective with Default Authorization + * [HIVE-7944] - current update stats for columns of a partition of a table is not correct + * [HIVE-7946] - CBO: Merge CBO changes to Trunk + * [HIVE-7949] - Create table LIKE command doesn't set new owner + * [HIVE-7950] - StorageHandler resources aren't added to Tez Session if already Session is already Open + * [HIVE-7957] - Revisit event version handling in dynamic partition pruning on Tez + * [HIVE-7971] - Support alter table change/replace/add columns for existing partitions + * [HIVE-7972] - hiveserver2 specific configuration file is not getting used + * [HIVE-7976] - Merge tez branch into trunk (tez 0.5.0) + * [HIVE-7982] - Regression in explain with CBO enabled due to issuing query per K,V for the stats + * [HIVE-7984] - AccumuloOutputFormat Configuration items from StorageHandler not re-set in Configuration in Tez + * [HIVE-7985] - With CBO enabled cross product is generated when a subquery is present + * [HIVE-7987] - Storage based authorization - NPE for drop view + * [HIVE-7993] - With CBO enabled Q75 fails with RuntimeException: cannot find field _col69 from [0:_col18,...] + * [HIVE-8002] - Deprecate the use of JDBC client only parameters from the map used to transfer HiveConf configs to the server. + * [HIVE-8008] - NPE while reading null decimal value + * [HIVE-8012] - TestHiveServer2Concurrency is not implemented + * [HIVE-8018] - Fix typo in config var name for dynamic partition pruning + * [HIVE-8019] - Missing hive 0.13.1 commit in trunk : export/import statement authorization - CVE-2014-0228 + * [HIVE-8022] - Recursive root scratch directory creation is not using hdfs umask properly + * [HIVE-8023] - Code in HIVE-6380 eats exceptions + * [HIVE-8031] - CBO needs to scale down NDV with selectivity to avoid underestimating + * [HIVE-8034] - Don't add colon when no port is specified + * [HIVE-8041] - Hadoop-2 build is broken with JDK6 + * [HIVE-8044] - Container size and hash table size should be taken into account before deciding to do a MapJoin + * [HIVE-8045] - SQL standard auth with cli - Errors and configuration issues + * [HIVE-8047] - Lazy char/varchar are not using escape char defined in serde params + * [HIVE-8051] - Some union queries fail with dynamic partition pruning on tez + * [HIVE-8052] - Vectorization: min() on TimeStamp datatype fails with error "Vector aggregate not implemented: min for type: TIMESTAMP" + * [HIVE-8056] - SessionState.dropSessionPaths should use FileSystem.getLocal(conf) to delete local files + * [HIVE-8062] - Stats collection for columns fails on a partitioned table with null values in partitioning column + * [HIVE-8071] - hive shell tries to write hive-exec.jar for each run + * [HIVE-8078] - ORC Delta encoding corrupts data when delta overflows long + * [HIVE-8081] - "drop index if exists" fails if table specified does not exist + * [HIVE-8082] - generateErrorMessage doesn't handle null ast properly + * [HIVE-8083] - Authorization DDLs should not enforce hive identifier syntax for user or group + * [HIVE-8085] - stats optimizer should not use Description annotation to figure out function mapping (because FunctionRegistry doesn't) + * [HIVE-8090] - Potential null pointer reference in WriterImpl#StreamFactory#createStream() + * [HIVE-8092] - Vectorized Tez count(*) returns NULL instead of 0 when result is empty + * [HIVE-8095] - Tez and Vectorized GROUP BY: ClassCastException: ...HiveDecimal cannot be cast to ...HiveDecimalWritable + * [HIVE-8099] - IN operator for partition column fails when the partition column type is DATE + * [HIVE-8101] - Hive on spark Issue during compiling hive source + * [HIVE-8102] - Partitions of type 'date' behave incorrectly with daylight saving time. + * [HIVE-8103] - Read ACID tables with FetchOperator returns no rows + * [HIVE-8104] - Insert statements against ACID tables NPE when vectorization is on + * [HIVE-8105] - booleans and nulls not handled properly in insert/values + * [HIVE-8107] - Bad error message for non-existent table in update and delete + * [HIVE-8112] - Change reporting string to reflect update in Tez + * [HIVE-8114] - Type resolution for udf arguments of Decimal Type results in error + * [HIVE-8115] - Hive select query hang when fields contain map + * [HIVE-8126] - Standalone hive-jdbc jar is not packaged in the Hive distribution + * [HIVE-8138] - Global Init file should allow specifying file name not only directory + * [HIVE-8139] - Upgrade commons-lang from 2.4 to 2.6 + * [HIVE-8142] - Add merge operators to queryplan.thrift instead of generated source file + * [HIVE-8143] - Create root scratch dir with 733 instead of 777 perms + * [HIVE-8146] - Test TestTempletonUtils.testFindContainingJar failing + * [HIVE-8148] - HDFS Path named with file:// instead of file:/// results in Unit test failures in Windows + * [HIVE-8149] - hive.optimize.reducededuplication should be set to false for IUD ops + * [HIVE-8151] - Dynamic partition sort optimization inserts record wrongly to partition when used with GroupBy + * [HIVE-8152] - Update with expression in set fails + * [HIVE-8153] - Reduce the verbosity of debug logs in ORC record reader + * [HIVE-8154] - HadoopThriftAuthBridge20S.getHadoopSaslProperties is incompatible with Hadoop 2.4.1 and later + * [HIVE-8156] - Vectorized reducers need to avoid memory build-up during a single key + * [HIVE-8158] - Optimize writeValue/setValue in VectorExpressionWriterFactory (in VectorReduceSinkOperator codepath) + * [HIVE-8162] - Dynamic sort optimization propagates additional columns even in the absence of order by + * [HIVE-8167] - mvn install command broken by HIVE-8126 commit + * [HIVE-8169] - Windows: alter table ..set location from hcatalog failed with NullPointerException + * [HIVE-8170] - Hive Metastore schema script missing for mssql for v0.14.0 + * [HIVE-8171] - Tez and Vectorized Reduce doesn't create scratch columns + * [HIVE-8175] - Hive metastore upgrade from v0.13.0 to v0.14.0 script for Oracle is missing an upgrade step + * [HIVE-8178] - OrcNewInputFormat::getSplits() calls OrcInputFormat.generateSplitsInfo twice + * [HIVE-8179] - Fetch task conversion: Remove some dependencies on AST + * [HIVE-8184] - inconsistence between colList and columnExprMap when ConstantPropagate is applied to subquery + * [HIVE-8185] - hive-jdbc-0.14.0-SNAPSHOT-standalone.jar fails verification for signatures in build + * [HIVE-8188] - ExprNodeGenericFuncEvaluator::_evaluate() loads class annotations in a tight loop + * [HIVE-8189] - A select statement with a subquery is failing with HBaseSerde + * [HIVE-8191] - Update and delete on tables with non Acid output formats gives runtime error + * [HIVE-8196] - Joining on partition columns with fetch column stats enabled results it very small CE which negatively affects query performance + * [HIVE-8200] - Make beeline use the hive-jdbc standalone jar + * [HIVE-8201] - Remove hardwiring to HiveInputFormat in acid qfile tests + * [HIVE-8203] - ACID operations result in NPE when run through HS2 + * [HIVE-8205] - Using strings in group type fails in ParquetSerDe + * [HIVE-8210] - TezJobMonitor should print time spent in Application (RUNNING) + * [HIVE-8212] - Regression for hcat commandline alter view set tblproperties + * [HIVE-8217] - WebHCat 'jobs' endpoint fails if it runs into issues with any of the jobs + * [HIVE-8221] - authorize additional metadata read operations in metastore storage based authorization + * [HIVE-8225] - CBO trunk merge: union11 test fails due to incorrect plan + * [HIVE-8226] - Vectorize dynamic partitioning in VectorFileSinkOperator + * [HIVE-8227] - NPE w/ hive on tez when doing unions on empty tables + * [HIVE-8229] - Add multithreaded tests for the Hive Writable data types + * [HIVE-8231] - Error when insert into empty table with ACID + * [HIVE-8235] - Insert into partitioned bucketed sorted tables fails with "this file is already being created by" + * [HIVE-8236] - VectorHashKeyWrapper allocates too many zero sized arrays + * [HIVE-8239] - MSSQL upgrade schema scripts does not map Java long datatype columns correctly for transaction related tables + * [HIVE-8240] - VectorColumnAssignFactory throws "Incompatible Bytes vector column and primitive category VARCHAR" + * [HIVE-8241] - With vectorization enabled count(distinct)) fails with ClassCastException + * [HIVE-8246] - HiveServer2 in http-kerberos mode is restrictive on client usernames + * [HIVE-8248] - TestHCatLoader.testReadDataPrimitiveTypes() occasionally fails + * [HIVE-8250] - Truncating table doesnt invalidate stats + * [HIVE-8257] - Accumulo introduces old hadoop-client dependency + * [HIVE-8258] - Compactor cleaners can be starved on a busy table or partition. + * [HIVE-8260] - CBO : Query query has date_dim d1,date_dim d2 and date_dim d3 but the explain has d1, d1 and d1 + * [HIVE-8261] - CBO : Predicate pushdown is removed by Optiq + * [HIVE-8263] - CBO : TPC-DS Q64 is item is joined last with store_sales while it should be first as it is the most selective + * [HIVE-8269] - Revert HIVE-8200 (Make beeline use the hive-jdbc standalone jar) + * [HIVE-8270] - JDBC uber jar is missing some classes required in secure setup. + * [HIVE-8271] - Jackson incompatibility between hadoop-2.4 and hive-14 + * [HIVE-8272] - Query with particular decimal expression causes NPE during execution initialization + * [HIVE-8273] - Beeline doesn't print applicationID for submitted DAG + * [HIVE-8277] - IP address string in HS2, metastore have a "/" prefix + * [HIVE-8279] - sql std auth - additional test cases + * [HIVE-8280] - CBO : When filter is applied on dimension table PK/FK code path is not in effect. + * [HIVE-8281] - NPE with dynamic partition pruning on Tez + * [HIVE-8283] - Missing break in FilterSelectivityEstimator#visitCall() + * [HIVE-8284] - Equality comparison is done between two floating point variables in HiveRelMdUniqueKeys#getUniqueKeys() + * [HIVE-8287] - Metadata action errors don't have information about cause + * [HIVE-8290] - With DbTxnManager configured, all ORC tables forced to be transactional + * [HIVE-8291] - ACID : Reading from partitioned bucketed tables has high overhead, 50% of time is spent in OrcInputFormat.getReader + * [HIVE-8292] - Reading from partitioned bucketed tables has high overhead in MapOperator.cleanUpInputFileChangedOp + * [HIVE-8296] - Tez ReduceShuffle Vectorization needs 2 data buffers (key and value) for adding rows + * [HIVE-8298] - Incorrect results for n-way join when join expressions are not in same order across joins + * [HIVE-8299] - HiveServer2 in http-kerberos & doAs=true is failing with org.apache.hadoop.security.AccessControlException + * [HIVE-8304] - Tez Reduce-Side GROUP BY Vectorization doesn't copy NULL keys correctly + * [HIVE-8306] - Map join sizing done by auto.convert.join.noconditionaltask.size doesn't take into account Hash table overhead and results in OOM + * [HIVE-8310] - RetryingHMSHandler is not used when kerberos auth enabled + * [HIVE-8311] - Driver is encoding transaction information too late + * [HIVE-8313] - Optimize evaluation for ExprNodeConstantEvaluator and ExprNodeNullEvaluator + * [HIVE-8314] - Restore thrift string interning of HIVE-7975 + * [HIVE-8315] - CBO : Negate condition underestimates selectivity which results in an in-efficient plan + * [HIVE-8316] - CBO : cardinality estimation for filters is much lower than actual row count + * [HIVE-8318] - Null Scan optimizer throws exception when no partitions are selected + * [HIVE-8321] - Fix serialization of TypeInfo for qualified types + * [HIVE-8322] - VectorReduceSinkOperator: ClassCastException: ~StandardUnionObjectInspector$StandardUnion cannot be cast to ~IntWritable + * [HIVE-8324] - Shim KerberosName (causes build failure on hadoop-1) + * [HIVE-8328] - MapJoin implementation in Tez should not reload hashtables + * [HIVE-8332] - Reading an ACID table with vectorization on results in NPE + * [HIVE-8335] - TestHCatLoader/TestHCatStorer failures on pre-commit tests + * [HIVE-8336] - Update pom, now that Optiq is renamed to Calcite + * [HIVE-8340] - HiveServer2 service doesn't stop backend jvm process, which prevents follow-up service start. + * [HIVE-8341] - Transaction information in config file can grow excessively large + * [HIVE-8344] - Hive on Tez sets mapreduce.framework.name to yarn-tez + * [HIVE-8348] - Fix Hive to match changes introduced by TEZ-1510 + * [HIVE-8349] - DISTRIBUTE BY should work with tez auto-parallelism enabled + * [HIVE-8354] - HIVE-7156 introduced required dependency on tez + * [HIVE-8361] - NPE in PTFOperator when there are empty partitions + * [HIVE-8363] - AccumuloStorageHandler compile failure hadoop-1 + * [HIVE-8364] - We're not waiting for all inputs in MapRecordProcessor on Tez + * [HIVE-8366] - CBO fails if there is a table sample in subquery + * [HIVE-8367] - delete writes records in wrong order in some cases + * [HIVE-8368] - compactor is improperly writing delete records in base file + * [HIVE-8372] - Potential NPE in Tez MergeFileRecordProcessor + * [HIVE-8378] - NPE in TezTask due to null counters + * [HIVE-8380] - NanoTime class serializes and deserializes Timestamp incorrectly + * [HIVE-8386] - HCAT api call is case sensitive on fields in struct column + * [HIVE-8387] - add retry logic to ZooKeeperStorage in WebHCat + * [HIVE-8389] - Fix CBO when indexes are used + * [HIVE-8390] - CBO produces annoying exception message and wraps exceptions too much + * [HIVE-8391] - Comparion between TIMESTAMP and Integer types goes to STRING as "common comparison denominator" instead of a numeric type + * [HIVE-8392] - HiveServer2 Operation.close fails on windows + * [HIVE-8393] - Handle SIGINT on Tez + * [HIVE-8394] - HIVE-7803 doesn't handle Pig MultiQuery, can cause data-loss. + * [HIVE-8399] - Build failure on trunk & 14 branch + * [HIVE-8400] - Fix building and packaging hwi war file + * [HIVE-8401] - OrcFileMergeOperator only close last orc file it opened, which resulted in stale data in table directory + * [HIVE-8402] - Orc pushing SARGs into delta files causing ArrayOutOfBoundsExceptions + * [HIVE-8403] - Build broken by datanucleus.org being offline + * [HIVE-8404] - ColumnPruner doesnt prune columns from limit operator + * [HIVE-8407] - [CBO] Handle filters with non-boolean return type + * [HIVE-8408] - hcat cli throws NPE when authorizer using new api is enabled + * [HIVE-8409] - SMB joins fail intermittently on tez + * [HIVE-8411] - Support partial partition spec for certain ALTER PARTITION statements + * [HIVE-8413] - [CBO] Handle ill-formed queries which have distinct, having in incorrect context + * [HIVE-8415] - Vectorized comparison of timestamp and integer needs to treat integer as seconds since epoch + * [HIVE-8417] - round(decimal, negative) errors out/wrong results with reduce side vectorization + * [HIVE-8421] - [CBO] Use OptiqSemanticException in error conditions + * [HIVE-8427] - Hive Streaming : secure streaming hangs leading to time outs. + * [HIVE-8429] - Add records in/out counters + * [HIVE-8433] - CBO loses a column during AST conversion + * [HIVE-8434] - Vectorization logic using wrong values for DATE and TIMESTAMP partitioning columns in vectorized row batches... + * [HIVE-8442] - Revert HIVE-8403 + * [HIVE-8444] - update pom to junit 4.11 + * [HIVE-8445] - TestColumnAccess, TestReadEntityDirect use same table names + * [HIVE-8452] - Cleanup handling of resource configuration for tez + * [HIVE-8460] - ORC SARG literal creation for double from float may lead to wrong evaluation of SARG + * [HIVE-8461] - Make Vectorized Decimal query results match Non-Vectorized query results with respect to trailing zeroes... .0000 + * [HIVE-8462] - CBO duplicates columns + * [HIVE-8464] - Vectorized reducer nested group by query returns wrong results + * [HIVE-8474] - Vectorized reads of transactional tables fail when not all columns are selected + * [HIVE-8475] - add test case for use of index from not-current database + * [HIVE-8476] - JavaDoc updates to HiveEndPoint.newConnection() for secure streaming with Kerberos + * [HIVE-8478] - Vectorized Reduce-Side Group By doesn't handle Decimal type correctly + * [HIVE-8479] - Tez sessions cannot change queues once assigned to one within a CLI session + * [HIVE-8484] - HCatalog throws an exception if Pig job is of type 'fetch' + * [HIVE-8489] - Add sanity check to dynamic partition pruning + * [HIVE-8495] - Add progress bar for Hive on Tez queries + * [HIVE-8497] - StatsNoJobTask doesn't close RecordReader, FSDataInputStream of which keeps open to prevent stale data clean + * [HIVE-8498] - Insert into table misses some rows when vectorization is enabled + * [HIVE-8510] - HIVE-8462 didn't update tez test output + * [HIVE-8511] - fix build failure: cbo_correctness on tez + * [HIVE-8514] - TestCliDriver.testCliDriver_index_in_db fails in trunk + * [HIVE-8517] - When joining on partition column NDV gets overridden by StatsUtils.getColStatisticsFromExpression + * [HIVE-8524] - When table is renamed stats are lost as changes are not propagated to metastore tables TAB_COL_STATS and PART_COL_STATS + * [HIVE-8526] - Hive : CBO incorrect join order in TPC-DS Q45 as self join selectivity has incorrect CE + * [HIVE-8534] - sql std auth : update configuration whitelist for 0.14 + * [HIVE-8543] - Compactions fail on metastore using postgres + * [HIVE-8546] - Handle "add archive scripts.tar.gz" in Tez + * [HIVE-8547] - CBO and/or constant propagation breaks partition_varchar2 test + * [HIVE-8550] - Hive cannot load data into partitioned table with Unicode key + * [HIVE-8551] - NPE in FunctionRegistry (affects CBO in negative tests) + * [HIVE-8555] - Too many casts results in loss of original string representation for constant + * [HIVE-8557] - automatically setup ZooKeeperTokenStore to use kerberos authentication when kerberos is enabled + * [HIVE-8558] - CBO: enable n-way joins after CBO join reordering + * [HIVE-8560] - SerDes that do not inherit AbstractSerDe do not get table properties during initialize() + * [HIVE-8562] - ResultSet.isClosed sometimes doesn't work with mysql + * [HIVE-8563] - Running annotate_stats_join_pkfk.q in TestMiniTezCliDriver is causing NPE + * [HIVE-8566] - Vectorized queries output wrong timestamps + * [HIVE-8567] - Vectorized queries output extra stuff for Binary columns + * [HIVE-8575] - CBO: decimal_udf is broken by recent changes (and other tests have type changes) + * [HIVE-8576] - Guaranteed NPE in StatsRulesProcFactory + * [HIVE-8577] - Cannot deserialize Avro schema with a map with null values + * [HIVE-8579] - Guaranteed NPE in DDLSemanticAnalyzer + * [HIVE-8586] - Record counters aren't updated correctly for vectorized queries + * [HIVE-8587] - Vectorized Extract operator needs to update the Vectorization Context column map + * [HIVE-8588] - sqoop REST endpoint fails to send appropriate JDBC driver to the cluster + * [HIVE-8596] - HiveServer2 dynamic service discovery: ZK throws too many connections error + * [HIVE-8603] - auto_sortmerge_join_5 is getting stuck on tez + * [HIVE-8604] - Re-enable auto_sortmerge_join_5 on tez + * [HIVE-8605] - HIVE-5799 breaks backward compatibility for time values in config + * [HIVE-8611] - grant/revoke syntax should support additional objects for authorization plugins + * [HIVE-8612] - Support metadata result filter hooks + * [HIVE-8614] - Upgrade hive to use tez version 0.5.2-SNAPSHOT + * [HIVE-8615] - beeline csv,tsv outputformat needs backward compatibility mode + * [HIVE-8619] - CBO causes some more type problems + * [HIVE-8620] - CBO: HIVE-8433 RowResolver check is too stringent + * [HIVE-8624] - Record counters don't work with Tez container reuse + * [HIVE-8625] - Some union queries result in plans with many unions with CBO on + * [HIVE-8628] - NPE in case of shuffle join in tez + * [HIVE-8629] - Streaming / ACID : hive cli session creation takes too long and times out if execution engine is tez + * [HIVE-8631] - Compressed transaction list cannot be parsed in job.xml + * [HIVE-8632] - VectorKeyHashWrapper::duplicateTo allocates too many zero sized arrays + * [HIVE-8634] - HiveServer2 fair scheduler queue mapping doesn't handle the secondary groups rules correctly + * [HIVE-8635] - CBO: ambiguous_col negative test no longer fails + * [HIVE-8641] - Disable skew joins in tez. + * [HIVE-8643] - DDL operations via WebHCat with doAs parameter in secure cluster fail + * [HIVE-8646] - Hive class loading failure when executing Hive action via oozie workflows + * [HIVE-8647] - HIVE-8186 causes addition of same child operator multiple times + * [HIVE-8660] - sql std auth: property missing from whitelist - hive.exec.dynamic.partition.mode + * [HIVE-8663] - Fetching Vectorization scratch column map in Reduce-Side stop working + * [HIVE-8664] - Use Apache Curator in JDBC Driver and HiveServer2 for better reliability + * [HIVE-8665] - Fix misc unit tests on Windows + * [HIVE-8668] - mssql sql script has carriage returns + * [HIVE-8671] - Overflow in estimate row count and data size with fetch column stats + * [HIVE-8675] - Increase thrift server protocol test coverage + * [HIVE-8677] - TPC-DS Q51 : fails with "init not supported" exception in GenericUDAFStreamingEvaluator.init + * [HIVE-8683] - User name and group name cannot be the same when grant role + * [HIVE-8685] - DDL operations in WebHCat set proxy user to "null" in unsecure mode + * [HIVE-8687] - Support Avro through HCatalog + * [HIVE-8688] - serialized plan OutputStream is not being closed + * [HIVE-8689] - handle overflows in statistics better + * [HIVE-8697] - Vectorized round(decimal, negative) produces wrong results + * [HIVE-8698] - default log4j.properties not included in jar files anymore + * [HIVE-8703] - More Windows unit test fixes + * [HIVE-8704] - HivePassThroughOutputFormat cannot proxy more than one kind of OF (in one process) + * [HIVE-8705] - Support using pre-authenticated subject in kerberized HiveServer2 HTTP mode + * [HIVE-8711] - DB deadlocks not handled in TxnHandler for Postgres, Oracle, and SQLServer + * [HIVE-8713] - Unit test TestParquetTimestampUtils.testTimezone failing + * [HIVE-8714] - getDatabase reports direct SQL error when database is missing + * [HIVE-8715] - Hive 14 upgrade scripts can fail for statistics if database was created using auto-create + * [HIVE-8720] - Update orc_merge tests to make it consistent across OS'es + * [HIVE-8723] - Set reasonable connection timeout for CuratorFramework ZooKeeper clients in Hive + * [HIVE-8724] - Right outer join produces incorrect result on Tez + * [HIVE-8727] - Dag summary has incorrect row counts and duration per vertex + * [HIVE-8732] - ORC string statistics are not merged correctly + * [HIVE-8733] - HiveServer2 dynamic service discovery not picking correct IP address when hive.server2.thrift.bind.host is not set + * [HIVE-8735] - statistics update can fail due to long paths + * [HIVE-8736] - add ordering to cbo_correctness to make result consistent + * [HIVE-8737] - setEnv is not portable, which fails TestCliDriverMethods#testprocessInitFiles on Windows + * [HIVE-8740] - Sorted dynamic partition does not work correctly with constant folding + * [HIVE-8745] - Joins on decimal keys return different results whether they are run as reduce join or map join + * [HIVE-8747] - Estimate number of rows for table with 0 rows overflows resulting in an in-efficient plan + * [HIVE-8752] - Disjunction cardinality estimation has selectivity of 1 + * [HIVE-8754] - Sqoop job submission via WebHCat doesn't properly localize required jdbc jars in secure cluster + * [HIVE-8759] - HiveServer2 dynamic service discovery should add hostname instead of ipaddress to ZooKeeper + * [HIVE-8764] - Windows: HiveServer2 TCP SSL cannot recognize localhost + * [HIVE-8766] - Hive RetryHMSHandler should be retrying the metastore operation in case of NucleusException + * [HIVE-8771] - Abstract merge file operator does not move/rename incompatible files correctly + * [HIVE-8772] - zookeeper info logs are always printed from beeline with service discovery mode + * [HIVE-8778] - ORC split elimination can cause NPE when column statistics is null + * [HIVE-8781] - Nullsafe joins are busted on Tez + * [HIVE-8782] - HBase handler doesn't compile with hadoop-1 + * [HIVE-8785] - HiveServer2 LogDivertAppender should be more selective for beeline getLogs + * [HIVE-8794] - Hive on Tez leaks AMs when killed before first dag is run + * [HIVE-8798] - Some Oracle deadlocks not being caught in TxnHandler + * [HIVE-8799] - boatload of missing apache headers + + + + +** Improvement + * [HIVE-538] - make hive_jdbc.jar self-containing + * [HIVE-860] - Persistent distributed cache + * [HIVE-2365] - SQL support for bulk load into HBase + * [HIVE-3005] - Skip execution phase for queries that contain "LIMIT 0" clause + * [HIVE-3006] - Skip execution of queries with always false WHERE clauses + * [HIVE-3595] - Hive should adapt new FsShell commands since Hadoop 2 has changed FsShell argument structures + * [HIVE-3635] - allow 't', 'T', '1', 'f', 'F', and '0' to be allowable true/false values for the boolean hive type + * [HIVE-3684] - Add support for filter pushdown for composite keys + * [HIVE-3907] - Hive should support adding multiple resources at once + * [HIVE-4867] - Deduplicate columns appearing in both the key list and value list of ReduceSinkOperator + * [HIVE-4997] - HCatalog doesn't allow multiple input tables + * [HIVE-5072] - [WebHCat]Enable directly invoke Sqoop job through Templeton + * [HIVE-5160] - HS2 should support .hiverc + * [HIVE-5298] - AvroSerde performance problem caused by HIVE-3833 + * [HIVE-5370] - format_number udf should take user specifed format as argument + * [HIVE-5408] - Method matching needs to be improved in NumericOpMethodResolver to suport decimal type with parameters + * [HIVE-5447] - HiveServer2 should allow secure impersonation over LDAP or other non-kerberos connection + * [HIVE-5652] - Improve JavaDoc of UDF class + * [HIVE-5771] - Constant propagation optimizer for Hive + * [HIVE-5799] - session/operation timeout for hiveserver2 + * [HIVE-5821] - Evaluate the usefulness of UNKNOWN state in HiveServer2 state transitions and get rid of it if not required + * [HIVE-5871] - Use multiple-characters as field delimiter + * [HIVE-5961] - Add explain authorize for checking privileges + * [HIVE-6024] - Load data local inpath unnecessarily creates a copy task + * [HIVE-6037] - Synchronize HiveConf with hive-default.xml.template and support show conf + * [HIVE-6089] - Add metrics to HiveServer2 + * [HIVE-6132] - Support hbase filters for Hive HBase Integration + * [HIVE-6147] - Support avro data stored in HBase columns + * [HIVE-6304] - Update HCatReader/Writer docs to reflect recent changes + * [HIVE-6325] - Enable using multiple concurrent sessions in tez + * [HIVE-6410] - Allow output serializations separators to be set for HDFS path as well. + * [HIVE-6411] - Support more generic way of using composite key for HBaseHandler + * [HIVE-6430] - MapJoin hash table has large memory overhead + * [HIVE-6438] - Sort query result for test, removing order by clause + * [HIVE-6473] - Allow writing HFiles via HBaseStorageHandler table + * [HIVE-6510] - Clean up math based UDFs + * [HIVE-6561] - Beeline should accept -i option to Initializing a SQL file + * [HIVE-6584] - Add HiveHBaseTableSnapshotInputFormat + * [HIVE-6593] - Create a maven assembly for hive-jdbc + * [HIVE-6657] - Add test coverage for Kerberos authentication implementation using Hadoop's miniKdc + * [HIVE-6677] - HBaseSerDe needs to be refactored + * [HIVE-6691] - support decimals for optimized hashmap keys in MapJoin + * [HIVE-6694] - Beeline should provide a way to execute shell command as Hive CLI does + * [HIVE-6799] - HiveServer2 needs to map kerberos name to local name before proxy check + * [HIVE-6899] - Add an ability to specify the type of execution to use (async/sync execution) on JDBC client + * [HIVE-6920] - Parquet Serde Simplification + * [HIVE-6923] - Use slf4j For Logging Everywhere + * [HIVE-6924] - MapJoinKeyBytes::hashCode() should use Murmur hash + * [HIVE-6938] - Add Support for Parquet Column Rename + * [HIVE-6973] - HiveServer2 should support a non-kerberos user authentication on a secure cluster. + * [HIVE-6999] - Add streaming mode to PTFs + * [HIVE-7000] - Several issues with javadoc generation + * [HIVE-7022] - Replace BinaryWritable with BytesWritable in Parquet serde + * [HIVE-7026] - Support newly added role related APIs for v1 authorizer + * [HIVE-7048] - CompositeKeyHBaseFactory should not use FamilyFilter + * [HIVE-7100] - Users of hive should be able to specify skipTrash when dropping tables. + * [HIVE-7127] - Handover more details on exception in hiveserver2 + * [HIVE-7136] - Allow Hive to read hive scripts from any of the supported file systems in hadoop eco-system + * [HIVE-7137] - Add progressable to writer interfaces so they could report progress while different operations are in progress + * [HIVE-7138] - add row index dump capability to ORC file dump + * [HIVE-7140] - Bump default hive.metastore.client.socket.timeout to 5 minutes + * [HIVE-7142] - Hive multi serialization encoding support + * [HIVE-7168] - Don't require to name all columns in analyze statements if stats collection is for all columns + * [HIVE-7196] - Configure session by single open session call + * [HIVE-7208] - move SearchArgument interface into serde package + * [HIVE-7211] - Throws exception if the name of conf var starts with "hive." does not exists in HiveConf + * [HIVE-7219] - Improve performance of serialization utils in ORC + * [HIVE-7222] - Support timestamp column statistics in ORC and extend PPD for timestamp + * [HIVE-7223] - Support generic PartitionSpecs in Metastore partition-functions + * [HIVE-7230] - Add Eclipse formatter file for Hive coding conventions + * [HIVE-7231] - Improve ORC padding + * [HIVE-7243] - Print padding information in ORC file dump + * [HIVE-7250] - Adaptive compression buffer size for wide tables in ORC + * [HIVE-7361] - using authorization api for RESET, DFS, ADD, DELETE, COMPILE commands + * [HIVE-7386] - PTest support non-spot instances and higher cpu masters + * [HIVE-7432] - Remove deprecated Avro's Schema.parse usages + * [HIVE-7445] - Improve LOGS for Hive when a query is not able to acquire locks + * [HIVE-7495] - Print dictionary size in orc file dump + * [HIVE-7519] - Refactor QTestUtil to remove its duplication with QFileClient for qtest setup and teardown + * [HIVE-7532] - allow disabling direct sql per query with external metastore + * [HIVE-7543] - Cleanup of org.apache.hive.service.auth package + * [HIVE-7549] - Code cleanup of Task.java and HiveInputFormat.java + * [HIVE-7554] - Parquet Hive should resolve column names in case insensitive manner + * [HIVE-7562] - Cleanup ExecReducer + * [HIVE-7596] - Cleanup OperatorFactory, ReduceSinkOperator, and reportStats + * [HIVE-7609] - Collect partition level stats by default + * [HIVE-7615] - Beeline should have an option for user to see the query progress + * [HIVE-7616] - pre-size mapjoin hashtable based on statistics + * [HIVE-7689] - Fix wrong lower case table names in Postgres Metastore back end + * [HIVE-7697] - PlanUtils.getTableDesc uses printStackTrace and returns null + * [HIVE-7705] - there's a useless threadlocal in LBUtils that shows up in perf profiles + * [HIVE-7736] - improve the columns stats update speed for all the partitions of a table + * [HIVE-7737] - Hive logs full exception for table not found + * [HIVE-7757] - PTest2 separates test files with spaces while QTestGen uses commas + * [HIVE-7818] - Support boolean PPD for ORC + * [HIVE-7832] - Do ORC dictionary check at a finer level and preserve encoding across stripes + * [HIVE-7833] - Remove unwanted allocation in ORC RunLengthIntegerWriterV2 determine encoding function + * [HIVE-7876] - further improve the columns stats update speed for all the partitions of a table + * [HIVE-7885] - CLIServer.openSessionWithImpersonation logs as if it were openSession + * [HIVE-7912] - Don't add is not null filter for partitioning column + * [HIVE-7921] - Fix confusing dead assignment in return statement (JavaHiveVarcharObjectInspector) + * [HIVE-7923] - populate stats for test tables + * [HIVE-7925] - extend current partition status extrapolation to support all DBs + * [HIVE-7931] - Convert all tabs to spaces [code cleanup] + * [HIVE-7947] - Add message at the end of each testcase with timestamp in Webhcat system tests + * [HIVE-7975] - HS2 memory optimization: Internalizing instance fields of Thrift-generated metastore API classes + * [HIVE-8036] - PTest SSH Options + * [HIVE-8038] - Decouple ORC files split calculation logic from Filesystem's get file location implementation + * [HIVE-8042] - Optionally allow move tasks to run in parallel + * [HIVE-8096] - Fix a few small nits in TestExtendedAcls + * [HIVE-8100] - Add QTEST_LEAVE_FILES to QTestUtil + * [HIVE-8137] - Empty ORC file handling + * [HIVE-8245] - Collect table read entities at same time as view read entities + * [HIVE-8320] - Error in MetaException(message:Got exception: org.apache.thrift.transport.TTransportException java.net.SocketTimeoutException: Read timed out) + * [HIVE-8350] - Constant folding should happen before group-by optimization + * [HIVE-8358] - Constant folding should happen before PCR + * [HIVE-8385] - UNION Operator in Hive + * [HIVE-8428] - PCR doesnt remove filters involving casts + * [HIVE-8490] - Constant folding should happen before partition pruning + * [HIVE-8492] - Enhance Constant Folding to propagate constants for simple expressions + * [HIVE-8501] - Fix CBO to use indexes when GenericUDFBridge is applied + * [HIVE-8585] - Constant folding should happen before ppd + * [HIVE-8597] - SMB join small table side should use the same set of serialized payloads across tasks + * [HIVE-8598] - Push constant filters through joins + * [HIVE-8748] - jdbc uber jar is missing commons-logging + * [HIVE-8779] - Tez in-place progress UI can show wrong estimated time for sub-second queries + +** New Feature + * [HIVE-5317] - Implement insert, update, and delete in Hive with full ACID support + * [HIVE-5823] - Support for DECIMAL primitive type in AvroSerDe + * [HIVE-5908] - Use map-join hint to cache intermediate result + * [HIVE-6100] - Introduce basic set operations as UDFs + * [HIVE-6455] - Scalable dynamic partitioning and bucketing optimization + * [HIVE-6469] - skipTrash option in hive command line + * [HIVE-6806] - CREATE TABLE should support STORED AS AVRO + * [HIVE-7036] - get_json_object bug when extract list of list with index + * [HIVE-7054] - Support ELT UDF in vectorized mode + * [HIVE-7068] - Integrate AccumuloStorageHandler + * [HIVE-7090] - Support session-level temporary tables in Hive + * [HIVE-7122] - Storage format for create like table + * [HIVE-7158] - Use Tez auto-parallelism in Hive + * [HIVE-7203] - Optimize limit 0 + * [HIVE-7233] - File hive-hwi-0.13.1 not found on lib folder + * [HIVE-7255] - Allow partial partition spec in analyze command + * [HIVE-7299] - Enable metadata only optimization on Tez + * [HIVE-7341] - Support for Table replication across HCatalog instances + * [HIVE-7390] - Make quote character optional and configurable in BeeLine CSV/TSV output + * [HIVE-7416] - provide context information to authorization checkPrivileges api call + * [HIVE-7430] - Implement SMB join in tez + * [HIVE-7446] - Add support to ALTER TABLE .. ADD COLUMN to Avro backed tables + * [HIVE-7506] - MetadataUpdater: provide a mechanism to edit the statistics of a column in a table (or a partition of a table) + * [HIVE-7509] - Fast stripe level merging for ORC + * [HIVE-7547] - Add ipAddress and userName to ExecHook + * [HIVE-7587] - Fetch aggregated stats from MetaStore + * [HIVE-7604] - Add Metastore API to fetch one or more partition names + * [HIVE-7654] - A method to extrapolate columnStats for partitions of a table + * [HIVE-7826] - Dynamic partition pruning on Tez + * [HIVE-8267] - Exposing hbase cell latest timestamp through hbase columns mappings to hive columns. + * [HIVE-8376] - Umbrella Jira for HiveServer2 dynamic service discovery + * [HIVE-8531] - Fold is not null filter if there are other comparison filter present on same column + * [HIVE-8690] - Move Avro dependency to 1.7.7 + + + + + + + + +** Task + * [HIVE-2974] - Add online docs for from_utc_timestamp() and to_utc_timestamp() + * [HIVE-5342] - Remove pre hadoop-0.20.0 related codes + * [HIVE-5976] - Decouple input formats from STORED as keywords + * [HIVE-6338] - Improve exception handling in createDefaultDb() in Metastore + * [HIVE-6432] - Remove deprecated methods in HCatalog + * [HIVE-6543] - TestEmbeddedThriftBinaryCLIService.testExecuteStatementAsync is failing sometimes + * [HIVE-6836] - Upgrade parquet to 1.4.0 + * [HIVE-6869] - Golden file updates for tez tests. + * [HIVE-6903] - Change default value of hive.metastore.execute.setugi to true + * [HIVE-6988] - Hive changes for tez-0.5.x compatibility + * [HIVE-7008] - Clean-up some old dead code + * [HIVE-7034] - Explain result of TezWork is not deterministic + * [HIVE-7095] - Fix test fails for both hadoop-1 and hadoop-2 + * [HIVE-7108] - Cleanup HBaseStorageHandler + * [HIVE-7126] - Cleanup build warnings while building hive projects + * [HIVE-7194] - authorization_ctas.q failing on trunk + * [HIVE-7206] - Duplicate declaration of build-helper-maven-plugin in root pom + * [HIVE-7240] - Add classifier for avro-mapred jar + * [HIVE-7289] - revert HIVE-6469 + * [HIVE-7301] - Restore constants moved to HiveConf by HIVE-7211 + * [HIVE-7364] - Trunk cannot be built on -Phadoop1 after HIVE-7144 + * [HIVE-7365] - Explain authorize for auth2 throws exception + * [HIVE-7381] - Class TezEdgeProperty missing license header + * [HIVE-7456] - HIVE-7361 missed updating authorization_fail_8 + * [HIVE-7496] - Exclude conf/hive-default.xml.template in version control and include it dist profile + * [HIVE-7497] - Fix some default values in HiveConf + * [HIVE-7498] - NPE on show grant for global privilege + * [HIVE-7524] - Enable auto conversion of SMBjoin in presence of constant propagate optimization + * [HIVE-7789] - Documentation for AccumuloStorageHandler + * [HIVE-7960] - Upgrade to Hadoop 2.5 + * [HIVE-8072] - TesParse_union is failing on trunk + * [HIVE-8224] - Support Char, Varchar in AvroSerDe + * [HIVE-8265] - Build failure on hadoop-1 + * [HIVE-8637] - In insert into X select from Y, table properties from X are clobbering those from Y + + +** Test + * [HIVE-7084] - TestWebHCatE2e is failing on trunk + * [HIVE-7085] - TestOrcHCatPigStorer.testWriteDecimal tests are failing on trunk + * [HIVE-7086] - TestHiveServer2.testConnection is failing on trunk + * [HIVE-7252] - TestTezTask.testSubmit fails in trunk + * [HIVE-7343] - Update committer list + * [HIVE-7684] - Avoid validating hook EnforceReadOnlyTable during test driver cleanup. + * [HIVE-8035] - Add SORT_QUERY_RESULTS for test that doesn't guarantee order + * [HIVE-8070] - TestHWIServer failed due to wrong references to war and properties file + * [HIVE-8213] - TestHWISessionManager failed due to miss hadoop2 dependencies + * [HIVE-8360] - Add cross cluster support for webhcat E2E tests + * [HIVE-8420] - TestHadoop20SAuthBridge broken with hadoop-1 + * [HIVE-8553] - Add a hive smoke test for Apache Bigtop + * [HIVE-8618] - Add SORT_QUERY_RESULTS for test that doesn't guarantee order #3 + + +** Wish + * [HIVE-6241] - Remove direct reference of Hadoop23Shims inQTestUtil + + Release Notes - Hive - Version 0.13.0 ** Sub-task From 844c48bc5a32eed108a206f3d6dfc1296da4165a Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sun, 9 Nov 2014 03:24:02 +0000 Subject: [PATCH 282/339] Preparing for release 0.14.0 git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637626 13f79535-47bb-0310-9956-ffa450edef68 --- .reviewboardrc | 2 +- accumulo-handler/pom.xml | 2 +- ant/pom.xml | 2 +- beeline/pom.xml | 2 +- cli/pom.xml | 2 +- common/pom.xml | 2 +- contrib/pom.xml | 2 +- hbase-handler/pom.xml | 2 +- hcatalog/core/pom.xml | 2 +- hcatalog/hcatalog-pig-adapter/pom.xml | 2 +- hcatalog/pom.xml | 2 +- hcatalog/server-extensions/pom.xml | 2 +- hcatalog/streaming/pom.xml | 2 +- hcatalog/webhcat/java-client/pom.xml | 2 +- hcatalog/webhcat/svr/pom.xml | 2 +- hwi/pom.xml | 2 +- itests/custom-serde/pom.xml | 2 +- itests/hcatalog-unit/pom.xml | 2 +- itests/hive-minikdc/pom.xml | 2 +- itests/hive-unit-hadoop2/pom.xml | 2 +- itests/hive-unit/pom.xml | 2 +- itests/pom.xml | 2 +- itests/qtest/pom.xml | 2 +- itests/test-serde/pom.xml | 2 +- itests/util/pom.xml | 2 +- jdbc/pom.xml | 2 +- metastore/pom.xml | 2 +- odbc/pom.xml | 2 +- packaging/pom.xml | 2 +- pom.xml | 2 +- ql/pom.xml | 2 +- serde/pom.xml | 2 +- service/pom.xml | 2 +- shims/0.20/pom.xml | 2 +- shims/0.20S/pom.xml | 2 +- shims/0.23/pom.xml | 2 +- shims/aggregator/pom.xml | 2 +- shims/common-secure/pom.xml | 2 +- shims/common/pom.xml | 2 +- shims/pom.xml | 2 +- testutils/pom.xml | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/.reviewboardrc b/.reviewboardrc index 0e5db59d9e72..03ef40d5835e 100644 --- a/.reviewboardrc +++ b/.reviewboardrc @@ -28,6 +28,6 @@ REPOSITORY='hive-git' REVIEWBOARD_URL='https://reviews.apache.org' -TRACKING_BRANCH='origin/trunk' +TRACKING_BRANCH='origin/branch-14' TARGET_GROUPS='hive' GUESS_FIELDS='true' diff --git a/accumulo-handler/pom.xml b/accumulo-handler/pom.xml index b00fe88566e4..a46fb6599ad8 100644 --- a/accumulo-handler/pom.xml +++ b/accumulo-handler/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/ant/pom.xml b/ant/pom.xml index ff8a32a66e46..8c7f7abc5975 100644 --- a/ant/pom.xml +++ b/ant/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/beeline/pom.xml b/beeline/pom.xml index 9a1c5dc28d23..d43722b96ba8 100644 --- a/beeline/pom.xml +++ b/beeline/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/cli/pom.xml b/cli/pom.xml index 345f124aef44..590ae26f5927 100644 --- a/cli/pom.xml +++ b/cli/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/common/pom.xml b/common/pom.xml index 42e80e2ac809..926bfe995982 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/contrib/pom.xml b/contrib/pom.xml index ffd3be3e4f22..52b4cfdcb7aa 100644 --- a/contrib/pom.xml +++ b/contrib/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/hbase-handler/pom.xml b/hbase-handler/pom.xml index d9f07630895a..310ca775192b 100644 --- a/hbase-handler/pom.xml +++ b/hbase-handler/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/hcatalog/core/pom.xml b/hcatalog/core/pom.xml index 42cb9078b900..1fd1604e025e 100644 --- a/hcatalog/core/pom.xml +++ b/hcatalog/core/pom.xml @@ -25,7 +25,7 @@ org.apache.hive.hcatalog hive-hcatalog - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/hcatalog/hcatalog-pig-adapter/pom.xml b/hcatalog/hcatalog-pig-adapter/pom.xml index 7589efb35935..452e6238fed5 100644 --- a/hcatalog/hcatalog-pig-adapter/pom.xml +++ b/hcatalog/hcatalog-pig-adapter/pom.xml @@ -25,7 +25,7 @@ org.apache.hive.hcatalog hive-hcatalog - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/hcatalog/pom.xml b/hcatalog/pom.xml index cff3837dd20d..356110d79a26 100644 --- a/hcatalog/pom.xml +++ b/hcatalog/pom.xml @@ -24,7 +24,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/hcatalog/server-extensions/pom.xml b/hcatalog/server-extensions/pom.xml index d222c5978b21..c1383dff3d1c 100644 --- a/hcatalog/server-extensions/pom.xml +++ b/hcatalog/server-extensions/pom.xml @@ -25,7 +25,7 @@ org.apache.hive.hcatalog hive-hcatalog - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/hcatalog/streaming/pom.xml b/hcatalog/streaming/pom.xml index c5e1ae842cac..a92450adf3d7 100644 --- a/hcatalog/streaming/pom.xml +++ b/hcatalog/streaming/pom.xml @@ -20,7 +20,7 @@ org.apache.hive.hcatalog hive-hcatalog - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/hcatalog/webhcat/java-client/pom.xml b/hcatalog/webhcat/java-client/pom.xml index 98233c6cadca..c0fe55d473ea 100644 --- a/hcatalog/webhcat/java-client/pom.xml +++ b/hcatalog/webhcat/java-client/pom.xml @@ -25,7 +25,7 @@ org.apache.hive.hcatalog hive-hcatalog - 0.14.0-SNAPSHOT + 0.14.0 ../../pom.xml diff --git a/hcatalog/webhcat/svr/pom.xml b/hcatalog/webhcat/svr/pom.xml index 3cfc8d512423..c34935b64fc4 100644 --- a/hcatalog/webhcat/svr/pom.xml +++ b/hcatalog/webhcat/svr/pom.xml @@ -25,7 +25,7 @@ org.apache.hive.hcatalog hive-hcatalog - 0.14.0-SNAPSHOT + 0.14.0 ../../pom.xml diff --git a/hwi/pom.xml b/hwi/pom.xml index 35c124b17880..5770d83a0ef1 100644 --- a/hwi/pom.xml +++ b/hwi/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/itests/custom-serde/pom.xml b/itests/custom-serde/pom.xml index cf099c0fec9e..442e8cfcfca1 100644 --- a/itests/custom-serde/pom.xml +++ b/itests/custom-serde/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive-it - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/itests/hcatalog-unit/pom.xml b/itests/hcatalog-unit/pom.xml index d1c274cefd7c..c40219324472 100644 --- a/itests/hcatalog-unit/pom.xml +++ b/itests/hcatalog-unit/pom.xml @@ -25,7 +25,7 @@ org.apache.hive hive-it - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/itests/hive-minikdc/pom.xml b/itests/hive-minikdc/pom.xml index 0bb78a3a0a6c..21fcfa05aed4 100644 --- a/itests/hive-minikdc/pom.xml +++ b/itests/hive-minikdc/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive-it - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/itests/hive-unit-hadoop2/pom.xml b/itests/hive-unit-hadoop2/pom.xml index cbdf506f94e2..bf27866ed4dd 100644 --- a/itests/hive-unit-hadoop2/pom.xml +++ b/itests/hive-unit-hadoop2/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive-it - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/itests/hive-unit/pom.xml b/itests/hive-unit/pom.xml index 077631a7d809..1b8eb7f67186 100644 --- a/itests/hive-unit/pom.xml +++ b/itests/hive-unit/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive-it - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/itests/pom.xml b/itests/pom.xml index f6d1d838ec3e..eab36c989c1d 100644 --- a/itests/pom.xml +++ b/itests/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/itests/qtest/pom.xml b/itests/qtest/pom.xml index 7a932ce161b0..0998cb105e89 100644 --- a/itests/qtest/pom.xml +++ b/itests/qtest/pom.xml @@ -20,7 +20,7 @@ org.apache.hive hive-it - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/itests/test-serde/pom.xml b/itests/test-serde/pom.xml index 44320849d46a..22c123ab4f97 100644 --- a/itests/test-serde/pom.xml +++ b/itests/test-serde/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive-it - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/itests/util/pom.xml b/itests/util/pom.xml index 8a7f3a719a7f..0753ba43e568 100644 --- a/itests/util/pom.xml +++ b/itests/util/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive-it - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/jdbc/pom.xml b/jdbc/pom.xml index 6519f93bed41..9f3ff9ce98d6 100644 --- a/jdbc/pom.xml +++ b/jdbc/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/metastore/pom.xml b/metastore/pom.xml index 5c7d4eb1f986..a1a8abd75910 100644 --- a/metastore/pom.xml +++ b/metastore/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/odbc/pom.xml b/odbc/pom.xml index e2335332fdb3..0ec820b04367 100644 --- a/odbc/pom.xml +++ b/odbc/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/packaging/pom.xml b/packaging/pom.xml index ebf34ede064f..3082083be013 100644 --- a/packaging/pom.xml +++ b/packaging/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/pom.xml b/pom.xml index adf54bbe87ad..501d54705fe0 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 pom Hive diff --git a/ql/pom.xml b/ql/pom.xml index 863c6f41b900..afe5b19962b9 100644 --- a/ql/pom.xml +++ b/ql/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/serde/pom.xml b/serde/pom.xml index b7bc4f04dce4..55080fc94362 100644 --- a/serde/pom.xml +++ b/serde/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/service/pom.xml b/service/pom.xml index 906fe15a1610..ffca6643b6bd 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/shims/0.20/pom.xml b/shims/0.20/pom.xml index 69eb151deacc..65caca083264 100644 --- a/shims/0.20/pom.xml +++ b/shims/0.20/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../../pom.xml diff --git a/shims/0.20S/pom.xml b/shims/0.20S/pom.xml index 4d184b082773..af27cf271782 100644 --- a/shims/0.20S/pom.xml +++ b/shims/0.20S/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../../pom.xml diff --git a/shims/0.23/pom.xml b/shims/0.23/pom.xml index ad71fccc2f94..10cd31db41ca 100644 --- a/shims/0.23/pom.xml +++ b/shims/0.23/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../../pom.xml diff --git a/shims/aggregator/pom.xml b/shims/aggregator/pom.xml index fe18ccb35c0f..db88ba850696 100644 --- a/shims/aggregator/pom.xml +++ b/shims/aggregator/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../../pom.xml diff --git a/shims/common-secure/pom.xml b/shims/common-secure/pom.xml index 1bc270ec1baa..4d38c557f4bb 100644 --- a/shims/common-secure/pom.xml +++ b/shims/common-secure/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../../pom.xml diff --git a/shims/common/pom.xml b/shims/common/pom.xml index 889b1caf2b0c..e3d97dfc93af 100644 --- a/shims/common/pom.xml +++ b/shims/common/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../../pom.xml diff --git a/shims/pom.xml b/shims/pom.xml index f54621d4ce82..d9982b216e9e 100644 --- a/shims/pom.xml +++ b/shims/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml diff --git a/testutils/pom.xml b/testutils/pom.xml index b1ea4db454a6..7bf3819f96bb 100644 --- a/testutils/pom.xml +++ b/testutils/pom.xml @@ -19,7 +19,7 @@ org.apache.hive hive - 0.14.0-SNAPSHOT + 0.14.0 ../pom.xml From 8592972509f55d1d71867b5925ca992e54527b4f Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sun, 9 Nov 2014 06:59:24 +0000 Subject: [PATCH 283/339] Preparing for release 0.14.0 git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637628 13f79535-47bb-0310-9956-ffa450edef68 --- packaging/src/main/assembly/bin.xml | 2 +- packaging/src/main/assembly/src.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packaging/src/main/assembly/bin.xml b/packaging/src/main/assembly/bin.xml index 3f66b1f65a75..b6bfb1c8c63c 100644 --- a/packaging/src/main/assembly/bin.xml +++ b/packaging/src/main/assembly/bin.xml @@ -40,7 +40,7 @@ true org.apache.hive.hcatalog:* - org.slf4j:* + org.slf4j:* diff --git a/packaging/src/main/assembly/src.xml b/packaging/src/main/assembly/src.xml index dae3150296a2..d3316408f3cc 100644 --- a/packaging/src/main/assembly/src.xml +++ b/packaging/src/main/assembly/src.xml @@ -48,6 +48,7 @@ NOTICE CHANGELOG RELEASE_NOTES.txt + accumulo-handler/**/* ant/**/* beeline/**/* bin/**/* From 8039a28dc1d06279546b20c18b8aa145bc94af5a Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Sun, 9 Nov 2014 07:20:40 +0000 Subject: [PATCH 284/339] Preparing for release 0.14.0 git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1637631 13f79535-47bb-0310-9956-ffa450edef68 --- packaging/src/main/assembly/bin.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/packaging/src/main/assembly/bin.xml b/packaging/src/main/assembly/bin.xml index b6bfb1c8c63c..8e617d83b507 100644 --- a/packaging/src/main/assembly/bin.xml +++ b/packaging/src/main/assembly/bin.xml @@ -39,6 +39,7 @@ true true + org.apache.hadoop:* org.apache.hive.hcatalog:* org.slf4j:* From a99fc47da1b8c4c11b5ca30ec434ca7ce23346fd Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 12 Nov 2014 01:42:15 +0000 Subject: [PATCH 285/339] HIVE-8811: Dynamic partition pruning can result in NPE during query compilation (Gunther Hagleitner, reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1638686 13f79535-47bb-0310-9956-ffa450edef68 --- ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java index 364cad9f7a98..ea129904f994 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java @@ -150,6 +150,7 @@ private void runCycleAnalysisForPartitionPruning(OptimizeTezProcContext procCtx, LOG.info("Found cycle in operator plan..."); cycleFree = false; removeEventOperator(component); + break; } } LOG.info("Cycle free: " + cycleFree); @@ -227,7 +228,7 @@ private void connect(Operator o, AtomicInteger index, Stack> node for (Operator child : children) { if (!indexes.containsKey(child)) { connect(child, index, nodes, indexes, lowLinks, components); - lowLinks.put(child, Math.min(lowLinks.get(o), lowLinks.get(child))); + lowLinks.put(o, Math.min(lowLinks.get(o), lowLinks.get(child))); } else if (nodes.contains(child)) { lowLinks.put(o, Math.min(lowLinks.get(o), indexes.get(child))); } From 1d65d3515fff8d777d66f708fa0c5649659007c2 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Wed, 12 Nov 2014 02:10:09 +0000 Subject: [PATCH 286/339] HIVE-8715 : Hive 14 upgrade scripts can fail for statistics if database was created using auto-create ADDENDUM (Sergey Shelukhin, reviewed by Ashutosh Chauhan and Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1638688 13f79535-47bb-0310-9956-ffa450edef68 --- .../upgrade/oracle/020-HIVE-7784.oracle.sql | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql b/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql index 611232131fc5..ad14819c98d9 100644 --- a/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql +++ b/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql @@ -1,27 +1,13 @@ -- -- Create the table if it doesn't exist. -- -CREATE TABLE IF NOT EXISTS PART_COL_STATS ( - CS_ID NUMBER NOT NULL, - DB_NAME VARCHAR2(128) NOT NULL, - TABLE_NAME VARCHAR2(128) NOT NULL, - PARTITION_NAME VARCHAR2(767) NOT NULL, - COLUMN_NAME VARCHAR2(128) NOT NULL, - COLUMN_TYPE VARCHAR2(128) NOT NULL, - PART_ID NUMBER NOT NULL, - LONG_LOW_VALUE NUMBER, - LONG_HIGH_VALUE NUMBER, - DOUBLE_LOW_VALUE NUMBER, - DOUBLE_HIGH_VALUE NUMBER, - BIG_DECIMAL_LOW_VALUE VARCHAR2(4000), - BIG_DECIMAL_HIGH_VALUE VARCHAR2(4000), - NUM_NULLS NUMBER NOT NULL, - NUM_DISTINCTS NUMBER, - AVG_COL_LEN NUMBER, - MAX_COL_LEN NUMBER, - NUM_TRUES NUMBER, - NUM_FALSES NUMBER, - LAST_ANALYZED NUMBER NOT NULL -); +declare pcs_count int; +begin + select count(*) into pcs_count from user_tables where table_name = 'PART_COL_STATS'; + if pcs_count = 0 then + EXECUTE IMMEDIATE 'CREATE TABLE PART_COL_STATS (CS_ID NUMBER NOT NULL, DB_NAME VARCHAR2(128) NOT NULL, TABLE_NAME VARCHAR2(128) NOT NULL, PARTITION_NAME VARCHAR2(767) NOT NULL, COLUMN_NAME VARCHAR2(128) NOT NULL, COLUMN_TYPE VARCHAR2(128) NOT NULL, PART_ID NUMBER NOT NULL, LONG_LOW_VALUE NUMBER, LONG_HIGH_VALUE NUMBER, DOUBLE_LOW_VALUE NUMBER, DOUBLE_HIGH_VALUE NUMBER, BIG_DECIMAL_LOW_VALUE VARCHAR2(4000), BIG_DECIMAL_HIGH_VALUE VARCHAR2(4000), NUM_NULLS NUMBER NOT NULL, NUM_DISTINCTS NUMBER, AVG_COL_LEN NUMBER, MAX_COL_LEN NUMBER, NUM_TRUES NUMBER, NUM_FALSES NUMBER, LAST_ANALYZED NUMBER NOT NULL)'; + end if; +end; +/ CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME); From c1319e99d85474e3cf547e109685a1009ff8bdc0 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Wed, 12 Nov 2014 02:42:02 +0000 Subject: [PATCH 287/339] HIVE-8805: CBO skipped due to SemanticException: Line 0:-1 Both left and right aliases encountered in JOIN 'avg_cs_ext_discount_amt' (Laljo John Pullokkaran via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1638695 13f79535-47bb-0310-9956-ffa450edef68 --- .../rules/HivePushFilterPastJoinRule.java | 173 +++++++++--------- 1 file changed, 88 insertions(+), 85 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java index cf03a4ff185c..1c483eabcc1a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HivePushFilterPastJoinRule.java @@ -38,118 +38,121 @@ public abstract class HivePushFilterPastJoinRule extends PushFilterPastJoinRule { - public static final HivePushFilterPastJoinRule FILTER_ON_JOIN = new HivePushFilterIntoJoinRule(); - - public static final HivePushFilterPastJoinRule JOIN = new HivePushDownJoinConditionRule(); - - /** - * Creates a PushFilterPastJoinRule with an explicit root operand. - */ - protected HivePushFilterPastJoinRule(RelOptRuleOperand operand, String id, - boolean smart, RelFactories.FilterFactory filterFactory, - RelFactories.ProjectFactory projectFactory) { - super(operand, id, smart, filterFactory, projectFactory); - } - - /** - * Rule that tries to push filter expressions into a join condition and into - * the inputs of the join. - */ - public static class HivePushFilterIntoJoinRule extends - HivePushFilterPastJoinRule { - public HivePushFilterIntoJoinRule() { - super(RelOptRule.operand(FilterRelBase.class, - RelOptRule.operand(JoinRelBase.class, RelOptRule.any())), - "HivePushFilterPastJoinRule:filter", true, - HiveFilterRel.DEFAULT_FILTER_FACTORY, - HiveProjectRel.DEFAULT_PROJECT_FACTORY); - } - - @Override - public void onMatch(RelOptRuleCall call) { - FilterRelBase filter = call.rel(0); - JoinRelBase join = call.rel(1); - super.perform(call, filter, join); - } - } - - public static class HivePushDownJoinConditionRule extends - HivePushFilterPastJoinRule { - public HivePushDownJoinConditionRule() { - super(RelOptRule.operand(JoinRelBase.class, RelOptRule.any()), - "HivePushFilterPastJoinRule:no-filter", true, - HiveFilterRel.DEFAULT_FILTER_FACTORY, - HiveProjectRel.DEFAULT_PROJECT_FACTORY); - } - - @Override - public void onMatch(RelOptRuleCall call) { - JoinRelBase join = call.rel(0); - super.perform(call, null, join); - } - } - - /* - * Any predicates pushed down to joinFilters that aren't equality - * conditions: put them back as aboveFilters because Hive doesn't support - * not equi join conditions. - */ - @Override + public static final HivePushFilterPastJoinRule FILTER_ON_JOIN = new HivePushFilterIntoJoinRule(); + + public static final HivePushFilterPastJoinRule JOIN = new HivePushDownJoinConditionRule(); + + /** + * Creates a PushFilterPastJoinRule with an explicit root operand. + */ + protected HivePushFilterPastJoinRule(RelOptRuleOperand operand, String id, boolean smart, + RelFactories.FilterFactory filterFactory, RelFactories.ProjectFactory projectFactory) { + super(operand, id, smart, filterFactory, projectFactory); + } + + /** + * Rule that tries to push filter expressions into a join condition and into + * the inputs of the join. + */ + public static class HivePushFilterIntoJoinRule extends HivePushFilterPastJoinRule { + public HivePushFilterIntoJoinRule() { + super(RelOptRule.operand(FilterRelBase.class, + RelOptRule.operand(JoinRelBase.class, RelOptRule.any())), + "HivePushFilterPastJoinRule:filter", true, HiveFilterRel.DEFAULT_FILTER_FACTORY, + HiveProjectRel.DEFAULT_PROJECT_FACTORY); + } + + @Override + public void onMatch(RelOptRuleCall call) { + FilterRelBase filter = call.rel(0); + JoinRelBase join = call.rel(1); + super.perform(call, filter, join); + } + } + + public static class HivePushDownJoinConditionRule extends HivePushFilterPastJoinRule { + public HivePushDownJoinConditionRule() { + super(RelOptRule.operand(JoinRelBase.class, RelOptRule.any()), + "HivePushFilterPastJoinRule:no-filter", true, HiveFilterRel.DEFAULT_FILTER_FACTORY, + HiveProjectRel.DEFAULT_PROJECT_FACTORY); + } + + @Override + public void onMatch(RelOptRuleCall call) { + JoinRelBase join = call.rel(0); + super.perform(call, null, join); + } + } + + /* + * Any predicates pushed down to joinFilters that aren't equality conditions: + * put them back as aboveFilters because Hive doesn't support not equi join + * conditions. + */ + @Override protected void validateJoinFilters(List aboveFilters, List joinFilters, JoinRelBase join, JoinRelType joinType) { if (joinType.equals(JoinRelType.INNER)) { ListIterator filterIter = joinFilters.listIterator(); while (filterIter.hasNext()) { RexNode exp = filterIter.next(); + if (exp instanceof RexCall) { RexCall c = (RexCall) exp; - if ((c.getOperator().getKind() == SqlKind.EQUALS) - || (c.getOperator().getKind() == SqlKind.LESS_THAN) - || (c.getOperator().getKind() == SqlKind.GREATER_THAN) - || (c.getOperator().getKind() == SqlKind.LESS_THAN_OR_EQUAL) - || (c.getOperator().getKind() == SqlKind.GREATER_THAN_OR_EQUAL)) { - boolean validHiveJoinFilter = true; + boolean validHiveJoinFilter = false; + + if ((c.getOperator().getKind() == SqlKind.EQUALS)) { + validHiveJoinFilter = true; for (RexNode rn : c.getOperands()) { - // NOTE: Hive dis-allows projections from both left - // & - // right side + // NOTE: Hive dis-allows projections from both left & right side // of join condition. Example: Hive disallows - // (r1.x=r2.x)=(r1.y=r2.y) on join condition. + // (r1.x +r2.x)=(r1.y+r2.y) on join condition. if (filterRefersToBothSidesOfJoin(rn, join)) { validHiveJoinFilter = false; break; } } - if (validHiveJoinFilter) - continue; + } else if ((c.getOperator().getKind() == SqlKind.LESS_THAN) + || (c.getOperator().getKind() == SqlKind.GREATER_THAN) + || (c.getOperator().getKind() == SqlKind.LESS_THAN_OR_EQUAL) + || (c.getOperator().getKind() == SqlKind.GREATER_THAN_OR_EQUAL)) { + validHiveJoinFilter = true; + // NOTE: Hive dis-allows projections from both left & right side of + // join in in equality condition. Example: Hive disallows (r1.x < + // r2.x) on join condition. + if (filterRefersToBothSidesOfJoin(c, join)) { + validHiveJoinFilter = false; + } } + + if (validHiveJoinFilter) + continue; } + aboveFilters.add(exp); filterIter.remove(); } } } - private boolean filterRefersToBothSidesOfJoin(RexNode filter, JoinRelBase j) { - boolean refersToBothSides = false; + private boolean filterRefersToBothSidesOfJoin(RexNode filter, JoinRelBase j) { + boolean refersToBothSides = false; - int joinNoOfProjects = j.getRowType().getFieldCount(); - BitSet filterProjs = new BitSet(joinNoOfProjects); - BitSet allLeftProjs = new BitSet(joinNoOfProjects); - BitSet allRightProjs = new BitSet(joinNoOfProjects); - allLeftProjs.set(0, j.getInput(0).getRowType().getFieldCount(), true); - allRightProjs.set(j.getInput(0).getRowType().getFieldCount(), - joinNoOfProjects, true); + int joinNoOfProjects = j.getRowType().getFieldCount(); + BitSet filterProjs = new BitSet(joinNoOfProjects); + BitSet allLeftProjs = new BitSet(joinNoOfProjects); + BitSet allRightProjs = new BitSet(joinNoOfProjects); + allLeftProjs.set(0, j.getInput(0).getRowType().getFieldCount(), true); + allRightProjs.set(j.getInput(0).getRowType().getFieldCount(), joinNoOfProjects, true); - InputFinder inputFinder = new InputFinder(filterProjs); - filter.accept(inputFinder); + InputFinder inputFinder = new InputFinder(filterProjs); + filter.accept(inputFinder); - if (allLeftProjs.intersects(filterProjs) - && allRightProjs.intersects(filterProjs)) - refersToBothSides = true; + if (allLeftProjs.intersects(filterProjs) && allRightProjs.intersects(filterProjs)) + refersToBothSides = true; - return refersToBothSides; - } + return refersToBothSides; + } } // End PushFilterPastJoinRule.java From 77ccb39c89979ab908348b8a2558b01def9d76e1 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 13 Nov 2014 18:34:36 +0000 Subject: [PATCH 288/339] HIVE-8845: Switch to Tez 0.5.2 (Gunther Hagleitner, reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1639435 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 501d54705fe0..6fd66ce8cf0a 100644 --- a/pom.xml +++ b/pom.xml @@ -152,7 +152,7 @@ 1.0.1 1.7.5 4.0.4 - 0.5.2-SNAPSHOT + 0.5.2 2.2.0 1.1 0.2 From e0ac9e9b805d4b55a57b10d01ee83094fc64a8f8 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Thu, 13 Nov 2014 19:54:27 +0000 Subject: [PATCH 289/339] HIVE-8295 : Add batch retrieve partition objects for metastore direct sql (Selina Zhang and Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1639501 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 5 + .../hive/metastore/MetaStoreDirectSql.java | 221 ++++++++++++------ .../hadoop/hive/metastore/ObjectStore.java | 6 +- .../hive/metastore/StatObjectConverter.java | 40 ++-- 4 files changed, 169 insertions(+), 103 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index c8504df0665e..ea5aed80d626 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -508,6 +508,11 @@ public static enum ConfVars { "work for all queries on your datastore. If all SQL queries fail (for example, your\n" + "metastore is backed by MongoDB), you might want to disable this to save the\n" + "try-and-fall-back cost."), + METASTORE_DIRECT_SQL_PARTITION_BATCH_SIZE("hive.metastore.direct.sql.batch.size", 0, + "Batch size for partition and other object retrieval from the underlying DB in direct\n" + + "SQL. For some DBs like Oracle and MSSQL, there are hardcoded or perf-based limitations\n" + + "that necessitate this. For DBs that can handle the queries, this isn't necessary and\n" + + "may impede performance. -1 means no batching, 0 means automatic batching."), METASTORE_TRY_DIRECT_SQL_DDL("hive.metastore.try.direct.sql.ddl", true, "Same as hive.metastore.try.direct.sql, for read statements within a transaction that\n" + "modifies metastore data. Due to non-standard behavior in Postgres, if a direct SQL\n" + diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java index b6c633cc5399..82f504f056b0 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java @@ -40,6 +40,9 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.metastore.api.AggrStats; import org.apache.hadoop.hive.metastore.api.ColumnStatistics; import org.apache.hadoop.hive.metastore.api.ColumnStatisticsData; @@ -80,64 +83,89 @@ * to SQL stores only. There's always a way to do without direct SQL. */ class MetaStoreDirectSql { - private static final Log LOG = LogFactory.getLog(MetaStoreDirectSql.class); + private static enum DB { + MYSQL, + ORACLE, + MSSQL, + OTHER + } + private static final int NO_BATCHING = -1, DETECT_BATCHING = 0; + + private static final Log LOG = LogFactory.getLog(MetaStoreDirectSql.class); private final PersistenceManager pm; /** - * We want to avoid db-specific code in this class and stick with ANSI SQL. However, mysql - * and postgres are differently ansi-incompatible (mysql by default doesn't support quoted - * identifiers, and postgres contravenes ANSI by coercing unquoted ones to lower case). + * We want to avoid db-specific code in this class and stick with ANSI SQL. However: + * 1) mysql and postgres are differently ansi-incompatible (mysql by default doesn't support + * quoted identifiers, and postgres contravenes ANSI by coercing unquoted ones to lower case). * MySQL's way of working around this is simpler (just set ansi quotes mode on), so we will - * use that. MySQL detection is done by actually issuing the set-ansi-quotes command. + * use that. MySQL detection is done by actually issuing the set-ansi-quotes command; + * + * Use sparingly, we don't want to devolve into another DataNucleus... */ - private final boolean isMySql; + private final DB dbType; + private final int batchSize; /** * Whether direct SQL can be used with the current datastore backing {@link #pm}. */ private final boolean isCompatibleDatastore; - - public MetaStoreDirectSql(PersistenceManager pm) { + + public MetaStoreDirectSql(PersistenceManager pm, Configuration conf) { this.pm = pm; - Transaction tx = pm.currentTransaction(); - tx.begin(); - boolean isMySql = false; - try { - trySetAnsiQuotesForMysql(); - isMySql = true; - } catch (SQLException sqlEx) { - LOG.info("MySQL check failed, assuming we are not on mysql: " + sqlEx.getMessage()); - tx.rollback(); - tx = pm.currentTransaction(); - tx.begin(); + this.dbType = determineDbType(); + int batchSize = HiveConf.getIntVar(conf, ConfVars.METASTORE_DIRECT_SQL_PARTITION_BATCH_SIZE); + if (batchSize == DETECT_BATCHING) { + batchSize = (dbType == DB.ORACLE || dbType == DB.MSSQL) ? 1000 : NO_BATCHING; + } + this.batchSize = batchSize; + + this.isCompatibleDatastore = ensureDbInit() && runTestQuery(); + if (isCompatibleDatastore) { + LOG.info("Using direct SQL, underlying DB is " + dbType); } + } + + private DB determineDbType() { + DB dbType = DB.OTHER; + if (runDbCheck("SET @@session.sql_mode=ANSI_QUOTES", "MySql")) { + dbType = DB.MYSQL; + } else if (runDbCheck("SELECT version FROM v$instance", "Oracle")) { + dbType = DB.ORACLE; + } else if (runDbCheck("SELECT @@version", "MSSQL")) { + dbType = DB.MSSQL; + } + return dbType; + } - boolean isCompatibleDatastore = true; + private boolean ensureDbInit() { + Transaction tx = pm.currentTransaction(); try { // Force the underlying db to initialize. pm.newQuery(MDatabase.class, "name == ''").execute(); pm.newQuery(MTableColumnStatistics.class, "dbName == ''").execute(); pm.newQuery(MPartitionColumnStatistics.class, "dbName == ''").execute(); + return true; } catch (Exception ex) { - isCompatibleDatastore = false; LOG.error("Database initialization failed; direct SQL is disabled", ex); tx.rollback(); + return false; } - if (isCompatibleDatastore) { - // Self-test query. If it doesn't work, we will self-disable. What a PITA... - String selfTestQuery = "select \"DB_ID\" from \"DBS\""; - try { - pm.newQuery("javax.jdo.query.SQL", selfTestQuery).execute(); - tx.commit(); - } catch (Exception ex) { - isCompatibleDatastore = false; - LOG.error("Self-test query [" + selfTestQuery + "] failed; direct SQL is disabled", ex); - tx.rollback(); - } - } + } - this.isCompatibleDatastore = isCompatibleDatastore; - this.isMySql = isMySql; + private boolean runTestQuery() { + Transaction tx = pm.currentTransaction(); + // Run a self-test query. If it doesn't work, we will self-disable. What a PITA... + String selfTestQuery = "select \"DB_ID\" from \"DBS\""; + try { + pm.newQuery("javax.jdo.query.SQL", selfTestQuery).execute(); + tx.commit(); + return true; + } catch (Exception ex) { + LOG.error("Self-test query [" + selfTestQuery + "] failed; direct SQL is disabled", ex); + tx.rollback(); + return false; + } } public boolean isCompatibleDatastore() { @@ -150,22 +178,16 @@ public boolean isCompatibleDatastore() { * here - for eg., for MySQL, we signal that we want to use ANSI SQL quoting behaviour */ private void doDbSpecificInitializationsBeforeQuery() throws MetaException { - if (!isMySql) return; + if (dbType != DB.MYSQL) return; try { assert pm.currentTransaction().isActive(); // must be inside tx together with queries - trySetAnsiQuotesForMysql(); + executeNoResult("SET @@session.sql_mode=ANSI_QUOTES"); } catch (SQLException sqlEx) { throw new MetaException("Error setting ansi quotes: " + sqlEx.getMessage()); } } - /** - * MySQL, by default, doesn't recognize ANSI quotes which we need to have for Postgres. - * Try to set the ANSI quotes mode on for the session. Due to connection pooling, needs - * to be called in the same transaction as the actual queries. - */ - private void trySetAnsiQuotesForMysql() throws SQLException { - final String queryText = "SET @@session.sql_mode=ANSI_QUOTES"; + private void executeNoResult(final String queryText) throws SQLException { JDOConnection jdoConn = pm.getDataStoreConnection(); boolean doTrace = LOG.isDebugEnabled(); try { @@ -177,6 +199,23 @@ private void trySetAnsiQuotesForMysql() throws SQLException { } } + private boolean runDbCheck(String queryText, String name) { + Transaction tx = pm.currentTransaction(); + if (!tx.isActive()) { + tx.begin(); + } + try { + executeNoResult(queryText); + return true; + } catch (Throwable t) { + LOG.debug(name + " check failed, assuming we are not on " + name + ": " + t.getMessage()); + tx.rollback(); + tx = pm.currentTransaction(); + tx.begin(); + return false; + } + } + public Database getDatabase(String dbName) throws MetaException{ Query queryDbSelector = null; Query queryDbParams = null; @@ -209,7 +248,7 @@ public Database getDatabase(String dbName) throws MetaException{ } Object[] dbline = sqlResult.get(0); - Long dbid = StatObjectConverter.extractSqlLong(dbline[0]); + Long dbid = extractSqlLong(dbline[0]); String queryTextDbParams = "select \"PARAM_KEY\", \"PARAM_VALUE\" " + " FROM \"DATABASE_PARAMS\" " @@ -256,20 +295,20 @@ public Database getDatabase(String dbName) throws MetaException{ /** * Gets partitions by using direct SQL queries. + * Note that batching is not needed for this method - list of names implies the batch size; * @param dbName Metastore db name. * @param tblName Metastore table name. * @param partNames Partition names to get. - * @param max The maximum number of partitions to return. * @return List of partitions. */ public List getPartitionsViaSqlFilter( - String dbName, String tblName, List partNames, Integer max) throws MetaException { + String dbName, String tblName, List partNames) throws MetaException { if (partNames.isEmpty()) { return new ArrayList(); } return getPartitionsViaSqlFilterInternal(dbName, tblName, null, "\"PARTITIONS\".\"PART_NAME\" in (" + makeParams(partNames.size()) + ")", - partNames, new ArrayList(), max); + partNames, new ArrayList(), null); } /** @@ -382,18 +421,39 @@ private List getPartitionsViaSqlFilterInternal(String dbName, String return new ArrayList(); // no partitions, bail early. } + // Get full objects. For Oracle, do it in batches. + List result = null; + if (batchSize != NO_BATCHING && batchSize < sqlResult.size()) { + result = new ArrayList(sqlResult.size()); + while (result.size() < sqlResult.size()) { + int toIndex = Math.min(result.size() + batchSize, sqlResult.size()); + List batchedSqlResult = sqlResult.subList(result.size(), toIndex); + result.addAll(getPartitionsFromPartitionIds(dbName, tblName, isView, batchedSqlResult)); + } + } else { + result = getPartitionsFromPartitionIds(dbName, tblName, isView, sqlResult); + } + + timingTrace(doTrace, queryText, start, queryTime); + query.closeAll(); + return result; + } + + private List getPartitionsFromPartitionIds(String dbName, String tblName, + Boolean isView, List partIdList) throws MetaException { + boolean doTrace = LOG.isDebugEnabled(); + int idStringWidth = (int)Math.ceil(Math.log10(partIdList.size())) + 1; // 1 for comma + int sbCapacity = partIdList.size() * idStringWidth; // Prepare StringBuilder for "PART_ID in (...)" to use in future queries. - int sbCapacity = sqlResult.size() * 7; // if there are 100k things => 6 chars, plus comma StringBuilder partSb = new StringBuilder(sbCapacity); - // Assume db and table names are the same for all partition, that's what we're selecting for. - for (Object partitionId : sqlResult) { - partSb.append(StatObjectConverter.extractSqlLong(partitionId)).append(","); + for (Object partitionId : partIdList) { + partSb.append(extractSqlLong(partitionId)).append(","); } String partIds = trimCommaList(partSb); - timingTrace(doTrace, queryText, start, queryTime); - // Now get most of the other fields. - queryText = + // Get most of the fields for the IDs provided. + // Assume db and table names are the same for all partition, as provided in arguments. + String queryText = "select \"PARTITIONS\".\"PART_ID\", \"SDS\".\"SD_ID\", \"SDS\".\"CD_ID\"," + " \"SERDES\".\"SERDE_ID\", \"PARTITIONS\".\"CREATE_TIME\"," + " \"PARTITIONS\".\"LAST_ACCESS_TIME\", \"SDS\".\"INPUT_FORMAT\", \"SDS\".\"IS_COMPRESSED\"," @@ -403,11 +463,11 @@ private List getPartitionsViaSqlFilterInternal(String dbName, String + " left outer join \"SDS\" on \"PARTITIONS\".\"SD_ID\" = \"SDS\".\"SD_ID\" " + " left outer join \"SERDES\" on \"SDS\".\"SERDE_ID\" = \"SERDES\".\"SERDE_ID\" " + "where \"PART_ID\" in (" + partIds + ") order by \"PART_NAME\" asc"; - start = doTrace ? System.nanoTime() : 0; - query = pm.newQuery("javax.jdo.query.SQL", queryText); + long start = doTrace ? System.nanoTime() : 0; + Query query = pm.newQuery("javax.jdo.query.SQL", queryText); @SuppressWarnings("unchecked") - List sqlResult2 = (List)query.executeWithArray(params); - queryTime = doTrace ? System.nanoTime() : 0; + List sqlResult = (List)query.execute(); + long queryTime = doTrace ? System.nanoTime() : 0; // Read all the fields and create partitions, SDs and serdes. TreeMap partitions = new TreeMap(); @@ -415,19 +475,19 @@ private List getPartitionsViaSqlFilterInternal(String dbName, String TreeMap serdes = new TreeMap(); TreeMap> colss = new TreeMap>(); // Keep order by name, consistent with JDO. - ArrayList orderedResult = new ArrayList(sqlResult.size()); + ArrayList orderedResult = new ArrayList(partIdList.size()); // Prepare StringBuilder-s for "in (...)" lists to use in one-to-many queries. StringBuilder sdSb = new StringBuilder(sbCapacity), serdeSb = new StringBuilder(sbCapacity); StringBuilder colsSb = new StringBuilder(7); // We expect that there's only one field schema. tblName = tblName.toLowerCase(); dbName = dbName.toLowerCase(); - for (Object[] fields : sqlResult2) { + for (Object[] fields : sqlResult) { // Here comes the ugly part... - long partitionId = StatObjectConverter.extractSqlLong(fields[0]); - Long sdId = StatObjectConverter.extractSqlLong(fields[1]); - Long colId = StatObjectConverter.extractSqlLong(fields[2]); - Long serdeId = StatObjectConverter.extractSqlLong(fields[3]); + long partitionId = extractSqlLong(fields[0]); + Long sdId = extractSqlLong(fields[1]); + Long colId = extractSqlLong(fields[2]); + Long serdeId = extractSqlLong(fields[3]); // A partition must have either everything set, or nothing set if it's a view. if (sdId == null || colId == null || serdeId == null) { if (isView == null) { @@ -596,7 +656,7 @@ public void apply(StorageDescriptor t, Object[] fields) throws MetaException { currentListId = null; t.getSkewedInfo().addToSkewedColValues(new ArrayList()); } else { - long fieldsListId = StatObjectConverter.extractSqlLong(fields[1]); + long fieldsListId = extractSqlLong(fields[1]); if (currentListId == null || fieldsListId != currentListId) { currentList = new ArrayList(); currentListId = fieldsListId; @@ -638,7 +698,7 @@ public void apply(StorageDescriptor t, Object[] fields) throws MetaException { currentList = new ArrayList(); // left outer join produced a list with no values currentListId = null; } else { - long fieldsListId = StatObjectConverter.extractSqlLong(fields[1]); + long fieldsListId = extractSqlLong(fields[1]); if (currentListId == null || fieldsListId != currentListId) { currentList = new ArrayList(); currentListId = fieldsListId; @@ -683,6 +743,14 @@ private void timingTrace(boolean doTrace, String queryText, long start, long que (System.nanoTime() - queryTime) / 1000000.0 + "ms, the query is [" + queryText + "]"); } + static Long extractSqlLong(Object obj) throws MetaException { + if (obj == null) return null; + if (!(obj instanceof Number)) { + throw new MetaException("Expected numeric type but got " + obj.getClass().getName()); + } + return ((Number)obj).longValue(); + } + private static Boolean extractSqlBoolean(Object value) throws MetaException { // MySQL has booleans, but e.g. Derby uses 'Y'/'N' mapping. People using derby probably // don't care about performance anyway, but let's cover the common case. @@ -749,7 +817,7 @@ private int loopJoinOrderedResult(TreeMap tree, if (fields == null) { fields = iter.next(); } - long nestedId = StatObjectConverter.extractSqlLong(fields[keyIndex]); + long nestedId = extractSqlLong(fields[keyIndex]); if (nestedId < id) throw new MetaException("Found entries for unknown ID " + nestedId); if (nestedId > id) break; // fields belong to one of the next entries func.apply(entry.getValue(), fields); @@ -978,8 +1046,7 @@ public ColumnStatistics getTableStats( public AggrStats aggrColStatsForPartitions(String dbName, String tableName, List partNames, List colNames) throws MetaException { - long partsFound = partsFoundForPartitions(dbName, tableName, partNames, - colNames); + long partsFound = partsFoundForPartitions(dbName, tableName, partNames, colNames); List stats = columnStatisticsObjForPartitions(dbName, tableName, partNames, colNames, partsFound); return new AggrStats(stats, partsFound); @@ -1003,7 +1070,7 @@ private long partsFoundForPartitions(String dbName, String tableName, ForwardQueryResult fqr = (ForwardQueryResult) qResult; Iterator iter = fqr.iterator(); while (iter.hasNext()) { - if (StatObjectConverter.extractSqlLong(iter.next()) == colNames.size()) { + if (extractSqlLong(iter.next()) == colNames.size()) { partsFound++; } } @@ -1013,6 +1080,8 @@ private long partsFoundForPartitions(String dbName, String tableName, private List columnStatisticsObjForPartitions( String dbName, String tableName, List partNames, List colNames, long partsFound) throws MetaException { + // TODO: all the extrapolation logic should be moved out of this class, + // only mechanical data retrieval should remain here. String commonPrefix = "select \"COLUMN_NAME\", \"COLUMN_TYPE\", " + "min(\"LONG_LOW_VALUE\"), max(\"LONG_HIGH_VALUE\"), min(\"DOUBLE_LOW_VALUE\"), max(\"DOUBLE_HIGH_VALUE\"), " + "min(\"BIG_DECIMAL_LOW_VALUE\"), max(\"BIG_DECIMAL_HIGH_VALUE\"), sum(\"NUM_NULLS\"), max(\"NUM_DISTINCTS\"), " @@ -1082,7 +1151,7 @@ private List columnStatisticsObjForPartitions( // count(\"PARTITION_NAME\")==partNames.size() // Or, extrapolation is not possible for this column if // count(\"PARTITION_NAME\")<2 - Long count = StatObjectConverter.extractSqlLong(row[2]); + Long count = extractSqlLong(row[2]); if (count == partNames.size() || count < 2) { noExtraColumnNames.add(colName); } else { @@ -1177,7 +1246,7 @@ private List columnStatisticsObjForPartitions( if (o == null) { row[2 + colStatIndex] = null; } else { - Long val = StatObjectConverter.extractSqlLong(o); + Long val = extractSqlLong(o); row[2 + colStatIndex] = (Long) (val / sumVal * (partNames.size())); } } else { @@ -1187,7 +1256,7 @@ private List columnStatisticsObjForPartitions( + colStatName + "\",\"PARTITION_NAME\" from \"PART_COL_STATS\"" + " where \"DB_NAME\" = ? and \"TABLE_NAME\" = ?" - + " and \"COLUMN_NAME\" in (" +makeParams(1)+ ")" + + " and \"COLUMN_NAME\" = ?" + " and \"PARTITION_NAME\" in (" + makeParams(partNames.size()) + ")" + " order by \'" + colStatName + "\'"; start = doTrace ? System.nanoTime() : 0; @@ -1306,8 +1375,8 @@ private ColumnStatistics makeColumnStats( // LastAnalyzed is stored per column but thrift has it per several; // get the lowest for now as nobody actually uses this field. Object laObj = row[offset + 14]; - if (laObj != null && (!csd.isSetLastAnalyzed() || csd.getLastAnalyzed() > StatObjectConverter.extractSqlLong(laObj))) { - csd.setLastAnalyzed(StatObjectConverter.extractSqlLong(laObj)); + if (laObj != null && (!csd.isSetLastAnalyzed() || csd.getLastAnalyzed() > extractSqlLong(laObj))) { + csd.setLastAnalyzed(extractSqlLong(laObj)); } csos.add(prepareCSObj(row, offset)); } diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java index c1a2a46a0554..aba38f3e1af1 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -267,7 +267,7 @@ private void initialize(Properties dsProps) { isInitialized = pm != null; if (isInitialized) { expressionProxy = createExpressionProxy(hiveConf); - directSql = new MetaStoreDirectSql(pm); + directSql = new MetaStoreDirectSql(pm, hiveConf); } LOG.debug("RawStore: " + this + ", with PersistenceManager: " + pm + " created in the thread with id: " + Thread.currentThread().getId()); @@ -2001,7 +2001,7 @@ protected List getPartitionsByNamesInternal(String dbName, String tbl return new GetListHelper(dbName, tblName, allowSql, allowJdo) { @Override protected List getSqlResult(GetHelper> ctx) throws MetaException { - return directSql.getPartitionsViaSqlFilter(dbName, tblName, partNames, null); + return directSql.getPartitionsViaSqlFilter(dbName, tblName, partNames); } @Override protected List getJdoResult( @@ -2054,7 +2054,7 @@ protected List getSqlResult(GetHelper> ctx) throws Me List partNames = new LinkedList(); hasUnknownPartitions.set(getPartitionNamesPrunedByExprNoTxn( ctx.getTable(), expr, defaultPartitionName, maxParts, partNames)); - result = directSql.getPartitionsViaSqlFilter(dbName, tblName, partNames, null); + result = directSql.getPartitionsViaSqlFilter(dbName, tblName, partNames); } return result; } diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java b/metastore/src/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java index cd8c5c23bb27..5c3bce384471 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java @@ -419,58 +419,58 @@ public static void fillColumnStatisticsData(String colType, ColumnStatisticsData Object nulls, Object dist, Object avglen, Object maxlen, Object trues, Object falses) throws MetaException { if (colType.equals("boolean")) { BooleanColumnStatsData boolStats = new BooleanColumnStatsData(); - boolStats.setNumFalses(extractSqlLong(falses)); - boolStats.setNumTrues(extractSqlLong(trues)); - boolStats.setNumNulls(extractSqlLong(nulls)); + boolStats.setNumFalses(MetaStoreDirectSql.extractSqlLong(falses)); + boolStats.setNumTrues(MetaStoreDirectSql.extractSqlLong(trues)); + boolStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); data.setBooleanStats(boolStats); } else if (colType.equals("string") || colType.startsWith("varchar") || colType.startsWith("char")) { StringColumnStatsData stringStats = new StringColumnStatsData(); - stringStats.setNumNulls(extractSqlLong(nulls)); + stringStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); stringStats.setAvgColLen((Double)avglen); - stringStats.setMaxColLen(extractSqlLong(maxlen)); - stringStats.setNumDVs(extractSqlLong(dist)); + stringStats.setMaxColLen(MetaStoreDirectSql.extractSqlLong(maxlen)); + stringStats.setNumDVs(MetaStoreDirectSql.extractSqlLong(dist)); data.setStringStats(stringStats); } else if (colType.equals("binary")) { BinaryColumnStatsData binaryStats = new BinaryColumnStatsData(); - binaryStats.setNumNulls(extractSqlLong(nulls)); + binaryStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); binaryStats.setAvgColLen((Double)avglen); - binaryStats.setMaxColLen(extractSqlLong(maxlen)); + binaryStats.setMaxColLen(MetaStoreDirectSql.extractSqlLong(maxlen)); data.setBinaryStats(binaryStats); } else if (colType.equals("bigint") || colType.equals("int") || colType.equals("smallint") || colType.equals("tinyint") || colType.equals("timestamp")) { LongColumnStatsData longStats = new LongColumnStatsData(); - longStats.setNumNulls(extractSqlLong(nulls)); + longStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); if (lhigh != null) { - longStats.setHighValue(extractSqlLong(lhigh)); + longStats.setHighValue(MetaStoreDirectSql.extractSqlLong(lhigh)); } if (llow != null) { - longStats.setLowValue(extractSqlLong(llow)); + longStats.setLowValue(MetaStoreDirectSql.extractSqlLong(llow)); } - longStats.setNumDVs(extractSqlLong(dist)); + longStats.setNumDVs(MetaStoreDirectSql.extractSqlLong(dist)); data.setLongStats(longStats); } else if (colType.equals("double") || colType.equals("float")) { DoubleColumnStatsData doubleStats = new DoubleColumnStatsData(); - doubleStats.setNumNulls(extractSqlLong(nulls)); + doubleStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); if (dhigh != null) { doubleStats.setHighValue((Double)dhigh); } if (dlow != null) { doubleStats.setLowValue((Double)dlow); } - doubleStats.setNumDVs(extractSqlLong(dist)); + doubleStats.setNumDVs(MetaStoreDirectSql.extractSqlLong(dist)); data.setDoubleStats(doubleStats); } else if (colType.startsWith("decimal")) { DecimalColumnStatsData decimalStats = new DecimalColumnStatsData(); - decimalStats.setNumNulls(extractSqlLong(nulls)); + decimalStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); if (dechigh != null) { decimalStats.setHighValue(createThriftDecimal((String)dechigh)); } if (declow != null) { decimalStats.setLowValue(createThriftDecimal((String)declow)); } - decimalStats.setNumDVs(extractSqlLong(dist)); + decimalStats.setNumDVs(MetaStoreDirectSql.extractSqlLong(dist)); data.setDecimalStats(decimalStats); } } @@ -483,12 +483,4 @@ private static Decimal createThriftDecimal(String s) { private static String createJdoDecimalString(Decimal d) { return new BigDecimal(new BigInteger(d.getUnscaled()), d.getScale()).toString(); } - - static Long extractSqlLong(Object obj) throws MetaException { - if (obj == null) return null; - if (!(obj instanceof Number)) { - throw new MetaException("Expected numeric type but got " + obj.getClass().getName()); - } - return ((Number)obj).longValue(); - } } From f85b82cebaba3f77b09ecbf6732ca54a7c0d3ce6 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 14 Nov 2014 20:53:07 +0000 Subject: [PATCH 290/339] HIVE-8873: Switch to calcite 0.9.2 (Gunther Hagleitner, reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1639787 13f79535-47bb-0310-9956-ffa450edef68 --- ql/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/pom.xml b/ql/pom.xml index afe5b19962b9..2e918dcefae6 100644 --- a/ql/pom.xml +++ b/ql/pom.xml @@ -28,7 +28,7 @@ Hive Query Language - 0.9.2-incubating-SNAPSHOT + 0.9.2-incubating .. From 509416201771e915597ea259fc31141b86ec7bd8 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Fri, 14 Nov 2014 21:59:19 +0000 Subject: [PATCH 291/339] HIVE-8830 : hcatalog process don't exit because of non daemon thread (Thejas Nair, reviewed by Eugene Koifman, Sushanth Sowmyan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1639797 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/hcatalog/common/HiveClientCache.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HiveClientCache.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HiveClientCache.java index 730b6ef9536f..ffa648d0aa8e 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HiveClientCache.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HiveClientCache.java @@ -24,6 +24,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; @@ -44,6 +45,7 @@ import com.google.common.cache.CacheBuilder; import com.google.common.cache.RemovalListener; import com.google.common.cache.RemovalNotification; +import com.google.common.util.concurrent.ThreadFactoryBuilder; /** * A thread safe time expired cache for HiveMetaStoreClient @@ -59,7 +61,7 @@ class HiveClientCache { private static final AtomicInteger nextId = new AtomicInteger(0); - private ScheduledFuture cleanupHandle; // used to cleanup cache + private final ScheduledFuture cleanupHandle; // used to cleanup cache // Since HiveMetaStoreClient is not threadsafe, hive clients are not shared across threads. // Thread local variable containing each thread's unique ID, is used as one of the keys for the cache @@ -91,6 +93,7 @@ public HiveClientCache(final int timeout) { this.timeout = timeout; RemovalListener removalListener = new RemovalListener() { + @Override public void onRemoval(RemovalNotification notification) { CacheableHiveMetaStoreClient hiveMetaStoreClient = notification.getValue(); if (hiveMetaStoreClient != null) { @@ -108,6 +111,7 @@ public void onRemoval(RemovalNotification Date: Wed, 19 Nov 2014 19:50:03 +0000 Subject: [PATCH 292/339] HIVE-8876 : incorrect upgrade script for Oracle (13->14) (Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1640624 13f79535-47bb-0310-9956-ffa450edef68 --- .../upgrade/oracle/020-HIVE-7784.oracle.sql | 13 +---------- .../pre-0-upgrade-0.13.0-to-0.14.0.oracle.sql | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 12 deletions(-) create mode 100644 metastore/scripts/upgrade/oracle/pre-0-upgrade-0.13.0-to-0.14.0.oracle.sql diff --git a/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql b/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql index ad14819c98d9..65f5d8c71c82 100644 --- a/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql +++ b/metastore/scripts/upgrade/oracle/020-HIVE-7784.oracle.sql @@ -1,13 +1,2 @@ --- --- Create the table if it doesn't exist. --- -declare pcs_count int; -begin - select count(*) into pcs_count from user_tables where table_name = 'PART_COL_STATS'; - if pcs_count = 0 then - EXECUTE IMMEDIATE 'CREATE TABLE PART_COL_STATS (CS_ID NUMBER NOT NULL, DB_NAME VARCHAR2(128) NOT NULL, TABLE_NAME VARCHAR2(128) NOT NULL, PARTITION_NAME VARCHAR2(767) NOT NULL, COLUMN_NAME VARCHAR2(128) NOT NULL, COLUMN_TYPE VARCHAR2(128) NOT NULL, PART_ID NUMBER NOT NULL, LONG_LOW_VALUE NUMBER, LONG_HIGH_VALUE NUMBER, DOUBLE_LOW_VALUE NUMBER, DOUBLE_HIGH_VALUE NUMBER, BIG_DECIMAL_LOW_VALUE VARCHAR2(4000), BIG_DECIMAL_HIGH_VALUE VARCHAR2(4000), NUM_NULLS NUMBER NOT NULL, NUM_DISTINCTS NUMBER, AVG_COL_LEN NUMBER, MAX_COL_LEN NUMBER, NUM_TRUES NUMBER, NUM_FALSES NUMBER, LAST_ANALYZED NUMBER NOT NULL)'; - end if; -end; -/ - CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME); + diff --git a/metastore/scripts/upgrade/oracle/pre-0-upgrade-0.13.0-to-0.14.0.oracle.sql b/metastore/scripts/upgrade/oracle/pre-0-upgrade-0.13.0-to-0.14.0.oracle.sql new file mode 100644 index 000000000000..4723c3b07ed2 --- /dev/null +++ b/metastore/scripts/upgrade/oracle/pre-0-upgrade-0.13.0-to-0.14.0.oracle.sql @@ -0,0 +1,23 @@ +-- Oracle has no easy way to do CREATE TABLE IF NOT EXISTS compatible with SchemaTool, so do it here + +CREATE TABLE PART_COL_STATS ( +CS_ID NUMBER NOT NULL, +DB_NAME VARCHAR2(128) NOT NULL, +TABLE_NAME VARCHAR2(128) NOT NULL, +PARTITION_NAME VARCHAR2(767) NOT NULL, +COLUMN_NAME VARCHAR2(128) NOT NULL, +COLUMN_TYPE VARCHAR2(128) NOT NULL, +PART_ID NUMBER NOT NULL, +LONG_LOW_VALUE NUMBER, +LONG_HIGH_VALUE NUMBER, +DOUBLE_LOW_VALUE NUMBER, +DOUBLE_HIGH_VALUE NUMBER, +BIG_DECIMAL_LOW_VALUE VARCHAR2(4000), +BIG_DECIMAL_HIGH_VALUE VARCHAR2(4000), +NUM_NULLS NUMBER NOT NULL, +NUM_DISTINCTS NUMBER, +AVG_COL_LEN NUMBER, +MAX_COL_LEN NUMBER, +NUM_TRUES NUMBER, +NUM_FALSES NUMBER, +LAST_ANALYZED NUMBER NOT NULL); From 7002dd8c93004d876bf0fd66104348ecae70a590 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Thu, 20 Nov 2014 22:13:13 +0000 Subject: [PATCH 293/339] HIVE-8888: Mapjoin with LateralViewJoin generates wrong plan in Tez (Prasanth J via Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1640829 13f79535-47bb-0310-9956-ffa450edef68 --- data/files/sour1.txt | 3 + data/files/sour2.txt | 3 + .../resources/testconfiguration.properties | 1 + .../hadoop/hive/ql/parse/GenTezWork.java | 26 +- .../test/queries/clientpositive/lvj_mapjoin.q | 37 +++ .../clientpositive/tez/lvj_mapjoin.q.out | 298 ++++++++++++++++++ 6 files changed, 357 insertions(+), 11 deletions(-) create mode 100644 data/files/sour1.txt create mode 100644 data/files/sour2.txt create mode 100644 ql/src/test/queries/clientpositive/lvj_mapjoin.q create mode 100644 ql/src/test/results/clientpositive/tez/lvj_mapjoin.q.out diff --git a/data/files/sour1.txt b/data/files/sour1.txt new file mode 100644 index 000000000000..6e245d486123 --- /dev/null +++ b/data/files/sour1.txt @@ -0,0 +1,3 @@ +1,a1,a11,a111 +2,a2,a22,a222 +3,a3,a33,a333 diff --git a/data/files/sour2.txt b/data/files/sour2.txt new file mode 100644 index 000000000000..4f2ec09f470e --- /dev/null +++ b/data/files/sour2.txt @@ -0,0 +1,3 @@ +1,b1,b11,b111 +2,b2,b22,b222 +4,b4,b44,b444 diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index b2f2e668e928..91903521891e 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -256,6 +256,7 @@ minitez.query.files=bucket_map_join_tez1.q,\ dynamic_partition_pruning.q,\ dynamic_partition_pruning_2.q,\ mapjoin_decimal.q,\ + lvj_mapjoin.q, \ mrr.q,\ tez_bmj_schema_evolution.q,\ tez_dml.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java index 364e8c9f1d10..df16e96c0c9e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java @@ -18,13 +18,6 @@ package org.apache.hadoop.hive.ql.parse; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Stack; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; @@ -50,6 +43,13 @@ import org.apache.hadoop.hive.ql.plan.TezWork.VertexType; import org.apache.hadoop.hive.ql.plan.UnionWork; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Stack; + /** * GenTezWork separates the operator tree into tez tasks. * It is called once per leaf operator (operator that forces @@ -109,10 +109,14 @@ public Object process(Node nd, Stack stack, // operator graph. There's typically two reasons for that: a) mux/demux // b) multi insert. Mux/Demux will hit the same leaf again, multi insert // will result into a vertex with multiple FS or RS operators. - - // At this point we don't have to do anything special in this case. Just - // run through the regular paces w/o creating a new task. - work = context.rootToWorkMap.get(root); + if (context.childToWorkMap.containsKey(operator)) { + // if we've seen both root and child, we can bail. + return null; + } else { + // At this point we don't have to do anything special in this case. Just + // run through the regular paces w/o creating a new task. + work = context.rootToWorkMap.get(root); + } } else { // create a new vertex if (context.preceedingWork == null) { diff --git a/ql/src/test/queries/clientpositive/lvj_mapjoin.q b/ql/src/test/queries/clientpositive/lvj_mapjoin.q new file mode 100644 index 000000000000..4a391b44acd2 --- /dev/null +++ b/ql/src/test/queries/clientpositive/lvj_mapjoin.q @@ -0,0 +1,37 @@ +-- SORT_QUERY_RESULTS + +drop table sour1; +drop table sour2; +drop table expod1; +drop table expod2; + +set hive.auto.convert.join=true; + +create table sour1(id int, av1 string, av2 string, av3 string) row format delimited fields terminated by ','; +create table sour2(id int, bv1 string, bv2 string, bv3 string) row format delimited fields terminated by ','; + +load data local inpath '../../data/files/sour1.txt' into table sour1; +load data local inpath '../../data/files//sour2.txt' into table sour2; + +create table expod1(aid int, av array); +create table expod2(bid int, bv array); + +insert overwrite table expod1 select id, array(av1,av2,av3) from sour1; +insert overwrite table expod2 select id, array(bv1,bv2,bv3) from sour2; + +explain with sub1 as +(select aid, avalue from expod1 lateral view explode(av) avs as avalue ), +sub2 as +(select bid, bvalue from expod2 lateral view explode(bv) bvs as bvalue) +select sub1.aid, sub1.avalue, sub2.bvalue +from sub1,sub2 +where sub1.aid=sub2.bid; + +with sub1 as +(select aid, avalue from expod1 lateral view explode(av) avs as avalue ), +sub2 as +(select bid, bvalue from expod2 lateral view explode(bv) bvs as bvalue) +select sub1.aid, sub1.avalue, sub2.bvalue +from sub1,sub2 +where sub1.aid=sub2.bid; + diff --git a/ql/src/test/results/clientpositive/tez/lvj_mapjoin.q.out b/ql/src/test/results/clientpositive/tez/lvj_mapjoin.q.out new file mode 100644 index 000000000000..d41b090f916c --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/lvj_mapjoin.q.out @@ -0,0 +1,298 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +drop table sour1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: -- SORT_QUERY_RESULTS + +drop table sour1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table sour2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table sour2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table expod1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table expod1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table expod2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table expod2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table sour1(id int, av1 string, av2 string, av3 string) row format delimited fields terminated by ',' +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@sour1 +POSTHOOK: query: create table sour1(id int, av1 string, av2 string, av3 string) row format delimited fields terminated by ',' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@sour1 +PREHOOK: query: create table sour2(id int, bv1 string, bv2 string, bv3 string) row format delimited fields terminated by ',' +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@sour2 +POSTHOOK: query: create table sour2(id int, bv1 string, bv2 string, bv3 string) row format delimited fields terminated by ',' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@sour2 +PREHOOK: query: load data local inpath '../../data/files/sour1.txt' into table sour1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@sour1 +POSTHOOK: query: load data local inpath '../../data/files/sour1.txt' into table sour1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@sour1 +PREHOOK: query: load data local inpath '../../data/files//sour2.txt' into table sour2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@sour2 +POSTHOOK: query: load data local inpath '../../data/files//sour2.txt' into table sour2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@sour2 +PREHOOK: query: create table expod1(aid int, av array) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@expod1 +POSTHOOK: query: create table expod1(aid int, av array) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@expod1 +PREHOOK: query: create table expod2(bid int, bv array) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@expod2 +POSTHOOK: query: create table expod2(bid int, bv array) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@expod2 +PREHOOK: query: insert overwrite table expod1 select id, array(av1,av2,av3) from sour1 +PREHOOK: type: QUERY +PREHOOK: Input: default@sour1 +PREHOOK: Output: default@expod1 +POSTHOOK: query: insert overwrite table expod1 select id, array(av1,av2,av3) from sour1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@sour1 +POSTHOOK: Output: default@expod1 +POSTHOOK: Lineage: expod1.aid SIMPLE [(sour1)sour1.FieldSchema(name:id, type:int, comment:null), ] +POSTHOOK: Lineage: expod1.av EXPRESSION [(sour1)sour1.FieldSchema(name:av1, type:string, comment:null), (sour1)sour1.FieldSchema(name:av2, type:string, comment:null), (sour1)sour1.FieldSchema(name:av3, type:string, comment:null), ] +PREHOOK: query: insert overwrite table expod2 select id, array(bv1,bv2,bv3) from sour2 +PREHOOK: type: QUERY +PREHOOK: Input: default@sour2 +PREHOOK: Output: default@expod2 +POSTHOOK: query: insert overwrite table expod2 select id, array(bv1,bv2,bv3) from sour2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@sour2 +POSTHOOK: Output: default@expod2 +POSTHOOK: Lineage: expod2.bid SIMPLE [(sour2)sour2.FieldSchema(name:id, type:int, comment:null), ] +POSTHOOK: Lineage: expod2.bv EXPRESSION [(sour2)sour2.FieldSchema(name:bv1, type:string, comment:null), (sour2)sour2.FieldSchema(name:bv2, type:string, comment:null), (sour2)sour2.FieldSchema(name:bv3, type:string, comment:null), ] +PREHOOK: query: explain with sub1 as +(select aid, avalue from expod1 lateral view explode(av) avs as avalue ), +sub2 as +(select bid, bvalue from expod2 lateral view explode(bv) bvs as bvalue) +select sub1.aid, sub1.avalue, sub2.bvalue +from sub1,sub2 +where sub1.aid=sub2.bid +PREHOOK: type: QUERY +POSTHOOK: query: explain with sub1 as +(select aid, avalue from expod1 lateral view explode(av) avs as avalue ), +sub2 as +(select bid, bvalue from expod2 lateral view explode(bv) bvs as bvalue) +select sub1.aid, sub1.avalue, sub2.bvalue +from sub1,sub2 +where sub1.aid=sub2.bid +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 2 <- Map 1 (BROADCAST_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: expod2 + Statistics: Num rows: 3 Data size: 39 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: bid is not null (type: boolean) + Statistics: Num rows: 2 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Lateral View Forward + Statistics: Num rows: 2 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: bid (type: int) + outputColumnNames: bid + Statistics: Num rows: 2 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Lateral View Join Operator + outputColumnNames: _col0, _col5 + Statistics: Num rows: 4 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col5 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 4 Data size: 52 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Select Operator + expressions: bv (type: array) + outputColumnNames: _col0 + Statistics: Num rows: 2 Data size: 26 Basic stats: COMPLETE Column stats: NONE + UDTF Operator + Statistics: Num rows: 2 Data size: 26 Basic stats: COMPLETE Column stats: NONE + function name: explode + Lateral View Join Operator + outputColumnNames: _col0, _col5 + Statistics: Num rows: 4 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col5 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 4 Data size: 52 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Map 2 + Map Operator Tree: + TableScan + alias: expod1 + Statistics: Num rows: 3 Data size: 39 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: aid is not null (type: boolean) + Statistics: Num rows: 2 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Lateral View Forward + Statistics: Num rows: 2 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: aid (type: int) + outputColumnNames: aid + Statistics: Num rows: 2 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Lateral View Join Operator + outputColumnNames: _col0, _col5 + Statistics: Num rows: 4 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col5 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} + 1 {_col0} {_col1} + keys: + 0 _col0 (type: int) + 1 _col0 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3 + input vertices: + 1 Map 1 + Statistics: Num rows: 4 Data size: 57 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (_col0 = _col2) (type: boolean) + Statistics: Num rows: 2 Data size: 28 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: string), _col3 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 28 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 28 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Select Operator + expressions: av (type: array) + outputColumnNames: _col0 + Statistics: Num rows: 2 Data size: 26 Basic stats: COMPLETE Column stats: NONE + UDTF Operator + Statistics: Num rows: 2 Data size: 26 Basic stats: COMPLETE Column stats: NONE + function name: explode + Lateral View Join Operator + outputColumnNames: _col0, _col5 + Statistics: Num rows: 4 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col5 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 52 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} + 1 {_col0} {_col1} + keys: + 0 _col0 (type: int) + 1 _col0 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3 + input vertices: + 1 Map 1 + Statistics: Num rows: 4 Data size: 57 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (_col0 = _col2) (type: boolean) + Statistics: Num rows: 2 Data size: 28 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: string), _col3 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 2 Data size: 28 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 28 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: with sub1 as +(select aid, avalue from expod1 lateral view explode(av) avs as avalue ), +sub2 as +(select bid, bvalue from expod2 lateral view explode(bv) bvs as bvalue) +select sub1.aid, sub1.avalue, sub2.bvalue +from sub1,sub2 +where sub1.aid=sub2.bid +PREHOOK: type: QUERY +PREHOOK: Input: default@expod1 +PREHOOK: Input: default@expod2 +#### A masked pattern was here #### +POSTHOOK: query: with sub1 as +(select aid, avalue from expod1 lateral view explode(av) avs as avalue ), +sub2 as +(select bid, bvalue from expod2 lateral view explode(bv) bvs as bvalue) +select sub1.aid, sub1.avalue, sub2.bvalue +from sub1,sub2 +where sub1.aid=sub2.bid +POSTHOOK: type: QUERY +POSTHOOK: Input: default@expod1 +POSTHOOK: Input: default@expod2 +#### A masked pattern was here #### +1 a1 b1 +1 a1 b11 +1 a1 b111 +1 a11 b1 +1 a11 b11 +1 a11 b111 +1 a111 b1 +1 a111 b11 +1 a111 b111 +2 a2 b2 +2 a2 b22 +2 a2 b222 +2 a22 b2 +2 a22 b22 +2 a22 b222 +2 a222 b2 +2 a222 b22 +2 a222 b222 From a5b85c7bcf23191108aab5789e2e30a3525d27d9 Mon Sep 17 00:00:00 2001 From: Carl Steinbach Date: Fri, 21 Nov 2014 22:30:42 +0000 Subject: [PATCH 294/339] HIVE-8933. Check release builds for SNAPSHOT dependencies git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1641011 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/pom.xml b/pom.xml index 6fd66ce8cf0a..bc132d5f7f7f 100644 --- a/pom.xml +++ b/pom.xml @@ -770,6 +770,28 @@ ${checkstyle.conf.dir}/checkstyle.xml + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-no-snapshots + + enforce + + + + + Release builds are not allowed to have SNAPSHOT depenendencies + true + true + + + true + + + + org.apache.maven.plugins maven-surefire-plugin From ee39465ed10ca4489aaeabc32707edbd048155e8 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 24 Nov 2014 19:43:50 +0000 Subject: [PATCH 295/339] HIVE-8099 : IN operator for partition column fails when the partition column type is DATE (Venki Korukanti via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1641454 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/metastore/ObjectStore.java | 6 +- .../metastore/PartitionExpressionProxy.java | 7 ++- .../MockPartitionExpressionForMetastore.java | 5 +- .../ql/optimizer/ppr/PartExprEvalUtils.java | 7 ++- .../ppr/PartitionExpressionForMetastore.java | 6 +- .../ql/optimizer/ppr/PartitionPruner.java | 37 +++++++++--- .../clientpositive/partition_type_in_plan.q | 15 +++++ .../partition_type_in_plan.q.out | 57 +++++++++++++++++++ 8 files changed, 125 insertions(+), 15 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/partition_type_in_plan.q create mode 100644 ql/src/test/results/clientpositive/partition_type_in_plan.q.out diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java index aba38f3e1af1..96bb083cd6df 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -134,6 +134,8 @@ import org.apache.hadoop.hive.metastore.parser.ExpressionTree.Operator; import org.apache.hadoop.hive.metastore.parser.FilterLexer; import org.apache.hadoop.hive.metastore.parser.FilterParser; +import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy; import org.apache.hadoop.util.StringUtils; @@ -2138,14 +2140,16 @@ private boolean getPartitionNamesPrunedByExprNoTxn(Table table, byte[] expr, result.addAll(getPartitionNamesNoTxn( table.getDbName(), table.getTableName(), maxParts)); List columnNames = new ArrayList(); + List typeInfos = new ArrayList(); for (FieldSchema fs : table.getPartitionKeys()) { columnNames.add(fs.getName()); + typeInfos.add(TypeInfoFactory.getPrimitiveTypeInfo(fs.getType())); } if (defaultPartName == null || defaultPartName.isEmpty()) { defaultPartName = HiveConf.getVar(getConf(), HiveConf.ConfVars.DEFAULTPARTITIONNAME); } return expressionProxy.filterPartitionsByExpr( - columnNames, expr, defaultPartName, result); + columnNames, typeInfos, expr, defaultPartName, result); } /** diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/PartitionExpressionProxy.java b/metastore/src/java/org/apache/hadoop/hive/metastore/PartitionExpressionProxy.java index 0787775d9495..51954818f76b 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/PartitionExpressionProxy.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/PartitionExpressionProxy.java @@ -21,6 +21,7 @@ import java.util.List; import org.apache.hadoop.hive.metastore.api.MetaException; +import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; /** * The proxy interface that metastore uses to manipulate and apply @@ -37,12 +38,14 @@ public interface PartitionExpressionProxy { /** * Filters the partition names via serialized Hive expression. - * @param columnNames Partition column names in the underlying table. + * @param partColumnNames Partition column names in the underlying table. + * @param partColumnTypeInfos Partition column types in the underlying table * @param expr Serialized expression. * @param defaultPartitionName Default partition name from job or server configuration. * @param partitionNames Partition names; the list is modified in place. * @return Whether there were any unknown partitions preserved in the name list. */ - public boolean filterPartitionsByExpr(List columnNames, byte[] expr, + public boolean filterPartitionsByExpr(List partColumnNames, + List partColumnTypeInfos, byte[] expr, String defaultPartitionName, List partitionNames) throws MetaException; } diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/MockPartitionExpressionForMetastore.java b/metastore/src/test/org/apache/hadoop/hive/metastore/MockPartitionExpressionForMetastore.java index cdc192778b54..bae1391733a5 100644 --- a/metastore/src/test/org/apache/hadoop/hive/metastore/MockPartitionExpressionForMetastore.java +++ b/metastore/src/test/org/apache/hadoop/hive/metastore/MockPartitionExpressionForMetastore.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hive.metastore; import org.apache.hadoop.hive.metastore.api.MetaException; +import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; import java.util.List; @@ -32,7 +33,9 @@ public String convertExprToFilter(byte[] expr) throws MetaException { } @Override - public boolean filterPartitionsByExpr(List columnNames, byte[] expr, String defaultPartitionName, List partitionNames) throws MetaException { + public boolean filterPartitionsByExpr(List partColumnNames, + List partColumnTypeInfos, byte[] expr, String defaultPartitionName, + List partitionNames) throws MetaException { return false; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartExprEvalUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartExprEvalUtils.java index 6159c7d49c99..dc5d2df53581 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartExprEvalUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartExprEvalUtils.java @@ -39,6 +39,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector; 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; public class PartExprEvalUtils { @@ -103,11 +104,13 @@ static synchronized public Object evalExprWithPart(ExprNodeDesc expr, } static synchronized public ObjectPair prepareExpr( - ExprNodeGenericFuncDesc expr, List partNames) throws HiveException { + ExprNodeGenericFuncDesc expr, List partNames, + List partColumnTypeInfos) throws HiveException { // Create the row object List partObjectInspectors = new ArrayList(); for (int i = 0; i < partNames.size(); i++) { - partObjectInspectors.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector); + partObjectInspectors.add(PrimitiveObjectInspectorFactory.getPrimitiveJavaObjectInspector( + partColumnTypeInfos.get(i))); } StructObjectInspector objectInspector = ObjectInspectorFactory .getStandardStructObjectInspector(partNames, partObjectInspectors); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionExpressionForMetastore.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionExpressionForMetastore.java index d98b5c5e55c3..9ffa177f4ff7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionExpressionForMetastore.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionExpressionForMetastore.java @@ -27,6 +27,7 @@ import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc; +import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; /** * The basic implementation of PartitionExpressionProxy that uses ql package classes. @@ -40,13 +41,14 @@ public String convertExprToFilter(byte[] exprBytes) throws MetaException { } @Override - public boolean filterPartitionsByExpr(List columnNames, byte[] exprBytes, + public boolean filterPartitionsByExpr(List partColumnNames, + List partColumnTypeInfos, byte[] exprBytes, String defaultPartitionName, List partitionNames) throws MetaException { ExprNodeGenericFuncDesc expr = deserializeExpr(exprBytes); try { long startTime = System.nanoTime(), len = partitionNames.size(); boolean result = PartitionPruner.prunePartitionNames( - columnNames, expr, defaultPartitionName, partitionNames); + partColumnNames, partColumnTypeInfos, expr, defaultPartitionName, partitionNames); double timeMs = (System.nanoTime() - startTime) / 1000000.0; LOG.debug("Pruning " + len + " partition names took " + timeMs + "ms"); return result; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java index 1796b7bb287c..4b2a81a0bd9b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java @@ -57,7 +57,9 @@ import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPOr; import org.apache.hadoop.hive.serde.serdeConstants; +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters; import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector; +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; @@ -420,9 +422,10 @@ static private boolean pruneBySequentialScan(Table tab, List partitio String defaultPartitionName = conf.getVar(HiveConf.ConfVars.DEFAULTPARTITIONNAME); List partCols = extractPartColNames(tab); + List partColTypeInfos = extractPartColTypes(tab); boolean hasUnknownPartitions = prunePartitionNames( - partCols, prunerExpr, defaultPartitionName, partNames); + partCols, partColTypeInfos, prunerExpr, defaultPartitionName, partNames); perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.PRUNE_LISTING); perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.PARTITION_RETRIEVING); @@ -442,19 +445,30 @@ private static List extractPartColNames(Table tab) { return partCols; } + private static List extractPartColTypes(Table tab) { + List pCols = tab.getPartCols(); + List partColTypeInfos = new ArrayList(pCols.size()); + for (FieldSchema pCol : pCols) { + partColTypeInfos.add(TypeInfoFactory.getPrimitiveTypeInfo(pCol.getType())); + } + return partColTypeInfos; + } + /** * Prunes partition names to see if they match the prune expression. - * @param columnNames name of partition columns + * @param partColumnNames name of partition columns + * @param partColumnTypeInfos types of partition columns * @param prunerExpr The expression to match. * @param defaultPartitionName name of default partition * @param partNames Partition names to filter. The list is modified in place. * @return Whether the list has any partitions for which the expression may or may not match. */ - public static boolean prunePartitionNames(List columnNames, ExprNodeGenericFuncDesc prunerExpr, + public static boolean prunePartitionNames(List partColumnNames, + List partColumnTypeInfos, ExprNodeGenericFuncDesc prunerExpr, String defaultPartitionName, List partNames) throws HiveException, MetaException { // Prepare the expression to filter on the columns. ObjectPair handle = - PartExprEvalUtils.prepareExpr(prunerExpr, columnNames); + PartExprEvalUtils.prepareExpr(prunerExpr, partColumnNames, partColumnTypeInfos); // Filter the name list. Removing elements one by one can be slow on e.g. ArrayList, // so let's create a new list and copy it if we don't have a linked list @@ -462,8 +476,8 @@ public static boolean prunePartitionNames(List columnNames, ExprNodeGene List partNamesSeq = inPlace ? partNames : new LinkedList(partNames); // Array for the values to pass to evaluator. - ArrayList values = new ArrayList(columnNames.size()); - for (int i = 0; i < columnNames.size(); ++i) { + ArrayList values = new ArrayList(partColumnNames.size()); + for (int i = 0; i < partColumnNames.size(); ++i) { values.add(null); } @@ -473,8 +487,17 @@ public static boolean prunePartitionNames(List columnNames, ExprNodeGene String partName = partIter.next(); Warehouse.makeValsFromName(partName, values); + ArrayList convertedValues = new ArrayList(values.size()); + for(int i=0; i Date: Mon, 24 Nov 2014 19:49:56 +0000 Subject: [PATCH 296/339] HIVE-5664 : Drop cascade database fails when the db has any tables with indexes (Venki Korukanti via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1641456 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/metastore/HiveMetaStoreClient.java | 2 +- .../queries/clientpositive/database_drop.q | 6 +++ .../clientpositive/database_drop.q.out | 40 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java index 9f2b4fc09fb5..e6d30fc42880 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -667,7 +667,7 @@ public void dropDatabase(String name, boolean deleteData, boolean ignoreUnknownD for (String table : tableList) { try { // Subclasses can override this step (for example, for temporary tables) - dropTable(name, table, deleteData, false); + dropTable(name, table, deleteData, true); } catch (UnsupportedOperationException e) { // Ignore Index tables, those will be dropped with parent tables } diff --git a/ql/src/test/queries/clientpositive/database_drop.q b/ql/src/test/queries/clientpositive/database_drop.q index 137127324521..c8f6b0af9d53 100644 --- a/ql/src/test/queries/clientpositive/database_drop.q +++ b/ql/src/test/queries/clientpositive/database_drop.q @@ -75,6 +75,12 @@ CREATE EXTERNAL TABLE extab1(id INT, name STRING) ROW FORMAT STORED AS TEXTFILE LOCATION 'file:${system:test.tmp.dir}/dbcascade/extab1'; +-- add a table, create index (give a name for index table) +CREATE TABLE temp_tbl3 (id INT, name STRING); +LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' into table temp_tbl3; +CREATE INDEX temp_tbl3_idx ON TABLE temp_tbl3(id) AS 'COMPACT' with DEFERRED REBUILD IN TABLE temp_tbl3_idx_tbl; +ALTER INDEX temp_tbl3_idx ON temp_tbl3 REBUILD; + -- drop the database with cascade DROP DATABASE db5 CASCADE; diff --git a/ql/src/test/results/clientpositive/database_drop.q.out b/ql/src/test/results/clientpositive/database_drop.q.out index f483c06038b5..225104f22a0d 100644 --- a/ql/src/test/results/clientpositive/database_drop.q.out +++ b/ql/src/test/results/clientpositive/database_drop.q.out @@ -352,6 +352,42 @@ POSTHOOK: type: CREATETABLE #### A masked pattern was here #### POSTHOOK: Output: database:db5 POSTHOOK: Output: db5@extab1 +PREHOOK: query: -- add a table, create index (give a name for index table) +CREATE TABLE temp_tbl3 (id INT, name STRING) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:db5 +PREHOOK: Output: db5@temp_tbl3 +POSTHOOK: query: -- add a table, create index (give a name for index table) +CREATE TABLE temp_tbl3 (id INT, name STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:db5 +POSTHOOK: Output: db5@temp_tbl3 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' into table temp_tbl3 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: db5@temp_tbl3 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' into table temp_tbl3 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: db5@temp_tbl3 +PREHOOK: query: CREATE INDEX temp_tbl3_idx ON TABLE temp_tbl3(id) AS 'COMPACT' with DEFERRED REBUILD IN TABLE temp_tbl3_idx_tbl +PREHOOK: type: CREATEINDEX +PREHOOK: Input: db5@temp_tbl3 +POSTHOOK: query: CREATE INDEX temp_tbl3_idx ON TABLE temp_tbl3(id) AS 'COMPACT' with DEFERRED REBUILD IN TABLE temp_tbl3_idx_tbl +POSTHOOK: type: CREATEINDEX +POSTHOOK: Input: db5@temp_tbl3 +POSTHOOK: Output: db5@temp_tbl3_idx_tbl +PREHOOK: query: ALTER INDEX temp_tbl3_idx ON temp_tbl3 REBUILD +PREHOOK: type: ALTERINDEX_REBUILD +PREHOOK: Input: db5@temp_tbl3 +PREHOOK: Output: db5@temp_tbl3_idx_tbl +POSTHOOK: query: ALTER INDEX temp_tbl3_idx ON temp_tbl3 REBUILD +POSTHOOK: type: ALTERINDEX_REBUILD +POSTHOOK: Input: db5@temp_tbl3 +POSTHOOK: Output: db5@temp_tbl3_idx_tbl +POSTHOOK: Lineage: temp_tbl3_idx_tbl._bucketname SIMPLE [(temp_tbl3)temp_tbl3.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ] +POSTHOOK: Lineage: temp_tbl3_idx_tbl._offsets EXPRESSION [(temp_tbl3)temp_tbl3.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ] +POSTHOOK: Lineage: temp_tbl3_idx_tbl.id SIMPLE [(temp_tbl3)temp_tbl3.FieldSchema(name:id, type:int, comment:null), ] PREHOOK: query: -- drop the database with cascade DROP DATABASE db5 CASCADE PREHOOK: type: DROPDATABASE @@ -369,6 +405,8 @@ PREHOOK: Output: db5@part_tab3 PREHOOK: Output: db5@temp_tbl PREHOOK: Output: db5@temp_tbl2 PREHOOK: Output: db5@temp_tbl2_view +PREHOOK: Output: db5@temp_tbl3 +PREHOOK: Output: db5@temp_tbl3_idx_tbl PREHOOK: Output: db5@temp_tbl_view POSTHOOK: query: -- drop the database with cascade DROP DATABASE db5 CASCADE @@ -387,5 +425,7 @@ POSTHOOK: Output: db5@part_tab3 POSTHOOK: Output: db5@temp_tbl POSTHOOK: Output: db5@temp_tbl2 POSTHOOK: Output: db5@temp_tbl2_view +POSTHOOK: Output: db5@temp_tbl3 +POSTHOOK: Output: db5@temp_tbl3_idx_tbl POSTHOOK: Output: db5@temp_tbl_view #### A masked pattern was here #### From cd58b771304ba2b92234758cb69cfec48162b7ad Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 24 Nov 2014 20:04:51 +0000 Subject: [PATCH 297/339] HIVE-5631 : Index creation on a skew table fails (Venki Korukanti via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1641464 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/metadata/Hive.java | 35 +-- .../queries/clientpositive/index_skewtable.q | 22 ++ .../clientpositive/authorization_index.q.out | 2 - .../clientpositive/index_skewtable.q.out | 216 ++++++++++++++++++ 4 files changed, 257 insertions(+), 18 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/index_skewtable.q create mode 100644 ql/src/test/results/clientpositive/index_skewtable.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index cbbe78139e23..8c8cb4f406c5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -92,6 +92,7 @@ import org.apache.hadoop.hive.metastore.api.SetPartitionsStatsRequest; import org.apache.hadoop.hive.metastore.api.ShowCompactResponse; import org.apache.hadoop.hive.metastore.api.SkewedInfo; +import org.apache.hadoop.hive.metastore.api.StorageDescriptor; import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants; import org.apache.hadoop.hive.ql.ErrorMsg; import org.apache.hadoop.hive.ql.exec.Utilities; @@ -748,8 +749,9 @@ public void createIndex(String tableName, String indexName, String indexHandlerC throw new HiveException("Table name " + indexTblName + " already exists. Choose another name."); } - org.apache.hadoop.hive.metastore.api.StorageDescriptor storageDescriptor = baseTbl.getSd().deepCopy(); - SerDeInfo serdeInfo = storageDescriptor.getSerdeInfo(); + SerDeInfo serdeInfo = new SerDeInfo(); + serdeInfo.setName(indexTblName); + if(serde != null) { serdeInfo.setSerializationLib(serde); } else { @@ -762,6 +764,7 @@ public void createIndex(String tableName, String indexName, String indexHandlerC } } + serdeInfo.setParameters(new HashMap()); if (fieldDelim != null) { serdeInfo.getParameters().put(FIELD_DELIM, fieldDelim); serdeInfo.getParameters().put(SERIALIZATION_FORMAT, fieldDelim); @@ -788,18 +791,8 @@ public void createIndex(String tableName, String indexName, String indexHandlerC } } - storageDescriptor.setLocation(null); - if (location != null) { - storageDescriptor.setLocation(location); - } - storageDescriptor.setInputFormat(inputFormat); - storageDescriptor.setOutputFormat(outputFormat); - - Map params = new HashMap(); - List indexTblCols = new ArrayList(); List sortCols = new ArrayList(); - storageDescriptor.setBucketCols(null); int k = 0; Table metaBaseTbl = new Table(baseTbl); for (int i = 0; i < metaBaseTbl.getCols().size(); i++) { @@ -815,9 +808,6 @@ public void createIndex(String tableName, String indexName, String indexHandlerC "Check the index columns, they should appear in the table being indexed."); } - storageDescriptor.setCols(indexTblCols); - storageDescriptor.setSortCols(sortCols); - int time = (int) (System.currentTimeMillis() / 1000); org.apache.hadoop.hive.metastore.api.Table tt = null; HiveIndexHandler indexHandler = HiveUtils.getIndexHandler(this.getConf(), indexHandlerClass); @@ -851,8 +841,21 @@ public void createIndex(String tableName, String indexName, String indexHandlerC String tdname = Utilities.getDatabaseName(tableName); String ttname = Utilities.getTableName(tableName); + + StorageDescriptor indexSd = new StorageDescriptor( + indexTblCols, + location, + inputFormat, + outputFormat, + false/*compressed - not used*/, + -1/*numBuckets - default is -1 when the table has no buckets*/, + serdeInfo, + null/*bucketCols*/, + sortCols, + null/*parameters*/); + Index indexDesc = new Index(indexName, indexHandlerClass, tdname, ttname, time, time, indexTblName, - storageDescriptor, params, deferredRebuild); + indexSd, new HashMap(), deferredRebuild); if (indexComment != null) { indexDesc.getParameters().put("comment", indexComment); } diff --git a/ql/src/test/queries/clientpositive/index_skewtable.q b/ql/src/test/queries/clientpositive/index_skewtable.q new file mode 100644 index 000000000000..fdf65cd9ea74 --- /dev/null +++ b/ql/src/test/queries/clientpositive/index_skewtable.q @@ -0,0 +1,22 @@ +-- Test creating an index on skewed table + +-- Create a skew table +CREATE TABLE kv(key STRING, value STRING) SKEWED BY (key) ON ((3), (8)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/T2.txt' INTO TABLE kv; + +-- Create and build an index +CREATE INDEX kv_index ON TABLE kv(value) AS 'COMPACT' WITH DEFERRED REBUILD; +DESCRIBE FORMATTED default__kv_kv_index__; +ALTER INDEX kv_index ON kv REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +-- Run a query that uses the index +EXPLAIN SELECT * FROM kv WHERE value > '15' ORDER BY value; +SELECT * FROM kv WHERE value > '15' ORDER BY value; + +DROP INDEX kv_index ON kv; +DROP TABLE kv; diff --git a/ql/src/test/results/clientpositive/authorization_index.q.out b/ql/src/test/results/clientpositive/authorization_index.q.out index 273931a86e48..540d11b328ca 100644 --- a/ql/src/test/results/clientpositive/authorization_index.q.out +++ b/ql/src/test/results/clientpositive/authorization_index.q.out @@ -43,8 +43,6 @@ Compressed: No Num Buckets: -1 Bucket Columns: [] Sort Columns: [Order(col:a, order:1)] -Storage Desc Params: - serialization.format 1 PREHOOK: query: alter index t1_index on t1 rebuild PREHOOK: type: ALTERINDEX_REBUILD PREHOOK: Input: default@t1 diff --git a/ql/src/test/results/clientpositive/index_skewtable.q.out b/ql/src/test/results/clientpositive/index_skewtable.q.out new file mode 100644 index 000000000000..fac53e573e2f --- /dev/null +++ b/ql/src/test/results/clientpositive/index_skewtable.q.out @@ -0,0 +1,216 @@ +PREHOOK: query: -- Test creating an index on skewed table + +-- Create a skew table +CREATE TABLE kv(key STRING, value STRING) SKEWED BY (key) ON ((3), (8)) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@kv +POSTHOOK: query: -- Test creating an index on skewed table + +-- Create a skew table +CREATE TABLE kv(key STRING, value STRING) SKEWED BY (key) ON ((3), (8)) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@kv +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T2.txt' INTO TABLE kv +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@kv +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/T2.txt' INTO TABLE kv +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@kv +PREHOOK: query: -- Create and build an index +CREATE INDEX kv_index ON TABLE kv(value) AS 'COMPACT' WITH DEFERRED REBUILD +PREHOOK: type: CREATEINDEX +PREHOOK: Input: default@kv +POSTHOOK: query: -- Create and build an index +CREATE INDEX kv_index ON TABLE kv(value) AS 'COMPACT' WITH DEFERRED REBUILD +POSTHOOK: type: CREATEINDEX +POSTHOOK: Input: default@kv +POSTHOOK: Output: default@default__kv_kv_index__ +PREHOOK: query: DESCRIBE FORMATTED default__kv_kv_index__ +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@default__kv_kv_index__ +POSTHOOK: query: DESCRIBE FORMATTED default__kv_kv_index__ +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@default__kv_kv_index__ +# col_name data_type comment + +value string +_bucketname string +_offsets array + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Protect Mode: None +Retention: 0 +#### A masked pattern was here #### +Table Type: INDEX_TABLE +Table Parameters: +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [Order(col:value, order:1)] +PREHOOK: query: ALTER INDEX kv_index ON kv REBUILD +PREHOOK: type: ALTERINDEX_REBUILD +PREHOOK: Input: default@kv +PREHOOK: Output: default@default__kv_kv_index__ +POSTHOOK: query: ALTER INDEX kv_index ON kv REBUILD +POSTHOOK: type: ALTERINDEX_REBUILD +POSTHOOK: Input: default@kv +POSTHOOK: Output: default@default__kv_kv_index__ +POSTHOOK: Lineage: default__kv_kv_index__._bucketname SIMPLE [(kv)kv.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ] +POSTHOOK: Lineage: default__kv_kv_index__._offsets EXPRESSION [(kv)kv.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ] +POSTHOOK: Lineage: default__kv_kv_index__.value SIMPLE [(kv)kv.FieldSchema(name:value, type:string, comment:null), ] +PREHOOK: query: -- Run a query that uses the index +EXPLAIN SELECT * FROM kv WHERE value > '15' ORDER BY value +PREHOOK: type: QUERY +POSTHOOK: query: -- Run a query that uses the index +EXPLAIN SELECT * FROM kv WHERE value > '15' ORDER BY value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-3 is a root stage + Stage-8 depends on stages: Stage-3 , consists of Stage-5, Stage-4, Stage-6 + Stage-5 + Stage-2 depends on stages: Stage-5, Stage-4, Stage-7 + Stage-1 depends on stages: Stage-2 + Stage-4 + Stage-6 + Stage-7 depends on stages: Stage-6 + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-3 + Map Reduce + Map Operator Tree: + TableScan + alias: default__kv_kv_index__ + filterExpr: (value > '15') (type: boolean) + Filter Operator + predicate: (value > '15') (type: boolean) + Select Operator + expressions: _bucketname (type: string), _offsets (type: array) + outputColumnNames: _col0, _col1 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-8 + Conditional Operator + + Stage: Stage-5 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-2 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: kv + filterExpr: (value > '15') (type: boolean) + Statistics: Num rows: 0 Data size: 30 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: (value > '15') (type: boolean) + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + value expressions: _col0 (type: string) + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-4 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-6 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-7 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM kv WHERE value > '15' ORDER BY value +PREHOOK: type: QUERY +PREHOOK: Input: default@default__kv_kv_index__ +PREHOOK: Input: default@kv +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM kv WHERE value > '15' ORDER BY value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@default__kv_kv_index__ +POSTHOOK: Input: default@kv +#### A masked pattern was here #### +8 18 +8 18 +2 22 +PREHOOK: query: DROP INDEX kv_index ON kv +PREHOOK: type: DROPINDEX +PREHOOK: Input: default@kv +POSTHOOK: query: DROP INDEX kv_index ON kv +POSTHOOK: type: DROPINDEX +POSTHOOK: Input: default@kv +PREHOOK: query: DROP TABLE kv +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@kv +PREHOOK: Output: default@kv +POSTHOOK: query: DROP TABLE kv +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@kv +POSTHOOK: Output: default@kv From 88159197ef8858f8d0d2ef214a92beeda051f697 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 24 Nov 2014 22:00:21 +0000 Subject: [PATCH 298/339] HIVE-8739 : handle Derby and Oracle errors with joins and filters in Direct SQL in a invalid-DB-specific path (Sergey Shelukhin via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1641488 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/metastore/MetaStoreDirectSql.java | 160 ++++++++++++------ 1 file changed, 106 insertions(+), 54 deletions(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java index 82f504f056b0..35f6f26c6fc6 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java @@ -32,6 +32,7 @@ import java.util.Map; import java.util.TreeMap; +import javax.jdo.JDODataStoreException; import javax.jdo.PersistenceManager; import javax.jdo.Query; import javax.jdo.Transaction; @@ -40,6 +41,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.derby.iapi.error.StandardException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; @@ -87,6 +89,7 @@ private static enum DB { MYSQL, ORACLE, MSSQL, + DERBY, OTHER } @@ -134,10 +137,28 @@ private DB determineDbType() { dbType = DB.ORACLE; } else if (runDbCheck("SELECT @@version", "MSSQL")) { dbType = DB.MSSQL; + } else { + // TODO: maybe we should use getProductName to identify all the DBs + String productName = getProductName(); + if (productName != null && productName.toLowerCase().contains("derby")) { + dbType = DB.DERBY; + } } return dbType; } + private String getProductName() { + JDOConnection jdoConn = pm.getDataStoreConnection(); + try { + return ((Connection)jdoConn.getNativeConnection()).getMetaData().getDatabaseProductName(); + } catch (Throwable t) { + LOG.warn("Error retrieving product name", t); + return null; + } finally { + jdoConn.close(); // We must release the connection before we call other pm methods. + } + } + private boolean ensureDbInit() { Transaction tx = pm.currentTransaction(); try { @@ -147,7 +168,7 @@ private boolean ensureDbInit() { pm.newQuery(MPartitionColumnStatistics.class, "dbName == ''").execute(); return true; } catch (Exception ex) { - LOG.error("Database initialization failed; direct SQL is disabled", ex); + LOG.warn("Database initialization failed; direct SQL is disabled", ex); tx.rollback(); return false; } @@ -162,7 +183,7 @@ private boolean runTestQuery() { tx.commit(); return true; } catch (Exception ex) { - LOG.error("Self-test query [" + selfTestQuery + "] failed; direct SQL is disabled", ex); + LOG.warn("Self-test query [" + selfTestQuery + "] failed; direct SQL is disabled", ex); tx.rollback(); return false; } @@ -236,8 +257,8 @@ public Database getDatabase(String dbName) throws MetaException{ + " with param [" + params[0] + "]"); } - @SuppressWarnings("unchecked") - List sqlResult = (List)queryDbSelector.executeWithArray(params); + List sqlResult = executeWithArray( + queryDbSelector, params, queryTextDbSelector); if ((sqlResult == null) || sqlResult.isEmpty()) { return null; } @@ -262,10 +283,11 @@ public Database getDatabase(String dbName) throws MetaException{ } Map dbParams = new HashMap(); - List sqlResult2 = ensureList(queryDbParams.executeWithArray(params)); + List sqlResult2 = ensureList(executeWithArray( + queryDbParams, params, queryTextDbParams)); if (!sqlResult2.isEmpty()) { for (Object[] line : sqlResult2) { - dbParams.put(extractSqlString(line[0]),extractSqlString(line[1])); + dbParams.put(extractSqlString(line[0]), extractSqlString(line[1])); } } Database db = new Database(); @@ -323,12 +345,16 @@ public List getPartitionsViaSqlFilter( assert tree != null; List params = new ArrayList(); List joins = new ArrayList(); - String sqlFilter = PartitionFilterGenerator.generateSqlFilter(table, tree, params, joins); + // Derby and Oracle do not interpret filters ANSI-properly in some cases and need a workaround. + boolean dbHasJoinCastBug = (dbType == DB.DERBY || dbType == DB.ORACLE); + String sqlFilter = PartitionFilterGenerator.generateSqlFilter( + table, tree, params, joins, dbHasJoinCastBug); if (sqlFilter == null) { return null; // Cannot make SQL filter to push down. } + Boolean isViewTable = isViewTable(table); return getPartitionsViaSqlFilterInternal(table.getDbName(), table.getTableName(), - isViewTable(table), sqlFilter, params, joins, max); + isViewTable, sqlFilter, params, joins, max); } /** @@ -356,7 +382,7 @@ private boolean isViewTable(String dbName, String tblName) throws MetaException Object[] params = new Object[] { tblName, dbName }; Query query = pm.newQuery("javax.jdo.query.SQL", queryText); query.setUnique(true); - Object result = query.executeWithArray(params); + Object result = executeWithArray(query, params, queryText); return (result != null) && result.toString().equals(TableType.VIRTUAL_VIEW.toString()); } @@ -413,8 +439,7 @@ private List getPartitionsViaSqlFilterInternal(String dbName, String if (max != null) { query.setRange(0, max.shortValue()); } - @SuppressWarnings("unchecked") - List sqlResult = (List)query.executeWithArray(params); + List sqlResult = executeWithArray(query, params, queryText); long queryTime = doTrace ? System.nanoTime() : 0; if (sqlResult.isEmpty()) { timingTrace(doTrace, queryText, start, queryTime); @@ -466,7 +491,7 @@ private List getPartitionsFromPartitionIds(String dbName, String tblN long start = doTrace ? System.nanoTime() : 0; Query query = pm.newQuery("javax.jdo.query.SQL", queryText); @SuppressWarnings("unchecked") - List sqlResult = (List)query.execute(); + List sqlResult = executeWithArray(query, null, queryText); long queryTime = doTrace ? System.nanoTime() : 0; // Read all the fields and create partitions, SDs and serdes. @@ -835,12 +860,14 @@ private static class PartitionFilterGenerator extends TreeVisitor { private final FilterBuilder filterBuffer; private final List params; private final List joins; + private final boolean dbHasJoinCastBug; private PartitionFilterGenerator( - Table table, List params, List joins) { + Table table, List params, List joins, boolean dbHasJoinCastBug) { this.table = table; this.params = params; this.joins = joins; + this.dbHasJoinCastBug = dbHasJoinCastBug; this.filterBuffer = new FilterBuilder(false); } @@ -851,13 +878,14 @@ private PartitionFilterGenerator( * @param joins the joins necessary for the resulting expression * @return the string representation of the expression tree */ - public static String generateSqlFilter(Table table, - ExpressionTree tree, List params, List joins) throws MetaException { + private static String generateSqlFilter(Table table, ExpressionTree tree, + List params, List joins, boolean dbHasJoinCastBug) throws MetaException { assert table != null; if (tree.getRoot() == null) { return ""; } - PartitionFilterGenerator visitor = new PartitionFilterGenerator(table, params, joins); + PartitionFilterGenerator visitor = new PartitionFilterGenerator( + table, params, joins, dbHasJoinCastBug); tree.accept(visitor); if (visitor.filterBuffer.hasError()) { LOG.info("Unable to push down SQL filter: " + visitor.filterBuffer.getErrorMessage()); @@ -996,11 +1024,15 @@ public void visit(LeafNode node) throws MetaException { tableValue = "cast(" + tableValue + " as date)"; } - // This is a workaround for DERBY-6358; as such, it is pretty horrible. - tableValue = "(case when \"TBLS\".\"TBL_NAME\" = ? and \"DBS\".\"NAME\" = ? then " - + tableValue + " else null end)"; - params.add(table.getTableName().toLowerCase()); - params.add(table.getDbName().toLowerCase()); + if (dbHasJoinCastBug) { + // This is a workaround for DERBY-6358 and Oracle bug; it is pretty horrible. + tableValue = "(case when \"TBLS\".\"TBL_NAME\" = ? and \"DBS\".\"NAME\" = ? and " + + "\"FILTER" + partColIndex + "\".\"PART_ID\" = \"PARTITIONS\".\"PART_ID\" and " + + "\"FILTER" + partColIndex + "\".\"INTEGER_IDX\" = " + partColIndex + " then " + + tableValue + " else null end)"; + params.add(table.getTableName().toLowerCase()); + params.add(table.getDbName().toLowerCase()); + } } if (!node.isReverseOrder) { params.add(nodeValue); @@ -1029,7 +1061,7 @@ public ColumnStatistics getTableStats( for (int i = 0; i < colNames.size(); ++i) { params[i + 2] = colNames.get(i); } - Object qResult = query.executeWithArray(params); + Object qResult = executeWithArray(query, params, queryText); long queryTime = doTrace ? System.nanoTime() : 0; if (qResult == null) { query.closeAll(); @@ -1056,17 +1088,17 @@ private long partsFoundForPartitions(String dbName, String tableName, List partNames, List colNames) throws MetaException { long partsFound = 0; boolean doTrace = LOG.isDebugEnabled(); - String qText = "select count(\"COLUMN_NAME\") from \"PART_COL_STATS\"" + String queryText = "select count(\"COLUMN_NAME\") from \"PART_COL_STATS\"" + " where \"DB_NAME\" = ? and \"TABLE_NAME\" = ? " + " and \"COLUMN_NAME\" in (" + makeParams(colNames.size()) + ")" + " and \"PARTITION_NAME\" in (" + makeParams(partNames.size()) + ")" + " group by \"PARTITION_NAME\""; long start = doTrace ? System.nanoTime() : 0; - Query query = pm.newQuery("javax.jdo.query.SQL", qText); - Object qResult = query.executeWithArray(prepareParams(dbName, tableName, - partNames, colNames)); + Query query = pm.newQuery("javax.jdo.query.SQL", queryText); + Object qResult = executeWithArray(query, prepareParams( + dbName, tableName, partNames, colNames), queryText); long end = doTrace ? System.nanoTime() : 0; - timingTrace(doTrace, qText, start, end); + timingTrace(doTrace, queryText, start, end); ForwardQueryResult fqr = (ForwardQueryResult) qResult; Iterator iter = fqr.iterator(); while (iter.hasNext()) { @@ -1087,7 +1119,7 @@ private List columnStatisticsObjForPartitions( + "min(\"BIG_DECIMAL_LOW_VALUE\"), max(\"BIG_DECIMAL_HIGH_VALUE\"), sum(\"NUM_NULLS\"), max(\"NUM_DISTINCTS\"), " + "max(\"AVG_COL_LEN\"), max(\"MAX_COL_LEN\"), sum(\"NUM_TRUES\"), sum(\"NUM_FALSES\") from \"PART_COL_STATS\"" + " where \"DB_NAME\" = ? and \"TABLE_NAME\" = ? "; - String qText = null; + String queryText = null; long start = 0; long end = 0; Query query = null; @@ -1097,20 +1129,20 @@ private List columnStatisticsObjForPartitions( // Check if the status of all the columns of all the partitions exists // Extrapolation is not needed. if (partsFound == partNames.size()) { - qText = commonPrefix + queryText = commonPrefix + " and \"COLUMN_NAME\" in (" + makeParams(colNames.size()) + ")" + " and \"PARTITION_NAME\" in (" + makeParams(partNames.size()) + ")" + " group by \"COLUMN_NAME\", \"COLUMN_TYPE\""; start = doTrace ? System.nanoTime() : 0; - query = pm.newQuery("javax.jdo.query.SQL", qText); - qResult = query.executeWithArray(prepareParams(dbName, tableName, - partNames, colNames)); + query = pm.newQuery("javax.jdo.query.SQL", queryText); + qResult = executeWithArray(query, prepareParams( + dbName, tableName, partNames, colNames), queryText); if (qResult == null) { query.closeAll(); return Lists.newArrayList(); } end = doTrace ? System.nanoTime() : 0; - timingTrace(doTrace, qText, start, end); + timingTrace(doTrace, queryText, start, end); List list = ensureList(qResult); List colStats = new ArrayList( list.size()); @@ -1125,18 +1157,18 @@ private List columnStatisticsObjForPartitions( // We need to extrapolate this partition based on the other partitions List colStats = new ArrayList( colNames.size()); - qText = "select \"COLUMN_NAME\", \"COLUMN_TYPE\", count(\"PARTITION_NAME\") " + queryText = "select \"COLUMN_NAME\", \"COLUMN_TYPE\", count(\"PARTITION_NAME\") " + " from \"PART_COL_STATS\"" + " where \"DB_NAME\" = ? and \"TABLE_NAME\" = ? " + " and \"COLUMN_NAME\" in (" + makeParams(colNames.size()) + ")" + " and \"PARTITION_NAME\" in (" + makeParams(partNames.size()) + ")" + " group by \"COLUMN_NAME\", \"COLUMN_TYPE\""; start = doTrace ? System.nanoTime() : 0; - query = pm.newQuery("javax.jdo.query.SQL", qText); - qResult = query.executeWithArray(prepareParams(dbName, tableName, - partNames, colNames)); + query = pm.newQuery("javax.jdo.query.SQL", queryText); + qResult = executeWithArray(query, prepareParams( + dbName, tableName, partNames, colNames), queryText); end = doTrace ? System.nanoTime() : 0; - timingTrace(doTrace, qText, start, end); + timingTrace(doTrace, queryText, start, end); if (qResult == null) { query.closeAll(); return Lists.newArrayList(); @@ -1161,14 +1193,14 @@ private List columnStatisticsObjForPartitions( query.closeAll(); // Extrapolation is not needed for columns noExtraColumnNames if (noExtraColumnNames.size() != 0) { - qText = commonPrefix + queryText = commonPrefix + " and \"COLUMN_NAME\" in ("+ makeParams(noExtraColumnNames.size()) + ")" + " and \"PARTITION_NAME\" in ("+ makeParams(partNames.size()) +")" + " group by \"COLUMN_NAME\", \"COLUMN_TYPE\""; start = doTrace ? System.nanoTime() : 0; - query = pm.newQuery("javax.jdo.query.SQL", qText); - qResult = query.executeWithArray(prepareParams(dbName, tableName, - partNames, noExtraColumnNames)); + query = pm.newQuery("javax.jdo.query.SQL", queryText); + qResult = executeWithArray(query, prepareParams( + dbName, tableName, partNames, noExtraColumnNames), queryText); if (qResult == null) { query.closeAll(); return Lists.newArrayList(); @@ -1178,7 +1210,7 @@ private List columnStatisticsObjForPartitions( colStats.add(prepareCSObj(row, 0)); } end = doTrace ? System.nanoTime() : 0; - timingTrace(doTrace, qText, start, end); + timingTrace(doTrace, queryText, start, end); query.closeAll(); } // Extrapolation is needed for extraColumnNames. @@ -1190,18 +1222,18 @@ private List columnStatisticsObjForPartitions( } // get sum for all columns to reduce the number of queries Map> sumMap = new HashMap>(); - qText = "select \"COLUMN_NAME\", sum(\"NUM_NULLS\"), sum(\"NUM_TRUES\"), sum(\"NUM_FALSES\")" + queryText = "select \"COLUMN_NAME\", sum(\"NUM_NULLS\"), sum(\"NUM_TRUES\"), sum(\"NUM_FALSES\")" + " from \"PART_COL_STATS\"" + " where \"DB_NAME\" = ? and \"TABLE_NAME\" = ? " + " and \"COLUMN_NAME\" in (" +makeParams(extraColumnNameTypeParts.size())+ ")" + " and \"PARTITION_NAME\" in (" + makeParams(partNames.size()) + ")" + " group by \"COLUMN_NAME\""; start = doTrace ? System.nanoTime() : 0; - query = pm.newQuery("javax.jdo.query.SQL", qText); + query = pm.newQuery("javax.jdo.query.SQL", queryText); List extraColumnNames = new ArrayList(); extraColumnNames.addAll(extraColumnNameTypeParts.keySet()); - qResult = query.executeWithArray(prepareParams(dbName, tableName, - partNames, extraColumnNames)); + qResult = executeWithArray(query, prepareParams( + dbName, tableName, partNames, extraColumnNames), queryText); if (qResult == null) { query.closeAll(); return Lists.newArrayList(); @@ -1217,7 +1249,7 @@ private List columnStatisticsObjForPartitions( sumMap.put((String) row[0], indexToObject); } end = doTrace ? System.nanoTime() : 0; - timingTrace(doTrace, qText, start, end); + timingTrace(doTrace, queryText, start, end); query.closeAll(); for (Map.Entry entry : extraColumnNameTypeParts .entrySet()) { @@ -1252,7 +1284,7 @@ private List columnStatisticsObjForPartitions( } else { // if the aggregation type is min/max, we extrapolate from the // left/right borders - qText = "select \"" + queryText = "select \"" + colStatName + "\",\"PARTITION_NAME\" from \"PART_COL_STATS\"" + " where \"DB_NAME\" = ? and \"TABLE_NAME\" = ?" @@ -1260,9 +1292,9 @@ private List columnStatisticsObjForPartitions( + " and \"PARTITION_NAME\" in (" + makeParams(partNames.size()) + ")" + " order by \'" + colStatName + "\'"; start = doTrace ? System.nanoTime() : 0; - query = pm.newQuery("javax.jdo.query.SQL", qText); - qResult = query.executeWithArray(prepareParams(dbName, - tableName, partNames, Arrays.asList(colName))); + query = pm.newQuery("javax.jdo.query.SQL", queryText); + qResult = executeWithArray(query, prepareParams( + dbName, tableName, partNames, Arrays.asList(colName)), queryText); if (qResult == null) { query.closeAll(); return Lists.newArrayList(); @@ -1271,7 +1303,7 @@ private List columnStatisticsObjForPartitions( Object[] min = (Object[]) (fqr.get(0)); Object[] max = (Object[]) (fqr.get(fqr.size() - 1)); end = doTrace ? System.nanoTime() : 0; - timingTrace(doTrace, qText, start, end); + timingTrace(doTrace, queryText, start, end); query.closeAll(); if (min[0] == null || max[0] == null) { row[2 + colStatIndex] = null; @@ -1329,7 +1361,8 @@ public List getPartitionStats(String dbName, String tableName, + makeParams(partNames.size()) + ") order by \"PARTITION_NAME\""; Query query = pm.newQuery("javax.jdo.query.SQL", queryText); - Object qResult = query.executeWithArray(prepareParams(dbName, tableName, partNames, colNames)); + Object qResult = executeWithArray(query, prepareParams( + dbName, tableName, partNames, colNames), queryText); long queryTime = doTrace ? System.nanoTime() : 0; if (qResult == null) { query.closeAll(); @@ -1396,4 +1429,23 @@ private String makeParams(int size) { // W/ size 0, query will fail, but at least we'd get to see the query in debug output. return (size == 0) ? "" : repeat(",?", size).substring(1); } + + @SuppressWarnings("unchecked") + private T executeWithArray(Query query, Object[] params, String sql) throws MetaException { + try { + return (T)((params == null) ? query.execute() : query.executeWithArray(params)); + } catch (Exception ex) { + String error = "Failed to execute [" + sql + "] with parameters ["; + if (params != null) { + boolean isFirst = true; + for (Object param : params) { + error += (isFirst ? "" : ", ") + param; + isFirst = false; + } + } + LOG.warn(error + "]", ex); + // We just logged an exception with (in case of JDO) a humongous callstack. Make a new one. + throw new MetaException("See previous errors; " + ex.getMessage()); + } + } } From f0f191d7eeab3140b6da8663c182d74baf1acdb9 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Mon, 24 Nov 2014 22:52:00 +0000 Subject: [PATCH 299/339] HIVE-8706 : Table statistic collection on counter failed due to table name character case. (Chengxiang Li via Xuefu Zhang) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1641507 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/FileSinkOperator.java | 4 +- .../tez/cross_product_check_1.q.out | 154 +++++++++--------- .../tez/cross_product_check_2.q.out | 136 ++++++++-------- .../results/clientpositive/tez/ctas.q.out | 4 +- .../tez/vector_decimal_10_0.q.out | 10 +- 5 files changed, 155 insertions(+), 153 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java index 4a8ca4716f61..4fb30bc27116 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java @@ -1135,7 +1135,9 @@ private void publishStats() throws HiveException { String postfix=null; if (taskIndependent) { // key = "database.table/SP/DP/"LB/ - prefix = conf.getTableInfo().getTableName(); + // Hive store lowercase table name in metastore, and Counters is character case sensitive, so we + // use lowercase table name as prefix here, as StatsTask get table name from metastore to fetch counter. + prefix = conf.getTableInfo().getTableName().toLowerCase(); } else { // key = "prefix/SP/DP/"LB/taskID/ prefix = conf.getStatsAggPrefix(); diff --git a/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out b/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out index cc13e3714e9d..afc261a279df 100644 --- a/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out +++ b/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out @@ -44,19 +44,19 @@ STAGE PLANS: Map Operator Tree: TableScan alias: b - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: string), value (type: string) Map 3 Map Operator Tree: TableScan alias: a - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: string), value (type: string) Reducer 2 Reduce Operator Tree: @@ -67,14 +67,14 @@ STAGE PLANS: 0 {VALUE._col0} {VALUE._col1} 1 {VALUE._col0} {VALUE._col1} outputColumnNames: _col0, _col1, _col5, _col6 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -107,38 +107,38 @@ STAGE PLANS: Map Operator Tree: TableScan alias: d1 - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Map 4 Map Operator Tree: TableScan alias: d2 - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Map 5 Map Operator Tree: TableScan alias: a - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: string), value (type: string) Reducer 2 Reduce Operator Tree: @@ -149,10 +149,10 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} {VALUE._col0} 1 {KEY.reducesinkkey0} {VALUE._col0} outputColumnNames: _col0, _col1, _col5, _col6 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string) Reducer 3 Reduce Operator Tree: @@ -163,14 +163,14 @@ STAGE PLANS: 0 {VALUE._col0} {VALUE._col1} {VALUE._col5} {VALUE._col6} 1 {VALUE._col0} {VALUE._col1} outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -210,36 +210,36 @@ STAGE PLANS: Map Operator Tree: TableScan alias: d1 - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Map 5 Map Operator Tree: TableScan alias: d2 - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Map 6 Map Operator Tree: TableScan alias: a - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: string), value (type: string) Reducer 2 Reduce Operator Tree: @@ -250,35 +250,35 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Reducer 4 Reduce Operator Tree: @@ -289,14 +289,14 @@ STAGE PLANS: 0 {VALUE._col0} {VALUE._col1} 1 {VALUE._col0} outputColumnNames: _col0, _col1, _col5 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -331,27 +331,27 @@ STAGE PLANS: Map Operator Tree: TableScan alias: d1 - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: string) Map 5 Map Operator Tree: TableScan alias: d2 - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: COMPLETE Map 6 Map Operator Tree: TableScan alias: a - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: string), value (type: string) Reducer 2 Reduce Operator Tree: @@ -362,35 +362,35 @@ STAGE PLANS: 0 {VALUE._col0} 1 outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 11 Data size: 114 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 11 Data size: 114 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 11 Data size: 114 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 11 Data size: 114 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 51 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 51 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 51 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Reducer 4 Reduce Operator Tree: @@ -401,14 +401,14 @@ STAGE PLANS: 0 {VALUE._col0} {VALUE._col1} 1 {VALUE._col0} outputColumnNames: _col0, _col1, _col5 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -447,47 +447,47 @@ STAGE PLANS: Map Operator Tree: TableScan alias: d1 - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Map 5 Map Operator Tree: TableScan alias: d2 - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Map 6 Map Operator Tree: TableScan alias: a - Statistics: Num rows: 58 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: key - Statistics: Num rows: 58 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: key (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 58 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 58 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Merge Join Operator @@ -497,35 +497,35 @@ STAGE PLANS: 0 {KEY.reducesinkkey0} 1 outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Reducer 4 Reduce Operator Tree: @@ -536,14 +536,14 @@ STAGE PLANS: 0 {VALUE._col0} 1 {VALUE._col0} outputColumnNames: _col0, _col1 - Statistics: Num rows: 31 Data size: 3196 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 31 Data size: 3196 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 3196 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -554,14 +554,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 29 Data size: 2906 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 29 Data size: 2906 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 29 Data size: 2906 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Stage: Stage-0 diff --git a/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out b/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out index 69c30017a63a..0e407c5dfe87 100644 --- a/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out +++ b/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out @@ -44,16 +44,16 @@ STAGE PLANS: Map Operator Tree: TableScan alias: b - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: string), value (type: string) Map 2 Map Operator Tree: TableScan alias: a - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -66,14 +66,14 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col5, _col6 input vertices: 1 Map 1 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -106,10 +106,10 @@ STAGE PLANS: Map Operator Tree: TableScan alias: d1 - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -122,30 +122,30 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col5, _col6 input vertices: 1 Map 2 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string) Map 2 Map Operator Tree: TableScan alias: d2 - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Map 3 Map Operator Tree: TableScan alias: a - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -158,14 +158,14 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 input vertices: 0 Map 1 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -205,10 +205,10 @@ STAGE PLANS: Map Operator Tree: TableScan alias: d1 - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -221,39 +221,39 @@ STAGE PLANS: outputColumnNames: _col0 input vertices: 1 Map 3 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Map 3 Map Operator Tree: TableScan alias: d2 - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan alias: a - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -266,14 +266,14 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col5 input vertices: 1 Reducer 2 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -284,14 +284,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Stage: Stage-0 @@ -323,7 +323,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: d1 - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -336,34 +336,34 @@ STAGE PLANS: outputColumnNames: _col0 input vertices: 1 Map 3 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 11 Data size: 114 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 11 Data size: 114 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 11 Data size: 114 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 11 Data size: 114 Basic stats: COMPLETE Column stats: NONE Map 3 Map Operator Tree: TableScan alias: d2 - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 114 Basic stats: PARTIAL Column stats: COMPLETE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: COMPLETE Map 4 Map Operator Tree: TableScan alias: a - Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -376,14 +376,14 @@ STAGE PLANS: outputColumnNames: _col0, _col1, _col5 input vertices: 1 Reducer 2 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 6393 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -394,14 +394,14 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 51 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 51 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 5 Data size: 51 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Stage: Stage-0 @@ -436,10 +436,10 @@ STAGE PLANS: Map Operator Tree: TableScan alias: d1 - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -452,67 +452,67 @@ STAGE PLANS: outputColumnNames: _col0 input vertices: 1 Map 3 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 1 Data size: 125 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 57 Basic stats: COMPLETE Column stats: NONE Map 3 Map Operator Tree: TableScan alias: d2 - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 10 Data size: 104 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: key is not null (type: boolean) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: key (type: string) sort order: + Map-reduce partition columns: key (type: string) - Statistics: Num rows: 1 Data size: 114 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 52 Basic stats: COMPLETE Column stats: NONE Map 4 Map Operator Tree: TableScan alias: a - Statistics: Num rows: 58 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: key - Statistics: Num rows: 58 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: key (type: string) mode: hash outputColumnNames: _col0 - Statistics: Num rows: 58 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 58 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Reducer 2 Reduce Operator Tree: Group By Operator keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator sort order: - Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE + Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Reducer 5 Reduce Operator Tree: @@ -520,11 +520,11 @@ STAGE PLANS: keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0 - Statistics: Num rows: 29 Data size: 2906 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 29 Data size: 2906 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 @@ -537,14 +537,14 @@ STAGE PLANS: outputColumnNames: _col0, _col1 input vertices: 1 Reducer 2 - Statistics: Num rows: 31 Data size: 3196 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 31 Data size: 3196 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 31 Data size: 3196 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat diff --git a/ql/src/test/results/clientpositive/tez/ctas.q.out b/ql/src/test/results/clientpositive/tez/ctas.q.out index 843d6fefcd2b..b90716e94be3 100644 --- a/ql/src/test/results/clientpositive/tez/ctas.q.out +++ b/ql/src/test/results/clientpositive/tez/ctas.q.out @@ -151,8 +151,8 @@ Table Type: MANAGED_TABLE Table Parameters: COLUMN_STATS_ACCURATE true numFiles 1 - numRows 0 - rawDataSize 0 + numRows 10 + rawDataSize 96 totalSize 106 #### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out index 4f97ecdb7a33..6f2b221d8f1b 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out @@ -53,25 +53,25 @@ STAGE PLANS: Map Operator Tree: TableScan alias: decimal - Statistics: Num rows: 1 Data size: 221 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: dec (type: decimal(10,0)) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 221 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: decimal(10,0)) sort order: + - Statistics: Num rows: 1 Data size: 221 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: NONE Execution mode: vectorized Reducer 2 Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: decimal(10,0)) outputColumnNames: _col0 - Statistics: Num rows: 1 Data size: 221 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 221 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat From 7d9c4d7a2a2464114856fab4375517f75c138788 Mon Sep 17 00:00:00 2001 From: Szehon Ho Date: Tue, 25 Nov 2014 00:09:33 +0000 Subject: [PATCH 300/339] HIVE-8784 : Querying partition does not work with JDO enabled against PostgreSQL (Chaoyu Tang via Szehon) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1641510 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/metastore/parser/ExpressionTree.java | 16 +- .../clientpositive/partition_multilevels.q | 93 + .../partition_multilevels.q.out | 1624 +++++++++++++++++ 3 files changed, 1719 insertions(+), 14 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/partition_multilevels.q create mode 100644 ql/src/test/results/clientpositive/partition_multilevels.q.out diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/parser/ExpressionTree.java b/metastore/src/java/org/apache/hadoop/hive/metastore/parser/ExpressionTree.java index b8d1afc57642..60b041bec564 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/parser/ExpressionTree.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/parser/ExpressionTree.java @@ -367,20 +367,8 @@ private void generateJDOFilterOverPartitions(Configuration conf, Table table, partitionColumnIndex, partitionColumnCount, isOpEquals, filterBuilder); return; } - - String keyEqual = FileUtils.escapePathName(keyName) + "="; - String valString = "partitionName.substring("; - String indexOfKeyStr = ""; - if (partitionColumnIndex != 0) { - keyEqual = "/" + keyEqual; - indexOfKeyStr = "partitionName.indexOf(\"" + keyEqual + "\") + "; - valString += indexOfKeyStr; - } - valString += keyEqual.length(); - if (partitionColumnIndex != (partitionColumnCount - 1)) { - valString += ", partitionName.concat(\"/\").indexOf(\"/\", " + indexOfKeyStr + keyEqual.length() + ")"; - } - valString += ")"; + //get the value for a partition key form MPartition.values (PARTITION_KEY_VALUES) + String valString = "values.get(" + partitionColumnIndex + ")"; if (operator == Operator.LIKE) { if (isReverseOrder) { diff --git a/ql/src/test/queries/clientpositive/partition_multilevels.q b/ql/src/test/queries/clientpositive/partition_multilevels.q new file mode 100644 index 000000000000..bde4c629ebd9 --- /dev/null +++ b/ql/src/test/queries/clientpositive/partition_multilevels.q @@ -0,0 +1,93 @@ +create table partition_test_multilevel (key string, value string) partitioned by (level1 string, level2 string, level3 string); + +insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='11') select key, value from srcpart tablesample (11 rows); +insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='22') select key, value from srcpart tablesample (12 rows); +insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='33') select key, value from srcpart tablesample (13 rows); +insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='44') select key, value from srcpart tablesample (14 rows); + +insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='11') select key, value from srcpart tablesample (15 rows); +insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='22') select key, value from srcpart tablesample (16 rows); +insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='33') select key, value from srcpart tablesample (17 rows); +insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='44') select key, value from srcpart tablesample (18 rows); + +insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='11') select key, value from srcpart tablesample (19 rows); +insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='22') select key, value from srcpart tablesample (20 rows); +insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='33') select key, value from srcpart tablesample (21 rows); +insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='44') select key, value from srcpart tablesample (22 rows); + +insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='11') select key, value from srcpart tablesample (11 rows); +insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='22') select key, value from srcpart tablesample (12 rows); +insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='33') select key, value from srcpart tablesample (13 rows); +insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='44') select key, value from srcpart tablesample (14 rows); + +insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='11') select key, value from srcpart tablesample (15 rows); +insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='22') select key, value from srcpart tablesample (16 rows); +insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='33') select key, value from srcpart tablesample (17 rows); +insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='44') select key, value from srcpart tablesample (18 rows); + +insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='11') select key, value from srcpart tablesample (19 rows); +insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='22') select key, value from srcpart tablesample (20 rows); +insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='33') select key, value from srcpart tablesample (21 rows); +insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='44') select key, value from srcpart tablesample (22 rows); + +set metaconf:hive.metastore.try.direct.sql=false; + +-- beginning level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level1 >= '2222' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level1 !='2222' group by level1, level2, level3; + +-- middle level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 = '222' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level2 <= '222' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level2 != '222' group by level1, level2, level3; + +-- ending level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level3 = '22' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level3 >= '22' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level3 != '22' group by level1, level2, level3; + +-- two different levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 >= '222' and level3 = '33' group by level1, level2, level3; + +select level1, level2, level3, count(*) from partition_test_multilevel where level1 <= '1111' and level3 >= '33' group by level1, level2, level3; + + +-- all levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' and level2 >= '222' and level3 <= '33' group by level1, level2, level3; + +-- between +select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3; + +explain select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3; + +set metaconf:hive.metastore.try.direct.sql=true; + +-- beginning level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level1 >= '2222' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level1 !='2222' group by level1, level2, level3; + +-- middle level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 = '222' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level2 <= '222' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level2 != '222' group by level1, level2, level3; + +-- ending level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level3 = '22' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level3 >= '22' group by level1, level2, level3; +select level1, level2, level3, count(*) from partition_test_multilevel where level3 != '22' group by level1, level2, level3; + +-- two different levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 >= '222' and level3 = '33' group by level1, level2, level3; + +select level1, level2, level3, count(*) from partition_test_multilevel where level1 <= '1111' and level3 >= '33' group by level1, level2, level3; + + +-- all levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' and level2 >= '222' and level3 <= '33' group by level1, level2, level3; + +-- between +select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3; + +explain select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3; diff --git a/ql/src/test/results/clientpositive/partition_multilevels.q.out b/ql/src/test/results/clientpositive/partition_multilevels.q.out new file mode 100644 index 000000000000..107522deb67c --- /dev/null +++ b/ql/src/test/results/clientpositive/partition_multilevels.q.out @@ -0,0 +1,1624 @@ +PREHOOK: query: create table partition_test_multilevel (key string, value string) partitioned by (level1 string, level2 string, level3 string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@partition_test_multilevel +POSTHOOK: query: create table partition_test_multilevel (key string, value string) partitioned by (level1 string, level2 string, level3 string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@partition_test_multilevel +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='11') select key, value from srcpart tablesample (11 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='11') select key, value from srcpart tablesample (11 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=111,level3=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=111,level3=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='22') select key, value from srcpart tablesample (12 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='22') select key, value from srcpart tablesample (12 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=111,level3=22).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=111,level3=22).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='33') select key, value from srcpart tablesample (13 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='33') select key, value from srcpart tablesample (13 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=111,level3=33).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=111,level3=33).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='44') select key, value from srcpart tablesample (14 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='111', level3='44') select key, value from srcpart tablesample (14 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=111,level3=44).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=111,level3=44).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='11') select key, value from srcpart tablesample (15 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='11') select key, value from srcpart tablesample (15 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=222,level3=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=222,level3=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='22') select key, value from srcpart tablesample (16 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='22') select key, value from srcpart tablesample (16 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=222,level3=22).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=222,level3=22).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='33') select key, value from srcpart tablesample (17 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='33') select key, value from srcpart tablesample (17 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=222,level3=33).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=222,level3=33).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='44') select key, value from srcpart tablesample (18 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='222', level3='44') select key, value from srcpart tablesample (18 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=222,level3=44).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=222,level3=44).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='11') select key, value from srcpart tablesample (19 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='11') select key, value from srcpart tablesample (19 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=333,level3=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=333,level3=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='22') select key, value from srcpart tablesample (20 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='22') select key, value from srcpart tablesample (20 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=333,level3=22).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=333,level3=22).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='33') select key, value from srcpart tablesample (21 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='33') select key, value from srcpart tablesample (21 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=333,level3=33).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=333,level3=33).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='44') select key, value from srcpart tablesample (22 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='1111', level2='333', level3='44') select key, value from srcpart tablesample (22 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=333,level3=44).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=1111,level2=333,level3=44).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='11') select key, value from srcpart tablesample (11 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='11') select key, value from srcpart tablesample (11 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=111,level3=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=111,level3=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='22') select key, value from srcpart tablesample (12 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='22') select key, value from srcpart tablesample (12 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=111,level3=22).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=111,level3=22).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='33') select key, value from srcpart tablesample (13 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='33') select key, value from srcpart tablesample (13 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=111,level3=33).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=111,level3=33).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='44') select key, value from srcpart tablesample (14 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='111', level3='44') select key, value from srcpart tablesample (14 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=111,level3=44).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=111,level3=44).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='11') select key, value from srcpart tablesample (15 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='11') select key, value from srcpart tablesample (15 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=222,level3=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=222,level3=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='22') select key, value from srcpart tablesample (16 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='22') select key, value from srcpart tablesample (16 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=222,level3=22).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=222,level3=22).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='33') select key, value from srcpart tablesample (17 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='33') select key, value from srcpart tablesample (17 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=222,level3=33).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=222,level3=33).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='44') select key, value from srcpart tablesample (18 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='222', level3='44') select key, value from srcpart tablesample (18 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=222,level3=44).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=222,level3=44).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='11') select key, value from srcpart tablesample (19 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='11') select key, value from srcpart tablesample (19 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=333,level3=11).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=333,level3=11).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='22') select key, value from srcpart tablesample (20 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='22') select key, value from srcpart tablesample (20 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=333,level3=22).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=333,level3=22).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='33') select key, value from srcpart tablesample (21 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='33') select key, value from srcpart tablesample (21 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=333,level3=33).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=333,level3=33).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='44') select key, value from srcpart tablesample (22 rows) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +PREHOOK: Output: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +POSTHOOK: query: insert overwrite table partition_test_multilevel partition(level1='2222', level2='333', level3='44') select key, value from srcpart tablesample (22 rows) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcpart +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +POSTHOOK: Output: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=333,level3=44).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: partition_test_multilevel PARTITION(level1=2222,level2=333,level3=44).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: -- beginning level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: -- beginning level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +2222 111 11 11 +2222 111 22 12 +2222 111 33 13 +2222 111 44 14 +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 222 44 18 +2222 333 11 19 +2222 333 22 20 +2222 333 33 21 +2222 333 44 22 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 >= '2222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 >= '2222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +2222 111 11 11 +2222 111 22 12 +2222 111 33 13 +2222 111 44 14 +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 222 44 18 +2222 333 11 19 +2222 333 22 20 +2222 333 33 21 +2222 333 44 22 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 !='2222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 !='2222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +#### A masked pattern was here #### +1111 111 11 11 +1111 111 22 12 +1111 111 33 13 +1111 111 44 14 +1111 222 11 15 +1111 222 22 16 +1111 222 33 17 +1111 222 44 18 +1111 333 11 19 +1111 333 22 20 +1111 333 33 21 +1111 333 44 22 +PREHOOK: query: -- middle level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 = '222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: -- middle level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 = '222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +#### A masked pattern was here #### +1111 222 11 15 +1111 222 22 16 +1111 222 33 17 +1111 222 44 18 +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 222 44 18 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level2 <= '222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level2 <= '222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +#### A masked pattern was here #### +1111 111 11 11 +1111 111 22 12 +1111 111 33 13 +1111 111 44 14 +1111 222 11 15 +1111 222 22 16 +1111 222 33 17 +1111 222 44 18 +2222 111 11 11 +2222 111 22 12 +2222 111 33 13 +2222 111 44 14 +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 222 44 18 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level2 != '222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level2 != '222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +1111 111 11 11 +1111 111 22 12 +1111 111 33 13 +1111 111 44 14 +1111 333 11 19 +1111 333 22 20 +1111 333 33 21 +1111 333 44 22 +2222 111 11 11 +2222 111 22 12 +2222 111 33 13 +2222 111 44 14 +2222 333 11 19 +2222 333 22 20 +2222 333 33 21 +2222 333 44 22 +PREHOOK: query: -- ending level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level3 = '22' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +#### A masked pattern was here #### +POSTHOOK: query: -- ending level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level3 = '22' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +#### A masked pattern was here #### +1111 111 22 12 +1111 222 22 16 +1111 333 22 20 +2222 111 22 12 +2222 222 22 16 +2222 333 22 20 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level3 >= '22' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level3 >= '22' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +1111 111 22 12 +1111 111 33 13 +1111 111 44 14 +1111 222 22 16 +1111 222 33 17 +1111 222 44 18 +1111 333 22 20 +1111 333 33 21 +1111 333 44 22 +2222 111 22 12 +2222 111 33 13 +2222 111 44 14 +2222 222 22 16 +2222 222 33 17 +2222 222 44 18 +2222 333 22 20 +2222 333 33 21 +2222 333 44 22 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level3 != '22' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level3 != '22' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +1111 111 11 11 +1111 111 33 13 +1111 111 44 14 +1111 222 11 15 +1111 222 33 17 +1111 222 44 18 +1111 333 11 19 +1111 333 33 21 +1111 333 44 22 +2222 111 11 11 +2222 111 33 13 +2222 111 44 14 +2222 222 11 15 +2222 222 33 17 +2222 222 44 18 +2222 333 11 19 +2222 333 33 21 +2222 333 44 22 +PREHOOK: query: -- two different levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 >= '222' and level3 = '33' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +POSTHOOK: query: -- two different levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 >= '222' and level3 = '33' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +1111 222 33 17 +1111 333 33 21 +2222 222 33 17 +2222 333 33 21 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 <= '1111' and level3 >= '33' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 <= '1111' and level3 >= '33' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +#### A masked pattern was here #### +1111 111 33 13 +1111 111 44 14 +1111 222 33 17 +1111 222 44 18 +1111 333 33 21 +1111 333 44 22 +PREHOOK: query: -- all levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' and level2 >= '222' and level3 <= '33' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +POSTHOOK: query: -- all levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' and level2 >= '222' and level3 <= '33' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 333 11 19 +2222 333 22 20 +2222 333 33 21 +PREHOOK: query: -- between +select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +POSTHOOK: query: -- between +select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 333 11 19 +2222 333 22 20 +2222 333 33 21 +PREHOOK: query: explain select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3 +PREHOOK: type: QUERY +POSTHOOK: query: explain select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: partition_test_multilevel + Statistics: Num rows: 108 Data size: 1146 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: '2222' (type: string), level2 (type: string), level3 (type: string) + outputColumnNames: level1, level2, level3 + Statistics: Num rows: 108 Data size: 1146 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + keys: level1 (type: string), level2 (type: string), level3 (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 108 Data size: 1146 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + sort order: +++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) + Statistics: Num rows: 108 Data size: 1146 Basic stats: COMPLETE Column stats: NONE + value expressions: _col3 (type: bigint) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 54 Data size: 573 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: bigint) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 54 Data size: 573 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 54 Data size: 573 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: -- beginning level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: -- beginning level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +2222 111 11 11 +2222 111 22 12 +2222 111 33 13 +2222 111 44 14 +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 222 44 18 +2222 333 11 19 +2222 333 22 20 +2222 333 33 21 +2222 333 44 22 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 >= '2222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 >= '2222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +2222 111 11 11 +2222 111 22 12 +2222 111 33 13 +2222 111 44 14 +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 222 44 18 +2222 333 11 19 +2222 333 22 20 +2222 333 33 21 +2222 333 44 22 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 !='2222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 !='2222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +#### A masked pattern was here #### +1111 111 11 11 +1111 111 22 12 +1111 111 33 13 +1111 111 44 14 +1111 222 11 15 +1111 222 22 16 +1111 222 33 17 +1111 222 44 18 +1111 333 11 19 +1111 333 22 20 +1111 333 33 21 +1111 333 44 22 +PREHOOK: query: -- middle level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 = '222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: -- middle level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 = '222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +#### A masked pattern was here #### +1111 222 11 15 +1111 222 22 16 +1111 222 33 17 +1111 222 44 18 +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 222 44 18 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level2 <= '222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level2 <= '222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +#### A masked pattern was here #### +1111 111 11 11 +1111 111 22 12 +1111 111 33 13 +1111 111 44 14 +1111 222 11 15 +1111 222 22 16 +1111 222 33 17 +1111 222 44 18 +2222 111 11 11 +2222 111 22 12 +2222 111 33 13 +2222 111 44 14 +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 222 44 18 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level2 != '222' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level2 != '222' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +1111 111 11 11 +1111 111 22 12 +1111 111 33 13 +1111 111 44 14 +1111 333 11 19 +1111 333 22 20 +1111 333 33 21 +1111 333 44 22 +2222 111 11 11 +2222 111 22 12 +2222 111 33 13 +2222 111 44 14 +2222 333 11 19 +2222 333 22 20 +2222 333 33 21 +2222 333 44 22 +PREHOOK: query: -- ending level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level3 = '22' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +#### A masked pattern was here #### +POSTHOOK: query: -- ending level partition in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level3 = '22' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +#### A masked pattern was here #### +1111 111 22 12 +1111 222 22 16 +1111 333 22 20 +2222 111 22 12 +2222 222 22 16 +2222 333 22 20 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level3 >= '22' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level3 >= '22' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +1111 111 22 12 +1111 111 33 13 +1111 111 44 14 +1111 222 22 16 +1111 222 33 17 +1111 222 44 18 +1111 333 22 20 +1111 333 33 21 +1111 333 44 22 +2222 111 22 12 +2222 111 33 13 +2222 111 44 14 +2222 222 22 16 +2222 222 33 17 +2222 222 44 18 +2222 333 22 20 +2222 333 33 21 +2222 333 44 22 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level3 != '22' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level3 != '22' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=44 +#### A masked pattern was here #### +1111 111 11 11 +1111 111 33 13 +1111 111 44 14 +1111 222 11 15 +1111 222 33 17 +1111 222 44 18 +1111 333 11 19 +1111 333 33 21 +1111 333 44 22 +2222 111 11 11 +2222 111 33 13 +2222 111 44 14 +2222 222 11 15 +2222 222 33 17 +2222 222 44 18 +2222 333 11 19 +2222 333 33 21 +2222 333 44 22 +PREHOOK: query: -- two different levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 >= '222' and level3 = '33' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +POSTHOOK: query: -- two different levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level2 >= '222' and level3 = '33' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +1111 222 33 17 +1111 333 33 21 +2222 222 33 17 +2222 333 33 21 +PREHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 <= '1111' and level3 >= '33' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +#### A masked pattern was here #### +POSTHOOK: query: select level1, level2, level3, count(*) from partition_test_multilevel where level1 <= '1111' and level3 >= '33' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=111/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=222/level3=44 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=1111/level2=333/level3=44 +#### A masked pattern was here #### +1111 111 33 13 +1111 111 44 14 +1111 222 33 17 +1111 222 44 18 +1111 333 33 21 +1111 333 44 22 +PREHOOK: query: -- all levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' and level2 >= '222' and level3 <= '33' group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +POSTHOOK: query: -- all levels of partitions in predicate +select level1, level2, level3, count(*) from partition_test_multilevel where level1 = '2222' and level2 >= '222' and level3 <= '33' group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 333 11 19 +2222 333 22 20 +2222 333 33 21 +PREHOOK: query: -- between +select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3 +PREHOOK: type: QUERY +PREHOOK: Input: default@partition_test_multilevel +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +PREHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +POSTHOOK: query: -- between +select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@partition_test_multilevel +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=222/level3=33 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=11 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=22 +POSTHOOK: Input: default@partition_test_multilevel@level1=2222/level2=333/level3=33 +#### A masked pattern was here #### +2222 222 11 15 +2222 222 22 16 +2222 222 33 17 +2222 333 11 19 +2222 333 22 20 +2222 333 33 21 +PREHOOK: query: explain select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3 +PREHOOK: type: QUERY +POSTHOOK: query: explain select level1, level2, level3, count(*) from partition_test_multilevel where (level1 = '2222') and (level2 between '222' and '333') and (level3 between '11' and '33') group by level1, level2, level3 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: partition_test_multilevel + Statistics: Num rows: 108 Data size: 1146 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: '2222' (type: string), level2 (type: string), level3 (type: string) + outputColumnNames: level1, level2, level3 + Statistics: Num rows: 108 Data size: 1146 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + keys: level1 (type: string), level2 (type: string), level3 (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 108 Data size: 1146 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string) + sort order: +++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string) + Statistics: Num rows: 108 Data size: 1146 Basic stats: COMPLETE Column stats: NONE + value expressions: _col3 (type: bigint) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 54 Data size: 573 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: bigint) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 54 Data size: 573 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 54 Data size: 573 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + From 9cd2b4d176565ac28d9c9f1f80b5c6b72337fec3 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Mon, 1 Dec 2014 22:10:32 +0000 Subject: [PATCH 301/339] HIVE-8374 : schematool fails on Postgres versions < 9.2 (Mohit Sabharwal, reviewed by Brock Noland) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1642769 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hive/beeline/HiveSchemaHelper.java | 200 +++++++++++++++++- .../apache/hive/beeline/HiveSchemaTool.java | 167 ++++++--------- .../apache/hive/beeline/TestSchemaTool.java | 101 +++++++-- .../hive/metastore/MetaStoreSchemaInfo.java | 7 +- 4 files changed, 342 insertions(+), 133 deletions(-) diff --git a/beeline/src/java/org/apache/hive/beeline/HiveSchemaHelper.java b/beeline/src/java/org/apache/hive/beeline/HiveSchemaHelper.java index a21fa652e9c1..d13d8b67d097 100644 --- a/beeline/src/java/org/apache/hive/beeline/HiveSchemaHelper.java +++ b/beeline/src/java/org/apache/hive/beeline/HiveSchemaHelper.java @@ -17,7 +17,19 @@ */ package org.apache.hive.beeline; +import com.google.common.collect.Lists; +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.metastore.HiveMetaException; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; import java.util.IllegalFormatException; +import java.util.List; public class HiveSchemaHelper { public static final String DB_DERBY = "derby"; @@ -26,6 +38,56 @@ public class HiveSchemaHelper { public static final String DB_POSTGRACE = "postgres"; public static final String DB_ORACLE = "oracle"; + /*** + * Get JDBC connection to metastore db + * + * @param userName metastore connection username + * @param password metastore connection password + * @param printInfo print connection parameters + * @param hiveConf hive config object + * @return metastore connection object + * @throws org.apache.hadoop.hive.metastore.api.MetaException + */ + public static Connection getConnectionToMetastore(String userName, + String password, boolean printInfo, HiveConf hiveConf) + throws HiveMetaException { + try { + String connectionURL = getValidConfVar( + HiveConf.ConfVars.METASTORECONNECTURLKEY, hiveConf); + String driver = getValidConfVar( + HiveConf.ConfVars.METASTORE_CONNECTION_DRIVER, hiveConf); + if (printInfo) { + System.out.println("Metastore connection URL:\t " + connectionURL); + System.out.println("Metastore Connection Driver :\t " + driver); + System.out.println("Metastore connection User:\t " + userName); + } + if ((userName == null) || userName.isEmpty()) { + throw new HiveMetaException("UserName empty "); + } + + // load required JDBC driver + Class.forName(driver); + + // Connect using the JDBC URL and user/pass from conf + return DriverManager.getConnection(connectionURL, userName, password); + } catch (IOException e) { + throw new HiveMetaException("Failed to get schema version.", e); + } catch (SQLException e) { + throw new HiveMetaException("Failed to get schema version.", e); + } catch (ClassNotFoundException e) { + throw new HiveMetaException("Failed to load driver", e); + } + } + + public static String getValidConfVar(HiveConf.ConfVars confVar, HiveConf hiveConf) + throws IOException { + String confVarStr = hiveConf.get(confVar.varname); + if (confVarStr == null || confVarStr.isEmpty()) { + throw new IOException("Empty " + confVar.varname); + } + return confVarStr; + } + public interface NestedScriptParser { public enum CommandType { @@ -57,7 +119,7 @@ public enum CommandType { public boolean isNestedScript(String dbCommand); /*** - * Find if the given command is should be passed to DB + * Find if the given command should not be passed to DB * @param dbCommand * @return */ @@ -80,8 +142,16 @@ public enum CommandType { * @return */ public boolean needsQuotedIdentifier(); - } + /*** + * Flatten the nested upgrade script into a buffer + * @param scriptDir upgrade script directory + * @param scriptFile upgrade script file + * @return string of sql commands + */ + public String buildCommand(String scriptDir, String scriptFile) + throws IllegalFormatException, IOException; + } /*** * Base implemenation of NestedScriptParser @@ -89,6 +159,18 @@ public enum CommandType { * */ private static abstract class AbstractCommandParser implements NestedScriptParser { + private List dbOpts; + private String msUsername; + private String msPassword; + private HiveConf hiveConf; + + public AbstractCommandParser(String dbOpts, String msUsername, String msPassword, + HiveConf hiveConf) { + setDbOpts(dbOpts); + this.msUsername = msUsername; + this.msPassword = msPassword; + this.hiveConf = hiveConf; + } @Override public boolean isPartialCommand(String dbCommand) throws IllegalArgumentException{ @@ -127,13 +209,84 @@ public String cleanseCommand(String dbCommand) { public boolean needsQuotedIdentifier() { return false; } - } + @Override + public String buildCommand( + String scriptDir, String scriptFile) throws IllegalFormatException, IOException { + BufferedReader bfReader = + new BufferedReader(new FileReader(scriptDir + File.separatorChar + scriptFile)); + String currLine; + StringBuilder sb = new StringBuilder(); + String currentCommand = null; + while ((currLine = bfReader.readLine()) != null) { + currLine = currLine.trim(); + if (currLine.isEmpty()) { + continue; // skip empty lines + } + + if (currentCommand == null) { + currentCommand = currLine; + } else { + currentCommand = currentCommand + " " + currLine; + } + if (isPartialCommand(currLine)) { + // if its a partial line, continue collecting the pieces + continue; + } + + // if this is a valid executable command then add it to the buffer + if (!isNonExecCommand(currentCommand)) { + currentCommand = cleanseCommand(currentCommand); + + if (isNestedScript(currentCommand)) { + // if this is a nested sql script then flatten it + String currScript = getScriptName(currentCommand); + sb.append(buildCommand(scriptDir, currScript)); + } else { + // Now we have a complete statement, process it + // write the line to buffer + sb.append(currentCommand); + sb.append(System.getProperty("line.separator")); + } + } + currentCommand = null; + } + bfReader.close(); + return sb.toString(); + } + + private void setDbOpts(String dbOpts) { + if (dbOpts != null) { + this.dbOpts = Lists.newArrayList(dbOpts.split(",")); + } + } + + protected List getDbOpts() { + return dbOpts; + } + + protected String getMsUsername() { + return msUsername; + } + + protected String getMsPassword() { + return msPassword; + } + + protected HiveConf getHiveConf() { + return hiveConf; + } + } // Derby commandline parser public static class DerbyCommandParser extends AbstractCommandParser { private static String DERBY_NESTING_TOKEN = "RUN"; + public DerbyCommandParser(String dbOpts, String msUsername, String msPassword, + HiveConf hiveConf) { + super(dbOpts, msUsername, msPassword, hiveConf); + } + @Override public String getScriptName(String dbCommand) throws IllegalArgumentException { @@ -154,13 +307,17 @@ public boolean isNestedScript(String dbCommand) { } } - // MySQL parser public static class MySqlCommandParser extends AbstractCommandParser { private static final String MYSQL_NESTING_TOKEN = "SOURCE"; private static final String DELIMITER_TOKEN = "DELIMITER"; private String delimiter = DEFAUTL_DELIMITER; + public MySqlCommandParser(String dbOpts, String msUsername, String msPassword, + HiveConf hiveConf) { + super(dbOpts, msUsername, msPassword, hiveConf); + } + @Override public boolean isPartialCommand(String dbCommand) throws IllegalArgumentException{ boolean isPartial = super.isPartialCommand(dbCommand); @@ -213,6 +370,11 @@ public String cleanseCommand(String dbCommand) { public static class PostgresCommandParser extends AbstractCommandParser { private static String POSTGRES_NESTING_TOKEN = "\\i"; + public PostgresCommandParser(String dbOpts, String msUsername, String msPassword, + HiveConf hiveConf) { + super(dbOpts, msUsername, msPassword, hiveConf); + } + @Override public String getScriptName(String dbCommand) throws IllegalArgumentException { String[] tokens = dbCommand.split(" "); @@ -237,6 +399,12 @@ public boolean needsQuotedIdentifier() { //Oracle specific parser public static class OracleCommandParser extends AbstractCommandParser { private static String ORACLE_NESTING_TOKEN = "@"; + + public OracleCommandParser(String dbOpts, String msUsername, String msPassword, + HiveConf hiveConf) { + super(dbOpts, msUsername, msPassword, hiveConf); + } + @Override public String getScriptName(String dbCommand) throws IllegalArgumentException { if (!isNestedScript(dbCommand)) { @@ -255,6 +423,12 @@ public boolean isNestedScript(String dbCommand) { //MSSQL specific parser public static class MSSQLCommandParser extends AbstractCommandParser { private static String MSSQL_NESTING_TOKEN = ":r"; + + public MSSQLCommandParser(String dbOpts, String msUsername, String msPassword, + HiveConf hiveConf) { + super(dbOpts, msUsername, msPassword, hiveConf); + } + @Override public String getScriptName(String dbCommand) throws IllegalArgumentException { String[] tokens = dbCommand.split(" "); @@ -271,18 +445,24 @@ public boolean isNestedScript(String dbCommand) { } public static NestedScriptParser getDbCommandParser(String dbName) { + return getDbCommandParser(dbName, null, null, null, null); + } + + public static NestedScriptParser getDbCommandParser(String dbName, + String dbOpts, String msUsername, String msPassword, + HiveConf hiveConf) { if (dbName.equalsIgnoreCase(DB_DERBY)) { - return new DerbyCommandParser(); + return new DerbyCommandParser(dbOpts, msUsername, msPassword, hiveConf); } else if (dbName.equalsIgnoreCase(DB_MSSQL)) { - return new MSSQLCommandParser(); + return new MSSQLCommandParser(dbOpts, msUsername, msPassword, hiveConf); } else if (dbName.equalsIgnoreCase(DB_MYSQL)) { - return new MySqlCommandParser(); + return new MySqlCommandParser(dbOpts, msUsername, msPassword, hiveConf); } else if (dbName.equalsIgnoreCase(DB_POSTGRACE)) { - return new PostgresCommandParser(); + return new PostgresCommandParser(dbOpts, msUsername, msPassword, hiveConf); } else if (dbName.equalsIgnoreCase(DB_ORACLE)) { - return new OracleCommandParser(); + return new OracleCommandParser(dbOpts, msUsername, msPassword, hiveConf); } else { throw new IllegalArgumentException("Unknown dbType " + dbName); } } -} +} \ No newline at end of file diff --git a/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java b/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java index c376687cb473..8edf41321fcd 100644 --- a/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java +++ b/beeline/src/java/org/apache/hive/beeline/HiveSchemaTool.java @@ -17,20 +17,16 @@ */ package org.apache.hive.beeline; -import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; -import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintStream; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; -import java.util.IllegalFormatException; import java.util.List; import org.apache.commons.cli.CommandLine; @@ -56,6 +52,7 @@ public class HiveSchemaTool { private String passWord = null; private boolean dryRun = false; private boolean verbose = false; + private String dbOpts = null; private final HiveConf hiveConf; private final String dbType; private final MetaStoreSchemaInfo metaStoreSchemaInfo; @@ -65,7 +62,7 @@ public HiveSchemaTool(String dbType) throws HiveMetaException { } public HiveSchemaTool(String hiveHome, HiveConf hiveConf, String dbType) - throws HiveMetaException { + throws HiveMetaException { if (hiveHome == null || hiveHome.isEmpty()) { throw new HiveMetaException("No Hive home directory provided"); } @@ -101,12 +98,27 @@ public void setVerbose(boolean verbose) { this.verbose = verbose; } + public void setDbOpts(String dbOpts) { + this.dbOpts = dbOpts; + } + private static void printAndExit(Options cmdLineOptions) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("schemaTool", cmdLineOptions); System.exit(1); } + private Connection getConnectionToMetastore(boolean printInfo) + throws HiveMetaException { + return HiveSchemaHelper.getConnectionToMetastore(userName, + passWord, printInfo, hiveConf); + } + + private NestedScriptParser getDbCommandParser(String dbType) { + return HiveSchemaHelper.getDbCommandParser(dbType, dbOpts, userName, + passWord, hiveConf); + } + /*** * Print Hive version and schema version * @throws MetaException @@ -121,9 +133,9 @@ public void showInfo() throws HiveMetaException { // read schema version from metastore private String getMetaStoreSchemaVersion(Connection metastoreConn) - throws HiveMetaException { + throws HiveMetaException { String versionQuery; - if (HiveSchemaHelper.getDbCommandParser(dbType).needsQuotedIdentifier()) { + if (getDbCommandParser(dbType).needsQuotedIdentifier()) { versionQuery = "select t.\"SCHEMA_VERSION\" from \"VERSION\" t"; } else { versionQuery = "select t.SCHEMA_VERSION from VERSION t"; @@ -152,40 +164,6 @@ private void testConnectionToMetastore() throws HiveMetaException { } } - /*** - * get JDBC connection to metastore db - * - * @param printInfo print connection parameters - * @return - * @throws MetaException - */ - private Connection getConnectionToMetastore(boolean printInfo) - throws HiveMetaException { - try { - String connectionURL = getValidConfVar(ConfVars.METASTORECONNECTURLKEY); - String driver = getValidConfVar(ConfVars.METASTORE_CONNECTION_DRIVER); - if (printInfo) { - System.out.println("Metastore connection URL:\t " + connectionURL); - System.out.println("Metastore Connection Driver :\t " + driver); - System.out.println("Metastore connection User:\t " + userName); - } - if ((userName == null) || userName.isEmpty()) { - throw new HiveMetaException("UserName empty "); - } - - // load required JDBC driver - Class.forName(driver); - - // Connect using the JDBC URL and user/pass from conf - return DriverManager.getConnection(connectionURL, userName, passWord); - } catch (IOException e) { - throw new HiveMetaException("Failed to get schema version.", e); - } catch (SQLException e) { - throw new HiveMetaException("Failed to get schema version.", e); - } catch (ClassNotFoundException e) { - throw new HiveMetaException("Failed to load driver", e); - } - } /** * check if the current schema version in metastore matches the Hive version @@ -196,8 +174,8 @@ public void verifySchemaVersion() throws HiveMetaException { if (dryRun) { return; } - String newSchemaVersion = - getMetaStoreSchemaVersion(getConnectionToMetastore(false)); + String newSchemaVersion = getMetaStoreSchemaVersion( + getConnectionToMetastore(false)); // verify that the new version is added to schema if (!MetaStoreSchemaInfo.getHiveSchemaVersion().equalsIgnoreCase(newSchemaVersion)) { throw new HiveMetaException("Found unexpected schema version " + newSchemaVersion); @@ -209,7 +187,8 @@ public void verifySchemaVersion() throws HiveMetaException { * @throws MetaException */ public void doUpgrade() throws HiveMetaException { - String fromVersion = getMetaStoreSchemaVersion(getConnectionToMetastore(false)); + String fromVersion = getMetaStoreSchemaVersion( + getConnectionToMetastore(false)); if (fromVersion == null || fromVersion.isEmpty()) { throw new HiveMetaException("Schema version not stored in the metastore. " + "Metastore schema is too old or corrupt. Try specifying the version manually"); @@ -240,6 +219,7 @@ public void doUpgrade(String fromSchemaVer) throws HiveMetaException { for (String scriptFile : upgradeScripts) { System.out.println("Upgrade script " + scriptFile); if (!dryRun) { + runPreUpgrade(scriptDir, scriptFile); runBeeLine(scriptDir, scriptFile); System.out.println("Completed " + scriptFile); } @@ -291,58 +271,47 @@ public void doInit(String toVersion) throws HiveMetaException { } } - // Flatten the nested upgrade script into a buffer - public static String buildCommand(NestedScriptParser dbCommandParser, - String scriptDir, String scriptFile) throws IllegalFormatException, IOException { - - BufferedReader bfReader = - new BufferedReader(new FileReader(scriptDir + File.separatorChar + scriptFile)); - String currLine; - StringBuilder sb = new StringBuilder(); - String currentCommand = null; - while ((currLine = bfReader.readLine()) != null) { - currLine = currLine.trim(); - if (currLine.isEmpty()) { - continue; // skip empty lines - } - - if (currentCommand == null) { - currentCommand = currLine; - } else { - currentCommand = currentCommand + " " + currLine; - } - if (dbCommandParser.isPartialCommand(currLine)) { - // if its a partial line, continue collecting the pieces - continue; + /** + * Run pre-upgrade scripts corresponding to a given upgrade script, + * if any exist. The errors from pre-upgrade are ignored. + * Pre-upgrade scripts typically contain setup statements which + * may fail on some database versions and failure is ignorable. + * + * @param scriptDir upgrade script directory name + * @param scriptFile upgrade script file name + */ + private void runPreUpgrade(String scriptDir, String scriptFile) { + for (int i = 0;; i++) { + String preUpgradeScript = + MetaStoreSchemaInfo.getPreUpgradeScriptName(i, scriptFile); + File preUpgradeScriptFile = new File(scriptDir, preUpgradeScript); + if (!preUpgradeScriptFile.isFile()) { + break; } - // if this is a valid executable command then add it to the buffer - if (!dbCommandParser.isNonExecCommand(currentCommand)) { - currentCommand = dbCommandParser.cleanseCommand(currentCommand); - - if (dbCommandParser.isNestedScript(currentCommand)) { - // if this is a nested sql script then flatten it - String currScript = dbCommandParser.getScriptName(currentCommand); - sb.append(buildCommand(dbCommandParser, scriptDir, currScript)); - } else { - // Now we have a complete statement, process it - // write the line to buffer - sb.append(currentCommand); - sb.append(System.getProperty("line.separator")); + try { + runBeeLine(scriptDir, preUpgradeScript); + System.out.println("Completed " + preUpgradeScript); + } catch (Exception e) { + // Ignore the pre-upgrade script errors + System.err.println("Warning in pre-upgrade script " + preUpgradeScript + ": " + + e.getMessage()); + if (verbose) { + e.printStackTrace(); } } - currentCommand = null; } - bfReader.close(); - return sb.toString(); } - // run beeline on the given metastore scrip, flatten the nested scripts into single file - private void runBeeLine(String scriptDir, String scriptFile) throws IOException { - NestedScriptParser dbCommandParser = - HiveSchemaHelper.getDbCommandParser(dbType); + /*** + * Run beeline with the given metastore script. Flatten the nested scripts + * into single file. + */ + private void runBeeLine(String scriptDir, String scriptFile) + throws IOException, HiveMetaException { + NestedScriptParser dbCommandParser = getDbCommandParser(dbType); // expand the nested script - String sqlCommands = buildCommand(dbCommandParser, scriptDir, scriptFile); + String sqlCommands = dbCommandParser.buildCommand(scriptDir, scriptFile); File tmpFile = File.createTempFile("schematool", ".sql"); tmpFile.deleteOnExit(); @@ -360,9 +329,11 @@ private void runBeeLine(String scriptDir, String scriptFile) throws IOException public void runBeeLine(String sqlScriptFile) throws IOException { List argList = new ArrayList(); argList.add("-u"); - argList.add(getValidConfVar(ConfVars.METASTORECONNECTURLKEY)); + argList.add(HiveSchemaHelper.getValidConfVar( + ConfVars.METASTORECONNECTURLKEY, hiveConf)); argList.add("-d"); - argList.add(getValidConfVar(ConfVars.METASTORE_CONNECTION_DRIVER)); + argList.add(HiveSchemaHelper.getValidConfVar( + ConfVars.METASTORE_CONNECTION_DRIVER, hiveConf)); argList.add("-n"); argList.add(userName); argList.add("-p"); @@ -384,14 +355,6 @@ public void runBeeLine(String sqlScriptFile) throws IOException { } } - private String getValidConfVar(ConfVars confVar) throws IOException { - String confVarStr = hiveConf.get(confVar.varname); - if (confVarStr == null || confVarStr.isEmpty()) { - throw new IOException("Empty " + confVar.varname); - } - return confVarStr; - } - // Create the required command line options @SuppressWarnings("static-access") private static void initOptions(Options cmdLineOptions) { @@ -423,6 +386,9 @@ private static void initOptions(Options cmdLineOptions) { Option dbTypeOpt = OptionBuilder.withArgName("databaseType") .hasArgs().withDescription("Metastore database type") .create("dbType"); + Option dbOpts = OptionBuilder.withArgName("databaseOpts") + .hasArgs().withDescription("Backend DB specific options") + .create("dbOpts"); Option dryRunOpt = new Option("dryRun", "list SQL scripts (no execute)"); Option verboseOpt = new Option("verbose", "only print SQL statements"); @@ -432,6 +398,7 @@ private static void initOptions(Options cmdLineOptions) { cmdLineOptions.addOption(passwdOpt); cmdLineOptions.addOption(dbTypeOpt); cmdLineOptions.addOption(verboseOpt); + cmdLineOptions.addOption(dbOpts); cmdLineOptions.addOptionGroup(optGroup); } @@ -488,7 +455,9 @@ public static void main(String[] args) { if (line.hasOption("verbose")) { schemaTool.setVerbose(true); } - + if (line.hasOption("dbOpts")) { + schemaTool.setDbOpts(line.getOptionValue("dbOpts")); + } if (line.hasOption("info")) { schemaTool.showInfo(); } else if (line.hasOption("upgradeSchema")) { diff --git a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestSchemaTool.java b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestSchemaTool.java index 749fb9e86b4f..9ae9bc0a267e 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestSchemaTool.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestSchemaTool.java @@ -19,9 +19,12 @@ package org.apache.hive.beeline; import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; import java.util.Random; import junit.framework.TestCase; @@ -31,14 +34,14 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.HiveMetaException; import org.apache.hadoop.hive.metastore.MetaStoreSchemaInfo; -import org.apache.hive.beeline.HiveSchemaHelper; import org.apache.hive.beeline.HiveSchemaHelper.NestedScriptParser; -import org.apache.hive.beeline.HiveSchemaTool; public class TestSchemaTool extends TestCase { private HiveSchemaTool schemaTool; private HiveConf hiveConf; private String testMetastoreDB; + private PrintStream errStream; + private PrintStream outStream; @Override protected void setUp() throws Exception { @@ -48,8 +51,11 @@ protected void setUp() throws Exception { System.setProperty(HiveConf.ConfVars.METASTORECONNECTURLKEY.varname, "jdbc:derby:" + testMetastoreDB + ";create=true"); hiveConf = new HiveConf(this.getClass()); - schemaTool = new HiveSchemaTool(System.getProperty("test.tmp.dir"), hiveConf, "derby"); + schemaTool = new HiveSchemaTool( + System.getProperty("test.tmp.dir", "target/tmp"), hiveConf, "derby"); System.setProperty("beeLine.system.exit", "true"); + errStream = System.err; + outStream = System.out; } @Override @@ -58,6 +64,8 @@ protected void tearDown() throws Exception { if (metaStoreDir.exists()) { FileUtils.forceDeleteOnExit(metaStoreDir); } + System.setOut(outStream); + System.setErr(errStream); } /** @@ -121,12 +129,42 @@ public void testSchemaUpgrade() throws Exception { foundException = true; } if (!foundException) { - throw new Exception("Hive operations shouldn't pass with older version schema"); + throw new Exception( + "Hive operations shouldn't pass with older version schema"); } - // upgrade schema from 0.7.0 to latest + // Generate dummy pre-upgrade script with errors + String invalidPreUpgradeScript = writeDummyPreUpgradeScript( + 0, "upgrade-0.11.0-to-0.12.0.derby.sql", "foo bar;"); + // Generate dummy pre-upgrade scripts with valid SQL + String validPreUpgradeScript0 = writeDummyPreUpgradeScript( + 0, "upgrade-0.12.0-to-0.13.0.derby.sql", + "CREATE TABLE schema_test0 (id integer);"); + String validPreUpgradeScript1 = writeDummyPreUpgradeScript( + 1, "upgrade-0.12.0-to-0.13.0.derby.sql", + "CREATE TABLE schema_test1 (id integer);"); + + // Capture system out and err + schemaTool.setVerbose(true); + OutputStream stderr = new ByteArrayOutputStream(); + PrintStream errPrintStream = new PrintStream(stderr); + System.setErr(errPrintStream); + OutputStream stdout = new ByteArrayOutputStream(); + PrintStream outPrintStream = new PrintStream(stdout); + System.setOut(outPrintStream); + + // Upgrade schema from 0.7.0 to latest schemaTool.doUpgrade("0.7.0"); - // verify that driver works fine with latest schema + + // Verify that the schemaTool ran pre-upgrade scripts and ignored errors + assertTrue(stderr.toString().contains(invalidPreUpgradeScript)); + assertTrue(stderr.toString().contains("foo")); + assertFalse(stderr.toString().contains(validPreUpgradeScript0)); + assertFalse(stderr.toString().contains(validPreUpgradeScript1)); + assertTrue(stdout.toString().contains(validPreUpgradeScript0)); + assertTrue(stdout.toString().contains(validPreUpgradeScript1)); + + // Verify that driver works fine with latest schema schemaTool.verifySchemaVersion(); } @@ -152,9 +190,9 @@ public void testScripts() throws Exception { String expectedSQL = StringUtils.join(resultScript, System.getProperty("line.separator")) + System.getProperty("line.separator"); File testScriptFile = generateTestScript(testScript); - String flattenedSql = HiveSchemaTool.buildCommand( - HiveSchemaHelper.getDbCommandParser("derby"), - testScriptFile.getParentFile().getPath(), testScriptFile.getName()); + String flattenedSql = HiveSchemaHelper.getDbCommandParser("derby") + .buildCommand(testScriptFile.getParentFile().getPath(), + testScriptFile.getName()); assertEquals(expectedSQL, flattenedSql); } @@ -194,9 +232,9 @@ public void testNestedScriptsForDerby() throws Exception { }; File testScriptFile = generateTestScript(parentTestScript); - String flattenedSql = HiveSchemaTool.buildCommand( - HiveSchemaHelper.getDbCommandParser("derby"), - testScriptFile.getParentFile().getPath(), testScriptFile.getName()); + String flattenedSql = HiveSchemaHelper.getDbCommandParser("derby") + .buildCommand(testScriptFile.getParentFile().getPath(), + testScriptFile.getName()); assertFalse(flattenedSql.contains("RUN")); assertFalse(flattenedSql.contains("comment")); assertTrue(flattenedSql.contains(childTab1)); @@ -239,9 +277,9 @@ public void testNestedScriptsForMySQL() throws Exception { }; File testScriptFile = generateTestScript(parentTestScript); - String flattenedSql = HiveSchemaTool.buildCommand( - HiveSchemaHelper.getDbCommandParser("mysql"), - testScriptFile.getParentFile().getPath(), testScriptFile.getName()); + String flattenedSql = HiveSchemaHelper.getDbCommandParser("mysql") + .buildCommand(testScriptFile.getParentFile().getPath(), + testScriptFile.getName()); assertFalse(flattenedSql.contains("RUN")); assertFalse(flattenedSql.contains("comment")); assertTrue(flattenedSql.contains(childTab1)); @@ -282,8 +320,8 @@ public void testScriptWithDelimiter() throws Exception { System.getProperty("line.separator"); File testScriptFile = generateTestScript(testScript); NestedScriptParser testDbParser = HiveSchemaHelper.getDbCommandParser("mysql"); - String flattenedSql = HiveSchemaTool.buildCommand(testDbParser, - testScriptFile.getParentFile().getPath(), testScriptFile.getName()); + String flattenedSql = testDbParser.buildCommand(testScriptFile.getParentFile().getPath(), + testScriptFile.getName()); assertEquals(expectedSQL, flattenedSql); } @@ -317,8 +355,8 @@ public void testScriptMultiRowComment() throws Exception { System.getProperty("line.separator"); File testScriptFile = generateTestScript(testScript); NestedScriptParser testDbParser = HiveSchemaHelper.getDbCommandParser("mysql"); - String flattenedSql = HiveSchemaTool.buildCommand(testDbParser, - testScriptFile.getParentFile().getPath(), testScriptFile.getName()); + String flattenedSql = testDbParser.buildCommand(testScriptFile.getParentFile().getPath(), + testScriptFile.getName()); assertEquals(expectedSQL, flattenedSql); } @@ -358,9 +396,9 @@ public void testNestedScriptsForOracle() throws Exception { }; File testScriptFile = generateTestScript(parentTestScript); - String flattenedSql = HiveSchemaTool.buildCommand( - HiveSchemaHelper.getDbCommandParser("oracle"), - testScriptFile.getParentFile().getPath(), testScriptFile.getName()); + String flattenedSql = HiveSchemaHelper.getDbCommandParser("oracle") + .buildCommand(testScriptFile.getParentFile().getPath(), + testScriptFile.getName()); assertFalse(flattenedSql.contains("@")); assertFalse(flattenedSql.contains("comment")); assertTrue(flattenedSql.contains(childTab1)); @@ -380,4 +418,21 @@ private File generateTestScript(String [] stmts) throws IOException { out.close(); return testScriptFile; } -} + + /** + * Write out a dummy pre-upgrade script with given SQL statement. + */ + private String writeDummyPreUpgradeScript(int index, String upgradeScriptName, + String sql) throws Exception { + String preUpgradeScript = "pre-" + index + "-" + upgradeScriptName; + String dummyPreScriptPath = System.getProperty("test.tmp.dir", "target/tmp") + + File.separatorChar + "scripts" + File.separatorChar + "metastore" + + File.separatorChar + "upgrade" + File.separatorChar + "derby" + + File.separatorChar + preUpgradeScript; + FileWriter fstream = new FileWriter(dummyPreScriptPath); + BufferedWriter out = new BufferedWriter(fstream); + out.write(sql + System.getProperty("line.separator") + ";"); + out.close(); + return preUpgradeScript; + } +} \ No newline at end of file diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreSchemaInfo.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreSchemaInfo.java index af56ef6a7c6e..50d03a83d3f8 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreSchemaInfo.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreSchemaInfo.java @@ -37,6 +37,7 @@ public class MetaStoreSchemaInfo { private static String UPGRADE_FILE_PREFIX="upgrade-"; private static String INIT_FILE_PREFIX="hive-schema-"; private static String VERSION_UPGRADE_LIST = "upgrade.order"; + private static String PRE_UPGRADE_PREFIX = "pre-"; private final String dbType; private final String hiveSchemaVersions[]; private final HiveConf hiveConf; @@ -138,6 +139,10 @@ private String generateUpgradeFileName(String fileVersion) { return UPGRADE_FILE_PREFIX + fileVersion + "." + dbType + SQL_FILE_EXTENSION; } + public static String getPreUpgradeScriptName(int index, String upgradeScriptName) { + return PRE_UPGRADE_PREFIX + index + "-" + upgradeScriptName; + } + public static String getHiveSchemaVersion() { String hiveVersion = HiveVersionInfo.getShortVersion(); // if there is an equivalent version, return that, else return this version @@ -149,4 +154,4 @@ public static String getHiveSchemaVersion() { } } -} +} \ No newline at end of file From 15ff7b859d904341c8210fbc4809969143981a23 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Mon, 1 Dec 2014 22:13:49 +0000 Subject: [PATCH 302/339] HIVE-8374 : schematool fails on Postgres versions < 9.2 MISSED FILE (Mohit Sabharwal, reviewed by Brock Noland) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1642770 13f79535-47bb-0310-9956-ffa450edef68 --- .../upgrade/postgres/pre-0-upgrade-0.12.0-to-0.13.0.postgres.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 metastore/scripts/upgrade/postgres/pre-0-upgrade-0.12.0-to-0.13.0.postgres.sql diff --git a/metastore/scripts/upgrade/postgres/pre-0-upgrade-0.12.0-to-0.13.0.postgres.sql b/metastore/scripts/upgrade/postgres/pre-0-upgrade-0.12.0-to-0.13.0.postgres.sql new file mode 100644 index 000000000000..bc028fbf2c7c --- /dev/null +++ b/metastore/scripts/upgrade/postgres/pre-0-upgrade-0.12.0-to-0.13.0.postgres.sql @@ -0,0 +1 @@ +CREATE LANGUAGE plpgsql; From 96a71a5890e925f2d07869dfe47891d263e83a7a Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Tue, 2 Dec 2014 21:35:11 +0000 Subject: [PATCH 303/339] HIVE-8888: Mapjoin with LateralViewJoin generates wrong plan in Tez (Gunther Hagleitner via Prasanth Jayachandran) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1643012 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hadoop/hive/ql/parse/GenTezWork.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java index df16e96c0c9e..095aaee7c35e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java @@ -111,9 +111,16 @@ public Object process(Node nd, Stack stack, // will result into a vertex with multiple FS or RS operators. if (context.childToWorkMap.containsKey(operator)) { // if we've seen both root and child, we can bail. + + // clear out the mapjoin set. we don't need it anymore. + context.currentMapJoinOperators.clear(); + + // clear out the union set. we don't need it anymore. + context.currentUnionOperators.clear(); + return null; } else { - // At this point we don't have to do anything special in this case. Just + // At this point we don't have to do anything special. Just // run through the regular paces w/o creating a new task. work = context.rootToWorkMap.get(root); } From b282b4a210aea490951c77e70c00dde6f8218099 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Wed, 3 Dec 2014 03:00:26 +0000 Subject: [PATCH 304/339] HIVE-8947 : HIVE-8876 also affects Postgres < 9.2 (Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1643050 13f79535-47bb-0310-9956-ffa450edef68 --- .../postgres/019-HIVE-7784.postgres.sql | 28 ------------------- ...re-0-upgrade-0.13.0-to-0.14.0.postgres.sql | 23 +++++++++++++++ 2 files changed, 23 insertions(+), 28 deletions(-) create mode 100644 metastore/scripts/upgrade/postgres/pre-0-upgrade-0.13.0-to-0.14.0.postgres.sql diff --git a/metastore/scripts/upgrade/postgres/019-HIVE-7784.postgres.sql b/metastore/scripts/upgrade/postgres/019-HIVE-7784.postgres.sql index 8c452a000512..ac6b74936793 100644 --- a/metastore/scripts/upgrade/postgres/019-HIVE-7784.postgres.sql +++ b/metastore/scripts/upgrade/postgres/019-HIVE-7784.postgres.sql @@ -1,29 +1 @@ --- --- Create the table if it doesn't exist. --- - -CREATE TABLE IF NOT EXISTS "PART_COL_STATS" ( - "CS_ID" bigint NOT NULL, - "DB_NAME" character varying(128) DEFAULT NULL::character varying, - "TABLE_NAME" character varying(128) DEFAULT NULL::character varying, - "PARTITION_NAME" character varying(767) DEFAULT NULL::character varying, - "COLUMN_NAME" character varying(128) DEFAULT NULL::character varying, - "COLUMN_TYPE" character varying(128) DEFAULT NULL::character varying, - "PART_ID" bigint NOT NULL, - "LONG_LOW_VALUE" bigint, - "LONG_HIGH_VALUE" bigint, - "DOUBLE_LOW_VALUE" double precision, - "DOUBLE_HIGH_VALUE" double precision, - "BIG_DECIMAL_LOW_VALUE" character varying(4000) DEFAULT NULL::character varying, - "BIG_DECIMAL_HIGH_VALUE" character varying(4000) DEFAULT NULL::character varying, - "NUM_NULLS" bigint NOT NULL, - "NUM_DISTINCTS" bigint, - "AVG_COL_LEN" double precision, - "MAX_COL_LEN" bigint, - "NUM_TRUES" bigint, - "NUM_FALSES" bigint, - "LAST_ANALYZED" bigint NOT NULL -); - - CREATE INDEX "PCS_STATS_IDX" ON "PART_COL_STATS" USING btree ("DB_NAME","TABLE_NAME","COLUMN_NAME","PARTITION_NAME"); diff --git a/metastore/scripts/upgrade/postgres/pre-0-upgrade-0.13.0-to-0.14.0.postgres.sql b/metastore/scripts/upgrade/postgres/pre-0-upgrade-0.13.0-to-0.14.0.postgres.sql new file mode 100644 index 000000000000..7d0015871169 --- /dev/null +++ b/metastore/scripts/upgrade/postgres/pre-0-upgrade-0.13.0-to-0.14.0.postgres.sql @@ -0,0 +1,23 @@ + +CREATE TABLE "PART_COL_STATS" ( + "CS_ID" bigint NOT NULL, + "DB_NAME" character varying(128) DEFAULT NULL::character varying, + "TABLE_NAME" character varying(128) DEFAULT NULL::character varying, + "PARTITION_NAME" character varying(767) DEFAULT NULL::character varying, + "COLUMN_NAME" character varying(128) DEFAULT NULL::character varying, + "COLUMN_TYPE" character varying(128) DEFAULT NULL::character varying, + "PART_ID" bigint NOT NULL, + "LONG_LOW_VALUE" bigint, + "LONG_HIGH_VALUE" bigint, + "DOUBLE_LOW_VALUE" double precision, + "DOUBLE_HIGH_VALUE" double precision, + "BIG_DECIMAL_LOW_VALUE" character varying(4000) DEFAULT NULL::character varying, + "BIG_DECIMAL_HIGH_VALUE" character varying(4000) DEFAULT NULL::character varying, + "NUM_NULLS" bigint NOT NULL, + "NUM_DISTINCTS" bigint, + "AVG_COL_LEN" double precision, + "MAX_COL_LEN" bigint, + "NUM_TRUES" bigint, + "NUM_FALSES" bigint, + "LAST_ANALYZED" bigint NOT NULL +); From f3f5d24f7fc187f71550555c1857182737df7510 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Fri, 5 Dec 2014 08:45:46 +0000 Subject: [PATCH 305/339] =?UTF-8?q?HIVE-8870:=20errors=20when=20selecting?= =?UTF-8?q?=20a=20struct=20field=20within=20an=20array=20from=20ORC=20base?= =?UTF-8?q?d=20tables=20(Sergio=20Pe=C3=B1a=20via=20Prasanth=20Jayachandra?= =?UTF-8?q?n)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1643196 13f79535-47bb-0310-9956-ffa450edef68 --- ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java index a056822a9ae2..ffd14e07a7d9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java @@ -216,7 +216,7 @@ public List getAllStructFieldRefs() { @Override public StructField getStructFieldRef(String s) { for(StructField field: fields) { - if (field.getFieldName().equals(s)) { + if (field.getFieldName().equalsIgnoreCase(s)) { return field; } } @@ -304,7 +304,7 @@ public boolean equals(Object o) { for(int i = 0; i < fields.size(); ++i) { StructField left = other.get(i); StructField right = fields.get(i); - if (!(left.getFieldName().equals(right.getFieldName()) && + if (!(left.getFieldName().equalsIgnoreCase(right.getFieldName()) && left.getFieldObjectInspector().equals (right.getFieldObjectInspector()))) { return false; From 48075bce34da7f4bdb7013f746f0515df2e46b78 Mon Sep 17 00:00:00 2001 From: Alan Gates Date: Mon, 8 Dec 2014 18:15:44 +0000 Subject: [PATCH 306/339] HIVE-8880 non-synchronized access to split list in OrcInputFormat (Alan Gates, reviewed by Owen O'Malley) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1643875 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java index 3ed6be21b737..5be2b4f0e293 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java @@ -559,8 +559,10 @@ public void run() { if (!deltas.isEmpty()) { for (int b = 0; b < context.numBuckets; ++b) { if (!covered[b]) { - context.splits.add(new OrcSplit(dir, b, 0, new String[0], null, - false, false, deltas)); + synchronized (context.splits) { + context.splits.add(new OrcSplit(dir, b, 0, new String[0], null, + false, false, deltas)); + } } } } From cc37d6b5b81627a4d5ae0daa0428eac6ae572bc5 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Tue, 9 Dec 2014 18:36:32 +0000 Subject: [PATCH 307/339] HIVE-8886: Some Vectorized String CONCAT expressions result in runtime error Vectorization: Unsuported vector output type: StringGroup (Matt McCline via Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1644147 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/exec/vector/VectorizationContext.java | 3 +- .../StringGroupColConcatStringScalar.java | 2 +- .../expressions/StringGroupConcatColCol.java | 2 +- .../StringScalarConcatStringGroupCol.java | 2 +- .../clientpositive/vector_string_concat.q | 50 ++++ .../tez/vector_string_concat.q.out | 243 ++++++++++++++++++ .../clientpositive/vector_string_concat.q.out | 236 +++++++++++++++++ 7 files changed, 534 insertions(+), 4 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java index dbc9bb26878f..73d50dbb0584 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java @@ -1750,7 +1750,8 @@ private VectorExpression getCustomUDFExpression(ExprNodeGenericFuncDesc expr) } public static boolean isStringFamily(String resultType) { - return resultType.equalsIgnoreCase("string") || charVarcharTypePattern.matcher(resultType).matches(); + return resultType.equalsIgnoreCase("string") || charVarcharTypePattern.matcher(resultType).matches() || + resultType.equalsIgnoreCase("string_family"); } public static boolean isDatetimeFamily(String resultType) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatStringScalar.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatStringScalar.java index ca8156a1ba06..1cd3c4633f72 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatStringScalar.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatStringScalar.java @@ -125,7 +125,7 @@ public int getOutputColumn() { @Override public String getOutputType() { - return "StringGroup"; + return "String_Family"; } public int getColNum() { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupConcatColCol.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupConcatColCol.java index 910b5e3083da..56bc97bc10ba 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupConcatColCol.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupConcatColCol.java @@ -416,7 +416,7 @@ public int getOutputColumn() { @Override public String getOutputType() { - return "StringGroup"; + return "String_Family"; } public int getColNum1() { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringScalarConcatStringGroupCol.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringScalarConcatStringGroupCol.java index d3ddcef591a6..b98f72d58a3b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringScalarConcatStringGroupCol.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringScalarConcatStringGroupCol.java @@ -125,7 +125,7 @@ public int getOutputColumn() { @Override public String getOutputType() { - return "StringGroup"; + return "String_Family"; } public int getColNum() { diff --git a/ql/src/test/queries/clientpositive/vector_string_concat.q b/ql/src/test/queries/clientpositive/vector_string_concat.q index c0a2979c6562..d04b5ec710fa 100644 --- a/ql/src/test/queries/clientpositive/vector_string_concat.q +++ b/ql/src/test/queries/clientpositive/vector_string_concat.q @@ -44,3 +44,53 @@ SELECT s AS `string`, CONCAT(CONCAT(' ',s),' ') AS `none_padded_str`, CONCAT(CONCAT('|',RTRIM(CONCAT(CONCAT(' ',s),' '))),'|') AS `none_z_rtrim_str` FROM over1korc LIMIT 20; + +------------------------------------------------------------------------------------------ + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k; + +create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC; + +INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k; + +EXPLAIN +SELECT CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) AS `field` + FROM vectortab2korc + GROUP BY CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) + LIMIT 50; + +SELECT CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) AS `field` + FROM vectortab2korc + GROUP BY CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) + LIMIT 50; diff --git a/ql/src/test/results/clientpositive/tez/vector_string_concat.q.out b/ql/src/test/results/clientpositive/tez/vector_string_concat.q.out index 3ccb3a7af740..06250a5945cf 100644 --- a/ql/src/test/results/clientpositive/tez/vector_string_concat.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_string_concat.q.out @@ -158,3 +158,246 @@ sarah garcia sarah garcia | sarah garcia| zach young zach young | zach young| david underhill david underhill | david underhill| yuri carson yuri carson | yuri carson| +PREHOOK: query: ------------------------------------------------------------------------------------------ + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: ------------------------------------------------------------------------------------------ + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: EXPLAIN +SELECT CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) AS `field` + FROM vectortab2korc + GROUP BY CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) + LIMIT 50 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) AS `field` + FROM vectortab2korc + GROUP BY CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) + LIMIT 50 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dt (type: date) + outputColumnNames: dt + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: concat(concat(concat('Quarter ', UDFToString(UDFToInteger((((month(dt) - 1) / 3) + 1)))), '-'), UDFToString(year(dt))) (type: string) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 50 + Statistics: Num rows: 50 Data size: 22950 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 50 Data size: 22950 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: 50 + Processor Tree: + ListSink + +PREHOOK: query: SELECT CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) AS `field` + FROM vectortab2korc + GROUP BY CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) + LIMIT 50 +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: SELECT CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) AS `field` + FROM vectortab2korc + GROUP BY CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) + LIMIT 50 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +NULL +Quarter 1-1970 +Quarter 1-1971 +Quarter 1-1972 +Quarter 1-1973 +Quarter 1-1974 +Quarter 1-1975 +Quarter 1-1976 +Quarter 1-1977 +Quarter 1-1978 +Quarter 1-1979 +Quarter 1-1980 +Quarter 1-1981 +Quarter 1-1982 +Quarter 1-1983 +Quarter 1-1984 +Quarter 1-1985 +Quarter 1-1986 +Quarter 1-1987 +Quarter 1-1988 +Quarter 1-1989 +Quarter 1-1990 +Quarter 1-1991 +Quarter 1-1992 +Quarter 1-1993 +Quarter 1-1994 +Quarter 1-1995 +Quarter 1-1996 +Quarter 1-1997 +Quarter 1-1998 +Quarter 1-1999 +Quarter 1-2000 +Quarter 1-2001 +Quarter 1-2002 +Quarter 1-2003 +Quarter 1-2004 +Quarter 1-2005 +Quarter 1-2006 +Quarter 1-2007 +Quarter 1-2008 +Quarter 1-2009 +Quarter 1-2010 +Quarter 1-2011 +Quarter 1-2012 +Quarter 1-2013 +Quarter 1-2014 +Quarter 1-2015 +Quarter 1-2016 +Quarter 1-2017 +Quarter 1-2018 diff --git a/ql/src/test/results/clientpositive/vector_string_concat.q.out b/ql/src/test/results/clientpositive/vector_string_concat.q.out index f8e6cb490473..f906f8733234 100644 --- a/ql/src/test/results/clientpositive/vector_string_concat.q.out +++ b/ql/src/test/results/clientpositive/vector_string_concat.q.out @@ -174,3 +174,239 @@ sarah garcia sarah garcia | sarah garcia| zach young zach young | zach young| david underhill david underhill | david underhill| yuri carson yuri carson | yuri carson| +PREHOOK: query: ------------------------------------------------------------------------------------------ + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: ------------------------------------------------------------------------------------------ + +create table vectortab2k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@vectortab2k +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/vectortab2k' OVERWRITE INTO TABLE vectortab2k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@vectortab2k +PREHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: create table vectortab2korc( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + dc decimal(38,18), + bo boolean, + s string, + s2 string, + ts timestamp, + ts2 timestamp, + dt date) +STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@vectortab2korc +PREHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2k +PREHOOK: Output: default@vectortab2korc +POSTHOOK: query: INSERT INTO TABLE vectortab2korc SELECT * FROM vectortab2k +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2k +POSTHOOK: Output: default@vectortab2korc +POSTHOOK: Lineage: vectortab2korc.b SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:b, type:bigint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.bo SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.d SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dc SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dc, type:decimal(38,18), comment:null), ] +POSTHOOK: Lineage: vectortab2korc.dt SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:dt, type:date, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.f SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.i SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.s2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:s2, type:string, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.si SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.t SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:t, type:tinyint, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: vectortab2korc.ts2 SIMPLE [(vectortab2k)vectortab2k.FieldSchema(name:ts2, type:timestamp, comment:null), ] +PREHOOK: query: EXPLAIN +SELECT CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) AS `field` + FROM vectortab2korc + GROUP BY CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) + LIMIT 50 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) AS `field` + FROM vectortab2korc + GROUP BY CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) + LIMIT 50 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: vectortab2korc + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: dt (type: date) + outputColumnNames: dt + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Group By Operator + keys: concat(concat(concat('Quarter ', UDFToString(UDFToInteger((((month(dt) - 1) / 3) + 1)))), '-'), UDFToString(year(dt))) (type: string) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 2000 Data size: 918712 Basic stats: COMPLETE Column stats: NONE + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 459356 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 50 + Statistics: Num rows: 50 Data size: 22950 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 50 Data size: 22950 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 50 + Processor Tree: + ListSink + +PREHOOK: query: SELECT CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) AS `field` + FROM vectortab2korc + GROUP BY CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) + LIMIT 50 +PREHOOK: type: QUERY +PREHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +POSTHOOK: query: SELECT CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) AS `field` + FROM vectortab2korc + GROUP BY CONCAT(CONCAT(CONCAT('Quarter ',CAST(CAST((MONTH(dt) - 1) / 3 + 1 AS INT) AS STRING)),'-'),CAST(YEAR(dt) AS STRING)) + LIMIT 50 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@vectortab2korc +#### A masked pattern was here #### +NULL +Quarter 1-1970 +Quarter 1-1971 +Quarter 1-1972 +Quarter 1-1973 +Quarter 1-1974 +Quarter 1-1975 +Quarter 1-1976 +Quarter 1-1977 +Quarter 1-1978 +Quarter 1-1979 +Quarter 1-1980 +Quarter 1-1981 +Quarter 1-1982 +Quarter 1-1983 +Quarter 1-1984 +Quarter 1-1985 +Quarter 1-1986 +Quarter 1-1987 +Quarter 1-1988 +Quarter 1-1989 +Quarter 1-1990 +Quarter 1-1991 +Quarter 1-1992 +Quarter 1-1993 +Quarter 1-1994 +Quarter 1-1995 +Quarter 1-1996 +Quarter 1-1997 +Quarter 1-1998 +Quarter 1-1999 +Quarter 1-2000 +Quarter 1-2001 +Quarter 1-2002 +Quarter 1-2003 +Quarter 1-2004 +Quarter 1-2005 +Quarter 1-2006 +Quarter 1-2007 +Quarter 1-2008 +Quarter 1-2009 +Quarter 1-2010 +Quarter 1-2011 +Quarter 1-2012 +Quarter 1-2013 +Quarter 1-2014 +Quarter 1-2015 +Quarter 1-2016 +Quarter 1-2017 +Quarter 1-2018 From b86b5fcd208c65282db7ceeca2e5750f1938bfb8 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Tue, 9 Dec 2014 19:03:51 +0000 Subject: [PATCH 308/339] HIVE-9003: Vectorized IF expr broken for the scalar and scalar case (Matt McCline via Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1644155 13f79535-47bb-0310-9956-ffa450edef68 --- .../IfExprStringScalarStringScalar.java | 8 +- .../queries/clientpositive/vector_if_expr.q | 9 ++ .../clientpositive/tez/vector_if_expr.q.out | 82 +++++++++++++++++++ .../clientpositive/vector_if_expr.q.out | 75 +++++++++++++++++ 4 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/vector_if_expr.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_if_expr.q.out create mode 100644 ql/src/test/results/clientpositive/vector_if_expr.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java index 3296b9adb3ff..2a3597039f49 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java @@ -88,7 +88,7 @@ public void evaluate(VectorizedRowBatch batch) { if (vector1[i] == 1) { outputColVector.setRef(i, arg2Scalar, 0, arg2Scalar.length); } else { - outputColVector.setRef(i, arg3Scalar, 0, arg2Scalar.length); + outputColVector.setRef(i, arg3Scalar, 0, arg3Scalar.length); } } } else { @@ -96,7 +96,7 @@ public void evaluate(VectorizedRowBatch batch) { if (vector1[i] == 1) { outputColVector.setRef(i, arg2Scalar, 0, arg2Scalar.length); } else { - outputColVector.setRef(i, arg3Scalar, 0, arg2Scalar.length); + outputColVector.setRef(i, arg3Scalar, 0, arg3Scalar.length); } } } @@ -107,7 +107,7 @@ public void evaluate(VectorizedRowBatch batch) { if (!arg1ColVector.isNull[i] && vector1[i] == 1) { outputColVector.setRef(i, arg2Scalar, 0, arg2Scalar.length); } else { - outputColVector.setRef(i, arg3Scalar, 0, arg2Scalar.length); + outputColVector.setRef(i, arg3Scalar, 0, arg3Scalar.length); } } } else { @@ -115,7 +115,7 @@ public void evaluate(VectorizedRowBatch batch) { if (!arg1ColVector.isNull[i] && vector1[i] == 1) { outputColVector.setRef(i, arg2Scalar, 0, arg2Scalar.length); } else { - outputColVector.setRef(i, arg3Scalar, 0, arg2Scalar.length); + outputColVector.setRef(i, arg3Scalar, 0, arg3Scalar.length); } } } diff --git a/ql/src/test/queries/clientpositive/vector_if_expr.q b/ql/src/test/queries/clientpositive/vector_if_expr.q new file mode 100644 index 000000000000..c8ab55e0c7a8 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_if_expr.q @@ -0,0 +1,9 @@ +SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +EXPLAIN +SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND cboolean1 ORDER BY cboolean1; + +SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND cboolean1 ORDER BY cboolean1 LIMIT 5; + +SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND NOT cboolean1 ORDER BY cboolean1 LIMIT 5; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/tez/vector_if_expr.q.out b/ql/src/test/results/clientpositive/tez/vector_if_expr.q.out new file mode 100644 index 000000000000..ca7134ed1136 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_if_expr.q.out @@ -0,0 +1,82 @@ +PREHOOK: query: EXPLAIN +SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND cboolean1 ORDER BY cboolean1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND cboolean1 ORDER BY cboolean1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cboolean1 is not null and cboolean1) (type: boolean) + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cboolean1 (type: boolean), if(cboolean1, 'first', 'second') (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: + + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: boolean), VALUE._col0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND cboolean1 ORDER BY cboolean1 LIMIT 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND cboolean1 ORDER BY cboolean1 LIMIT 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +true first +true first +true first +true first +true first +PREHOOK: query: SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND NOT cboolean1 ORDER BY cboolean1 LIMIT 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND NOT cboolean1 ORDER BY cboolean1 LIMIT 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +false second +false second +false second +false second +false second diff --git a/ql/src/test/results/clientpositive/vector_if_expr.q.out b/ql/src/test/results/clientpositive/vector_if_expr.q.out new file mode 100644 index 000000000000..3a27b5292ab3 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_if_expr.q.out @@ -0,0 +1,75 @@ +PREHOOK: query: EXPLAIN +SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND cboolean1 ORDER BY cboolean1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND cboolean1 ORDER BY cboolean1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: alltypesorc + Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (cboolean1 is not null and cboolean1) (type: boolean) + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: cboolean1 (type: boolean), if(cboolean1, 'first', 'second') (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: boolean) + sort order: + + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: boolean), VALUE._col0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 3072 Data size: 94309 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND cboolean1 ORDER BY cboolean1 LIMIT 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND cboolean1 ORDER BY cboolean1 LIMIT 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +true first +true first +true first +true first +true first +PREHOOK: query: SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND NOT cboolean1 ORDER BY cboolean1 LIMIT 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cboolean1, IF (cboolean1, 'first', 'second') FROM alltypesorc WHERE cboolean1 IS NOT NULL AND NOT cboolean1 ORDER BY cboolean1 LIMIT 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypesorc +#### A masked pattern was here #### +false second +false second +false second +false second +false second From 247dbfc706aa4b693dd7089323a37ea1fc6f52fe Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Wed, 10 Dec 2014 00:19:34 +0000 Subject: [PATCH 309/339] HIVE-9051: TezJobMonitor in-place updates logs too often to logfile (Prasanth Jayachandran reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1644260 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/tez/TezJobMonitor.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java index dea346069515..1a6393c9006c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java @@ -310,7 +310,7 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, Hi if (inPlaceEligible) { printStatusInPlace(progressMap, startTime, false, dagClient); // log the progress report to log file as well - console.logInfo(getReport(progressMap)); + lastReport = logStatus(progressMap, lastReport, console); } else { lastReport = printStatus(progressMap, lastReport, console); } @@ -319,7 +319,7 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, Hi if (inPlaceEligible) { printStatusInPlace(progressMap, startTime, false, dagClient); // log the progress report to log file as well - console.logInfo(getReport(progressMap)); + lastReport = logStatus(progressMap, lastReport, console); } else { lastReport = printStatus(progressMap, lastReport, console); } @@ -344,7 +344,7 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, Hi if (inPlaceEligible) { printStatusInPlace(progressMap, startTime, true, dagClient); // log the progress report to log file as well - console.logInfo(getReport(progressMap)); + lastReport = logStatus(progressMap, lastReport, console); } console.printInfo("Status: Killed"); running = false; @@ -356,7 +356,7 @@ public int monitorExecution(final DAGClient dagClient, HiveTxnManager txnMgr, Hi if (inPlaceEligible) { printStatusInPlace(progressMap, startTime, true, dagClient); // log the progress report to log file as well - console.logInfo(getReport(progressMap)); + lastReport = logStatus(progressMap, lastReport, console); } console.printError("Status: Failed"); running = false; @@ -749,6 +749,15 @@ private String printStatus(Map progressMap, String lastReport, return report; } + private String logStatus(Map progressMap, String lastReport, LogHelper console) { + String report = getReport(progressMap); + if (!report.equals(lastReport) || System.currentTimeMillis() >= lastPrintTime + printInterval) { + console.logInfo(report); + lastPrintTime = System.currentTimeMillis(); + } + return report; + } + private String getReport(Map progressMap) { StringBuffer reportBuffer = new StringBuffer(); From 00a1d609b6bd0c6853ee9222e6139589935b2366 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Thu, 11 Dec 2014 19:38:35 +0000 Subject: [PATCH 310/339] HIVE-9025 : join38.q (without map join) produces incorrect result when testing with multiple reducers (Ted Xu via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1644732 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 1 + .../ConstantPropagateProcFactory.java | 21 +++-- .../clientpositive/constprog_partitioner.q | 11 +++ .../test/results/clientpositive/cluster.q.out | 17 ++++ .../results/clientpositive/constprog2.q.out | 4 + .../constprog_partitioner.q.out | 80 +++++++++++++++++++ .../clientpositive/join_nullsafe.q.out | 2 + ql/src/test/results/clientpositive/ppd2.q.out | 2 + .../clientpositive/ppd_clusterby.q.out | 6 ++ .../results/clientpositive/ppd_join4.q.out | 2 + .../clientpositive/ppd_outer_join5.q.out | 5 ++ .../clientpositive/quotedid_basic.q.out | 2 + .../clientpositive/smb_mapjoin_25.q.out | 4 + .../tez/dynamic_partition_pruning.q.out | 5 ++ .../tez/dynamic_partition_pruning_2.q.out | 1 + .../clientpositive/tez/join_nullsafe.q.out | 2 + .../tez/vector_decimal_mapjoin.q.out | 1 + ...vectorized_dynamic_partition_pruning.q.out | 5 ++ .../test/results/clientpositive/union27.q.out | 3 + 19 files changed, 167 insertions(+), 7 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/constprog_partitioner.q create mode 100644 ql/src/test/results/clientpositive/constprog_partitioner.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 91903521891e..08992a256d64 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -8,6 +8,7 @@ minimr.query.files=auto_sortmerge_join_16.q,\ bucketizedhiveinputformat.q,\ bucketmapjoin6.q,\ bucketmapjoin7.q,\ + constprog_partitioner.q,\ disable_merge_for_bucketing.q,\ empty_dir_in_table.q,\ external_table_with_space_in_location_path.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index daf28c1d783a..f07a5219ca35 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -888,15 +888,22 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, Object.. rsDesc.setKeyCols(newKeyEpxrs); // partition columns - ArrayList newPartExprs = new ArrayList(); - for (ExprNodeDesc desc : rsDesc.getPartitionCols()) { - ExprNodeDesc expr = foldExpr(desc, constants, cppCtx, op, 0, false); - if (expr instanceof ExprNodeConstantDesc || expr instanceof ExprNodeNullDesc) { - continue; + if (!rsDesc.getPartitionCols().isEmpty()) { + ArrayList newPartExprs = new ArrayList(); + for (ExprNodeDesc desc : rsDesc.getPartitionCols()) { + ExprNodeDesc expr = foldExpr(desc, constants, cppCtx, op, 0, false); + if (expr instanceof ExprNodeConstantDesc || expr instanceof ExprNodeNullDesc) { + continue; + } + newPartExprs.add(expr); + } + if (newPartExprs.isEmpty()) { + // If all partition columns are removed because of constant, insert an extra column to avoid + // random partitioning. + newPartExprs.add(new ExprNodeConstantDesc("")); } - newPartExprs.add(expr); + rsDesc.setPartitionCols(newPartExprs); } - rsDesc.setPartitionCols(newPartExprs); // value columns ArrayList newValExprs = new ArrayList(); diff --git a/ql/src/test/queries/clientpositive/constprog_partitioner.q b/ql/src/test/queries/clientpositive/constprog_partitioner.q new file mode 100644 index 000000000000..5b242c06e3c7 --- /dev/null +++ b/ql/src/test/queries/clientpositive/constprog_partitioner.q @@ -0,0 +1,11 @@ +set hive.fetch.task.conversion=more; +set hive.optimize.constant.propagation=true; + +set mapred.reduce.tasks=4; + +EXPLAIN +SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND src1.key = 100; + +SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND src1.key = 100; diff --git a/ql/src/test/results/clientpositive/cluster.q.out b/ql/src/test/results/clientpositive/cluster.q.out index f5573c90e00b..04abf3813222 100644 --- a/ql/src/test/results/clientpositive/cluster.q.out +++ b/ql/src/test/results/clientpositive/cluster.q.out @@ -25,6 +25,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '10' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -82,6 +83,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -139,6 +141,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -196,6 +199,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -253,6 +257,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -310,6 +315,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -424,6 +430,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -478,6 +485,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x @@ -488,6 +496,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: @@ -571,6 +580,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan @@ -582,6 +592,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: @@ -666,6 +677,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan @@ -677,6 +689,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: @@ -706,6 +719,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string), _col3 (type: string) Reduce Operator Tree: @@ -760,6 +774,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x @@ -770,6 +785,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: @@ -799,6 +815,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string), _col2 (type: string) Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/constprog2.q.out b/ql/src/test/results/clientpositive/constprog2.q.out index 71a44f32208d..c5179605514b 100644 --- a/ql/src/test/results/clientpositive/constprog2.q.out +++ b/ql/src/test/results/clientpositive/constprog2.q.out @@ -23,6 +23,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '86' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan @@ -34,6 +35,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '86' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator @@ -98,6 +100,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '86' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan @@ -109,6 +112,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '86' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator diff --git a/ql/src/test/results/clientpositive/constprog_partitioner.q.out b/ql/src/test/results/clientpositive/constprog_partitioner.q.out new file mode 100644 index 000000000000..2510672cefc7 --- /dev/null +++ b/ql/src/test/results/clientpositive/constprog_partitioner.q.out @@ -0,0 +1,80 @@ +PREHOOK: query: EXPLAIN +SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND src1.key = 100 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND src1.key = 100 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key = 100) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: '100' (type: string) + sort order: + + Map-reduce partition columns: '' (type: string) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key = 100) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: '100' (type: string) + sort order: + + Map-reduce partition columns: '' (type: string) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 {VALUE._col0} + outputColumnNames: _col6 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: '100' (type: string), 101.0 (type: double), _col6 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND src1.key = 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT src1.key, src1.key + 1, src2.value + FROM src src1 join src src2 ON src1.key = src2.key AND src1.key = 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +100 101.0 val_100 +100 101.0 val_100 +100 101.0 val_100 +100 101.0 val_100 diff --git a/ql/src/test/results/clientpositive/join_nullsafe.q.out b/ql/src/test/results/clientpositive/join_nullsafe.q.out index d56a04d65bba..7bf5331677a9 100644 --- a/ql/src/test/results/clientpositive/join_nullsafe.q.out +++ b/ql/src/test/results/clientpositive/join_nullsafe.q.out @@ -1525,6 +1525,7 @@ STAGE PLANS: Reduce Output Operator key expressions: null (type: void) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: int) TableScan @@ -1536,6 +1537,7 @@ STAGE PLANS: Reduce Output Operator key expressions: null (type: void) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: int) Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/ppd2.q.out b/ql/src/test/results/clientpositive/ppd2.q.out index 618a545a0ca0..ea00f4305d23 100644 --- a/ql/src/test/results/clientpositive/ppd2.q.out +++ b/ql/src/test/results/clientpositive/ppd2.q.out @@ -355,6 +355,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x @@ -365,6 +366,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/ppd_clusterby.q.out b/ql/src/test/results/clientpositive/ppd_clusterby.q.out index e3643f1019d0..798bebd7fef1 100644 --- a/ql/src/test/results/clientpositive/ppd_clusterby.q.out +++ b/ql/src/test/results/clientpositive/ppd_clusterby.q.out @@ -25,6 +25,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '10' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -79,6 +80,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x @@ -89,6 +91,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: @@ -175,6 +178,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '10' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -229,6 +233,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x @@ -239,6 +244,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/ppd_join4.q.out b/ql/src/test/results/clientpositive/ppd_join4.q.out index de7923ac8ac2..77c6f2f2d9e4 100644 --- a/ql/src/test/results/clientpositive/ppd_join4.q.out +++ b/ql/src/test/results/clientpositive/ppd_join4.q.out @@ -87,11 +87,13 @@ STAGE PLANS: Reduce Output Operator key expressions: 'a' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE TableScan Reduce Output Operator key expressions: 'a' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Operator Tree: Join Operator diff --git a/ql/src/test/results/clientpositive/ppd_outer_join5.q.out b/ql/src/test/results/clientpositive/ppd_outer_join5.q.out index 16d788bed19a..cf1a23d215db 100644 --- a/ql/src/test/results/clientpositive/ppd_outer_join5.q.out +++ b/ql/src/test/results/clientpositive/ppd_outer_join5.q.out @@ -51,6 +51,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 20 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: key (type: string), value (type: string) TableScan @@ -139,6 +140,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 20 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: key (type: string), value (type: string) TableScan @@ -150,6 +152,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 20 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: key (type: string), value (type: string) Reduce Operator Tree: @@ -214,6 +217,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 20 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: key (type: string), value (type: string) TableScan @@ -225,6 +229,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 20 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: key (type: string), value (type: string) Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/quotedid_basic.q.out b/ql/src/test/results/clientpositive/quotedid_basic.q.out index 725a0fca8d43..61edf3931a51 100644 --- a/ql/src/test/results/clientpositive/quotedid_basic.q.out +++ b/ql/src/test/results/clientpositive/quotedid_basic.q.out @@ -193,6 +193,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '1' (type: string), _col1 (type: string) sort order: ++ + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col0 (type: string), _col1 (type: string), '1' (type: string) Reduce Operator Tree: @@ -275,6 +276,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '1' (type: string), _col1 (type: string) sort order: ++ + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: _col0 (type: string), _col1 (type: string), '1' (type: string) Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out b/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out index 937b2845e940..88eabe9be470 100644 --- a/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out +++ b/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out @@ -71,6 +71,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 5 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 25 Data size: 100 Basic stats: COMPLETE Column stats: NONE TableScan alias: a @@ -81,6 +82,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 5 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 26 Data size: 104 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator @@ -152,6 +154,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 5 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 27 Data size: 108 Basic stats: COMPLETE Column stats: NONE TableScan alias: c @@ -162,6 +165,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 5 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 25 Data size: 100 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out index 9a3315f9600a..025beac55493 100644 --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out @@ -2577,6 +2577,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: '11' (type: string) @@ -2634,6 +2635,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: @@ -2731,6 +2733,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '13' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Map 6 Map Operator Tree: @@ -2758,6 +2761,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '13' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reducer 3 Reduce Operator Tree: @@ -4789,6 +4793,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: '11' (type: string) diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out index ed94ee807a79..75f87183cbaf 100644 --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out @@ -592,6 +592,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 1 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Map 2 Map Operator Tree: diff --git a/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out b/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out index b71028a34602..b6669572dfa6 100644 --- a/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out +++ b/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out @@ -1578,6 +1578,7 @@ STAGE PLANS: Reduce Output Operator key expressions: null (type: void) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: int) Map 3 @@ -1591,6 +1592,7 @@ STAGE PLANS: Reduce Output Operator key expressions: null (type: void) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: int) Reducer 2 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out index 049be2611e59..75c709bf05c6 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out @@ -52,6 +52,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 6981 (type: int) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 6144 Data size: 1082530 Basic stats: COMPLETE Column stats: NONE value expressions: cdecimal2 (type: decimal(23,14)) Execution mode: vectorized diff --git a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out index 5cf41f0868c2..fe52ac9df95d 100644 --- a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out +++ b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out @@ -2607,6 +2607,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: '11' (type: string) @@ -2665,6 +2666,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: @@ -2763,6 +2765,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '13' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 1 Data size: 172 Basic stats: COMPLETE Column stats: NONE Map 6 Map Operator Tree: @@ -2791,6 +2794,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '13' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reducer 3 Reduce Operator Tree: @@ -4843,6 +4847,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: '11' (type: string) diff --git a/ql/src/test/results/clientpositive/union27.q.out b/ql/src/test/results/clientpositive/union27.q.out index 036bf8a1ccb1..d7e82a60fdfb 100644 --- a/ql/src/test/results/clientpositive/union27.q.out +++ b/ql/src/test/results/clientpositive/union27.q.out @@ -51,6 +51,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '97' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: jackson_sev_add @@ -67,6 +68,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '97' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan @@ -84,6 +86,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '97' (type: string) sort order: + + Map-reduce partition columns: '' (type: string) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: From 3453d2c1f75fc43ccc67e07e08b16dc73bdf5754 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Sun, 14 Dec 2014 05:30:00 +0000 Subject: [PATCH 311/339] HIVE-9090: Rename 'Tez File Merge Work' to smaller name (Prasanth Jayachandran reviewed by Vikram Dixit) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1645401 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java | 11 ++++++++++- .../hadoop/hive/ql/optimizer/GenMapRedUtils.java | 4 ++-- .../test/results/clientpositive/tez/orc_merge1.q.out | 8 ++++---- .../test/results/clientpositive/tez/orc_merge5.q.out | 4 ++-- .../test/results/clientpositive/tez/orc_merge6.q.out | 4 ++-- .../test/results/clientpositive/tez/orc_merge7.q.out | 4 ++-- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java index 1a6393c9006c..fc09d7ac1884 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java @@ -702,7 +702,16 @@ private String getNameWithProgress(String s, int complete, int total) { float percent = total == 0 ? 0.0f : (float) complete / (float) total; // lets use the remaining space in column 1 as progress bar int spaceRemaining = COLUMN_1_WIDTH - s.length() - 1; - String result = s + " "; + String trimmedVName = s; + + // if the vertex name is longer than column 1 width, trim it down + // "Tez Merge File Work" will become "Tez Merge File.." + if (s != null && s.length() > COLUMN_1_WIDTH) { + trimmedVName = s.substring(0, COLUMN_1_WIDTH - 1); + trimmedVName = trimmedVName + ".."; + } + + String result = trimmedVName + " "; int toFill = (int) (spaceRemaining * percent); for (int i = 0; i < toFill; i++) { result += "."; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java index 6e679b605523..4918934f9e26 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java @@ -1283,7 +1283,7 @@ public static void createMRWorkForMergingFiles (FileSinkOperator fsInput, dpCtx != null && dpCtx.getNumDPCols() > 0); if (conf.getVar(ConfVars.HIVE_EXECUTION_ENGINE).equals("tez")) { work = new TezWork(conf.getVar(HiveConf.ConfVars.HIVEQUERYID)); - cplan.setName("Tez Merge File Work"); + cplan.setName("File Merge"); ((TezWork) work).add(cplan); } else { work = cplan; @@ -1292,7 +1292,7 @@ public static void createMRWorkForMergingFiles (FileSinkOperator fsInput, cplan = createMRWorkForMergingFiles(conf, tsMerge, fsInputDesc); if (conf.getVar(ConfVars.HIVE_EXECUTION_ENGINE).equals("tez")) { work = new TezWork(conf.getVar(HiveConf.ConfVars.HIVEQUERYID)); - cplan.setName("Tez Merge File Work"); + cplan.setName("File Merge"); ((TezWork)work).add(cplan); } else { work = new MapredWork(); diff --git a/ql/src/test/results/clientpositive/tez/orc_merge1.q.out b/ql/src/test/results/clientpositive/tez/orc_merge1.q.out index 461db6007123..3fffb4ef8676 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge1.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge1.q.out @@ -197,7 +197,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Vertices: - Tez Merge File Work + File Merge Map Operator Tree: TableScan File Output Operator @@ -212,7 +212,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Vertices: - Tez Merge File Work + File Merge Map Operator Tree: TableScan File Output Operator @@ -326,7 +326,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Vertices: - Tez Merge File Work + File Merge Merge File Operator Map Operator Tree: ORC File Merge Operator @@ -337,7 +337,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Vertices: - Tez Merge File Work + File Merge Merge File Operator Map Operator Tree: ORC File Merge Operator diff --git a/ql/src/test/results/clientpositive/tez/orc_merge5.q.out b/ql/src/test/results/clientpositive/tez/orc_merge5.q.out index e3e56f8996b6..c2d841e18693 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge5.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge5.q.out @@ -190,7 +190,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Vertices: - Tez Merge File Work + File Merge Merge File Operator Map Operator Tree: ORC File Merge Operator @@ -201,7 +201,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Vertices: - Tez Merge File Work + File Merge Merge File Operator Map Operator Tree: ORC File Merge Operator diff --git a/ql/src/test/results/clientpositive/tez/orc_merge6.q.out b/ql/src/test/results/clientpositive/tez/orc_merge6.q.out index 0552076c9366..73bb4a7f7ed0 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge6.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge6.q.out @@ -240,7 +240,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Vertices: - Tez Merge File Work + File Merge Merge File Operator Map Operator Tree: ORC File Merge Operator @@ -251,7 +251,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Vertices: - Tez Merge File Work + File Merge Merge File Operator Map Operator Tree: ORC File Merge Operator diff --git a/ql/src/test/results/clientpositive/tez/orc_merge7.q.out b/ql/src/test/results/clientpositive/tez/orc_merge7.q.out index 4f0678b2466f..c972288c5818 100644 --- a/ql/src/test/results/clientpositive/tez/orc_merge7.q.out +++ b/ql/src/test/results/clientpositive/tez/orc_merge7.q.out @@ -271,7 +271,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Vertices: - Tez Merge File Work + File Merge Merge File Operator Map Operator Tree: ORC File Merge Operator @@ -282,7 +282,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Vertices: - Tez Merge File Work + File Merge Merge File Operator Map Operator Tree: ORC File Merge Operator From 813ffefb85b0d5122af149018fd2f287cb1a9bf1 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Mon, 15 Dec 2014 19:40:31 +0000 Subject: [PATCH 312/339] HIVE-6468: HS2 & Metastore using SASL out of memory error when curl sends a get request (Navis Ryu, Vaibhav Gumashta reviewed by Thejas Nair, Ravi Prakash) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1645733 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 5 + .../hive/thrift/TestHadoop20SAuthBridge.java | 2 +- .../hadoop/hive/metastore/HiveMetaStore.java | 6 +- .../hive/service/auth/HiveAuthFactory.java | 118 ++++++++---------- .../hive/service/auth/PlainSaslHelper.java | 22 ++-- .../thrift/HadoopThriftAuthBridge20S.java | 41 +++--- .../hive/thrift/HadoopThriftAuthBridge.java | 118 +++++++++++++++++- 7 files changed, 207 insertions(+), 105 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index ea5aed80d626..d0d9f6c4b305 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1592,6 +1592,11 @@ public static enum ConfVars { HIVE_SSL_PROTOCOL_BLACKLIST("hive.ssl.protocol.blacklist", "SSLv2,SSLv2Hello,SSLv3", "SSL Versions to disable for all Hive Servers"), + // General Thrift configs (Thrift configs common to Metastore and HiveServer2) + HIVE_THRIFT_SASL_MESSAGE_LIMIT("hive.thrift.sasl.message.limit", 104857600, + "If the length of incoming sasl message is greater than this, regard it as invalid and close the transport. " + + "Zero or less value disables this. Default is 100MB."), + // HiveServer2 specific configs HIVE_SERVER2_MAX_START_ATTEMPTS("hive.server2.max.start.attempts", 30L, new RangeValidator(0L, null), "Number of times HiveServer2 will attempt to start before exiting, sleeping 60 seconds " + diff --git a/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java b/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java index b2bdafaefc97..376bd98f855c 100644 --- a/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java +++ b/itests/hive-unit-hadoop2/src/test/java/org/apache/hadoop/hive/thrift/TestHadoop20SAuthBridge.java @@ -80,7 +80,7 @@ public Server() throws TTransportException { super(); } @Override - public TTransportFactory createTransportFactory(Map saslProps) + public TTransportFactory createTransportFactory(Map saslProps, int saslMessageLimit) throws TTransportException { TSaslServerTransport.Factory transFactory = new TSaslServerTransport.Factory(); diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index d1ef3056611d..192cc9690698 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -5773,8 +5773,10 @@ public static void startMetaStore(int port, HadoopThriftAuthBridge bridge, conf.getVar(HiveConf.ConfVars.METASTORE_KERBEROS_PRINCIPAL)); // start delegation token manager saslServer.startDelegationTokenSecretManager(conf, baseHandler.getMS(), ServerMode.METASTORE); - transFactory = saslServer.createTransportFactory( - MetaStoreUtils.getMetaStoreSaslProperties(conf)); + int saslMessageLimit = conf.getIntVar(ConfVars.HIVE_THRIFT_SASL_MESSAGE_LIMIT); + transFactory = + saslServer.createTransportFactory(MetaStoreUtils.getMetaStoreSaslProperties(conf), + saslMessageLimit); processor = saslServer.wrapProcessor( new ThriftHiveMetastore.Processor(handler)); LOG.info("Starting DB backed MetaStore Server in Secure Mode"); diff --git a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index 23ba79ca63e1..b4fc77b5d0ee 100644 --- a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -18,7 +18,6 @@ package org.apache.hive.service.auth; import java.io.IOException; -import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; import java.util.ArrayList; @@ -28,7 +27,6 @@ import java.util.Map; import javax.net.ssl.SSLServerSocket; -import javax.security.auth.login.LoginException; import javax.security.sasl.Sasl; import org.apache.hadoop.hive.conf.HiveConf; @@ -57,30 +55,28 @@ public class HiveAuthFactory { private static final Logger LOG = LoggerFactory.getLogger(HiveAuthFactory.class); - public enum AuthTypes { - NOSASL("NOSASL"), - NONE("NONE"), - LDAP("LDAP"), - KERBEROS("KERBEROS"), - CUSTOM("CUSTOM"), - PAM("PAM"); - - private final String authType; - - AuthTypes(String authType) { - this.authType = authType; - } - - public String getAuthName() { - return authType; - } + NOSASL, NONE, LDAP, KERBEROS, CUSTOM, PAM + } + public static enum TransTypes { + HTTP { + AuthTypes getDefaultAuthType() { + return AuthTypes.NOSASL; + } + }, + BINARY { + AuthTypes getDefaultAuthType() { + return AuthTypes.NONE; + } + }; + abstract AuthTypes getDefaultAuthType(); } - private HadoopThriftAuthBridge.Server saslServer; - private String authTypeStr; - private final String transportMode; + private final HadoopThriftAuthBridge.Server saslServer; + private final AuthTypes authType; + private final TransTypes transportType; + private final int saslMessageLimit; private final HiveConf conf; public static final String HS2_PROXY_USER = "hive.server2.proxy.user"; @@ -88,30 +84,28 @@ public String getAuthName() { public HiveAuthFactory(HiveConf conf) throws TTransportException { this.conf = conf; - transportMode = conf.getVar(HiveConf.ConfVars.HIVE_SERVER2_TRANSPORT_MODE); - authTypeStr = conf.getVar(HiveConf.ConfVars.HIVE_SERVER2_AUTHENTICATION); - - // In http mode we use NOSASL as the default auth type - if ("http".equalsIgnoreCase(transportMode)) { - if (authTypeStr == null) { - authTypeStr = AuthTypes.NOSASL.getAuthName(); + saslMessageLimit = conf.getIntVar(ConfVars.HIVE_THRIFT_SASL_MESSAGE_LIMIT); + String transTypeStr = conf.getVar(HiveConf.ConfVars.HIVE_SERVER2_TRANSPORT_MODE); + String authTypeStr = conf.getVar(ConfVars.HIVE_SERVER2_AUTHENTICATION); + transportType = TransTypes.valueOf(transTypeStr.toUpperCase()); + authType = + authTypeStr == null ? transportType.getDefaultAuthType() : AuthTypes.valueOf(authTypeStr + .toUpperCase()); + if (transportType == TransTypes.BINARY + && authTypeStr.equalsIgnoreCase(AuthTypes.KERBEROS.name()) + && ShimLoader.getHadoopShims().isSecureShimImpl()) { + saslServer = + ShimLoader.getHadoopThriftAuthBridge().createServer( + conf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_KEYTAB), + conf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL)); + // start delegation token manager + try { + saslServer.startDelegationTokenSecretManager(conf, null, ServerMode.HIVESERVER2); + } catch (Exception e) { + throw new TTransportException("Failed to start token manager", e); } } else { - if (authTypeStr == null) { - authTypeStr = AuthTypes.NONE.getAuthName(); - } - if (authTypeStr.equalsIgnoreCase(AuthTypes.KERBEROS.getAuthName()) - && ShimLoader.getHadoopShims().isSecureShimImpl()) { - saslServer = ShimLoader.getHadoopThriftAuthBridge() - .createServer(conf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_KEYTAB), - conf.getVar(ConfVars.HIVE_SERVER2_KERBEROS_PRINCIPAL)); - // start delegation token manager - try { - saslServer.startDelegationTokenSecretManager(conf, null, ServerMode.HIVESERVER2); - } catch (IOException e) { - throw new TTransportException("Failed to start token manager", e); - } - } + saslServer = null; } } @@ -123,42 +117,28 @@ public Map getSaslProperties() { return saslProps; } - public TTransportFactory getAuthTransFactory() throws LoginException { - TTransportFactory transportFactory; - if (authTypeStr.equalsIgnoreCase(AuthTypes.KERBEROS.getAuthName())) { - try { - transportFactory = saslServer.createTransportFactory(getSaslProperties()); - } catch (TTransportException e) { - throw new LoginException(e.getMessage()); - } - } else if (authTypeStr.equalsIgnoreCase(AuthTypes.NONE.getAuthName())) { - transportFactory = PlainSaslHelper.getPlainTransportFactory(authTypeStr); - } else if (authTypeStr.equalsIgnoreCase(AuthTypes.LDAP.getAuthName())) { - transportFactory = PlainSaslHelper.getPlainTransportFactory(authTypeStr); - } else if (authTypeStr.equalsIgnoreCase(AuthTypes.PAM.getAuthName())) { - transportFactory = PlainSaslHelper.getPlainTransportFactory(authTypeStr); - } else if (authTypeStr.equalsIgnoreCase(AuthTypes.NOSASL.getAuthName())) { - transportFactory = new TTransportFactory(); - } else if (authTypeStr.equalsIgnoreCase(AuthTypes.CUSTOM.getAuthName())) { - transportFactory = PlainSaslHelper.getPlainTransportFactory(authTypeStr); - } else { - throw new LoginException("Unsupported authentication type " + authTypeStr); + public TTransportFactory getAuthTransFactory() throws Exception { + if (authType == AuthTypes.KERBEROS) { + return saslServer.createTransportFactory(getSaslProperties(), saslMessageLimit); } - return transportFactory; + if (authType == AuthTypes.NOSASL) { + return new TTransportFactory(); + } + return PlainSaslHelper.getPlainTransportFactory(authType.name(), saslMessageLimit); } /** * Returns the thrift processor factory for HiveServer2 running in binary mode + * * @param service * @return * @throws LoginException */ - public TProcessorFactory getAuthProcFactory(ThriftCLIService service) throws LoginException { - if (authTypeStr.equalsIgnoreCase(AuthTypes.KERBEROS.getAuthName())) { + public TProcessorFactory getAuthProcFactory(ThriftCLIService service) { + if (authType == AuthTypes.KERBEROS) { return KerberosSaslHelper.getKerberosProcessorFactory(saslServer, service); - } else { - return PlainSaslHelper.getPlainProcessorFactory(service); } + return PlainSaslHelper.getPlainProcessorFactory(service); } public String getRemoteUser() { diff --git a/service/src/java/org/apache/hive/service/auth/PlainSaslHelper.java b/service/src/java/org/apache/hive/service/auth/PlainSaslHelper.java index afc144199f1e..ba987f3a4e81 100644 --- a/service/src/java/org/apache/hive/service/auth/PlainSaslHelper.java +++ b/service/src/java/org/apache/hive/service/auth/PlainSaslHelper.java @@ -30,6 +30,7 @@ import javax.security.sasl.AuthorizeCallback; import javax.security.sasl.SaslException; +import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge; import org.apache.hive.service.auth.AuthenticationProviderFactory.AuthMethods; import org.apache.hive.service.auth.PlainSaslServer.SaslPlainProvider; import org.apache.hive.service.cli.thrift.TCLIService.Iface; @@ -42,7 +43,6 @@ import org.apache.thrift.transport.TTransportFactory; public final class PlainSaslHelper { - public static TProcessorFactory getPlainProcessorFactory(ThriftCLIService service) { return new SQLPlainProcessorFactory(service); } @@ -52,16 +52,18 @@ public static TProcessorFactory getPlainProcessorFactory(ThriftCLIService servic Security.addProvider(new SaslPlainProvider()); } - public static TTransportFactory getPlainTransportFactory(String authTypeStr) - throws LoginException { - TSaslServerTransport.Factory saslFactory = new TSaslServerTransport.Factory(); - try { - saslFactory.addServerDefinition("PLAIN", authTypeStr, null, new HashMap(), - new PlainServerCallbackHandler(authTypeStr)); - } catch (AuthenticationException e) { - throw new LoginException("Error setting callback handler" + e); + public static TTransportFactory getPlainTransportFactory(String authTypeStr, int saslMessageLimit) + throws LoginException, AuthenticationException { + TSaslServerTransport.Factory saslTransportFactory; + if (saslMessageLimit > 0) { + saslTransportFactory = + new HadoopThriftAuthBridge.HiveSaslServerTransportFactory(saslMessageLimit); + } else { + saslTransportFactory = new TSaslServerTransport.Factory(); } - return saslFactory; + saslTransportFactory.addServerDefinition("PLAIN", authTypeStr, null, + new HashMap(), new PlainServerCallbackHandler(authTypeStr)); + return saslTransportFactory; } public static TTransport getPlainTransport(String username, String password, diff --git a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge20S.java b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge20S.java index 624ac6b31400..96dc019c1f7d 100644 --- a/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge20S.java +++ b/shims/common-secure/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge20S.java @@ -100,7 +100,8 @@ public Client createClientWithConf(String authMethod) { } @Override - public Server createServer(String keytabFile, String principalConf) throws TTransportException { + public Server createServer(String keytabFile, String principalConf) + throws TTransportException { return new Server(keytabFile, principalConf); } @@ -328,6 +329,7 @@ public Server() throws TTransportException { throw new TTransportException(ioe); } } + /** * Create a server with a kerberos keytab/principal. */ @@ -339,7 +341,6 @@ protected Server(String keytabFile, String principalConf) if (principalConf == null || principalConf.isEmpty()) { throw new TTransportException("No principal specified"); } - // Login from the keytab String kerberosName; try { @@ -355,34 +356,34 @@ protected Server(String keytabFile, String principalConf) } /** - * Create a TTransportFactory that, upon connection of a client socket, - * negotiates a Kerberized SASL transport. The resulting TTransportFactory - * can be passed as both the input and output transport factory when - * instantiating a TThreadPoolServer, for example. + * Create a TTransportFactory that, upon connection of a client socket, negotiates a Kerberized + * SASL transport. The resulting TTransportFactory can be passed as both the input and output + * transport factory when instantiating a TThreadPoolServer, for example. * * @param saslProps Map of SASL properties */ @Override - public TTransportFactory createTransportFactory(Map saslProps) - throws TTransportException { + public TTransportFactory createTransportFactory(Map saslProps, + int saslMessageLimit) throws TTransportException { // Parse out the kerberos principal, host, realm. String kerberosName = realUgi.getUserName(); final String names[] = SaslRpcServer.splitKerberosName(kerberosName); if (names.length != 3) { throw new TTransportException("Kerberos principal should have 3 parts: " + kerberosName); } - - TSaslServerTransport.Factory transFactory = new TSaslServerTransport.Factory(); - transFactory.addServerDefinition( - AuthMethod.KERBEROS.getMechanismName(), - names[0], names[1], // two parts of kerberos principal - saslProps, - new SaslRpcServer.SaslGssCallbackHandler()); - transFactory.addServerDefinition(AuthMethod.DIGEST.getMechanismName(), - null, SaslRpcServer.SASL_DEFAULT_REALM, - saslProps, new SaslDigestCallbackHandler(secretManager)); - - return new TUGIAssumingTransportFactory(transFactory, realUgi); + TSaslServerTransport.Factory saslTransportFactory; + if (saslMessageLimit > 0) { + saslTransportFactory = new HadoopThriftAuthBridge.HiveSaslServerTransportFactory(saslMessageLimit); + } else { + saslTransportFactory = new TSaslServerTransport.Factory(); + } + saslTransportFactory.addServerDefinition(AuthMethod.KERBEROS.getMechanismName(), names[0], names[1], + saslProps, new SaslRpcServer.SaslGssCallbackHandler()); + saslTransportFactory + .addServerDefinition(AuthMethod.DIGEST.getMechanismName(), null, + SaslRpcServer.SASL_DEFAULT_REALM, saslProps, new SaslDigestCallbackHandler( + secretManager)); + return new TUGIAssumingTransportFactory(saslTransportFactory, realUgi); } /** diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge.java b/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge.java index d011c6733e03..dcff26aee7ea 100644 --- a/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge.java +++ b/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HadoopThriftAuthBridge.java @@ -19,15 +19,26 @@ package org.apache.hadoop.hive.thrift; import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.lang.ref.WeakReference; import java.net.InetAddress; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; +import java.util.WeakHashMap; + +import javax.security.auth.callback.CallbackHandler; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.thrift.EncodingUtils; import org.apache.thrift.TProcessor; +import org.apache.thrift.transport.TSaslServerTransport; import org.apache.thrift.transport.TTransport; import org.apache.thrift.transport.TTransportException; import org.apache.thrift.transport.TTransportFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * This class is only overridden by the secure hadoop shim. It allows @@ -58,8 +69,7 @@ public String getServerPrincipal(String principalConfig, String host) "The current version of Hadoop does not support Authentication"); } - public Server createServer(String keytabFile, String principalConf) - throws TTransportException { + public Server createServer(String keytabFile, String principalConf) throws TTransportException { throw new UnsupportedOperationException( "The current version of Hadoop does not support Authentication"); } @@ -102,7 +112,9 @@ public static abstract class Server { public enum ServerMode { HIVESERVER2, METASTORE }; - public abstract TTransportFactory createTransportFactory(Map saslProps) throws TTransportException; + + public abstract TTransportFactory createTransportFactory(Map saslProps, + int saslMessageLimit) throws TTransportException; public abstract TProcessor wrapProcessor(TProcessor processor); public abstract TProcessor wrapNonAssumingProcessor(TProcessor processor); public abstract InetAddress getRemoteAddress(); @@ -117,5 +129,105 @@ public abstract String getDelegationTokenWithService(String owner, String renewe public abstract void cancelDelegationToken(String tokenStrForm) throws IOException; public abstract String getUserFromToken(String tokenStr) throws IOException; } + + public static class HiveSaslServerTransportFactory extends TSaslServerTransport.Factory { + private static final Logger LOGGER = LoggerFactory.getLogger(TSaslServerTransport.class); + private final int saslMessageLimit; + + public HiveSaslServerTransportFactory(int saslMessageLimit) { + this.saslMessageLimit = saslMessageLimit; + } + + private static class TSaslServerDefinition { + public String mechanism; + public String protocol; + public String serverName; + public Map props; + public CallbackHandler cbh; + + public TSaslServerDefinition(String mechanism, String protocol, String serverName, + Map props, CallbackHandler cbh) { + this.mechanism = mechanism; + this.protocol = protocol; + this.serverName = serverName; + this.props = props; + this.cbh = cbh; + } + } + + private static Map> transportMap = Collections + .synchronizedMap(new WeakHashMap>()); + private Map serverDefinitionMap = + new HashMap(); + + public void addServerDefinition(String mechanism, String protocol, String serverName, + Map props, CallbackHandler cbh) { + serverDefinitionMap.put(mechanism, new TSaslServerDefinition(mechanism, protocol, serverName, + props, cbh)); + } + + @Override + public TTransport getTransport(TTransport base) { + WeakReference ret = transportMap.get(base); + TSaslServerTransport transport = ret == null ? null : ret.get(); + if (transport == null) { + LOGGER.debug("transport map does not contain key {}", base); + transport = newSaslTransport(base); + try { + transport.open(); + } catch (TTransportException e) { + LOGGER.debug("failed to open server transport", e); + throw new RuntimeException(e); + } + transportMap.put(base, new WeakReference(transport)); + } else { + LOGGER.debug("transport map does contain key {}", base); + } + return transport; + } + + private TSaslServerTransport newSaslTransport(final TTransport base) { + // Anonymous subclass of TSaslServerTransport. TSaslServerTransport#recieveSaslMessage + // is replaced with one that has additional check for the message size. + TSaslServerTransport transport = new TSaslServerTransport(base) { + private final byte[] messageHeader = new byte[STATUS_BYTES + PAYLOAD_LENGTH_BYTES]; + + @Override + protected SaslResponse receiveSaslMessage() throws TTransportException { + underlyingTransport.readAll(messageHeader, 0, messageHeader.length); + byte statusByte = messageHeader[0]; + int length = EncodingUtils.decodeBigEndian(messageHeader, STATUS_BYTES); + if (length > saslMessageLimit) { + base.close(); + throw new TTransportException("Sasl message is too big (" + length + " bytes). " + + "The peer connection is possibly using a protocol other than thrift."); + } + byte[] payload = new byte[length]; + underlyingTransport.readAll(payload, 0, payload.length); + NegotiationStatus status = NegotiationStatus.byValue(statusByte); + if (status == null) { + sendAndThrowMessage(NegotiationStatus.ERROR, "Invalid status " + statusByte); + } else if (status == NegotiationStatus.BAD || status == NegotiationStatus.ERROR) { + try { + String remoteMessage = new String(payload, "UTF-8"); + throw new TTransportException("Peer indicated failure: " + remoteMessage); + } catch (UnsupportedEncodingException e) { + throw new TTransportException(e); + } + } + if (LOGGER.isDebugEnabled()) + LOGGER.debug(getRole() + ": Received message with status {} and payload length {}", + status, payload.length); + return new SaslResponse(status, payload); + } + }; + for (Map.Entry entry : serverDefinitionMap.entrySet()) { + TSaslServerDefinition definition = entry.getValue(); + transport.addServerDefinition(entry.getKey(), definition.protocol, definition.serverName, + definition.props, definition.cbh); + } + return transport; + } + } } From 61947132060903f7f1da6aa9473e1ac2e9127120 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Mon, 15 Dec 2014 23:32:07 +0000 Subject: [PATCH 313/339] HIVE-9067: OrcFileMergeOperator may create merge file that does not match properties of input files (Prasanth Jayachandran reviewed by Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1645790 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/exec/OrcFileMergeOperator.java | 12 +- .../hive/ql/io/orc/OrcFileKeyWrapper.java | 17 ++- .../orc/OrcFileStripeMergeRecordReader.java | 10 +- .../hadoop/hive/ql/io/orc/WriterImpl.java | 37 ++--- .../test/queries/clientpositive/orc_merge8.q | 46 +++++++ .../results/clientpositive/orc_merge8.q.out | 130 ++++++++++++++++++ 6 files changed, 215 insertions(+), 37 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/orc_merge8.q create mode 100644 ql/src/test/results/clientpositive/orc_merge8.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/OrcFileMergeOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/OrcFileMergeOperator.java index 5ee8e32a1903..bad88d3cfc74 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/OrcFileMergeOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/OrcFileMergeOperator.java @@ -33,7 +33,6 @@ import org.apache.hadoop.hive.shims.CombineHiveKey; import java.io.IOException; -import java.util.List; /** * Fast file merge operator for ORC files. @@ -47,7 +46,7 @@ public class OrcFileMergeOperator extends // not be merged. CompressionKind compression = null; long compressBuffSize = 0; - List version; + OrcFile.Version version; int columnCount = 0; int rowIndexStride = 0; @@ -90,13 +89,16 @@ private void processKeyValuePairs(Object key, Object value) if (outWriter == null) { compression = k.getCompression(); compressBuffSize = k.getCompressBufferSize(); - version = k.getVersionList(); + version = k.getVersion(); columnCount = k.getTypes().get(0).getSubtypesCount(); rowIndexStride = k.getRowIndexStride(); // block size and stripe size will be from config outWriter = OrcFile.createWriter(outPath, - OrcFile.writerOptions(jc).compress(compression) + OrcFile.writerOptions(jc) + .compress(compression) + .version(version) + .rowIndexStride(rowIndexStride) .inspector(reader.getObjectInspector())); LOG.info("ORC merge file output path: " + outPath); } @@ -167,7 +169,7 @@ private boolean checkCompatibility(OrcFileKeyWrapper k) { } - if (!k.getVersionList().equals(version)) { + if (!k.getVersion().equals(version)) { LOG.info("Incompatible ORC file merge! Version does not match for " + k.getInputPath()); return false; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFileKeyWrapper.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFileKeyWrapper.java index 6eb0e22950ad..11f05c663c4f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFileKeyWrapper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFileKeyWrapper.java @@ -18,15 +18,14 @@ package org.apache.hadoop.hive.ql.io.orc; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.WritableComparable; + import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.util.List; -import org.apache.hadoop.fs.Path; -import org.apache.hadoop.hive.ql.io.orc.OrcProto; -import org.apache.hadoop.io.WritableComparable; - /** * Key for OrcFileMergeMapper task. Contains orc file related information that * should match before merging two orc files. @@ -38,14 +37,14 @@ public class OrcFileKeyWrapper implements WritableComparable protected long compressBufferSize; protected List types; protected int rowIndexStride; - protected List versionList; + protected OrcFile.Version version; - public List getVersionList() { - return versionList; + public OrcFile.Version getVersion() { + return version; } - public void setVersionList(List versionList) { - this.versionList = versionList; + public void setVersion(OrcFile.Version version) { + this.version = version; } public int getRowIndexStride() { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFileStripeMergeRecordReader.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFileStripeMergeRecordReader.java index db5bbb5a7cee..603b75aed399 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFileStripeMergeRecordReader.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcFileStripeMergeRecordReader.java @@ -18,16 +18,16 @@ package org.apache.hadoop.hive.ql.io.orc; -import java.io.IOException; -import java.util.Iterator; -import java.util.List; - import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.mapred.FileSplit; import org.apache.hadoop.mapred.RecordReader; +import java.io.IOException; +import java.util.Iterator; +import java.util.List; + public class OrcFileStripeMergeRecordReader implements RecordReader { @@ -88,7 +88,7 @@ protected boolean nextStripe(OrcFileKeyWrapper keyWrapper, OrcFileValueWrapper v keyWrapper.setInputPath(path); keyWrapper.setCompression(reader.getCompression()); keyWrapper.setCompressBufferSize(reader.getCompressionSize()); - keyWrapper.setVersionList(((ReaderImpl) reader).getFileMetaInfo().versionList); + keyWrapper.setVersion(reader.getFileVersion()); keyWrapper.setRowIndexStride(reader.getRowIndexStride()); keyWrapper.setTypes(reader.getTypes()); } else { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/WriterImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/WriterImpl.java index 9e69de6de391..24da301b9453 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/WriterImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/WriterImpl.java @@ -18,21 +18,13 @@ package org.apache.hadoop.hive.ql.io.orc; -import java.io.IOException; -import java.io.OutputStream; -import java.lang.management.ManagementFactory; -import java.nio.ByteBuffer; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.EnumSet; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; +import static com.google.common.base.Preconditions.checkArgument; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Lists; import com.google.protobuf.ByteString; import com.google.protobuf.CodedOutputStream; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; @@ -84,12 +76,11 @@ import java.nio.ByteBuffer; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; import java.util.Map; import java.util.TreeMap; -import static com.google.common.base.Preconditions.checkArgument; - /** * An ORC file writer. The file is divided into stripes, which is the natural * unit of work when reading. Each stripe is buffered in memory until the @@ -2387,13 +2378,23 @@ public void appendStripe(byte[] stripe, int offset, int length, private void updateFileStatistics(OrcProto.StripeStatistics stripeStatistics) { List cs = stripeStatistics.getColStatsList(); + List allWriters = getAllColumnTreeWriters(treeWriter); + for (int i = 0; i < allWriters.size(); i++) { + allWriters.get(i).fileStatistics.merge(ColumnStatisticsImpl.deserialize(cs.get(i))); + } + } + + private List getAllColumnTreeWriters(TreeWriter rootTreeWriter) { + List result = Lists.newArrayList(); + getAllColumnTreeWritersImpl(rootTreeWriter, result); + return result; + } - // root element - treeWriter.fileStatistics.merge(ColumnStatisticsImpl.deserialize(cs.get(0))); - TreeWriter[] childWriters = treeWriter.getChildrenWriters(); - for (int i = 0; i < childWriters.length; i++) { - childWriters[i].fileStatistics.merge( - ColumnStatisticsImpl.deserialize(cs.get(i + 1))); + private void getAllColumnTreeWritersImpl(TreeWriter tw, + List result) { + result.add(tw); + for (TreeWriter child : tw.childrenWriters) { + getAllColumnTreeWritersImpl(child, result); } } diff --git a/ql/src/test/queries/clientpositive/orc_merge8.q b/ql/src/test/queries/clientpositive/orc_merge8.q new file mode 100644 index 000000000000..61ea4bf23b64 --- /dev/null +++ b/ql/src/test/queries/clientpositive/orc_merge8.q @@ -0,0 +1,46 @@ +create table if not exists alltypes ( + bo boolean, + ti tinyint, + si smallint, + i int, + bi bigint, + f float, + d double, + de decimal(10,3), + ts timestamp, + da date, + s string, + c char(5), + vc varchar(5), + m map, + l array, + st struct +) row format delimited fields terminated by '|' +collection items terminated by ',' +map keys terminated by ':' stored as textfile; + +create table alltypes_orc like alltypes; +alter table alltypes_orc set fileformat orc; + +load data local inpath '../../data/files/alltypes2.txt' overwrite into table alltypes; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +set hive.merge.orcfile.stripe.level=false; +set hive.merge.tezfiles=false; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +insert overwrite table alltypes_orc select * from alltypes; +insert into table alltypes_orc select * from alltypes; + +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/alltypes_orc/; + +set hive.merge.orcfile.stripe.level=true; +set hive.merge.tezfiles=true; +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +alter table alltypes_orc concatenate; + +dfs -ls ${hiveconf:hive.metastore.warehouse.dir}/alltypes_orc/; diff --git a/ql/src/test/results/clientpositive/orc_merge8.q.out b/ql/src/test/results/clientpositive/orc_merge8.q.out new file mode 100644 index 000000000000..f4f4b4a547c9 --- /dev/null +++ b/ql/src/test/results/clientpositive/orc_merge8.q.out @@ -0,0 +1,130 @@ +PREHOOK: query: create table if not exists alltypes ( + bo boolean, + ti tinyint, + si smallint, + i int, + bi bigint, + f float, + d double, + de decimal(10,3), + ts timestamp, + da date, + s string, + c char(5), + vc varchar(5), + m map, + l array, + st struct +) row format delimited fields terminated by '|' +collection items terminated by ',' +map keys terminated by ':' stored as textfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alltypes +POSTHOOK: query: create table if not exists alltypes ( + bo boolean, + ti tinyint, + si smallint, + i int, + bi bigint, + f float, + d double, + de decimal(10,3), + ts timestamp, + da date, + s string, + c char(5), + vc varchar(5), + m map, + l array, + st struct +) row format delimited fields terminated by '|' +collection items terminated by ',' +map keys terminated by ':' stored as textfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alltypes +PREHOOK: query: create table alltypes_orc like alltypes +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@alltypes_orc +POSTHOOK: query: create table alltypes_orc like alltypes +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@alltypes_orc +PREHOOK: query: alter table alltypes_orc set fileformat orc +PREHOOK: type: ALTERTABLE_FILEFORMAT +PREHOOK: Input: default@alltypes_orc +PREHOOK: Output: default@alltypes_orc +POSTHOOK: query: alter table alltypes_orc set fileformat orc +POSTHOOK: type: ALTERTABLE_FILEFORMAT +POSTHOOK: Input: default@alltypes_orc +POSTHOOK: Output: default@alltypes_orc +PREHOOK: query: load data local inpath '../../data/files/alltypes2.txt' overwrite into table alltypes +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@alltypes +POSTHOOK: query: load data local inpath '../../data/files/alltypes2.txt' overwrite into table alltypes +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@alltypes +PREHOOK: query: insert overwrite table alltypes_orc select * from alltypes +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypes +PREHOOK: Output: default@alltypes_orc +POSTHOOK: query: insert overwrite table alltypes_orc select * from alltypes +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypes +POSTHOOK: Output: default@alltypes_orc +POSTHOOK: Lineage: alltypes_orc.bi SIMPLE [(alltypes)alltypes.FieldSchema(name:bi, type:bigint, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.bo SIMPLE [(alltypes)alltypes.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.c SIMPLE [(alltypes)alltypes.FieldSchema(name:c, type:char(5), comment:null), ] +POSTHOOK: Lineage: alltypes_orc.d SIMPLE [(alltypes)alltypes.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.da SIMPLE [(alltypes)alltypes.FieldSchema(name:da, type:date, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.de SIMPLE [(alltypes)alltypes.FieldSchema(name:de, type:decimal(10,3), comment:null), ] +POSTHOOK: Lineage: alltypes_orc.f SIMPLE [(alltypes)alltypes.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.i SIMPLE [(alltypes)alltypes.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.l SIMPLE [(alltypes)alltypes.FieldSchema(name:l, type:array, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.m SIMPLE [(alltypes)alltypes.FieldSchema(name:m, type:map, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.s SIMPLE [(alltypes)alltypes.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.si SIMPLE [(alltypes)alltypes.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.st SIMPLE [(alltypes)alltypes.FieldSchema(name:st, type:struct, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.ti SIMPLE [(alltypes)alltypes.FieldSchema(name:ti, type:tinyint, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.ts SIMPLE [(alltypes)alltypes.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.vc SIMPLE [(alltypes)alltypes.FieldSchema(name:vc, type:varchar(5), comment:null), ] +PREHOOK: query: insert into table alltypes_orc select * from alltypes +PREHOOK: type: QUERY +PREHOOK: Input: default@alltypes +PREHOOK: Output: default@alltypes_orc +POSTHOOK: query: insert into table alltypes_orc select * from alltypes +POSTHOOK: type: QUERY +POSTHOOK: Input: default@alltypes +POSTHOOK: Output: default@alltypes_orc +POSTHOOK: Lineage: alltypes_orc.bi SIMPLE [(alltypes)alltypes.FieldSchema(name:bi, type:bigint, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.bo SIMPLE [(alltypes)alltypes.FieldSchema(name:bo, type:boolean, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.c SIMPLE [(alltypes)alltypes.FieldSchema(name:c, type:char(5), comment:null), ] +POSTHOOK: Lineage: alltypes_orc.d SIMPLE [(alltypes)alltypes.FieldSchema(name:d, type:double, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.da SIMPLE [(alltypes)alltypes.FieldSchema(name:da, type:date, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.de SIMPLE [(alltypes)alltypes.FieldSchema(name:de, type:decimal(10,3), comment:null), ] +POSTHOOK: Lineage: alltypes_orc.f SIMPLE [(alltypes)alltypes.FieldSchema(name:f, type:float, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.i SIMPLE [(alltypes)alltypes.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.l SIMPLE [(alltypes)alltypes.FieldSchema(name:l, type:array, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.m SIMPLE [(alltypes)alltypes.FieldSchema(name:m, type:map, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.s SIMPLE [(alltypes)alltypes.FieldSchema(name:s, type:string, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.si SIMPLE [(alltypes)alltypes.FieldSchema(name:si, type:smallint, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.st SIMPLE [(alltypes)alltypes.FieldSchema(name:st, type:struct, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.ti SIMPLE [(alltypes)alltypes.FieldSchema(name:ti, type:tinyint, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.ts SIMPLE [(alltypes)alltypes.FieldSchema(name:ts, type:timestamp, comment:null), ] +POSTHOOK: Lineage: alltypes_orc.vc SIMPLE [(alltypes)alltypes.FieldSchema(name:vc, type:varchar(5), comment:null), ] +Found 2 items +#### A masked pattern was here #### +PREHOOK: query: alter table alltypes_orc concatenate +PREHOOK: type: ALTER_TABLE_MERGE +PREHOOK: Input: default@alltypes_orc +PREHOOK: Output: default@alltypes_orc +POSTHOOK: query: alter table alltypes_orc concatenate +POSTHOOK: type: ALTER_TABLE_MERGE +POSTHOOK: Input: default@alltypes_orc +POSTHOOK: Output: default@alltypes_orc +Found 1 items +#### A masked pattern was here #### From 6ea82986ed8d8d3c55cbf8f21bfaae1ceae673b2 Mon Sep 17 00:00:00 2001 From: Vikram Dixit K Date: Tue, 16 Dec 2014 02:42:06 +0000 Subject: [PATCH 314/339] HIVE-8866: Vectorization on partitioned table throws ArrayIndexOutOfBoundsException when partitions are not of same #of columns (Matt McCline via Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1645825 13f79535-47bb-0310-9956-ffa450edef68 --- data/files/inventory | 100 +++ .../resources/testconfiguration.properties | 1 + .../ql/optimizer/physical/Vectorizer.java | 86 ++- .../ql/optimizer/physical/TestVectorizer.java | 6 +- .../vector_partition_diff_num_cols.q | 99 +++ .../tez/vector_partition_diff_num_cols.q.out | 630 ++++++++++++++++++ .../vector_partition_diff_num_cols.q.out | 595 +++++++++++++++++ 7 files changed, 1502 insertions(+), 15 deletions(-) create mode 100644 data/files/inventory create mode 100644 ql/src/test/queries/clientpositive/vector_partition_diff_num_cols.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_partition_diff_num_cols.q.out create mode 100644 ql/src/test/results/clientpositive/vector_partition_diff_num_cols.q.out diff --git a/data/files/inventory b/data/files/inventory new file mode 100644 index 000000000000..49fd58a53eff --- /dev/null +++ b/data/files/inventory @@ -0,0 +1,100 @@ +2450815|1|1|211| +2450815|2|1|235| +2450815|4|1|859| +2450815|7|1|704| +2450815|8|1|891| +2450815|10|1|834| +2450815|13|1|591| +2450815|14|1|579| +2450815|16|1|622| +2450815|19|1|745| +2450815|20|1|405| +2450815|22|1|| +2450815|25|1|676| +2450815|26|1|865| +2450815|28|1|24| +2450815|31|1|170| +2450815|32|1|797| +2450815|34|1|332| +2450815|37|1|618| +2450815|38|1|909| +2450815|40|1|738| +2450815|43|1|699| +2450815|44|1|975| +2450815|46|1|551| +2450815|49|1|857| +2450815|50|1|894| +2450815|52|1|279| +2450815|55|1|206| +2450815|56|1|746| +2450815|58|1|| +2450815|61|1|154| +2450815|62|1|888| +2450815|64|1|773| +2450815|67|1|107| +2450815|68|1|801| +2450815|70|1|749| +2450815|73|1|419| +2450815|74|1|541| +2450815|76|1|359| +2450815|79|1|578| +2450815|80|1|42| +2450815|82|1|83| +2450815|85|1|192| +2450815|86|1|567| +2450815|88|1|710| +2450815|91|1|282| +2450815|92|1|631| +2450815|94|1|587| +2450815|97|1|645| +2450815|98|1|667| +2450815|100|1|26| +2450815|103|1|224| +2450815|104|1|901| +2450815|106|1|887| +2450815|109|1|455| +2450815|110|1|784| +2450815|112|1|742| +2450815|115|1|978| +2450815|116|1|207| +2450815|118|1|462| +2450815|121|1|406| +2450815|122|1|559| +2450815|124|1|999| +2450815|127|1|870| +2450815|128|1|982| +2450815|130|1|700| +2450815|133|1|26| +2450815|134|1|356| +2450815|136|1|143| +2450815|139|1|838| +2450815|140|1|846| +2450815|142|1|657| +2450815|145|1|181| +2450815|146|1|730| +2450815|148|1|49| +2450815|151|1|652| +2450815|152|1|861| +2450815|154|1|329| +2450815|157|1|286| +2450815|158|1|| +2450815|160|1|62| +2450815|163|1|894| +2450815|164|1|463| +2450815|166|1|458| +2450815|169|1|696| +2450815|170|1|450| +2450815|172|1|842| +2450815|175|1|79| +2450815|176|1|260| +2450815|178|1|894| +2450815|181|1|4| +2450815|182|1|281| +2450815|184|1|797| +2450815|187|1|981| +2450815|188|1|58| +2450815|190|1|834| +2450815|193|1|54| +2450815|194|1|856| +2450815|196|1|803| +2450815|199|1|296| diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 08992a256d64..9cefcf529cff 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -190,6 +190,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vector_mapjoin_reduce.q,\ vector_non_string_partition.q,\ vector_orderby_5.q,\ + vector_partition_diff_num_cols.q,\ vector_partitioned_date_time.q,\ vector_reduce_groupby_decimal.q,\ vector_string_concat.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java index 2c02bd4718e1..c8e6ef5eb49b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java @@ -27,6 +27,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.Set; import java.util.Stack; import java.util.TreeMap; @@ -35,6 +36,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants; import org.apache.hadoop.hive.ql.exec.*; import org.apache.hadoop.hive.ql.exec.mr.MapRedTask; import org.apache.hadoop.hive.ql.exec.tez.TezTask; @@ -115,16 +117,11 @@ import org.apache.hadoop.hive.ql.udf.UDFWeekOfYear; import org.apache.hadoop.hive.ql.udf.UDFYear; import org.apache.hadoop.hive.ql.udf.generic.*; -import org.apache.hadoop.hive.serde2.Deserializer; -import org.apache.hadoop.hive.serde2.SerDe; -import org.apache.hadoop.hive.serde2.SerDeUtils; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.StructField; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; -import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils; -import org.apache.hadoop.util.ReflectionUtils; public class Vectorizer implements PhysicalPlanResolver { @@ -345,7 +342,7 @@ private boolean validateMapWork(MapWork mapWork, boolean isTez) throws SemanticE } } Map opRules = new LinkedHashMap(); - MapWorkValidationNodeProcessor vnp = new MapWorkValidationNodeProcessor(isTez); + MapWorkValidationNodeProcessor vnp = new MapWorkValidationNodeProcessor(mapWork, isTez); addMapWorkRules(opRules, vnp); Dispatcher disp = new DefaultRuleDispatcher(vnp, opRules, null); GraphWalker ogw = new DefaultGraphWalker(disp); @@ -515,9 +512,11 @@ private void vectorizeReduceWork(ReduceWork reduceWork) throws SemanticException class MapWorkValidationNodeProcessor implements NodeProcessor { + private MapWork mapWork; private boolean isTez; - public MapWorkValidationNodeProcessor(boolean isTez) { + public MapWorkValidationNodeProcessor(MapWork mapWork, boolean isTez) { + this.mapWork = mapWork; this.isTez = isTez; } @@ -529,7 +528,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, if (nonVectorizableChildOfGroupBy(op)) { return new Boolean(true); } - boolean ret = validateMapWorkOperator(op, isTez); + boolean ret = validateMapWorkOperator(op, mapWork, isTez); if (!ret) { LOG.info("MapWork Operator: " + op.getName() + " could not be vectorized."); return new Boolean(false); @@ -845,7 +844,7 @@ public PhysicalContext resolve(PhysicalContext pctx) throws SemanticException { return pctx; } - boolean validateMapWorkOperator(Operator op, boolean isTez) { + boolean validateMapWorkOperator(Operator op, MapWork mWork, boolean isTez) { boolean ret = false; switch (op.getType()) { case MAPJOIN: @@ -868,7 +867,7 @@ boolean validateMapWorkOperator(Operator op, boolean isT ret = validateReduceSinkOperator((ReduceSinkOperator) op); break; case TABLESCAN: - ret = validateTableScanOperator((TableScanOperator) op); + ret = validateTableScanOperator((TableScanOperator) op, mWork); break; case FILESINK: case LIMIT: @@ -950,9 +949,72 @@ private boolean validateSMBMapJoinOperator(SMBMapJoinOperator op) { return validateMapJoinDesc(desc); } - private boolean validateTableScanOperator(TableScanOperator op) { + private boolean validateTableScanOperator(TableScanOperator op, MapWork mWork) { TableScanDesc desc = op.getConf(); - return !desc.isGatherStats(); + if (desc.isGatherStats()) { + return false; + } + + String columns = ""; + String types = ""; + String partitionColumns = ""; + String partitionTypes = ""; + boolean haveInfo = false; + + // This over-reaches slightly, since we can have > 1 table-scan per map-work. + // It needs path to partition, path to alias, then check the alias == the same table-scan, to be accurate. + // That said, that is a TODO item to be fixed when we support >1 TableScans per vectorized pipeline later. + LinkedHashMap partitionDescs = mWork.getPathToPartitionInfo(); + + // For vectorization, compare each partition information for against the others. + // We assume the table information will be from one of the partitions, so it will + // work to focus on the partition information and not compare against the TableScanOperator + // columns (in the VectorizationContext).... + for (Map.Entry entry : partitionDescs.entrySet()) { + PartitionDesc partDesc = entry.getValue(); + if (partDesc.getPartSpec() == null || partDesc.getPartSpec().isEmpty()) { + // No partition information -- we match because we would default to using the table description. + continue; + } + Properties partProps = partDesc.getProperties(); + if (!haveInfo) { + columns = partProps.getProperty(hive_metastoreConstants.META_TABLE_COLUMNS); + types = partProps.getProperty(hive_metastoreConstants.META_TABLE_COLUMN_TYPES); + partitionColumns = partProps.getProperty(hive_metastoreConstants.META_TABLE_PARTITION_COLUMNS); + partitionTypes = partProps.getProperty(hive_metastoreConstants.META_TABLE_PARTITION_COLUMN_TYPES); + haveInfo = true; + } else { + String nextColumns = partProps.getProperty(hive_metastoreConstants.META_TABLE_COLUMNS); + String nextTypes = partProps.getProperty(hive_metastoreConstants.META_TABLE_COLUMN_TYPES); + String nextPartitionColumns = partProps.getProperty(hive_metastoreConstants.META_TABLE_PARTITION_COLUMNS); + String nextPartitionTypes = partProps.getProperty(hive_metastoreConstants.META_TABLE_PARTITION_COLUMN_TYPES); + if (!columns.equalsIgnoreCase(nextColumns)) { + LOG.info( + String.format("Could not vectorize partition %s. Its column names %s do not match the other column names %s", + entry.getKey(), nextColumns, columns)); + return false; + } + if (!types.equalsIgnoreCase(nextTypes)) { + LOG.info( + String.format("Could not vectorize partition %s. Its column types %s do not match the other column types %s", + entry.getKey(), nextTypes, types)); + return false; + } + if (!partitionColumns.equalsIgnoreCase(nextPartitionColumns)) { + LOG.info( + String.format("Could not vectorize partition %s. Its partition column names %s do not match the other partition column names %s", + entry.getKey(), nextPartitionColumns, partitionColumns)); + return false; + } + if (!partitionTypes.equalsIgnoreCase(nextPartitionTypes)) { + LOG.info( + String.format("Could not vectorize partition %s. Its partition column types %s do not match the other partition column types %s", + entry.getKey(), nextPartitionTypes, partitionTypes)); + return false; + } + } + } + return true; } private boolean validateMapJoinOperator(MapJoinOperator op) { diff --git a/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java b/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java index 3271189f38ad..ec47c088c942 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/optimizer/physical/TestVectorizer.java @@ -108,7 +108,7 @@ public void testAggregateOnUDF() throws HiveException { gbyOp.setConf(desc); Vectorizer v = new Vectorizer(); - Assert.assertTrue(v.validateMapWorkOperator(gbyOp, false)); + Assert.assertTrue(v.validateMapWorkOperator(gbyOp, null, false)); VectorGroupByOperator vectorOp = (VectorGroupByOperator) v.vectorizeOperator(gbyOp, vContext); Assert.assertEquals(VectorUDAFSumLong.class, vectorOp.getAggregators()[0].getClass()); VectorUDAFSumLong udaf = (VectorUDAFSumLong) vectorOp.getAggregators()[0]; @@ -188,7 +188,7 @@ public void testValidateMapJoinOperator() { map.setConf(mjdesc); Vectorizer vectorizer = new Vectorizer(); - Assert.assertTrue(vectorizer.validateMapWorkOperator(map, false)); + Assert.assertTrue(vectorizer.validateMapWorkOperator(map, null, false)); } @@ -204,6 +204,6 @@ public void testValidateSMBJoinOperator() { map.setConf(mjdesc); Vectorizer vectorizer = new Vectorizer(); - Assert.assertTrue(vectorizer.validateMapWorkOperator(map, false)); + Assert.assertTrue(vectorizer.validateMapWorkOperator(map, null, false)); } } diff --git a/ql/src/test/queries/clientpositive/vector_partition_diff_num_cols.q b/ql/src/test/queries/clientpositive/vector_partition_diff_num_cols.q new file mode 100644 index 000000000000..30ea590be910 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_partition_diff_num_cols.q @@ -0,0 +1,99 @@ +SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=minimal; + +create table inventory_txt +( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int +) +row format delimited fields terminated by '|' +stored as textfile; + +LOAD DATA LOCAL INPATH '../../data/files/inventory' OVERWRITE INTO TABLE inventory_txt; + +-- No column change case + +create table inventory_part_0( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc; + +insert into table inventory_part_0 partition(par='1') select * from inventory_txt; +insert into table inventory_part_0 partition(par='2') select * from inventory_txt; + +explain +select sum(inv_quantity_on_hand) from inventory_part_0; + +select sum(inv_quantity_on_hand) from inventory_part_0; + +-- Additional column for 2nd partition... + +create table inventory_part_1( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc; + +insert into table inventory_part_1 partition(par='4cols') select * from inventory_txt; + +alter table inventory_part_1 add columns (fifthcol string); + +insert into table inventory_part_1 partition(par='5cols') select *, '5th' as fifthcol from inventory_txt; + +explain +select sum(inv_quantity_on_hand) from inventory_part_1; + +select sum(inv_quantity_on_hand) from inventory_part_1; + +-- Verify we do not vectorize when a partition column name is different. +-- Currently, we do not attempt the actual select because non-vectorized ORC table reader gets a cast exception. + +create table inventory_part_2a( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc; + +insert into table inventory_part_2a partition(par='1') select * from inventory_txt; +insert into table inventory_part_2a partition(par='2') select * from inventory_txt; +alter table inventory_part_2a partition (par='2') change inv_item_sk other_name int; + +explain +select sum(inv_quantity_on_hand) from inventory_part_2a; + +create table inventory_part_2b( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par1 string, par2 int) stored as orc; + +insert into table inventory_part_2b partition(par1='1',par2=4) select * from inventory_txt; +insert into table inventory_part_2b partition(par1='2',par2=3) select * from inventory_txt; +alter table inventory_part_2b partition (par1='2',par2=3) change inv_quantity_on_hand other_name int; + +explain +select sum(inv_quantity_on_hand) from inventory_part_2b; + +-- Verify we do not vectorize when a partition column type is different. +-- Currently, we do not attempt the actual select because non-vectorized ORC table reader gets a cast exception. + +create table inventory_part_3( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc; + +insert into table inventory_part_3 partition(par='1') select * from inventory_txt; +insert into table inventory_part_3 partition(par='2') select * from inventory_txt; +alter table inventory_part_3 partition (par='2') change inv_warehouse_sk inv_warehouse_sk bigint; + +explain +select sum(inv_quantity_on_hand) from inventory_part_3; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/tez/vector_partition_diff_num_cols.q.out b/ql/src/test/results/clientpositive/tez/vector_partition_diff_num_cols.q.out new file mode 100644 index 000000000000..7d860f7165a1 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_partition_diff_num_cols.q.out @@ -0,0 +1,630 @@ +PREHOOK: query: create table inventory_txt +( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int +) +row format delimited fields terminated by '|' +stored as textfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_txt +POSTHOOK: query: create table inventory_txt +( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int +) +row format delimited fields terminated by '|' +stored as textfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/inventory' OVERWRITE INTO TABLE inventory_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@inventory_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/inventory' OVERWRITE INTO TABLE inventory_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@inventory_txt +PREHOOK: query: -- No column change case + +create table inventory_part_0( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_part_0 +POSTHOOK: query: -- No column change case + +create table inventory_part_0( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_part_0 +PREHOOK: query: insert into table inventory_part_0 partition(par='1') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_0@par=1 +POSTHOOK: query: insert into table inventory_part_0 partition(par='1') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_0@par=1 +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=1).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=1).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=1).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=1).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: insert into table inventory_part_0 partition(par='2') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_0@par=2 +POSTHOOK: query: insert into table inventory_part_0 partition(par='2') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_0@par=2 +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=2).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=2).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=2).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=2).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_0 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: inventory_part_0 + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: inv_quantity_on_hand (type: int) + outputColumnNames: inv_quantity_on_hand + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(inv_quantity_on_hand) + 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: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select sum(inv_quantity_on_hand) from inventory_part_0 +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_part_0 +PREHOOK: Input: default@inventory_part_0@par=1 +PREHOOK: Input: default@inventory_part_0@par=2 +#### A masked pattern was here #### +POSTHOOK: query: select sum(inv_quantity_on_hand) from inventory_part_0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_part_0 +POSTHOOK: Input: default@inventory_part_0@par=1 +POSTHOOK: Input: default@inventory_part_0@par=2 +#### A masked pattern was here #### +105970 +PREHOOK: query: -- Additional column for 2nd partition... + +create table inventory_part_1( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_part_1 +POSTHOOK: query: -- Additional column for 2nd partition... + +create table inventory_part_1( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_part_1 +PREHOOK: query: insert into table inventory_part_1 partition(par='4cols') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_1@par=4cols +POSTHOOK: query: insert into table inventory_part_1 partition(par='4cols') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_1@par=4cols +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=4cols).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=4cols).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=4cols).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=4cols).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: alter table inventory_part_1 add columns (fifthcol string) +PREHOOK: type: ALTERTABLE_ADDCOLS +PREHOOK: Input: default@inventory_part_1 +PREHOOK: Output: default@inventory_part_1 +POSTHOOK: query: alter table inventory_part_1 add columns (fifthcol string) +POSTHOOK: type: ALTERTABLE_ADDCOLS +POSTHOOK: Input: default@inventory_part_1 +POSTHOOK: Output: default@inventory_part_1 +PREHOOK: query: insert into table inventory_part_1 partition(par='5cols') select *, '5th' as fifthcol from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_1@par=5cols +POSTHOOK: query: insert into table inventory_part_1 partition(par='5cols') select *, '5th' as fifthcol from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_1@par=5cols +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=5cols).fifthcol SIMPLE [] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=5cols).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=5cols).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=5cols).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=5cols).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: inventory_part_1 + Statistics: Num rows: 200 Data size: 11876 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: inv_quantity_on_hand (type: int) + outputColumnNames: inv_quantity_on_hand + Statistics: Num rows: 200 Data size: 11876 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(inv_quantity_on_hand) + 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) + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select sum(inv_quantity_on_hand) from inventory_part_1 +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_part_1 +PREHOOK: Input: default@inventory_part_1@par=4cols +PREHOOK: Input: default@inventory_part_1@par=5cols +#### A masked pattern was here #### +POSTHOOK: query: select sum(inv_quantity_on_hand) from inventory_part_1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_part_1 +POSTHOOK: Input: default@inventory_part_1@par=4cols +POSTHOOK: Input: default@inventory_part_1@par=5cols +#### A masked pattern was here #### +105970 +PREHOOK: query: -- Verify we do not vectorize when a partition column name is different. +-- Currently, we do not attempt the actual select because non-vectorized ORC table reader gets a cast exception. + +create table inventory_part_2a( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_part_2a +POSTHOOK: query: -- Verify we do not vectorize when a partition column name is different. +-- Currently, we do not attempt the actual select because non-vectorized ORC table reader gets a cast exception. + +create table inventory_part_2a( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_part_2a +PREHOOK: query: insert into table inventory_part_2a partition(par='1') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_2a@par=1 +POSTHOOK: query: insert into table inventory_part_2a partition(par='1') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_2a@par=1 +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=1).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=1).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=1).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=1).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: insert into table inventory_part_2a partition(par='2') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_2a@par=2 +POSTHOOK: query: insert into table inventory_part_2a partition(par='2') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_2a@par=2 +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=2).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=2).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=2).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=2).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: alter table inventory_part_2a partition (par='2') change inv_item_sk other_name int +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@inventory_part_2a +PREHOOK: Output: default@inventory_part_2a@par=2 +POSTHOOK: query: alter table inventory_part_2a partition (par='2') change inv_item_sk other_name int +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@inventory_part_2a +POSTHOOK: Input: default@inventory_part_2a@par=2 +POSTHOOK: Output: default@inventory_part_2a@par=2 +PREHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_2a +PREHOOK: type: QUERY +POSTHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_2a +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: inventory_part_2a + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: inv_quantity_on_hand (type: int) + outputColumnNames: inv_quantity_on_hand + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(inv_quantity_on_hand) + 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) + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: create table inventory_part_2b( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par1 string, par2 int) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_part_2b +POSTHOOK: query: create table inventory_part_2b( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par1 string, par2 int) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_part_2b +PREHOOK: query: insert into table inventory_part_2b partition(par1='1',par2=4) select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_2b@par1=1/par2=4 +POSTHOOK: query: insert into table inventory_part_2b partition(par1='1',par2=4) select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_2b@par1=1/par2=4 +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=1,par2=4).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=1,par2=4).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=1,par2=4).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=1,par2=4).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: insert into table inventory_part_2b partition(par1='2',par2=3) select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_2b@par1=2/par2=3 +POSTHOOK: query: insert into table inventory_part_2b partition(par1='2',par2=3) select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_2b@par1=2/par2=3 +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=2,par2=3).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=2,par2=3).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=2,par2=3).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=2,par2=3).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: alter table inventory_part_2b partition (par1='2',par2=3) change inv_quantity_on_hand other_name int +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@inventory_part_2b +PREHOOK: Output: default@inventory_part_2b@par1=2/par2=3 +POSTHOOK: query: alter table inventory_part_2b partition (par1='2',par2=3) change inv_quantity_on_hand other_name int +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@inventory_part_2b +POSTHOOK: Input: default@inventory_part_2b@par1=2/par2=3 +POSTHOOK: Output: default@inventory_part_2b@par1=2/par2=3 +PREHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_2b +PREHOOK: type: QUERY +POSTHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_2b +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: inventory_part_2b + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: inv_quantity_on_hand (type: int) + outputColumnNames: inv_quantity_on_hand + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(inv_quantity_on_hand) + 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) + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: -- Verify we do not vectorize when a partition column type is different. +-- Currently, we do not attempt the actual select because non-vectorized ORC table reader gets a cast exception. + +create table inventory_part_3( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_part_3 +POSTHOOK: query: -- Verify we do not vectorize when a partition column type is different. +-- Currently, we do not attempt the actual select because non-vectorized ORC table reader gets a cast exception. + +create table inventory_part_3( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_part_3 +PREHOOK: query: insert into table inventory_part_3 partition(par='1') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_3@par=1 +POSTHOOK: query: insert into table inventory_part_3 partition(par='1') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_3@par=1 +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=1).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=1).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=1).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=1).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: insert into table inventory_part_3 partition(par='2') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_3@par=2 +POSTHOOK: query: insert into table inventory_part_3 partition(par='2') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_3@par=2 +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=2).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=2).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=2).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=2).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: alter table inventory_part_3 partition (par='2') change inv_warehouse_sk inv_warehouse_sk bigint +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@inventory_part_3 +PREHOOK: Output: default@inventory_part_3@par=2 +POSTHOOK: query: alter table inventory_part_3 partition (par='2') change inv_warehouse_sk inv_warehouse_sk bigint +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@inventory_part_3 +POSTHOOK: Input: default@inventory_part_3@par=2 +POSTHOOK: Output: default@inventory_part_3@par=2 +PREHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_3 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_3 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: inventory_part_3 + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: inv_quantity_on_hand (type: int) + outputColumnNames: inv_quantity_on_hand + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(inv_quantity_on_hand) + 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) + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + diff --git a/ql/src/test/results/clientpositive/vector_partition_diff_num_cols.q.out b/ql/src/test/results/clientpositive/vector_partition_diff_num_cols.q.out new file mode 100644 index 000000000000..33307dee9870 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_partition_diff_num_cols.q.out @@ -0,0 +1,595 @@ +PREHOOK: query: create table inventory_txt +( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int +) +row format delimited fields terminated by '|' +stored as textfile +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_txt +POSTHOOK: query: create table inventory_txt +( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int +) +row format delimited fields terminated by '|' +stored as textfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_txt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/inventory' OVERWRITE INTO TABLE inventory_txt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@inventory_txt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/inventory' OVERWRITE INTO TABLE inventory_txt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@inventory_txt +PREHOOK: query: -- No column change case + +create table inventory_part_0( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_part_0 +POSTHOOK: query: -- No column change case + +create table inventory_part_0( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_part_0 +PREHOOK: query: insert into table inventory_part_0 partition(par='1') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_0@par=1 +POSTHOOK: query: insert into table inventory_part_0 partition(par='1') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_0@par=1 +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=1).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=1).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=1).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=1).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: insert into table inventory_part_0 partition(par='2') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_0@par=2 +POSTHOOK: query: insert into table inventory_part_0 partition(par='2') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_0@par=2 +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=2).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=2).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=2).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_0 PARTITION(par=2).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_0 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_0 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: inventory_part_0 + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: inv_quantity_on_hand (type: int) + outputColumnNames: inv_quantity_on_hand + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(inv_quantity_on_hand) + 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: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select sum(inv_quantity_on_hand) from inventory_part_0 +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_part_0 +PREHOOK: Input: default@inventory_part_0@par=1 +PREHOOK: Input: default@inventory_part_0@par=2 +#### A masked pattern was here #### +POSTHOOK: query: select sum(inv_quantity_on_hand) from inventory_part_0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_part_0 +POSTHOOK: Input: default@inventory_part_0@par=1 +POSTHOOK: Input: default@inventory_part_0@par=2 +#### A masked pattern was here #### +105970 +PREHOOK: query: -- Additional column for 2nd partition... + +create table inventory_part_1( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_part_1 +POSTHOOK: query: -- Additional column for 2nd partition... + +create table inventory_part_1( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_part_1 +PREHOOK: query: insert into table inventory_part_1 partition(par='4cols') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_1@par=4cols +POSTHOOK: query: insert into table inventory_part_1 partition(par='4cols') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_1@par=4cols +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=4cols).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=4cols).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=4cols).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=4cols).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: alter table inventory_part_1 add columns (fifthcol string) +PREHOOK: type: ALTERTABLE_ADDCOLS +PREHOOK: Input: default@inventory_part_1 +PREHOOK: Output: default@inventory_part_1 +POSTHOOK: query: alter table inventory_part_1 add columns (fifthcol string) +POSTHOOK: type: ALTERTABLE_ADDCOLS +POSTHOOK: Input: default@inventory_part_1 +POSTHOOK: Output: default@inventory_part_1 +PREHOOK: query: insert into table inventory_part_1 partition(par='5cols') select *, '5th' as fifthcol from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_1@par=5cols +POSTHOOK: query: insert into table inventory_part_1 partition(par='5cols') select *, '5th' as fifthcol from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_1@par=5cols +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=5cols).fifthcol SIMPLE [] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=5cols).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=5cols).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=5cols).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_1 PARTITION(par=5cols).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: inventory_part_1 + Statistics: Num rows: 200 Data size: 11876 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: inv_quantity_on_hand (type: int) + outputColumnNames: inv_quantity_on_hand + Statistics: Num rows: 200 Data size: 11876 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(inv_quantity_on_hand) + 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) + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select sum(inv_quantity_on_hand) from inventory_part_1 +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_part_1 +PREHOOK: Input: default@inventory_part_1@par=4cols +PREHOOK: Input: default@inventory_part_1@par=5cols +#### A masked pattern was here #### +POSTHOOK: query: select sum(inv_quantity_on_hand) from inventory_part_1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_part_1 +POSTHOOK: Input: default@inventory_part_1@par=4cols +POSTHOOK: Input: default@inventory_part_1@par=5cols +#### A masked pattern was here #### +105970 +PREHOOK: query: -- Verify we do not vectorize when a partition column name is different. +-- Currently, we do not attempt the actual select because non-vectorized ORC table reader gets a cast exception. + +create table inventory_part_2a( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_part_2a +POSTHOOK: query: -- Verify we do not vectorize when a partition column name is different. +-- Currently, we do not attempt the actual select because non-vectorized ORC table reader gets a cast exception. + +create table inventory_part_2a( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_part_2a +PREHOOK: query: insert into table inventory_part_2a partition(par='1') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_2a@par=1 +POSTHOOK: query: insert into table inventory_part_2a partition(par='1') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_2a@par=1 +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=1).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=1).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=1).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=1).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: insert into table inventory_part_2a partition(par='2') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_2a@par=2 +POSTHOOK: query: insert into table inventory_part_2a partition(par='2') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_2a@par=2 +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=2).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=2).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=2).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2a PARTITION(par=2).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: alter table inventory_part_2a partition (par='2') change inv_item_sk other_name int +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@inventory_part_2a +PREHOOK: Output: default@inventory_part_2a@par=2 +POSTHOOK: query: alter table inventory_part_2a partition (par='2') change inv_item_sk other_name int +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@inventory_part_2a +POSTHOOK: Input: default@inventory_part_2a@par=2 +POSTHOOK: Output: default@inventory_part_2a@par=2 +PREHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_2a +PREHOOK: type: QUERY +POSTHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_2a +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: inventory_part_2a + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: inv_quantity_on_hand (type: int) + outputColumnNames: inv_quantity_on_hand + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(inv_quantity_on_hand) + 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) + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: create table inventory_part_2b( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par1 string, par2 int) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_part_2b +POSTHOOK: query: create table inventory_part_2b( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par1 string, par2 int) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_part_2b +PREHOOK: query: insert into table inventory_part_2b partition(par1='1',par2=4) select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_2b@par1=1/par2=4 +POSTHOOK: query: insert into table inventory_part_2b partition(par1='1',par2=4) select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_2b@par1=1/par2=4 +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=1,par2=4).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=1,par2=4).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=1,par2=4).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=1,par2=4).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: insert into table inventory_part_2b partition(par1='2',par2=3) select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_2b@par1=2/par2=3 +POSTHOOK: query: insert into table inventory_part_2b partition(par1='2',par2=3) select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_2b@par1=2/par2=3 +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=2,par2=3).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=2,par2=3).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=2,par2=3).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_2b PARTITION(par1=2,par2=3).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: alter table inventory_part_2b partition (par1='2',par2=3) change inv_quantity_on_hand other_name int +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@inventory_part_2b +PREHOOK: Output: default@inventory_part_2b@par1=2/par2=3 +POSTHOOK: query: alter table inventory_part_2b partition (par1='2',par2=3) change inv_quantity_on_hand other_name int +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@inventory_part_2b +POSTHOOK: Input: default@inventory_part_2b@par1=2/par2=3 +POSTHOOK: Output: default@inventory_part_2b@par1=2/par2=3 +PREHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_2b +PREHOOK: type: QUERY +POSTHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_2b +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: inventory_part_2b + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: inv_quantity_on_hand (type: int) + outputColumnNames: inv_quantity_on_hand + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(inv_quantity_on_hand) + 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) + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: -- Verify we do not vectorize when a partition column type is different. +-- Currently, we do not attempt the actual select because non-vectorized ORC table reader gets a cast exception. + +create table inventory_part_3( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@inventory_part_3 +POSTHOOK: query: -- Verify we do not vectorize when a partition column type is different. +-- Currently, we do not attempt the actual select because non-vectorized ORC table reader gets a cast exception. + +create table inventory_part_3( + inv_date_sk int, + inv_item_sk int, + inv_warehouse_sk int, + inv_quantity_on_hand int) +partitioned by (par string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@inventory_part_3 +PREHOOK: query: insert into table inventory_part_3 partition(par='1') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_3@par=1 +POSTHOOK: query: insert into table inventory_part_3 partition(par='1') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_3@par=1 +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=1).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=1).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=1).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=1).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: insert into table inventory_part_3 partition(par='2') select * from inventory_txt +PREHOOK: type: QUERY +PREHOOK: Input: default@inventory_txt +PREHOOK: Output: default@inventory_part_3@par=2 +POSTHOOK: query: insert into table inventory_part_3 partition(par='2') select * from inventory_txt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@inventory_txt +POSTHOOK: Output: default@inventory_part_3@par=2 +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=2).inv_date_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_date_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=2).inv_item_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_item_sk, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=2).inv_quantity_on_hand SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_quantity_on_hand, type:int, comment:null), ] +POSTHOOK: Lineage: inventory_part_3 PARTITION(par=2).inv_warehouse_sk SIMPLE [(inventory_txt)inventory_txt.FieldSchema(name:inv_warehouse_sk, type:int, comment:null), ] +PREHOOK: query: alter table inventory_part_3 partition (par='2') change inv_warehouse_sk inv_warehouse_sk bigint +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@inventory_part_3 +PREHOOK: Output: default@inventory_part_3@par=2 +POSTHOOK: query: alter table inventory_part_3 partition (par='2') change inv_warehouse_sk inv_warehouse_sk bigint +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@inventory_part_3 +POSTHOOK: Input: default@inventory_part_3@par=2 +POSTHOOK: Output: default@inventory_part_3@par=2 +PREHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_3 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select sum(inv_quantity_on_hand) from inventory_part_3 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: inventory_part_3 + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: inv_quantity_on_hand (type: int) + outputColumnNames: inv_quantity_on_hand + Statistics: Num rows: 200 Data size: 3176 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(inv_quantity_on_hand) + 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) + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + From f37cd00dc7234b4bd53ba9918db4230655445f90 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Tue, 16 Dec 2014 19:07:55 +0000 Subject: [PATCH 315/339] HIVE-9111: Potential NPE in OrcStruct for list and map types (Prasanth Jayachandran reviewed by Vikram Dixit) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1646048 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/io/orc/OrcStruct.java | 34 +++++++++--- .../queries/clientpositive/orc_null_check.q | 8 +++ .../clientpositive/orc_null_check.q.out | 52 +++++++++++++++++++ 3 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/orc_null_check.q create mode 100644 ql/src/test/results/clientpositive/orc_null_check.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java index ffd14e07a7d9..2fbdf543d834 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java @@ -17,14 +17,6 @@ */ 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.HashMap; -import java.util.List; -import java.util.Map; - import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.MapObjectInspector; @@ -43,6 +35,14 @@ import org.apache.hadoop.hive.serde2.typeinfo.UnionTypeInfo; import org.apache.hadoop.io.Writable; +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + final public class OrcStruct implements Writable { private Object[] fields; @@ -346,17 +346,26 @@ public ObjectInspector getMapValueObjectInspector() { @Override public Object getMapValueElement(Object map, Object key) { + if (map == null) { + return null; + } return ((Map) map).get(key); } @Override @SuppressWarnings("unchecked") public Map getMap(Object map) { + if (map == null) { + return null; + } return (Map) map; } @Override public int getMapSize(Object map) { + if (map == null) { + return -1; + } return ((Map) map).size(); } @@ -429,17 +438,26 @@ public ObjectInspector getListElementObjectInspector() { @Override public Object getListElement(Object list, int i) { + if (list == null) { + return null; + } return ((List) list).get(i); } @Override public int getListLength(Object list) { + if (list == null) { + return -1; + } return ((List) list).size(); } @Override @SuppressWarnings("unchecked") public List getList(Object list) { + if (list == null) { + return null; + } return (List) list; } diff --git a/ql/src/test/queries/clientpositive/orc_null_check.q b/ql/src/test/queries/clientpositive/orc_null_check.q new file mode 100644 index 000000000000..2cb119024ab2 --- /dev/null +++ b/ql/src/test/queries/clientpositive/orc_null_check.q @@ -0,0 +1,8 @@ +create table listtable(l array); +create table listtable_orc(l array) stored as orc; + +insert overwrite table listtable select array(null) from src; +insert overwrite table listtable_orc select * from listtable; + +select size(l) from listtable_orc limit 10; + diff --git a/ql/src/test/results/clientpositive/orc_null_check.q.out b/ql/src/test/results/clientpositive/orc_null_check.q.out new file mode 100644 index 000000000000..093fdff7269f --- /dev/null +++ b/ql/src/test/results/clientpositive/orc_null_check.q.out @@ -0,0 +1,52 @@ +PREHOOK: query: create table listtable(l array) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@listtable +POSTHOOK: query: create table listtable(l array) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@listtable +PREHOOK: query: create table listtable_orc(l array) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@listtable_orc +POSTHOOK: query: create table listtable_orc(l array) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@listtable_orc +PREHOOK: query: insert overwrite table listtable select array(null) from src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@listtable +POSTHOOK: query: insert overwrite table listtable select array(null) from src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@listtable +POSTHOOK: Lineage: listtable.l EXPRESSION [] +PREHOOK: query: insert overwrite table listtable_orc select * from listtable +PREHOOK: type: QUERY +PREHOOK: Input: default@listtable +PREHOOK: Output: default@listtable_orc +POSTHOOK: query: insert overwrite table listtable_orc select * from listtable +POSTHOOK: type: QUERY +POSTHOOK: Input: default@listtable +POSTHOOK: Output: default@listtable_orc +POSTHOOK: Lineage: listtable_orc.l SIMPLE [(listtable)listtable.FieldSchema(name:l, type:array, comment:null), ] +PREHOOK: query: select size(l) from listtable_orc limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@listtable_orc +#### A masked pattern was here #### +POSTHOOK: query: select size(l) from listtable_orc limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@listtable_orc +#### A masked pattern was here #### +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 From 6dcd07a1d11512042c87117f3d139e283915baa9 Mon Sep 17 00:00:00 2001 From: Vikram Dixit K Date: Tue, 16 Dec 2014 19:22:33 +0000 Subject: [PATCH 316/339] HIVE-9055: Tez: union all followed by group by followed by another union all gives error (Vikram Dixit K, reviewed by Prasanth J) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1646049 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 4 +- .../hadoop/hive/ql/parse/GenTezWork.java | 39 +- .../queries/clientpositive/tez_multi_union.q | 8 + .../clientpositive/tez/tez_multi_union.q.out | 831 ++++++++++++++++++ 4 files changed, 860 insertions(+), 22 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/tez_multi_union.q create mode 100644 ql/src/test/results/clientpositive/tez/tez_multi_union.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 9cefcf529cff..be040f894213 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -253,6 +253,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ auto_sortmerge_join_8.q,\ auto_sortmerge_join_9.q + minitez.query.files=bucket_map_join_tez1.q,\ bucket_map_join_tez2.q,\ dynamic_partition_pruning.q,\ @@ -273,7 +274,8 @@ minitez.query.files=bucket_map_join_tez1.q,\ tez_union_group_by.q,\ tez_smb_main.q,\ tez_smb_1.q,\ - vectorized_dynamic_partition_pruning.q + vectorized_dynamic_partition_pruning.q,\ + tez_multi_union.q beeline.positive.exclude=add_part_exist.q,\ alter1.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java index 095aaee7c35e..64cfae23a8ef 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java @@ -111,7 +111,7 @@ public Object process(Node nd, Stack stack, // will result into a vertex with multiple FS or RS operators. if (context.childToWorkMap.containsKey(operator)) { // if we've seen both root and child, we can bail. - + // clear out the mapjoin set. we don't need it anymore. context.currentMapJoinOperators.clear(); @@ -349,17 +349,20 @@ public Object process(Node nd, Stack stack, } else if (followingWork instanceof UnionWork) { // this can only be possible if there is merge work followed by the union UnionWork unionWork = (UnionWork) followingWork; - int index = getMergeIndex(tezWork, unionWork, rs); - // guaranteed to be instance of MergeJoinWork if index is valid - BaseWork baseWork = tezWork.getChildren(unionWork).get(index); - if (baseWork instanceof MergeJoinWork) { - MergeJoinWork mergeJoinWork = (MergeJoinWork) baseWork; - // disconnect the connection to union work and connect to merge work - followingWork = mergeJoinWork; - rWork = (ReduceWork) mergeJoinWork.getMainWork(); + int index = getFollowingWorkIndex(tezWork, unionWork, rs); + if (index != -1) { + BaseWork baseWork = tezWork.getChildren(unionWork).get(index); + if (baseWork instanceof MergeJoinWork) { + MergeJoinWork mergeJoinWork = (MergeJoinWork) baseWork; + // disconnect the connection to union work and connect to merge work + followingWork = mergeJoinWork; + rWork = (ReduceWork) mergeJoinWork.getMainWork(); + } else { + rWork = (ReduceWork) baseWork; + } } else { - throw new SemanticException("Unknown work type found: " - + baseWork.getClass().getCanonicalName()); + throw new SemanticException("Following work not found for the reduce sink: " + + rs.getName()); } } else { rWork = (ReduceWork) followingWork; @@ -403,19 +406,13 @@ public Object process(Node nd, Stack stack, return null; } - private int getMergeIndex(TezWork tezWork, UnionWork unionWork, ReduceSinkOperator rs) { + private int getFollowingWorkIndex(TezWork tezWork, UnionWork unionWork, ReduceSinkOperator rs) { int index = 0; for (BaseWork baseWork : tezWork.getChildren(unionWork)) { - if (baseWork instanceof MergeJoinWork) { - MergeJoinWork mergeJoinWork = (MergeJoinWork) baseWork; - int tag = mergeJoinWork.getMergeJoinOperator().getTagForOperator(rs); - if (tag != -1) { - return index; - } else { - index++; - } - } else { + if (tezWork.getEdgeProperty(unionWork, baseWork).equals(TezEdgeProperty.EdgeType.CONTAINS)) { index++; + } else { + return index; } } diff --git a/ql/src/test/queries/clientpositive/tez_multi_union.q b/ql/src/test/queries/clientpositive/tez_multi_union.q new file mode 100644 index 000000000000..28fdfea9696e --- /dev/null +++ b/ql/src/test/queries/clientpositive/tez_multi_union.q @@ -0,0 +1,8 @@ +select key from +( +select key from src +union all +select key from src +) tab group by key +union all +select key from src; diff --git a/ql/src/test/results/clientpositive/tez/tez_multi_union.q.out b/ql/src/test/results/clientpositive/tez/tez_multi_union.q.out new file mode 100644 index 000000000000..a64943119670 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/tez_multi_union.q.out @@ -0,0 +1,831 @@ +PREHOOK: query: select key from +( +select key from src +union all +select key from src +) tab group by key +union all +select key from src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: select key from +( +select key from src +union all +select key from src +) tab group by key +union all +select key from src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +0 +10 +100 +103 +104 +105 +11 +111 +113 +114 +116 +118 +119 +12 +120 +125 +126 +128 +129 +131 +133 +134 +136 +137 +138 +143 +145 +146 +149 +15 +150 +152 +153 +155 +156 +157 +158 +160 +162 +163 +164 +165 +166 +167 +168 +169 +17 +170 +172 +174 +175 +176 +177 +178 +179 +18 +180 +181 +183 +186 +187 +189 +19 +190 +191 +192 +193 +194 +195 +196 +197 +199 +2 +20 +200 +201 +202 +203 +205 +207 +208 +209 +213 +214 +216 +217 +218 +219 +221 +222 +223 +224 +226 +228 +229 +230 +233 +235 +237 +238 +239 +24 +241 +242 +244 +247 +248 +249 +252 +255 +256 +257 +258 +26 +260 +262 +263 +265 +266 +27 +272 +273 +274 +275 +277 +278 +28 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +291 +292 +296 +298 +30 +302 +305 +306 +307 +308 +309 +310 +311 +315 +316 +317 +318 +321 +322 +323 +325 +327 +33 +331 +332 +333 +335 +336 +338 +339 +34 +341 +342 +344 +345 +348 +35 +351 +353 +356 +360 +362 +364 +365 +366 +367 +368 +369 +37 +373 +374 +375 +377 +378 +379 +382 +384 +386 +389 +392 +393 +394 +395 +396 +397 +399 +4 +400 +401 +402 +403 +404 +406 +407 +409 +41 +411 +413 +414 +417 +418 +419 +42 +421 +424 +427 +429 +43 +430 +431 +432 +435 +436 +437 +438 +439 +44 +443 +444 +446 +448 +449 +452 +453 +454 +455 +457 +458 +459 +460 +462 +463 +466 +467 +468 +469 +47 +470 +472 +475 +477 +478 +479 +480 +481 +482 +483 +484 +485 +487 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +5 +51 +53 +54 +57 +58 +64 +65 +66 +67 +69 +70 +72 +74 +76 +77 +78 +8 +80 +82 +83 +84 +85 +86 +87 +9 +90 +92 +95 +96 +97 +98 +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +429 +374 +152 +469 +145 +495 +37 +327 +281 +277 +209 +15 +82 +403 +166 +417 +430 +252 +292 +219 +287 +153 +193 +338 +446 +459 +394 +237 +482 +174 +413 +494 +207 +199 +466 +208 +174 +399 +396 +247 +417 +489 +162 +377 +397 +309 +365 +266 +439 +342 +367 +325 +167 +195 +475 +17 +113 +155 +203 +339 +0 +455 +128 +311 +316 +57 +302 +205 +149 +438 +345 +129 +170 +20 +489 +157 +378 +221 +92 +111 +47 +72 +4 +280 +35 +427 +277 +208 +356 +399 +169 +382 +498 +125 +386 +437 +469 +192 +286 +187 +176 +54 +459 +51 +138 +103 +239 +213 +216 +430 +278 +176 +289 +221 +65 +318 +332 +311 +275 +137 +241 +83 +333 +180 +284 +12 +230 +181 +67 +260 +404 +384 +489 +353 +373 +272 +138 +217 +84 +348 +466 +58 +8 +411 +230 +208 +348 +24 +463 +431 +179 +172 +42 +129 +158 +119 +496 +0 +322 +197 +468 +393 +454 +100 +298 +199 +191 +418 +96 +26 +165 +327 +230 +205 +120 +131 +51 +404 +43 +436 +156 +469 +468 +308 +95 +196 +288 +481 +457 +98 +282 +197 +187 +318 +318 +409 +470 +137 +369 +316 +169 +413 +85 +77 +0 +490 +87 +364 +179 +118 +134 +395 +282 +138 +238 +419 +15 +118 +72 +90 +307 +19 +435 +10 +277 +273 +306 +224 +309 +389 +327 +242 +369 +392 +272 +331 +401 +242 +452 +177 +226 +5 +497 +402 +396 +317 +395 +58 +35 +336 +95 +11 +168 +34 +229 +233 +143 +472 +322 +498 +160 +195 +42 +321 +430 +119 +489 +458 +78 +76 +41 +223 +492 +149 +449 +218 +228 +138 +453 +30 +209 +64 +468 +76 +74 +342 +69 +230 +33 +368 +103 +296 +113 +216 +367 +344 +167 +274 +219 +239 +485 +116 +223 +256 +263 +70 +487 +480 +401 +288 +191 +5 +244 +438 +128 +467 +432 +202 +316 +229 +469 +463 +280 +2 +35 +283 +331 +235 +80 +44 +193 +321 +335 +104 +466 +366 +175 +403 +483 +53 +105 +257 +406 +409 +190 +406 +401 +114 +258 +90 +203 +262 +348 +424 +12 +396 +201 +217 +164 +431 +454 +478 +298 +125 +431 +164 +424 +187 +382 +5 +70 +397 +480 +291 +24 +351 +255 +104 +70 +163 +438 +119 +414 +200 +491 +237 +439 +360 +248 +479 +305 +417 +199 +444 +120 +429 +169 +443 +323 +325 +277 +230 +478 +178 +468 +310 +317 +333 +493 +460 +207 +249 +265 +480 +83 +136 +353 +172 +214 +462 +233 +406 +133 +175 +189 +454 +375 +401 +421 +407 +384 +256 +26 +134 +67 +384 +379 +18 +462 +492 +100 +298 +9 +341 +498 +146 +458 +362 +186 +285 +348 +167 +18 +273 +183 +281 +344 +97 +469 +315 +84 +28 +37 +448 +152 +348 +307 +194 +414 +477 +222 +126 +90 +169 +403 +400 +200 +97 From fd5c50bd8d67b6e8704ad656ccca800558f2410f Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Tue, 16 Dec 2014 19:37:23 +0000 Subject: [PATCH 317/339] HIVE-9114 : union all query in cbo test has undefined ordering (Sergey Shelukhin, reviewed by Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1646056 13f79535-47bb-0310-9956-ffa450edef68 --- .../queries/clientpositive/cbo_correctness.q | 7 +++- .../clientpositive/cbo_correctness.q.out | 32 ++++++++++++------- .../clientpositive/tez/cbo_correctness.q.out | 32 ++++++++++++------- 3 files changed, 46 insertions(+), 25 deletions(-) diff --git a/ql/src/test/queries/clientpositive/cbo_correctness.q b/ql/src/test/queries/clientpositive/cbo_correctness.q index f325a3dba941..5e7ec1d87fbd 100644 --- a/ql/src/test/queries/clientpositive/cbo_correctness.q +++ b/ql/src/test/queries/clientpositive/cbo_correctness.q @@ -251,7 +251,12 @@ drop view v3; drop view v4; -- 11. Union All -select * from t1 order by key, c_boolean, value, dt union all select * from t2 order by key, c_boolean, value, dt; +select * from ( +select * from t1 order by key, c_boolean, value, c_int, c_float, dt +union all +select * from t2 order by key, c_boolean, value, c_int, c_float, dt) a +order by key, c_boolean, value, c_int, c_float, dt; + select key from (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r2 where key >=0 order by key; select r2.key from (select key, c_int from (select key, c_int from t1 union all select key, c_int from t3 )r1 union all select key, c_int from t3)r2 join (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r3 on r2.key=r3.key where r3.key >=0 order by r2.key; diff --git a/ql/src/test/results/clientpositive/cbo_correctness.q.out b/ql/src/test/results/clientpositive/cbo_correctness.q.out index c2afc15f5383..f38ca0320401 100644 --- a/ql/src/test/results/clientpositive/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/cbo_correctness.q.out @@ -16719,7 +16719,11 @@ POSTHOOK: type: DROPVIEW POSTHOOK: Input: default@v4 POSTHOOK: Output: default@v4 PREHOOK: query: -- 11. Union All -select * from t1 order by key, c_boolean, value, dt union all select * from t2 order by key, c_boolean, value, dt +select * from ( +select * from t1 order by key, c_boolean, value, c_int, c_float, dt +union all +select * from t2 order by key, c_boolean, value, c_int, c_float, dt) a +order by key, c_boolean, value, c_int, c_float, dt PREHOOK: type: QUERY PREHOOK: Input: default@t1 PREHOOK: Input: default@t1@dt=2014 @@ -16727,7 +16731,11 @@ PREHOOK: Input: default@t2 PREHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### POSTHOOK: query: -- 11. Union All -select * from t1 order by key, c_boolean, value, dt union all select * from t2 order by key, c_boolean, value, dt +select * from ( +select * from t1 order by key, c_boolean, value, c_int, c_float, dt +union all +select * from t2 order by key, c_boolean, value, c_int, c_float, dt) a +order by key, c_boolean, value, c_int, c_float, dt POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t1@dt=2014 @@ -16736,8 +16744,14 @@ POSTHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 +1 1 1 1.0 false 2014 +1 1 1 1.0 false 2014 1 1 1 1.0 false 2014 1 1 1 1.0 false 2014 1 1 1 1.0 true 2014 @@ -16750,16 +16764,6 @@ POSTHOOK: Input: default@t2@dt=2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -null null NULL NULL NULL 2014 -null null NULL NULL NULL 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 -1 1 1 1.0 false 2014 -1 1 1 1.0 false 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 @@ -16767,6 +16771,8 @@ null null NULL NULL NULL 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 2 2 2 2.0 true 2014 2 2 2 2.0 true 2014 2 2 2 2.0 true 2014 @@ -16774,6 +16780,8 @@ null null NULL NULL NULL 2014 2 2 2 2.0 true 2014 null null NULL NULL NULL 2014 null null NULL NULL NULL 2014 +null null NULL NULL NULL 2014 +null null NULL NULL NULL 2014 PREHOOK: query: select key from (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r2 where key >=0 order by key PREHOOK: type: QUERY PREHOOK: Input: default@t1 diff --git a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out index c2afc15f5383..f38ca0320401 100644 --- a/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out +++ b/ql/src/test/results/clientpositive/tez/cbo_correctness.q.out @@ -16719,7 +16719,11 @@ POSTHOOK: type: DROPVIEW POSTHOOK: Input: default@v4 POSTHOOK: Output: default@v4 PREHOOK: query: -- 11. Union All -select * from t1 order by key, c_boolean, value, dt union all select * from t2 order by key, c_boolean, value, dt +select * from ( +select * from t1 order by key, c_boolean, value, c_int, c_float, dt +union all +select * from t2 order by key, c_boolean, value, c_int, c_float, dt) a +order by key, c_boolean, value, c_int, c_float, dt PREHOOK: type: QUERY PREHOOK: Input: default@t1 PREHOOK: Input: default@t1@dt=2014 @@ -16727,7 +16731,11 @@ PREHOOK: Input: default@t2 PREHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### POSTHOOK: query: -- 11. Union All -select * from t1 order by key, c_boolean, value, dt union all select * from t2 order by key, c_boolean, value, dt +select * from ( +select * from t1 order by key, c_boolean, value, c_int, c_float, dt +union all +select * from t2 order by key, c_boolean, value, c_int, c_float, dt) a +order by key, c_boolean, value, c_int, c_float, dt POSTHOOK: type: QUERY POSTHOOK: Input: default@t1 POSTHOOK: Input: default@t1@dt=2014 @@ -16736,8 +16744,14 @@ POSTHOOK: Input: default@t2@dt=2014 #### A masked pattern was here #### 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 + 1 1 1 1.0 true 2014 +1 1 1 1.0 false 2014 +1 1 1 1.0 false 2014 1 1 1 1.0 false 2014 1 1 1 1.0 false 2014 1 1 1 1.0 true 2014 @@ -16750,16 +16764,6 @@ POSTHOOK: Input: default@t2@dt=2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -1 1 1 1.0 true 2014 -null null NULL NULL NULL 2014 -null null NULL NULL NULL 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 - 1 1 1 1.0 true 2014 -1 1 1 1.0 false 2014 -1 1 1 1.0 false 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 @@ -16767,6 +16771,8 @@ null null NULL NULL NULL 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 +1 1 1 1.0 true 2014 2 2 2 2.0 true 2014 2 2 2 2.0 true 2014 2 2 2 2.0 true 2014 @@ -16774,6 +16780,8 @@ null null NULL NULL NULL 2014 2 2 2 2.0 true 2014 null null NULL NULL NULL 2014 null null NULL NULL NULL 2014 +null null NULL NULL NULL 2014 +null null NULL NULL NULL 2014 PREHOOK: query: select key from (select key, c_int from (select * from t1 union all select * from t2 where t2.key >=0)r1 union all select key, c_int from t3)r2 where key >=0 order by key PREHOOK: type: QUERY PREHOOK: Input: default@t1 From b3a53fc9993eb379c2e3623c3167691415ce6cac Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Wed, 17 Dec 2014 00:49:03 +0000 Subject: [PATCH 318/339] HIVE-9108 : Fix for HIVE-8735 is incorrect (stats with long paths) (Sergey Shelukhin, reviewed by Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1646120 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/stats/jdbc/JDBCStatsAggregator.java | 4 +- .../ql/stats/jdbc/JDBCStatsPublisher.java | 39 ++++++++++++++----- .../stats/jdbc/JDBCStatsSetupConstants.java | 3 +- .../hive/ql/stats/jdbc/JDBCStatsUtils.java | 19 ++++++--- 4 files changed, 46 insertions(+), 19 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java index d6067e7a231f..e26031cd3a74 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java @@ -134,7 +134,7 @@ public ResultSet run(PreparedStatement stmt) throws SQLException { } }; - fileID = JDBCStatsUtils.truncateRowId(fileID); + JDBCStatsUtils.validateRowId(fileID); String keyPrefix = Utilities.escapeSqlLike(fileID) + "%"; for (int failures = 0;; failures++) { try { @@ -218,7 +218,7 @@ public Void run(PreparedStatement stmt) throws SQLException { }; try { - rowID = JDBCStatsUtils.truncateRowId(rowID); + JDBCStatsUtils.validateRowId(rowID); String keyPrefix = Utilities.escapeSqlLike(rowID) + "%"; PreparedStatement delStmt = Utilities.prepareWithRetry(conn, diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java index c1621e029b02..32826e740f4e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java @@ -139,10 +139,9 @@ public boolean publishStat(String fileID, Map stats) { + " stats: " + JDBCStatsUtils.getSupportedStatistics()); return false; } - String rowId = JDBCStatsUtils.truncateRowId(fileID); + JDBCStatsUtils.validateRowId(fileID); if (LOG.isInfoEnabled()) { - String truncateSuffix = (rowId != fileID) ? " (from " + fileID + ")" : ""; // object equality - LOG.info("Stats publishing for key " + rowId + truncateSuffix); + LOG.info("Stats publishing for key " + fileID); } Utilities.SQLCommand execUpdate = new Utilities.SQLCommand() { @@ -157,7 +156,7 @@ public Void run(PreparedStatement stmt) throws SQLException { for (int failures = 0;; failures++) { try { - insStmt.setString(1, rowId); + insStmt.setString(1, fileID); for (int i = 0; i < JDBCStatsUtils.getSupportedStatistics().size(); i++) { insStmt.setString(i + 2, stats.get(supportedStatistics.get(i))); } @@ -176,10 +175,10 @@ public Void run(PreparedStatement stmt) throws SQLException { for (i = 0; i < JDBCStatsUtils.getSupportedStatistics().size(); i++) { updStmt.setString(i + 1, stats.get(supportedStatistics.get(i))); } - updStmt.setString(supportedStatistics.size() + 1, rowId); + updStmt.setString(supportedStatistics.size() + 1, fileID); updStmt.setString(supportedStatistics.size() + 2, stats.get(JDBCStatsUtils.getBasicStat())); - updStmt.setString(supportedStatistics.size() + 3, rowId); + updStmt.setString(supportedStatistics.size() + 3, fileID); Utilities.executeWithRetry(execUpdate, updStmt, waitWindow, maxRetries); return true; } catch (SQLRecoverableException ue) { @@ -281,14 +280,36 @@ public boolean init(Configuration hconf) { stmt = conn.createStatement(); stmt.setQueryTimeout(timeout); + // TODO: why is this not done using Hive db scripts? // Check if the table exists DatabaseMetaData dbm = conn.getMetaData(); - rs = dbm.getTables(null, null, JDBCStatsUtils.getStatTableName(), null); + String tableName = JDBCStatsUtils.getStatTableName(); + rs = dbm.getTables(null, null, tableName, null); boolean tblExists = rs.next(); if (!tblExists) { // Table does not exist, create it String createTable = JDBCStatsUtils.getCreate(""); - stmt.executeUpdate(createTable); - } + stmt.executeUpdate(createTable); + } else { + // Upgrade column name to allow for longer paths. + String idColName = JDBCStatsUtils.getIdColumnName(); + int colSize = -1; + try { + rs.close(); + rs = dbm.getColumns(null, null, tableName, idColName); + if (rs.next()) { + colSize = rs.getInt("COLUMN_SIZE"); + if (colSize < JDBCStatsSetupConstants.ID_COLUMN_VARCHAR_SIZE) { + String alterTable = JDBCStatsUtils.getAlterIdColumn(); + stmt.executeUpdate(alterTable); + } + } else { + LOG.warn("Failed to update " + idColName + " - column not found"); + } + } catch (Throwable t) { + LOG.warn("Failed to update " + idColName + " (size " + + (colSize == -1 ? "unknown" : colSize) + ")", t); + } + } } } catch (Exception e) { LOG.error("Error during JDBC initialization. ", e); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsSetupConstants.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsSetupConstants.java index b999f8ae9948..17e109a23e53 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsSetupConstants.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsSetupConstants.java @@ -34,7 +34,6 @@ public final class JDBCStatsSetupConstants { public static final String PART_STAT_RAW_DATA_SIZE_COLUMN_NAME = "RAW_DATA_SIZE"; - // 255 is an old value that we will keep for now; it can be increased to 4000; limits are // MySQL - 65535, SQL Server - 8000, Oracle - 4000, Derby - 32762, Postgres - large. - public static final int ID_COLUMN_VARCHAR_SIZE = 255; + public static final int ID_COLUMN_VARCHAR_SIZE = 4000; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java index 383314bdd99d..59d94d53439f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java @@ -24,7 +24,6 @@ import java.util.Map; import org.apache.hadoop.hive.common.StatsSetupConst; -import org.apache.hadoop.util.hash.MurmurHash; public class JDBCStatsUtils { @@ -136,6 +135,15 @@ public static String getCreate(String comment) { return create; } + /** + * Prepares ALTER TABLE query + */ + public static String getAlterIdColumn() { + return "ALTER TABLE " + JDBCStatsUtils.getStatTableName() + " ALTER COLUMN " + + JDBCStatsUtils.getIdColumnName() + " VARCHAR(" + + JDBCStatsSetupConstants.ID_COLUMN_VARCHAR_SIZE + ")"; + } + /** * Prepares UPDATE statement issued when updating existing statistics */ @@ -195,11 +203,10 @@ public static String getDeleteAggr(String rowID, String comment) { /** * Make sure the row ID fits into the row ID column in the table. - * @param rowId Row ID. - * @return Resulting row ID truncated to correct length, if necessary. */ - public static String truncateRowId(String rowId) { - return (rowId.length() <= JDBCStatsSetupConstants.ID_COLUMN_VARCHAR_SIZE) - ? rowId : Integer.toHexString(MurmurHash.getInstance().hash(rowId.getBytes())); + public static void validateRowId(String rowId) { + if (rowId.length() > JDBCStatsSetupConstants.ID_COLUMN_VARCHAR_SIZE) { + throw new RuntimeException("ID is too big, client should have truncated it: " + rowId); + } } } From e9f67560bef1011b0d3b60439858313c535f18e1 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Thu, 18 Dec 2014 09:54:36 +0000 Subject: [PATCH 319/339] HIVE-8827: Remove SSLv2Hello from list of disabled protocols (Sergio Pena reviewed by Brock Noland) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1646422 13f79535-47bb-0310-9956-ffa450edef68 --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index d0d9f6c4b305..809e4971a7b4 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1589,7 +1589,7 @@ public static enum ConfVars { "table. From 0.12 onwards, they are displayed separately. This flag will let you\n" + "get old behavior, if desired. See, test-case in patch for HIVE-6689."), - HIVE_SSL_PROTOCOL_BLACKLIST("hive.ssl.protocol.blacklist", "SSLv2,SSLv2Hello,SSLv3", + HIVE_SSL_PROTOCOL_BLACKLIST("hive.ssl.protocol.blacklist", "SSLv2,SSLv3", "SSL Versions to disable for all Hive Servers"), // General Thrift configs (Thrift configs common to Metastore and HiveServer2) From 1206890ad52f680f6b694a5a90da2c910e214a74 Mon Sep 17 00:00:00 2001 From: Sergey Shelukhin Date: Fri, 19 Dec 2014 00:48:45 +0000 Subject: [PATCH 320/339] HIVE-9162 : stats19 test is environment-dependant (Sergey Shelukhin, reviewed by Laljo John Pullokkaran) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1646599 13f79535-47bb-0310-9956-ffa450edef68 --- ql/src/test/queries/clientpositive/stats19.q | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ql/src/test/queries/clientpositive/stats19.q b/ql/src/test/queries/clientpositive/stats19.q index b23b1c3f5058..ccdad6b0b922 100644 --- a/ql/src/test/queries/clientpositive/stats19.q +++ b/ql/src/test/queries/clientpositive/stats19.q @@ -17,7 +17,7 @@ set hive.stats.key.prefix.max.length=0; -- The stats key should be hashed since the max length is too small insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; -set hive.stats.key.prefix.max.length=250; +set hive.stats.key.prefix.max.length=4000; -- The stats key should not be hashed since the max length is large enough insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; @@ -41,7 +41,7 @@ insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select desc formatted stats_part partition (ds='2010-04-08', hr = '13'); -set hive.stats.key.prefix.max.length=250; +set hive.stats.key.prefix.max.length=4000; -- The stats key should not be hashed since the max length is large enough insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; @@ -66,7 +66,7 @@ set hive.stats.key.prefix.max.length=0; -- The stats key should be hashed since the max length is too small insert overwrite table stats_part partition (ds='2010-04-08', hr) select key, value, '13' from src; -set hive.stats.key.prefix.max.length=250; +set hive.stats.key.prefix.max.length=4000; -- The stats key should not be hashed since the max length is large enough insert overwrite table stats_part partition (ds='2010-04-08', hr) select key, value, '13' from src; From 31ac4fd4047c25961904ab004de7d9d460dd15e0 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Fri, 19 Dec 2014 19:25:42 +0000 Subject: [PATCH 321/339] HIVE-9166: Place an upper bound for SARG CNF conversion (Prasanth Jayachandran reviewed by Owen O'Malley) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1646837 13f79535-47bb-0310-9956-ffa450edef68 --- .../hive/ql/io/sarg/SearchArgumentImpl.java | 45 +++++++++++++------ .../ql/io/sarg/TestSearchArgumentImpl.java | 39 +++++++++++++--- 2 files changed, 65 insertions(+), 19 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java index eeb9641545ed..f3d198af79d9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java @@ -18,15 +18,9 @@ package org.apache.hadoop.hive.ql.io.sarg; -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Deque; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.io.Input; +import com.esotericsoftware.kryo.io.Output; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringUtils; @@ -56,9 +50,15 @@ import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; -import com.esotericsoftware.kryo.Kryo; -import com.esotericsoftware.kryo.io.Input; -import com.esotericsoftware.kryo.io.Output; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Deque; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * The implementation of SearchArguments. @@ -300,6 +300,8 @@ List getChildren() { } static class ExpressionBuilder { + // max threshold for CNF conversion. having >8 elements in andList will be converted to maybe + private static final int CNF_COMBINATIONS_THRESHOLD = 256; private final List leaves = new ArrayList(); /** @@ -725,14 +727,29 @@ static ExpressionTree convertToCNF(ExpressionTree root) { } } if (!andList.isEmpty()) { - root = new ExpressionTree(ExpressionTree.Operator.AND); - generateAllCombinations(root.children, andList, nonAndList); + if (checkCombinationsThreshold(andList)) { + root = new ExpressionTree(ExpressionTree.Operator.AND); + generateAllCombinations(root.children, andList, nonAndList); + } else { + root = new ExpressionTree(TruthValue.YES_NO_NULL); + } } } } return root; } + private static boolean checkCombinationsThreshold(List andList) { + int numComb = 1; + for (ExpressionTree tree : andList) { + numComb *= tree.children.size(); + if (numComb > CNF_COMBINATIONS_THRESHOLD) { + return false; + } + } + return true; + } + /** * Converts multi-level ands and ors into single level ones. * @param root the expression to flatten diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java b/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java index c91644c9629b..6292a6bc216e 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java @@ -18,12 +18,14 @@ package org.apache.hadoop.hive.ql.io.sarg; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertTrue; + import com.google.common.collect.Sets; + import org.apache.hadoop.hive.common.type.HiveChar; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.common.type.HiveVarchar; -import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf; -import org.apache.hadoop.hive.ql.io.sarg.SearchArgument; import org.apache.hadoop.hive.ql.io.sarg.SearchArgument.TruthValue; import org.apache.hadoop.hive.ql.io.sarg.SearchArgumentImpl.ExpressionBuilder; import org.apache.hadoop.hive.ql.io.sarg.SearchArgumentImpl.ExpressionTree; @@ -38,9 +40,6 @@ import java.util.List; import java.util.Set; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; - /** * These test the SARG implementation. * The xml files were generated by setting hive.optimize.index.filter @@ -176,6 +175,17 @@ public void testFoldMaybe() throws Exception { assertEquals("(and leaf-1)", ExpressionBuilder.foldMaybe(and(or(leaf(2), constant(TruthValue.YES_NO_NULL)), leaf(1))).toString()); + assertEquals("(and leaf-100)", ExpressionBuilder.foldMaybe( + ExpressionBuilder.convertToCNF(and(leaf(100), + or(and(leaf(0), leaf(1)), + and(leaf(2), leaf(3)), + and(leaf(4), leaf(5)), + and(leaf(6), leaf(7)), + and(leaf(8), leaf(9)), + and(leaf(10), leaf(11)), + and(leaf(12), leaf(13)), + and(leaf(14), leaf(15)), + and(leaf(16), leaf(17)))))).toString()); } @Test @@ -237,6 +247,25 @@ public void testCNF() throws Exception { and(leaf(3), leaf(4), leaf(5)), and(leaf(6), leaf(7)), leaf(8))).toString()); + assertEquals("YES_NO_NULL", ExpressionBuilder.convertToCNF(or(and(leaf(0), leaf(1)), + and(leaf(2), leaf(3)), + and(leaf(4), leaf(5)), + and(leaf(6), leaf(7)), + and(leaf(8), leaf(9)), + and(leaf(10), leaf(11)), + and(leaf(12), leaf(13)), + and(leaf(14), leaf(15)), + and(leaf(16), leaf(17)))).toString()); + assertEquals("(and leaf-100 YES_NO_NULL)", ExpressionBuilder.convertToCNF(and(leaf(100), + or(and(leaf(0), leaf(1)), + and(leaf(2), leaf(3)), + and(leaf(4), leaf(5)), + and(leaf(6), leaf(7)), + and(leaf(8), leaf(9)), + and(leaf(10), leaf(11)), + and(leaf(12), leaf(13)), + and(leaf(14), leaf(15)), + and(leaf(16), leaf(17))))).toString()); assertNoSharedNodes(ExpressionBuilder.convertToCNF(or(and(leaf(0), leaf(1), leaf(2)), and(leaf(3), leaf(4), leaf(5)), and(leaf(6), leaf(7)), From 6dd861f5597fa574c1c029eaf31c32f824b7cd26 Mon Sep 17 00:00:00 2001 From: Eugene Koifman Date: Tue, 23 Dec 2014 19:00:43 +0000 Subject: [PATCH 322/339] HIVE-9155 HIVE_LOCKS uses int instead of bigint hive-txn-schema-0.14.0.mssql.sql (Reviewed by Alan Gates) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1647642 13f79535-47bb-0310-9956-ffa450edef68 --- .../mssql/hive-txn-schema-0.14.0.mssql.sql | 102 +++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql b/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql index 944c13ff950f..cba96375536d 100644 --- a/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql +++ b/metastore/scripts/upgrade/mssql/hive-txn-schema-0.14.0.mssql.sql @@ -1 +1,101 @@ --- Licensed to the Apache Software Foundation (ASF) under one or more -- contributor license agreements. See the NOTICE file distributed with -- this work for additional information regarding copyright ownership. -- The ASF licenses this file to You under the Apache License, Version 2.0 -- (the License); you may not use this file except in compliance with -- the License. You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an AS IS BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- -- Tables for transaction management -- CREATE TABLE COMPACTION_QUEUE( CQ_ID int NOT NULL, CQ_DATABASE varchar(128) NOT NULL, CQ_TABLE varchar(128) NOT NULL, CQ_PARTITION varchar(767) NULL, CQ_STATE char(1) NOT NULL, CQ_TYPE char(1) NOT NULL, CQ_WORKER_ID varchar(128) NULL, CQ_START int NULL, CQ_RUN_AS varchar(128) NULL, PRIMARY KEY CLUSTERED ( CQ_ID ASC ) ); CREATE TABLE COMPLETED_TXN_COMPONENTS( CTC_TXNID int NULL, CTC_DATABASE varchar(128) NOT NULL, CTC_TABLE varchar(128) NULL, CTC_PARTITION varchar(767) NULL ); CREATE TABLE HIVE_LOCKS( HL_LOCK_EXT_ID int NOT NULL, HL_LOCK_INT_ID int NOT NULL, HL_TXNID int NULL, HL_DB varchar(128) NOT NULL, HL_TABLE varchar(128) NULL, HL_PARTITION varchar(767) NULL, HL_LOCK_STATE char(1) NOT NULL, HL_LOCK_TYPE char(1) NOT NULL, HL_LAST_HEARTBEAT int NOT NULL, HL_ACQUIRED_AT int NULL, HL_USER varchar(128) NOT NULL, HL_HOST varchar(128) NOT NULL, PRIMARY KEY CLUSTERED ( HL_LOCK_EXT_ID ASC, HL_LOCK_INT_ID ASC ) ); CREATE TABLE NEXT_COMPACTION_QUEUE_ID( NCQ_NEXT int NOT NULL ); INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); CREATE TABLE NEXT_LOCK_ID( NL_NEXT int NOT NULL ); INSERT INTO NEXT_LOCK_ID VALUES(1); CREATE TABLE NEXT_TXN_ID( NTXN_NEXT int NOT NULL ); INSERT INTO NEXT_TXN_ID VALUES(1); CREATE TABLE TXNS( TXN_ID int NOT NULL, TXN_STATE char(1) NOT NULL, TXN_STARTED int NOT NULL, TXN_LAST_HEARTBEAT int NOT NULL, TXN_USER varchar(128) NOT NULL, TXN_HOST varchar(128) NOT NULL, PRIMARY KEY CLUSTERED ( TXN_ID ASC ) ); CREATE TABLE TXN_COMPONENTS( TC_TXNID int NULL, TC_DATABASE varchar(128) NOT NULL, TC_TABLE varchar(128) NULL, TC_PARTITION varchar(767) NULL ); ALTER TABLE TXN_COMPONENTS WITH CHECK ADD FOREIGN KEY(TC_TXNID) REFERENCES TXNS (TXN_ID); \ No newline at end of file +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the License); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an AS IS BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- +-- Tables for transaction management +-- + +CREATE TABLE COMPACTION_QUEUE( + CQ_ID bigint NOT NULL, + CQ_DATABASE varchar(128) NOT NULL, + CQ_TABLE varchar(128) NOT NULL, + CQ_PARTITION varchar(767) NULL, + CQ_STATE char(1) NOT NULL, + CQ_TYPE char(1) NOT NULL, + CQ_WORKER_ID varchar(128) NULL, + CQ_START bigint NULL, + CQ_RUN_AS varchar(128) NULL, +PRIMARY KEY CLUSTERED +( + CQ_ID ASC +) +); + +CREATE TABLE COMPLETED_TXN_COMPONENTS( + CTC_TXNID bigint NULL, + CTC_DATABASE varchar(128) NOT NULL, + CTC_TABLE varchar(128) NULL, + CTC_PARTITION varchar(767) NULL +); + +CREATE TABLE HIVE_LOCKS( + HL_LOCK_EXT_ID bigint NOT NULL, + HL_LOCK_INT_ID bigint NOT NULL, + HL_TXNID bigint NULL, + HL_DB varchar(128) NOT NULL, + HL_TABLE varchar(128) NULL, + HL_PARTITION varchar(767) NULL, + HL_LOCK_STATE char(1) NOT NULL, + HL_LOCK_TYPE char(1) NOT NULL, + HL_LAST_HEARTBEAT bigint NOT NULL, + HL_ACQUIRED_AT bigint NULL, + HL_USER varchar(128) NOT NULL, + HL_HOST varchar(128) NOT NULL, +PRIMARY KEY CLUSTERED +( + HL_LOCK_EXT_ID ASC, + HL_LOCK_INT_ID ASC +) +); + +CREATE TABLE NEXT_COMPACTION_QUEUE_ID( + NCQ_NEXT bigint NOT NULL +); + +INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1); + +CREATE TABLE NEXT_LOCK_ID( + NL_NEXT bigint NOT NULL +); + +INSERT INTO NEXT_LOCK_ID VALUES(1); + +CREATE TABLE NEXT_TXN_ID( + NTXN_NEXT bigint NOT NULL +); + +INSERT INTO NEXT_TXN_ID VALUES(1); + +CREATE TABLE TXNS( + TXN_ID bigint NOT NULL, + TXN_STATE char(1) NOT NULL, + TXN_STARTED bigint NOT NULL, + TXN_LAST_HEARTBEAT bigint NOT NULL, + TXN_USER varchar(128) NOT NULL, + TXN_HOST varchar(128) NOT NULL, +PRIMARY KEY CLUSTERED +( + TXN_ID ASC +) +); + +CREATE TABLE TXN_COMPONENTS( + TC_TXNID bigint NULL, + TC_DATABASE varchar(128) NOT NULL, + TC_TABLE varchar(128) NULL, + TC_PARTITION varchar(767) NULL +); + +ALTER TABLE TXN_COMPONENTS WITH CHECK ADD FOREIGN KEY(TC_TXNID) REFERENCES TXNS (TXN_ID); From 90837d595c9b163dc2e7842aa19082ec013e5228 Mon Sep 17 00:00:00 2001 From: Prasanth J Date: Wed, 24 Dec 2014 01:25:41 +0000 Subject: [PATCH 323/339] HIVE-9168: Vectorized Coalesce for strings is broken (Matt McCline via Prasanth Jayachandran) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1647711 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 1 + .../ql/exec/vector/BytesColumnVector.java | 2 +- .../clientpositive/vector_coalesce_2.q | 44 +++ .../tez/vector_coalesce_2.q.out | 301 ++++++++++++++++++ .../clientpositive/vector_coalesce_2.q.out | 282 ++++++++++++++++ 5 files changed, 629 insertions(+), 1 deletion(-) create mode 100644 ql/src/test/queries/clientpositive/vector_coalesce_2.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_coalesce_2.q.out create mode 100644 ql/src/test/results/clientpositive/vector_coalesce_2.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index be040f894213..d575c6c756f8 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -164,6 +164,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vector_char_4.q,\ vector_char_simple.q,\ vector_coalesce.q,\ + vector_coalesce_2.q,\ vector_count_distinct.q,\ vector_data_types.q,\ vector_decimal_1.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/BytesColumnVector.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/BytesColumnVector.java index c41efb107c26..0552b0c14597 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/BytesColumnVector.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/BytesColumnVector.java @@ -314,7 +314,7 @@ public void fill(byte[] value) { @Override public void setElement(int outElementNum, int inputElementNum, ColumnVector inputVector) { BytesColumnVector in = (BytesColumnVector) inputVector; - setVal(outElementNum, in.vector[inputElementNum], in.start[inputElementNum], in.length[outElementNum]); + setVal(outElementNum, in.vector[inputElementNum], in.start[inputElementNum], in.length[inputElementNum]); } @Override diff --git a/ql/src/test/queries/clientpositive/vector_coalesce_2.q b/ql/src/test/queries/clientpositive/vector_coalesce_2.q new file mode 100644 index 000000000000..b2c46dcec32c --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_coalesce_2.q @@ -0,0 +1,44 @@ +SET hive.vectorized.execution.enabled=false; +set hive.fetch.task.conversion=none; + +create table str_str_orc (str1 string, str2 string) stored as orc; + +insert into table str_str_orc values (null, "X"), ("0", "X"), ("1", "X"), (null, "y"); + +EXPLAIN +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2; + +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2; + +EXPLAIN +SELECT COALESCE(str1, 0) as result +from str_str_orc; + +SELECT COALESCE(str1, 0) as result +from str_str_orc; + +SET hive.vectorized.execution.enabled=true; + +EXPLAIN +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2; + +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2; + +EXPLAIN +SELECT COALESCE(str1, 0) as result +from str_str_orc; + +SELECT COALESCE(str1, 0) as result +from str_str_orc; diff --git a/ql/src/test/results/clientpositive/tez/vector_coalesce_2.q.out b/ql/src/test/results/clientpositive/tez/vector_coalesce_2.q.out new file mode 100644 index 000000000000..a43303f0b53f --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_coalesce_2.q.out @@ -0,0 +1,301 @@ +PREHOOK: query: create table str_str_orc (str1 string, str2 string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@str_str_orc +POSTHOOK: query: create table str_str_orc (str1 string, str2 string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@str_str_orc +PREHOOK: query: insert into table str_str_orc values (null, "X"), ("0", "X"), ("1", "X"), (null, "y") +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@str_str_orc +POSTHOOK: query: insert into table str_str_orc values (null, "X"), ("0", "X"), ("1", "X"), (null, "y") +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@str_str_orc +POSTHOOK: Lineage: str_str_orc.str1 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: str_str_orc.str2 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: EXPLAIN +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: str_str_orc + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: str2 (type: string), UDFToInteger(COALESCE(str1,0)) (type: int) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(_col1) + keys: _col0 (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), round((UDFToDouble(_col1) / 60.0), 2) (type: double) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +PREHOOK: type: QUERY +PREHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +X 0.02 +y 0.0 +PREHOOK: query: EXPLAIN +SELECT COALESCE(str1, 0) as result +from str_str_orc +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT COALESCE(str1, 0) as result +from str_str_orc +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: str_str_orc + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: COALESCE(str1,0) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT COALESCE(str1, 0) as result +from str_str_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT COALESCE(str1, 0) as result +from str_str_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +0 +0 +1 +0 +PREHOOK: query: EXPLAIN +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: str_str_orc + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: str2 (type: string), UDFToInteger(COALESCE(str1,0)) (type: int) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(_col1) + keys: _col0 (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), round((UDFToDouble(_col1) / 60.0), 2) (type: double) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +PREHOOK: type: QUERY +PREHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +X 0.02 +y 0.0 +PREHOOK: query: EXPLAIN +SELECT COALESCE(str1, 0) as result +from str_str_orc +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT COALESCE(str1, 0) as result +from str_str_orc +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 #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: str_str_orc + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: COALESCE(str1,0) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT COALESCE(str1, 0) as result +from str_str_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT COALESCE(str1, 0) as result +from str_str_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +0 +0 +1 +0 diff --git a/ql/src/test/results/clientpositive/vector_coalesce_2.q.out b/ql/src/test/results/clientpositive/vector_coalesce_2.q.out new file mode 100644 index 000000000000..a496f52ed768 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_coalesce_2.q.out @@ -0,0 +1,282 @@ +PREHOOK: query: create table str_str_orc (str1 string, str2 string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@str_str_orc +POSTHOOK: query: create table str_str_orc (str1 string, str2 string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@str_str_orc +PREHOOK: query: insert into table str_str_orc values (null, "X"), ("0", "X"), ("1", "X"), (null, "y") +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@str_str_orc +POSTHOOK: query: insert into table str_str_orc values (null, "X"), ("0", "X"), ("1", "X"), (null, "y") +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@str_str_orc +POSTHOOK: Lineage: str_str_orc.str1 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: str_str_orc.str2 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: EXPLAIN +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: str_str_orc + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: str2 (type: string), UDFToInteger(COALESCE(str1,0)) (type: int) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(_col1) + keys: _col0 (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), round((UDFToDouble(_col1) / 60.0), 2) (type: double) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +PREHOOK: type: QUERY +PREHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +X 0.02 +y 0.0 +PREHOOK: query: EXPLAIN +SELECT COALESCE(str1, 0) as result +from str_str_orc +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT COALESCE(str1, 0) as result +from str_str_orc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: str_str_orc + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: COALESCE(str1,0) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT COALESCE(str1, 0) as result +from str_str_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT COALESCE(str1, 0) as result +from str_str_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +0 +0 +1 +0 +PREHOOK: query: EXPLAIN +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: str_str_orc + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: str2 (type: string), UDFToInteger(COALESCE(str1,0)) (type: int) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(_col1) + keys: _col0 (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Execution mode: vectorized + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + keys: KEY._col0 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), round((UDFToDouble(_col1) / 60.0), 2) (type: double) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 255 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +PREHOOK: type: QUERY +PREHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT + str2, ROUND(sum(cast(COALESCE(str1, 0) as int))/60, 2) as result +from str_str_orc +GROUP BY str2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +X 0.02 +y 0.0 +PREHOOK: query: EXPLAIN +SELECT COALESCE(str1, 0) as result +from str_str_orc +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT COALESCE(str1, 0) as result +from str_str_orc +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: str_str_orc + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: COALESCE(str1,0) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 4 Data size: 510 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT COALESCE(str1, 0) as result +from str_str_orc +PREHOOK: type: QUERY +PREHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +POSTHOOK: query: SELECT COALESCE(str1, 0) as result +from str_str_orc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@str_str_orc +#### A masked pattern was here #### +0 +0 +1 +0 From d2dfacd766fbb57f927fcf26907de42548b25ea0 Mon Sep 17 00:00:00 2001 From: Vikram Dixit K Date: Tue, 30 Dec 2014 22:38:28 +0000 Subject: [PATCH 324/339] HIVE-9205: Change default tez install directory to use /tmp instead of /user and create the directory if it does not exist (Vikram Dixit K, reviewed by Prasanth J and Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1648620 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/ql/exec/tez/DagUtils.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java index 0e326cf87cc0..e9b98fa90409 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java @@ -771,9 +771,14 @@ public Path getDefaultDestDir(Configuration conf) throws LoginException, IOExcep String hdfsDirPathStr = jarPathStr; Path hdfsDirPath = new Path(hdfsDirPathStr); - FileStatus fstatus = fs.getFileStatus(hdfsDirPath); - if (!fstatus.isDir()) { - throw new IOException(ErrorMsg.INVALID_DIR.format(hdfsDirPath.toString())); + try { + FileStatus fstatus = fs.getFileStatus(hdfsDirPath); + if (!fstatus.isDir()) { + throw new IOException(ErrorMsg.INVALID_DIR.format(hdfsDirPath.toString())); + } + } catch (FileNotFoundException e) { + // directory does not exist, create it + fs.mkdirs(hdfsDirPath); } Path retPath = new Path(hdfsDirPath.toString() + "/.hiveJars"); From e3bae67a471b938f3c1f369583e23b7264847303 Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Tue, 6 Jan 2015 23:44:59 +0000 Subject: [PATCH 325/339] HIVE-6679: HiveServer2 should support configurable the server side socket timeout and keepalive for various transports types where applicable (Navis Ryu, Vaibhav Gumashta reviewed by Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1649974 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hive/conf/HiveConf.java | 9 +++- .../hive/service/auth/HiveAuthFactory.java | 47 +++++++++++++++---- .../cli/thrift/ThriftBinaryCLIService.java | 8 +++- 3 files changed, 51 insertions(+), 13 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 809e4971a7b4..db7ffe3d68b4 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -1617,7 +1617,7 @@ public static enum ConfVars { HIVE_SERVER2_THRIFT_BIND_HOST("hive.server2.thrift.bind.host", "", "Bind host on which to run the HiveServer2 Thrift service."), - // http (over thrift) transport settings + // Http (over thrift) transport settings HIVE_SERVER2_THRIFT_HTTP_PORT("hive.server2.thrift.http.port", 10001, "Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'http'."), HIVE_SERVER2_THRIFT_HTTP_PATH("hive.server2.thrift.http.path", "cliservice", @@ -1634,7 +1634,12 @@ public static enum ConfVars { "Keepalive time for an idle http worker thread. When the number of workers exceeds min workers, " + "excessive threads are killed after this time interval."), - // binary transport settings + // Binary (TCP) transport settings + HIVE_SERVER2_TCP_SOCKET_BLOCKING_TIMEOUT("hive.server2.tcp.socket.blocking.timeout", "0s", + new TimeValidator(TimeUnit.SECONDS),"Timeout (in seconds) on blocking socket operations (accept, read). " + + "0 means infinite timeout."), + HIVE_SERVER2_TCP_SOCKET_KEEPALIVE("hive.server2.tcp.socket.keepalive", true, + "Whether to send tcp socket keepalive probe"), HIVE_SERVER2_THRIFT_PORT("hive.server2.thrift.port", 10000, "Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'."), HIVE_SERVER2_THRIFT_SASL_QOP("hive.server2.thrift.sasl.qop", "auth", diff --git a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index b4fc77b5d0ee..f8daf1a1291a 100644 --- a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -19,6 +19,8 @@ import java.io.IOException; import java.net.InetSocketAddress; +import java.net.ServerSocket; +import java.net.SocketException; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; @@ -194,8 +196,8 @@ public static TTransport getSSLSocket(String host, int port, int loginTimeout, return TSSLTransportFactory.getClientSocket(host, port, loginTimeout, params); } - public static TServerSocket getServerSocket(String hiveHost, int portNum) - throws TTransportException { + public static TServerSocket getServerSocket(String hiveHost, int portNum, int socketTimeout, + boolean keepAlive) throws TTransportException { InetSocketAddress serverAddress; if (hiveHost == null || hiveHost.isEmpty()) { // Wildcard bind @@ -203,14 +205,17 @@ public static TServerSocket getServerSocket(String hiveHost, int portNum) } else { serverAddress = new InetSocketAddress(hiveHost, portNum); } - return new TServerSocket(serverAddress); + TServerSocket serverSocket = new TServerSocket(serverAddress, socketTimeout); + if (keepAlive) { + serverSocket = new TServerSocketKeepAlive(serverSocket.getServerSocket()); + } + return serverSocket; } public static TServerSocket getServerSSLSocket(String hiveHost, int portNum, String keyStorePath, - String keyStorePassWord, List sslVersionBlacklist) throws TTransportException, - UnknownHostException { - TSSLTransportFactory.TSSLTransportParameters params = - new TSSLTransportFactory.TSSLTransportParameters(); + String keyStorePassWord, List sslVersionBlacklist, int socketTimeout, + boolean keepAlive) throws TTransportException, UnknownHostException { + TSSLTransportFactory.TSSLTransportParameters params = new TSSLTransportFactory.TSSLTransportParameters(); params.setKeyStore(keyStorePath, keyStorePassWord); InetSocketAddress serverAddress; if (hiveHost == null || hiveHost.isEmpty()) { @@ -219,8 +224,8 @@ public static TServerSocket getServerSSLSocket(String hiveHost, int portNum, Str } else { serverAddress = new InetSocketAddress(hiveHost, portNum); } - TServerSocket thriftServerSocket = - TSSLTransportFactory.getServerSocket(portNum, 0, serverAddress.getAddress(), params); + TServerSocket thriftServerSocket = TSSLTransportFactory.getServerSocket(portNum, socketTimeout, + serverAddress.getAddress(), params); if (thriftServerSocket.getServerSocket() instanceof SSLServerSocket) { List sslVersionBlacklistLocal = new ArrayList(); for (String sslVersion : sslVersionBlacklist) { @@ -239,6 +244,9 @@ public static TServerSocket getServerSSLSocket(String hiveHost, int portNum, Str LOG.info("SSL Server Socket Enabled Protocols: " + Arrays.toString(sslServerSocket.getEnabledProtocols())); } + if (keepAlive) { + thriftServerSocket = new TServerSocketKeepAlive(thriftServerSocket.getServerSocket()); + } return thriftServerSocket; } @@ -325,4 +333,25 @@ public static void verifyProxyAccess(String realUser, String proxyUser, String i } } + /** + * TServerSocketKeepAlive - like TServerSocket, but will enable keepalive for + * accepted sockets. + * + */ + static class TServerSocketKeepAlive extends TServerSocket { + public TServerSocketKeepAlive(ServerSocket serverSocket) throws TTransportException { + super(serverSocket); + } + + @Override + protected TSocket acceptImpl() throws TTransportException { + TSocket ts = super.acceptImpl(); + try { + ts.getSocket().setKeepAlive(true); + } catch (SocketException e) { + throw new TTransportException(e); + } + return ts; + } + } } diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftBinaryCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftBinaryCLIService.java index 6e373194f9ea..47208bf000fe 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftBinaryCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftBinaryCLIService.java @@ -58,12 +58,16 @@ public void run() { TTransportFactory transportFactory = hiveAuthFactory.getAuthTransFactory(); TProcessorFactory processorFactory = hiveAuthFactory.getAuthProcFactory(this); TServerSocket serverSocket = null; + int socketTimeout = + (int) hiveConf.getTimeVar(ConfVars.HIVE_SERVER2_TCP_SOCKET_BLOCKING_TIMEOUT, + TimeUnit.SECONDS); + boolean keepAlive = hiveConf.getBoolVar(ConfVars.HIVE_SERVER2_TCP_SOCKET_KEEPALIVE); List sslVersionBlacklist = new ArrayList(); for (String sslVersion : hiveConf.getVar(ConfVars.HIVE_SSL_PROTOCOL_BLACKLIST).split(",")) { sslVersionBlacklist.add(sslVersion); } if (!hiveConf.getBoolVar(ConfVars.HIVE_SERVER2_USE_SSL)) { - serverSocket = HiveAuthFactory.getServerSocket(hiveHost, portNum); + serverSocket = HiveAuthFactory.getServerSocket(hiveHost, portNum, socketTimeout, keepAlive); } else { String keyStorePath = hiveConf.getVar(ConfVars.HIVE_SERVER2_SSL_KEYSTORE_PATH).trim(); if (keyStorePath.isEmpty()) { @@ -73,7 +77,7 @@ public void run() { String keyStorePassword = ShimLoader.getHadoopShims().getPassword(hiveConf, HiveConf.ConfVars.HIVE_SERVER2_SSL_KEYSTORE_PASSWORD.varname); serverSocket = HiveAuthFactory.getServerSSLSocket(hiveHost, portNum, keyStorePath, - keyStorePassword, sslVersionBlacklist); + keyStorePassword, sslVersionBlacklist, socketTimeout, keepAlive); } // Server args From 52021acef1a58f3da6bcf63a7d8bd5255c1e2915 Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Fri, 9 Jan 2015 09:23:07 +0000 Subject: [PATCH 326/339] HIVE-9249: Vectorization: Join involving CHAR/VARCHAR fails during execution. (Matt McCline, reviewed by Gopal V) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1650462 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 2 + .../vector/VectorColumnAssignFactory.java | 17 +- .../clientpositive/vector_char_mapjoin1.q | 54 ++ .../clientpositive/vector_varchar_mapjoin1.q | 54 ++ .../tez/vector_char_mapjoin1.q.out | 463 ++++++++++++++++++ .../tez/vector_varchar_mapjoin1.q.out | 459 +++++++++++++++++ .../clientpositive/vector_char_mapjoin1.q.out | 463 ++++++++++++++++++ .../vector_varchar_mapjoin1.q.out | 459 +++++++++++++++++ 8 files changed, 1969 insertions(+), 2 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/vector_char_mapjoin1.q create mode 100644 ql/src/test/queries/clientpositive/vector_varchar_mapjoin1.q create mode 100644 ql/src/test/results/clientpositive/tez/vector_char_mapjoin1.q.out create mode 100644 ql/src/test/results/clientpositive/tez/vector_varchar_mapjoin1.q.out create mode 100644 ql/src/test/results/clientpositive/vector_char_mapjoin1.q.out create mode 100644 ql/src/test/results/clientpositive/vector_varchar_mapjoin1.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index d575c6c756f8..94ab56b862cb 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -162,6 +162,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vector_bucket.q,\ vector_cast_constant.q,\ vector_char_4.q,\ + vector_char_mapjoin1.q,\ vector_char_simple.q,\ vector_coalesce.q,\ vector_coalesce_2.q,\ @@ -196,6 +197,7 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ vector_reduce_groupby_decimal.q,\ vector_string_concat.q,\ vector_varchar_4.q,\ + vector_varchar_mapjoin1.q,\ vector_varchar_simple.q,\ vectorization_0.q,\ vectorization_1.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java index 24b34b196380..c915f728fc9b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnAssignFactory.java @@ -30,7 +30,9 @@ import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DateWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; +import org.apache.hadoop.hive.serde2.io.HiveCharWritable; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import org.apache.hadoop.hive.serde2.io.HiveVarcharWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; import org.apache.hadoop.hive.serde2.io.TimestampWritable; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; @@ -414,7 +416,13 @@ public void assignObjectValue(Object val, int destIndex) throws HiveException { if (val == null) { assignNull(destIndex); } else { - HiveVarchar hiveVarchar = (HiveVarchar) val; + // We store VARCHAR type stripped of pads. + HiveVarchar hiveVarchar; + if (val instanceof HiveVarchar) { + hiveVarchar = (HiveVarchar) val; + } else { + hiveVarchar = ((HiveVarcharWritable) val).getHiveVarchar(); + } byte[] bytes = hiveVarchar.getValue().getBytes(); assignBytes(bytes, 0, bytes.length, destIndex); } @@ -429,7 +437,12 @@ public void assignObjectValue(Object val, int destIndex) throws HiveException { assignNull(destIndex); } else { // We store CHAR type stripped of pads. - HiveChar hiveChar = (HiveChar) val; + HiveChar hiveChar; + if (val instanceof HiveChar) { + hiveChar = (HiveChar) val; + } else { + hiveChar = ((HiveCharWritable) val).getHiveChar(); + } byte[] bytes = hiveChar.getStrippedValue().getBytes(); assignBytes(bytes, 0, bytes.length, destIndex); } diff --git a/ql/src/test/queries/clientpositive/vector_char_mapjoin1.q b/ql/src/test/queries/clientpositive/vector_char_mapjoin1.q new file mode 100644 index 000000000000..cb666747ae1c --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_char_mapjoin1.q @@ -0,0 +1,54 @@ +SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=none; +SET hive.auto.convert.join=true; +SET hive.auto.convert.join.noconditionaltask=true; +SET hive.auto.convert.join.noconditionaltask.size=1000000000; + +drop table if exists char_join1_vc1; +drop table if exists char_join1_vc2; +drop table if exists char_join1_str; +drop table if exists char_join1_vc1_orc; +drop table if exists char_join1_vc2_orc; +drop table if exists char_join1_str_orc; + +create table char_join1_vc1 ( + c1 int, + c2 char(10) +); + +create table char_join1_vc2 ( + c1 int, + c2 char(20) +); + +create table char_join1_str ( + c1 int, + c2 string +); + +load data local inpath '../../data/files/vc1.txt' into table char_join1_vc1; +load data local inpath '../../data/files/vc1.txt' into table char_join1_vc2; +load data local inpath '../../data/files/vc1.txt' into table char_join1_str; + +create table char_join1_vc1_orc stored as orc as select * from char_join1_vc1; +create table char_join1_vc2_orc stored as orc as select * from char_join1_vc2; +create table char_join1_str_orc stored as orc as select * from char_join1_str; + +-- Join char with same length char +explain select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1; +select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1; + +-- Join char with different length char +explain select * from char_join1_vc1_orc a join char_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1; +select * from char_join1_vc1_orc a join char_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1; + +-- Join char with string +explain select * from char_join1_vc1_orc a join char_join1_str_orc b on (a.c2 = b.c2) order by a.c1; +select * from char_join1_vc1_orc a join char_join1_str_orc b on (a.c2 = b.c2) order by a.c1; + +drop table char_join1_vc1; +drop table char_join1_vc2; +drop table char_join1_str; +drop table char_join1_vc1_orc; +drop table char_join1_vc2_orc; +drop table char_join1_str_orc; diff --git a/ql/src/test/queries/clientpositive/vector_varchar_mapjoin1.q b/ql/src/test/queries/clientpositive/vector_varchar_mapjoin1.q new file mode 100644 index 000000000000..2aade4e209c8 --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_varchar_mapjoin1.q @@ -0,0 +1,54 @@ +SET hive.vectorized.execution.enabled=true; +set hive.fetch.task.conversion=none; +SET hive.auto.convert.join=true; +SET hive.auto.convert.join.noconditionaltask=true; +SET hive.auto.convert.join.noconditionaltask.size=1000000000; + +drop table if exists varchar_join1_vc1; +drop table if exists varchar_join1_vc2; +drop table if exists varchar_join1_str; +drop table if exists varchar_join1_vc1_orc; +drop table if exists varchar_join1_vc2_orc; +drop table if exists varchar_join1_str_orc; + +create table varchar_join1_vc1 ( + c1 int, + c2 varchar(10) +); + +create table varchar_join1_vc2 ( + c1 int, + c2 varchar(20) +); + +create table varchar_join1_str ( + c1 int, + c2 string +); + +load data local inpath '../../data/files/vc1.txt' into table varchar_join1_vc1; +load data local inpath '../../data/files/vc1.txt' into table varchar_join1_vc2; +load data local inpath '../../data/files/vc1.txt' into table varchar_join1_str; + +create table varchar_join1_vc1_orc stored as orc as select * from varchar_join1_vc1; +create table varchar_join1_vc2_orc stored as orc as select * from varchar_join1_vc2; +create table varchar_join1_str_orc stored as orc as select * from varchar_join1_str; + +-- Join varchar with same length varchar +explain select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1; +select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1; + +-- Join varchar with different length varchar +explain select * from varchar_join1_vc1_orc a join varchar_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1; +select * from varchar_join1_vc1_orc a join varchar_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1; + +-- Join varchar with string +explain select * from varchar_join1_vc1_orc a join varchar_join1_str_orc b on (a.c2 = b.c2) order by a.c1; +select * from varchar_join1_vc1_orc a join varchar_join1_str_orc b on (a.c2 = b.c2) order by a.c1; + +drop table varchar_join1_vc1; +drop table varchar_join1_vc2; +drop table varchar_join1_str; +drop table varchar_join1_vc1_orc; +drop table varchar_join1_vc2_orc; +drop table varchar_join1_str_orc; diff --git a/ql/src/test/results/clientpositive/tez/vector_char_mapjoin1.q.out b/ql/src/test/results/clientpositive/tez/vector_char_mapjoin1.q.out new file mode 100644 index 000000000000..0377504694db --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_char_mapjoin1.q.out @@ -0,0 +1,463 @@ +PREHOOK: query: drop table if exists char_join1_vc1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_vc1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists char_join1_vc2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_vc2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists char_join1_str +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_str +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists char_join1_vc1_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_vc1_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists char_join1_vc2_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_vc2_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists char_join1_str_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_str_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table char_join1_vc1 ( + c1 int, + c2 char(10) +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_vc1 +POSTHOOK: query: create table char_join1_vc1 ( + c1 int, + c2 char(10) +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_vc1 +PREHOOK: query: create table char_join1_vc2 ( + c1 int, + c2 char(20) +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_vc2 +POSTHOOK: query: create table char_join1_vc2 ( + c1 int, + c2 char(20) +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_vc2 +PREHOOK: query: create table char_join1_str ( + c1 int, + c2 string +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_str +POSTHOOK: query: create table char_join1_str ( + c1 int, + c2 string +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_str +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_vc1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@char_join1_vc1 +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_vc1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@char_join1_vc1 +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_vc2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@char_join1_vc2 +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_vc2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@char_join1_vc2 +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_str +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@char_join1_str +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_str +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@char_join1_str +PREHOOK: query: create table char_join1_vc1_orc stored as orc as select * from char_join1_vc1 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@char_join1_vc1 +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_vc1_orc +POSTHOOK: query: create table char_join1_vc1_orc stored as orc as select * from char_join1_vc1 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@char_join1_vc1 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_vc1_orc +PREHOOK: query: create table char_join1_vc2_orc stored as orc as select * from char_join1_vc2 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@char_join1_vc2 +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_vc2_orc +POSTHOOK: query: create table char_join1_vc2_orc stored as orc as select * from char_join1_vc2 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@char_join1_vc2 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_vc2_orc +PREHOOK: query: create table char_join1_str_orc stored as orc as select * from char_join1_str +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@char_join1_str +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_str_orc +POSTHOOK: query: create table char_join1_str_orc stored as orc as select * from char_join1_str +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@char_join1_str +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_str_orc +PREHOOK: query: -- Join char with same length char +explain select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join char with same length char +explain select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 1 <- Map 3 (BROADCAST_EDGE) + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 196 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 c2 (type: char(10)) + 1 c2 (type: char(10)) + outputColumnNames: _col0, _col1, _col5, _col6 + input vertices: + 1 Map 3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: char(10)), _col5 (type: int), _col6 (type: char(10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: char(10)), _col2 (type: int), _col3 (type: char(10)) + Execution mode: vectorized + Map 3 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 196 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: c2 (type: char(10)) + sort order: + + Map-reduce partition columns: c2 (type: char(10)) + Statistics: Num rows: 2 Data size: 196 Basic stats: COMPLETE Column stats: NONE + value expressions: c1 (type: int) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: char(10)), VALUE._col1 (type: int), VALUE._col2 (type: char(10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@char_join1_vc1_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@char_join1_vc1_orc +#### A masked pattern was here #### +1 abc 2 abc +1 abc 1 abc +2 abc 2 abc +2 abc 1 abc +3 abc 3 abc +PREHOOK: query: -- Join char with different length char +explain select * from char_join1_vc1_orc a join char_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join char with different length char +explain select * from char_join1_vc1_orc a join char_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 2 <- Map 1 (BROADCAST_EDGE) + Reducer 3 <- Map 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 196 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: c2 (type: char(10)) + sort order: + + Map-reduce partition columns: c2 (type: char(10)) + Statistics: Num rows: 2 Data size: 196 Basic stats: COMPLETE Column stats: NONE + value expressions: c1 (type: int) + Execution mode: vectorized + Map 2 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 324 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 216 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 c2 (type: char(10)) + 1 c2 (type: char(20)) + outputColumnNames: _col0, _col1, _col5, _col6 + input vertices: + 0 Map 1 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: char(10)), _col5 (type: int), _col6 (type: char(20)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: char(10)), _col2 (type: int), _col3 (type: char(20)) + Execution mode: vectorized + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: char(10)), VALUE._col1 (type: int), VALUE._col2 (type: char(20)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from char_join1_vc1_orc a join char_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@char_join1_vc1_orc +PREHOOK: Input: default@char_join1_vc2_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from char_join1_vc1_orc a join char_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@char_join1_vc1_orc +POSTHOOK: Input: default@char_join1_vc2_orc +#### A masked pattern was here #### +1 abc 2 abc +1 abc 1 abc +2 abc 2 abc +2 abc 1 abc +3 abc 3 abc +PREHOOK: query: -- Join char with string +explain select * from char_join1_vc1_orc a join char_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join char with string +explain select * from char_join1_vc1_orc a join char_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 1 <- Map 3 (BROADCAST_EDGE) + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: UDFToString(c2) is not null (type: boolean) + Statistics: Num rows: 2 Data size: 196 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 UDFToString(c2) (type: string) + 1 c2 (type: string) + outputColumnNames: _col0, _col1, _col5, _col6 + input vertices: + 1 Map 3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: char(10)), _col5 (type: int), _col6 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: char(10)), _col2 (type: int), _col3 (type: string) + Map 3 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: c2 (type: string) + sort order: + + Map-reduce partition columns: c2 (type: string) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + value expressions: c1 (type: int) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: char(10)), VALUE._col1 (type: int), VALUE._col2 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from char_join1_vc1_orc a join char_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@char_join1_str_orc +PREHOOK: Input: default@char_join1_vc1_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from char_join1_vc1_orc a join char_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@char_join1_str_orc +POSTHOOK: Input: default@char_join1_vc1_orc +#### A masked pattern was here #### +1 abc 1 abc +2 abc 1 abc +3 abc 3 abc +PREHOOK: query: drop table char_join1_vc1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_vc1 +PREHOOK: Output: default@char_join1_vc1 +POSTHOOK: query: drop table char_join1_vc1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_vc1 +POSTHOOK: Output: default@char_join1_vc1 +PREHOOK: query: drop table char_join1_vc2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_vc2 +PREHOOK: Output: default@char_join1_vc2 +POSTHOOK: query: drop table char_join1_vc2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_vc2 +POSTHOOK: Output: default@char_join1_vc2 +PREHOOK: query: drop table char_join1_str +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_str +PREHOOK: Output: default@char_join1_str +POSTHOOK: query: drop table char_join1_str +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_str +POSTHOOK: Output: default@char_join1_str +PREHOOK: query: drop table char_join1_vc1_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_vc1_orc +PREHOOK: Output: default@char_join1_vc1_orc +POSTHOOK: query: drop table char_join1_vc1_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_vc1_orc +POSTHOOK: Output: default@char_join1_vc1_orc +PREHOOK: query: drop table char_join1_vc2_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_vc2_orc +PREHOOK: Output: default@char_join1_vc2_orc +POSTHOOK: query: drop table char_join1_vc2_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_vc2_orc +POSTHOOK: Output: default@char_join1_vc2_orc +PREHOOK: query: drop table char_join1_str_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_str_orc +PREHOOK: Output: default@char_join1_str_orc +POSTHOOK: query: drop table char_join1_str_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_str_orc +POSTHOOK: Output: default@char_join1_str_orc diff --git a/ql/src/test/results/clientpositive/tez/vector_varchar_mapjoin1.q.out b/ql/src/test/results/clientpositive/tez/vector_varchar_mapjoin1.q.out new file mode 100644 index 000000000000..f3db1fbf134b --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/vector_varchar_mapjoin1.q.out @@ -0,0 +1,459 @@ +PREHOOK: query: drop table if exists varchar_join1_vc1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_vc1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists varchar_join1_vc2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_vc2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists varchar_join1_str +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_str +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists varchar_join1_vc1_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_vc1_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists varchar_join1_vc2_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_vc2_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists varchar_join1_str_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_str_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table varchar_join1_vc1 ( + c1 int, + c2 varchar(10) +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_vc1 +POSTHOOK: query: create table varchar_join1_vc1 ( + c1 int, + c2 varchar(10) +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_vc1 +PREHOOK: query: create table varchar_join1_vc2 ( + c1 int, + c2 varchar(20) +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_vc2 +POSTHOOK: query: create table varchar_join1_vc2 ( + c1 int, + c2 varchar(20) +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_vc2 +PREHOOK: query: create table varchar_join1_str ( + c1 int, + c2 string +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_str +POSTHOOK: query: create table varchar_join1_str ( + c1 int, + c2 string +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_str +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_vc1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@varchar_join1_vc1 +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_vc1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@varchar_join1_vc1 +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_vc2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@varchar_join1_vc2 +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_vc2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@varchar_join1_vc2 +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_str +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@varchar_join1_str +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_str +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@varchar_join1_str +PREHOOK: query: create table varchar_join1_vc1_orc stored as orc as select * from varchar_join1_vc1 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@varchar_join1_vc1 +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_vc1_orc +POSTHOOK: query: create table varchar_join1_vc1_orc stored as orc as select * from varchar_join1_vc1 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@varchar_join1_vc1 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_vc1_orc +PREHOOK: query: create table varchar_join1_vc2_orc stored as orc as select * from varchar_join1_vc2 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@varchar_join1_vc2 +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_vc2_orc +POSTHOOK: query: create table varchar_join1_vc2_orc stored as orc as select * from varchar_join1_vc2 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@varchar_join1_vc2 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_vc2_orc +PREHOOK: query: create table varchar_join1_str_orc stored as orc as select * from varchar_join1_str +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@varchar_join1_str +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_str_orc +POSTHOOK: query: create table varchar_join1_str_orc stored as orc as select * from varchar_join1_str +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@varchar_join1_str +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_str_orc +PREHOOK: query: -- Join varchar with same length varchar +explain select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join varchar with same length varchar +explain select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 1 <- Map 3 (BROADCAST_EDGE) + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 c2 (type: varchar(10)) + 1 c2 (type: varchar(10)) + outputColumnNames: _col0, _col1, _col5, _col6 + input vertices: + 1 Map 3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: varchar(10)), _col5 (type: int), _col6 (type: varchar(10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: varchar(10)), _col2 (type: int), _col3 (type: varchar(10)) + Execution mode: vectorized + Map 3 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: c2 (type: varchar(10)) + sort order: + + Map-reduce partition columns: c2 (type: varchar(10)) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + value expressions: c1 (type: int) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: varchar(10)), VALUE._col1 (type: int), VALUE._col2 (type: varchar(10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@varchar_join1_vc1_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@varchar_join1_vc1_orc +#### A masked pattern was here #### +1 abc 1 abc +2 abc 2 abc +3 abc 3 abc +PREHOOK: query: -- Join varchar with different length varchar +explain select * from varchar_join1_vc1_orc a join varchar_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join varchar with different length varchar +explain select * from varchar_join1_vc1_orc a join varchar_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 1 <- Map 3 (BROADCAST_EDGE) + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 c2 (type: varchar(10)) + 1 c2 (type: varchar(20)) + outputColumnNames: _col0, _col1, _col5, _col6 + input vertices: + 1 Map 3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: varchar(10)), _col5 (type: int), _col6 (type: varchar(20)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: varchar(10)), _col2 (type: int), _col3 (type: varchar(20)) + Execution mode: vectorized + Map 3 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: c2 (type: varchar(20)) + sort order: + + Map-reduce partition columns: c2 (type: varchar(20)) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + value expressions: c1 (type: int) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: varchar(10)), VALUE._col1 (type: int), VALUE._col2 (type: varchar(20)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@varchar_join1_vc1_orc +PREHOOK: Input: default@varchar_join1_vc2_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@varchar_join1_vc1_orc +POSTHOOK: Input: default@varchar_join1_vc2_orc +#### A masked pattern was here #### +1 abc 1 abc +2 abc 2 abc +3 abc 3 abc +PREHOOK: query: -- Join varchar with string +explain select * from varchar_join1_vc1_orc a join varchar_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join varchar with string +explain select * from varchar_join1_vc1_orc a join varchar_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 1 <- Map 3 (BROADCAST_EDGE) + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: UDFToString(c2) is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 UDFToString(c2) (type: string) + 1 c2 (type: string) + outputColumnNames: _col0, _col1, _col5, _col6 + input vertices: + 1 Map 3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: varchar(10)), _col5 (type: int), _col6 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: varchar(10)), _col2 (type: int), _col3 (type: string) + Map 3 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: c2 (type: string) + sort order: + + Map-reduce partition columns: c2 (type: string) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + value expressions: c1 (type: int) + Execution mode: vectorized + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: varchar(10)), VALUE._col1 (type: int), VALUE._col2 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@varchar_join1_str_orc +PREHOOK: Input: default@varchar_join1_vc1_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@varchar_join1_str_orc +POSTHOOK: Input: default@varchar_join1_vc1_orc +#### A masked pattern was here #### +1 abc 1 abc +2 abc 2 abc +3 abc 3 abc +PREHOOK: query: drop table varchar_join1_vc1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_vc1 +PREHOOK: Output: default@varchar_join1_vc1 +POSTHOOK: query: drop table varchar_join1_vc1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_vc1 +POSTHOOK: Output: default@varchar_join1_vc1 +PREHOOK: query: drop table varchar_join1_vc2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_vc2 +PREHOOK: Output: default@varchar_join1_vc2 +POSTHOOK: query: drop table varchar_join1_vc2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_vc2 +POSTHOOK: Output: default@varchar_join1_vc2 +PREHOOK: query: drop table varchar_join1_str +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_str +PREHOOK: Output: default@varchar_join1_str +POSTHOOK: query: drop table varchar_join1_str +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_str +POSTHOOK: Output: default@varchar_join1_str +PREHOOK: query: drop table varchar_join1_vc1_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_vc1_orc +PREHOOK: Output: default@varchar_join1_vc1_orc +POSTHOOK: query: drop table varchar_join1_vc1_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_vc1_orc +POSTHOOK: Output: default@varchar_join1_vc1_orc +PREHOOK: query: drop table varchar_join1_vc2_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_vc2_orc +PREHOOK: Output: default@varchar_join1_vc2_orc +POSTHOOK: query: drop table varchar_join1_vc2_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_vc2_orc +POSTHOOK: Output: default@varchar_join1_vc2_orc +PREHOOK: query: drop table varchar_join1_str_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_str_orc +PREHOOK: Output: default@varchar_join1_str_orc +POSTHOOK: query: drop table varchar_join1_str_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_str_orc +POSTHOOK: Output: default@varchar_join1_str_orc diff --git a/ql/src/test/results/clientpositive/vector_char_mapjoin1.q.out b/ql/src/test/results/clientpositive/vector_char_mapjoin1.q.out new file mode 100644 index 000000000000..2a450a670a84 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_char_mapjoin1.q.out @@ -0,0 +1,463 @@ +PREHOOK: query: drop table if exists char_join1_vc1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_vc1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists char_join1_vc2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_vc2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists char_join1_str +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_str +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists char_join1_vc1_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_vc1_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists char_join1_vc2_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_vc2_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists char_join1_str_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists char_join1_str_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table char_join1_vc1 ( + c1 int, + c2 char(10) +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_vc1 +POSTHOOK: query: create table char_join1_vc1 ( + c1 int, + c2 char(10) +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_vc1 +PREHOOK: query: create table char_join1_vc2 ( + c1 int, + c2 char(20) +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_vc2 +POSTHOOK: query: create table char_join1_vc2 ( + c1 int, + c2 char(20) +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_vc2 +PREHOOK: query: create table char_join1_str ( + c1 int, + c2 string +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_str +POSTHOOK: query: create table char_join1_str ( + c1 int, + c2 string +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_str +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_vc1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@char_join1_vc1 +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_vc1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@char_join1_vc1 +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_vc2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@char_join1_vc2 +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_vc2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@char_join1_vc2 +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_str +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@char_join1_str +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table char_join1_str +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@char_join1_str +PREHOOK: query: create table char_join1_vc1_orc stored as orc as select * from char_join1_vc1 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@char_join1_vc1 +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_vc1_orc +POSTHOOK: query: create table char_join1_vc1_orc stored as orc as select * from char_join1_vc1 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@char_join1_vc1 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_vc1_orc +PREHOOK: query: create table char_join1_vc2_orc stored as orc as select * from char_join1_vc2 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@char_join1_vc2 +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_vc2_orc +POSTHOOK: query: create table char_join1_vc2_orc stored as orc as select * from char_join1_vc2 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@char_join1_vc2 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_vc2_orc +PREHOOK: query: create table char_join1_str_orc stored as orc as select * from char_join1_str +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@char_join1_str +PREHOOK: Output: database:default +PREHOOK: Output: default@char_join1_str_orc +POSTHOOK: query: create table char_join1_str_orc stored as orc as select * from char_join1_str +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@char_join1_str +POSTHOOK: Output: database:default +POSTHOOK: Output: default@char_join1_str_orc +PREHOOK: query: -- Join char with same length char +explain select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join char with same length char +explain select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-5 is a root stage + Stage-2 depends on stages: Stage-5 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-5 + Map Reduce Local Work + Alias -> Map Local Tables: + a + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + a + TableScan + alias: a + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 196 Basic stats: COMPLETE Column stats: NONE + HashTable Sink Operator + condition expressions: + 0 {c1} + 1 {c1} {c2} + keys: + 0 c2 (type: char(10)) + 1 c2 (type: char(10)) + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 196 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 c2 (type: char(10)) + 1 c2 (type: char(10)) + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: char(10)), _col5 (type: int), _col6 (type: char(10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: char(10)), _col2 (type: int), _col3 (type: char(10)) + Local Work: + Map Reduce Local Work + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: char(10)), VALUE._col1 (type: int), VALUE._col2 (type: char(10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@char_join1_vc1_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@char_join1_vc1_orc +#### A masked pattern was here #### +1 abc 2 abc +1 abc 1 abc +2 abc 2 abc +2 abc 1 abc +3 abc 3 abc +PREHOOK: query: -- Join char with different length char +explain select * from char_join1_vc1_orc a join char_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join char with different length char +explain select * from char_join1_vc1_orc a join char_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-5 is a root stage + Stage-2 depends on stages: Stage-5 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-5 + Map Reduce Local Work + Alias -> Map Local Tables: + a + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + a + TableScan + alias: a + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 196 Basic stats: COMPLETE Column stats: NONE + HashTable Sink Operator + condition expressions: + 0 {c1} + 1 {c1} {c2} + keys: + 0 c2 (type: char(10)) + 1 c2 (type: char(20)) + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 324 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 216 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 c2 (type: char(10)) + 1 c2 (type: char(20)) + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: char(10)), _col5 (type: int), _col6 (type: char(20)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: char(10)), _col2 (type: int), _col3 (type: char(20)) + Local Work: + Map Reduce Local Work + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: char(10)), VALUE._col1 (type: int), VALUE._col2 (type: char(20)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from char_join1_vc1_orc a join char_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@char_join1_vc1_orc +PREHOOK: Input: default@char_join1_vc2_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from char_join1_vc1_orc a join char_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@char_join1_vc1_orc +POSTHOOK: Input: default@char_join1_vc2_orc +#### A masked pattern was here #### +1 abc 2 abc +1 abc 1 abc +2 abc 2 abc +2 abc 1 abc +3 abc 3 abc +PREHOOK: query: -- Join char with string +explain select * from char_join1_vc1_orc a join char_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join char with string +explain select * from char_join1_vc1_orc a join char_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-5 is a root stage + Stage-2 depends on stages: Stage-5 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-5 + Map Reduce Local Work + Alias -> Map Local Tables: + b + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + b + TableScan + alias: b + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + HashTable Sink Operator + condition expressions: + 0 {c1} {c2} + 1 {c1} + keys: + 0 UDFToString(c2) (type: string) + 1 c2 (type: string) + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 294 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: UDFToString(c2) is not null (type: boolean) + Statistics: Num rows: 2 Data size: 196 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 UDFToString(c2) (type: string) + 1 c2 (type: string) + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: char(10)), _col5 (type: int), _col6 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: char(10)), _col2 (type: int), _col3 (type: string) + Local Work: + Map Reduce Local Work + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: char(10)), VALUE._col1 (type: int), VALUE._col2 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 215 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from char_join1_vc1_orc a join char_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@char_join1_str_orc +PREHOOK: Input: default@char_join1_vc1_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from char_join1_vc1_orc a join char_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@char_join1_str_orc +POSTHOOK: Input: default@char_join1_vc1_orc +#### A masked pattern was here #### +1 abc 1 abc +2 abc 1 abc +3 abc 3 abc +PREHOOK: query: drop table char_join1_vc1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_vc1 +PREHOOK: Output: default@char_join1_vc1 +POSTHOOK: query: drop table char_join1_vc1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_vc1 +POSTHOOK: Output: default@char_join1_vc1 +PREHOOK: query: drop table char_join1_vc2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_vc2 +PREHOOK: Output: default@char_join1_vc2 +POSTHOOK: query: drop table char_join1_vc2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_vc2 +POSTHOOK: Output: default@char_join1_vc2 +PREHOOK: query: drop table char_join1_str +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_str +PREHOOK: Output: default@char_join1_str +POSTHOOK: query: drop table char_join1_str +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_str +POSTHOOK: Output: default@char_join1_str +PREHOOK: query: drop table char_join1_vc1_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_vc1_orc +PREHOOK: Output: default@char_join1_vc1_orc +POSTHOOK: query: drop table char_join1_vc1_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_vc1_orc +POSTHOOK: Output: default@char_join1_vc1_orc +PREHOOK: query: drop table char_join1_vc2_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_vc2_orc +PREHOOK: Output: default@char_join1_vc2_orc +POSTHOOK: query: drop table char_join1_vc2_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_vc2_orc +POSTHOOK: Output: default@char_join1_vc2_orc +PREHOOK: query: drop table char_join1_str_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@char_join1_str_orc +PREHOOK: Output: default@char_join1_str_orc +POSTHOOK: query: drop table char_join1_str_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@char_join1_str_orc +POSTHOOK: Output: default@char_join1_str_orc diff --git a/ql/src/test/results/clientpositive/vector_varchar_mapjoin1.q.out b/ql/src/test/results/clientpositive/vector_varchar_mapjoin1.q.out new file mode 100644 index 000000000000..885a359a4c73 --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_varchar_mapjoin1.q.out @@ -0,0 +1,459 @@ +PREHOOK: query: drop table if exists varchar_join1_vc1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_vc1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists varchar_join1_vc2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_vc2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists varchar_join1_str +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_str +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists varchar_join1_vc1_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_vc1_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists varchar_join1_vc2_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_vc2_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table if exists varchar_join1_str_orc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists varchar_join1_str_orc +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table varchar_join1_vc1 ( + c1 int, + c2 varchar(10) +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_vc1 +POSTHOOK: query: create table varchar_join1_vc1 ( + c1 int, + c2 varchar(10) +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_vc1 +PREHOOK: query: create table varchar_join1_vc2 ( + c1 int, + c2 varchar(20) +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_vc2 +POSTHOOK: query: create table varchar_join1_vc2 ( + c1 int, + c2 varchar(20) +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_vc2 +PREHOOK: query: create table varchar_join1_str ( + c1 int, + c2 string +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_str +POSTHOOK: query: create table varchar_join1_str ( + c1 int, + c2 string +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_str +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_vc1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@varchar_join1_vc1 +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_vc1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@varchar_join1_vc1 +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_vc2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@varchar_join1_vc2 +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_vc2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@varchar_join1_vc2 +PREHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_str +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@varchar_join1_str +POSTHOOK: query: load data local inpath '../../data/files/vc1.txt' into table varchar_join1_str +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@varchar_join1_str +PREHOOK: query: create table varchar_join1_vc1_orc stored as orc as select * from varchar_join1_vc1 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@varchar_join1_vc1 +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_vc1_orc +POSTHOOK: query: create table varchar_join1_vc1_orc stored as orc as select * from varchar_join1_vc1 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@varchar_join1_vc1 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_vc1_orc +PREHOOK: query: create table varchar_join1_vc2_orc stored as orc as select * from varchar_join1_vc2 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@varchar_join1_vc2 +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_vc2_orc +POSTHOOK: query: create table varchar_join1_vc2_orc stored as orc as select * from varchar_join1_vc2 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@varchar_join1_vc2 +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_vc2_orc +PREHOOK: query: create table varchar_join1_str_orc stored as orc as select * from varchar_join1_str +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@varchar_join1_str +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_join1_str_orc +POSTHOOK: query: create table varchar_join1_str_orc stored as orc as select * from varchar_join1_str +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@varchar_join1_str +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_join1_str_orc +PREHOOK: query: -- Join varchar with same length varchar +explain select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join varchar with same length varchar +explain select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-5 is a root stage + Stage-2 depends on stages: Stage-5 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-5 + Map Reduce Local Work + Alias -> Map Local Tables: + a + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + a + TableScan + alias: a + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + HashTable Sink Operator + condition expressions: + 0 {c1} + 1 {c1} {c2} + keys: + 0 c2 (type: varchar(10)) + 1 c2 (type: varchar(10)) + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 c2 (type: varchar(10)) + 1 c2 (type: varchar(10)) + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: varchar(10)), _col5 (type: int), _col6 (type: varchar(10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: varchar(10)), _col2 (type: int), _col3 (type: varchar(10)) + Local Work: + Map Reduce Local Work + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: varchar(10)), VALUE._col1 (type: int), VALUE._col2 (type: varchar(10)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@varchar_join1_vc1_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@varchar_join1_vc1_orc +#### A masked pattern was here #### +1 abc 1 abc +2 abc 2 abc +3 abc 3 abc +PREHOOK: query: -- Join varchar with different length varchar +explain select * from varchar_join1_vc1_orc a join varchar_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join varchar with different length varchar +explain select * from varchar_join1_vc1_orc a join varchar_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-5 is a root stage + Stage-2 depends on stages: Stage-5 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-5 + Map Reduce Local Work + Alias -> Map Local Tables: + a + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + a + TableScan + alias: a + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + HashTable Sink Operator + condition expressions: + 0 {c1} + 1 {c1} {c2} + keys: + 0 c2 (type: varchar(10)) + 1 c2 (type: varchar(20)) + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 c2 (type: varchar(10)) + 1 c2 (type: varchar(20)) + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: varchar(10)), _col5 (type: int), _col6 (type: varchar(20)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: varchar(10)), _col2 (type: int), _col3 (type: varchar(20)) + Local Work: + Map Reduce Local Work + Execution mode: vectorized + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: varchar(10)), VALUE._col1 (type: int), VALUE._col2 (type: varchar(20)) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@varchar_join1_vc1_orc +PREHOOK: Input: default@varchar_join1_vc2_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_vc2_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@varchar_join1_vc1_orc +POSTHOOK: Input: default@varchar_join1_vc2_orc +#### A masked pattern was here #### +1 abc 1 abc +2 abc 2 abc +3 abc 3 abc +PREHOOK: query: -- Join varchar with string +explain select * from varchar_join1_vc1_orc a join varchar_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +POSTHOOK: query: -- Join varchar with string +explain select * from varchar_join1_vc1_orc a join varchar_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-5 is a root stage + Stage-2 depends on stages: Stage-5 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-5 + Map Reduce Local Work + Alias -> Map Local Tables: + b + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + b + TableScan + alias: b + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: c2 is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + HashTable Sink Operator + condition expressions: + 0 {c1} {c2} + 1 {c1} + keys: + 0 UDFToString(c2) (type: string) + 1 c2 (type: string) + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: UDFToString(c2) is not null (type: boolean) + Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {c1} {c2} + 1 {c1} {c2} + keys: + 0 UDFToString(c2) (type: string) + 1 c2 (type: string) + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: varchar(10)), _col5 (type: int), _col6 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: varchar(10)), _col2 (type: int), _col3 (type: string) + Local Work: + Map Reduce Local Work + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: varchar(10)), VALUE._col1 (type: int), VALUE._col2 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 200 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@varchar_join1_str_orc +PREHOOK: Input: default@varchar_join1_vc1_orc +#### A masked pattern was here #### +POSTHOOK: query: select * from varchar_join1_vc1_orc a join varchar_join1_str_orc b on (a.c2 = b.c2) order by a.c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@varchar_join1_str_orc +POSTHOOK: Input: default@varchar_join1_vc1_orc +#### A masked pattern was here #### +1 abc 1 abc +2 abc 2 abc +3 abc 3 abc +PREHOOK: query: drop table varchar_join1_vc1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_vc1 +PREHOOK: Output: default@varchar_join1_vc1 +POSTHOOK: query: drop table varchar_join1_vc1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_vc1 +POSTHOOK: Output: default@varchar_join1_vc1 +PREHOOK: query: drop table varchar_join1_vc2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_vc2 +PREHOOK: Output: default@varchar_join1_vc2 +POSTHOOK: query: drop table varchar_join1_vc2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_vc2 +POSTHOOK: Output: default@varchar_join1_vc2 +PREHOOK: query: drop table varchar_join1_str +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_str +PREHOOK: Output: default@varchar_join1_str +POSTHOOK: query: drop table varchar_join1_str +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_str +POSTHOOK: Output: default@varchar_join1_str +PREHOOK: query: drop table varchar_join1_vc1_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_vc1_orc +PREHOOK: Output: default@varchar_join1_vc1_orc +POSTHOOK: query: drop table varchar_join1_vc1_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_vc1_orc +POSTHOOK: Output: default@varchar_join1_vc1_orc +PREHOOK: query: drop table varchar_join1_vc2_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_vc2_orc +PREHOOK: Output: default@varchar_join1_vc2_orc +POSTHOOK: query: drop table varchar_join1_vc2_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_vc2_orc +POSTHOOK: Output: default@varchar_join1_vc2_orc +PREHOOK: query: drop table varchar_join1_str_orc +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@varchar_join1_str_orc +PREHOOK: Output: default@varchar_join1_str_orc +POSTHOOK: query: drop table varchar_join1_str_orc +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@varchar_join1_str_orc +POSTHOOK: Output: default@varchar_join1_str_orc From 30fd3ffed5fd8c8f46f3625c446ad28fd93f3050 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 14 Jan 2015 01:27:42 +0000 Subject: [PATCH 327/339] HIVE-9278 : Cached expression feature broken in one case (Navis via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1651547 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/exec/ExprNodeEvaluatorFactory.java | 6 ++++-- ql/src/test/queries/clientpositive/expr_cached.q | 4 ++++ ql/src/test/results/clientpositive/expr_cached.q.out | 11 +++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/expr_cached.q create mode 100644 ql/src/test/results/clientpositive/expr_cached.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeEvaluatorFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeEvaluatorFactory.java index b31d2ea3b6b8..a4916774af91 100755 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeEvaluatorFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExprNodeEvaluatorFactory.java @@ -100,12 +100,14 @@ private static ExprNodeEvaluator iterate(ExprNodeEvaluator eval, EvaluatorContex private static class EvaluatorContext { - private final Map cached = new HashMap(); + private final Map cached = + new HashMap(); private boolean hasReference; public ExprNodeEvaluator getEvaluated(ExprNodeEvaluator eval) { - String key = eval.getExpr().toString(); + ExprNodeDesc.ExprNodeDescEqualityWrapper key = + new ExprNodeDesc.ExprNodeDescEqualityWrapper(eval.expr); ExprNodeEvaluator prev = cached.get(key); if (prev == null) { cached.put(key, eval); diff --git a/ql/src/test/queries/clientpositive/expr_cached.q b/ql/src/test/queries/clientpositive/expr_cached.q new file mode 100644 index 000000000000..8fc182c054af --- /dev/null +++ b/ql/src/test/queries/clientpositive/expr_cached.q @@ -0,0 +1,4 @@ +set hive.fetch.task.conversion=more; + +-- should return a value +select * from src tablesample (1 rows) where length(key) <> reverse(key); \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/expr_cached.q.out b/ql/src/test/results/clientpositive/expr_cached.q.out new file mode 100644 index 000000000000..9f0b651a5d08 --- /dev/null +++ b/ql/src/test/results/clientpositive/expr_cached.q.out @@ -0,0 +1,11 @@ +PREHOOK: query: -- should return a value +select * from src tablesample (1 rows) where length(key) <> reverse(key) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: -- should return a value +select * from src tablesample (1 rows) where length(key) <> reverse(key) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +238 val_238 From 8e780972dd548eba586c703712b861582dbf13bd Mon Sep 17 00:00:00 2001 From: Vaibhav Gumashta Date: Thu, 15 Jan 2015 19:03:12 +0000 Subject: [PATCH 328/339] HIVE-9234: HiveServer2 leaks FileSystem objects in FileSystem.CACHE (Vaibhav Gumashta reviewed by Brock Noland, Thejas Nair) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1652225 13f79535-47bb-0310-9956-ffa450edef68 --- .../cli/session/HiveSessionImplwithUGI.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImplwithUGI.java b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImplwithUGI.java index bad533bb714f..d9bdd60fcec7 100644 --- a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImplwithUGI.java +++ b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImplwithUGI.java @@ -91,18 +91,20 @@ protected synchronized void acquire(boolean userAccess) { } /** - * close the file systems for the session - * cancel the session's delegation token and close the metastore connection + * Close the file systems for the session and remove it from the FileSystem cache. + * Cancel the session's delegation token and close the metastore connection */ @Override public void close() throws HiveSQLException { try { - acquire(true); - ShimLoader.getHadoopShims().closeAllForUGI(sessionUgi); - cancelDelegationToken(); + acquire(true); + cancelDelegationToken(); } finally { - release(true); - super.close(); + try { + super.close(); + } finally { + ShimLoader.getHadoopShims().closeAllForUGI(sessionUgi); + } } } From 9a01aa7a76c839cec955478663a2f2869ded828d Mon Sep 17 00:00:00 2001 From: Vikram Dixit K Date: Fri, 16 Jan 2015 22:30:17 +0000 Subject: [PATCH 329/339] HIVE-9038: Join tests fail on Tez (missed files in the previous commit) (Vikram Dixit K, reviewed by Sergey Shelukhin) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1652536 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 6 +- .../hive/ql/optimizer/ConvertJoinMapJoin.java | 33 +- .../clientpositive/tez/auto_join21.q.out | 606 ++++ .../clientpositive/tez/auto_join29.q.out | 3011 +++++++++++++++++ .../clientpositive/tez/auto_join30.q.out | 1335 ++++++++ .../tez/auto_join_filters.q.out | 540 +++ .../clientpositive/tez/auto_join_nulls.q.out | 217 ++ 7 files changed, 5746 insertions(+), 2 deletions(-) create mode 100644 ql/src/test/results/clientpositive/tez/auto_join21.q.out create mode 100644 ql/src/test/results/clientpositive/tez/auto_join29.q.out create mode 100644 ql/src/test/results/clientpositive/tez/auto_join30.q.out create mode 100644 ql/src/test/results/clientpositive/tez/auto_join_filters.q.out create mode 100644 ql/src/test/results/clientpositive/tez/auto_join_nulls.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 94ab56b862cb..8e0a4d62bc65 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -254,7 +254,11 @@ minitez.query.files.shared=alter_merge_2_orc.q,\ auto_sortmerge_join_5.q,\ auto_sortmerge_join_7.q,\ auto_sortmerge_join_8.q,\ - auto_sortmerge_join_9.q + auto_sortmerge_join_9.q,\ + auto_join30.q,\ + auto_join21.q,\ + auto_join29.q,\ + auto_join_filters.q minitez.query.files=bucket_map_join_tez1.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java index 04bafdafc289..856de61ca07c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java @@ -503,7 +503,38 @@ private boolean checkColEquality(List> grandParentColNames, } public int getMapJoinConversionPos(JoinOperator joinOp, OptimizeTezProcContext context, - int buckets) { + int buckets) throws SemanticException { + /* + * HIVE-9038: Join tests fail in tez when we have more than 1 join on the same key and there is + * an outer join down the join tree that requires filterTag. We disable this conversion to map + * join here now. We need to emulate the behavior of HashTableSinkOperator as in MR or create a + * new operation to be able to support this. This seems like a corner case enough to special + * case this for now. + */ + if (joinOp.getConf().getConds().length > 1) { + boolean hasOuter = false; + for (JoinCondDesc joinCondDesc : joinOp.getConf().getConds()) { + switch (joinCondDesc.getType()) { + case JoinDesc.INNER_JOIN: + case JoinDesc.LEFT_SEMI_JOIN: + case JoinDesc.UNIQUE_JOIN: + hasOuter = false; + break; + + case JoinDesc.FULL_OUTER_JOIN: + case JoinDesc.LEFT_OUTER_JOIN: + case JoinDesc.RIGHT_OUTER_JOIN: + hasOuter = true; + break; + + default: + throw new SemanticException("Unknown join type " + joinCondDesc.getType()); + } + } + if (hasOuter) { + return -1; + } + } Set bigTableCandidateSet = MapJoinProcessor.getBigTableCandidates(joinOp.getConf().getConds()); diff --git a/ql/src/test/results/clientpositive/tez/auto_join21.q.out b/ql/src/test/results/clientpositive/tez/auto_join21.q.out new file mode 100644 index 000000000000..5f482ec21380 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/auto_join21.q.out @@ -0,0 +1,606 @@ +PREHOOK: query: explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key > 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 5 + Map Operator Tree: + TableScan + alias: src3 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Left Outer Join0 to 1 + Right Outer Join1 to 2 + filter predicates: + 0 {(KEY.reducesinkkey0 < 10)} + 1 + 2 {(KEY.reducesinkkey0 < 10)} + keys: + 0 key (type: string) + 1 key (type: string) + 2 key (type: string) + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) + sort order: ++++++ + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 10 val_10 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 105 val_105 +NULL NULL NULL NULL 11 val_11 +NULL NULL NULL NULL 111 val_111 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 114 val_114 +NULL NULL NULL NULL 116 val_116 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 126 val_126 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 131 val_131 +NULL NULL NULL NULL 133 val_133 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 136 val_136 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 143 val_143 +NULL NULL NULL NULL 145 val_145 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 150 val_150 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 153 val_153 +NULL NULL NULL NULL 155 val_155 +NULL NULL NULL NULL 156 val_156 +NULL NULL NULL NULL 157 val_157 +NULL NULL NULL NULL 158 val_158 +NULL NULL NULL NULL 160 val_160 +NULL NULL NULL NULL 162 val_162 +NULL NULL NULL NULL 163 val_163 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 166 val_166 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 168 val_168 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 17 val_17 +NULL NULL NULL NULL 170 val_170 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 177 val_177 +NULL NULL NULL NULL 178 val_178 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 180 val_180 +NULL NULL NULL NULL 181 val_181 +NULL NULL NULL NULL 183 val_183 +NULL NULL NULL NULL 186 val_186 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 189 val_189 +NULL NULL NULL NULL 19 val_19 +NULL NULL NULL NULL 190 val_190 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 192 val_192 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 194 val_194 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 196 val_196 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 2 val_2 +NULL NULL NULL NULL 20 val_20 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 201 val_201 +NULL NULL NULL NULL 202 val_202 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 214 val_214 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 218 val_218 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 222 val_222 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 226 val_226 +NULL NULL NULL NULL 228 val_228 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 235 val_235 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 241 val_241 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 244 val_244 +NULL NULL NULL NULL 247 val_247 +NULL NULL NULL NULL 248 val_248 +NULL NULL NULL NULL 249 val_249 +NULL NULL NULL NULL 252 val_252 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 257 val_257 +NULL NULL NULL NULL 258 val_258 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 260 val_260 +NULL NULL NULL NULL 262 val_262 +NULL NULL NULL NULL 263 val_263 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 266 val_266 +NULL NULL NULL NULL 27 val_27 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 274 val_274 +NULL NULL NULL NULL 275 val_275 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 28 val_28 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 283 val_283 +NULL NULL NULL NULL 284 val_284 +NULL NULL NULL NULL 285 val_285 +NULL NULL NULL NULL 286 val_286 +NULL NULL NULL NULL 287 val_287 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 289 val_289 +NULL NULL NULL NULL 291 val_291 +NULL NULL NULL NULL 292 val_292 +NULL NULL NULL NULL 296 val_296 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 30 val_30 +NULL NULL NULL NULL 302 val_302 +NULL NULL NULL NULL 305 val_305 +NULL NULL NULL NULL 306 val_306 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 308 val_308 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 310 val_310 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 315 val_315 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 323 val_323 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 33 val_33 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 332 val_332 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 335 val_335 +NULL NULL NULL NULL 336 val_336 +NULL NULL NULL NULL 338 val_338 +NULL NULL NULL NULL 339 val_339 +NULL NULL NULL NULL 34 val_34 +NULL NULL NULL NULL 341 val_341 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 345 val_345 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 351 val_351 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 356 val_356 +NULL NULL NULL NULL 360 val_360 +NULL NULL NULL NULL 362 val_362 +NULL NULL NULL NULL 364 val_364 +NULL NULL NULL NULL 365 val_365 +NULL NULL NULL NULL 366 val_366 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 368 val_368 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 373 val_373 +NULL NULL NULL NULL 374 val_374 +NULL NULL NULL NULL 375 val_375 +NULL NULL NULL NULL 377 val_377 +NULL NULL NULL NULL 378 val_378 +NULL NULL NULL NULL 379 val_379 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 386 val_386 +NULL NULL NULL NULL 389 val_389 +NULL NULL NULL NULL 392 val_392 +NULL NULL NULL NULL 393 val_393 +NULL NULL NULL NULL 394 val_394 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 4 val_4 +NULL NULL NULL NULL 400 val_400 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 402 val_402 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 407 val_407 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 41 val_41 +NULL NULL NULL NULL 411 val_411 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 418 val_418 +NULL NULL NULL NULL 419 val_419 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 421 val_421 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 427 val_427 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 43 val_43 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 432 val_432 +NULL NULL NULL NULL 435 val_435 +NULL NULL NULL NULL 436 val_436 +NULL NULL NULL NULL 437 val_437 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 44 val_44 +NULL NULL NULL NULL 443 val_443 +NULL NULL NULL NULL 444 val_444 +NULL NULL NULL NULL 446 val_446 +NULL NULL NULL NULL 448 val_448 +NULL NULL NULL NULL 449 val_449 +NULL NULL NULL NULL 452 val_452 +NULL NULL NULL NULL 453 val_453 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 455 val_455 +NULL NULL NULL NULL 457 val_457 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 460 val_460 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 467 val_467 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 47 val_47 +NULL NULL NULL NULL 470 val_470 +NULL NULL NULL NULL 472 val_472 +NULL NULL NULL NULL 475 val_475 +NULL NULL NULL NULL 477 val_477 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 479 val_479 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 481 val_481 +NULL NULL NULL NULL 482 val_482 +NULL NULL NULL NULL 483 val_483 +NULL NULL NULL NULL 484 val_484 +NULL NULL NULL NULL 485 val_485 +NULL NULL NULL NULL 487 val_487 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 490 val_490 +NULL NULL NULL NULL 491 val_491 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 493 val_493 +NULL NULL NULL NULL 494 val_494 +NULL NULL NULL NULL 495 val_495 +NULL NULL NULL NULL 496 val_496 +NULL NULL NULL NULL 497 val_497 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 53 val_53 +NULL NULL NULL NULL 54 val_54 +NULL NULL NULL NULL 57 val_57 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 64 val_64 +NULL NULL NULL NULL 65 val_65 +NULL NULL NULL NULL 66 val_66 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 69 val_69 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 74 val_74 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 77 val_77 +NULL NULL NULL NULL 78 val_78 +NULL NULL NULL NULL 8 val_8 +NULL NULL NULL NULL 80 val_80 +NULL NULL NULL NULL 82 val_82 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 85 val_85 +NULL NULL NULL NULL 86 val_86 +NULL NULL NULL NULL 87 val_87 +NULL NULL NULL NULL 9 val_9 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 92 val_92 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 96 val_96 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 98 val_98 diff --git a/ql/src/test/results/clientpositive/tez/auto_join29.q.out b/ql/src/test/results/clientpositive/tez/auto_join29.q.out new file mode 100644 index 000000000000..10c8fcd4071d --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/auto_join29.q.out @@ -0,0 +1,3011 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +POSTHOOK: query: -- SORT_QUERY_RESULTS + +explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key > 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 5 + Map Operator Tree: + TableScan + alias: src3 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Left Outer Join0 to 1 + Right Outer Join1 to 2 + filter predicates: + 0 {(KEY.reducesinkkey0 < 10)} + 1 + 2 {(KEY.reducesinkkey0 < 10)} + keys: + 0 key (type: string) + 1 key (type: string) + 2 key (type: string) + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) + sort order: ++++++ + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 10 val_10 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 105 val_105 +NULL NULL NULL NULL 11 val_11 +NULL NULL NULL NULL 111 val_111 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 114 val_114 +NULL NULL NULL NULL 116 val_116 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 126 val_126 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 131 val_131 +NULL NULL NULL NULL 133 val_133 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 136 val_136 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 143 val_143 +NULL NULL NULL NULL 145 val_145 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 150 val_150 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 153 val_153 +NULL NULL NULL NULL 155 val_155 +NULL NULL NULL NULL 156 val_156 +NULL NULL NULL NULL 157 val_157 +NULL NULL NULL NULL 158 val_158 +NULL NULL NULL NULL 160 val_160 +NULL NULL NULL NULL 162 val_162 +NULL NULL NULL NULL 163 val_163 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 166 val_166 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 168 val_168 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 17 val_17 +NULL NULL NULL NULL 170 val_170 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 177 val_177 +NULL NULL NULL NULL 178 val_178 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 180 val_180 +NULL NULL NULL NULL 181 val_181 +NULL NULL NULL NULL 183 val_183 +NULL NULL NULL NULL 186 val_186 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 189 val_189 +NULL NULL NULL NULL 19 val_19 +NULL NULL NULL NULL 190 val_190 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 192 val_192 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 194 val_194 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 196 val_196 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 2 val_2 +NULL NULL NULL NULL 20 val_20 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 201 val_201 +NULL NULL NULL NULL 202 val_202 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 214 val_214 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 218 val_218 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 222 val_222 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 226 val_226 +NULL NULL NULL NULL 228 val_228 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 235 val_235 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 241 val_241 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 244 val_244 +NULL NULL NULL NULL 247 val_247 +NULL NULL NULL NULL 248 val_248 +NULL NULL NULL NULL 249 val_249 +NULL NULL NULL NULL 252 val_252 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 257 val_257 +NULL NULL NULL NULL 258 val_258 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 260 val_260 +NULL NULL NULL NULL 262 val_262 +NULL NULL NULL NULL 263 val_263 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 266 val_266 +NULL NULL NULL NULL 27 val_27 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 274 val_274 +NULL NULL NULL NULL 275 val_275 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 28 val_28 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 283 val_283 +NULL NULL NULL NULL 284 val_284 +NULL NULL NULL NULL 285 val_285 +NULL NULL NULL NULL 286 val_286 +NULL NULL NULL NULL 287 val_287 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 289 val_289 +NULL NULL NULL NULL 291 val_291 +NULL NULL NULL NULL 292 val_292 +NULL NULL NULL NULL 296 val_296 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 30 val_30 +NULL NULL NULL NULL 302 val_302 +NULL NULL NULL NULL 305 val_305 +NULL NULL NULL NULL 306 val_306 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 308 val_308 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 310 val_310 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 315 val_315 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 323 val_323 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 33 val_33 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 332 val_332 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 335 val_335 +NULL NULL NULL NULL 336 val_336 +NULL NULL NULL NULL 338 val_338 +NULL NULL NULL NULL 339 val_339 +NULL NULL NULL NULL 34 val_34 +NULL NULL NULL NULL 341 val_341 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 345 val_345 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 351 val_351 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 356 val_356 +NULL NULL NULL NULL 360 val_360 +NULL NULL NULL NULL 362 val_362 +NULL NULL NULL NULL 364 val_364 +NULL NULL NULL NULL 365 val_365 +NULL NULL NULL NULL 366 val_366 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 368 val_368 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 373 val_373 +NULL NULL NULL NULL 374 val_374 +NULL NULL NULL NULL 375 val_375 +NULL NULL NULL NULL 377 val_377 +NULL NULL NULL NULL 378 val_378 +NULL NULL NULL NULL 379 val_379 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 386 val_386 +NULL NULL NULL NULL 389 val_389 +NULL NULL NULL NULL 392 val_392 +NULL NULL NULL NULL 393 val_393 +NULL NULL NULL NULL 394 val_394 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 4 val_4 +NULL NULL NULL NULL 400 val_400 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 402 val_402 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 407 val_407 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 41 val_41 +NULL NULL NULL NULL 411 val_411 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 418 val_418 +NULL NULL NULL NULL 419 val_419 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 421 val_421 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 427 val_427 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 43 val_43 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 432 val_432 +NULL NULL NULL NULL 435 val_435 +NULL NULL NULL NULL 436 val_436 +NULL NULL NULL NULL 437 val_437 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 44 val_44 +NULL NULL NULL NULL 443 val_443 +NULL NULL NULL NULL 444 val_444 +NULL NULL NULL NULL 446 val_446 +NULL NULL NULL NULL 448 val_448 +NULL NULL NULL NULL 449 val_449 +NULL NULL NULL NULL 452 val_452 +NULL NULL NULL NULL 453 val_453 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 455 val_455 +NULL NULL NULL NULL 457 val_457 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 460 val_460 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 467 val_467 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 47 val_47 +NULL NULL NULL NULL 470 val_470 +NULL NULL NULL NULL 472 val_472 +NULL NULL NULL NULL 475 val_475 +NULL NULL NULL NULL 477 val_477 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 479 val_479 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 481 val_481 +NULL NULL NULL NULL 482 val_482 +NULL NULL NULL NULL 483 val_483 +NULL NULL NULL NULL 484 val_484 +NULL NULL NULL NULL 485 val_485 +NULL NULL NULL NULL 487 val_487 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 490 val_490 +NULL NULL NULL NULL 491 val_491 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 493 val_493 +NULL NULL NULL NULL 494 val_494 +NULL NULL NULL NULL 495 val_495 +NULL NULL NULL NULL 496 val_496 +NULL NULL NULL NULL 497 val_497 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 53 val_53 +NULL NULL NULL NULL 54 val_54 +NULL NULL NULL NULL 57 val_57 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 64 val_64 +NULL NULL NULL NULL 65 val_65 +NULL NULL NULL NULL 66 val_66 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 69 val_69 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 74 val_74 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 77 val_77 +NULL NULL NULL NULL 78 val_78 +NULL NULL NULL NULL 8 val_8 +NULL NULL NULL NULL 80 val_80 +NULL NULL NULL NULL 82 val_82 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 85 val_85 +NULL NULL NULL NULL 86 val_86 +NULL NULL NULL NULL 87 val_87 +NULL NULL NULL NULL 9 val_9 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 92 val_92 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 96 val_96 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 98 val_98 +PREHOOK: query: explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key > 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 5 + Map Operator Tree: + TableScan + alias: src3 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key > 10) and (key < 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Left Outer Join0 to 1 + Left Outer Join1 to 2 + filter predicates: + 0 {(KEY.reducesinkkey0 < 10)} + 1 + 2 + keys: + 0 key (type: string) + 1 key (type: string) + 2 key (type: string) + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) + sort order: ++++++ + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +0 val_0 NULL NULL NULL NULL +0 val_0 NULL NULL NULL NULL +0 val_0 NULL NULL NULL NULL +10 val_10 NULL NULL NULL NULL +100 val_100 NULL NULL NULL NULL +100 val_100 NULL NULL NULL NULL +103 val_103 NULL NULL NULL NULL +103 val_103 NULL NULL NULL NULL +104 val_104 NULL NULL NULL NULL +104 val_104 NULL NULL NULL NULL +105 val_105 NULL NULL NULL NULL +11 val_11 NULL NULL NULL NULL +111 val_111 NULL NULL NULL NULL +113 val_113 NULL NULL NULL NULL +113 val_113 NULL NULL NULL NULL +114 val_114 NULL NULL NULL NULL +116 val_116 NULL NULL NULL NULL +118 val_118 NULL NULL NULL NULL +118 val_118 NULL NULL NULL NULL +119 val_119 NULL NULL NULL NULL +119 val_119 NULL NULL NULL NULL +119 val_119 NULL NULL NULL NULL +12 val_12 NULL NULL NULL NULL +12 val_12 NULL NULL NULL NULL +120 val_120 NULL NULL NULL NULL +120 val_120 NULL NULL NULL NULL +125 val_125 NULL NULL NULL NULL +125 val_125 NULL NULL NULL NULL +126 val_126 NULL NULL NULL NULL +128 val_128 NULL NULL NULL NULL +128 val_128 NULL NULL NULL NULL +128 val_128 NULL NULL NULL NULL +129 val_129 NULL NULL NULL NULL +129 val_129 NULL NULL NULL NULL +131 val_131 NULL NULL NULL NULL +133 val_133 NULL NULL NULL NULL +134 val_134 NULL NULL NULL NULL +134 val_134 NULL NULL NULL NULL +136 val_136 NULL NULL NULL NULL +137 val_137 NULL NULL NULL NULL +137 val_137 NULL NULL NULL NULL +138 val_138 NULL NULL NULL NULL +138 val_138 NULL NULL NULL NULL +138 val_138 NULL NULL NULL NULL +138 val_138 NULL NULL NULL NULL +143 val_143 NULL NULL NULL NULL +145 val_145 NULL NULL NULL NULL +146 val_146 NULL NULL NULL NULL +146 val_146 NULL NULL NULL NULL +149 val_149 NULL NULL NULL NULL +149 val_149 NULL NULL NULL NULL +15 val_15 NULL NULL NULL NULL +15 val_15 NULL NULL NULL NULL +150 val_150 NULL NULL NULL NULL +152 val_152 NULL NULL NULL NULL +152 val_152 NULL NULL NULL NULL +153 val_153 NULL NULL NULL NULL +155 val_155 NULL NULL NULL NULL +156 val_156 NULL NULL NULL NULL +157 val_157 NULL NULL NULL NULL +158 val_158 NULL NULL NULL NULL +160 val_160 NULL NULL NULL NULL +162 val_162 NULL NULL NULL NULL +163 val_163 NULL NULL NULL NULL +164 val_164 NULL NULL NULL NULL +164 val_164 NULL NULL NULL NULL +165 val_165 NULL NULL NULL NULL +165 val_165 NULL NULL NULL NULL +166 val_166 NULL NULL NULL NULL +167 val_167 NULL NULL NULL NULL +167 val_167 NULL NULL NULL NULL +167 val_167 NULL NULL NULL NULL +168 val_168 NULL NULL NULL NULL +169 val_169 NULL NULL NULL NULL +169 val_169 NULL NULL NULL NULL +169 val_169 NULL NULL NULL NULL +169 val_169 NULL NULL NULL NULL +17 val_17 NULL NULL NULL NULL +170 val_170 NULL NULL NULL NULL +172 val_172 NULL NULL NULL NULL +172 val_172 NULL NULL NULL NULL +174 val_174 NULL NULL NULL NULL +174 val_174 NULL NULL NULL NULL +175 val_175 NULL NULL NULL NULL +175 val_175 NULL NULL NULL NULL +176 val_176 NULL NULL NULL NULL +176 val_176 NULL NULL NULL NULL +177 val_177 NULL NULL NULL NULL +178 val_178 NULL NULL NULL NULL +179 val_179 NULL NULL NULL NULL +179 val_179 NULL NULL NULL NULL +18 val_18 NULL NULL NULL NULL +18 val_18 NULL NULL NULL NULL +180 val_180 NULL NULL NULL NULL +181 val_181 NULL NULL NULL NULL +183 val_183 NULL NULL NULL NULL +186 val_186 NULL NULL NULL NULL +187 val_187 NULL NULL NULL NULL +187 val_187 NULL NULL NULL NULL +187 val_187 NULL NULL NULL NULL +189 val_189 NULL NULL NULL NULL +19 val_19 NULL NULL NULL NULL +190 val_190 NULL NULL NULL NULL +191 val_191 NULL NULL NULL NULL +191 val_191 NULL NULL NULL NULL +192 val_192 NULL NULL NULL NULL +193 val_193 NULL NULL NULL NULL +193 val_193 NULL NULL NULL NULL +193 val_193 NULL NULL NULL NULL +194 val_194 NULL NULL NULL NULL +195 val_195 NULL NULL NULL NULL +195 val_195 NULL NULL NULL NULL +196 val_196 NULL NULL NULL NULL +197 val_197 NULL NULL NULL NULL +197 val_197 NULL NULL NULL NULL +199 val_199 NULL NULL NULL NULL +199 val_199 NULL NULL NULL NULL +199 val_199 NULL NULL NULL NULL +2 val_2 NULL NULL NULL NULL +20 val_20 NULL NULL NULL NULL +200 val_200 NULL NULL NULL NULL +200 val_200 NULL NULL NULL NULL +201 val_201 NULL NULL NULL NULL +202 val_202 NULL NULL NULL NULL +203 val_203 NULL NULL NULL NULL +203 val_203 NULL NULL NULL NULL +205 val_205 NULL NULL NULL NULL +205 val_205 NULL NULL NULL NULL +207 val_207 NULL NULL NULL NULL +207 val_207 NULL NULL NULL NULL +208 val_208 NULL NULL NULL NULL +208 val_208 NULL NULL NULL NULL +208 val_208 NULL NULL NULL NULL +209 val_209 NULL NULL NULL NULL +209 val_209 NULL NULL NULL NULL +213 val_213 NULL NULL NULL NULL +213 val_213 NULL NULL NULL NULL +214 val_214 NULL NULL NULL NULL +216 val_216 NULL NULL NULL NULL +216 val_216 NULL NULL NULL NULL +217 val_217 NULL NULL NULL NULL +217 val_217 NULL NULL NULL NULL +218 val_218 NULL NULL NULL NULL +219 val_219 NULL NULL NULL NULL +219 val_219 NULL NULL NULL NULL +221 val_221 NULL NULL NULL NULL +221 val_221 NULL NULL NULL NULL +222 val_222 NULL NULL NULL NULL +223 val_223 NULL NULL NULL NULL +223 val_223 NULL NULL NULL NULL +224 val_224 NULL NULL NULL NULL +224 val_224 NULL NULL NULL NULL +226 val_226 NULL NULL NULL NULL +228 val_228 NULL NULL NULL NULL +229 val_229 NULL NULL NULL NULL +229 val_229 NULL NULL NULL NULL +230 val_230 NULL NULL NULL NULL +230 val_230 NULL NULL NULL NULL +230 val_230 NULL NULL NULL NULL +230 val_230 NULL NULL NULL NULL +230 val_230 NULL NULL NULL NULL +233 val_233 NULL NULL NULL NULL +233 val_233 NULL NULL NULL NULL +235 val_235 NULL NULL NULL NULL +237 val_237 NULL NULL NULL NULL +237 val_237 NULL NULL NULL NULL +238 val_238 NULL NULL NULL NULL +238 val_238 NULL NULL NULL NULL +239 val_239 NULL NULL NULL NULL +239 val_239 NULL NULL NULL NULL +24 val_24 NULL NULL NULL NULL +24 val_24 NULL NULL NULL NULL +241 val_241 NULL NULL NULL NULL +242 val_242 NULL NULL NULL NULL +242 val_242 NULL NULL NULL NULL +244 val_244 NULL NULL NULL NULL +247 val_247 NULL NULL NULL NULL +248 val_248 NULL NULL NULL NULL +249 val_249 NULL NULL NULL NULL +252 val_252 NULL NULL NULL NULL +255 val_255 NULL NULL NULL NULL +255 val_255 NULL NULL NULL NULL +256 val_256 NULL NULL NULL NULL +256 val_256 NULL NULL NULL NULL +257 val_257 NULL NULL NULL NULL +258 val_258 NULL NULL NULL NULL +26 val_26 NULL NULL NULL NULL +26 val_26 NULL NULL NULL NULL +260 val_260 NULL NULL NULL NULL +262 val_262 NULL NULL NULL NULL +263 val_263 NULL NULL NULL NULL +265 val_265 NULL NULL NULL NULL +265 val_265 NULL NULL NULL NULL +266 val_266 NULL NULL NULL NULL +27 val_27 NULL NULL NULL NULL +272 val_272 NULL NULL NULL NULL +272 val_272 NULL NULL NULL NULL +273 val_273 NULL NULL NULL NULL +273 val_273 NULL NULL NULL NULL +273 val_273 NULL NULL NULL NULL +274 val_274 NULL NULL NULL NULL +275 val_275 NULL NULL NULL NULL +277 val_277 NULL NULL NULL NULL +277 val_277 NULL NULL NULL NULL +277 val_277 NULL NULL NULL NULL +277 val_277 NULL NULL NULL NULL +278 val_278 NULL NULL NULL NULL +278 val_278 NULL NULL NULL NULL +28 val_28 NULL NULL NULL NULL +280 val_280 NULL NULL NULL NULL +280 val_280 NULL NULL NULL NULL +281 val_281 NULL NULL NULL NULL +281 val_281 NULL NULL NULL NULL +282 val_282 NULL NULL NULL NULL +282 val_282 NULL NULL NULL NULL +283 val_283 NULL NULL NULL NULL +284 val_284 NULL NULL NULL NULL +285 val_285 NULL NULL NULL NULL +286 val_286 NULL NULL NULL NULL +287 val_287 NULL NULL NULL NULL +288 val_288 NULL NULL NULL NULL +288 val_288 NULL NULL NULL NULL +289 val_289 NULL NULL NULL NULL +291 val_291 NULL NULL NULL NULL +292 val_292 NULL NULL NULL NULL +296 val_296 NULL NULL NULL NULL +298 val_298 NULL NULL NULL NULL +298 val_298 NULL NULL NULL NULL +298 val_298 NULL NULL NULL NULL +30 val_30 NULL NULL NULL NULL +302 val_302 NULL NULL NULL NULL +305 val_305 NULL NULL NULL NULL +306 val_306 NULL NULL NULL NULL +307 val_307 NULL NULL NULL NULL +307 val_307 NULL NULL NULL NULL +308 val_308 NULL NULL NULL NULL +309 val_309 NULL NULL NULL NULL +309 val_309 NULL NULL NULL NULL +310 val_310 NULL NULL NULL NULL +311 val_311 NULL NULL NULL NULL +311 val_311 NULL NULL NULL NULL +311 val_311 NULL NULL NULL NULL +315 val_315 NULL NULL NULL NULL +316 val_316 NULL NULL NULL NULL +316 val_316 NULL NULL NULL NULL +316 val_316 NULL NULL NULL NULL +317 val_317 NULL NULL NULL NULL +317 val_317 NULL NULL NULL NULL +318 val_318 NULL NULL NULL NULL +318 val_318 NULL NULL NULL NULL +318 val_318 NULL NULL NULL NULL +321 val_321 NULL NULL NULL NULL +321 val_321 NULL NULL NULL NULL +322 val_322 NULL NULL NULL NULL +322 val_322 NULL NULL NULL NULL +323 val_323 NULL NULL NULL NULL +325 val_325 NULL NULL NULL NULL +325 val_325 NULL NULL NULL NULL +327 val_327 NULL NULL NULL NULL +327 val_327 NULL NULL NULL NULL +327 val_327 NULL NULL NULL NULL +33 val_33 NULL NULL NULL NULL +331 val_331 NULL NULL NULL NULL +331 val_331 NULL NULL NULL NULL +332 val_332 NULL NULL NULL NULL +333 val_333 NULL NULL NULL NULL +333 val_333 NULL NULL NULL NULL +335 val_335 NULL NULL NULL NULL +336 val_336 NULL NULL NULL NULL +338 val_338 NULL NULL NULL NULL +339 val_339 NULL NULL NULL NULL +34 val_34 NULL NULL NULL NULL +341 val_341 NULL NULL NULL NULL +342 val_342 NULL NULL NULL NULL +342 val_342 NULL NULL NULL NULL +344 val_344 NULL NULL NULL NULL +344 val_344 NULL NULL NULL NULL +345 val_345 NULL NULL NULL NULL +348 val_348 NULL NULL NULL NULL +348 val_348 NULL NULL NULL NULL +348 val_348 NULL NULL NULL NULL +348 val_348 NULL NULL NULL NULL +348 val_348 NULL NULL NULL NULL +35 val_35 NULL NULL NULL NULL +35 val_35 NULL NULL NULL NULL +35 val_35 NULL NULL NULL NULL +351 val_351 NULL NULL NULL NULL +353 val_353 NULL NULL NULL NULL +353 val_353 NULL NULL NULL NULL +356 val_356 NULL NULL NULL NULL +360 val_360 NULL NULL NULL NULL +362 val_362 NULL NULL NULL NULL +364 val_364 NULL NULL NULL NULL +365 val_365 NULL NULL NULL NULL +366 val_366 NULL NULL NULL NULL +367 val_367 NULL NULL NULL NULL +367 val_367 NULL NULL NULL NULL +368 val_368 NULL NULL NULL NULL +369 val_369 NULL NULL NULL NULL +369 val_369 NULL NULL NULL NULL +369 val_369 NULL NULL NULL NULL +37 val_37 NULL NULL NULL NULL +37 val_37 NULL NULL NULL NULL +373 val_373 NULL NULL NULL NULL +374 val_374 NULL NULL NULL NULL +375 val_375 NULL NULL NULL NULL +377 val_377 NULL NULL NULL NULL +378 val_378 NULL NULL NULL NULL +379 val_379 NULL NULL NULL NULL +382 val_382 NULL NULL NULL NULL +382 val_382 NULL NULL NULL NULL +384 val_384 NULL NULL NULL NULL +384 val_384 NULL NULL NULL NULL +384 val_384 NULL NULL NULL NULL +386 val_386 NULL NULL NULL NULL +389 val_389 NULL NULL NULL NULL +392 val_392 NULL NULL NULL NULL +393 val_393 NULL NULL NULL NULL +394 val_394 NULL NULL NULL NULL +395 val_395 NULL NULL NULL NULL +395 val_395 NULL NULL NULL NULL +396 val_396 NULL NULL NULL NULL +396 val_396 NULL NULL NULL NULL +396 val_396 NULL NULL NULL NULL +397 val_397 NULL NULL NULL NULL +397 val_397 NULL NULL NULL NULL +399 val_399 NULL NULL NULL NULL +399 val_399 NULL NULL NULL NULL +4 val_4 NULL NULL NULL NULL +400 val_400 NULL NULL NULL NULL +401 val_401 NULL NULL NULL NULL +401 val_401 NULL NULL NULL NULL +401 val_401 NULL NULL NULL NULL +401 val_401 NULL NULL NULL NULL +401 val_401 NULL NULL NULL NULL +402 val_402 NULL NULL NULL NULL +403 val_403 NULL NULL NULL NULL +403 val_403 NULL NULL NULL NULL +403 val_403 NULL NULL NULL NULL +404 val_404 NULL NULL NULL NULL +404 val_404 NULL NULL NULL NULL +406 val_406 NULL NULL NULL NULL +406 val_406 NULL NULL NULL NULL +406 val_406 NULL NULL NULL NULL +406 val_406 NULL NULL NULL NULL +407 val_407 NULL NULL NULL NULL +409 val_409 NULL NULL NULL NULL +409 val_409 NULL NULL NULL NULL +409 val_409 NULL NULL NULL NULL +41 val_41 NULL NULL NULL NULL +411 val_411 NULL NULL NULL NULL +413 val_413 NULL NULL NULL NULL +413 val_413 NULL NULL NULL NULL +414 val_414 NULL NULL NULL NULL +414 val_414 NULL NULL NULL NULL +417 val_417 NULL NULL NULL NULL +417 val_417 NULL NULL NULL NULL +417 val_417 NULL NULL NULL NULL +418 val_418 NULL NULL NULL NULL +419 val_419 NULL NULL NULL NULL +42 val_42 NULL NULL NULL NULL +42 val_42 NULL NULL NULL NULL +421 val_421 NULL NULL NULL NULL +424 val_424 NULL NULL NULL NULL +424 val_424 NULL NULL NULL NULL +427 val_427 NULL NULL NULL NULL +429 val_429 NULL NULL NULL NULL +429 val_429 NULL NULL NULL NULL +43 val_43 NULL NULL NULL NULL +430 val_430 NULL NULL NULL NULL +430 val_430 NULL NULL NULL NULL +430 val_430 NULL NULL NULL NULL +431 val_431 NULL NULL NULL NULL +431 val_431 NULL NULL NULL NULL +431 val_431 NULL NULL NULL NULL +432 val_432 NULL NULL NULL NULL +435 val_435 NULL NULL NULL NULL +436 val_436 NULL NULL NULL NULL +437 val_437 NULL NULL NULL NULL +438 val_438 NULL NULL NULL NULL +438 val_438 NULL NULL NULL NULL +438 val_438 NULL NULL NULL NULL +439 val_439 NULL NULL NULL NULL +439 val_439 NULL NULL NULL NULL +44 val_44 NULL NULL NULL NULL +443 val_443 NULL NULL NULL NULL +444 val_444 NULL NULL NULL NULL +446 val_446 NULL NULL NULL NULL +448 val_448 NULL NULL NULL NULL +449 val_449 NULL NULL NULL NULL +452 val_452 NULL NULL NULL NULL +453 val_453 NULL NULL NULL NULL +454 val_454 NULL NULL NULL NULL +454 val_454 NULL NULL NULL NULL +454 val_454 NULL NULL NULL NULL +455 val_455 NULL NULL NULL NULL +457 val_457 NULL NULL NULL NULL +458 val_458 NULL NULL NULL NULL +458 val_458 NULL NULL NULL NULL +459 val_459 NULL NULL NULL NULL +459 val_459 NULL NULL NULL NULL +460 val_460 NULL NULL NULL NULL +462 val_462 NULL NULL NULL NULL +462 val_462 NULL NULL NULL NULL +463 val_463 NULL NULL NULL NULL +463 val_463 NULL NULL NULL NULL +466 val_466 NULL NULL NULL NULL +466 val_466 NULL NULL NULL NULL +466 val_466 NULL NULL NULL NULL +467 val_467 NULL NULL NULL NULL +468 val_468 NULL NULL NULL NULL +468 val_468 NULL NULL NULL NULL +468 val_468 NULL NULL NULL NULL +468 val_468 NULL NULL NULL NULL +469 val_469 NULL NULL NULL NULL +469 val_469 NULL NULL NULL NULL +469 val_469 NULL NULL NULL NULL +469 val_469 NULL NULL NULL NULL +469 val_469 NULL NULL NULL NULL +47 val_47 NULL NULL NULL NULL +470 val_470 NULL NULL NULL NULL +472 val_472 NULL NULL NULL NULL +475 val_475 NULL NULL NULL NULL +477 val_477 NULL NULL NULL NULL +478 val_478 NULL NULL NULL NULL +478 val_478 NULL NULL NULL NULL +479 val_479 NULL NULL NULL NULL +480 val_480 NULL NULL NULL NULL +480 val_480 NULL NULL NULL NULL +480 val_480 NULL NULL NULL NULL +481 val_481 NULL NULL NULL NULL +482 val_482 NULL NULL NULL NULL +483 val_483 NULL NULL NULL NULL +484 val_484 NULL NULL NULL NULL +485 val_485 NULL NULL NULL NULL +487 val_487 NULL NULL NULL NULL +489 val_489 NULL NULL NULL NULL +489 val_489 NULL NULL NULL NULL +489 val_489 NULL NULL NULL NULL +489 val_489 NULL NULL NULL NULL +490 val_490 NULL NULL NULL NULL +491 val_491 NULL NULL NULL NULL +492 val_492 NULL NULL NULL NULL +492 val_492 NULL NULL NULL NULL +493 val_493 NULL NULL NULL NULL +494 val_494 NULL NULL NULL NULL +495 val_495 NULL NULL NULL NULL +496 val_496 NULL NULL NULL NULL +497 val_497 NULL NULL NULL NULL +498 val_498 NULL NULL NULL NULL +498 val_498 NULL NULL NULL NULL +498 val_498 NULL NULL NULL NULL +5 val_5 NULL NULL NULL NULL +5 val_5 NULL NULL NULL NULL +5 val_5 NULL NULL NULL NULL +51 val_51 NULL NULL NULL NULL +51 val_51 NULL NULL NULL NULL +53 val_53 NULL NULL NULL NULL +54 val_54 NULL NULL NULL NULL +57 val_57 NULL NULL NULL NULL +58 val_58 NULL NULL NULL NULL +58 val_58 NULL NULL NULL NULL +64 val_64 NULL NULL NULL NULL +65 val_65 NULL NULL NULL NULL +66 val_66 NULL NULL NULL NULL +67 val_67 NULL NULL NULL NULL +67 val_67 NULL NULL NULL NULL +69 val_69 NULL NULL NULL NULL +70 val_70 NULL NULL NULL NULL +70 val_70 NULL NULL NULL NULL +70 val_70 NULL NULL NULL NULL +72 val_72 NULL NULL NULL NULL +72 val_72 NULL NULL NULL NULL +74 val_74 NULL NULL NULL NULL +76 val_76 NULL NULL NULL NULL +76 val_76 NULL NULL NULL NULL +77 val_77 NULL NULL NULL NULL +78 val_78 NULL NULL NULL NULL +8 val_8 NULL NULL NULL NULL +80 val_80 NULL NULL NULL NULL +82 val_82 NULL NULL NULL NULL +83 val_83 NULL NULL NULL NULL +83 val_83 NULL NULL NULL NULL +84 val_84 NULL NULL NULL NULL +84 val_84 NULL NULL NULL NULL +85 val_85 NULL NULL NULL NULL +86 val_86 NULL NULL NULL NULL +87 val_87 NULL NULL NULL NULL +9 val_9 NULL NULL NULL NULL +90 val_90 NULL NULL NULL NULL +90 val_90 NULL NULL NULL NULL +90 val_90 NULL NULL NULL NULL +92 val_92 NULL NULL NULL NULL +95 val_95 NULL NULL NULL NULL +95 val_95 NULL NULL NULL NULL +96 val_96 NULL NULL NULL NULL +97 val_97 NULL NULL NULL NULL +97 val_97 NULL NULL NULL NULL +98 val_98 NULL NULL NULL NULL +98 val_98 NULL NULL NULL NULL +PREHOOK: query: explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key < 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 5 + Map Operator Tree: + TableScan + alias: src3 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key < 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Right Outer Join0 to 1 + Left Outer Join1 to 2 + filter predicates: + 0 + 1 {(KEY.reducesinkkey0 > 10)} + 2 + keys: + 0 key (type: string) + 1 key (type: string) + 2 key (type: string) + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) + sort order: ++++++ + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 10 val_10 NULL NULL +NULL NULL 100 val_100 NULL NULL +NULL NULL 100 val_100 NULL NULL +NULL NULL 103 val_103 NULL NULL +NULL NULL 103 val_103 NULL NULL +NULL NULL 104 val_104 NULL NULL +NULL NULL 104 val_104 NULL NULL +NULL NULL 105 val_105 NULL NULL +NULL NULL 11 val_11 NULL NULL +NULL NULL 111 val_111 NULL NULL +NULL NULL 113 val_113 NULL NULL +NULL NULL 113 val_113 NULL NULL +NULL NULL 114 val_114 NULL NULL +NULL NULL 116 val_116 NULL NULL +NULL NULL 118 val_118 NULL NULL +NULL NULL 118 val_118 NULL NULL +NULL NULL 119 val_119 NULL NULL +NULL NULL 119 val_119 NULL NULL +NULL NULL 119 val_119 NULL NULL +NULL NULL 12 val_12 NULL NULL +NULL NULL 12 val_12 NULL NULL +NULL NULL 120 val_120 NULL NULL +NULL NULL 120 val_120 NULL NULL +NULL NULL 125 val_125 NULL NULL +NULL NULL 125 val_125 NULL NULL +NULL NULL 126 val_126 NULL NULL +NULL NULL 128 val_128 NULL NULL +NULL NULL 128 val_128 NULL NULL +NULL NULL 128 val_128 NULL NULL +NULL NULL 129 val_129 NULL NULL +NULL NULL 129 val_129 NULL NULL +NULL NULL 131 val_131 NULL NULL +NULL NULL 133 val_133 NULL NULL +NULL NULL 134 val_134 NULL NULL +NULL NULL 134 val_134 NULL NULL +NULL NULL 136 val_136 NULL NULL +NULL NULL 137 val_137 NULL NULL +NULL NULL 137 val_137 NULL NULL +NULL NULL 138 val_138 NULL NULL +NULL NULL 138 val_138 NULL NULL +NULL NULL 138 val_138 NULL NULL +NULL NULL 138 val_138 NULL NULL +NULL NULL 143 val_143 NULL NULL +NULL NULL 145 val_145 NULL NULL +NULL NULL 146 val_146 NULL NULL +NULL NULL 146 val_146 NULL NULL +NULL NULL 149 val_149 NULL NULL +NULL NULL 149 val_149 NULL NULL +NULL NULL 15 val_15 NULL NULL +NULL NULL 15 val_15 NULL NULL +NULL NULL 150 val_150 NULL NULL +NULL NULL 152 val_152 NULL NULL +NULL NULL 152 val_152 NULL NULL +NULL NULL 153 val_153 NULL NULL +NULL NULL 155 val_155 NULL NULL +NULL NULL 156 val_156 NULL NULL +NULL NULL 157 val_157 NULL NULL +NULL NULL 158 val_158 NULL NULL +NULL NULL 160 val_160 NULL NULL +NULL NULL 162 val_162 NULL NULL +NULL NULL 163 val_163 NULL NULL +NULL NULL 164 val_164 NULL NULL +NULL NULL 164 val_164 NULL NULL +NULL NULL 165 val_165 NULL NULL +NULL NULL 165 val_165 NULL NULL +NULL NULL 166 val_166 NULL NULL +NULL NULL 167 val_167 NULL NULL +NULL NULL 167 val_167 NULL NULL +NULL NULL 167 val_167 NULL NULL +NULL NULL 168 val_168 NULL NULL +NULL NULL 169 val_169 NULL NULL +NULL NULL 169 val_169 NULL NULL +NULL NULL 169 val_169 NULL NULL +NULL NULL 169 val_169 NULL NULL +NULL NULL 17 val_17 NULL NULL +NULL NULL 170 val_170 NULL NULL +NULL NULL 172 val_172 NULL NULL +NULL NULL 172 val_172 NULL NULL +NULL NULL 174 val_174 NULL NULL +NULL NULL 174 val_174 NULL NULL +NULL NULL 175 val_175 NULL NULL +NULL NULL 175 val_175 NULL NULL +NULL NULL 176 val_176 NULL NULL +NULL NULL 176 val_176 NULL NULL +NULL NULL 177 val_177 NULL NULL +NULL NULL 178 val_178 NULL NULL +NULL NULL 179 val_179 NULL NULL +NULL NULL 179 val_179 NULL NULL +NULL NULL 18 val_18 NULL NULL +NULL NULL 18 val_18 NULL NULL +NULL NULL 180 val_180 NULL NULL +NULL NULL 181 val_181 NULL NULL +NULL NULL 183 val_183 NULL NULL +NULL NULL 186 val_186 NULL NULL +NULL NULL 187 val_187 NULL NULL +NULL NULL 187 val_187 NULL NULL +NULL NULL 187 val_187 NULL NULL +NULL NULL 189 val_189 NULL NULL +NULL NULL 19 val_19 NULL NULL +NULL NULL 190 val_190 NULL NULL +NULL NULL 191 val_191 NULL NULL +NULL NULL 191 val_191 NULL NULL +NULL NULL 192 val_192 NULL NULL +NULL NULL 193 val_193 NULL NULL +NULL NULL 193 val_193 NULL NULL +NULL NULL 193 val_193 NULL NULL +NULL NULL 194 val_194 NULL NULL +NULL NULL 195 val_195 NULL NULL +NULL NULL 195 val_195 NULL NULL +NULL NULL 196 val_196 NULL NULL +NULL NULL 197 val_197 NULL NULL +NULL NULL 197 val_197 NULL NULL +NULL NULL 199 val_199 NULL NULL +NULL NULL 199 val_199 NULL NULL +NULL NULL 199 val_199 NULL NULL +NULL NULL 2 val_2 2 val_2 +NULL NULL 20 val_20 NULL NULL +NULL NULL 200 val_200 NULL NULL +NULL NULL 200 val_200 NULL NULL +NULL NULL 201 val_201 NULL NULL +NULL NULL 202 val_202 NULL NULL +NULL NULL 203 val_203 NULL NULL +NULL NULL 203 val_203 NULL NULL +NULL NULL 205 val_205 NULL NULL +NULL NULL 205 val_205 NULL NULL +NULL NULL 207 val_207 NULL NULL +NULL NULL 207 val_207 NULL NULL +NULL NULL 208 val_208 NULL NULL +NULL NULL 208 val_208 NULL NULL +NULL NULL 208 val_208 NULL NULL +NULL NULL 209 val_209 NULL NULL +NULL NULL 209 val_209 NULL NULL +NULL NULL 213 val_213 NULL NULL +NULL NULL 213 val_213 NULL NULL +NULL NULL 214 val_214 NULL NULL +NULL NULL 216 val_216 NULL NULL +NULL NULL 216 val_216 NULL NULL +NULL NULL 217 val_217 NULL NULL +NULL NULL 217 val_217 NULL NULL +NULL NULL 218 val_218 NULL NULL +NULL NULL 219 val_219 NULL NULL +NULL NULL 219 val_219 NULL NULL +NULL NULL 221 val_221 NULL NULL +NULL NULL 221 val_221 NULL NULL +NULL NULL 222 val_222 NULL NULL +NULL NULL 223 val_223 NULL NULL +NULL NULL 223 val_223 NULL NULL +NULL NULL 224 val_224 NULL NULL +NULL NULL 224 val_224 NULL NULL +NULL NULL 226 val_226 NULL NULL +NULL NULL 228 val_228 NULL NULL +NULL NULL 229 val_229 NULL NULL +NULL NULL 229 val_229 NULL NULL +NULL NULL 230 val_230 NULL NULL +NULL NULL 230 val_230 NULL NULL +NULL NULL 230 val_230 NULL NULL +NULL NULL 230 val_230 NULL NULL +NULL NULL 230 val_230 NULL NULL +NULL NULL 233 val_233 NULL NULL +NULL NULL 233 val_233 NULL NULL +NULL NULL 235 val_235 NULL NULL +NULL NULL 237 val_237 NULL NULL +NULL NULL 237 val_237 NULL NULL +NULL NULL 238 val_238 NULL NULL +NULL NULL 238 val_238 NULL NULL +NULL NULL 239 val_239 NULL NULL +NULL NULL 239 val_239 NULL NULL +NULL NULL 24 val_24 NULL NULL +NULL NULL 24 val_24 NULL NULL +NULL NULL 241 val_241 NULL NULL +NULL NULL 242 val_242 NULL NULL +NULL NULL 242 val_242 NULL NULL +NULL NULL 244 val_244 NULL NULL +NULL NULL 247 val_247 NULL NULL +NULL NULL 248 val_248 NULL NULL +NULL NULL 249 val_249 NULL NULL +NULL NULL 252 val_252 NULL NULL +NULL NULL 255 val_255 NULL NULL +NULL NULL 255 val_255 NULL NULL +NULL NULL 256 val_256 NULL NULL +NULL NULL 256 val_256 NULL NULL +NULL NULL 257 val_257 NULL NULL +NULL NULL 258 val_258 NULL NULL +NULL NULL 26 val_26 NULL NULL +NULL NULL 26 val_26 NULL NULL +NULL NULL 260 val_260 NULL NULL +NULL NULL 262 val_262 NULL NULL +NULL NULL 263 val_263 NULL NULL +NULL NULL 265 val_265 NULL NULL +NULL NULL 265 val_265 NULL NULL +NULL NULL 266 val_266 NULL NULL +NULL NULL 27 val_27 NULL NULL +NULL NULL 272 val_272 NULL NULL +NULL NULL 272 val_272 NULL NULL +NULL NULL 273 val_273 NULL NULL +NULL NULL 273 val_273 NULL NULL +NULL NULL 273 val_273 NULL NULL +NULL NULL 274 val_274 NULL NULL +NULL NULL 275 val_275 NULL NULL +NULL NULL 277 val_277 NULL NULL +NULL NULL 277 val_277 NULL NULL +NULL NULL 277 val_277 NULL NULL +NULL NULL 277 val_277 NULL NULL +NULL NULL 278 val_278 NULL NULL +NULL NULL 278 val_278 NULL NULL +NULL NULL 28 val_28 NULL NULL +NULL NULL 280 val_280 NULL NULL +NULL NULL 280 val_280 NULL NULL +NULL NULL 281 val_281 NULL NULL +NULL NULL 281 val_281 NULL NULL +NULL NULL 282 val_282 NULL NULL +NULL NULL 282 val_282 NULL NULL +NULL NULL 283 val_283 NULL NULL +NULL NULL 284 val_284 NULL NULL +NULL NULL 285 val_285 NULL NULL +NULL NULL 286 val_286 NULL NULL +NULL NULL 287 val_287 NULL NULL +NULL NULL 288 val_288 NULL NULL +NULL NULL 288 val_288 NULL NULL +NULL NULL 289 val_289 NULL NULL +NULL NULL 291 val_291 NULL NULL +NULL NULL 292 val_292 NULL NULL +NULL NULL 296 val_296 NULL NULL +NULL NULL 298 val_298 NULL NULL +NULL NULL 298 val_298 NULL NULL +NULL NULL 298 val_298 NULL NULL +NULL NULL 30 val_30 NULL NULL +NULL NULL 302 val_302 NULL NULL +NULL NULL 305 val_305 NULL NULL +NULL NULL 306 val_306 NULL NULL +NULL NULL 307 val_307 NULL NULL +NULL NULL 307 val_307 NULL NULL +NULL NULL 308 val_308 NULL NULL +NULL NULL 309 val_309 NULL NULL +NULL NULL 309 val_309 NULL NULL +NULL NULL 310 val_310 NULL NULL +NULL NULL 311 val_311 NULL NULL +NULL NULL 311 val_311 NULL NULL +NULL NULL 311 val_311 NULL NULL +NULL NULL 315 val_315 NULL NULL +NULL NULL 316 val_316 NULL NULL +NULL NULL 316 val_316 NULL NULL +NULL NULL 316 val_316 NULL NULL +NULL NULL 317 val_317 NULL NULL +NULL NULL 317 val_317 NULL NULL +NULL NULL 318 val_318 NULL NULL +NULL NULL 318 val_318 NULL NULL +NULL NULL 318 val_318 NULL NULL +NULL NULL 321 val_321 NULL NULL +NULL NULL 321 val_321 NULL NULL +NULL NULL 322 val_322 NULL NULL +NULL NULL 322 val_322 NULL NULL +NULL NULL 323 val_323 NULL NULL +NULL NULL 325 val_325 NULL NULL +NULL NULL 325 val_325 NULL NULL +NULL NULL 327 val_327 NULL NULL +NULL NULL 327 val_327 NULL NULL +NULL NULL 327 val_327 NULL NULL +NULL NULL 33 val_33 NULL NULL +NULL NULL 331 val_331 NULL NULL +NULL NULL 331 val_331 NULL NULL +NULL NULL 332 val_332 NULL NULL +NULL NULL 333 val_333 NULL NULL +NULL NULL 333 val_333 NULL NULL +NULL NULL 335 val_335 NULL NULL +NULL NULL 336 val_336 NULL NULL +NULL NULL 338 val_338 NULL NULL +NULL NULL 339 val_339 NULL NULL +NULL NULL 34 val_34 NULL NULL +NULL NULL 341 val_341 NULL NULL +NULL NULL 342 val_342 NULL NULL +NULL NULL 342 val_342 NULL NULL +NULL NULL 344 val_344 NULL NULL +NULL NULL 344 val_344 NULL NULL +NULL NULL 345 val_345 NULL NULL +NULL NULL 348 val_348 NULL NULL +NULL NULL 348 val_348 NULL NULL +NULL NULL 348 val_348 NULL NULL +NULL NULL 348 val_348 NULL NULL +NULL NULL 348 val_348 NULL NULL +NULL NULL 35 val_35 NULL NULL +NULL NULL 35 val_35 NULL NULL +NULL NULL 35 val_35 NULL NULL +NULL NULL 351 val_351 NULL NULL +NULL NULL 353 val_353 NULL NULL +NULL NULL 353 val_353 NULL NULL +NULL NULL 356 val_356 NULL NULL +NULL NULL 360 val_360 NULL NULL +NULL NULL 362 val_362 NULL NULL +NULL NULL 364 val_364 NULL NULL +NULL NULL 365 val_365 NULL NULL +NULL NULL 366 val_366 NULL NULL +NULL NULL 367 val_367 NULL NULL +NULL NULL 367 val_367 NULL NULL +NULL NULL 368 val_368 NULL NULL +NULL NULL 369 val_369 NULL NULL +NULL NULL 369 val_369 NULL NULL +NULL NULL 369 val_369 NULL NULL +NULL NULL 37 val_37 NULL NULL +NULL NULL 37 val_37 NULL NULL +NULL NULL 373 val_373 NULL NULL +NULL NULL 374 val_374 NULL NULL +NULL NULL 375 val_375 NULL NULL +NULL NULL 377 val_377 NULL NULL +NULL NULL 378 val_378 NULL NULL +NULL NULL 379 val_379 NULL NULL +NULL NULL 382 val_382 NULL NULL +NULL NULL 382 val_382 NULL NULL +NULL NULL 384 val_384 NULL NULL +NULL NULL 384 val_384 NULL NULL +NULL NULL 384 val_384 NULL NULL +NULL NULL 386 val_386 NULL NULL +NULL NULL 389 val_389 NULL NULL +NULL NULL 392 val_392 NULL NULL +NULL NULL 393 val_393 NULL NULL +NULL NULL 394 val_394 NULL NULL +NULL NULL 395 val_395 NULL NULL +NULL NULL 395 val_395 NULL NULL +NULL NULL 396 val_396 NULL NULL +NULL NULL 396 val_396 NULL NULL +NULL NULL 396 val_396 NULL NULL +NULL NULL 397 val_397 NULL NULL +NULL NULL 397 val_397 NULL NULL +NULL NULL 399 val_399 NULL NULL +NULL NULL 399 val_399 NULL NULL +NULL NULL 4 val_4 4 val_4 +NULL NULL 400 val_400 NULL NULL +NULL NULL 401 val_401 NULL NULL +NULL NULL 401 val_401 NULL NULL +NULL NULL 401 val_401 NULL NULL +NULL NULL 401 val_401 NULL NULL +NULL NULL 401 val_401 NULL NULL +NULL NULL 402 val_402 NULL NULL +NULL NULL 403 val_403 NULL NULL +NULL NULL 403 val_403 NULL NULL +NULL NULL 403 val_403 NULL NULL +NULL NULL 404 val_404 NULL NULL +NULL NULL 404 val_404 NULL NULL +NULL NULL 406 val_406 NULL NULL +NULL NULL 406 val_406 NULL NULL +NULL NULL 406 val_406 NULL NULL +NULL NULL 406 val_406 NULL NULL +NULL NULL 407 val_407 NULL NULL +NULL NULL 409 val_409 NULL NULL +NULL NULL 409 val_409 NULL NULL +NULL NULL 409 val_409 NULL NULL +NULL NULL 41 val_41 NULL NULL +NULL NULL 411 val_411 NULL NULL +NULL NULL 413 val_413 NULL NULL +NULL NULL 413 val_413 NULL NULL +NULL NULL 414 val_414 NULL NULL +NULL NULL 414 val_414 NULL NULL +NULL NULL 417 val_417 NULL NULL +NULL NULL 417 val_417 NULL NULL +NULL NULL 417 val_417 NULL NULL +NULL NULL 418 val_418 NULL NULL +NULL NULL 419 val_419 NULL NULL +NULL NULL 42 val_42 NULL NULL +NULL NULL 42 val_42 NULL NULL +NULL NULL 421 val_421 NULL NULL +NULL NULL 424 val_424 NULL NULL +NULL NULL 424 val_424 NULL NULL +NULL NULL 427 val_427 NULL NULL +NULL NULL 429 val_429 NULL NULL +NULL NULL 429 val_429 NULL NULL +NULL NULL 43 val_43 NULL NULL +NULL NULL 430 val_430 NULL NULL +NULL NULL 430 val_430 NULL NULL +NULL NULL 430 val_430 NULL NULL +NULL NULL 431 val_431 NULL NULL +NULL NULL 431 val_431 NULL NULL +NULL NULL 431 val_431 NULL NULL +NULL NULL 432 val_432 NULL NULL +NULL NULL 435 val_435 NULL NULL +NULL NULL 436 val_436 NULL NULL +NULL NULL 437 val_437 NULL NULL +NULL NULL 438 val_438 NULL NULL +NULL NULL 438 val_438 NULL NULL +NULL NULL 438 val_438 NULL NULL +NULL NULL 439 val_439 NULL NULL +NULL NULL 439 val_439 NULL NULL +NULL NULL 44 val_44 NULL NULL +NULL NULL 443 val_443 NULL NULL +NULL NULL 444 val_444 NULL NULL +NULL NULL 446 val_446 NULL NULL +NULL NULL 448 val_448 NULL NULL +NULL NULL 449 val_449 NULL NULL +NULL NULL 452 val_452 NULL NULL +NULL NULL 453 val_453 NULL NULL +NULL NULL 454 val_454 NULL NULL +NULL NULL 454 val_454 NULL NULL +NULL NULL 454 val_454 NULL NULL +NULL NULL 455 val_455 NULL NULL +NULL NULL 457 val_457 NULL NULL +NULL NULL 458 val_458 NULL NULL +NULL NULL 458 val_458 NULL NULL +NULL NULL 459 val_459 NULL NULL +NULL NULL 459 val_459 NULL NULL +NULL NULL 460 val_460 NULL NULL +NULL NULL 462 val_462 NULL NULL +NULL NULL 462 val_462 NULL NULL +NULL NULL 463 val_463 NULL NULL +NULL NULL 463 val_463 NULL NULL +NULL NULL 466 val_466 NULL NULL +NULL NULL 466 val_466 NULL NULL +NULL NULL 466 val_466 NULL NULL +NULL NULL 467 val_467 NULL NULL +NULL NULL 468 val_468 NULL NULL +NULL NULL 468 val_468 NULL NULL +NULL NULL 468 val_468 NULL NULL +NULL NULL 468 val_468 NULL NULL +NULL NULL 469 val_469 NULL NULL +NULL NULL 469 val_469 NULL NULL +NULL NULL 469 val_469 NULL NULL +NULL NULL 469 val_469 NULL NULL +NULL NULL 469 val_469 NULL NULL +NULL NULL 47 val_47 NULL NULL +NULL NULL 470 val_470 NULL NULL +NULL NULL 472 val_472 NULL NULL +NULL NULL 475 val_475 NULL NULL +NULL NULL 477 val_477 NULL NULL +NULL NULL 478 val_478 NULL NULL +NULL NULL 478 val_478 NULL NULL +NULL NULL 479 val_479 NULL NULL +NULL NULL 480 val_480 NULL NULL +NULL NULL 480 val_480 NULL NULL +NULL NULL 480 val_480 NULL NULL +NULL NULL 481 val_481 NULL NULL +NULL NULL 482 val_482 NULL NULL +NULL NULL 483 val_483 NULL NULL +NULL NULL 484 val_484 NULL NULL +NULL NULL 485 val_485 NULL NULL +NULL NULL 487 val_487 NULL NULL +NULL NULL 489 val_489 NULL NULL +NULL NULL 489 val_489 NULL NULL +NULL NULL 489 val_489 NULL NULL +NULL NULL 489 val_489 NULL NULL +NULL NULL 490 val_490 NULL NULL +NULL NULL 491 val_491 NULL NULL +NULL NULL 492 val_492 NULL NULL +NULL NULL 492 val_492 NULL NULL +NULL NULL 493 val_493 NULL NULL +NULL NULL 494 val_494 NULL NULL +NULL NULL 495 val_495 NULL NULL +NULL NULL 496 val_496 NULL NULL +NULL NULL 497 val_497 NULL NULL +NULL NULL 498 val_498 NULL NULL +NULL NULL 498 val_498 NULL NULL +NULL NULL 498 val_498 NULL NULL +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 51 val_51 NULL NULL +NULL NULL 51 val_51 NULL NULL +NULL NULL 53 val_53 NULL NULL +NULL NULL 54 val_54 NULL NULL +NULL NULL 57 val_57 NULL NULL +NULL NULL 58 val_58 NULL NULL +NULL NULL 58 val_58 NULL NULL +NULL NULL 64 val_64 NULL NULL +NULL NULL 65 val_65 NULL NULL +NULL NULL 66 val_66 NULL NULL +NULL NULL 67 val_67 NULL NULL +NULL NULL 67 val_67 NULL NULL +NULL NULL 69 val_69 NULL NULL +NULL NULL 70 val_70 NULL NULL +NULL NULL 70 val_70 NULL NULL +NULL NULL 70 val_70 NULL NULL +NULL NULL 72 val_72 NULL NULL +NULL NULL 72 val_72 NULL NULL +NULL NULL 74 val_74 NULL NULL +NULL NULL 76 val_76 NULL NULL +NULL NULL 76 val_76 NULL NULL +NULL NULL 77 val_77 NULL NULL +NULL NULL 78 val_78 NULL NULL +NULL NULL 8 val_8 8 val_8 +NULL NULL 80 val_80 NULL NULL +NULL NULL 82 val_82 NULL NULL +NULL NULL 83 val_83 NULL NULL +NULL NULL 83 val_83 NULL NULL +NULL NULL 84 val_84 NULL NULL +NULL NULL 84 val_84 NULL NULL +NULL NULL 85 val_85 NULL NULL +NULL NULL 86 val_86 NULL NULL +NULL NULL 87 val_87 NULL NULL +NULL NULL 9 val_9 9 val_9 +NULL NULL 90 val_90 NULL NULL +NULL NULL 90 val_90 NULL NULL +NULL NULL 90 val_90 NULL NULL +NULL NULL 92 val_92 NULL NULL +NULL NULL 95 val_95 NULL NULL +NULL NULL 95 val_95 NULL NULL +NULL NULL 96 val_96 NULL NULL +NULL NULL 97 val_97 NULL NULL +NULL NULL 97 val_97 NULL NULL +NULL NULL 98 val_98 NULL NULL +NULL NULL 98 val_98 NULL NULL +PREHOOK: query: explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key < 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 5 + Map Operator Tree: + TableScan + alias: src3 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Right Outer Join0 to 1 + Right Outer Join1 to 2 + filter predicates: + 0 + 1 {(KEY.reducesinkkey0 > 10)} + 2 {(KEY.reducesinkkey0 < 10)} + keys: + 0 key (type: string) + 1 key (type: string) + 2 key (type: string) + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) + sort order: ++++++ + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 2 val_2 2 val_2 +NULL NULL 4 val_4 4 val_4 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 8 val_8 8 val_8 +NULL NULL 9 val_9 9 val_9 +NULL NULL NULL NULL 10 val_10 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 105 val_105 +NULL NULL NULL NULL 11 val_11 +NULL NULL NULL NULL 111 val_111 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 114 val_114 +NULL NULL NULL NULL 116 val_116 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 126 val_126 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 131 val_131 +NULL NULL NULL NULL 133 val_133 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 136 val_136 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 143 val_143 +NULL NULL NULL NULL 145 val_145 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 150 val_150 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 153 val_153 +NULL NULL NULL NULL 155 val_155 +NULL NULL NULL NULL 156 val_156 +NULL NULL NULL NULL 157 val_157 +NULL NULL NULL NULL 158 val_158 +NULL NULL NULL NULL 160 val_160 +NULL NULL NULL NULL 162 val_162 +NULL NULL NULL NULL 163 val_163 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 166 val_166 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 168 val_168 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 17 val_17 +NULL NULL NULL NULL 170 val_170 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 177 val_177 +NULL NULL NULL NULL 178 val_178 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 180 val_180 +NULL NULL NULL NULL 181 val_181 +NULL NULL NULL NULL 183 val_183 +NULL NULL NULL NULL 186 val_186 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 189 val_189 +NULL NULL NULL NULL 19 val_19 +NULL NULL NULL NULL 190 val_190 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 192 val_192 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 194 val_194 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 196 val_196 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 20 val_20 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 201 val_201 +NULL NULL NULL NULL 202 val_202 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 214 val_214 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 218 val_218 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 222 val_222 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 226 val_226 +NULL NULL NULL NULL 228 val_228 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 235 val_235 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 241 val_241 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 244 val_244 +NULL NULL NULL NULL 247 val_247 +NULL NULL NULL NULL 248 val_248 +NULL NULL NULL NULL 249 val_249 +NULL NULL NULL NULL 252 val_252 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 257 val_257 +NULL NULL NULL NULL 258 val_258 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 260 val_260 +NULL NULL NULL NULL 262 val_262 +NULL NULL NULL NULL 263 val_263 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 266 val_266 +NULL NULL NULL NULL 27 val_27 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 274 val_274 +NULL NULL NULL NULL 275 val_275 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 28 val_28 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 283 val_283 +NULL NULL NULL NULL 284 val_284 +NULL NULL NULL NULL 285 val_285 +NULL NULL NULL NULL 286 val_286 +NULL NULL NULL NULL 287 val_287 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 289 val_289 +NULL NULL NULL NULL 291 val_291 +NULL NULL NULL NULL 292 val_292 +NULL NULL NULL NULL 296 val_296 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 30 val_30 +NULL NULL NULL NULL 302 val_302 +NULL NULL NULL NULL 305 val_305 +NULL NULL NULL NULL 306 val_306 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 308 val_308 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 310 val_310 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 315 val_315 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 323 val_323 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 33 val_33 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 332 val_332 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 335 val_335 +NULL NULL NULL NULL 336 val_336 +NULL NULL NULL NULL 338 val_338 +NULL NULL NULL NULL 339 val_339 +NULL NULL NULL NULL 34 val_34 +NULL NULL NULL NULL 341 val_341 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 345 val_345 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 351 val_351 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 356 val_356 +NULL NULL NULL NULL 360 val_360 +NULL NULL NULL NULL 362 val_362 +NULL NULL NULL NULL 364 val_364 +NULL NULL NULL NULL 365 val_365 +NULL NULL NULL NULL 366 val_366 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 368 val_368 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 373 val_373 +NULL NULL NULL NULL 374 val_374 +NULL NULL NULL NULL 375 val_375 +NULL NULL NULL NULL 377 val_377 +NULL NULL NULL NULL 378 val_378 +NULL NULL NULL NULL 379 val_379 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 386 val_386 +NULL NULL NULL NULL 389 val_389 +NULL NULL NULL NULL 392 val_392 +NULL NULL NULL NULL 393 val_393 +NULL NULL NULL NULL 394 val_394 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 400 val_400 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 402 val_402 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 407 val_407 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 41 val_41 +NULL NULL NULL NULL 411 val_411 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 418 val_418 +NULL NULL NULL NULL 419 val_419 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 421 val_421 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 427 val_427 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 43 val_43 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 432 val_432 +NULL NULL NULL NULL 435 val_435 +NULL NULL NULL NULL 436 val_436 +NULL NULL NULL NULL 437 val_437 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 44 val_44 +NULL NULL NULL NULL 443 val_443 +NULL NULL NULL NULL 444 val_444 +NULL NULL NULL NULL 446 val_446 +NULL NULL NULL NULL 448 val_448 +NULL NULL NULL NULL 449 val_449 +NULL NULL NULL NULL 452 val_452 +NULL NULL NULL NULL 453 val_453 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 455 val_455 +NULL NULL NULL NULL 457 val_457 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 460 val_460 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 467 val_467 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 47 val_47 +NULL NULL NULL NULL 470 val_470 +NULL NULL NULL NULL 472 val_472 +NULL NULL NULL NULL 475 val_475 +NULL NULL NULL NULL 477 val_477 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 479 val_479 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 481 val_481 +NULL NULL NULL NULL 482 val_482 +NULL NULL NULL NULL 483 val_483 +NULL NULL NULL NULL 484 val_484 +NULL NULL NULL NULL 485 val_485 +NULL NULL NULL NULL 487 val_487 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 490 val_490 +NULL NULL NULL NULL 491 val_491 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 493 val_493 +NULL NULL NULL NULL 494 val_494 +NULL NULL NULL NULL 495 val_495 +NULL NULL NULL NULL 496 val_496 +NULL NULL NULL NULL 497 val_497 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 53 val_53 +NULL NULL NULL NULL 54 val_54 +NULL NULL NULL NULL 57 val_57 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 64 val_64 +NULL NULL NULL NULL 65 val_65 +NULL NULL NULL NULL 66 val_66 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 69 val_69 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 74 val_74 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 77 val_77 +NULL NULL NULL NULL 78 val_78 +NULL NULL NULL NULL 80 val_80 +NULL NULL NULL NULL 82 val_82 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 85 val_85 +NULL NULL NULL NULL 86 val_86 +NULL NULL NULL NULL 87 val_87 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 92 val_92 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 96 val_96 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 98 val_98 +PREHOOK: query: explain +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key > 10) and (key < 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key < 10) and (key > 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 5 + Map Operator Tree: + TableScan + alias: src3 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key > 10) and (key < 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Left Outer Join1 to 2 + keys: + 0 key (type: string) + 1 key (type: string) + 2 key (type: string) + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) + sort order: ++++++ + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +PREHOOK: query: explain +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key > 10) and (key < 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key < 10) and (key > 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 5 + Map Operator Tree: + TableScan + alias: src3 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Right Outer Join1 to 2 + filter predicates: + 0 + 1 + 2 {(KEY.reducesinkkey0 < 10)} + keys: + 0 key (type: string) + 1 key (type: string) + 2 key (type: string) + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) + sort order: ++++++ + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +PREHOOK: query: explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 1 <- Map 3 (BROADCAST_EDGE), Map 4 (BROADCAST_EDGE) + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Left Outer Join0 to 1 + Inner Join 1 to 2 + filter predicates: + 0 {(key < 10)} + 1 + 2 + keys: + 0 key (type: string) + 1 key (type: string) + 2 key (type: string) + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + input vertices: + 1 Map 3 + 2 Map 4 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) + sort order: ++++++ + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Map 3 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key < 10) and (key > 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src3 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key > 10) and (key < 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +PREHOOK: query: explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 2 <- Map 1 (BROADCAST_EDGE), Map 4 (BROADCAST_EDGE) + Reducer 3 <- Map 2 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key < 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 2 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key < 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Right Outer Join0 to 1 + Inner Join 1 to 2 + filter predicates: + 0 + 1 {(key > 10)} + 2 + keys: + 0 key (type: string) + 1 key (type: string) + 2 key (type: string) + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + input vertices: + 0 Map 1 + 2 Map 4 + Statistics: Num rows: 365 Data size: 3878 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 365 Data size: 3878 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) + sort order: ++++++ + Statistics: Num rows: 365 Data size: 3878 Basic stats: COMPLETE Column stats: NONE + Map 4 + Map Operator Tree: + TableScan + alias: src3 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key < 10) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Reducer 3 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 365 Data size: 3878 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 365 Data size: 3878 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 0 val_0 0 val_0 +NULL NULL 2 val_2 2 val_2 +NULL NULL 4 val_4 4 val_4 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 5 val_5 5 val_5 +NULL NULL 8 val_8 8 val_8 +NULL NULL 9 val_9 9 val_9 +PREHOOK: query: explain +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 1 <- Map 3 (BROADCAST_EDGE), Map 4 (BROADCAST_EDGE) + Reducer 2 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key > 10) and (key < 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + keys: + 0 key (type: string) + 1 key (type: string) + 2 key (type: string) + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + input vertices: + 1 Map 3 + 2 Map 4 + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string), _col5 (type: string), _col6 (type: string), _col10 (type: string), _col11 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string) + sort order: ++++++ + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + Map 3 + Map Operator Tree: + TableScan + alias: src2 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key < 10) and (key > 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src3 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: ((key > 10) and (key < 10)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: string) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: string), KEY.reducesinkkey5 (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 121 Data size: 1284 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/tez/auto_join30.q.out b/ql/src/test/results/clientpositive/tez/auto_join30.q.out new file mode 100644 index 000000000000..eace88eba4ae --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/auto_join30.q.out @@ -0,0 +1,1335 @@ +PREHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +POSTHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Reducer 5 (BROADCAST_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) + Reducer 5 <- Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Map 4 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + keys: + 0 _col0 (type: string) + 1 _col0 (type: string) + outputColumnNames: _col2, _col3 + input vertices: + 1 Reducer 5 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col2,_col3)) + 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) + Reducer 3 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 5 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +103231310608 +PREHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +POSTHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Reducer 5 (BROADCAST_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) + Reducer 5 <- Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Map 4 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Left Outer Join0 to 1 + keys: + 0 _col0 (type: string) + 1 _col0 (type: string) + outputColumnNames: _col2, _col3 + input vertices: + 1 Reducer 5 + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col2,_col3)) + 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) + Reducer 3 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 5 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +103231310608 +PREHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +POSTHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 4 <- Map 3 (SIMPLE_EDGE), Reducer 2 (BROADCAST_EDGE) + Reducer 5 <- Reducer 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Map 3 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reducer 4 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Right Outer Join0 to 1 + keys: + 0 _col0 (type: string) + 1 _col0 (type: string) + outputColumnNames: _col2, _col3 + input vertices: + 0 Reducer 2 + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col2,_col3)) + 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) + Reducer 5 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +103231310608 +PREHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +POSTHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Reducer 5 (BROADCAST_EDGE), Reducer 7 (BROADCAST_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) + Reducer 5 <- Map 4 (SIMPLE_EDGE) + Reducer 7 <- Map 6 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Map 4 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Map 6 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Map Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + keys: + 0 _col0 (type: string) + 1 _col0 (type: string) + 2 _col0 (type: string) + outputColumnNames: _col2, _col3 + input vertices: + 1 Reducer 5 + 2 Reducer 7 + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col2,_col3)) + 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) + Reducer 3 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 5 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Reducer 7 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +348019368476 +PREHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +POSTHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE), Reducer 6 (SIMPLE_EDGE), Reducer 8 (SIMPLE_EDGE) + Reducer 4 <- Reducer 3 (SIMPLE_EDGE) + Reducer 6 <- Map 5 (SIMPLE_EDGE) + Reducer 8 <- Map 7 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Map 5 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Map 7 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Left Outer Join0 to 2 + keys: + 0 _col0 (type: string) + 1 _col0 (type: string) + 2 _col0 (type: string) + outputColumnNames: _col2, _col3 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col2,_col3)) + 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) + Reducer 4 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 6 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Reducer 8 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +348019368476 +PREHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +POSTHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE), Reducer 6 (SIMPLE_EDGE), Reducer 8 (SIMPLE_EDGE) + Reducer 4 <- Reducer 3 (SIMPLE_EDGE) + Reducer 6 <- Map 5 (SIMPLE_EDGE) + Reducer 8 <- Map 7 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Map 5 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Map 7 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Merge Join Operator + condition map: + Left Outer Join0 to 1 + Left Outer Join0 to 2 + keys: + 0 _col0 (type: string) + 1 _col0 (type: string) + 2 _col0 (type: string) + outputColumnNames: _col2, _col3 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col2,_col3)) + 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) + Reducer 4 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 6 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Reducer 8 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +348019368476 +PREHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +POSTHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE), Reducer 6 (SIMPLE_EDGE), Reducer 8 (SIMPLE_EDGE) + Reducer 4 <- Reducer 3 (SIMPLE_EDGE) + Reducer 6 <- Map 5 (SIMPLE_EDGE) + Reducer 8 <- Map 7 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Map 5 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Map 7 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Merge Join Operator + condition map: + Left Outer Join0 to 1 + Right Outer Join0 to 2 + keys: + 0 _col0 (type: string) + 1 _col0 (type: string) + 2 _col0 (type: string) + outputColumnNames: _col2, _col3 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col2,_col3)) + 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) + Reducer 4 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 6 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Reducer 8 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +348019368476 +PREHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +POSTHOOK: query: explain +FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE), Reducer 6 (SIMPLE_EDGE), Reducer 8 (SIMPLE_EDGE) + Reducer 4 <- Reducer 3 (SIMPLE_EDGE) + Reducer 6 <- Map 5 (SIMPLE_EDGE) + Reducer 8 <- Map 7 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Map 5 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Map 7 + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: string) + Reducer 2 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reducer 3 + Reduce Operator Tree: + Merge Join Operator + condition map: + Right Outer Join0 to 1 + Right Outer Join0 to 2 + keys: + 0 _col0 (type: string) + 1 _col0 (type: string) + 2 _col0 (type: string) + outputColumnNames: _col2, _col3 + Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: sum(hash(_col2,_col3)) + 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) + Reducer 4 + Reduce Operator Tree: + Group By Operator + aggregations: sum(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: bigint) + 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.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 6 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey0 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: string) + Reducer 8 + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string) + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +348019368476 diff --git a/ql/src/test/results/clientpositive/tez/auto_join_filters.q.out b/ql/src/test/results/clientpositive/tez/auto_join_filters.q.out new file mode 100644 index 000000000000..8fde41d3a330 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/auto_join_filters.q.out @@ -0,0 +1,540 @@ +PREHOOK: query: CREATE TABLE myinput1(key int, value int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@myinput1 +POSTHOOK: query: CREATE TABLE myinput1(key int, value int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@myinput1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in3.txt' INTO TABLE myinput1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@myinput1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in3.txt' INTO TABLE myinput1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@myinput1 +Warning: Map Join MAPJOIN[19][bigTable=?] in task 'Map 1' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +Warning: Map Join MAPJOIN[15][bigTable=a] in task 'Map 1' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4937935 +Warning: Map Join MAPJOIN[15][bigTable=b] in task 'Map 2' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3080335 +Warning: Shuffle Join MERGEJOIN[14][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4939870 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4937935 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4937935 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4937935 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4937935 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3080335 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3080335 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3080335 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3080335 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4939870 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4939870 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4939870 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4939870 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3080335 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3080335 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.key = c.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.key = c.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@smb_input1 +POSTHOOK: query: CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@smb_input1 +PREHOOK: query: CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@smb_input2 +POSTHOOK: query: CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@smb_input2 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in1.txt' into table smb_input1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@smb_input1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in1.txt' into table smb_input1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@smb_input1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in2.txt' into table smb_input1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@smb_input1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in2.txt' into table smb_input1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@smb_input1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in1.txt' into table smb_input2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@smb_input2 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in1.txt' into table smb_input2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@smb_input2 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in2.txt' into table smb_input2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@smb_input2 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in2.txt' into table smb_input2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@smb_input2 +Warning: Map Join MAPJOIN[19][bigTable=?] in task 'Map 1' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +Warning: Map Join MAPJOIN[19][bigTable=?] in task 'Map 1' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +Warning: Map Join MAPJOIN[19][bigTable=?] in task 'Map 2' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +Warning: Shuffle Join MERGEJOIN[22][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.key = c.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.key = c.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 diff --git a/ql/src/test/results/clientpositive/tez/auto_join_nulls.q.out b/ql/src/test/results/clientpositive/tez/auto_join_nulls.q.out new file mode 100644 index 000000000000..20d71f4f5c56 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/auto_join_nulls.q.out @@ -0,0 +1,217 @@ +PREHOOK: query: CREATE TABLE myinput1(key int, value int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@myinput1 +POSTHOOK: query: CREATE TABLE myinput1(key int, value int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@myinput1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in1.txt' INTO TABLE myinput1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@myinput1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in1.txt' INTO TABLE myinput1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@myinput1 +Warning: Map Join MAPJOIN[16][bigTable=?] in task 'Map 1' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +13630578 +Warning: Map Join MAPJOIN[15][bigTable=?] in task 'Map 1' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +13630578 +Warning: Map Join MAPJOIN[16][bigTable=?] in task 'Map 1' is a cross product +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +13630578 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4509856 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3112070 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3078400 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4542003 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4542038 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4543491 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4542003 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3079923 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4509891 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3113558 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3079923 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4543526 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4543526 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4543526 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +4543526 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3112070 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value) +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3113558 +PREHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +3112070 From f563db717a00da2662fdc2eddf1b6348d492cce8 Mon Sep 17 00:00:00 2001 From: Vikram Dixit K Date: Tue, 20 Jan 2015 02:41:40 +0000 Subject: [PATCH 330/339] HIVE-9141: HiveOnTez: mix of union all, distinct, group by generates error (Navis Ryu via Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1653184 13f79535-47bb-0310-9956-ffa450edef68 --- .../resources/testconfiguration.properties | 1 + .../hadoop/hive/ql/parse/GenTezWork.java | 56 +- .../test/queries/clientpositive/tez_union2.q | 32 + .../clientpositive/tez/tez_union2.q.out | 801 ++++++++++++++++++ 4 files changed, 857 insertions(+), 33 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/tez_union2.q create mode 100644 ql/src/test/results/clientpositive/tez/tez_union2.q.out diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 8e0a4d62bc65..4eeb98c51078 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -277,6 +277,7 @@ minitez.query.files=bucket_map_join_tez1.q,\ tez_joins_explain.q,\ tez_schema_evolution.q,\ tez_union.q,\ + tez_union2.q,\ tez_union_decimal.q,\ tez_union_group_by.q,\ tez_smb_main.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java index 64cfae23a8ef..6a87929b70df 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezWork.java @@ -259,6 +259,16 @@ public Object process(Node nd, Stack stack, context.currentMapJoinOperators.clear(); } + // This is where we cut the tree as described above. We also remember that + // we might have to connect parent work with this work later. + for (Operator parent : new ArrayList>(root.getParentOperators())) { + if (LOG.isDebugEnabled()) { + LOG.debug("Removing " + parent + " as parent from " + root); + } + context.leafOperatorToFollowingWork.put(parent, work); + root.removeParent(parent); + } + if (!context.currentUnionOperators.isEmpty()) { // if there are union all operators we need to add the work to the set // of union operators. @@ -288,21 +298,6 @@ public Object process(Node nd, Stack stack, work = unionWork; } - - // This is where we cut the tree as described above. We also remember that - // we might have to connect parent work with this work later. - boolean removeParents = false; - for (Operator parent: new ArrayList>(root.getParentOperators())) { - removeParents = true; - context.leafOperatorToFollowingWork.put(parent, work); - LOG.debug("Removing " + parent + " as parent from " + root); - } - if (removeParents) { - for (Operator parent : new ArrayList>(root.getParentOperators())) { - root.removeParent(parent); - } - } - // We're scanning a tree from roots to leaf (this is not technically // correct, demux and mux operators might form a diamond shape, but // we will only scan one path and ignore the others, because the @@ -350,19 +345,14 @@ public Object process(Node nd, Stack stack, // this can only be possible if there is merge work followed by the union UnionWork unionWork = (UnionWork) followingWork; int index = getFollowingWorkIndex(tezWork, unionWork, rs); - if (index != -1) { - BaseWork baseWork = tezWork.getChildren(unionWork).get(index); - if (baseWork instanceof MergeJoinWork) { - MergeJoinWork mergeJoinWork = (MergeJoinWork) baseWork; - // disconnect the connection to union work and connect to merge work - followingWork = mergeJoinWork; - rWork = (ReduceWork) mergeJoinWork.getMainWork(); - } else { - rWork = (ReduceWork) baseWork; - } + BaseWork baseWork = tezWork.getChildren(unionWork).get(index); + if (baseWork instanceof MergeJoinWork) { + MergeJoinWork mergeJoinWork = (MergeJoinWork) baseWork; + // disconnect the connection to union work and connect to merge work + followingWork = mergeJoinWork; + rWork = (ReduceWork) mergeJoinWork.getMainWork(); } else { - throw new SemanticException("Following work not found for the reduce sink: " - + rs.getName()); + rWork = (ReduceWork) baseWork; } } else { rWork = (ReduceWork) followingWork; @@ -406,17 +396,17 @@ public Object process(Node nd, Stack stack, return null; } - private int getFollowingWorkIndex(TezWork tezWork, UnionWork unionWork, ReduceSinkOperator rs) { + private int getFollowingWorkIndex(TezWork tezWork, UnionWork unionWork, ReduceSinkOperator rs) + throws SemanticException { int index = 0; for (BaseWork baseWork : tezWork.getChildren(unionWork)) { - if (tezWork.getEdgeProperty(unionWork, baseWork).equals(TezEdgeProperty.EdgeType.CONTAINS)) { - index++; - } else { + TezEdgeProperty edgeProperty = tezWork.getEdgeProperty(unionWork, baseWork); + if (edgeProperty.getEdgeType() != TezEdgeProperty.EdgeType.CONTAINS) { return index; } + index++; } - - return -1; + throw new SemanticException("Following work not found for the reduce sink: " + rs.getName()); } @SuppressWarnings("unchecked") diff --git a/ql/src/test/queries/clientpositive/tez_union2.q b/ql/src/test/queries/clientpositive/tez_union2.q new file mode 100644 index 000000000000..af7b51cad293 --- /dev/null +++ b/ql/src/test/queries/clientpositive/tez_union2.q @@ -0,0 +1,32 @@ +explain +SELECT key, value FROM +( + SELECT key, value FROM src + UNION ALL + SELECT key, key as value FROM ( + SELECT distinct key FROM ( + SELECT key, value FROM ( + SELECT key, value FROM src + UNION ALL + SELECT key, value FROM src + )t1 + group by key, value)t2 + )t3 +)t4 +group by key, value; + +SELECT key, value FROM +( + SELECT key, value FROM src + UNION ALL + SELECT key, key as value FROM ( + SELECT distinct key FROM ( + SELECT key, value FROM ( + SELECT key, value FROM src + UNION ALL + SELECT key, value FROM src + )t1 + group by key, value)t2 + )t3 +)t4 +group by key, value; diff --git a/ql/src/test/results/clientpositive/tez/tez_union2.q.out b/ql/src/test/results/clientpositive/tez/tez_union2.q.out new file mode 100644 index 000000000000..1e29adb93930 --- /dev/null +++ b/ql/src/test/results/clientpositive/tez/tez_union2.q.out @@ -0,0 +1,801 @@ +PREHOOK: query: explain +SELECT key, value FROM +( + SELECT key, value FROM src + UNION ALL + SELECT key, key as value FROM ( + SELECT distinct key FROM ( + SELECT key, value FROM ( + SELECT key, value FROM src + UNION ALL + SELECT key, value FROM src + )t1 + group by key, value)t2 + )t3 +)t4 +group by key, value +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT key, value FROM +( + SELECT key, value FROM src + UNION ALL + SELECT key, key as value FROM ( + SELECT distinct key FROM ( + SELECT key, value FROM ( + SELECT key, value FROM src + UNION ALL + SELECT key, value FROM src + )t1 + group by key, value)t2 + )t3 +)t4 +group by key, value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Map 1 <- Union 2 (CONTAINS) + Map 4 <- Union 5 (CONTAINS) + Map 7 <- Union 5 (CONTAINS) + Reducer 3 <- Union 2 (SIMPLE_EDGE) + Reducer 6 <- Union 2 (CONTAINS), Union 5 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: src + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Group By Operator + keys: _col0 (type: string), _col1 (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string) + Map 4 + Map Operator Tree: + TableScan + alias: src + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Group By Operator + keys: _col0 (type: string), _col1 (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string) + Map 7 + Map Operator Tree: + TableScan + alias: src + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: _col0, _col1 + Group By Operator + keys: _col0 (type: string), _col1 (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string) + Reducer 3 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 375 Data size: 3984 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), _col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 375 Data size: 3984 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 375 Data size: 3984 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 6 + Reduce Operator Tree: + Group By Operator + keys: KEY._col0 (type: string), KEY._col1 (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1 + Select Operator + expressions: _col0 (type: string) + outputColumnNames: _col0 + Group By Operator + keys: _col0 (type: string) + mode: complete + outputColumnNames: _col0 + Select Operator + expressions: _col0 (type: string), _col0 (type: string) + outputColumnNames: _col0, _col1 + Group By Operator + keys: _col0 (type: string), _col1 (type: string) + mode: hash + outputColumnNames: _col0, _col1 + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: ++ + Map-reduce partition columns: _col0 (type: string), _col1 (type: string) + Union 2 + Vertex: Union 2 + Union 5 + Vertex: Union 5 + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT key, value FROM +( + SELECT key, value FROM src + UNION ALL + SELECT key, key as value FROM ( + SELECT distinct key FROM ( + SELECT key, value FROM ( + SELECT key, value FROM src + UNION ALL + SELECT key, value FROM src + )t1 + group by key, value)t2 + )t3 +)t4 +group by key, value +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: SELECT key, value FROM +( + SELECT key, value FROM src + UNION ALL + SELECT key, key as value FROM ( + SELECT distinct key FROM ( + SELECT key, value FROM ( + SELECT key, value FROM src + UNION ALL + SELECT key, value FROM src + )t1 + group by key, value)t2 + )t3 +)t4 +group by key, value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +0 0 +0 val_0 +10 10 +10 val_10 +100 100 +100 val_100 +103 103 +103 val_103 +104 104 +104 val_104 +105 105 +105 val_105 +11 11 +11 val_11 +111 111 +111 val_111 +113 113 +113 val_113 +114 114 +114 val_114 +116 116 +116 val_116 +118 118 +118 val_118 +119 119 +119 val_119 +12 12 +12 val_12 +120 120 +120 val_120 +125 125 +125 val_125 +126 126 +126 val_126 +128 128 +128 val_128 +129 129 +129 val_129 +131 131 +131 val_131 +133 133 +133 val_133 +134 134 +134 val_134 +136 136 +136 val_136 +137 137 +137 val_137 +138 138 +138 val_138 +143 143 +143 val_143 +145 145 +145 val_145 +146 146 +146 val_146 +149 149 +149 val_149 +15 15 +15 val_15 +150 150 +150 val_150 +152 152 +152 val_152 +153 153 +153 val_153 +155 155 +155 val_155 +156 156 +156 val_156 +157 157 +157 val_157 +158 158 +158 val_158 +160 160 +160 val_160 +162 162 +162 val_162 +163 163 +163 val_163 +164 164 +164 val_164 +165 165 +165 val_165 +166 166 +166 val_166 +167 167 +167 val_167 +168 168 +168 val_168 +169 169 +169 val_169 +17 17 +17 val_17 +170 170 +170 val_170 +172 172 +172 val_172 +174 174 +174 val_174 +175 175 +175 val_175 +176 176 +176 val_176 +177 177 +177 val_177 +178 178 +178 val_178 +179 179 +179 val_179 +18 18 +18 val_18 +180 180 +180 val_180 +181 181 +181 val_181 +183 183 +183 val_183 +186 186 +186 val_186 +187 187 +187 val_187 +189 189 +189 val_189 +19 19 +19 val_19 +190 190 +190 val_190 +191 191 +191 val_191 +192 192 +192 val_192 +193 193 +193 val_193 +194 194 +194 val_194 +195 195 +195 val_195 +196 196 +196 val_196 +197 197 +197 val_197 +199 199 +199 val_199 +2 2 +2 val_2 +20 20 +20 val_20 +200 200 +200 val_200 +201 201 +201 val_201 +202 202 +202 val_202 +203 203 +203 val_203 +205 205 +205 val_205 +207 207 +207 val_207 +208 208 +208 val_208 +209 209 +209 val_209 +213 213 +213 val_213 +214 214 +214 val_214 +216 216 +216 val_216 +217 217 +217 val_217 +218 218 +218 val_218 +219 219 +219 val_219 +221 221 +221 val_221 +222 222 +222 val_222 +223 223 +223 val_223 +224 224 +224 val_224 +226 226 +226 val_226 +228 228 +228 val_228 +229 229 +229 val_229 +230 230 +230 val_230 +233 233 +233 val_233 +235 235 +235 val_235 +237 237 +237 val_237 +238 238 +238 val_238 +239 239 +239 val_239 +24 24 +24 val_24 +241 241 +241 val_241 +242 242 +242 val_242 +244 244 +244 val_244 +247 247 +247 val_247 +248 248 +248 val_248 +249 249 +249 val_249 +252 252 +252 val_252 +255 255 +255 val_255 +256 256 +256 val_256 +257 257 +257 val_257 +258 258 +258 val_258 +26 26 +26 val_26 +260 260 +260 val_260 +262 262 +262 val_262 +263 263 +263 val_263 +265 265 +265 val_265 +266 266 +266 val_266 +27 27 +27 val_27 +272 272 +272 val_272 +273 273 +273 val_273 +274 274 +274 val_274 +275 275 +275 val_275 +277 277 +277 val_277 +278 278 +278 val_278 +28 28 +28 val_28 +280 280 +280 val_280 +281 281 +281 val_281 +282 282 +282 val_282 +283 283 +283 val_283 +284 284 +284 val_284 +285 285 +285 val_285 +286 286 +286 val_286 +287 287 +287 val_287 +288 288 +288 val_288 +289 289 +289 val_289 +291 291 +291 val_291 +292 292 +292 val_292 +296 296 +296 val_296 +298 298 +298 val_298 +30 30 +30 val_30 +302 302 +302 val_302 +305 305 +305 val_305 +306 306 +306 val_306 +307 307 +307 val_307 +308 308 +308 val_308 +309 309 +309 val_309 +310 310 +310 val_310 +311 311 +311 val_311 +315 315 +315 val_315 +316 316 +316 val_316 +317 317 +317 val_317 +318 318 +318 val_318 +321 321 +321 val_321 +322 322 +322 val_322 +323 323 +323 val_323 +325 325 +325 val_325 +327 327 +327 val_327 +33 33 +33 val_33 +331 331 +331 val_331 +332 332 +332 val_332 +333 333 +333 val_333 +335 335 +335 val_335 +336 336 +336 val_336 +338 338 +338 val_338 +339 339 +339 val_339 +34 34 +34 val_34 +341 341 +341 val_341 +342 342 +342 val_342 +344 344 +344 val_344 +345 345 +345 val_345 +348 348 +348 val_348 +35 35 +35 val_35 +351 351 +351 val_351 +353 353 +353 val_353 +356 356 +356 val_356 +360 360 +360 val_360 +362 362 +362 val_362 +364 364 +364 val_364 +365 365 +365 val_365 +366 366 +366 val_366 +367 367 +367 val_367 +368 368 +368 val_368 +369 369 +369 val_369 +37 37 +37 val_37 +373 373 +373 val_373 +374 374 +374 val_374 +375 375 +375 val_375 +377 377 +377 val_377 +378 378 +378 val_378 +379 379 +379 val_379 +382 382 +382 val_382 +384 384 +384 val_384 +386 386 +386 val_386 +389 389 +389 val_389 +392 392 +392 val_392 +393 393 +393 val_393 +394 394 +394 val_394 +395 395 +395 val_395 +396 396 +396 val_396 +397 397 +397 val_397 +399 399 +399 val_399 +4 4 +4 val_4 +400 400 +400 val_400 +401 401 +401 val_401 +402 402 +402 val_402 +403 403 +403 val_403 +404 404 +404 val_404 +406 406 +406 val_406 +407 407 +407 val_407 +409 409 +409 val_409 +41 41 +41 val_41 +411 411 +411 val_411 +413 413 +413 val_413 +414 414 +414 val_414 +417 417 +417 val_417 +418 418 +418 val_418 +419 419 +419 val_419 +42 42 +42 val_42 +421 421 +421 val_421 +424 424 +424 val_424 +427 427 +427 val_427 +429 429 +429 val_429 +43 43 +43 val_43 +430 430 +430 val_430 +431 431 +431 val_431 +432 432 +432 val_432 +435 435 +435 val_435 +436 436 +436 val_436 +437 437 +437 val_437 +438 438 +438 val_438 +439 439 +439 val_439 +44 44 +44 val_44 +443 443 +443 val_443 +444 444 +444 val_444 +446 446 +446 val_446 +448 448 +448 val_448 +449 449 +449 val_449 +452 452 +452 val_452 +453 453 +453 val_453 +454 454 +454 val_454 +455 455 +455 val_455 +457 457 +457 val_457 +458 458 +458 val_458 +459 459 +459 val_459 +460 460 +460 val_460 +462 462 +462 val_462 +463 463 +463 val_463 +466 466 +466 val_466 +467 467 +467 val_467 +468 468 +468 val_468 +469 469 +469 val_469 +47 47 +47 val_47 +470 470 +470 val_470 +472 472 +472 val_472 +475 475 +475 val_475 +477 477 +477 val_477 +478 478 +478 val_478 +479 479 +479 val_479 +480 480 +480 val_480 +481 481 +481 val_481 +482 482 +482 val_482 +483 483 +483 val_483 +484 484 +484 val_484 +485 485 +485 val_485 +487 487 +487 val_487 +489 489 +489 val_489 +490 490 +490 val_490 +491 491 +491 val_491 +492 492 +492 val_492 +493 493 +493 val_493 +494 494 +494 val_494 +495 495 +495 val_495 +496 496 +496 val_496 +497 497 +497 val_497 +498 498 +498 val_498 +5 5 +5 val_5 +51 51 +51 val_51 +53 53 +53 val_53 +54 54 +54 val_54 +57 57 +57 val_57 +58 58 +58 val_58 +64 64 +64 val_64 +65 65 +65 val_65 +66 66 +66 val_66 +67 67 +67 val_67 +69 69 +69 val_69 +70 70 +70 val_70 +72 72 +72 val_72 +74 74 +74 val_74 +76 76 +76 val_76 +77 77 +77 val_77 +78 78 +78 val_78 +8 8 +8 val_8 +80 80 +80 val_80 +82 82 +82 val_82 +83 83 +83 val_83 +84 84 +84 val_84 +85 85 +85 val_85 +86 86 +86 val_86 +87 87 +87 val_87 +9 9 +9 val_9 +90 90 +90 val_90 +92 92 +92 val_92 +95 95 +95 val_95 +96 96 +96 val_96 +97 97 +97 val_97 +98 98 +98 val_98 From 8193fb4128c9601e50d4d1bbe68a4e054bfabcc6 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Tue, 20 Jan 2015 04:34:05 +0000 Subject: [PATCH 331/339] HIVE-9112 : Query may generate different results depending on the number of reducers (Ted Xu via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1653192 13f79535-47bb-0310-9956-ffa450edef68 --- .../ConstantPropagateProcFactory.java | 55 +++++++------------ .../test/results/clientpositive/cluster.q.out | 34 ++++++------ .../constprog_partitioner.q.out | 4 +- .../clientpositive/join_nullsafe.q.out | 4 +- ql/src/test/results/clientpositive/ppd2.q.out | 4 +- .../clientpositive/ppd_clusterby.q.out | 12 ++-- .../results/clientpositive/ppd_join4.q.out | 4 +- .../clientpositive/ppd_outer_join5.q.out | 32 +++++------ .../clientpositive/ppd_union_view.q.out | 4 +- .../clientpositive/smb_mapjoin_25.q.out | 8 +-- .../tez/dynamic_partition_pruning.q.out | 10 ++-- .../tez/dynamic_partition_pruning_2.q.out | 2 +- .../clientpositive/tez/join_nullsafe.q.out | 4 +- .../tez/vector_decimal_mapjoin.q.out | 2 +- ...vectorized_dynamic_partition_pruning.q.out | 10 ++-- .../test/results/clientpositive/union27.q.out | 6 +- 16 files changed, 90 insertions(+), 105 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index f07a5219ca35..9d1a81cf0906 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -862,7 +862,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, Object.. if (op.getChildOperators().size() == 1 && op.getChildOperators().get(0) instanceof JoinOperator) { JoinOperator joinOp = (JoinOperator) op.getChildOperators().get(0); - if (skipFolding(joinOp.getConf(), rsDesc.getTag())) { + if (skipFolding(joinOp.getConf())) { LOG.debug("Skip folding in outer join " + op); cppCtx.getOpToConstantExprs().put(op, new HashMap()); return null; @@ -888,22 +888,16 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, Object.. rsDesc.setKeyCols(newKeyEpxrs); // partition columns - if (!rsDesc.getPartitionCols().isEmpty()) { - ArrayList newPartExprs = new ArrayList(); - for (ExprNodeDesc desc : rsDesc.getPartitionCols()) { - ExprNodeDesc expr = foldExpr(desc, constants, cppCtx, op, 0, false); - if (expr instanceof ExprNodeConstantDesc || expr instanceof ExprNodeNullDesc) { - continue; - } - newPartExprs.add(expr); + ArrayList newPartExprs = new ArrayList(); + for (ExprNodeDesc desc : rsDesc.getPartitionCols()) { + ExprNodeDesc expr = foldExpr(desc, constants, cppCtx, op, 0, false); + if (expr != desc && desc instanceof ExprNodeColumnDesc + && expr instanceof ExprNodeConstantDesc) { + ((ExprNodeConstantDesc) expr).setFoldedFromCol(((ExprNodeColumnDesc) desc).getColumn()); } - if (newPartExprs.isEmpty()) { - // If all partition columns are removed because of constant, insert an extra column to avoid - // random partitioning. - newPartExprs.add(new ExprNodeConstantDesc("")); - } - rsDesc.setPartitionCols(newPartExprs); + newPartExprs.add(expr); } + rsDesc.setPartitionCols(newPartExprs); // value columns ArrayList newValExprs = new ArrayList(); @@ -915,28 +909,19 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, Object.. return null; } - private boolean skipFolding(JoinDesc joinDesc, int tag) { - JoinCondDesc[] conds = joinDesc.getConds(); - int i; - for (i = conds.length - 1; i >= 0; i--) { - if (conds[i].getType() == JoinDesc.INNER_JOIN) { - if (tag == i + 1) - return false; - } else if (conds[i].getType() == JoinDesc.FULL_OUTER_JOIN) { - return true; - } else if (conds[i].getType() == JoinDesc.RIGHT_OUTER_JOIN) { - if (tag == i + 1) - return false; - return true; - } else if (conds[i].getType() == JoinDesc.LEFT_OUTER_JOIN) { - if (tag == i + 1) - return true; + /** + * Skip folding constants if there is outer join in join tree. + * @param joinDesc + * @return true if to skip. + */ + private boolean skipFolding(JoinDesc joinDesc) { + for (JoinCondDesc cond : joinDesc.getConds()) { + if (cond.getType() == JoinDesc.INNER_JOIN || cond.getType() == JoinDesc.UNIQUE_JOIN) { + continue; } + return true; } - if (tag == 0) { - return false; - } - return true; + return false; } } diff --git a/ql/src/test/results/clientpositive/cluster.q.out b/ql/src/test/results/clientpositive/cluster.q.out index 04abf3813222..66caaf7c7df5 100644 --- a/ql/src/test/results/clientpositive/cluster.q.out +++ b/ql/src/test/results/clientpositive/cluster.q.out @@ -25,7 +25,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '10' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '10' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -83,7 +83,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -141,7 +141,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -199,7 +199,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -257,7 +257,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -315,7 +315,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -430,7 +430,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -485,7 +485,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x @@ -496,7 +496,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: @@ -580,7 +580,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan @@ -592,7 +592,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: @@ -677,7 +677,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan @@ -689,7 +689,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: @@ -719,7 +719,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string), _col3 (type: string) Reduce Operator Tree: @@ -774,7 +774,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x @@ -785,7 +785,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: @@ -815,7 +815,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string), _col2 (type: string) Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/constprog_partitioner.q.out b/ql/src/test/results/clientpositive/constprog_partitioner.q.out index 2510672cefc7..159d2ea1fdd5 100644 --- a/ql/src/test/results/clientpositive/constprog_partitioner.q.out +++ b/ql/src/test/results/clientpositive/constprog_partitioner.q.out @@ -23,7 +23,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '100' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '100' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) TableScan @@ -35,7 +35,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '100' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '100' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator diff --git a/ql/src/test/results/clientpositive/join_nullsafe.q.out b/ql/src/test/results/clientpositive/join_nullsafe.q.out index 7bf5331677a9..90150fa1ab02 100644 --- a/ql/src/test/results/clientpositive/join_nullsafe.q.out +++ b/ql/src/test/results/clientpositive/join_nullsafe.q.out @@ -1525,7 +1525,7 @@ STAGE PLANS: Reduce Output Operator key expressions: null (type: void) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: null (type: void) Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: int) TableScan @@ -1537,7 +1537,7 @@ STAGE PLANS: Reduce Output Operator key expressions: null (type: void) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: null (type: void) Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: int) Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/ppd2.q.out b/ql/src/test/results/clientpositive/ppd2.q.out index ea00f4305d23..813ea71410a0 100644 --- a/ql/src/test/results/clientpositive/ppd2.q.out +++ b/ql/src/test/results/clientpositive/ppd2.q.out @@ -355,7 +355,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x @@ -366,7 +366,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/ppd_clusterby.q.out b/ql/src/test/results/clientpositive/ppd_clusterby.q.out index 798bebd7fef1..be1f456fcd8b 100644 --- a/ql/src/test/results/clientpositive/ppd_clusterby.q.out +++ b/ql/src/test/results/clientpositive/ppd_clusterby.q.out @@ -25,7 +25,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '10' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '10' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -80,7 +80,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x @@ -91,7 +91,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: @@ -178,7 +178,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '10' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '10' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: @@ -233,7 +233,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: x @@ -244,7 +244,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '20' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '20' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: string) Reduce Operator Tree: diff --git a/ql/src/test/results/clientpositive/ppd_join4.q.out b/ql/src/test/results/clientpositive/ppd_join4.q.out index 77c6f2f2d9e4..6334e38186e7 100644 --- a/ql/src/test/results/clientpositive/ppd_join4.q.out +++ b/ql/src/test/results/clientpositive/ppd_join4.q.out @@ -87,13 +87,13 @@ STAGE PLANS: Reduce Output Operator key expressions: 'a' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: 'a' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE TableScan Reduce Output Operator key expressions: 'a' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: 'a' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Operator Tree: Join Operator diff --git a/ql/src/test/results/clientpositive/ppd_outer_join5.q.out b/ql/src/test/results/clientpositive/ppd_outer_join5.q.out index cf1a23d215db..2d9adcfa0e95 100644 --- a/ql/src/test/results/clientpositive/ppd_outer_join5.q.out +++ b/ql/src/test/results/clientpositive/ppd_outer_join5.q.out @@ -49,9 +49,9 @@ STAGE PLANS: predicate: (id = 20) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator - key expressions: 20 (type: int) + key expressions: id (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: id (type: int) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: key (type: string), value (type: string) TableScan @@ -138,9 +138,9 @@ STAGE PLANS: predicate: (id = 20) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator - key expressions: 20 (type: int) + key expressions: id (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: id (type: int) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: key (type: string), value (type: string) TableScan @@ -150,9 +150,9 @@ STAGE PLANS: predicate: (id = 20) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator - key expressions: 20 (type: int) + key expressions: id (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: id (type: int) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: key (type: string), value (type: string) Reduce Operator Tree: @@ -161,13 +161,13 @@ STAGE PLANS: Inner Join 0 to 1 Left Outer Join1 to 2 condition expressions: - 0 {VALUE._col0} {VALUE._col1} + 0 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col1} 1 {VALUE._col0} {VALUE._col1} 2 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col1} - outputColumnNames: _col1, _col2, _col7, _col8, _col12, _col13, _col14 + outputColumnNames: _col0, _col1, _col2, _col7, _col8, _col12, _col13, _col14 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: 20 (type: int), _col1 (type: string), _col2 (type: string), 20 (type: int), _col7 (type: string), _col8 (type: string), _col12 (type: int), _col13 (type: string), _col14 (type: string) + expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), 20 (type: int), _col7 (type: string), _col8 (type: string), _col12 (type: int), _col13 (type: string), _col14 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator @@ -215,9 +215,9 @@ STAGE PLANS: predicate: (id = 20) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator - key expressions: 20 (type: int) + key expressions: id (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: id (type: int) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: key (type: string), value (type: string) TableScan @@ -227,9 +227,9 @@ STAGE PLANS: predicate: (id = 20) (type: boolean) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reduce Output Operator - key expressions: 20 (type: int) + key expressions: id (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: id (type: int) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE value expressions: key (type: string), value (type: string) Reduce Operator Tree: @@ -238,13 +238,13 @@ STAGE PLANS: Inner Join 0 to 1 Left Outer Join0 to 2 condition expressions: - 0 {VALUE._col0} {VALUE._col1} + 0 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col1} 1 {VALUE._col0} {VALUE._col1} 2 {KEY.reducesinkkey0} {VALUE._col0} {VALUE._col1} - outputColumnNames: _col1, _col2, _col7, _col8, _col12, _col13, _col14 + outputColumnNames: _col0, _col1, _col2, _col7, _col8, _col12, _col13, _col14 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator - expressions: 20 (type: int), _col1 (type: string), _col2 (type: string), 20 (type: int), _col7 (type: string), _col8 (type: string), _col12 (type: int), _col13 (type: string), _col14 (type: string) + expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), 20 (type: int), _col7 (type: string), _col8 (type: string), _col12 (type: int), _col13 (type: string), _col14 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/ppd_union_view.q.out b/ql/src/test/results/clientpositive/ppd_union_view.q.out index d5863eff54b4..26ba83e3f2bc 100644 --- a/ql/src/test/results/clientpositive/ppd_union_view.q.out +++ b/ql/src/test/results/clientpositive/ppd_union_view.q.out @@ -179,7 +179,7 @@ STAGE PLANS: Reduce Output Operator key expressions: keymap (type: string), '2011-10-13' (type: string) sort order: ++ - Map-reduce partition columns: keymap (type: string) + Map-reduce partition columns: keymap (type: string), '2011-10-13' (type: string) Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE tag: 1 value expressions: key (type: string) @@ -195,7 +195,7 @@ STAGE PLANS: Reduce Output Operator key expressions: keymap (type: string), '2011-10-13' (type: string) sort order: ++ - Map-reduce partition columns: keymap (type: string) + Map-reduce partition columns: keymap (type: string), '2011-10-13' (type: string) Statistics: Num rows: 1 Data size: 14 Basic stats: COMPLETE Column stats: NONE tag: 0 value expressions: value (type: string) diff --git a/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out b/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out index 88eabe9be470..13e3944f508b 100644 --- a/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out +++ b/ql/src/test/results/clientpositive/smb_mapjoin_25.q.out @@ -71,7 +71,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 5 (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: 5 (type: int) Statistics: Num rows: 25 Data size: 100 Basic stats: COMPLETE Column stats: NONE TableScan alias: a @@ -82,7 +82,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 5 (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: 5 (type: int) Statistics: Num rows: 26 Data size: 104 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator @@ -154,7 +154,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 5 (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: 5 (type: int) Statistics: Num rows: 27 Data size: 108 Basic stats: COMPLETE Column stats: NONE TableScan alias: c @@ -165,7 +165,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 5 (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: 5 (type: int) Statistics: Num rows: 25 Data size: 100 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out index 025beac55493..da7e10adfe65 100644 --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out @@ -2577,7 +2577,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '11' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: '11' (type: string) @@ -2635,7 +2635,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '11' (type: string) Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: @@ -2733,7 +2733,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '13' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '13' (type: string) Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Map 6 Map Operator Tree: @@ -2761,7 +2761,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '13' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '13' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reducer 3 Reduce Operator Tree: @@ -4793,7 +4793,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '11' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: '11' (type: string) diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out index 75f87183cbaf..c8f16463af95 100644 --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning_2.q.out @@ -592,7 +592,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 1 (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: 1 (type: int) Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE Column stats: NONE Map 2 Map Operator Tree: diff --git a/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out b/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out index b6669572dfa6..38458b4b1c72 100644 --- a/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out +++ b/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out @@ -1578,7 +1578,7 @@ STAGE PLANS: Reduce Output Operator key expressions: null (type: void) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: null (type: void) Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: key (type: int) Map 3 @@ -1592,7 +1592,7 @@ STAGE PLANS: Reduce Output Operator key expressions: null (type: void) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: null (type: void) Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE value expressions: value (type: int) Reducer 2 diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out index 75c709bf05c6..0ba38acd2629 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_mapjoin.q.out @@ -52,7 +52,7 @@ STAGE PLANS: Reduce Output Operator key expressions: 6981 (type: int) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: 6981 (type: int) Statistics: Num rows: 6144 Data size: 1082530 Basic stats: COMPLETE Column stats: NONE value expressions: cdecimal2 (type: decimal(23,14)) Execution mode: vectorized diff --git a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out index fe52ac9df95d..af66853a3f21 100644 --- a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out +++ b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out @@ -2607,7 +2607,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '11' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: '11' (type: string) @@ -2666,7 +2666,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '11' (type: string) Statistics: Num rows: 1100 Data size: 11686 Basic stats: COMPLETE Column stats: NONE Reducer 3 Reduce Operator Tree: @@ -2765,7 +2765,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '13' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '13' (type: string) Statistics: Num rows: 1 Data size: 172 Basic stats: COMPLETE Column stats: NONE Map 6 Map Operator Tree: @@ -2794,7 +2794,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '13' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '13' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Reducer 3 Reduce Operator Tree: @@ -4847,7 +4847,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '11' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '11' (type: string) Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator expressions: '11' (type: string) diff --git a/ql/src/test/results/clientpositive/union27.q.out b/ql/src/test/results/clientpositive/union27.q.out index d7e82a60fdfb..8fafd5b897f0 100644 --- a/ql/src/test/results/clientpositive/union27.q.out +++ b/ql/src/test/results/clientpositive/union27.q.out @@ -51,7 +51,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '97' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '97' (type: string) Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE TableScan alias: jackson_sev_add @@ -68,7 +68,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '97' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '97' (type: string) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) TableScan @@ -86,7 +86,7 @@ STAGE PLANS: Reduce Output Operator key expressions: '97' (type: string) sort order: + - Map-reduce partition columns: '' (type: string) + Map-reduce partition columns: '97' (type: string) Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string) Reduce Operator Tree: From b1ef3d163fb094eaf605ef55679b75ee336a406e Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Wed, 21 Jan 2015 01:51:16 +0000 Subject: [PATCH 332/339] HIVE-9401: SimpleFetchOptimizer for limited fetches without filters (Gopal V, reviewed by Gunther Hagleitner) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1653418 13f79535-47bb-0310-9956-ffa450edef68 --- .../ql/optimizer/SimpleFetchOptimizer.java | 31 +++++++- .../clientpositive/nonmr_fetch_threshold.q | 4 ++ .../nonmr_fetch_threshold.q.out | 72 +++++++++++++++---- 3 files changed, 91 insertions(+), 16 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java index 906dadfc134b..8efd958e8394 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java @@ -136,8 +136,15 @@ private FetchTask optimize(ParseContext pctx, String alias, TableScanOperator so } private boolean checkThreshold(FetchData data, int limit, ParseContext pctx) throws Exception { - if (limit > 0 && data.hasOnlyPruningFilter()) { - return true; + if (limit > 0) { + if (data.hasOnlyPruningFilter()) { + /* partitioned table + query has only pruning filters */ + return true; + } else if (data.isPartitioned() == false && data.isFiltered() == false) { + /* partitioned table + query has only pruning filters */ + return true; + } + /* fall through */ } long threshold = HiveConf.getLongVar(pctx.getConf(), HiveConf.ConfVars.HIVEFETCHTASKCONVERSIONTHRESHOLD); @@ -222,6 +229,10 @@ private FetchData checkOperators(FetchData fetch, TableScanOperator ts, boolean if (op.getChildOperators() == null || op.getChildOperators().size() != 1) { return null; } + + if (op instanceof FilterOperator) { + fetch.setFiltered(true); + } } if (op instanceof FileSinkOperator) { @@ -274,6 +285,7 @@ private class FetchData { // this is always non-null when conversion is completed private Operator fileSink; + private boolean filtered; private FetchData(ReadEntity parent, Table table, SplitSample splitSample) { this.parent = parent; @@ -295,10 +307,23 @@ private FetchData(ReadEntity parent, Table table, PrunedPartitionList partsList, /* * all filters were executed during partition pruning */ - public boolean hasOnlyPruningFilter() { + public final boolean hasOnlyPruningFilter() { return this.onlyPruningFilter; } + public final boolean isPartitioned() { + return this.table.isPartitioned(); + } + + /* there are filter operators in the pipeline */ + public final boolean isFiltered() { + return this.filtered; + } + + public final void setFiltered(boolean filtered) { + this.filtered = filtered; + } + private FetchWork convertToWork() throws HiveException { inputs.clear(); if (!table.isPartitioned()) { diff --git a/ql/src/test/queries/clientpositive/nonmr_fetch_threshold.q b/ql/src/test/queries/clientpositive/nonmr_fetch_threshold.q index b1a7cb5638c3..5756aecd3596 100644 --- a/ql/src/test/queries/clientpositive/nonmr_fetch_threshold.q +++ b/ql/src/test/queries/clientpositive/nonmr_fetch_threshold.q @@ -2,9 +2,13 @@ set hive.fetch.task.conversion=more; explain select * from srcpart where ds='2008-04-08' AND hr='11' limit 10; explain select cast(key as int) * 10, upper(value) from src limit 10; +-- Scans without limit (should be Fetch task now) +explain select concat(key, value) from src; set hive.fetch.task.conversion.threshold=100; -- from HIVE-7397, limit + partition pruning filter explain select * from srcpart where ds='2008-04-08' AND hr='11' limit 10; explain select cast(key as int) * 10, upper(value) from src limit 10; +-- Scans without limit (should not be Fetch task now) +explain select concat(key, value) from src; diff --git a/ql/src/test/results/clientpositive/nonmr_fetch_threshold.q.out b/ql/src/test/results/clientpositive/nonmr_fetch_threshold.q.out index cb0d3326195a..ca7d2d95c7b2 100644 --- a/ql/src/test/results/clientpositive/nonmr_fetch_threshold.q.out +++ b/ql/src/test/results/clientpositive/nonmr_fetch_threshold.q.out @@ -46,6 +46,29 @@ STAGE PLANS: Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE ListSink +PREHOOK: query: -- Scans without limit (should be Fetch task now) +explain select concat(key, value) from src +PREHOOK: type: QUERY +POSTHOOK: query: -- Scans without limit (should be Fetch task now) +explain select concat(key, value) from src +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: concat(key, value) (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + ListSink + PREHOOK: query: -- from HIVE-7397, limit + partition pruning filter explain select * from srcpart where ds='2008-04-08' AND hr='11' limit 10 PREHOOK: type: QUERY @@ -76,6 +99,32 @@ PREHOOK: query: explain select cast(key as int) * 10, upper(value) from src limi PREHOOK: type: QUERY POSTHOOK: query: explain select cast(key as int) * 10, upper(value) from src limit 10 POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 10 + Processor Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: (UDFToInteger(key) * 10) (type: int), upper(value) (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 10 + Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE + ListSink + +PREHOOK: query: -- Scans without limit (should not be Fetch task now) +explain select concat(key, value) from src +PREHOOK: type: QUERY +POSTHOOK: query: -- Scans without limit (should not be Fetch task now) +explain select concat(key, value) from src +POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-1 is a root stage Stage-0 depends on stages: Stage-1 @@ -88,23 +137,20 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: (UDFToInteger(key) * 10) (type: int), upper(value) (type: string) - outputColumnNames: _col0, _col1 + expressions: concat(key, value) (type: string) + outputColumnNames: _col0 Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE - Limit - Number of rows: 10 - Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE - File Output Operator - compressed: false - Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + File Output Operator + compressed: false + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Stage: Stage-0 Fetch Operator - limit: 10 + limit: -1 Processor Tree: ListSink From 80d569243b68fc9076c2b60d1f9c927ebff6ee58 Mon Sep 17 00:00:00 2001 From: Vikram Dixit K Date: Fri, 23 Jan 2015 19:43:53 +0000 Subject: [PATCH 333/339] HIVE-9235: Turn off Parquet Vectorization until all data types work: DECIMAL, DATE, TIMESTAMP, CHAR, and VARCHAR (Matt McCline via Vikram Dixit K) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1654346 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/io/parquet/MapredParquetInputFormat.java | 5 +++-- .../test/results/clientpositive/tez/vectorized_parquet.q.out | 1 - ql/src/test/results/clientpositive/vectorized_parquet.q.out | 2 -- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/MapredParquetInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/MapredParquetInputFormat.java index 51b5082dd0ed..0391229723cc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/MapredParquetInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/MapredParquetInputFormat.java @@ -31,9 +31,10 @@ * * A Parquet InputFormat for Hive (with the deprecated package mapred) * + * NOTE: With HIVE-9235 we removed "implements VectorizedParquetInputFormat" since all data types + * are not currently supported. Removing the interface turns off vectorization. */ -public class MapredParquetInputFormat extends FileInputFormat - implements VectorizedInputFormatInterface { +public class MapredParquetInputFormat extends FileInputFormat { private static final Log LOG = LogFactory.getLog(MapredParquetInputFormat.class); diff --git a/ql/src/test/results/clientpositive/tez/vectorized_parquet.q.out b/ql/src/test/results/clientpositive/tez/vectorized_parquet.q.out index 0607ceae4ecc..91129591a4d2 100644 --- a/ql/src/test/results/clientpositive/tez/vectorized_parquet.q.out +++ b/ql/src/test/results/clientpositive/tez/vectorized_parquet.q.out @@ -149,7 +149,6 @@ STAGE PLANS: Map-reduce partition columns: _col0 (type: tinyint) Statistics: Num rows: 12288 Data size: 73728 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: int), _col2 (type: smallint), _col3 (type: bigint), _col4 (type: struct), _col5 (type: struct) - Execution mode: vectorized Reducer 2 Reduce Operator Tree: Group By Operator diff --git a/ql/src/test/results/clientpositive/vectorized_parquet.q.out b/ql/src/test/results/clientpositive/vectorized_parquet.q.out index a81a9b3017ca..92f87b80cb3d 100644 --- a/ql/src/test/results/clientpositive/vectorized_parquet.q.out +++ b/ql/src/test/results/clientpositive/vectorized_parquet.q.out @@ -84,7 +84,6 @@ STAGE PLANS: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - Execution mode: vectorized Stage: Stage-0 Fetch Operator @@ -161,7 +160,6 @@ STAGE PLANS: Map-reduce partition columns: _col0 (type: tinyint) Statistics: Num rows: 12288 Data size: 73728 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: int), _col2 (type: smallint), _col3 (type: bigint), _col4 (type: struct), _col5 (type: struct) - Execution mode: vectorized Reduce Operator Tree: Group By Operator aggregations: max(VALUE._col0), min(VALUE._col1), count(VALUE._col2), avg(VALUE._col3), stddev_pop(VALUE._col4) From 8b1a5efd3616a1911e2265cbde4a95e05581e192 Mon Sep 17 00:00:00 2001 From: Jason Dere Date: Sat, 24 Jan 2015 00:07:56 +0000 Subject: [PATCH 334/339] HIVE-7270 : SerDe Properties are not considered by show create table Command (Navis reviewed by Jason Dere) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1654437 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/ql/exec/DDLTask.java | 118 ++++++++++-------- .../clientpositive/show_create_table_serde.q | 14 +++ .../show_create_table_serde.q.out | 114 ++++++++++++++++- 3 files changed, 188 insertions(+), 58 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index 4d0e89dbf4c1..d059c1457440 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -1838,6 +1838,14 @@ private int showPartitions(Hive db, ShowPartitionsDesc showParts) throws HiveExc return 0; } + private static final String[] DELIMITER_PREFIXES = new String[] { + "FIELDS TERMINATED BY", + "COLLECTION ITEMS TERMINATED BY", + "MAP KEYS TERMINATED BY", + "LINES TERMINATED BY", + "NULL DEFINED AS" + }; + /** * Write a statement of how to create a table to a file. * @@ -1979,80 +1987,65 @@ else if (sortCol.getOrder() == BaseSemanticAnalyzer.HIVE_COLUMN_ORDER_DESC) { } // Row format (SerDe) - String tbl_row_format = ""; + StringBuilder tbl_row_format = new StringBuilder(); StorageDescriptor sd = tbl.getTTable().getSd(); SerDeInfo serdeInfo = sd.getSerdeInfo(); - tbl_row_format += "ROW FORMAT"; + tbl_row_format.append("ROW FORMAT"); if (tbl.getStorageHandler() == null) { - if (serdeInfo.getParametersSize() > 1) { + Map serdeParams = serdeInfo.getParameters(); + String[] delimiters = new String[] { + serdeParams.remove(serdeConstants.FIELD_DELIM), + serdeParams.remove(serdeConstants.COLLECTION_DELIM), + serdeParams.remove(serdeConstants.MAPKEY_DELIM), + serdeParams.remove(serdeConstants.LINE_DELIM), + serdeParams.remove(serdeConstants.SERIALIZATION_NULL_FORMAT) + }; + serdeParams.remove(serdeConstants.SERIALIZATION_FORMAT); + if (containsNonNull(delimiters)) { // There is a "serialization.format" property by default, // even with a delimited row format. // But our result will only cover the following four delimiters. - tbl_row_format += " DELIMITED \n"; - Map delims = serdeInfo.getParameters(); + tbl_row_format.append(" DELIMITED \n"); + // Warn: // If the four delimiters all exist in a CREATE TABLE query, // this following order needs to be strictly followed, // or the query will fail with a ParseException. - if (delims.containsKey(serdeConstants.FIELD_DELIM)) { - tbl_row_format += " FIELDS TERMINATED BY '" + - escapeHiveCommand(StringEscapeUtils.escapeJava(delims.get( - serdeConstants.FIELD_DELIM))) + "' \n"; - } - if (delims.containsKey(serdeConstants.COLLECTION_DELIM)) { - tbl_row_format += " COLLECTION ITEMS TERMINATED BY '" + - escapeHiveCommand(StringEscapeUtils.escapeJava(delims.get( - serdeConstants.COLLECTION_DELIM))) + "' \n"; - } - if (delims.containsKey(serdeConstants.MAPKEY_DELIM)) { - tbl_row_format += " MAP KEYS TERMINATED BY '" + - escapeHiveCommand(StringEscapeUtils.escapeJava(delims.get( - serdeConstants.MAPKEY_DELIM))) + "' \n"; - } - if (delims.containsKey(serdeConstants.LINE_DELIM)) { - tbl_row_format += " LINES TERMINATED BY '" + - escapeHiveCommand(StringEscapeUtils.escapeJava(delims.get( - serdeConstants.LINE_DELIM))) + "' \n"; - } - if (delims.containsKey(serdeConstants.SERIALIZATION_NULL_FORMAT)) { - tbl_row_format += " NULL DEFINED AS '" + - escapeHiveCommand(StringEscapeUtils.escapeJava(delims.get( - serdeConstants.SERIALIZATION_NULL_FORMAT))) + "' \n"; + for (int i = 0; i < DELIMITER_PREFIXES.length; i++) { + if (delimiters[i] != null) { + tbl_row_format.append(" ").append(DELIMITER_PREFIXES[i]).append(" '"); + tbl_row_format.append(escapeHiveCommand(StringEscapeUtils.escapeJava(delimiters[i]))); + tbl_row_format.append("' \n"); + } } + } else { + tbl_row_format.append(" SERDE \n '" + + escapeHiveCommand(serdeInfo.getSerializationLib()) + "' \n"); } - else { - tbl_row_format += " SERDE \n '" + - escapeHiveCommand(serdeInfo.getSerializationLib()) + "' \n"; + if (!serdeParams.isEmpty()) { + appendSerdeParams(tbl_row_format, serdeParams).append(" \n"); } - tbl_row_format += "STORED AS INPUTFORMAT \n '" + - escapeHiveCommand(sd.getInputFormat()) + "' \n"; - tbl_row_format += "OUTPUTFORMAT \n '" + - escapeHiveCommand(sd.getOutputFormat()) + "'"; - } - else { + tbl_row_format.append("STORED AS INPUTFORMAT \n '" + + escapeHiveCommand(sd.getInputFormat()) + "' \n"); + tbl_row_format.append("OUTPUTFORMAT \n '" + + escapeHiveCommand(sd.getOutputFormat()) + "'"); + } else { duplicateProps.add(org.apache.hadoop.hive.metastore.api.hive_metastoreConstants.META_TABLE_STORAGE); - tbl_row_format += " SERDE \n '" + - escapeHiveCommand(serdeInfo.getSerializationLib()) + "' \n"; - tbl_row_format += "STORED BY \n '" + escapeHiveCommand(tbl.getParameters().get( - org.apache.hadoop.hive.metastore.api.hive_metastoreConstants.META_TABLE_STORAGE)) + "' \n"; + tbl_row_format.append(" SERDE \n '" + + escapeHiveCommand(serdeInfo.getSerializationLib()) + "' \n"); + tbl_row_format.append("STORED BY \n '" + escapeHiveCommand(tbl.getParameters().get( + org.apache.hadoop.hive.metastore.api.hive_metastoreConstants.META_TABLE_STORAGE)) + "' \n"); // SerDe Properties if (serdeInfo.getParametersSize() > 0) { - tbl_row_format += "WITH SERDEPROPERTIES ( \n"; - List serdeCols = new ArrayList(); - for (Map.Entry entry : serdeInfo.getParameters().entrySet()) { - serdeCols.add(" '" + entry.getKey() + "'='" - + escapeHiveCommand(StringEscapeUtils.escapeJava(entry.getValue())) + "'"); - } - tbl_row_format += StringUtils.join(serdeCols, ", \n"); - tbl_row_format += ")"; + appendSerdeParams(tbl_row_format, serdeInfo.getParameters()); } } String tbl_location = " '" + escapeHiveCommand(sd.getLocation()) + "'"; // Table properties String tbl_properties = ""; - Map properties = new TreeMap(tbl.getParameters()); - if (properties.size() > 0) { + if (!tbl.getParameters().isEmpty()) { + Map properties = new TreeMap(tbl.getParameters()); List realProps = new ArrayList(); for (String key : properties.keySet()) { if (properties.get(key) != null && !duplicateProps.contains(key)) { @@ -2094,6 +2087,27 @@ else if (sortCol.getOrder() == BaseSemanticAnalyzer.HIVE_COLUMN_ORDER_DESC) { return 0; } + private boolean containsNonNull(String[] values) { + for (String value : values) { + if (value != null) { + return true; + } + } + return false; + } + + private StringBuilder appendSerdeParams(StringBuilder builder, Map serdeParam) { + serdeParam = new TreeMap(serdeParam); + builder.append("WITH SERDEPROPERTIES ( \n"); + List serdeCols = new ArrayList(); + for (Entry entry : serdeParam.entrySet()) { + serdeCols.add(" '" + entry.getKey() + "'='" + + escapeHiveCommand(StringEscapeUtils.escapeJava(entry.getValue())) + "'"); + } + builder.append(StringUtils.join(serdeCols, ", \n")).append(')'); + return builder; + } + /** * Write a list of indexes to a file. * diff --git a/ql/src/test/queries/clientpositive/show_create_table_serde.q b/ql/src/test/queries/clientpositive/show_create_table_serde.q index a3eb5a8f7d24..a94379bc92b7 100644 --- a/ql/src/test/queries/clientpositive/show_create_table_serde.q +++ b/ql/src/test/queries/clientpositive/show_create_table_serde.q @@ -1,5 +1,10 @@ -- Test SHOW CREATE TABLE on a table with serde. +CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint); +ALTER TABLE tmp_showcrt1 SET SERDEPROPERTIES ('custom.property.key1'='custom.property.value1', 'custom.property.key2'='custom.property.value2'); +SHOW CREATE TABLE tmp_showcrt1; +DROP TABLE tmp_showcrt1; + -- without a storage handler CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint) COMMENT 'temporary table' @@ -9,6 +14,15 @@ OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'; SHOW CREATE TABLE tmp_showcrt1; DROP TABLE tmp_showcrt1; +-- without a storage handler / with custom serde params +CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +WITH SERDEPROPERTIES ('custom.property.key1'='custom.property.value1', 'custom.property.key2'='custom.property.value2') +STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'; +SHOW CREATE TABLE tmp_showcrt1; +DROP TABLE tmp_showcrt1; + -- with a storage handler and serde properties CREATE EXTERNAL TABLE tmp_showcrt1 (key string, value boolean) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' diff --git a/ql/src/test/results/clientpositive/show_create_table_serde.q.out b/ql/src/test/results/clientpositive/show_create_table_serde.q.out index f1656b642d9e..a794bccbf301 100644 --- a/ql/src/test/results/clientpositive/show_create_table_serde.q.out +++ b/ql/src/test/results/clientpositive/show_create_table_serde.q.out @@ -1,6 +1,61 @@ PREHOOK: query: -- Test SHOW CREATE TABLE on a table with serde. --- without a storage handler +CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@tmp_showcrt1 +POSTHOOK: query: -- Test SHOW CREATE TABLE on a table with serde. + +CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@tmp_showcrt1 +PREHOOK: query: ALTER TABLE tmp_showcrt1 SET SERDEPROPERTIES ('custom.property.key1'='custom.property.value1', 'custom.property.key2'='custom.property.value2') +PREHOOK: type: ALTERTABLE_SERDEPROPERTIES +PREHOOK: Input: default@tmp_showcrt1 +PREHOOK: Output: default@tmp_showcrt1 +POSTHOOK: query: ALTER TABLE tmp_showcrt1 SET SERDEPROPERTIES ('custom.property.key1'='custom.property.value1', 'custom.property.key2'='custom.property.value2') +POSTHOOK: type: ALTERTABLE_SERDEPROPERTIES +POSTHOOK: Input: default@tmp_showcrt1 +POSTHOOK: Output: default@tmp_showcrt1 +PREHOOK: query: SHOW CREATE TABLE tmp_showcrt1 +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@tmp_showcrt1 +POSTHOOK: query: SHOW CREATE TABLE tmp_showcrt1 +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@tmp_showcrt1 +CREATE TABLE `tmp_showcrt1`( + `key` int, + `value` string, + `newvalue` bigint) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' +WITH SERDEPROPERTIES ( + 'custom.property.key1'='custom.property.value1', + 'custom.property.key2'='custom.property.value2') +STORED AS INPUTFORMAT + 'org.apache.hadoop.mapred.TextInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' +LOCATION +#### A masked pattern was here #### +TBLPROPERTIES ( + 'COLUMN_STATS_ACCURATE'='false', +#### A masked pattern was here #### + 'numFiles'='0', + 'numRows'='-1', + 'rawDataSize'='-1', + 'totalSize'='0', +#### A masked pattern was here #### +PREHOOK: query: DROP TABLE tmp_showcrt1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@tmp_showcrt1 +PREHOOK: Output: default@tmp_showcrt1 +POSTHOOK: query: DROP TABLE tmp_showcrt1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@tmp_showcrt1 +POSTHOOK: Output: default@tmp_showcrt1 +PREHOOK: query: -- without a storage handler CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint) COMMENT 'temporary table' ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' @@ -9,9 +64,7 @@ OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@tmp_showcrt1 -POSTHOOK: query: -- Test SHOW CREATE TABLE on a table with serde. - --- without a storage handler +POSTHOOK: query: -- without a storage handler CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint) COMMENT 'temporary table' ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' @@ -49,6 +102,55 @@ POSTHOOK: query: DROP TABLE tmp_showcrt1 POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@tmp_showcrt1 POSTHOOK: Output: default@tmp_showcrt1 +PREHOOK: query: -- without a storage handler / with custom serde params +CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +WITH SERDEPROPERTIES ('custom.property.key1'='custom.property.value1', 'custom.property.key2'='custom.property.value2') +STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@tmp_showcrt1 +POSTHOOK: query: -- without a storage handler / with custom serde params +CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +WITH SERDEPROPERTIES ('custom.property.key1'='custom.property.value1', 'custom.property.key2'='custom.property.value2') +STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@tmp_showcrt1 +PREHOOK: query: SHOW CREATE TABLE tmp_showcrt1 +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@tmp_showcrt1 +POSTHOOK: query: SHOW CREATE TABLE tmp_showcrt1 +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@tmp_showcrt1 +CREATE TABLE `tmp_showcrt1`( + `key` int, + `value` string, + `newvalue` bigint) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +WITH SERDEPROPERTIES ( + 'custom.property.key1'='custom.property.value1', + 'custom.property.key2'='custom.property.value2') +STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +LOCATION +#### A masked pattern was here #### +TBLPROPERTIES ( +#### A masked pattern was here #### +PREHOOK: query: DROP TABLE tmp_showcrt1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@tmp_showcrt1 +PREHOOK: Output: default@tmp_showcrt1 +POSTHOOK: query: DROP TABLE tmp_showcrt1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@tmp_showcrt1 +POSTHOOK: Output: default@tmp_showcrt1 PREHOOK: query: -- with a storage handler and serde properties CREATE EXTERNAL TABLE tmp_showcrt1 (key string, value boolean) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' @@ -79,8 +181,8 @@ ROW FORMAT SERDE STORED BY 'org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler' WITH SERDEPROPERTIES ( - 'serialization.format'='$', - 'field.delim'=',') + 'field.delim'=',', + 'serialization.format'='$') LOCATION #### A masked pattern was here #### TBLPROPERTIES ( From 04fd6d0decfd5013ddd3a0cd3975b40c7ccb6781 Mon Sep 17 00:00:00 2001 From: Eugene Koifman Date: Sat, 24 Jan 2015 01:05:12 +0000 Subject: [PATCH 335/339] HIVE-9390 Enhance retry logic wrt DB access in TxnHandler git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1654442 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/metastore/HiveMetaStore.java | 78 +- .../metastore/txn/CompactionTxnHandler.java | 398 +++++---- .../hadoop/hive/metastore/txn/TxnHandler.java | 785 +++++++++--------- .../hive/metastore/txn/TestTxnHandler.java | 8 +- 4 files changed, 613 insertions(+), 656 deletions(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index 192cc9690698..8d647e3b4f9c 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -5318,126 +5318,74 @@ public Function get_function(String dbName, String funcName) // Transaction and locking methods @Override public GetOpenTxnsResponse get_open_txns() throws TException { - try { - return getTxnHandler().getOpenTxns(); - } catch (MetaException e) { - throw new TException(e); - } + return getTxnHandler().getOpenTxns(); } // Transaction and locking methods @Override public GetOpenTxnsInfoResponse get_open_txns_info() throws TException { - try { - return getTxnHandler().getOpenTxnsInfo(); - } catch (MetaException e) { - throw new TException(e); - } + return getTxnHandler().getOpenTxnsInfo(); } @Override public OpenTxnsResponse open_txns(OpenTxnRequest rqst) throws TException { - try { - return getTxnHandler().openTxns(rqst); - } catch (MetaException e) { - throw new TException(e); - } + return getTxnHandler().openTxns(rqst); } @Override public void abort_txn(AbortTxnRequest rqst) throws NoSuchTxnException, TException { - try { - getTxnHandler().abortTxn(rqst); - } catch (MetaException e) { - throw new TException(e); - } + getTxnHandler().abortTxn(rqst); } @Override public void commit_txn(CommitTxnRequest rqst) throws NoSuchTxnException, TxnAbortedException, TException { - try { - getTxnHandler().commitTxn(rqst); - } catch (MetaException e) { - throw new TException(e); - } + getTxnHandler().commitTxn(rqst); } @Override public LockResponse lock(LockRequest rqst) throws NoSuchTxnException, TxnAbortedException, TException { - try { - return getTxnHandler().lock(rqst); - } catch (MetaException e) { - throw new TException(e); - } + return getTxnHandler().lock(rqst); } @Override public LockResponse check_lock(CheckLockRequest rqst) throws NoSuchTxnException, TxnAbortedException, NoSuchLockException, TException { - try { - return getTxnHandler().checkLock(rqst); - } catch (MetaException e) { - throw new TException(e); - } + return getTxnHandler().checkLock(rqst); } @Override public void unlock(UnlockRequest rqst) throws NoSuchLockException, TxnOpenException, TException { - try { - getTxnHandler().unlock(rqst); - } catch (MetaException e) { - throw new TException(e); - } + getTxnHandler().unlock(rqst); } @Override public ShowLocksResponse show_locks(ShowLocksRequest rqst) throws TException { - try { - return getTxnHandler().showLocks(rqst); - } catch (MetaException e) { - throw new TException(e); - } + return getTxnHandler().showLocks(rqst); } @Override public void heartbeat(HeartbeatRequest ids) throws NoSuchLockException, NoSuchTxnException, TxnAbortedException, TException { - try { - getTxnHandler().heartbeat(ids); - } catch (MetaException e) { - throw new TException(e); - } + getTxnHandler().heartbeat(ids); } @Override public HeartbeatTxnRangeResponse heartbeat_txn_range(HeartbeatTxnRangeRequest rqst) throws TException { - try { - return getTxnHandler().heartbeatTxnRange(rqst); - } catch (MetaException e) { - throw new TException(e); - } + return getTxnHandler().heartbeatTxnRange(rqst); } @Override public void compact(CompactionRequest rqst) throws TException { - try { - getTxnHandler().compact(rqst); - } catch (MetaException e) { - throw new TException(e); - } + getTxnHandler().compact(rqst); } @Override public ShowCompactResponse show_compact(ShowCompactRequest rqst) throws TException { - try { - return getTxnHandler().showCompact(rqst); - } catch (MetaException e) { - throw new TException(e); - } + return getTxnHandler().showCompact(rqst); } @Override diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java index acfc07a96b7e..4402e4ae7b25 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java @@ -52,51 +52,58 @@ public CompactionTxnHandler(HiveConf conf) { * or runAs set since these are only potential compactions not actual ones. */ public Set findPotentialCompactions(int maxAborted) throws MetaException { - Connection dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + Connection dbConn = null; Set response = new HashSet(); Statement stmt = null; try { - stmt = dbConn.createStatement(); - // Check for completed transactions - String s = "select distinct ctc_database, ctc_table, " + + try { + dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + stmt = dbConn.createStatement(); + // Check for completed transactions + String s = "select distinct ctc_database, ctc_table, " + "ctc_partition from COMPLETED_TXN_COMPONENTS"; - LOG.debug("Going to execute query <" + s + ">"); - ResultSet rs = stmt.executeQuery(s); - while (rs.next()) { - CompactionInfo info = new CompactionInfo(); - info.dbname = rs.getString(1); - info.tableName = rs.getString(2); - info.partName = rs.getString(3); - response.add(info); - } + LOG.debug("Going to execute query <" + s + ">"); + ResultSet rs = stmt.executeQuery(s); + while (rs.next()) { + CompactionInfo info = new CompactionInfo(); + info.dbname = rs.getString(1); + info.tableName = rs.getString(2); + info.partName = rs.getString(3); + response.add(info); + } - // Check for aborted txns - s = "select tc_database, tc_table, tc_partition " + + // Check for aborted txns + s = "select tc_database, tc_table, tc_partition " + "from TXNS, TXN_COMPONENTS " + "where txn_id = tc_txnid and txn_state = '" + TXN_ABORTED + "' " + "group by tc_database, tc_table, tc_partition " + "having count(*) > " + maxAborted; - LOG.debug("Going to execute query <" + s + ">"); - rs = stmt.executeQuery(s); - while (rs.next()) { - CompactionInfo info = new CompactionInfo(); - info.dbname = rs.getString(1); - info.tableName = rs.getString(2); - info.partName = rs.getString(3); - info.tooManyAborts = true; - response.add(info); - } + LOG.debug("Going to execute query <" + s + ">"); + rs = stmt.executeQuery(s); + while (rs.next()) { + CompactionInfo info = new CompactionInfo(); + info.dbname = rs.getString(1); + info.tableName = rs.getString(2); + info.partName = rs.getString(3); + info.tooManyAborts = true; + response.add(info); + } - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e) { - LOG.error("Unable to connect to transaction database " + e.getMessage()); - } finally { - closeDbConn(dbConn); - closeStmt(stmt); + LOG.debug("Going to rollback"); + dbConn.rollback(); + } catch (SQLException e) { + LOG.error("Unable to connect to transaction database " + e.getMessage()); + checkRetryable(dbConn, e, "findPotentialCompactions"); + } finally { + closeDbConn(dbConn); + closeStmt(stmt); + } + return response; + } + catch (RetryException e) { + return findPotentialCompactions(maxAborted); } - return response; } /** @@ -107,35 +114,31 @@ public Set findPotentialCompactions(int maxAborted) throws MetaE */ public void setRunAs(long cq_id, String user) throws MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; Statement stmt = null; try { - stmt = dbConn.createStatement(); - String s = "update COMPACTION_QUEUE set cq_run_as = '" + user + "' where cq_id = " + cq_id; - LOG.debug("Going to execute update <" + s + ">"); - if (stmt.executeUpdate(s) != 1) { - LOG.error("Unable to update compaction record"); - LOG.debug("Going to rollback"); - dbConn.rollback(); - } - LOG.debug("Going to commit"); - dbConn.commit(); - } catch (SQLException e) { - LOG.error("Unable to update compaction queue, " + e.getMessage()); - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "setRunAs"); - } finally { - closeDbConn(dbConn); - closeStmt(stmt); - } - } catch (DeadlockException e) { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + stmt = dbConn.createStatement(); + String s = "update COMPACTION_QUEUE set cq_run_as = '" + user + "' where cq_id = " + cq_id; + LOG.debug("Going to execute update <" + s + ">"); + if (stmt.executeUpdate(s) != 1) { + LOG.error("Unable to update compaction record"); + LOG.debug("Going to rollback"); + dbConn.rollback(); + } + LOG.debug("Going to commit"); + dbConn.commit(); + } catch (SQLException e) { + LOG.error("Unable to update compaction queue, " + e.getMessage()); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "setRunAs"); + } finally { + closeDbConn(dbConn); + closeStmt(stmt); + } + } catch (RetryException e) { setRunAs(cq_id, user); - } finally { - deadlockCnt = 0; } } @@ -147,14 +150,15 @@ public void setRunAs(long cq_id, String user) throws MetaException { */ public CompactionInfo findNextToCompact(String workerId) throws MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; CompactionInfo info = new CompactionInfo(); Statement stmt = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); stmt = dbConn.createStatement(); String s = "select cq_id, cq_database, cq_table, cq_partition, " + - "cq_type from COMPACTION_QUEUE where cq_state = '" + INITIATED_STATE + "'"; + "cq_type from COMPACTION_QUEUE where cq_state = '" + INITIATED_STATE + "'"; LOG.debug("Going to execute query <" + s + ">"); ResultSet rs = stmt.executeQuery(s); if (!rs.next()) { @@ -175,7 +179,7 @@ public CompactionInfo findNextToCompact(String workerId) throws MetaException { // Now, update this record as being worked on by this worker. long now = getDbTime(dbConn); s = "update COMPACTION_QUEUE set cq_worker_id = '" + workerId + "', " + - "cq_start = " + now + ", cq_state = '" + WORKING_STATE + "' where cq_id = " + info.id; + "cq_start = " + now + ", cq_state = '" + WORKING_STATE + "' where cq_id = " + info.id; LOG.debug("Going to execute update <" + s + ">"); if (stmt.executeUpdate(s) != 1) { LOG.error("Unable to update compaction record"); @@ -187,38 +191,34 @@ public CompactionInfo findNextToCompact(String workerId) throws MetaException { return info; } catch (SQLException e) { LOG.error("Unable to select next element for compaction, " + e.getMessage()); - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "findNextToCompact"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "findNextToCompact"); throw new MetaException("Unable to connect to transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); closeStmt(stmt); } - } catch (DeadlockException e) { + } catch (RetryException e) { return findNextToCompact(workerId); - } finally { - deadlockCnt = 0; } } /** * This will mark an entry in the queue as compacted * and put it in the ready to clean state. - * @param info info on the compaciton entry to mark as compacted. + * @param info info on the compaction entry to mark as compacted. */ public void markCompacted(CompactionInfo info) throws MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; Statement stmt = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); stmt = dbConn.createStatement(); String s = "update COMPACTION_QUEUE set cq_state = '" + READY_FOR_CLEANING + "', " + - "cq_worker_id = null where cq_id = " + info.id; + "cq_worker_id = null where cq_id = " + info.id; LOG.debug("Going to execute update <" + s + ">"); if (stmt.executeUpdate(s) != 1) { LOG.error("Unable to update compaction record"); @@ -228,23 +228,18 @@ public void markCompacted(CompactionInfo info) throws MetaException { LOG.debug("Going to commit"); dbConn.commit(); } catch (SQLException e) { - try { - LOG.error("Unable to update compaction queue " + e.getMessage()); - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "markCompacted"); + LOG.error("Unable to update compaction queue " + e.getMessage()); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "markCompacted"); throw new MetaException("Unable to connect to transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); closeStmt(stmt); } - } catch (DeadlockException e) { + } catch (RetryException e) { markCompacted(info); - } finally { - deadlockCnt = 0; } } @@ -254,45 +249,48 @@ public void markCompacted(CompactionInfo info) throws MetaException { * @return information on the entry in the queue. */ public List findReadyToClean() throws MetaException { - Connection dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + Connection dbConn = null; List rc = new ArrayList(); Statement stmt = null; try { - stmt = dbConn.createStatement(); - String s = "select cq_id, cq_database, cq_table, cq_partition, " + + try { + dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + stmt = dbConn.createStatement(); + String s = "select cq_id, cq_database, cq_table, cq_partition, " + "cq_type, cq_run_as from COMPACTION_QUEUE where cq_state = '" + READY_FOR_CLEANING + "'"; - LOG.debug("Going to execute query <" + s + ">"); - ResultSet rs = stmt.executeQuery(s); - while (rs.next()) { - CompactionInfo info = new CompactionInfo(); - info.id = rs.getLong(1); - info.dbname = rs.getString(2); - info.tableName = rs.getString(3); - info.partName = rs.getString(4); - switch (rs.getString(5).charAt(0)) { - case MAJOR_TYPE: info.type = CompactionType.MAJOR; break; - case MINOR_TYPE: info.type = CompactionType.MINOR; break; - default: throw new MetaException("Unexpected compaction type " + rs.getString(5)); + LOG.debug("Going to execute query <" + s + ">"); + ResultSet rs = stmt.executeQuery(s); + while (rs.next()) { + CompactionInfo info = new CompactionInfo(); + info.id = rs.getLong(1); + info.dbname = rs.getString(2); + info.tableName = rs.getString(3); + info.partName = rs.getString(4); + switch (rs.getString(5).charAt(0)) { + case MAJOR_TYPE: info.type = CompactionType.MAJOR; break; + case MINOR_TYPE: info.type = CompactionType.MINOR; break; + default: throw new MetaException("Unexpected compaction type " + rs.getString(5)); + } + info.runAs = rs.getString(6); + rc.add(info); } - info.runAs = rs.getString(6); - rc.add(info); - } - LOG.debug("Going to rollback"); - dbConn.rollback(); - return rc; - } catch (SQLException e) { - LOG.error("Unable to select next element for cleaning, " + e.getMessage()); - try { LOG.debug("Going to rollback"); dbConn.rollback(); - } catch (SQLException e1) { - } - throw new MetaException("Unable to connect to transaction database " + + return rc; + } catch (SQLException e) { + LOG.error("Unable to select next element for cleaning, " + e.getMessage()); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "findReadyToClean"); + throw new MetaException("Unable to connect to transaction database " + StringUtils.stringifyException(e)); - } finally { - closeDbConn(dbConn); - closeStmt(stmt); + } finally { + closeDbConn(dbConn); + closeStmt(stmt); + } + } catch (RetryException e) { + return findReadyToClean(); } } @@ -303,9 +301,10 @@ public List findReadyToClean() throws MetaException { */ public void markCleaned(CompactionInfo info) throws MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; Statement stmt = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); stmt = dbConn.createStatement(); String s = "delete from COMPACTION_QUEUE where cq_id = " + info.id; LOG.debug("Going to execute update <" + s + ">"); @@ -318,20 +317,20 @@ public void markCleaned(CompactionInfo info) throws MetaException { // Remove entries from completed_txn_components as well, so we don't start looking there // again. s = "delete from COMPLETED_TXN_COMPONENTS where ctc_database = '" + info.dbname + "' and " + - "ctc_table = '" + info.tableName + "'"; + "ctc_table = '" + info.tableName + "'"; if (info.partName != null) { s += " and ctc_partition = '" + info.partName + "'"; } LOG.debug("Going to execute update <" + s + ">"); if (stmt.executeUpdate(s) < 1) { LOG.error("Expected to remove at least one row from completed_txn_components when " + - "marking compaction entry as clean!"); + "marking compaction entry as clean!"); } s = "select txn_id from TXNS, TXN_COMPONENTS where txn_id = tc_txnid and txn_state = '" + - TXN_ABORTED + "' and tc_database = '" + info.dbname + "' and tc_table = '" + - info.tableName + "'"; + TXN_ABORTED + "' and tc_database = '" + info.dbname + "' and tc_table = '" + + info.tableName + "'"; if (info.partName != null) s += " and tc_partition = '" + info.partName + "'"; LOG.debug("Going to execute update <" + s + ">"); ResultSet rs = stmt.executeQuery(s); @@ -371,23 +370,18 @@ public void markCleaned(CompactionInfo info) throws MetaException { LOG.debug("Going to commit"); dbConn.commit(); } catch (SQLException e) { - try { - LOG.error("Unable to delete from compaction queue " + e.getMessage()); - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "markCleaned"); + LOG.error("Unable to delete from compaction queue " + e.getMessage()); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "markCleaned"); throw new MetaException("Unable to connect to transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); closeStmt(stmt); } - } catch (DeadlockException e) { + } catch (RetryException e) { markCleaned(info); - } finally { - deadlockCnt = 0; } } @@ -396,13 +390,14 @@ public void markCleaned(CompactionInfo info) throws MetaException { */ public void cleanEmptyAbortedTxns() throws MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; Statement stmt = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); stmt = dbConn.createStatement(); String s = "select txn_id from TXNS where " + - "txn_id not in (select tc_txnid from TXN_COMPONENTS) and " + - "txn_state = '" + TXN_ABORTED + "'"; + "txn_id not in (select tc_txnid from TXN_COMPONENTS) and " + + "txn_state = '" + TXN_ABORTED + "'"; LOG.debug("Going to execute query <" + s + ">"); ResultSet rs = stmt.executeQuery(s); Set txnids = new HashSet(); @@ -425,21 +420,16 @@ public void cleanEmptyAbortedTxns() throws MetaException { } catch (SQLException e) { LOG.error("Unable to delete from txns table " + e.getMessage()); LOG.debug("Going to rollback"); - try { - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "cleanEmptyAbortedTxns"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "cleanEmptyAbortedTxns"); throw new MetaException("Unable to connect to transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); closeStmt(stmt); } - } catch (DeadlockException e) { + } catch (RetryException e) { cleanEmptyAbortedTxns(); - } finally { - deadlockCnt = 0; } } @@ -454,13 +444,14 @@ public void cleanEmptyAbortedTxns() throws MetaException { */ public void revokeFromLocalWorkers(String hostname) throws MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; Statement stmt = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); stmt = dbConn.createStatement(); String s = "update COMPACTION_QUEUE set cq_worker_id = null, cq_start = null, cq_state = '" - + INITIATED_STATE+ "' where cq_state = '" + WORKING_STATE + "' and cq_worker_id like '" - + hostname + "%'"; + + INITIATED_STATE+ "' where cq_state = '" + WORKING_STATE + "' and cq_worker_id like '" + + hostname + "%'"; LOG.debug("Going to execute update <" + s + ">"); // It isn't an error if the following returns no rows, as the local workers could have died // with nothing assigned to them. @@ -468,24 +459,19 @@ public void revokeFromLocalWorkers(String hostname) throws MetaException { LOG.debug("Going to commit"); dbConn.commit(); } catch (SQLException e) { - try { - LOG.error("Unable to change dead worker's records back to initiated state " + - e.getMessage()); - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "revokeFromLocalWorkers"); + LOG.error("Unable to change dead worker's records back to initiated state " + + e.getMessage()); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "revokeFromLocalWorkers"); throw new MetaException("Unable to connect to transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); closeStmt(stmt); } - } catch (DeadlockException e) { + } catch (RetryException e) { revokeFromLocalWorkers(hostname); - } finally { - deadlockCnt = 0; } } @@ -500,14 +486,15 @@ public void revokeFromLocalWorkers(String hostname) throws MetaException { */ public void revokeTimedoutWorkers(long timeout) throws MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); - long latestValidStart = getDbTime(dbConn) - timeout; + Connection dbConn = null; Statement stmt = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + long latestValidStart = getDbTime(dbConn) - timeout; stmt = dbConn.createStatement(); String s = "update COMPACTION_QUEUE set cq_worker_id = null, cq_start = null, cq_state = '" - + INITIATED_STATE+ "' where cq_state = '" + WORKING_STATE + "' and cq_start < " - + latestValidStart; + + INITIATED_STATE+ "' where cq_state = '" + WORKING_STATE + "' and cq_start < " + + latestValidStart; LOG.debug("Going to execute update <" + s + ">"); // It isn't an error if the following returns no rows, as the local workers could have died // with nothing assigned to them. @@ -515,24 +502,19 @@ public void revokeTimedoutWorkers(long timeout) throws MetaException { LOG.debug("Going to commit"); dbConn.commit(); } catch (SQLException e) { - try { - LOG.error("Unable to change dead worker's records back to initiated state " + - e.getMessage()); - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "revokeTimedoutWorkers"); + LOG.error("Unable to change dead worker's records back to initiated state " + + e.getMessage()); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "revokeTimedoutWorkers"); throw new MetaException("Unable to connect to transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); closeStmt(stmt); } - } catch (DeadlockException e) { + } catch (RetryException e) { revokeTimedoutWorkers(timeout); - } finally { - deadlockCnt = 0; } } @@ -543,53 +525,55 @@ public void revokeTimedoutWorkers(long timeout) throws MetaException { * @throws MetaException */ public List findColumnsWithStats(CompactionInfo ci) throws MetaException { - Connection dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + Connection dbConn = null; Statement stmt = null; ResultSet rs = null; try { - String quote = getIdentifierQuoteString(dbConn); - stmt = dbConn.createStatement(); - StringBuilder bldr = new StringBuilder(); - bldr.append("SELECT ").append(quote).append("COLUMN_NAME").append(quote) + try { + dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + String quote = getIdentifierQuoteString(dbConn); + stmt = dbConn.createStatement(); + StringBuilder bldr = new StringBuilder(); + bldr.append("SELECT ").append(quote).append("COLUMN_NAME").append(quote) .append(" FROM ") .append(quote).append((ci.partName == null ? "TAB_COL_STATS" : "PART_COL_STATS")) - .append(quote) + .append(quote) .append(" WHERE ") .append(quote).append("DB_NAME").append(quote).append(" = '").append(ci.dbname) - .append("' AND ").append(quote).append("TABLE_NAME").append(quote) - .append(" = '").append(ci.tableName).append("'"); - if (ci.partName != null) { - bldr.append(" AND ").append(quote).append("PARTITION_NAME").append(quote).append(" = '") + .append("' AND ").append(quote).append("TABLE_NAME").append(quote) + .append(" = '").append(ci.tableName).append("'"); + if (ci.partName != null) { + bldr.append(" AND ").append(quote).append("PARTITION_NAME").append(quote).append(" = '") .append(ci.partName).append("'"); - } - String s = bldr.toString(); + } + String s = bldr.toString(); /*String s = "SELECT COLUMN_NAME FROM " + (ci.partName == null ? "TAB_COL_STATS" : "PART_COL_STATS") + " WHERE DB_NAME='" + ci.dbname + "' AND TABLE_NAME='" + ci.tableName + "'" + (ci.partName == null ? "" : " AND PARTITION_NAME='" + ci.partName + "'");*/ - LOG.debug("Going to execute <" + s + ">"); - rs = stmt.executeQuery(s); - List columns = new ArrayList(); - while(rs.next()) { - columns.add(rs.getString(1)); - } - LOG.debug("Found columns to update stats: " + columns + " on " + ci.tableName + - (ci.partName == null ? "" : "/" + ci.partName)); - dbConn.commit(); - return columns; - } catch (SQLException e) { - try { + LOG.debug("Going to execute <" + s + ">"); + rs = stmt.executeQuery(s); + List columns = new ArrayList(); + while (rs.next()) { + columns.add(rs.getString(1)); + } + LOG.debug("Found columns to update stats: " + columns + " on " + ci.tableName + + (ci.partName == null ? "" : "/" + ci.partName)); + dbConn.commit(); + return columns; + } catch (SQLException e) { LOG.error("Failed to find columns to analyze stats on for " + ci.tableName + - (ci.partName == null ? "" : "/" + ci.partName), e); - dbConn.rollback(); - } catch (SQLException e1) { - //nothing we can do here + (ci.partName == null ? "" : "/" + ci.partName), e); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "findColumnsWithStats"); + throw new MetaException("Unable to connect to transaction database " + + StringUtils.stringifyException(e)); + } finally { + close(rs, stmt, dbConn); } - throw new MetaException("Unable to connect to transaction database " + - StringUtils.stringifyException(e)); - } finally { - close(rs, stmt, dbConn); + } catch (RetryException ex) { + return findColumnsWithStats(ci); } } } diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java index 04e65ea2cdf5..02735cb9ea4d 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java @@ -77,7 +77,7 @@ public class TxnHandler { static final private Log LOG = LogFactory.getLog(TxnHandler.class.getName()); static private DataSource connPool; - private static Boolean lockLock = new Boolean("true"); // Random object to lock on for the lock + private final static Object lockLock = new Object(); // Random object to lock on for the lock // method /** @@ -87,10 +87,13 @@ public class TxnHandler { protected HiveConf conf; protected DatabaseProduct dbProduct; - // Transaction timeout, in milliseconds. + // (End user) Transaction timeout, in milliseconds. private long timeout; private String identifierQuoteString; // quotes to use for quoting tables, where necessary + private final long retryInterval; + private final int retryLimit; + private int retryNum; // DEADLOCK DETECTION AND HANDLING // A note to developers of this class. ALWAYS access HIVE_LOCKS before TXNS to avoid deadlock @@ -125,113 +128,122 @@ public TxnHandler(HiveConf conf) { timeout = HiveConf.getTimeVar(conf, HiveConf.ConfVars.HIVE_TXN_TIMEOUT, TimeUnit.MILLISECONDS); deadlockCnt = 0; buildJumpTable(); + retryInterval = HiveConf.getTimeVar(conf, HiveConf.ConfVars.HMSHANDLERINTERVAL, TimeUnit.MILLISECONDS); + retryLimit = HiveConf.getIntVar(conf, HiveConf.ConfVars.HMSHANDLERATTEMPTS); + } public GetOpenTxnsInfoResponse getOpenTxnsInfo() throws MetaException { - // We need to figure out the current transaction number and the list of - // open transactions. To avoid needing a transaction on the underlying - // database we'll look at the current transaction number first. If it - // subsequently shows up in the open list that's ok. - Connection dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); - Statement stmt = null; try { - stmt = dbConn.createStatement(); - String s = "select ntxn_next - 1 from NEXT_TXN_ID"; - LOG.debug("Going to execute query <" + s + ">"); - ResultSet rs = stmt.executeQuery(s); - if (!rs.next()) { - throw new MetaException("Transaction tables not properly " + + // We need to figure out the current transaction number and the list of + // open transactions. To avoid needing a transaction on the underlying + // database we'll look at the current transaction number first. If it + // subsequently shows up in the open list that's ok. + Connection dbConn = null; + Statement stmt = null; + try { + dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + stmt = dbConn.createStatement(); + String s = "select ntxn_next - 1 from NEXT_TXN_ID"; + LOG.debug("Going to execute query <" + s + ">"); + ResultSet rs = stmt.executeQuery(s); + if (!rs.next()) { + throw new MetaException("Transaction tables not properly " + "initialized, no record found in next_txn_id"); - } - long hwm = rs.getLong(1); - if (rs.wasNull()) { - throw new MetaException("Transaction tables not properly " + + } + long hwm = rs.getLong(1); + if (rs.wasNull()) { + throw new MetaException("Transaction tables not properly " + "initialized, null record found in next_txn_id"); - } - - List txnInfo = new ArrayList(); - s = "select txn_id, txn_state, txn_user, txn_host from TXNS"; - LOG.debug("Going to execute query<" + s + ">"); - rs = stmt.executeQuery(s); - while (rs.next()) { - char c = rs.getString(2).charAt(0); - TxnState state; - switch (c) { - case TXN_ABORTED: - state = TxnState.ABORTED; - break; - - case TXN_OPEN: - state = TxnState.OPEN; - break; + } - default: - throw new MetaException("Unexpected transaction state " + c + + List txnInfo = new ArrayList(); + s = "select txn_id, txn_state, txn_user, txn_host from TXNS"; + LOG.debug("Going to execute query<" + s + ">"); + rs = stmt.executeQuery(s); + while (rs.next()) { + char c = rs.getString(2).charAt(0); + TxnState state; + switch (c) { + case TXN_ABORTED: + state = TxnState.ABORTED; + break; + + case TXN_OPEN: + state = TxnState.OPEN; + break; + + default: + throw new MetaException("Unexpected transaction state " + c + " found in txns table"); + } + txnInfo.add(new TxnInfo(rs.getLong(1), state, rs.getString(3), rs.getString(4))); } - txnInfo.add(new TxnInfo(rs.getLong(1), state, rs.getString(3), rs.getString(4))); - } - LOG.debug("Going to rollback"); - dbConn.rollback(); - return new GetOpenTxnsInfoResponse(hwm, txnInfo); - } catch (SQLException e) { - try { LOG.debug("Going to rollback"); dbConn.rollback(); - } catch (SQLException e1) { - } - throw new MetaException("Unable to select from transaction database, " + return new GetOpenTxnsInfoResponse(hwm, txnInfo); + } catch (SQLException e) { + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "getOpenTxnsInfo"); + throw new MetaException("Unable to select from transaction database: " + getMessage(e) + StringUtils.stringifyException(e)); - } finally { - closeStmt(stmt); - closeDbConn(dbConn); + } finally { + closeStmt(stmt); + closeDbConn(dbConn); + } + } catch (RetryException e) { + return getOpenTxnsInfo(); } } public GetOpenTxnsResponse getOpenTxns() throws MetaException { - // We need to figure out the current transaction number and the list of - // open transactions. To avoid needing a transaction on the underlying - // database we'll look at the current transaction number first. If it - // subsequently shows up in the open list that's ok. - Connection dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); - Statement stmt = null; try { - timeOutTxns(dbConn); - stmt = dbConn.createStatement(); - String s = "select ntxn_next - 1 from NEXT_TXN_ID"; - LOG.debug("Going to execute query <" + s + ">"); - ResultSet rs = stmt.executeQuery(s); - if (!rs.next()) { - throw new MetaException("Transaction tables not properly " + + // We need to figure out the current transaction number and the list of + // open transactions. To avoid needing a transaction on the underlying + // database we'll look at the current transaction number first. If it + // subsequently shows up in the open list that's ok. + Connection dbConn = null; + Statement stmt = null; + try { + dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + timeOutTxns(dbConn); + stmt = dbConn.createStatement(); + String s = "select ntxn_next - 1 from NEXT_TXN_ID"; + LOG.debug("Going to execute query <" + s + ">"); + ResultSet rs = stmt.executeQuery(s); + if (!rs.next()) { + throw new MetaException("Transaction tables not properly " + "initialized, no record found in next_txn_id"); - } - long hwm = rs.getLong(1); - if (rs.wasNull()) { - throw new MetaException("Transaction tables not properly " + + } + long hwm = rs.getLong(1); + if (rs.wasNull()) { + throw new MetaException("Transaction tables not properly " + "initialized, null record found in next_txn_id"); - } + } - Set openList = new HashSet(); - s = "select txn_id from TXNS"; - LOG.debug("Going to execute query<" + s + ">"); - rs = stmt.executeQuery(s); - while (rs.next()) { - openList.add(rs.getLong(1)); - } - LOG.debug("Going to rollback"); - dbConn.rollback(); - return new GetOpenTxnsResponse(hwm, openList); - } catch (SQLException e) { - try { + Set openList = new HashSet(); + s = "select txn_id from TXNS"; + LOG.debug("Going to execute query<" + s + ">"); + rs = stmt.executeQuery(s); + while (rs.next()) { + openList.add(rs.getLong(1)); + } LOG.debug("Going to rollback"); dbConn.rollback(); - } catch (SQLException e1) { - } - throw new MetaException("Unable to select from transaction database, " + return new GetOpenTxnsResponse(hwm, openList); + } catch (SQLException e) { + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "getOpenTxns"); + throw new MetaException("Unable to select from transaction database, " + StringUtils.stringifyException(e)); - } finally { - closeStmt(stmt); - closeDbConn(dbConn); + } finally { + closeStmt(stmt); + closeDbConn(dbConn); + } + } catch (RetryException e) { + return getOpenTxns(); } } @@ -259,12 +271,13 @@ public static ValidTxnList createValidTxnList(GetOpenTxnsResponse txns, long cur public OpenTxnsResponse openTxns(OpenTxnRequest rqst) throws MetaException { int numTxns = rqst.getNum_txns(); try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; Statement stmt = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); // Make sure the user has not requested an insane amount of txns. int maxTxns = HiveConf.getIntVar(conf, - HiveConf.ConfVars.HIVE_TXN_MAX_OPEN_BATCH); + HiveConf.ConfVars.HIVE_TXN_MAX_OPEN_BATCH); if (numTxns > maxTxns) numTxns = maxTxns; stmt = dbConn.createStatement(); @@ -273,7 +286,7 @@ public OpenTxnsResponse openTxns(OpenTxnRequest rqst) throws MetaException { ResultSet rs = stmt.executeQuery(s); if (!rs.next()) { throw new MetaException("Transaction database not properly " + - "configured, can't find next transaction id."); + "configured, can't find next transaction id."); } long first = rs.getLong(1); s = "update NEXT_TXN_ID set ntxn_next = " + (first + numTxns); @@ -281,8 +294,8 @@ public OpenTxnsResponse openTxns(OpenTxnRequest rqst) throws MetaException { stmt.executeUpdate(s); long now = getDbTime(dbConn); s = "insert into TXNS (txn_id, txn_state, txn_started, " + - "txn_last_heartbeat, txn_user, txn_host) values (?, 'o', " + now + ", " + - now + ", '" + rqst.getUser() + "', '" + rqst.getHostname() + "')"; + "txn_last_heartbeat, txn_user, txn_host) values (?, 'o', " + now + ", " + + now + ", '" + rqst.getUser() + "', '" + rqst.getHostname() + "')"; LOG.debug("Going to prepare statement <" + s + ">"); PreparedStatement ps = dbConn.prepareStatement(s); List txnIds = new ArrayList(numTxns); @@ -296,30 +309,26 @@ public OpenTxnsResponse openTxns(OpenTxnRequest rqst) throws MetaException { dbConn.commit(); return new OpenTxnsResponse(txnIds); } catch (SQLException e) { - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "openTxns"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "openTxns"); throw new MetaException("Unable to select from transaction database " + StringUtils.stringifyException(e)); } finally { closeStmt(stmt); closeDbConn(dbConn); } - } catch (DeadlockException e) { + } catch (RetryException e) { return openTxns(rqst); - } finally { - deadlockCnt = 0; } } public void abortTxn(AbortTxnRequest rqst) throws NoSuchTxnException, MetaException { long txnid = rqst.getTxnid(); try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); List txnids = new ArrayList(1); txnids.add(txnid); if (abortTxns(dbConn, txnids) != 1) { @@ -331,31 +340,27 @@ public void abortTxn(AbortTxnRequest rqst) throws NoSuchTxnException, MetaExcept LOG.debug("Going to commit"); dbConn.commit(); } catch (SQLException e) { - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "abortTxn"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "abortTxn"); throw new MetaException("Unable to update transaction database " + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); } - } catch (DeadlockException e) { + } catch (RetryException e) { abortTxn(rqst); - } finally { - deadlockCnt = 0; } } public void commitTxn(CommitTxnRequest rqst) - throws NoSuchTxnException, TxnAbortedException, MetaException { + throws NoSuchTxnException, TxnAbortedException, MetaException { long txnid = rqst.getTxnid(); try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; Statement stmt = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); stmt = dbConn.createStatement(); // Before we do the commit heartbeat the txn. This is slightly odd in that we're going to // commit it, but it does two things. One, it makes sure the transaction is still valid. @@ -367,11 +372,11 @@ public void commitTxn(CommitTxnRequest rqst) // Move the record from txn_components into completed_txn_components so that the compactor // knows where to look to compact. String s = "insert into COMPLETED_TXN_COMPONENTS select tc_txnid, tc_database, tc_table, " + - "tc_partition from TXN_COMPONENTS where tc_txnid = " + txnid; + "tc_partition from TXN_COMPONENTS where tc_txnid = " + txnid; LOG.debug("Going to execute insert <" + s + ">"); if (stmt.executeUpdate(s) < 1) { LOG.warn("Expected to move at least one record from txn_components to " + - "completed_txn_components when committing txn!"); + "completed_txn_components when committing txn!"); } // Always access TXN_COMPONENTS before HIVE_LOCKS; @@ -388,80 +393,68 @@ public void commitTxn(CommitTxnRequest rqst) LOG.debug("Going to commit"); dbConn.commit(); } catch (SQLException e) { - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "commitTxn"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "commitTxn"); throw new MetaException("Unable to update transaction database " + StringUtils.stringifyException(e)); } finally { closeStmt(stmt); closeDbConn(dbConn); } - } catch (DeadlockException e) { + } catch (RetryException e) { commitTxn(rqst); - } finally { - deadlockCnt = 0; } } public LockResponse lock(LockRequest rqst) - throws NoSuchTxnException, TxnAbortedException, MetaException { + throws NoSuchTxnException, TxnAbortedException, MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); return lock(dbConn, rqst, true); } catch (SQLException e) { - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "lock"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "lock"); throw new MetaException("Unable to update transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); } - } catch (DeadlockException e) { + } catch (RetryException e) { return lock(rqst); - } finally { - deadlockCnt = 0; } } public LockResponse lockNoWait(LockRequest rqst) - throws NoSuchTxnException, TxnAbortedException, MetaException { + throws NoSuchTxnException, TxnAbortedException, MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); return lock(dbConn, rqst, false); } catch (SQLException e) { - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "lockNoWait"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "lockNoWait"); throw new MetaException("Unable to update transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); } - } catch (DeadlockException e) { + } catch (RetryException e) { return lockNoWait(rqst); - } finally { - deadlockCnt = 0; } } public LockResponse checkLock(CheckLockRequest rqst) - throws NoSuchTxnException, NoSuchLockException, TxnAbortedException, MetaException { + throws NoSuchTxnException, NoSuchLockException, TxnAbortedException, MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); long extLockId = rqst.getLockid(); // Clean up timed out locks timeOutLocks(dbConn); @@ -474,31 +467,27 @@ public LockResponse checkLock(CheckLockRequest rqst) if (txnid > 0) heartbeatTxn(dbConn, txnid); return checkLock(dbConn, extLockId, true); } catch (SQLException e) { - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "checkLock"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "checkLock"); throw new MetaException("Unable to update transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); } - } catch (DeadlockException e) { + } catch (RetryException e) { return checkLock(rqst); - } finally { - deadlockCnt = 0; } } public void unlock(UnlockRequest rqst) - throws NoSuchLockException, TxnOpenException, MetaException { + throws NoSuchLockException, TxnOpenException, MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; Statement stmt = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); // Odd as it seems, we need to heartbeat first because this touches the // lock table and assures that our locks our still valid. If they are // not, this will throw an exception and the heartbeat will fail. @@ -512,8 +501,8 @@ public void unlock(UnlockRequest rqst) LOG.debug("Going to rollback"); dbConn.rollback(); String msg = "Unlocking locks associated with transaction" + - " not permitted. Lockid " + extLockId + " is associated with " + - "transaction " + txnid; + " not permitted. Lockid " + extLockId + " is associated with " + + "transaction " + txnid; LOG.error(msg); throw new TxnOpenException(msg); } @@ -529,97 +518,96 @@ public void unlock(UnlockRequest rqst) LOG.debug("Going to commit"); dbConn.commit(); } catch (SQLException e) { - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "unlock"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "unlock"); throw new MetaException("Unable to update transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeStmt(stmt); closeDbConn(dbConn); } - } catch (DeadlockException e) { + } catch (RetryException e) { unlock(rqst); - } finally { - deadlockCnt = 0; } } public ShowLocksResponse showLocks(ShowLocksRequest rqst) throws MetaException { - Connection dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); - ShowLocksResponse rsp = new ShowLocksResponse(); - List elems = new ArrayList(); - Statement stmt = null; try { - stmt = dbConn.createStatement(); + Connection dbConn = null; + ShowLocksResponse rsp = new ShowLocksResponse(); + List elems = new ArrayList(); + Statement stmt = null; + try { + dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + stmt = dbConn.createStatement(); - String s = "select hl_lock_ext_id, hl_txnid, hl_db, hl_table, hl_partition, hl_lock_state, " + + String s = "select hl_lock_ext_id, hl_txnid, hl_db, hl_table, hl_partition, hl_lock_state, " + "hl_lock_type, hl_last_heartbeat, hl_acquired_at, hl_user, hl_host from HIVE_LOCKS"; - LOG.debug("Doing to execute query <" + s + ">"); - ResultSet rs = stmt.executeQuery(s); - while (rs.next()) { - ShowLocksResponseElement e = new ShowLocksResponseElement(); - e.setLockid(rs.getLong(1)); - long txnid = rs.getLong(2); - if (!rs.wasNull()) e.setTxnid(txnid); - e.setDbname(rs.getString(3)); - e.setTablename(rs.getString(4)); - String partition = rs.getString(5); - if (partition != null) e.setPartname(partition); - switch (rs.getString(6).charAt(0)) { - case LOCK_ACQUIRED: e.setState(LockState.ACQUIRED); break; - case LOCK_WAITING: e.setState(LockState.WAITING); break; - default: throw new MetaException("Unknown lock state " + rs.getString(6).charAt(0)); - } - switch (rs.getString(7).charAt(0)) { - case LOCK_SEMI_SHARED: e.setType(LockType.SHARED_WRITE); break; - case LOCK_EXCLUSIVE: e.setType(LockType.EXCLUSIVE); break; - case LOCK_SHARED: e.setType(LockType.SHARED_READ); break; - default: throw new MetaException("Unknown lock type " + rs.getString(6).charAt(0)); + LOG.debug("Doing to execute query <" + s + ">"); + ResultSet rs = stmt.executeQuery(s); + while (rs.next()) { + ShowLocksResponseElement e = new ShowLocksResponseElement(); + e.setLockid(rs.getLong(1)); + long txnid = rs.getLong(2); + if (!rs.wasNull()) e.setTxnid(txnid); + e.setDbname(rs.getString(3)); + e.setTablename(rs.getString(4)); + String partition = rs.getString(5); + if (partition != null) e.setPartname(partition); + switch (rs.getString(6).charAt(0)) { + case LOCK_ACQUIRED: e.setState(LockState.ACQUIRED); break; + case LOCK_WAITING: e.setState(LockState.WAITING); break; + default: throw new MetaException("Unknown lock state " + rs.getString(6).charAt(0)); + } + switch (rs.getString(7).charAt(0)) { + case LOCK_SEMI_SHARED: e.setType(LockType.SHARED_WRITE); break; + case LOCK_EXCLUSIVE: e.setType(LockType.EXCLUSIVE); break; + case LOCK_SHARED: e.setType(LockType.SHARED_READ); break; + default: throw new MetaException("Unknown lock type " + rs.getString(6).charAt(0)); + } + e.setLastheartbeat(rs.getLong(8)); + long acquiredAt = rs.getLong(9); + if (!rs.wasNull()) e.setAcquiredat(acquiredAt); + e.setUser(rs.getString(10)); + e.setHostname(rs.getString(11)); + elems.add(e); } - e.setLastheartbeat(rs.getLong(8)); - long acquiredAt = rs.getLong(9); - if (!rs.wasNull()) e.setAcquiredat(acquiredAt); - e.setUser(rs.getString(10)); - e.setHostname(rs.getString(11)); - elems.add(e); - } - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e) { - throw new MetaException("Unable to select from transaction database " + + LOG.debug("Going to rollback"); + dbConn.rollback(); + } catch (SQLException e) { + checkRetryable(dbConn, e, "showLocks"); + throw new MetaException("Unable to select from transaction database " + StringUtils.stringifyException(e)); - } finally { - closeStmt(stmt); - closeDbConn(dbConn); + } finally { + closeStmt(stmt); + closeDbConn(dbConn); + } + rsp.setLocks(elems); + return rsp; + } catch (RetryException e) { + return showLocks(rqst); } - rsp.setLocks(elems); - return rsp; } public void heartbeat(HeartbeatRequest ids) - throws NoSuchTxnException, NoSuchLockException, TxnAbortedException, MetaException { + throws NoSuchTxnException, NoSuchLockException, TxnAbortedException, MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); heartbeatLock(dbConn, ids.getLockid()); heartbeatTxn(dbConn, ids.getTxnid()); } catch (SQLException e) { - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "heartbeat"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "heartbeat"); throw new MetaException("Unable to select from transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); } - } catch (DeadlockException e) { + } catch (RetryException e) { heartbeat(ids); } finally { deadlockCnt = 0; @@ -627,15 +615,16 @@ public void heartbeat(HeartbeatRequest ids) } public HeartbeatTxnRangeResponse heartbeatTxnRange(HeartbeatTxnRangeRequest rqst) - throws MetaException { + throws MetaException { try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; HeartbeatTxnRangeResponse rsp = new HeartbeatTxnRangeResponse(); Set nosuch = new HashSet(); Set aborted = new HashSet(); rsp.setNosuch(nosuch); rsp.setAborted(aborted); try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); for (long txn = rqst.getMin(); txn <= rqst.getMax(); txn++) { try { heartbeatTxn(dbConn, txn); @@ -647,18 +636,15 @@ public HeartbeatTxnRangeResponse heartbeatTxnRange(HeartbeatTxnRangeRequest rqst } return rsp; } catch (SQLException e) { - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "heartbeatTxnRange"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "heartbeatTxnRange"); throw new MetaException("Unable to select from transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeDbConn(dbConn); } - } catch (DeadlockException e) { + } catch (RetryException e) { return heartbeatTxnRange(rqst); } } @@ -666,9 +652,10 @@ public HeartbeatTxnRangeResponse heartbeatTxnRange(HeartbeatTxnRangeRequest rqst public void compact(CompactionRequest rqst) throws MetaException { // Put a compaction request in the queue. try { - Connection dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); + Connection dbConn = null; Statement stmt = null; try { + dbConn = getDbConn(Connection.TRANSACTION_SERIALIZABLE); stmt = dbConn.createStatement(); // Get the id for the next entry in the queue @@ -679,7 +666,7 @@ public void compact(CompactionRequest rqst) throws MetaException { LOG.debug("Going to rollback"); dbConn.rollback(); throw new MetaException("Transaction tables not properly initiated, " + - "no record found in next_compaction_queue_id"); + "no record found in next_compaction_queue_id"); } long id = rs.getLong(1); s = "update NEXT_COMPACTION_QUEUE_ID set ncq_next = " + (id + 1); @@ -687,7 +674,7 @@ public void compact(CompactionRequest rqst) throws MetaException { stmt.executeUpdate(s); StringBuilder buf = new StringBuilder("insert into COMPACTION_QUEUE (cq_id, cq_database, " + - "cq_table, "); + "cq_table, "); String partName = rqst.getPartitionname(); if (partName != null) buf.append("cq_partition, "); buf.append("cq_state, cq_type"); @@ -730,71 +717,69 @@ public void compact(CompactionRequest rqst) throws MetaException { LOG.debug("Going to commit"); dbConn.commit(); } catch (SQLException e) { - try { - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e1) { - } - detectDeadlock(dbConn, e, "compact"); + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "compact"); throw new MetaException("Unable to select from transaction database " + - StringUtils.stringifyException(e)); + StringUtils.stringifyException(e)); } finally { closeStmt(stmt); closeDbConn(dbConn); } - } catch (DeadlockException e) { + } catch (RetryException e) { compact(rqst); - } finally { - deadlockCnt = 0; } } public ShowCompactResponse showCompact(ShowCompactRequest rqst) throws MetaException { ShowCompactResponse response = new ShowCompactResponse(new ArrayList()); - Connection dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + Connection dbConn = null; Statement stmt = null; try { - stmt = dbConn.createStatement(); - String s = "select cq_database, cq_table, cq_partition, cq_state, cq_type, cq_worker_id, " + + try { + dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED); + stmt = dbConn.createStatement(); + String s = "select cq_database, cq_table, cq_partition, cq_state, cq_type, cq_worker_id, " + "cq_start, cq_run_as from COMPACTION_QUEUE"; - LOG.debug("Going to execute query <" + s + ">"); - ResultSet rs = stmt.executeQuery(s); - while (rs.next()) { - ShowCompactResponseElement e = new ShowCompactResponseElement(); - e.setDbname(rs.getString(1)); - e.setTablename(rs.getString(2)); - e.setPartitionname(rs.getString(3)); - switch (rs.getString(4).charAt(0)) { - case INITIATED_STATE: e.setState(INITIATED_RESPONSE); break; - case WORKING_STATE: e.setState(WORKING_RESPONSE); break; - case READY_FOR_CLEANING: e.setState(CLEANING_RESPONSE); break; - default: throw new MetaException("Unexpected compaction state " + rs.getString(4)); - } - switch (rs.getString(5).charAt(0)) { - case MAJOR_TYPE: e.setType(CompactionType.MAJOR); break; - case MINOR_TYPE: e.setType(CompactionType.MINOR); break; - default: throw new MetaException("Unexpected compaction type " + rs.getString(5)); + LOG.debug("Going to execute query <" + s + ">"); + ResultSet rs = stmt.executeQuery(s); + while (rs.next()) { + ShowCompactResponseElement e = new ShowCompactResponseElement(); + e.setDbname(rs.getString(1)); + e.setTablename(rs.getString(2)); + e.setPartitionname(rs.getString(3)); + switch (rs.getString(4).charAt(0)) { + case INITIATED_STATE: e.setState(INITIATED_RESPONSE); break; + case WORKING_STATE: e.setState(WORKING_RESPONSE); break; + case READY_FOR_CLEANING: e.setState(CLEANING_RESPONSE); break; + default: throw new MetaException("Unexpected compaction state " + rs.getString(4)); + } + switch (rs.getString(5).charAt(0)) { + case MAJOR_TYPE: e.setType(CompactionType.MAJOR); break; + case MINOR_TYPE: e.setType(CompactionType.MINOR); break; + default: throw new MetaException("Unexpected compaction type " + rs.getString(5)); + } + e.setWorkerid(rs.getString(6)); + e.setStart(rs.getLong(7)); + e.setRunAs(rs.getString(8)); + response.addToCompacts(e); } - e.setWorkerid(rs.getString(6)); - e.setStart(rs.getLong(7)); - e.setRunAs(rs.getString(8)); - response.addToCompacts(e); - } - LOG.debug("Going to rollback"); - dbConn.rollback(); - } catch (SQLException e) { - LOG.debug("Going to rollback"); - try { + LOG.debug("Going to rollback"); dbConn.rollback(); - } catch (SQLException e1) { - } - throw new MetaException("Unable to select from transaction database " + + } catch (SQLException e) { + LOG.debug("Going to rollback"); + rollbackDBConn(dbConn); + checkRetryable(dbConn, e, "showCompact"); + throw new MetaException("Unable to select from transaction database " + StringUtils.stringifyException(e)); - } finally { - closeStmt(stmt); - closeDbConn(dbConn); + } finally { + closeStmt(stmt); + closeDbConn(dbConn); + } + return response; + } catch (RetryException e) { + return showCompact(rqst); } - return response; } /** @@ -828,7 +813,7 @@ long setTimeout(long milliseconds) { return previous_timeout; } - protected class DeadlockException extends Exception { + protected class RetryException extends Exception { } @@ -839,26 +824,28 @@ protected class DeadlockException extends Exception { * @return db connection * @throws MetaException if the connection cannot be obtained */ - protected Connection getDbConn(int isolationLevel) throws MetaException { + protected Connection getDbConn(int isolationLevel) throws SQLException { + Connection dbConn = connPool.getConnection(); + dbConn.setAutoCommit(false); + dbConn.setTransactionIsolation(isolationLevel); + return dbConn; + } + + void rollbackDBConn(Connection dbConn) { try { - Connection dbConn = connPool.getConnection(); - dbConn.setAutoCommit(false); - dbConn.setTransactionIsolation(isolationLevel); - return dbConn; + if (dbConn != null) dbConn.rollback(); } catch (SQLException e) { - String msg = "Unable to get jdbc connection from pool, " + e.getMessage(); - throw new MetaException(msg); + LOG.warn("Failed to rollback db connection " + getMessage(e)); } } - protected void closeDbConn(Connection dbConn) { try { if (dbConn != null) dbConn.close(); } catch (SQLException e) { - LOG.warn("Failed to close db connection " + e.getMessage()); + LOG.warn("Failed to close db connection " + getMessage(e)); } } - + /** * Close statement instance. * @param stmt statement instance. @@ -867,7 +854,7 @@ protected void closeStmt(Statement stmt) { try { if (stmt != null) stmt.close(); } catch (SQLException e) { - LOG.warn("Failed to close statement " + e.getMessage()); + LOG.warn("Failed to close statement " + getMessage(e)); } } @@ -882,7 +869,7 @@ void close(ResultSet rs) { } } catch(SQLException ex) { - LOG.warn("Failed to close statement " + ex.getMessage()); + LOG.warn("Failed to close statement " + getMessage(ex)); } } @@ -895,18 +882,18 @@ void close(ResultSet rs, Statement stmt, Connection dbConn) { closeDbConn(dbConn); } /** - * Determine if an exception was a deadlock. Unfortunately there is no standard way to do + * Determine if an exception was such that it makse sense to retry. Unfortunately there is no standard way to do * this, so we have to inspect the error messages and catch the telltale signs for each * different database. * @param conn database connection * @param e exception that was thrown. * @param caller name of the method calling this - * @throws org.apache.hadoop.hive.metastore.txn.TxnHandler.DeadlockException when deadlock + * @throws org.apache.hadoop.hive.metastore.txn.TxnHandler.RetryException when deadlock * detected and retry count has not been exceeded. */ - protected void detectDeadlock(Connection conn, + protected void checkRetryable(Connection conn, SQLException e, - String caller) throws DeadlockException, MetaException { + String caller) throws RetryException, MetaException { // If you change this function, remove the @Ignore from TestTxnHandler.deadlockIsDetected() // to test these changes. @@ -919,19 +906,41 @@ protected void detectDeadlock(Connection conn, determineDatabaseProduct(conn); } if (e instanceof SQLTransactionRollbackException || - ((dbProduct == DatabaseProduct.MYSQL || dbProduct == DatabaseProduct.POSTGRES || - dbProduct == DatabaseProduct.SQLSERVER) && e.getSQLState().equals("40001")) || - (dbProduct == DatabaseProduct.POSTGRES && e.getSQLState().equals("40P01")) || - (dbProduct == DatabaseProduct.ORACLE && (e.getMessage().contains("deadlock detected") - || e.getMessage().contains("can't serialize access for this transaction")))) { + ((dbProduct == DatabaseProduct.MYSQL || dbProduct == DatabaseProduct.POSTGRES || + dbProduct == DatabaseProduct.SQLSERVER) && e.getSQLState().equals("40001")) || + (dbProduct == DatabaseProduct.POSTGRES && e.getSQLState().equals("40P01")) || + (dbProduct == DatabaseProduct.ORACLE && (e.getMessage().contains("deadlock detected") + || e.getMessage().contains("can't serialize access for this transaction")))) { if (deadlockCnt++ < ALLOWED_REPEATED_DEADLOCKS) { LOG.warn("Deadlock detected in " + caller + ", trying again."); - throw new DeadlockException(); + throw new RetryException(); } else { LOG.error("Too many repeated deadlocks in " + caller + ", giving up."); deadlockCnt = 0; } } + else if(isRetryable(e)) { + //in MSSQL this means Communication Link Failure + if(retryNum++ < retryLimit) { + try { + Thread.sleep(retryInterval); + } + catch(InterruptedException ex) { + // + } + LOG.warn("Retryable error detected in " + caller + ", trying again: " + getMessage(e)); + throw new RetryException(); + } + else { + LOG.error("Fatal error. Retry limit (" + retryLimit + ") reached. Last error: " + getMessage(e)); + retryNum = 0; + } + } + else { + //if here, we got something that will propagate the error (rather than retry), so reset counters + deadlockCnt = 0; + retryNum = 0; + } } /** @@ -1073,10 +1082,10 @@ public boolean equals(Object other) { @Override public String toString() { return "extLockId:" + Long.toString(extLockId) + " intLockId:" + - intLockId + " txnId:" + Long.toString - (txnId) + " db:" + db + " table:" + table + " partition:" + - partition + " state:" + (state == null ? "null" : state.toString()) - + " type:" + (type == null ? "null" : type.toString()); + intLockId + " txnId:" + Long.toString + (txnId) + " db:" + db + " table:" + table + " partition:" + + partition + " state:" + (state == null ? "null" : state.toString()) + + " type:" + (type == null ? "null" : type.toString()); } } @@ -1088,11 +1097,11 @@ public boolean equals(Object other) { public int compare(LockInfo info1, LockInfo info2) { // We sort by state (acquired vs waiting) and then by extLockId. if (info1.state == LockState.ACQUIRED && - info2.state != LockState .ACQUIRED) { + info2.state != LockState .ACQUIRED) { return -1; } if (info1.state != LockState.ACQUIRED && - info2.state == LockState .ACQUIRED) { + info2.state == LockState .ACQUIRED) { return 1; } if (info1.extLockId < info2.extLockId) { @@ -1124,7 +1133,7 @@ private enum LockAction {ACQUIRE, WAIT, KEEP_LOOKING} private void checkQFileTestHack() { boolean hackOn = HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_IN_TEST) || - HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_IN_TEZ_TEST); + HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_IN_TEZ_TEST); if (hackOn) { LOG.info("Hacking in canned values for transaction manager"); // Set up the transaction/locking db in the derby metastore @@ -1135,7 +1144,7 @@ private void checkQFileTestHack() { // We may have already created the tables and thus don't need to redo it. if (!e.getMessage().contains("already exists")) { throw new RuntimeException("Unable to set up transaction database for" + - " testing: " + e.getMessage()); + " testing: " + e.getMessage()); } } } @@ -1153,7 +1162,7 @@ private int abortTxns(Connection dbConn, List txnids) throws SQLException int updateCnt = 0; try { stmt = dbConn.createStatement(); - + // delete from HIVE_LOCKS first, we always access HIVE_LOCKS before TXNS StringBuilder buf = new StringBuilder("delete from HIVE_LOCKS where hl_txnid in ("); boolean first = true; @@ -1165,7 +1174,7 @@ private int abortTxns(Connection dbConn, List txnids) throws SQLException buf.append(')'); LOG.debug("Going to execute update <" + buf.toString() + ">"); stmt.executeUpdate(buf.toString()); - + buf = new StringBuilder("update TXNS set txn_state = '" + TXN_ABORTED + "' where txn_id in ("); first = true; for (Long id : txnids) { @@ -1176,7 +1185,7 @@ private int abortTxns(Connection dbConn, List txnids) throws SQLException buf.append(')'); LOG.debug("Going to execute update <" + buf.toString() + ">"); updateCnt = stmt.executeUpdate(buf.toString()); - + LOG.debug("Going to commit"); dbConn.commit(); } finally { @@ -1202,7 +1211,7 @@ private int abortTxns(Connection dbConn, List txnids) throws SQLException * @throws TxnAbortedException */ private LockResponse lock(Connection dbConn, LockRequest rqst, boolean wait) - throws NoSuchTxnException, TxnAbortedException, MetaException, SQLException { + throws NoSuchTxnException, TxnAbortedException, MetaException, SQLException { // We want to minimize the number of concurrent lock requests being issued. If we do not we // get a large number of deadlocks in the database, since this method has to both clean // timedout locks and insert new locks. This synchronization barrier will not eliminiate all @@ -1227,7 +1236,7 @@ private LockResponse lock(Connection dbConn, LockRequest rqst, boolean wait) LOG.debug("Going to rollback"); dbConn.rollback(); throw new MetaException("Transaction tables not properly " + - "initialized, no record found in next_lock_id"); + "initialized, no record found in next_lock_id"); } long extLockId = rs.getLong(1); s = "update NEXT_LOCK_ID set nl_next = " + (extLockId + 1); @@ -1252,8 +1261,8 @@ private LockResponse lock(Connection dbConn, LockRequest rqst, boolean wait) s = "insert into TXN_COMPONENTS " + "(tc_txnid, tc_database, tc_table, tc_partition) " + "values (" + txnid + ", '" + dbName + "', " + - (tblName == null ? "null" : "'" + tblName + "'") + ", " + - (partName == null ? "null" : "'" + partName + "'") + ")"; + (tblName == null ? "null" : "'" + tblName + "'") + ", " + + (partName == null ? "null" : "'" + partName + "'") + ")"; LOG.debug("Going to execute update <" + s + ">"); stmt.executeUpdate(s); } @@ -1275,13 +1284,13 @@ private LockResponse lock(Connection dbConn, LockRequest rqst, boolean wait) long now = getDbTime(dbConn); s = "insert into HIVE_LOCKS " + " (hl_lock_ext_id, hl_lock_int_id, hl_txnid, hl_db, hl_table, " + - "hl_partition, hl_lock_state, hl_lock_type, hl_last_heartbeat, hl_user, hl_host)" + - " values (" + extLockId + ", " + - + intLockId + "," + (txnid >= 0 ? txnid : "null") + ", '" + - dbName + "', " + (tblName == null ? "null" : "'" + tblName + "'" ) - + ", " + (partName == null ? "null" : "'" + partName + "'") + - ", '" + LOCK_WAITING + "', " + "'" + lockChar + "', " + now + ", '" + - rqst.getUser() + "', '" + rqst.getHostname() + "')"; + "hl_partition, hl_lock_state, hl_lock_type, hl_last_heartbeat, hl_user, hl_host)" + + " values (" + extLockId + ", " + + + intLockId + "," + (txnid >= 0 ? txnid : "null") + ", '" + + dbName + "', " + (tblName == null ? "null" : "'" + tblName + "'" ) + + ", " + (partName == null ? "null" : "'" + partName + "'") + + ", '" + LOCK_WAITING + "', " + "'" + lockChar + "', " + now + ", '" + + rqst.getUser() + "', '" + rqst.getHostname() + "')"; LOG.debug("Going to execute update <" + s + ">"); stmt.executeUpdate(s); } @@ -1305,7 +1314,7 @@ private LockResponse lock(Connection dbConn, LockRequest rqst, boolean wait) private LockResponse checkLock(Connection dbConn, long extLockId, boolean alwaysCommit) - throws NoSuchLockException, NoSuchTxnException, TxnAbortedException, MetaException, SQLException { + throws NoSuchLockException, NoSuchTxnException, TxnAbortedException, MetaException, SQLException { List locksBeingChecked = getLockInfoFromLockId(dbConn, extLockId); LockResponse response = new LockResponse(); response.setLockid(extLockId); @@ -1313,8 +1322,8 @@ private LockResponse checkLock(Connection dbConn, LOG.debug("Setting savepoint"); Savepoint save = dbConn.setSavepoint(); StringBuilder query = new StringBuilder("select hl_lock_ext_id, " + - "hl_lock_int_id, hl_db, hl_table, hl_partition, hl_lock_state, " + - "hl_lock_type from HIVE_LOCKS where hl_db in ("); + "hl_lock_int_id, hl_db, hl_table, hl_partition, hl_lock_state, " + + "hl_lock_type from HIVE_LOCKS where hl_db in ("); Set strings = new HashSet(locksBeingChecked.size()); for (LockInfo info : locksBeingChecked) { @@ -1430,7 +1439,7 @@ private LockResponse checkLock(Connection dbConn, // lock the whole database and we need to check it. Otherwise, // check if they are operating on the same table, if not, move on. if (locks[index].table != null && locks[i].table != null - && !locks[index].table.equals(locks[i].table)) { + && !locks[index].table.equals(locks[i].table)) { continue; } @@ -1438,30 +1447,30 @@ private LockResponse checkLock(Connection dbConn, // lock the whole table and we need to check it. Otherwise, // check if they are operating on the same partition, if not, move on. if (locks[index].partition != null && locks[i].partition != null - && !locks[index].partition.equals(locks[i].partition)) { + && !locks[index].partition.equals(locks[i].partition)) { continue; } // We've found something that matches what we're trying to lock, // so figure out if we can lock it too. switch (jumpTable.get(locks[index].type).get(locks[i].type).get - (locks[i].state)) { - case ACQUIRE: - acquire(dbConn, stmt, extLockId, info.intLockId); - acquired = true; - break; - case WAIT: - wait(dbConn, save); - if (alwaysCommit) { - // In the case where lockNoWait has been called we don't want to commit because - // it's going to roll everything back. In every other case we want to commit here. - LOG.debug("Going to commit"); - dbConn.commit(); - } - response.setState(LockState.WAITING); - return response; - case KEEP_LOOKING: - continue; + (locks[i].state)) { + case ACQUIRE: + acquire(dbConn, stmt, extLockId, info.intLockId); + acquired = true; + break; + case WAIT: + wait(dbConn, save); + if (alwaysCommit) { + // In the case where lockNoWait has been called we don't want to commit because + // it's going to roll everything back. In every other case we want to commit here. + LOG.debug("Going to commit"); + dbConn.commit(); + } + response.setState(LockState.WAITING); + return response; + case KEEP_LOOKING: + continue; } if (acquired) break; // We've acquired this lock component, // so get out of the loop and look at the next component. @@ -1494,18 +1503,18 @@ private void wait(Connection dbConn, Savepoint save) throws SQLException { } private void acquire(Connection dbConn, Statement stmt, long extLockId, long intLockId) - throws SQLException, NoSuchLockException, MetaException { + throws SQLException, NoSuchLockException, MetaException { long now = getDbTime(dbConn); String s = "update HIVE_LOCKS set hl_lock_state = '" + LOCK_ACQUIRED + "', " + - "hl_last_heartbeat = " + now + ", hl_acquired_at = " + now + " where hl_lock_ext_id = " + - extLockId + " and hl_lock_int_id = " + intLockId; + "hl_last_heartbeat = " + now + ", hl_acquired_at = " + now + " where hl_lock_ext_id = " + + extLockId + " and hl_lock_int_id = " + intLockId; LOG.debug("Going to execute update <" + s + ">"); int rc = stmt.executeUpdate(s); if (rc < 1) { LOG.debug("Going to rollback"); dbConn.rollback(); throw new NoSuchLockException("No such lock: (" + extLockId + "," + - + intLockId + ")"); + + intLockId + ")"); } // We update the database, but we don't commit because there may be other // locks together with this, and we only want to acquire one if we can @@ -1514,7 +1523,7 @@ private void acquire(Connection dbConn, Statement stmt, long extLockId, long int // Heartbeats on the lock table. This commits, so do not enter it with any state private void heartbeatLock(Connection dbConn, long extLockId) - throws NoSuchLockException, SQLException, MetaException { + throws NoSuchLockException, SQLException, MetaException { // If the lock id is 0, then there are no locks in this heartbeat if (extLockId == 0) return; Statement stmt = null; @@ -1523,7 +1532,7 @@ private void heartbeatLock(Connection dbConn, long extLockId) long now = getDbTime(dbConn); String s = "update HIVE_LOCKS set hl_last_heartbeat = " + - now + " where hl_lock_ext_id = " + extLockId; + now + " where hl_lock_ext_id = " + extLockId; LOG.debug("Going to execute update <" + s + ">"); int rc = stmt.executeUpdate(s); if (rc < 1) { @@ -1540,7 +1549,7 @@ private void heartbeatLock(Connection dbConn, long extLockId) // Heartbeats on the txn table. This commits, so do not enter it with any state private void heartbeatTxn(Connection dbConn, long txnid) - throws NoSuchTxnException, TxnAbortedException, SQLException, MetaException { + throws NoSuchTxnException, TxnAbortedException, SQLException, MetaException { // If the txnid is 0, then there are no transactions in this heartbeat if (txnid == 0) return; Statement stmt = null; @@ -1560,10 +1569,10 @@ private void heartbeatTxn(Connection dbConn, long txnid) LOG.debug("Going to rollback"); dbConn.rollback(); throw new TxnAbortedException("Transaction " + txnid + - " already aborted"); + " already aborted"); } s = "update TXNS set txn_last_heartbeat = " + now + - " where txn_id = " + txnid; + " where txn_id = " + txnid; LOG.debug("Going to execute update <" + s + ">"); stmt.executeUpdate(s); LOG.debug("Going to commit"); @@ -1575,17 +1584,17 @@ private void heartbeatTxn(Connection dbConn, long txnid) // NEVER call this function without first calling heartbeat(long, long) private long getTxnIdFromLockId(Connection dbConn, long extLockId) - throws NoSuchLockException, MetaException, SQLException { + throws NoSuchLockException, MetaException, SQLException { Statement stmt = null; try { stmt = dbConn.createStatement(); String s = "select hl_txnid from HIVE_LOCKS where hl_lock_ext_id = " + - extLockId; + extLockId; LOG.debug("Going to execute query <" + s + ">"); ResultSet rs = stmt.executeQuery(s); if (!rs.next()) { throw new MetaException("This should never happen! We already " + - "checked the lock existed but now we can't find it!"); + "checked the lock existed but now we can't find it!"); } long txnid = rs.getLong(1); LOG.debug("Return txnid " + (rs.wasNull() ? -1 : txnid)); @@ -1597,13 +1606,13 @@ private long getTxnIdFromLockId(Connection dbConn, long extLockId) // NEVER call this function without first calling heartbeat(long, long) private List getLockInfoFromLockId(Connection dbConn, long extLockId) - throws NoSuchLockException, MetaException, SQLException { + throws NoSuchLockException, MetaException, SQLException { Statement stmt = null; try { stmt = dbConn.createStatement(); String s = "select hl_lock_ext_id, hl_lock_int_id, hl_db, hl_table, " + - "hl_partition, hl_lock_state, hl_lock_type from HIVE_LOCKS where " + - "hl_lock_ext_id = " + extLockId; + "hl_partition, hl_lock_state, hl_lock_type from HIVE_LOCKS where " + + "hl_lock_ext_id = " + extLockId; LOG.debug("Going to execute query <" + s + ">"); ResultSet rs = stmt.executeQuery(s); boolean sawAtLeastOne = false; @@ -1614,7 +1623,7 @@ private List getLockInfoFromLockId(Connection dbConn, long extLockId) } if (!sawAtLeastOne) { throw new MetaException("This should never happen! We already " + - "checked the lock existed but now we can't find it!"); + "checked the lock existed but now we can't find it!"); } return ourLockInfo; } finally { @@ -1632,7 +1641,7 @@ private void timeOutLocks(Connection dbConn) throws SQLException, MetaException stmt = dbConn.createStatement(); // Remove any timed out locks from the table. String s = "delete from HIVE_LOCKS where hl_last_heartbeat < " + - (now - timeout); + (now - timeout); LOG.debug("Going to execute update <" + s + ">"); stmt.executeUpdate(s); LOG.debug("Going to commit"); @@ -1652,7 +1661,7 @@ private void timeOutTxns(Connection dbConn) throws SQLException, MetaException { stmt = dbConn.createStatement(); // Abort any timed out locks from the table. String s = "select txn_id from TXNS where txn_state = '" + TXN_OPEN + - "' and txn_last_heartbeat < " + (now - timeout); + "' and txn_last_heartbeat < " + (now - timeout); LOG.debug("Going to execute query <" + s + ">"); ResultSet rs = stmt.executeQuery(s); List deadTxns = new ArrayList(); @@ -1675,12 +1684,12 @@ private static synchronized void setupJdbcConnectionPool(HiveConf conf) throws S String passwd; try { passwd = ShimLoader.getHadoopShims().getPassword(conf, - HiveConf.ConfVars.METASTOREPWD.varname); + HiveConf.ConfVars.METASTOREPWD.varname); } catch (IOException err) { throw new SQLException("Error getting metastore password", err); } String connectionPooler = HiveConf.getVar(conf, - HiveConf.ConfVars.METASTORE_CONNECTION_POOLING_TYPE).toLowerCase(); + HiveConf.ConfVars.METASTORE_CONNECTION_POOLING_TYPE).toLowerCase(); if ("bonecp".equals(connectionPooler)) { BoneCPConfig config = new BoneCPConfig(); @@ -1696,22 +1705,22 @@ private static synchronized void setupJdbcConnectionPool(HiveConf conf) throws S // This doesn't get used, but it's still necessary, see // http://svn.apache.org/viewvc/commons/proper/dbcp/branches/DBCP_1_4_x_BRANCH/doc/ManualPoolingDataSourceExample.java?view=markup PoolableConnectionFactory poolConnFactory = - new PoolableConnectionFactory(connFactory, objectPool, null, null, false, true); + new PoolableConnectionFactory(connFactory, objectPool, null, null, false, true); connPool = new PoolingDataSource(objectPool); } else { throw new RuntimeException("Unknown JDBC connection pooling " + connectionPooler); } } - private static synchronized void buildJumpTable() { + private static synchronized void buildJumpTable() { if (jumpTable != null) return; jumpTable = - new HashMap>>(3); + new HashMap>>(3); // SR: Lock we are trying to acquire is shared read Map> m = - new HashMap>(3); + new HashMap>(3); jumpTable.put(LockType.SHARED_READ, m); // SR.SR: Lock we are examining is shared read @@ -1743,7 +1752,7 @@ private static synchronized void buildJumpTable() { // that something is blocking it that would not block a read. m2.put(LockState.WAITING, LockAction.KEEP_LOOKING); - // SR.E: Lock we are examining is exclusive + // SR.E: Lock we are examining is exclusive m2 = new HashMap(2); m.put(LockType.EXCLUSIVE, m2); @@ -1777,7 +1786,7 @@ private static synchronized void buildJumpTable() { m2.put(LockState.ACQUIRED, LockAction.WAIT); m2.put(LockState.WAITING, LockAction.WAIT); - // SW.E: Lock we are examining is exclusive + // SW.E: Lock we are examining is exclusive m2 = new HashMap(2); m.put(LockType.EXCLUSIVE, m2); @@ -1805,7 +1814,7 @@ private static synchronized void buildJumpTable() { m2.put(LockState.ACQUIRED, LockAction.WAIT); m2.put(LockState.WAITING, LockAction.WAIT); - // E.E: Lock we are examining is exclusive + // E.E: Lock we are examining is exclusive m2 = new HashMap(2); m.put(LockType.EXCLUSIVE, m2); @@ -1813,4 +1822,20 @@ private static synchronized void buildJumpTable() { m2.put(LockState.ACQUIRED, LockAction.WAIT); m2.put(LockState.WAITING, LockAction.WAIT); } + /** + * Returns true if {@code ex} should be retried + */ + private static boolean isRetryable(Exception ex) { + if(ex instanceof SQLException) { + SQLException sqlException = (SQLException)ex; + if("08S01".equalsIgnoreCase(sqlException.getSQLState())) { + //in MSSQL this means Communication Link Failure + return true; + } + } + return false; + } + private static String getMessage(SQLException ex) { + return ex.getMessage() + "(SQLState=" + ex.getSQLState() + ",ErrorCode=" + ex.getErrorCode() + ")"; + } } diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandler.java b/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandler.java index 446b1741ada9..ec5c82a8fccc 100644 --- a/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandler.java +++ b/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandler.java @@ -1123,11 +1123,11 @@ public void run() { LOG.debug("no exception, no deadlock"); } catch (SQLException e) { try { - txnHandler.detectDeadlock(conn1, e, "thread t1"); + txnHandler.checkRetryable(conn1, e, "thread t1"); LOG.debug("Got an exception, but not a deadlock, SQLState is " + e.getSQLState() + " class of exception is " + e.getClass().getName() + " msg is <" + e.getMessage() + ">"); - } catch (TxnHandler.DeadlockException de) { + } catch (TxnHandler.RetryException de) { LOG.debug("Forced a deadlock, SQLState is " + e.getSQLState() + " class of " + "exception is " + e.getClass().getName() + " msg is <" + e .getMessage() + ">"); @@ -1153,11 +1153,11 @@ public void run() { LOG.debug("no exception, no deadlock"); } catch (SQLException e) { try { - txnHandler.detectDeadlock(conn2, e, "thread t2"); + txnHandler.checkRetryable(conn2, e, "thread t2"); LOG.debug("Got an exception, but not a deadlock, SQLState is " + e.getSQLState() + " class of exception is " + e.getClass().getName() + " msg is <" + e.getMessage() + ">"); - } catch (TxnHandler.DeadlockException de) { + } catch (TxnHandler.RetryException de) { LOG.debug("Forced a deadlock, SQLState is " + e.getSQLState() + " class of " + "exception is " + e.getClass().getName() + " msg is <" + e .getMessage() + ">"); From 4d0df7a8e62ab425704ae51571604c5b81f0f90f Mon Sep 17 00:00:00 2001 From: Eugene Koifman Date: Sat, 24 Jan 2015 01:21:47 +0000 Subject: [PATCH 336/339] HIVE-9404 NPE in org.apache.hadoop.hive.metastore.txn.TxnHandler.determineDatabaseProduct() git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1654447 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/metastore/txn/TxnHandler.java | 2 +- .../metastore/txn/TestTxnHandlerNegative.java | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandlerNegative.java diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java index 02735cb9ea4d..ca6464ee5282 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java @@ -902,7 +902,7 @@ protected void checkRetryable(Connection conn, // so I've tried to capture the different error messages (there appear to be fewer different // error messages than SQL states). // Derby and newer MySQL driver use the new SQLTransactionRollbackException - if (dbProduct == null) { + if (dbProduct == null && conn != null) { determineDatabaseProduct(conn); } if (e instanceof SQLTransactionRollbackException || diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandlerNegative.java b/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandlerNegative.java new file mode 100644 index 000000000000..abceaf321db7 --- /dev/null +++ b/metastore/src/test/org/apache/hadoop/hive/metastore/txn/TestTxnHandlerNegative.java @@ -0,0 +1,49 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hive.metastore.txn; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.metastore.api.MetaException; +import org.junit.Test; + +public class TestTxnHandlerNegative { + static final private Log LOG = LogFactory.getLog(TestTxnHandlerNegative.class); + + /** + * this intentionally sets a bad URL for connection to test error handling logic + * in TxnHandler + * @throws Exception + */ + @Test + public void testBadConnection() throws Exception { + HiveConf conf = new HiveConf(); + conf.setVar(HiveConf.ConfVars.METASTORECONNECTURLKEY, "blah"); + TxnHandler txnHandler1 = new TxnHandler(conf); + MetaException e = null; + try { + txnHandler1.getOpenTxns(); + } + catch(MetaException ex) { + LOG.info("Expected error: " + ex.getMessage(), ex); + e = ex; + } + assert e != null : "did not get exception"; + } +} From d6fe1097bf22a4c00aeb29fc933114735fa67eab Mon Sep 17 00:00:00 2001 From: Eugene Koifman Date: Mon, 26 Jan 2015 18:22:13 +0000 Subject: [PATCH 337/339] HIVE-9361 - Intermittent NPE in SessionHiveMetaStoreClient.alterTempTable git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1654855 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java index f1f723c939b4..07112e0c5d0c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java @@ -361,7 +361,7 @@ private void alterTempTable(String dbname, String tbl_name, org.apache.hadoop.hive.metastore.api.Table newtCopy = deepCopyAndLowerCaseTable(newt); MetaStoreUtils.updateUnpartitionedTableStatsFast(newtCopy, - wh.getFileStatusesForSD(newtCopy.getSd()), false, true); + getWh().getFileStatusesForSD(newtCopy.getSd()), false, true); Table newTable = new Table(newtCopy); String newDbName = newTable.getDbName(); String newTableName = newTable.getTableName(); From 931930230978f79eb5c5aec149305aa818c75b89 Mon Sep 17 00:00:00 2001 From: Thejas Nair Date: Mon, 26 Jan 2015 19:00:34 +0000 Subject: [PATCH 338/339] HIVE-3280 : Make HiveMetaStoreClient a public API (Thejas Nair, reviewed by Alan Gates) git-svn-id: https://svn.apache.org/repos/asf/hive/branches/branch-0.14@1654870 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hive/metastore/HiveMetaStoreClient.java | 6 ++++++ .../org/apache/hadoop/hive/metastore/IMetaStoreClient.java | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java index e6d30fc42880..77b27a00cd54 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -46,6 +46,8 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.common.ObjectPair; import org.apache.hadoop.hive.common.ValidTxnList; +import org.apache.hadoop.hive.common.classification.InterfaceAudience.Public; +import org.apache.hadoop.hive.common.classification.InterfaceStability.Unstable; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.conf.HiveConfUtil; @@ -137,7 +139,11 @@ /** * Hive Metastore Client. + * The public implementation of IMetaStoreClient. Methods not inherited from IMetaStoreClient + * are not public and can change. Hence this is marked as unstable. */ +@Public +@Unstable public class HiveMetaStoreClient implements IMetaStoreClient { ThriftHiveMetastore.Iface client = null; private TTransport transport = null; diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java b/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java index 066ab68443fd..eebd5e242a7d 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java @@ -40,6 +40,8 @@ import java.util.Map; import org.apache.hadoop.hive.common.ObjectPair; +import org.apache.hadoop.hive.common.classification.InterfaceAudience.Public; +import org.apache.hadoop.hive.common.classification.InterfaceStability.Evolving; import org.apache.hadoop.hive.metastore.api.AggrStats; import org.apache.hadoop.hive.metastore.api.AlreadyExistsException; import org.apache.hadoop.hive.metastore.api.ColumnStatistics; @@ -74,9 +76,10 @@ import org.apache.hadoop.hive.metastore.api.UnknownTableException; /** - * TODO Unnecessary when the server sides for both dbstore and filestore are - * merged + * Wrapper around hive metastore thrift api */ +@Public +@Evolving public interface IMetaStoreClient { /** From da3745157f54d6744fc557214a86b0f8c694d976 Mon Sep 17 00:00:00 2001 From: Jesus Camacho Rodriguez Date: Fri, 6 Nov 2015 17:39:56 +0100 Subject: [PATCH 339/339] HIVE-12344: Wrong types inferred for SemiJoin generation in CBO (Jesus Camacho Rodriguez, reviewed by Laljo John Pullokkaran) --- .../apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java index 80f657e9b1e7..9143cdafe227 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java @@ -210,8 +210,8 @@ public static RexNode projectNonColumnEquiConditions(ProjectFactory factory, Rel leftKeys.add(origLeftInputSize + i); rightKeys.add(origRightInputSize + i); RexNode cond = rexBuilder.makeCall(SqlStdOperatorTable.EQUALS, - rexBuilder.makeInputRef(newLeftFields.get(i).getType(), newLeftOffset + i), - rexBuilder.makeInputRef(newLeftFields.get(i).getType(), newRightOffset + i)); + rexBuilder.makeInputRef(newLeftFields.get(origLeftInputSize + i).getType(), newLeftOffset + i), + rexBuilder.makeInputRef(newRightFields.get(origRightInputSize + i).getType(), newRightOffset + i)); if (outJoinCond == null) { outJoinCond = cond; } else {